@pooriaarab/foxden 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ (() => {
3
+ // src/protocol.ts
4
+ var PROTOCOL_VERSION = 1;
5
+ var ERROR_KINDS = ["python", "timeout", "crashed", "storage"];
6
+ var isObj = (x) => typeof x === "object" && x !== null && !Array.isArray(x);
7
+ var isCount = (x) => Number.isSafeInteger(x) && x >= 0;
8
+ var isTime = (x) => typeof x === "number" && Number.isFinite(x) && x >= 0;
9
+ var isFile = (x, allowNull) => Array.isArray(x) && x.length === 2 && typeof x[0] === "string" && (x[1] instanceof Uint8Array || allowNull && x[1] === null);
10
+ var isFiles = (x, allowNull) => Array.isArray(x) && x.every((f) => isFile(f, allowNull));
11
+ function isReply(r) {
12
+ if (!isObj(r)) return false;
13
+ const error = r.error;
14
+ const errorOk = error === null || isObj(error) && ERROR_KINDS.includes(error.kind) && typeof error.message === "string";
15
+ return isCount(r.id) && typeof r.stdout === "string" && typeof r.stderr === "string" && (r.result === null || typeof r.result === "string") && errorOk && typeof r.truncated === "boolean" && isFiles(r.files, true) && isTime(r.durationMs);
16
+ }
17
+ function parseDenMessage(data) {
18
+ if (!isObj(data) || data.v !== PROTOCOL_VERSION) return null;
19
+ switch (data.t) {
20
+ case "ready":
21
+ return typeof data.origin === "string" && typeof data.extensionApi === "boolean" && isTime(data.loadMs) ? data : null;
22
+ case "load-error":
23
+ return typeof data.message === "string" ? data : null;
24
+ case "reply":
25
+ return isReply(data.reply) ? data : null;
26
+ default:
27
+ return null;
28
+ }
29
+ }
30
+ function parseHostMessage(data) {
31
+ if (!isObj(data) || data.v !== PROTOCOL_VERSION || data.t !== "run" || !isObj(data.request)) return null;
32
+ const r = data.request;
33
+ const ok = isCount(r.id) && typeof r.code === "string" && isFiles(r.files, false) && isTime(r.timeoutMs) && isCount(r.maxOutputBytes);
34
+ return ok ? data : null;
35
+ }
36
+
37
+ // src/page/den-page.ts
38
+ var g = globalThis;
39
+ var extensionApi = typeof g.browser?.runtime?.id === "string" || typeof g.chrome?.runtime?.id === "string";
40
+ var port = null;
41
+ var assets;
42
+ var worker;
43
+ var ready;
44
+ var current = null;
45
+ var queue = Promise.resolve();
46
+ var send = (m) => port?.postMessage(m);
47
+ var failed = (id, kind, message) => ({
48
+ id,
49
+ stdout: "",
50
+ stderr: "",
51
+ result: null,
52
+ error: { kind, message },
53
+ truncated: false,
54
+ files: [],
55
+ durationMs: 0
56
+ });
57
+ function finish(reply) {
58
+ if (!current || reply.id !== current.id) return;
59
+ clearTimeout(current.timer);
60
+ const { done } = current;
61
+ current = null;
62
+ done(reply);
63
+ }
64
+ function spawn() {
65
+ const url = URL.createObjectURL(new Blob(['var __require = /* @__PURE__ */ ((x2) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x2, {\n get: (a, b2) => (typeof require !== "undefined" ? require : a)[b2]\n}) : x2)(function(x2) {\n if (typeof require !== "undefined") return require.apply(this, arguments);\n throw Error(\'Dynamic require of "\' + x2 + \'" is not supported\');\n});\n\n// node_modules/.pnpm/pyodide@314.0.7/node_modules/pyodide/pyodide.mjs\nvar Q = Object.defineProperty;\nvar o = (e, t) => Q(e, "name", { value: t, configurable: true });\nvar R = ((e) => typeof __require < "u" ? __require : typeof Proxy < "u" ? new Proxy(e, { get: (t, n) => (typeof __require < "u" ? __require : t)[n] }) : e)(function(e) {\n if (typeof __require < "u") return __require.apply(this, arguments);\n throw Error(\'Dynamic require of "\' + e + \'" is not supported\');\n});\nvar W = (() => {\n for (var e = new Uint8Array(128), t = 0; t < 64; t++) e[t < 26 ? t + 65 : t < 52 ? t + 71 : t < 62 ? t - 4 : t * 4 - 205] = t;\n return (n) => {\n for (var i2 = n.length, s2 = new Uint8Array((i2 - (n[i2 - 1] == "=") - (n[i2 - 2] == "=")) * 3 / 4 | 0), r = 0, a = 0; r < i2; ) {\n var c = e[n.charCodeAt(r++)], l = e[n.charCodeAt(r++)], d = e[n.charCodeAt(r++)], u = e[n.charCodeAt(r++)];\n s2[a++] = c << 2 | l >> 4, s2[a++] = l << 4 | d >> 2, s2[a++] = d << 6 | u;\n }\n return s2;\n };\n})();\nfunction Z(e) {\n return !isNaN(parseFloat(e)) && isFinite(e);\n}\no(Z, "_isNumber");\nfunction P(e) {\n return e.charAt(0).toUpperCase() + e.substring(1);\n}\no(P, "_capitalize");\nfunction D(e) {\n return function() {\n return this[e];\n };\n}\no(D, "_getter");\nvar N = ["isConstructor", "isEval", "isNative", "isToplevel"];\nvar I = ["columnNumber", "lineNumber"];\nvar S = ["fileName", "functionName", "source"];\nvar ee = ["args"];\nvar te = ["evalOrigin"];\nvar F = N.concat(I, S, ee, te);\nfunction p(e) {\n if (e) for (var t = 0; t < F.length; t++) e[F[t]] !== void 0 && this["set" + P(F[t])](e[F[t]]);\n}\no(p, "StackFrame");\np.prototype = { getArgs: o(function() {\n return this.args;\n}, "getArgs"), setArgs: o(function(e) {\n if (Object.prototype.toString.call(e) !== "[object Array]") throw new TypeError("Args must be an Array");\n this.args = e;\n}, "setArgs"), getEvalOrigin: o(function() {\n return this.evalOrigin;\n}, "getEvalOrigin"), setEvalOrigin: o(function(e) {\n if (e instanceof p) this.evalOrigin = e;\n else if (e instanceof Object) this.evalOrigin = new p(e);\n else throw new TypeError("Eval Origin must be an Object or StackFrame");\n}, "setEvalOrigin"), toString: o(function() {\n var e = this.getFileName() || "", t = this.getLineNumber() || "", n = this.getColumnNumber() || "", i2 = this.getFunctionName() || "";\n return this.getIsEval() ? e ? "[eval] (" + e + ":" + t + ":" + n + ")" : "[eval]:" + t + ":" + n : i2 ? i2 + " (" + e + ":" + t + ":" + n + ")" : e + ":" + t + ":" + n;\n}, "toString") };\np.fromString = o(function(t) {\n var n = t.indexOf("("), i2 = t.lastIndexOf(")"), s2 = t.substring(0, n), r = t.substring(n + 1, i2).split(","), a = t.substring(i2 + 1);\n if (a.indexOf("@") === 0) var c = /@(.+?)(?::(\\d+))?(?::(\\d+))?$/.exec(a, ""), l = c[1], d = c[2], u = c[3];\n return new p({ functionName: s2, args: r || void 0, fileName: l, lineNumber: d || void 0, columnNumber: u || void 0 });\n}, "StackFrame$$fromString");\nfor (v = 0; v < N.length; v++) p.prototype["get" + P(N[v])] = D(N[v]), p.prototype["set" + P(N[v])] = /* @__PURE__ */ (function(e) {\n return function(t) {\n this[e] = !!t;\n };\n})(N[v]);\nvar v;\nfor (b = 0; b < I.length; b++) p.prototype["get" + P(I[b])] = D(I[b]), p.prototype["set" + P(I[b])] = /* @__PURE__ */ (function(e) {\n return function(t) {\n if (!Z(t)) throw new TypeError(e + " must be a Number");\n this[e] = Number(t);\n };\n})(I[b]);\nvar b;\nfor (E = 0; E < S.length; E++) p.prototype["get" + P(S[E])] = D(S[E]), p.prototype["set" + P(S[E])] = /* @__PURE__ */ (function(e) {\n return function(t) {\n this[e] = String(t);\n };\n})(S[E]);\nvar E;\nvar A = p;\nfunction ne() {\n var e = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m, t = /^(eval@)?(\\[native code])?$/;\n return { parse: o(function(i2) {\n if (i2.stack && i2.stack.match(e)) return this.parseV8OrIE(i2);\n if (i2.stack) return this.parseFFOrSafari(i2);\n throw new Error("Cannot parse given Error object");\n }, "ErrorStackParser$$parse"), extractLocation: o(function(i2) {\n if (i2.indexOf(":") === -1) return [i2];\n var s2 = /(.+?)(?::(\\d+))?(?::(\\d+))?$/, r = s2.exec(i2.replace(/[()]/g, ""));\n return [r[1], r[2] || void 0, r[3] || void 0];\n }, "ErrorStackParser$$extractLocation"), parseV8OrIE: o(function(i2) {\n var s2 = i2.stack.split(`\n`).filter(function(r) {\n return !!r.match(e);\n }, this);\n return s2.map(function(r) {\n r.indexOf("(eval ") > -1 && (r = r.replace(/eval code/g, "eval").replace(/(\\(eval at [^()]*)|(,.*$)/g, ""));\n var a = r.replace(/^\\s+/, "").replace(/\\(eval code/g, "(").replace(/^.*?\\s+/, ""), c = a.match(/ (\\(.+\\)$)/);\n a = c ? a.replace(c[0], "") : a;\n var l = this.extractLocation(c ? c[1] : a), d = c && a || void 0, u = ["eval", "<anonymous>"].indexOf(l[0]) > -1 ? void 0 : l[0];\n return new A({ functionName: d, fileName: u, lineNumber: l[1], columnNumber: l[2], source: r });\n }, this);\n }, "ErrorStackParser$$parseV8OrIE"), parseFFOrSafari: o(function(i2) {\n var s2 = i2.stack.split(`\n`).filter(function(r) {\n return !r.match(t);\n }, this);\n return s2.map(function(r) {\n if (r.indexOf(" > eval") > -1 && (r = r.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, ":$1")), r.indexOf("@") === -1 && r.indexOf(":") === -1) return new A({ functionName: r });\n var a = /((.*".+"[^@]*)?[^@]*)(?:@)/, c = r.match(a), l = c && c[1] ? c[1] : void 0, d = this.extractLocation(r.replace(a, ""));\n return new A({ functionName: l, fileName: d[0], lineNumber: d[1], columnNumber: d[2], source: r });\n }, this);\n }, "ErrorStackParser$$parseFFOrSafari") };\n}\no(ne, "ErrorStackParser");\nvar re = new ne();\nvar M = re;\nfunction ie() {\n if (typeof API < "u" && API !== globalThis.API) return API.runtimeEnv;\n let e = typeof Bun < "u", t = typeof Deno < "u", n = typeof process == "object" && typeof process.versions == "object" && typeof process.versions.node == "string" && !process.browser, i2 = typeof navigator == "object" && typeof navigator.userAgent == "string" && navigator.userAgent.indexOf("Chrome") === -1 && navigator.userAgent.indexOf("Safari") > -1, s2 = typeof read == "function" && typeof load == "function", r = typeof navigator == "object" && navigator.userAgent?.includes("Cloudflare-Workers");\n return oe({ IN_BUN: e, IN_DENO: t, IN_NODE: n, IN_SAFARI: i2, IN_SHELL: s2, IN_WORKERD: r });\n}\no(ie, "getGlobalRuntimeEnv");\nvar f = ie();\nfunction oe(e) {\n let t = e.IN_NODE && typeof module < "u" && module.exports && typeof R == "function" && typeof __dirname == "string", n = e.IN_NODE && !t, i2 = !e.IN_NODE && !e.IN_DENO && !e.IN_BUN, s2 = i2 && typeof window < "u" && typeof window.document < "u" && typeof document.createElement == "function" && "sessionStorage" in window && typeof globalThis.importScripts != "function", r = i2 && typeof globalThis.WorkerGlobalScope < "u" && typeof globalThis.self < "u" && globalThis.self instanceof globalThis.WorkerGlobalScope;\n if (r && ae()) throw new Error("Classic web workers are not supported");\n let a = { ...e, IN_BROWSER: i2, IN_BROWSER_MAIN_THREAD: s2, IN_BROWSER_WEB_WORKER: r, IN_NODE_COMMONJS: t, IN_NODE_ESM: n };\n if (!(a.IN_BROWSER_MAIN_THREAD || a.IN_BROWSER_WEB_WORKER || a.IN_NODE || a.IN_SHELL || a.IN_WORKERD)) throw new Error(`Cannot determine runtime environment: ${JSON.stringify(a)}`);\n return a;\n}\no(oe, "calculateDerivedFlags");\nfunction ae() {\n try {\n return globalThis.importScripts("data:text/javascript,"), true;\n } catch {\n return false;\n }\n}\no(ae, "isClassicWorker");\nvar $;\nvar x;\nvar se;\nvar B;\nvar L;\nasync function C() {\n if (!f.IN_NODE || ($ = (await import("node:url")).default, B = await import("node:fs"), L = await import("node:fs/promises"), se = (await import("node:vm")).default, x = await import("node:path"), T = x.sep, typeof R < "u")) return;\n let e = B, t = await import("node:crypto"), n = await import("ws"), i2 = await import("node:child_process"), s2 = { fs: e, crypto: t, ws: n, child_process: i2 };\n globalThis.require = function(r) {\n return s2[r];\n };\n}\no(C, "initNodeModules");\nfunction le(e, t) {\n return x.resolve(t || ".", e);\n}\no(le, "node_resolvePath");\nfunction ce(e, t) {\n return t === void 0 && (t = location), new URL(e, t).toString();\n}\no(ce, "browser_resolvePath");\nvar w;\nf.IN_NODE ? w = le : f.IN_SHELL ? w = o((e) => e, "resolvePath") : w = ce;\nvar T;\nf.IN_NODE || (T = "/");\nfunction de(e, t) {\n return e.startsWith("file://") && (e = e.slice(7)), e.includes("://") ? { response: fetch(e) } : { binary: L.readFile(e).then((n) => new Uint8Array(n.buffer, n.byteOffset, n.byteLength)) };\n}\no(de, "node_getBinaryResponse");\nfunction ue(e, t) {\n if (e.startsWith("file://") && (e = e.slice(7)), e.includes("://")) throw new Error("Shell cannot fetch urls");\n return { binary: Promise.resolve(new Uint8Array(readbuffer(e))) };\n}\no(ue, "shell_getBinaryResponse");\nfunction fe(e, t) {\n let n = new URL(e, location);\n return { response: fetch(n, t ? { integrity: t } : {}) };\n}\no(fe, "browser_getBinaryResponse");\nvar _;\nf.IN_NODE ? _ = de : f.IN_SHELL ? _ = ue : _ = fe;\nasync function j(e, t) {\n let { response: n, binary: i2 } = _(e, t);\n if (i2) return i2;\n let s2 = await n;\n if (!s2.ok) throw new Error(`Failed to load \'${e}\': request failed.`);\n return new Uint8Array(await s2.arrayBuffer());\n}\no(j, "loadBinaryFile");\nvar O;\nf.IN_NODE ? O = me2 : O = o(async (e) => await import(e), "loadScript");\nasync function me2(e) {\n return e.startsWith("file://") && (e = e.slice(7)), e.includes("://") ? await import(e) : await import($.pathToFileURL(e).href);\n}\no(me2, "nodeLoadScript");\nasync function H(e) {\n if (f.IN_NODE) {\n await C();\n let t = await L.readFile(e, { encoding: "utf8" });\n return JSON.parse(t);\n } else if (f.IN_SHELL) {\n let t = read(e);\n return JSON.parse(t);\n } else return await (await fetch(e)).json();\n}\no(H, "loadLockFile");\nasync function J() {\n if (f.IN_NODE_COMMONJS) return __dirname;\n let e;\n try {\n throw new Error();\n } catch (i2) {\n e = i2;\n }\n let t = M.parse(e)[0].fileName;\n if (f.IN_NODE && !t.startsWith("file://") && (t = `file://${t}`), f.IN_NODE_ESM) {\n let i2 = await import("node:path");\n return (await import("node:url")).fileURLToPath(i2.dirname(t));\n }\n let n = t.lastIndexOf(T);\n if (n === -1) throw new Error("Could not extract indexURL path from pyodide module location. Please pass the indexURL explicitly to loadPyodide.");\n return t.slice(0, n);\n}\no(J, "calculateDirname");\nfunction V(e) {\n return e.substring(0, e.lastIndexOf("/") + 1) || globalThis.location?.toString() || ".";\n}\no(V, "calculateInstallBaseUrl");\nfunction z(e) {\n let t = e.FS, n = e.FS.filesystems.MEMFS, i2 = e.PATH, s2 = { DIR_MODE: 16895, FILE_MODE: 33279, mount: o(function(r) {\n if (!r.opts.fileSystemHandle) throw new Error("opts.fileSystemHandle is required");\n return n.mount.apply(null, arguments);\n }, "mount"), syncfs: o(async (r, a, c) => {\n try {\n let l = s2.getLocalSet(r), d = await s2.getRemoteSet(r), u = a ? d : l, y = a ? l : d;\n await s2.reconcile(r, u, y), c(null);\n } catch (l) {\n c(l);\n }\n }, "syncfs"), getLocalSet: o((r) => {\n let a = /* @__PURE__ */ Object.create(null);\n function c(u) {\n return u !== "." && u !== "..";\n }\n o(c, "isRealDir");\n function l(u) {\n return (y) => i2.join2(u, y);\n }\n o(l, "toAbsolute");\n let d = t.readdir(r.mountpoint).filter(c).map(l(r.mountpoint));\n for (; d.length; ) {\n let u = d.pop(), y = t.stat(u);\n t.isDir(y.mode) && d.push.apply(d, t.readdir(u).filter(c).map(l(u))), a[u] = { timestamp: y.mtime, mode: y.mode };\n }\n return { type: "local", entries: a };\n }, "getLocalSet"), getRemoteSet: o(async (r) => {\n let a = /* @__PURE__ */ Object.create(null), c = await pe(r.opts.fileSystemHandle);\n for (let [l, d] of c) l !== "." && (a[i2.join2(r.mountpoint, l)] = { timestamp: d.kind === "file" ? new Date((await d.getFile()).lastModified) : /* @__PURE__ */ new Date(), mode: d.kind === "file" ? s2.FILE_MODE : s2.DIR_MODE });\n return { type: "remote", entries: a, handles: c };\n }, "getRemoteSet"), loadLocalEntry: o((r) => {\n let c = t.lookupPath(r, {}).node, l = t.stat(r);\n if (t.isDir(l.mode)) return { timestamp: l.mtime, mode: l.mode };\n if (t.isFile(l.mode)) return c.contents = n.getFileDataAsTypedArray(c), { timestamp: l.mtime, mode: l.mode, contents: c.contents };\n throw new Error("node type not supported");\n }, "loadLocalEntry"), storeLocalEntry: o((r, a) => {\n if (t.isDir(a.mode)) t.mkdirTree(r, a.mode);\n else if (t.isFile(a.mode)) t.writeFile(r, a.contents, { canOwn: true });\n else throw new Error("node type not supported");\n t.chmod(r, a.mode), t.utime(r, a.timestamp, a.timestamp);\n }, "storeLocalEntry"), removeLocalEntry: o((r) => {\n var a = t.stat(r);\n t.isDir(a.mode) ? t.rmdir(r) : t.isFile(a.mode) && t.unlink(r);\n }, "removeLocalEntry"), loadRemoteEntry: o(async (r) => {\n if (r.kind === "file") {\n let a = await r.getFile();\n return { contents: new Uint8Array(await a.arrayBuffer()), mode: s2.FILE_MODE, timestamp: new Date(a.lastModified) };\n } else {\n if (r.kind === "directory") return { mode: s2.DIR_MODE, timestamp: /* @__PURE__ */ new Date() };\n throw new Error("unknown kind: " + r.kind);\n }\n }, "loadRemoteEntry"), storeRemoteEntry: o(async (r, a, c) => {\n let l = r.get(i2.dirname(a)), d = t.isFile(c.mode) ? await l.getFileHandle(i2.basename(a), { create: true }) : await l.getDirectoryHandle(i2.basename(a), { create: true });\n if (d.kind === "file") {\n let u = await d.createWritable();\n await u.write(c.contents), await u.close();\n }\n r.set(a, d);\n }, "storeRemoteEntry"), removeRemoteEntry: o(async (r, a) => {\n await r.get(i2.dirname(a)).removeEntry(i2.basename(a)), r.delete(a);\n }, "removeRemoteEntry"), reconcile: o(async (r, a, c) => {\n let l = 0, d = [];\n Object.keys(a.entries).forEach(function(m) {\n let g = a.entries[m], h = c.entries[m];\n (!h || t.isFile(g.mode) && g.timestamp.getTime() > h.timestamp.getTime()) && (d.push(m), l++);\n }), d.sort();\n let u = [];\n if (Object.keys(c.entries).forEach(function(m) {\n a.entries[m] || (u.push(m), l++);\n }), u.sort().reverse(), !l) return;\n let y = a.type === "remote" ? a.handles : c.handles;\n for (let m of d) {\n let g = i2.normalize(m.replace(r.mountpoint, "/")).substring(1);\n if (c.type === "local") {\n let h = y.get(g), X = await s2.loadRemoteEntry(h);\n s2.storeLocalEntry(m, X);\n } else {\n let h = s2.loadLocalEntry(m);\n await s2.storeRemoteEntry(y, g, h);\n }\n }\n for (let m of u) if (c.type === "local") s2.removeLocalEntry(m);\n else {\n let g = i2.normalize(m.replace(r.mountpoint, "/")).substring(1);\n await s2.removeRemoteEntry(y, g);\n }\n }, "reconcile") };\n e.FS.filesystems.NATIVEFS_ASYNC = s2;\n}\no(z, "initializeNativeFS");\nvar pe = o(async (e) => {\n let t = [];\n async function n(s2) {\n for await (let r of s2.values()) t.push(r), r.kind === "directory" && await n(r);\n }\n o(n, "collect"), await n(e);\n let i2 = /* @__PURE__ */ new Map();\n i2.set(".", e);\n for (let s2 of t) {\n let r = (await e.resolve(s2)).join("/");\n i2.set(r, s2);\n }\n return i2;\n}, "getFsHandles");\nvar G = W("AGFzbQEAAAABDANfAGAAAW9gAW8BfwMDAgECBygCE0pzdl9HZXRFcnJvcl9pbXBvcnQAAA5Kc3ZFcnJvcl9DaGVjawABChMCBwD7AQD7GwsJACAA+xr7FAAL");\nvar ge = (async function() {\n if (!(globalThis.navigator && (/iPad|iPhone|iPod/.test(navigator.userAgent) || navigator.platform === "MacIntel" && typeof navigator.maxTouchPoints < "u" && navigator.maxTouchPoints > 1))) try {\n let t = await WebAssembly.compile(G);\n return await WebAssembly.instantiate(t);\n } catch (t) {\n if (t instanceof WebAssembly.CompileError) return;\n throw t;\n }\n})();\nasync function K() {\n let e = await ge;\n if (e) return e.exports;\n let t = /* @__PURE__ */ Symbol("error marker");\n return { Jsv_GetError_import: o(() => t, "Jsv_GetError_import"), JsvError_Check: o((n) => n === t, "JsvError_Check") };\n}\no(K, "getJsvErrorImport");\nfunction q(e) {\n let t = { config: e, runtimeEnv: f }, n = { noImageDecoding: true, noAudioDecoding: true, noWasmDecoding: false, preRun: Ne(e), print: e.stdout, printErr: e.stderr, onExit(i2) {\n n.exitCode = i2;\n }, thisProgram: e._sysExecutable, arguments: e.args, API: t, locateFile: o((i2) => e.indexURL + i2, "locateFile"), instantiateWasm: Ie(e.indexURL) };\n return n;\n}\no(q, "createSettings");\nfunction ve(e) {\n return function(t) {\n let n = "/";\n try {\n t.FS.mkdirTree(e);\n } catch (i2) {\n console.error(`Error occurred while making a home directory \'${e}\':`), console.error(i2), console.error(`Using \'${n}\' for a home directory instead`), e = n;\n }\n t.FS.chdir(e);\n };\n}\no(ve, "createHomeDirectory");\nfunction be(e) {\n return function(t) {\n Object.assign(t.ENV, e);\n };\n}\no(be, "setEnvironment");\nfunction Ee(e) {\n return e ? [async (t) => {\n t.addRunDependency("fsInitHook");\n try {\n await e(t.FS, { sitePackages: t.API.sitePackages });\n } finally {\n t.removeRunDependency("fsInitHook");\n }\n }] : [];\n}\no(Ee, "callFsInitHook");\nfunction Pe(e) {\n let t = e.HEAPU32[e._Py_Version >>> 2], n = t >>> 24 & 255, i2 = t >>> 16 & 255, s2 = t >>> 8 & 255;\n return [n, i2, s2];\n}\no(Pe, "computeVersionTuple");\nfunction he(e) {\n let t = j(e);\n return async (n) => {\n n.API.pyVersionTuple = Pe(n);\n let [i2, s2] = n.API.pyVersionTuple;\n n.FS.mkdirTree("/lib"), n.API.sitePackages = `/lib/python${i2}.${s2}/site-packages`, n.FS.mkdirTree(n.API.sitePackages), n.FS.mkdirTree(`/lib/python${i2}.${s2}/lib-dynload`), n.addRunDependency("install-stdlib");\n try {\n let r = await t;\n n.FS.writeFile(`/lib/python${i2}${s2}.zip`, r);\n } catch (r) {\n console.error("Error occurred while installing the standard library:"), console.error(r);\n } finally {\n n.removeRunDependency("install-stdlib");\n }\n };\n}\no(he, "installStdlib");\nfunction Ne(e) {\n let t;\n return e.stdLibURL != null ? t = e.stdLibURL : t = e.indexURL + "python_stdlib.zip", [he(t), ve(e.env.HOME), be(e.env), z, ...Ee(e.fsInit)];\n}\no(Ne, "getFileSystemInitializationFuncs");\nfunction Ie(e) {\n if (typeof WasmOffsetConverter < "u") return;\n let { binary: t, response: n } = _(e + "pyodide.asm.wasm"), i2 = K();\n return function(s2, r) {\n return (async function() {\n let { Jsv_GetError_import: a, JsvError_Check: c } = await i2;\n s2.env.Jsv_GetError_import = a, s2.env.JsvError_Check = c;\n try {\n let l;\n n ? l = await WebAssembly.instantiateStreaming(n, s2) : l = await WebAssembly.instantiate(await t, s2);\n let { instance: d, module: u } = l;\n r(d, u);\n } catch (l) {\n console.warn("wasm instantiation failed!"), console.warn(l);\n }\n })(), {};\n };\n}\no(Ie, "getInstantiateWasmFunc");\nvar Y = "314.0.7";\nfunction k(e) {\n return e === void 0 || e.endsWith("/") ? e : e + "/";\n}\no(k, "withTrailingSlash");\nvar U = Y;\nasync function Se(e = {}) {\n if (await C(), e.lockFileContents && e.lockFileURL) throw new Error("Can\'t pass both lockFileContents and lockFileURL");\n let t = e.indexURL || await J();\n if (t = k(w(t)), e.packageBaseUrl = k(e.packageBaseUrl), e.cdnUrl = k(e.packageBaseUrl ?? `https://cdn.jsdelivr.net/pyodide/v${U}/full/`), !e.lockFileContents) {\n let s2 = e.lockFileURL ?? t + "pyodide-lock.json";\n e.lockFileContents = H(s2), e.packageBaseUrl ??= V(s2);\n }\n e.indexURL = t, e.packageCacheDir && (e.packageCacheDir = k(w(e.packageCacheDir)));\n let n = { jsglobals: globalThis, stdin: globalThis.prompt ? () => globalThis.prompt() : void 0, args: [], env: {}, packages: [], packageCacheDir: e.packageBaseUrl, enableRunUntilComplete: true, checkAPIVersion: true, BUILD_ID: "990c3b51a9722d62434de2bbc9643732658d488c1b6d467f22c1b6beba80d497" }, i2 = Object.assign(n, e);\n return i2.env.HOME ??= "/home/pyodide", i2.env.PYTHONINSPECT ??= "1", i2;\n}\no(Se, "initializeConfiguration");\nfunction we(e) {\n let t = q(e), n = t.API;\n return n.lockFilePromise = Promise.resolve(e.lockFileContents), t;\n}\no(we, "createEmscriptenSettings");\nasync function _e(e) {\n if (e.createPyodideModule) return e.createPyodideModule;\n let t = `${e.indexURL}pyodide.asm.mjs`;\n return (await O(t)).default;\n}\no(_e, "loadWasmScript");\nasync function ke(e, t) {\n if (!e._loadSnapshot) return;\n let n = await e._loadSnapshot, i2 = ArrayBuffer.isView(n) ? n : new Uint8Array(n);\n return t.noInitialRun = true, t.INITIAL_MEMORY = i2.length, i2;\n}\no(ke, "prepareSnapshot");\nasync function Re(e, t) {\n let n = await e(t);\n if (t.exitCode !== void 0) throw new n.ExitStatus(t.exitCode);\n return n;\n}\no(Re, "instantiatePyodideModule");\nfunction Fe(e, t) {\n let n = e.API;\n if (t.pyproxyToStringRepr && n.setPyProxyToStringMethod(true), t.convertNullToNone && n.setCompatNullToNone(true), t.toJsLiteralMap && n.setCompatToJsLiteralMap(true), n.version !== U && t.checkAPIVersion) throw new Error(`Pyodide version does not match: \'${U}\' <==> \'${n.version}\'. If you updated the Pyodide version, make sure you also updated the \'indexURL\' parameter passed to loadPyodide.`);\n e.locateFile = (i2) => {\n throw i2.endsWith(".so") ? new Error(`Failed to find dynamic library "${i2}"`) : new Error(`Unexpected call to locateFile("${i2}")`);\n };\n}\no(Fe, "configureAPI");\nfunction Ae(e, t, n) {\n let i2 = e.API, s2;\n return t && (s2 = i2.restoreSnapshot(t)), i2.finalizeBootstrap(s2, n._snapshotDeserializer);\n}\no(Ae, "bootstrapPyodide");\nasync function Oe(e, t) {\n let n = e._api;\n return n.sys.path.insert(0, ""), n._pyodide.set_excepthook(), await n.packageIndexReady, n.initializeStreams(t.stdin, t.stdout, t.stderr), e;\n}\no(Oe, "finalizeSetup");\nasync function dt(e = {}) {\n let t = await Se(e), n = we(t), i2 = await _e(t), s2 = await ke(t, n), r = await Re(i2, n);\n Fe(r, t);\n let a = Ae(r, s2, t);\n return await Oe(a, t);\n}\no(dt, "loadPyodide");\n\n// node_modules/.pnpm/pyodide@314.0.7/node_modules/pyodide/pyodide.asm.mjs\nasync function _createPyodideModule(moduleArg = {}) {\n var moduleRtn;\n var Module = moduleArg;\n var ENVIRONMENT_IS_WEB = !!globalThis.window;\n var ENVIRONMENT_IS_WORKER = !!globalThis.WorkerGlobalScope;\n var ENVIRONMENT_IS_NODE = globalThis.process?.versions?.node && globalThis.process?.type != "renderer";\n var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;\n if (ENVIRONMENT_IS_NODE) {\n const { createRequire } = await import("node:module");\n var require = createRequire(import.meta.url);\n }\n var arguments_ = [];\n var thisProgram = "./this.program";\n var quit_ = (status, toThrow) => {\n throw toThrow;\n };\n var _scriptName = import.meta.url;\n var scriptDirectory = "";\n function locateFile(path) {\n if (Module["locateFile"]) {\n return Module["locateFile"](path, scriptDirectory);\n }\n return scriptDirectory + path;\n }\n var readAsync, readBinary;\n if (ENVIRONMENT_IS_NODE) {\n var fs = require("node:fs");\n if (_scriptName.startsWith("file:")) {\n scriptDirectory = require("node:path").dirname(require("node:url").fileURLToPath(_scriptName)) + "/";\n }\n readBinary = (filename) => {\n filename = isFileURI(filename) ? new URL(filename) : filename;\n var ret = fs.readFileSync(filename);\n return ret;\n };\n readAsync = async (filename, binary2 = true) => {\n filename = isFileURI(filename) ? new URL(filename) : filename;\n var ret = fs.readFileSync(filename, binary2 ? void 0 : "utf8");\n return ret;\n };\n if (process.argv.length > 1) {\n thisProgram = process.argv[1].replace(/\\\\/g, "/");\n }\n arguments_ = process.argv.slice(2);\n quit_ = (status, toThrow) => {\n process.exitCode = status;\n throw toThrow;\n };\n } else if (ENVIRONMENT_IS_SHELL) {\n readBinary = (f2) => {\n if (globalThis.readbuffer) {\n return new Uint8Array(readbuffer(f2));\n }\n let data2 = read(f2, "binary");\n assert(typeof data2 == "object");\n return data2;\n };\n readAsync = async (f2) => readBinary(f2);\n globalThis.clearTimeout ??= (id) => {\n };\n globalThis.setTimeout ??= (f2) => f2();\n arguments_ = globalThis.arguments || globalThis.scriptArgs;\n if (globalThis.quit) {\n quit_ = (status, toThrow) => {\n setTimeout(() => {\n if (!(toThrow instanceof ExitStatus)) {\n let toLog = toThrow;\n if (toThrow && typeof toThrow == "object" && toThrow.stack) {\n toLog = [toThrow, toThrow.stack];\n }\n err(`exiting due to exception: ${toLog}`);\n }\n quit(status);\n });\n throw toThrow;\n };\n }\n if (typeof print != "undefined") {\n globalThis.console ??= {};\n console.log = print;\n console.warn = console.error = globalThis.printErr ?? print;\n }\n } else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n try {\n scriptDirectory = new URL(".", _scriptName).href;\n } catch {\n }\n {\n if (ENVIRONMENT_IS_WORKER) {\n readBinary = (url2) => {\n var xhr = new XMLHttpRequest();\n xhr.open("GET", url2, false);\n xhr.responseType = "arraybuffer";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n }\n readAsync = async (url2) => {\n if (isFileURI(url2)) {\n return new Promise((resolve, reject) => {\n var xhr = new XMLHttpRequest();\n xhr.open("GET", url2, true);\n xhr.responseType = "arraybuffer";\n xhr.onload = () => {\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n resolve(xhr.response);\n return;\n }\n reject(xhr.status);\n };\n xhr.onerror = reject;\n xhr.send(null);\n });\n }\n var response = await fetch(url2, { credentials: "same-origin" });\n if (response.ok) {\n return response.arrayBuffer();\n }\n throw new Error(response.status + " : " + response.url);\n };\n }\n } else {\n }\n var out = console.log.bind(console);\n var err = console.error.bind(console);\n var dynamicLibraries = [];\n var wasmBinary;\n var ABORT = false;\n var EXITSTATUS;\n function assert(condition, text) {\n if (!condition) {\n abort(text);\n }\n }\n var isFileURI = (filename) => filename.startsWith("file://");\n var readyPromiseResolve, readyPromiseReject;\n var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n var HEAP64, HEAPU64;\n var runtimeInitialized = false;\n var runtimeExited = false;\n function updateMemoryViews() {\n var b2 = wasmMemory.buffer;\n Module["HEAP8"] = HEAP8 = new Int8Array(b2);\n Module["HEAP16"] = HEAP16 = new Int16Array(b2);\n Module["HEAPU8"] = HEAPU8 = new Uint8Array(b2);\n Module["HEAPU16"] = HEAPU16 = new Uint16Array(b2);\n Module["HEAP32"] = HEAP32 = new Int32Array(b2);\n Module["HEAPU32"] = HEAPU32 = new Uint32Array(b2);\n Module["HEAPF32"] = HEAPF32 = new Float32Array(b2);\n Module["HEAPF64"] = HEAPF64 = new Float64Array(b2);\n Module["HEAP64"] = HEAP64 = new BigInt64Array(b2);\n Module["HEAPU64"] = HEAPU64 = new BigUint64Array(b2);\n }\n var __RELOC_FUNCS__ = [];\n function preRun() {\n if (Module["preRun"]) {\n if (typeof Module["preRun"] == "function") Module["preRun"] = [Module["preRun"]];\n while (Module["preRun"].length) {\n addOnPreRun(Module["preRun"].shift());\n }\n }\n callRuntimeCallbacks(onPreRuns);\n }\n function initRuntime() {\n runtimeInitialized = true;\n callRuntimeCallbacks(__RELOC_FUNCS__);\n callRuntimeCallbacks(onInits);\n if (!Module["noFSInit"] && !FS.initialized) FS.init();\n TTY.init();\n SOCKFS.root = FS.mount(SOCKFS, {}, null);\n PIPEFS.root = FS.mount(PIPEFS, {}, null);\n wasmExports["__wasm_call_ctors"]();\n callRuntimeCallbacks(onPostCtors);\n FS.ignorePermissions = false;\n }\n function preMain() {\n callRuntimeCallbacks(onMains);\n }\n function exitRuntime() {\n ___funcs_on_exit();\n callRuntimeCallbacks(onExits);\n FS.quit();\n TTY.shutdown();\n IDBFS.quit();\n runtimeExited = true;\n }\n function postRun() {\n if (Module["postRun"]) {\n if (typeof Module["postRun"] == "function") Module["postRun"] = [Module["postRun"]];\n while (Module["postRun"].length) {\n addOnPostRun(Module["postRun"].shift());\n }\n }\n callRuntimeCallbacks(onPostRuns);\n }\n function abort(what) {\n Module["onAbort"]?.(what);\n what = "Aborted(" + what + ")";\n err(what);\n ABORT = true;\n what += ". Build with -sASSERTIONS for more info.";\n if (runtimeInitialized) {\n ___trap();\n }\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject?.(e);\n throw e;\n }\n var wasmBinaryFile;\n function findWasmBinary() {\n if (ENVIRONMENT_IS_SHELL) {\n return "pyodide.asm.wasm";\n }\n if (Module["locateFile"]) {\n return locateFile("pyodide.asm.wasm");\n }\n return new URL("pyodide.asm.wasm", import.meta.url).href;\n }\n function getBinarySync(file) {\n if (file == wasmBinaryFile && wasmBinary) {\n return new Uint8Array(wasmBinary);\n }\n if (readBinary) {\n return readBinary(file);\n }\n throw "both async and sync fetching of the wasm failed";\n }\n async function getWasmBinary(binaryFile) {\n if (!wasmBinary) {\n try {\n var response = await readAsync(binaryFile);\n return new Uint8Array(response);\n } catch {\n }\n }\n return getBinarySync(binaryFile);\n }\n async function instantiateArrayBuffer(binaryFile, imports) {\n try {\n var binary2 = await getWasmBinary(binaryFile);\n var instance2 = await WebAssembly.instantiate(binary2, imports);\n return instance2;\n } catch (reason) {\n err(`failed to asynchronously prepare wasm: ${reason}`);\n abort(reason);\n }\n }\n async function instantiateAsync(binary2, binaryFile, imports) {\n if (!binary2 && !isFileURI(binaryFile) && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_SHELL) {\n try {\n var response = fetch(binaryFile, { credentials: "same-origin" });\n var instantiationResult = await WebAssembly.instantiateStreaming(response, imports);\n return instantiationResult;\n } catch (reason) {\n err(`wasm streaming compile failed: ${reason}`);\n err("falling back to ArrayBuffer instantiation");\n }\n }\n return instantiateArrayBuffer(binaryFile, imports);\n }\n function getWasmImports() {\n var GOTProxyHandler = new Proxy(/* @__PURE__ */ new Set([]), GOTHandler);\n var imports = { env: wasmImports, wasi_snapshot_preview1: wasmImports, "GOT.mem": GOTProxyHandler, "GOT.func": GOTProxyHandler };\n return imports;\n }\n async function createWasm() {\n function receiveInstance(instance2, module2) {\n wasmExports = instance2.exports;\n var origExports = wasmExports;\n mergeLibSymbols(wasmExports, "main");\n var metadata2 = getDylinkMetadata(module2);\n if (metadata2.neededDynlibs) {\n dynamicLibraries = metadata2.neededDynlibs.concat(dynamicLibraries);\n }\n wasmExports = applySignatureConversions(wasmExports);\n assignWasmExports(wasmExports);\n updateGOT(origExports);\n LDSO.init();\n loadDylibs();\n updateMemoryViews();\n return wasmExports;\n }\n function receiveInstantiationResult(result2) {\n return receiveInstance(result2["instance"], result2["module"]);\n }\n var info2 = getWasmImports();\n if (Module["instantiateWasm"]) {\n return new Promise((resolve, reject) => {\n Module["instantiateWasm"](info2, (inst, mod) => {\n resolve(receiveInstance(inst, mod));\n });\n });\n }\n wasmBinaryFile ??= findWasmBinary();\n var result = await instantiateAsync(wasmBinary, wasmBinaryFile, info2);\n var exports = receiveInstantiationResult(result);\n return exports;\n }\n class ExitStatus {\n name = "ExitStatus";\n constructor(status) {\n this.message = `Program terminated with exit(${status})`;\n this.status = status;\n }\n }\n var GOT = {};\n var GOTHandler = { get(weakImports, symName) {\n var rtn = GOT[symName];\n if (!rtn) {\n rtn = GOT[symName] = new WebAssembly.Global({ value: "i32", mutable: true }, -1);\n }\n if (!weakImports.has(symName)) {\n rtn.required = true;\n }\n return rtn;\n } };\n var callRuntimeCallbacks = (callbacks) => {\n while (callbacks.length > 0) {\n callbacks.shift()(Module);\n }\n };\n var onPostRuns = [];\n var addOnPostRun = (cb) => onPostRuns.push(cb);\n var onPreRuns = [];\n var addOnPreRun = (cb) => onPreRuns.push(cb);\n var UTF8Decoder = globalThis.TextDecoder && new TextDecoder();\n var findStringEnd = (heapOrArray, idx, maxBytesToRead, ignoreNul) => {\n var maxIdx = idx + maxBytesToRead;\n if (ignoreNul) return maxIdx;\n while (heapOrArray[idx] && !(idx >= maxIdx)) ++idx;\n return idx;\n };\n var UTF8ArrayToString = (heapOrArray, idx = 0, maxBytesToRead, ignoreNul) => {\n idx >>>= 0;\n var endPtr = findStringEnd(heapOrArray, idx, maxBytesToRead, ignoreNul);\n if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {\n return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));\n }\n var str = "";\n while (idx < endPtr) {\n var u0 = heapOrArray[idx++];\n if (!(u0 & 128)) {\n str += String.fromCharCode(u0);\n continue;\n }\n var u1 = heapOrArray[idx++] & 63;\n if ((u0 & 224) == 192) {\n str += String.fromCharCode((u0 & 31) << 6 | u1);\n continue;\n }\n var u2 = heapOrArray[idx++] & 63;\n if ((u0 & 240) == 224) {\n u0 = (u0 & 15) << 12 | u1 << 6 | u2;\n } else {\n u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63;\n }\n if (u0 < 65536) {\n str += String.fromCharCode(u0);\n } else {\n var ch = u0 - 65536;\n str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);\n }\n }\n return str;\n };\n var getDylinkMetadata = (binary2) => {\n var offset = 0;\n var end = 0;\n function getU8() {\n return binary2[offset++];\n }\n function getLEB() {\n var ret = 0;\n var mul = 1;\n while (1) {\n var byte = binary2[offset++];\n ret += (byte & 127) * mul;\n mul *= 128;\n if (!(byte & 128)) break;\n }\n return ret;\n }\n function getString() {\n var len = getLEB();\n offset += len;\n return UTF8ArrayToString(binary2, offset - len, len);\n }\n function getStringList() {\n var count2 = getLEB();\n var rtn = [];\n while (count2--) rtn.push(getString());\n return rtn;\n }\n function failIf(condition, message) {\n if (condition) throw new Error(message);\n }\n if (binary2 instanceof WebAssembly.Module) {\n var dylinkSection = WebAssembly.Module.customSections(binary2, "dylink.0");\n failIf(dylinkSection.length === 0, "need dylink section");\n binary2 = new Uint8Array(dylinkSection[0]);\n end = binary2.length;\n } else {\n var int32View = new Uint32Array(new Uint8Array(binary2.subarray(0, 24)).buffer);\n var magicNumberFound = int32View[0] == 1836278016;\n failIf(!magicNumberFound, "need to see wasm magic number");\n failIf(binary2[8] !== 0, "need the dylink section to be first");\n offset = 9;\n var section_size = getLEB();\n end = offset + section_size;\n var name2 = getString();\n failIf(name2 !== "dylink.0");\n }\n var customSection = { neededDynlibs: [], tlsExports: /* @__PURE__ */ new Set(), weakImports: /* @__PURE__ */ new Set(), runtimePaths: [] };\n var WASM_DYLINK_MEM_INFO = 1;\n var WASM_DYLINK_NEEDED = 2;\n var WASM_DYLINK_EXPORT_INFO = 3;\n var WASM_DYLINK_IMPORT_INFO = 4;\n var WASM_DYLINK_RUNTIME_PATH = 5;\n var WASM_SYMBOL_TLS = 256;\n var WASM_SYMBOL_BINDING_MASK = 3;\n var WASM_SYMBOL_BINDING_WEAK = 1;\n while (offset < end) {\n var subsectionType = getU8();\n var subsectionSize = getLEB();\n if (subsectionType === WASM_DYLINK_MEM_INFO) {\n customSection.memorySize = getLEB();\n customSection.memoryAlign = getLEB();\n customSection.tableSize = getLEB();\n customSection.tableAlign = getLEB();\n } else if (subsectionType === WASM_DYLINK_NEEDED) {\n customSection.neededDynlibs = getStringList();\n } else if (subsectionType === WASM_DYLINK_EXPORT_INFO) {\n var count = getLEB();\n while (count--) {\n var symname = getString();\n var flags2 = getLEB();\n if (flags2 & WASM_SYMBOL_TLS) {\n customSection.tlsExports.add(symname);\n }\n }\n } else if (subsectionType === WASM_DYLINK_IMPORT_INFO) {\n var count = getLEB();\n while (count--) {\n var modname = getString();\n var symname = getString();\n var flags2 = getLEB();\n if ((flags2 & WASM_SYMBOL_BINDING_MASK) == WASM_SYMBOL_BINDING_WEAK) {\n customSection.weakImports.add(symname);\n }\n }\n } else if (subsectionType === WASM_DYLINK_RUNTIME_PATH) {\n customSection.runtimePaths = getStringList();\n } else {\n offset += subsectionSize;\n }\n }\n return customSection;\n };\n function getValue(ptr2, type = "i8") {\n if (type.endsWith("*")) type = "*";\n switch (type) {\n case "i1":\n return HEAP8[ptr2 >>> 0];\n case "i8":\n return HEAP8[ptr2 >>> 0];\n case "i16":\n return HEAP16[ptr2 >>> 1 >>> 0];\n case "i32":\n return HEAP32[ptr2 >>> 2 >>> 0];\n case "i64":\n return HEAP64[ptr2 >>> 3 >>> 0];\n case "float":\n return HEAPF32[ptr2 >>> 2 >>> 0];\n case "double":\n return HEAPF64[ptr2 >>> 3 >>> 0];\n case "*":\n return HEAPU32[ptr2 >>> 2 >>> 0];\n default:\n abort(`invalid type for getValue: ${type}`);\n }\n }\n var newDSO = (name2, handle2, syms) => {\n var dso = { refcount: Infinity, name: name2, exports: syms, global: true };\n LDSO.loadedLibsByName[name2] = dso;\n if (handle2 != void 0) {\n LDSO.loadedLibsByHandle[handle2] = dso;\n }\n return dso;\n };\n var LDSO = { loadedLibsByName: {}, loadedLibsByHandle: {}, init() {\n newDSO("__main__", 0, wasmImports);\n } };\n var alignMemory = (size, alignment) => Math.ceil(size / alignment) * alignment;\n var getMemory = (size) => {\n if (runtimeInitialized) {\n return _calloc(size, 1);\n }\n var ret = ___heap_base;\n var end = ret + alignMemory(size, 16);\n ___heap_base = end;\n var sbrk_ptr = _emscripten_get_sbrk_ptr();\n HEAPU32[sbrk_ptr >>> 2 >>> 0] = end;\n return ret;\n };\n var isInternalSym = (symName) => ["memory", "__memory_base", "__table_base", "__stack_pointer", "__indirect_function_table", "__cpp_exception", "__c_longjmp", "__wasm_apply_data_relocs", "__dso_handle", "__tls_size", "__tls_align", "__set_stack_limits", "_emscripten_tls_init", "__wasm_init_tls", "__wasm_call_ctors", "__start_em_asm", "__stop_em_asm", "__start_em_js", "__stop_em_js"].includes(symName) || symName.startsWith("__em_js__");\n var wasmTableMirror = [];\n var getWasmTableEntry = (funcPtr) => {\n var func2 = wasmTableMirror[funcPtr];\n if (!func2) {\n wasmTableMirror[funcPtr] = func2 = wasmTable.get(funcPtr);\n }\n return func2;\n };\n var updateTableMap = (offset, count) => {\n if (functionsInTableMap) {\n for (var i2 = offset; i2 < offset + count; i2++) {\n var item = getWasmTableEntry(i2);\n if (item) {\n functionsInTableMap.set(item, i2);\n }\n }\n }\n };\n var functionsInTableMap;\n var getFunctionAddress = (func2) => {\n if (!functionsInTableMap) {\n functionsInTableMap = /* @__PURE__ */ new WeakMap();\n updateTableMap(0, wasmTable.length);\n }\n return functionsInTableMap.get(func2) || 0;\n };\n var freeTableIndexes = [];\n var getEmptyTableSlot = () => {\n if (freeTableIndexes.length) {\n return freeTableIndexes.pop();\n }\n return wasmTable["grow"](1);\n };\n var setWasmTableEntry = (idx, func2) => {\n wasmTable.set(idx, func2);\n wasmTableMirror[idx] = wasmTable.get(idx);\n };\n var uleb128EncodeWithLen = (arr) => {\n const n = arr.length;\n return [n % 128 | 128, n >> 7, ...arr];\n };\n var wasmTypeCodes = { i: 127, p: 127, j: 126, f: 125, d: 124, e: 111 };\n var generateTypePack = (types) => uleb128EncodeWithLen(Array.from(types, (type) => {\n var code = wasmTypeCodes[type];\n return code;\n }));\n var convertJsFunctionToWasm = (func2, sig2) => {\n var bytes = Uint8Array.of(0, 97, 115, 109, 1, 0, 0, 0, 1, ...uleb128EncodeWithLen([1, 96, ...generateTypePack(sig2.slice(1)), ...generateTypePack(sig2[0] === "v" ? "" : sig2[0])]), 2, 7, 1, 1, 101, 1, 102, 0, 0, 7, 5, 1, 1, 102, 0, 0);\n var module2 = new WebAssembly.Module(bytes);\n var instance2 = new WebAssembly.Instance(module2, { e: { f: func2 } });\n var wrappedFunc = instance2.exports["f"];\n return wrappedFunc;\n };\n var addFunction = (func2, sig2) => {\n var rtn = getFunctionAddress(func2);\n if (rtn) {\n return rtn;\n }\n var ret = getEmptyTableSlot();\n try {\n setWasmTableEntry(ret, func2);\n } catch (err2) {\n if (!(err2 instanceof TypeError)) {\n throw err2;\n }\n var wrapped = convertJsFunctionToWasm(func2, sig2);\n setWasmTableEntry(ret, wrapped);\n }\n functionsInTableMap.set(func2, ret);\n return ret;\n };\n var updateGOT = (exports, replace) => {\n for (var symName in exports) {\n if (isInternalSym(symName)) {\n continue;\n }\n var value2 = exports[symName];\n var existingEntry = GOT[symName] && GOT[symName].value != -1;\n if (replace || !existingEntry) {\n var newValue;\n if (typeof value2 == "function") {\n newValue = addFunction(value2);\n } else if (typeof value2.value == "number") {\n newValue = value2;\n } else {\n continue;\n }\n GOT[symName] ??= new WebAssembly.Global({ value: "i32", mutable: true });\n GOT[symName].value = newValue;\n }\n }\n };\n var isImmutableGlobal = (val) => {\n if (val instanceof WebAssembly.Global) {\n try {\n val.value = val.value;\n } catch {\n return true;\n }\n }\n return false;\n };\n var relocateExports = (exports, memoryBase2 = 0) => {\n function relocateExport(name2, value2) {\n if (isImmutableGlobal(value2)) {\n return new WebAssembly.Global({ value: "i32" }, value2.value + memoryBase2);\n }\n return value2;\n }\n var relocated = {};\n for (var e in exports) {\n relocated[e] = relocateExport(e, exports[e]);\n }\n return relocated;\n };\n var isSymbolDefined = (symName) => {\n var existing = wasmImports[symName];\n if (!existing || existing.stub) {\n return false;\n }\n return true;\n };\n var createNamedFunction = (name2, func2) => Object.defineProperty(func2, "name", { value: name2 });\n var resolveGlobalSymbol = (symName, direct = false) => {\n var sym;\n if (isSymbolDefined(symName)) {\n sym = wasmImports[symName];\n }\n return { sym, name: symName };\n };\n var onPostCtors = [];\n var addOnPostCtor = (cb) => onPostCtors.push(cb);\n var UTF8ToString = (ptr2, maxBytesToRead, ignoreNul) => {\n ptr2 >>>= 0;\n return ptr2 ? UTF8ArrayToString(HEAPU8, ptr2, maxBytesToRead, ignoreNul) : "";\n };\n var loadWebAssemblyModule = (binary, flags, libName, localScope, handle) => {\n var metadata = getDylinkMetadata(binary);\n function loadModule() {\n var memAlign = Math.pow(2, metadata.memoryAlign);\n var memoryBase = metadata.memorySize ? alignMemory(getMemory(metadata.memorySize + memAlign), memAlign) : 0;\n var tableBase = metadata.tableSize ? wasmTable.length : 0;\n if (handle) {\n HEAP8[handle + 8 >>> 0] = 1;\n HEAPU32[handle + 12 >>> 2 >>> 0] = memoryBase;\n HEAP32[handle + 16 >>> 2 >>> 0] = metadata.memorySize;\n HEAPU32[handle + 20 >>> 2 >>> 0] = tableBase;\n HEAP32[handle + 24 >>> 2 >>> 0] = metadata.tableSize;\n }\n if (metadata.tableSize) {\n wasmTable.grow(metadata.tableSize);\n }\n var moduleExports;\n function resolveSymbol(sym) {\n var resolved = resolveGlobalSymbol(sym).sym;\n if (!resolved && localScope) {\n resolved = localScope[sym];\n }\n if (!resolved) {\n resolved = moduleExports[sym];\n }\n return resolved;\n }\n var proxyHandler = { get(stubs, prop) {\n switch (prop) {\n case "__memory_base":\n return memoryBase;\n case "__table_base":\n return tableBase;\n }\n if (prop in wasmImports && !wasmImports[prop].stub) {\n var res = wasmImports[prop];\n return res;\n }\n if (!(prop in stubs)) {\n var resolved;\n stubs[prop] = (...args2) => {\n resolved ||= resolveSymbol(prop);\n if (!resolved) {\n throw new Error(`Dynamic linking error: cannot resolve symbol ${prop}`);\n }\n return resolved(...args2);\n };\n }\n return stubs[prop];\n } };\n var proxy = new Proxy({}, proxyHandler);\n var GOTProxy = new Proxy(metadata.weakImports, GOTHandler);\n var info = { "GOT.mem": GOTProxy, "GOT.func": GOTProxy, env: proxy, wasi_snapshot_preview1: proxy };\n function postInstantiation(module, instance) {\n updateTableMap(tableBase, metadata.tableSize);\n moduleExports = relocateExports(instance.exports, memoryBase);\n updateGOT(moduleExports);\n if (!flags.allowUndefined) {\n reportUndefinedSymbols();\n }\n function addEmAsm(addr, body) {\n var args = [];\n for (var arity = 0; ; arity++) {\n var argName = "$" + arity;\n if (!body.includes(argName)) break;\n args.push(argName);\n }\n args = args.join(",");\n var func = `(${args}) => { ${body} };`;\n ASM_CONSTS[start] = eval(func);\n }\n if ("__start_em_asm" in moduleExports) {\n var start = moduleExports["__start_em_asm"].value;\n var stop = moduleExports["__stop_em_asm"].value;\n start >>>= 0;\n stop >>>= 0;\n while (start < stop) {\n var jsString = UTF8ToString(start);\n addEmAsm(start, jsString);\n start = HEAPU8.indexOf(0, start) + 1;\n }\n }\n function addEmJs(name, cSig, body) {\n var jsArgs = [];\n cSig = cSig.slice(1, -1);\n if (cSig != "void") {\n cSig = cSig.split(",");\n for (var arg of cSig) {\n var jsArg = arg.split(" ").pop();\n jsArgs.push(jsArg.replaceAll("*", ""));\n }\n }\n var func = `(${jsArgs}) => ${body};`;\n moduleExports[name] = eval(func);\n }\n for (var name in moduleExports) {\n if (name.startsWith("__em_js__")) {\n var start = moduleExports[name].value;\n var jsString = UTF8ToString(start);\n var [sig, body] = jsString.split("<::>");\n addEmJs(name.replace("__em_js__", ""), sig, body);\n delete moduleExports[name];\n }\n }\n var applyRelocs = moduleExports["__wasm_apply_data_relocs"];\n if (applyRelocs) {\n if (runtimeInitialized) {\n applyRelocs();\n } else {\n __RELOC_FUNCS__.push(applyRelocs);\n }\n }\n var init = moduleExports["__wasm_call_ctors"];\n if (init) {\n if (runtimeInitialized) {\n init();\n } else {\n addOnPostCtor(init);\n }\n }\n return moduleExports;\n }\n if (flags.loadAsync) {\n return (async () => {\n var instance2;\n if (binary instanceof WebAssembly.Module) {\n instance2 = new WebAssembly.Instance(binary, info);\n } else {\n ({ module: binary, instance: instance2 } = await WebAssembly.instantiate(binary, info));\n }\n return postInstantiation(binary, instance2);\n })();\n }\n var module = binary instanceof WebAssembly.Module ? binary : new WebAssembly.Module(binary);\n var instance = new WebAssembly.Instance(module, info);\n return postInstantiation(module, instance);\n }\n flags = { ...flags, rpath: { parentLibPath: libName, paths: metadata.runtimePaths } };\n if (flags.loadAsync) {\n return metadata.neededDynlibs.reduce((chain, needed2) => chain.then(() => {\n needed2 = findLibraryFS(needed2, flags.rpath) ?? needed2;\n return loadDynamicLibrary(needed2, flags, localScope);\n }), Promise.resolve()).then(loadModule);\n }\n for (var needed of metadata.neededDynlibs) {\n needed = findLibraryFS(needed, flags.rpath) ?? needed;\n loadDynamicLibrary(needed, flags, localScope);\n }\n return loadModule();\n };\n var mergeLibSymbols = (exports, libName2) => {\n for (var [sym, exp] of Object.entries(exports)) {\n const setImport = (target) => {\n if (!isSymbolDefined(target)) {\n wasmImports[target] = exp;\n }\n };\n setImport(sym);\n const main_alias = "__main_argc_argv";\n if (sym == "main") {\n setImport(main_alias);\n }\n if (sym == main_alias) {\n setImport("main");\n }\n }\n };\n var asyncLoad = async (url2) => {\n var arrayBuffer = await readAsync(url2);\n return new Uint8Array(arrayBuffer);\n };\n var preloadPlugins = [];\n var registerWasmPlugin = () => {\n var wasmPlugin = { promiseChainEnd: Promise.resolve(), canHandle: (name2) => !Module["noWasmDecoding"] && name2.endsWith(".so"), handle: async (byteArray, name2) => wasmPlugin.promiseChainEnd = wasmPlugin.promiseChainEnd.then(async () => {\n try {\n var exports = await loadWebAssemblyModule(byteArray, { loadAsync: true, nodelete: true }, name2, {});\n } catch (error) {\n throw new Error(`failed to instantiate wasm: ${name2}: ${error}`);\n }\n preloadedWasm[name2] = exports;\n return byteArray;\n }) };\n preloadPlugins.push(wasmPlugin);\n };\n var preloadedWasm = {};\n var PATH = { isAbs: (path) => path.charAt(0) === "/", splitPath: (filename) => {\n var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n }, normalizeArray: (parts, allowAboveRoot) => {\n var up = 0;\n for (var i2 = parts.length - 1; i2 >= 0; i2--) {\n var last = parts[i2];\n if (last === ".") {\n parts.splice(i2, 1);\n } else if (last === "..") {\n parts.splice(i2, 1);\n up++;\n } else if (up) {\n parts.splice(i2, 1);\n up--;\n }\n }\n if (allowAboveRoot) {\n for (; up; up--) {\n parts.unshift("..");\n }\n }\n return parts;\n }, normalize: (path) => {\n var isAbsolute = PATH.isAbs(path), trailingSlash = path.slice(-1) === "/";\n path = PATH.normalizeArray(path.split("/").filter((p2) => !!p2), !isAbsolute).join("/");\n if (!path && !isAbsolute) {\n path = ".";\n }\n if (path && trailingSlash) {\n path += "/";\n }\n return (isAbsolute ? "/" : "") + path;\n }, dirname: (path) => {\n var result = PATH.splitPath(path), root = result[0], dir = result[1];\n if (!root && !dir) {\n return ".";\n }\n if (dir) {\n dir = dir.slice(0, -1);\n }\n return root + dir;\n }, basename: (path) => path && path.match(/([^\\/]+|\\/)\\/*$/)[1], join: (...paths) => PATH.normalize(paths.join("/")), join2: (l, r) => PATH.normalize(l + "/" + r) };\n var replaceORIGIN = (parentLibName, rpath) => {\n if (rpath.startsWith("$ORIGIN")) {\n var origin = PATH.dirname(parentLibName);\n return rpath.replace("$ORIGIN", origin);\n }\n return rpath;\n };\n var stackSave = () => _emscripten_stack_get_current();\n var stackRestore = (val) => __emscripten_stack_restore(val);\n var withStackSave = (f2) => {\n var stack = stackSave();\n var ret = f2();\n stackRestore(stack);\n return ret;\n };\n var stackAlloc = (sz) => __emscripten_stack_alloc(sz);\n var lengthBytesUTF8 = (str) => {\n var len = 0;\n for (var i2 = 0; i2 < str.length; ++i2) {\n var c = str.charCodeAt(i2);\n if (c <= 127) {\n len++;\n } else if (c <= 2047) {\n len += 2;\n } else if (c >= 55296 && c <= 57343) {\n len += 4;\n ++i2;\n } else {\n len += 3;\n }\n }\n return len;\n };\n var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => {\n outIdx >>>= 0;\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for (var i2 = 0; i2 < str.length; ++i2) {\n var u = str.codePointAt(i2);\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++ >>> 0] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++ >>> 0] = 192 | u >> 6;\n heap[outIdx++ >>> 0] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++ >>> 0] = 224 | u >> 12;\n heap[outIdx++ >>> 0] = 128 | u >> 6 & 63;\n heap[outIdx++ >>> 0] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n heap[outIdx++ >>> 0] = 240 | u >> 18;\n heap[outIdx++ >>> 0] = 128 | u >> 12 & 63;\n heap[outIdx++ >>> 0] = 128 | u >> 6 & 63;\n heap[outIdx++ >>> 0] = 128 | u & 63;\n i2++;\n }\n }\n heap[outIdx >>> 0] = 0;\n return outIdx - startIdx;\n };\n var stringToUTF8 = (str, outPtr, maxBytesToWrite) => stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n var stringToUTF8OnStack = (str) => {\n var size = lengthBytesUTF8(str) + 1;\n var ret = stackAlloc(size);\n stringToUTF8(str, ret, size);\n return ret;\n };\n var base64Decode = (b64) => {\n if (ENVIRONMENT_IS_NODE) {\n var buf = Buffer.from(b64, "base64");\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.length);\n }\n var b1, b2, i2 = 0, j2 = 0, bLength = b64.length;\n var output = new Uint8Array((bLength * 3 >> 2) - (b64[bLength - 2] == "=") - (b64[bLength - 1] == "="));\n for (; i2 < bLength; i2 += 4, j2 += 3) {\n b1 = base64ReverseLookup[b64.charCodeAt(i2 + 1)];\n b2 = base64ReverseLookup[b64.charCodeAt(i2 + 2)];\n output[j2] = base64ReverseLookup[b64.charCodeAt(i2)] << 2 | b1 >> 4;\n output[j2 + 1] = b1 << 4 | b2 >> 2;\n output[j2 + 2] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i2 + 3)];\n }\n return output;\n };\n var initRandomFill = () => {\n if (ENVIRONMENT_IS_NODE) {\n var nodeCrypto = require("node:crypto");\n return (view) => nodeCrypto.randomFillSync(view);\n }\n if (ENVIRONMENT_IS_SHELL) {\n return (view) => {\n if (!os.system) {\n throw new Error("randomFill not supported on d8 unless --enable-os-system is passed");\n }\n const b64 = os.system("sh", ["-c", `head -c${view.byteLength} /dev/urandom | base64 --wrap=0`]);\n view.set(base64Decode(b64));\n };\n }\n return (view) => crypto.getRandomValues(view);\n };\n var randomFill = (view) => {\n (randomFill = initRandomFill())(view);\n };\n var PATH_FS = { resolve: (...args2) => {\n var resolvedPath = "", resolvedAbsolute = false;\n for (var i2 = args2.length - 1; i2 >= -1 && !resolvedAbsolute; i2--) {\n var path = i2 >= 0 ? args2[i2] : FS.cwd();\n if (typeof path != "string") {\n throw new TypeError("Arguments to path.resolve must be strings");\n } else if (!path) {\n return "";\n }\n resolvedPath = path + "/" + resolvedPath;\n resolvedAbsolute = PATH.isAbs(path);\n }\n resolvedPath = PATH.normalizeArray(resolvedPath.split("/").filter((p2) => !!p2), !resolvedAbsolute).join("/");\n return (resolvedAbsolute ? "/" : "") + resolvedPath || ".";\n }, relative: (from, to) => {\n from = PATH_FS.resolve(from).slice(1);\n to = PATH_FS.resolve(to).slice(1);\n function trim(arr) {\n var start2 = 0;\n for (; start2 < arr.length; start2++) {\n if (arr[start2] !== "") break;\n }\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== "") break;\n }\n if (start2 > end) return [];\n return arr.slice(start2, end - start2 + 1);\n }\n var fromParts = trim(from.split("/"));\n var toParts = trim(to.split("/"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i2 = 0; i2 < length; i2++) {\n if (fromParts[i2] !== toParts[i2]) {\n samePartsLength = i2;\n break;\n }\n }\n var outputParts = [];\n for (var i2 = samePartsLength; i2 < fromParts.length; i2++) {\n outputParts.push("..");\n }\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join("/");\n } };\n var FS_stdin_getChar_buffer = [];\n var intArrayFromString = (stringy, dontAddNull, length) => {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n if (dontAddNull) u8array.length = numBytesWritten;\n return u8array;\n };\n var FS_stdin_getChar = () => {\n if (!FS_stdin_getChar_buffer.length) {\n var result = null;\n if (ENVIRONMENT_IS_NODE) {\n var BUFSIZE = 256;\n var buf = Buffer.alloc(BUFSIZE);\n var bytesRead = 0;\n var fd = process.stdin.fd;\n try {\n bytesRead = fs.readSync(fd, buf, 0, BUFSIZE);\n } catch (e) {\n if (e.toString().includes("EOF")) bytesRead = 0;\n else throw e;\n }\n if (bytesRead > 0) {\n result = buf.slice(0, bytesRead).toString("utf-8");\n }\n } else if (globalThis.window?.prompt) {\n result = window.prompt("Input: ");\n if (result !== null) {\n result += "\\n";\n }\n } else if (globalThis.readline) {\n result = readline();\n if (result) {\n result += "\\n";\n }\n } else {\n }\n if (!result) {\n return null;\n }\n FS_stdin_getChar_buffer = intArrayFromString(result, true);\n }\n return FS_stdin_getChar_buffer.shift();\n };\n var TTY = { ttys: [], init() {\n }, shutdown() {\n }, register(dev, ops) {\n TTY.ttys[dev] = { input: [], output: [], ops };\n FS.registerDevice(dev, TTY.stream_ops);\n }, stream_ops: { open(stream) {\n var tty = TTY.ttys[stream.node.rdev];\n if (!tty) {\n throw new FS.ErrnoError(43);\n }\n stream.tty = tty;\n stream.seekable = false;\n }, close(stream) {\n stream.tty.ops.fsync(stream.tty);\n }, fsync(stream) {\n stream.tty.ops.fsync(stream.tty);\n }, read(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) {\n throw new FS.ErrnoError(60);\n }\n var bytesRead = 0;\n for (var i2 = 0; i2 < length; i2++) {\n var result;\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === void 0 && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === void 0) break;\n bytesRead++;\n buffer[offset + i2] = result;\n }\n if (bytesRead) {\n stream.node.atime = Date.now();\n }\n return bytesRead;\n }, write(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) {\n throw new FS.ErrnoError(60);\n }\n try {\n for (var i2 = 0; i2 < length; i2++) {\n stream.tty.ops.put_char(stream.tty, buffer[offset + i2]);\n }\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) {\n stream.node.mtime = stream.node.ctime = Date.now();\n }\n return i2;\n } }, default_tty_ops: { get_char(tty) {\n return FS_stdin_getChar();\n }, put_char(tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n }, fsync(tty) {\n if (tty.output?.length > 0) {\n out(UTF8ArrayToString(tty.output));\n tty.output = [];\n }\n }, ioctl_tcgets(tty) {\n return { c_iflag: 25856, c_oflag: 5, c_cflag: 191, c_lflag: 35387, c_cc: [3, 28, 127, 21, 4, 0, 1, 0, 17, 19, 26, 0, 18, 15, 23, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] };\n }, ioctl_tcsets(tty, optional_actions, data2) {\n return 0;\n }, ioctl_tiocgwinsz(tty) {\n return [24, 80];\n } }, default_tty1_ops: { put_char(tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n }, fsync(tty) {\n if (tty.output?.length > 0) {\n err(UTF8ArrayToString(tty.output));\n tty.output = [];\n }\n } } };\n var zeroMemory = (ptr2, size) => HEAPU8.fill(0, ptr2, ptr2 + size);\n var mmapAlloc = (size) => {\n size = alignMemory(size, 65536);\n var ptr2 = _emscripten_builtin_memalign(65536, size);\n if (ptr2) zeroMemory(ptr2, size);\n return ptr2;\n };\n var MEMFS = { ops_table: null, mount(mount) {\n return MEMFS.createNode(null, "/", 16895, 0);\n }, createNode(parent, name2, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {\n throw new FS.ErrnoError(63);\n }\n MEMFS.ops_table ||= { dir: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr, lookup: MEMFS.node_ops.lookup, mknod: MEMFS.node_ops.mknod, rename: MEMFS.node_ops.rename, unlink: MEMFS.node_ops.unlink, rmdir: MEMFS.node_ops.rmdir, readdir: MEMFS.node_ops.readdir, symlink: MEMFS.node_ops.symlink }, stream: { llseek: MEMFS.stream_ops.llseek } }, file: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr }, stream: { llseek: MEMFS.stream_ops.llseek, read: MEMFS.stream_ops.read, write: MEMFS.stream_ops.write, mmap: MEMFS.stream_ops.mmap, msync: MEMFS.stream_ops.msync } }, link: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr, readlink: MEMFS.node_ops.readlink }, stream: {} }, chrdev: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr }, stream: FS.chrdev_stream_ops } };\n var node = FS.createNode(parent, name2, mode, dev);\n if (FS.isDir(node.mode)) {\n node.node_ops = MEMFS.ops_table.dir.node;\n node.stream_ops = MEMFS.ops_table.dir.stream;\n node.contents = {};\n } else if (FS.isFile(node.mode)) {\n node.node_ops = MEMFS.ops_table.file.node;\n node.stream_ops = MEMFS.ops_table.file.stream;\n node.usedBytes = 0;\n node.contents = MEMFS.emptyFileContents ??= new Uint8Array(0);\n } else if (FS.isLink(node.mode)) {\n node.node_ops = MEMFS.ops_table.link.node;\n node.stream_ops = MEMFS.ops_table.link.stream;\n } else if (FS.isChrdev(node.mode)) {\n node.node_ops = MEMFS.ops_table.chrdev.node;\n node.stream_ops = MEMFS.ops_table.chrdev.stream;\n }\n node.atime = node.mtime = node.ctime = Date.now();\n if (parent) {\n parent.contents[name2] = node;\n parent.atime = parent.mtime = parent.ctime = node.atime;\n }\n return node;\n }, getFileDataAsTypedArray(node) {\n return node.contents.subarray(0, node.usedBytes);\n }, expandFileStorage(node, newCapacity) {\n var prevCapacity = node.contents.length;\n if (prevCapacity >= newCapacity) return;\n var CAPACITY_DOUBLING_MAX = 1024 * 1024;\n newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0);\n if (prevCapacity) newCapacity = Math.max(newCapacity, 256);\n var oldContents = MEMFS.getFileDataAsTypedArray(node);\n node.contents = new Uint8Array(newCapacity);\n node.contents.set(oldContents);\n }, resizeFileStorage(node, newSize) {\n if (node.usedBytes == newSize) return;\n var oldContents = node.contents;\n node.contents = new Uint8Array(newSize);\n node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n node.usedBytes = newSize;\n }, node_ops: { getattr(node) {\n var attr = {};\n attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n attr.ino = node.id;\n attr.mode = node.mode;\n attr.nlink = 1;\n attr.uid = 0;\n attr.gid = 0;\n attr.rdev = node.rdev;\n if (FS.isDir(node.mode)) {\n attr.size = 4096;\n } else if (FS.isFile(node.mode)) {\n attr.size = node.usedBytes;\n } else if (FS.isLink(node.mode)) {\n attr.size = node.link.length;\n } else {\n attr.size = 0;\n }\n attr.atime = new Date(node.atime);\n attr.mtime = new Date(node.mtime);\n attr.ctime = new Date(node.ctime);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n }, setattr(node, attr) {\n for (const key of ["mode", "atime", "mtime", "ctime"]) {\n if (attr[key] != null) {\n node[key] = attr[key];\n }\n }\n if (attr.size !== void 0) {\n MEMFS.resizeFileStorage(node, attr.size);\n }\n }, lookup(parent, name2) {\n if (!MEMFS.doesNotExistError) {\n MEMFS.doesNotExistError = new FS.ErrnoError(44);\n MEMFS.doesNotExistError.stack = "<generic error, no stack>";\n }\n throw MEMFS.doesNotExistError;\n }, mknod(parent, name2, mode, dev) {\n return MEMFS.createNode(parent, name2, mode, dev);\n }, rename(old_node, new_dir, new_name) {\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {\n }\n if (new_node) {\n if (FS.isDir(old_node.mode)) {\n for (var i2 in new_node.contents) {\n throw new FS.ErrnoError(55);\n }\n }\n FS.hashRemoveNode(new_node);\n }\n delete old_node.parent.contents[old_node.name];\n new_dir.contents[new_name] = old_node;\n old_node.name = new_name;\n new_dir.ctime = new_dir.mtime = old_node.parent.ctime = old_node.parent.mtime = Date.now();\n }, unlink(parent, name2) {\n delete parent.contents[name2];\n parent.ctime = parent.mtime = Date.now();\n }, rmdir(parent, name2) {\n var node = FS.lookupNode(parent, name2);\n for (var i2 in node.contents) {\n throw new FS.ErrnoError(55);\n }\n delete parent.contents[name2];\n parent.ctime = parent.mtime = Date.now();\n }, readdir(node) {\n return [".", "..", ...Object.keys(node.contents)];\n }, symlink(parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);\n node.link = oldpath;\n return node;\n }, readlink(node) {\n if (!FS.isLink(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n return node.link;\n } }, stream_ops: { read(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= stream.node.usedBytes) return 0;\n var size = Math.min(stream.node.usedBytes - position, length);\n buffer.set(contents.subarray(position, position + size), offset);\n return size;\n }, write(stream, buffer, offset, length, position, canOwn) {\n if (buffer.buffer === HEAP8.buffer) {\n canOwn = false;\n }\n if (!length) return 0;\n var node = stream.node;\n node.mtime = node.ctime = Date.now();\n if (canOwn) {\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = buffer.slice(offset, offset + length);\n node.usedBytes = length;\n } else {\n MEMFS.expandFileStorage(node, position + length);\n node.contents.set(buffer.subarray(offset, offset + length), position);\n node.usedBytes = Math.max(node.usedBytes, position + length);\n }\n return length;\n }, llseek(stream, offset, whence) {\n var position = offset;\n if (whence === 1) {\n position += stream.position;\n } else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) {\n position += stream.node.usedBytes;\n }\n }\n if (position < 0) {\n throw new FS.ErrnoError(28);\n }\n return position;\n }, mmap(stream, length, position, prot, flags2) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n var ptr2;\n var allocated;\n var contents = stream.node.contents;\n if (!(flags2 & 2) && contents.buffer === HEAP8.buffer) {\n allocated = false;\n ptr2 = contents.byteOffset;\n } else {\n allocated = true;\n ptr2 = mmapAlloc(length);\n if (!ptr2) {\n throw new FS.ErrnoError(48);\n }\n if (contents) {\n if (position > 0 || position + length < contents.length) {\n if (contents.subarray) {\n contents = contents.subarray(position, position + length);\n } else {\n contents = Array.prototype.slice.call(contents, position, position + length);\n }\n }\n HEAP8.set(contents, ptr2 >>> 0);\n }\n }\n return { ptr: ptr2, allocated };\n }, msync(stream, buffer, offset, length, mmapFlags) {\n MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n return 0;\n } } };\n var FS_modeStringToFlags = (str) => {\n if (typeof str != "string") return str;\n var flagModes = { r: 0, "r+": 2, w: 512 | 64 | 1, "w+": 512 | 64 | 2, a: 1024 | 64 | 1, "a+": 1024 | 64 | 2 };\n var flags2 = flagModes[str];\n if (typeof flags2 == "undefined") {\n throw new Error(`Unknown file open mode: ${str}`);\n }\n return flags2;\n };\n var FS_fileDataToTypedArray = (data2) => {\n if (typeof data2 == "string") {\n data2 = intArrayFromString(data2, true);\n }\n if (!data2.subarray) {\n data2 = new Uint8Array(data2);\n }\n return data2;\n };\n var FS_getMode = (canRead, canWrite) => {\n var mode = 0;\n if (canRead) mode |= 292 | 73;\n if (canWrite) mode |= 146;\n return mode;\n };\n var IDBFS = { dbs: {}, indexedDB: () => indexedDB, DB_VERSION: 21, DB_STORE_NAME: "FILE_DATA", queuePersist: (mount) => {\n function onPersistComplete() {\n if (mount.idbPersistState === "again") startPersist();\n else mount.idbPersistState = 0;\n }\n function startPersist() {\n mount.idbPersistState = "idb";\n IDBFS.syncfs(mount, false, onPersistComplete);\n }\n if (!mount.idbPersistState) {\n mount.idbPersistState = setTimeout(startPersist, 0);\n } else if (mount.idbPersistState === "idb") {\n mount.idbPersistState = "again";\n }\n }, mount: (mount) => {\n var mnt = MEMFS.mount(mount);\n if (mount?.opts?.autoPersist) {\n mount.idbPersistState = 0;\n var memfs_node_ops = mnt.node_ops;\n mnt.node_ops = { ...mnt.node_ops };\n mnt.node_ops.mknod = (parent, name2, mode, dev) => {\n var node = memfs_node_ops.mknod(parent, name2, mode, dev);\n node.node_ops = mnt.node_ops;\n node.idbfs_mount = mnt.mount;\n node.memfs_stream_ops = node.stream_ops;\n node.stream_ops = { ...node.stream_ops };\n node.stream_ops.write = (stream, buffer, offset, length, position, canOwn) => {\n stream.node.isModified = true;\n return node.memfs_stream_ops.write(stream, buffer, offset, length, position, canOwn);\n };\n node.stream_ops.close = (stream) => {\n var n = stream.node;\n if (n.isModified) {\n IDBFS.queuePersist(n.idbfs_mount);\n n.isModified = false;\n }\n if (n.memfs_stream_ops.close) return n.memfs_stream_ops.close(stream);\n };\n IDBFS.queuePersist(mnt.mount);\n return node;\n };\n mnt.node_ops.rmdir = (...args2) => (IDBFS.queuePersist(mnt.mount), memfs_node_ops.rmdir(...args2));\n mnt.node_ops.symlink = (...args2) => (IDBFS.queuePersist(mnt.mount), memfs_node_ops.symlink(...args2));\n mnt.node_ops.unlink = (...args2) => (IDBFS.queuePersist(mnt.mount), memfs_node_ops.unlink(...args2));\n mnt.node_ops.rename = (...args2) => (IDBFS.queuePersist(mnt.mount), memfs_node_ops.rename(...args2));\n }\n return mnt;\n }, syncfs: (mount, populate, callback) => {\n IDBFS.getLocalSet(mount, (err2, local) => {\n if (err2) return callback(err2);\n IDBFS.getRemoteSet(mount, (err3, remote) => {\n if (err3) return callback(err3);\n var src = populate ? remote : local;\n var dst = populate ? local : remote;\n IDBFS.reconcile(src, dst, callback);\n });\n });\n }, quit: () => {\n for (var value2 of Object.values(IDBFS.dbs)) {\n value2.close();\n }\n IDBFS.dbs = {};\n }, getDB: (name2, callback) => {\n var db = IDBFS.dbs[name2];\n if (db) {\n return callback(null, db);\n }\n var req;\n try {\n req = IDBFS.indexedDB().open(name2, IDBFS.DB_VERSION);\n } catch (e) {\n return callback(e);\n }\n if (!req) {\n return callback("Unable to connect to IndexedDB");\n }\n req.onupgradeneeded = (e) => {\n var db2 = e.target.result;\n var transaction = e.target.transaction;\n var fileStore;\n if (db2.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) {\n fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME);\n } else {\n fileStore = db2.createObjectStore(IDBFS.DB_STORE_NAME);\n }\n if (!fileStore.indexNames.contains("timestamp")) {\n fileStore.createIndex("timestamp", "timestamp", { unique: false });\n }\n };\n req.onsuccess = () => {\n db = req.result;\n IDBFS.dbs[name2] = db;\n callback(null, db);\n };\n req.onerror = (e) => {\n callback(e.target.error);\n e.preventDefault();\n };\n }, getLocalSet: (mount, callback) => {\n var entries = {};\n function isRealDir(p2) {\n return p2 !== "." && p2 !== "..";\n }\n function toAbsolute(root) {\n return (p2) => PATH.join2(root, p2);\n }\n var check = FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));\n while (check.length) {\n var path = check.pop();\n var stat;\n try {\n stat = FS.lstat(path);\n } catch (e) {\n return callback(e);\n }\n if (FS.isDir(stat.mode)) {\n check.push(...FS.readdir(path).filter(isRealDir).map(toAbsolute(path)));\n }\n entries[path] = { timestamp: stat.mtime };\n }\n return callback(null, { type: "local", entries });\n }, getRemoteSet: (mount, callback) => {\n var entries = {};\n IDBFS.getDB(mount.mountpoint, (err2, db) => {\n if (err2) return callback(err2);\n try {\n var transaction = db.transaction([IDBFS.DB_STORE_NAME], "readonly");\n transaction.onerror = (e) => {\n callback(e.target.error);\n e.preventDefault();\n };\n var store = transaction.objectStore(IDBFS.DB_STORE_NAME);\n var index = store.index("timestamp");\n index.openKeyCursor().onsuccess = (event) => {\n var cursor = event.target.result;\n if (!cursor) {\n return callback(null, { type: "remote", db, entries });\n }\n entries[cursor.primaryKey] = { timestamp: cursor.key };\n cursor.continue();\n };\n } catch (e) {\n return callback(e);\n }\n });\n }, loadLocalEntry: (path, callback) => {\n var stat, node;\n try {\n var lookup = FS.lookupPath(path);\n node = lookup.node;\n stat = FS.lstat(path);\n } catch (e) {\n return callback(e);\n }\n if (FS.isDir(stat.mode)) {\n return callback(null, { timestamp: stat.mtime, mode: stat.mode });\n } else if (FS.isLink(stat.mode)) {\n return callback(null, { timestamp: stat.mtime, mode: stat.mode, link: node.link });\n } else if (FS.isFile(stat.mode)) {\n node.contents = MEMFS.getFileDataAsTypedArray(node);\n return callback(null, { timestamp: stat.mtime, mode: stat.mode, contents: node.contents });\n } else {\n return callback(new Error("node type not supported"));\n }\n }, storeLocalEntry: (path, entry, callback) => {\n try {\n if (FS.isDir(entry["mode"])) {\n FS.mkdirTree(path, entry["mode"]);\n } else if (FS.isLink(entry["mode"])) {\n FS.symlink(entry["link"], path);\n } else if (FS.isFile(entry["mode"])) {\n FS.writeFile(path, entry["contents"], { canOwn: true });\n } else {\n return callback(new Error("node type not supported"));\n }\n FS.chmod(path, entry["mode"]);\n FS.utime(path, entry["timestamp"], entry["timestamp"]);\n } catch (e) {\n return callback(e);\n }\n callback(null);\n }, removeLocalEntry: (path, callback) => {\n try {\n var stat = FS.lstat(path);\n if (FS.isDir(stat.mode)) {\n FS.rmdir(path);\n } else {\n FS.unlink(path);\n }\n } catch (e) {\n return callback(e);\n }\n callback(null);\n }, loadRemoteEntry: (store, path, callback) => {\n var req = store.get(path);\n req.onsuccess = (event) => callback(null, event.target.result);\n req.onerror = (e) => {\n callback(e.target.error);\n e.preventDefault();\n };\n }, storeRemoteEntry: (store, path, entry, callback) => {\n try {\n var req = store.put(entry, path);\n } catch (e) {\n callback(e);\n return;\n }\n req.onsuccess = (event) => callback();\n req.onerror = (e) => {\n callback(e.target.error);\n e.preventDefault();\n };\n }, removeRemoteEntry: (store, path, callback) => {\n var req = store.delete(path);\n req.onsuccess = (event) => callback();\n req.onerror = (e) => {\n callback(e.target.error);\n e.preventDefault();\n };\n }, reconcile: (src, dst, callback) => {\n var total = 0;\n var create = [];\n for (var [key, e] of Object.entries(src.entries)) {\n var e2 = dst.entries[key];\n if (!e2 || e["timestamp"].getTime() != e2["timestamp"].getTime()) {\n create.push(key);\n total++;\n }\n }\n var remove = [];\n for (var key of Object.keys(dst.entries)) {\n if (!src.entries[key]) {\n remove.push(key);\n total++;\n }\n }\n if (!total) {\n return callback(null);\n }\n var errored = false;\n var db = src.type === "remote" ? src.db : dst.db;\n var transaction = db.transaction([IDBFS.DB_STORE_NAME], "readwrite");\n var store = transaction.objectStore(IDBFS.DB_STORE_NAME);\n function done(err2) {\n if (err2 && !errored) {\n errored = true;\n return callback(err2);\n }\n }\n transaction.onerror = transaction.onabort = (e3) => {\n done(e3.target.error);\n e3.preventDefault();\n };\n transaction.oncomplete = (e3) => {\n if (!errored) {\n callback(null);\n }\n };\n for (const path2 of create.sort()) {\n if (dst.type === "local") {\n IDBFS.loadRemoteEntry(store, path2, (err2, entry) => {\n if (err2) return done(err2);\n IDBFS.storeLocalEntry(path2, entry, done);\n });\n } else {\n IDBFS.loadLocalEntry(path2, (err2, entry) => {\n if (err2) return done(err2);\n IDBFS.storeRemoteEntry(store, path2, entry, done);\n });\n }\n }\n for (var path of remove.sort().reverse()) {\n if (dst.type === "local") {\n IDBFS.removeLocalEntry(path, done);\n } else {\n IDBFS.removeRemoteEntry(store, path, done);\n }\n }\n } };\n var ERRNO_CODES = { EPERM: 63, ENOENT: 44, ESRCH: 71, EINTR: 27, EIO: 29, ENXIO: 60, E2BIG: 1, ENOEXEC: 45, EBADF: 8, ECHILD: 12, EAGAIN: 6, EWOULDBLOCK: 6, ENOMEM: 48, EACCES: 2, EFAULT: 21, ENOTBLK: 105, EBUSY: 10, EEXIST: 20, EXDEV: 75, ENODEV: 43, ENOTDIR: 54, EISDIR: 31, EINVAL: 28, ENFILE: 41, EMFILE: 33, ENOTTY: 59, ETXTBSY: 74, EFBIG: 22, ENOSPC: 51, ESPIPE: 70, EROFS: 69, EMLINK: 34, EPIPE: 64, EDOM: 18, ERANGE: 68, ENOMSG: 49, EIDRM: 24, ECHRNG: 106, EL2NSYNC: 156, EL3HLT: 107, EL3RST: 108, ELNRNG: 109, EUNATCH: 110, ENOCSI: 111, EL2HLT: 112, EDEADLK: 16, ENOLCK: 46, EBADE: 113, EBADR: 114, EXFULL: 115, ENOANO: 104, EBADRQC: 103, EBADSLT: 102, EDEADLOCK: 16, EBFONT: 101, ENOSTR: 100, ENODATA: 116, ETIME: 117, ENOSR: 118, ENONET: 119, ENOPKG: 120, EREMOTE: 121, ENOLINK: 47, EADV: 122, ESRMNT: 123, ECOMM: 124, EPROTO: 65, EMULTIHOP: 36, EDOTDOT: 125, EBADMSG: 9, ENOTUNIQ: 126, EBADFD: 127, EREMCHG: 128, ELIBACC: 129, ELIBBAD: 130, ELIBSCN: 131, ELIBMAX: 132, ELIBEXEC: 133, ENOSYS: 52, ENOTEMPTY: 55, ENAMETOOLONG: 37, ELOOP: 32, EOPNOTSUPP: 138, EPFNOSUPPORT: 139, ECONNRESET: 15, ENOBUFS: 42, EAFNOSUPPORT: 5, EPROTOTYPE: 67, ENOTSOCK: 57, ENOPROTOOPT: 50, ESHUTDOWN: 140, ECONNREFUSED: 14, EADDRINUSE: 3, ECONNABORTED: 13, ENETUNREACH: 40, ENETDOWN: 38, ETIMEDOUT: 73, EHOSTDOWN: 142, EHOSTUNREACH: 23, EINPROGRESS: 26, EALREADY: 7, EDESTADDRREQ: 17, EMSGSIZE: 35, EPROTONOSUPPORT: 66, ESOCKTNOSUPPORT: 137, EADDRNOTAVAIL: 4, ENETRESET: 39, EISCONN: 30, ENOTCONN: 53, ETOOMANYREFS: 141, EUSERS: 136, EDQUOT: 19, ESTALE: 72, ENOTSUP: 138, ENOMEDIUM: 148, EILSEQ: 25, EOVERFLOW: 61, ECANCELED: 11, ENOTRECOVERABLE: 56, EOWNERDEAD: 62, ESTRPIPE: 135 };\n var NODEFS = { isWindows: false, staticInit() {\n NODEFS.isWindows = !!process.platform.match(/^win/);\n var flags2 = process.binding("constants")["fs"];\n NODEFS.flagsForNodeMap = { 1024: flags2["O_APPEND"], 64: flags2["O_CREAT"], 128: flags2["O_EXCL"], 256: flags2["O_NOCTTY"], 0: flags2["O_RDONLY"], 2: flags2["O_RDWR"], 4096: flags2["O_SYNC"], 512: flags2["O_TRUNC"], 1: flags2["O_WRONLY"], 131072: flags2["O_NOFOLLOW"] };\n }, convertNodeCode(e) {\n var code = e.code;\n return ERRNO_CODES[code];\n }, tryFSOperation(f2) {\n try {\n return f2();\n } catch (e) {\n if (!e.code) throw e;\n if (e.code === "UNKNOWN") throw new FS.ErrnoError(28);\n throw new FS.ErrnoError(NODEFS.convertNodeCode(e));\n }\n }, mount(mount) {\n return NODEFS.createNode(null, "/", NODEFS.getMode(mount.opts.root), 0);\n }, createNode(parent, name2, mode, dev) {\n if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) {\n throw new FS.ErrnoError(28);\n }\n var node = FS.createNode(parent, name2, mode);\n node.node_ops = NODEFS.node_ops;\n node.stream_ops = NODEFS.stream_ops;\n return node;\n }, getMode(path) {\n return NODEFS.tryFSOperation(() => {\n var mode = fs.lstatSync(path).mode;\n if (NODEFS.isWindows) {\n mode |= (mode & 292) >> 2;\n }\n return mode;\n });\n }, realPath(node) {\n var parts = [];\n while (node.parent !== node) {\n parts.push(node.name);\n node = node.parent;\n }\n parts.push(node.mount.opts.root);\n parts.reverse();\n return PATH.join(...parts);\n }, flagsForNode(flags2) {\n flags2 &= ~2097152;\n flags2 &= ~2048;\n flags2 &= ~32768;\n flags2 &= ~524288;\n flags2 &= ~65536;\n var newFlags = 0;\n for (var k2 in NODEFS.flagsForNodeMap) {\n if (flags2 & k2) {\n newFlags |= NODEFS.flagsForNodeMap[k2];\n flags2 ^= k2;\n }\n }\n if (flags2) {\n throw new FS.ErrnoError(28);\n }\n return newFlags;\n }, getattr(func2, node) {\n var stat = NODEFS.tryFSOperation(func2);\n if (NODEFS.isWindows) {\n if (!stat.blksize) {\n stat.blksize = 4096;\n }\n if (!stat.blocks) {\n stat.blocks = (stat.size + stat.blksize - 1) / stat.blksize | 0;\n }\n stat.mode |= (stat.mode & 292) >> 2;\n }\n return { dev: stat.dev, ino: node.id, mode: stat.mode, nlink: stat.nlink, uid: stat.uid, gid: stat.gid, rdev: stat.rdev, size: stat.size, atime: stat.atime, mtime: stat.mtime, ctime: stat.ctime, blksize: stat.blksize, blocks: stat.blocks };\n }, setattr(arg2, node, attr, chmod, utimes, truncate, stat) {\n NODEFS.tryFSOperation(() => {\n if (attr.mode !== void 0) {\n var mode = attr.mode;\n if (NODEFS.isWindows) {\n mode &= 384;\n }\n chmod(arg2, mode);\n node.mode = attr.mode;\n }\n if (typeof (attr.atime ?? attr.mtime) === "number") {\n var atime = new Date(attr.atime ?? stat(arg2).atime);\n var mtime = new Date(attr.mtime ?? stat(arg2).mtime);\n utimes(arg2, atime, mtime);\n }\n if (attr.size !== void 0) {\n truncate(arg2, attr.size);\n }\n });\n }, node_ops: { getattr(node) {\n var path = NODEFS.realPath(node);\n return NODEFS.getattr(() => fs.lstatSync(path), node);\n }, setattr(node, attr) {\n var path = NODEFS.realPath(node);\n if (attr.mode != null && attr.dontFollow) {\n throw new FS.ErrnoError(52);\n }\n NODEFS.setattr(path, node, attr, fs.chmodSync, fs.utimesSync, fs.truncateSync, fs.lstatSync);\n }, lookup(parent, name2) {\n var path = PATH.join2(NODEFS.realPath(parent), name2);\n var mode = NODEFS.getMode(path);\n return NODEFS.createNode(parent, name2, mode);\n }, mknod(parent, name2, mode, dev) {\n var node = NODEFS.createNode(parent, name2, mode, dev);\n var path = NODEFS.realPath(node);\n NODEFS.tryFSOperation(() => {\n if (FS.isDir(node.mode)) {\n fs.mkdirSync(path, node.mode);\n } else {\n fs.writeFileSync(path, "", { mode: node.mode });\n }\n });\n return node;\n }, rename(oldNode, newDir, newName) {\n var oldPath = NODEFS.realPath(oldNode);\n var newPath = PATH.join2(NODEFS.realPath(newDir), newName);\n try {\n FS.unlink(newPath);\n } catch (e) {\n }\n NODEFS.tryFSOperation(() => fs.renameSync(oldPath, newPath));\n oldNode.name = newName;\n }, unlink(parent, name2) {\n var path = PATH.join2(NODEFS.realPath(parent), name2);\n NODEFS.tryFSOperation(() => fs.unlinkSync(path));\n }, rmdir(parent, name2) {\n var path = PATH.join2(NODEFS.realPath(parent), name2);\n NODEFS.tryFSOperation(() => fs.rmdirSync(path));\n }, readdir(node) {\n var path = NODEFS.realPath(node);\n return NODEFS.tryFSOperation(() => fs.readdirSync(path));\n }, symlink(parent, newName, oldPath) {\n var newPath = PATH.join2(NODEFS.realPath(parent), newName);\n NODEFS.tryFSOperation(() => fs.symlinkSync(oldPath, newPath));\n }, readlink(node) {\n var path = NODEFS.realPath(node);\n return NODEFS.tryFSOperation(() => fs.readlinkSync(path));\n }, statfs(path) {\n var stats = NODEFS.tryFSOperation(() => fs.statfsSync(path));\n stats.frsize = stats.bsize;\n return stats;\n } }, stream_ops: { getattr(stream) {\n return NODEFS.getattr(() => fs.fstatSync(stream.nfd), stream.node);\n }, setattr(stream, attr) {\n NODEFS.setattr(stream.nfd, stream.node, attr, fs.fchmodSync, fs.futimesSync, fs.ftruncateSync, fs.fstatSync);\n }, open(stream) {\n var path = NODEFS.realPath(stream.node);\n NODEFS.tryFSOperation(() => {\n stream.shared.refcount = 1;\n stream.nfd = fs.openSync(path, NODEFS.flagsForNode(stream.flags));\n });\n }, close(stream) {\n NODEFS.tryFSOperation(() => {\n if (stream.nfd && --stream.shared.refcount === 0) {\n fs.closeSync(stream.nfd);\n }\n });\n }, dup(stream) {\n stream.shared.refcount++;\n }, read(stream, buffer, offset, length, position) {\n return NODEFS.tryFSOperation(() => fs.readSync(stream.nfd, buffer, offset, length, position));\n }, write(stream, buffer, offset, length, position) {\n return NODEFS.tryFSOperation(() => fs.writeSync(stream.nfd, buffer, offset, length, position));\n }, llseek(stream, offset, whence) {\n var position = offset;\n if (whence === 1) {\n position += stream.position;\n } else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) {\n NODEFS.tryFSOperation(() => {\n var stat = fs.fstatSync(stream.nfd);\n position += stat.size;\n });\n }\n }\n if (position < 0) {\n throw new FS.ErrnoError(28);\n }\n return position;\n }, mmap(stream, length, position, prot, flags2) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n var ptr2 = mmapAlloc(length);\n NODEFS.stream_ops.read(stream, HEAP8, ptr2, length, position);\n return { ptr: ptr2, allocated: true };\n }, msync(stream, buffer, offset, length, mmapFlags) {\n NODEFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n return 0;\n } } };\n var WORKERFS = { DIR_MODE: 16895, FILE_MODE: 33279, reader: null, mount(mount) {\n assert(ENVIRONMENT_IS_WORKER);\n WORKERFS.reader ??= new FileReaderSync();\n var root = WORKERFS.createNode(null, "/", WORKERFS.DIR_MODE, 0);\n var createdParents = {};\n function ensureParent(path) {\n var parts = path.split("/");\n var parent = root;\n for (var i2 = 0; i2 < parts.length - 1; i2++) {\n var curr = parts.slice(0, i2 + 1).join("/");\n createdParents[curr] ||= WORKERFS.createNode(parent, parts[i2], WORKERFS.DIR_MODE, 0);\n parent = createdParents[curr];\n }\n return parent;\n }\n function base(path) {\n var parts = path.split("/");\n return parts[parts.length - 1];\n }\n for (var file of mount.opts["files"] || []) {\n WORKERFS.createNode(ensureParent(file.name), base(file.name), WORKERFS.FILE_MODE, 0, file, file.lastModifiedDate);\n }\n for (var obj of mount.opts["blobs"] || []) {\n WORKERFS.createNode(ensureParent(obj["name"]), base(obj["name"]), WORKERFS.FILE_MODE, 0, obj["data"]);\n }\n for (var pack of mount.opts["packages"] || []) {\n for (var file of pack["metadata"].files) {\n var name2 = file.filename.slice(1);\n WORKERFS.createNode(ensureParent(name2), base(name2), WORKERFS.FILE_MODE, 0, pack["blob"].slice(file.start, file.end));\n }\n }\n return root;\n }, createNode(parent, name2, mode, dev, contents, mtime) {\n var node = FS.createNode(parent, name2, mode);\n node.mode = mode;\n node.node_ops = WORKERFS.node_ops;\n node.stream_ops = WORKERFS.stream_ops;\n node.atime = node.mtime = node.ctime = (mtime || /* @__PURE__ */ new Date()).getTime();\n assert(WORKERFS.FILE_MODE !== WORKERFS.DIR_MODE);\n if (mode === WORKERFS.FILE_MODE) {\n node.size = contents.size;\n node.contents = contents;\n } else {\n node.size = 4096;\n node.contents = {};\n }\n if (parent) {\n parent.contents[name2] = node;\n }\n return node;\n }, node_ops: { getattr(node) {\n return { dev: 1, ino: node.id, mode: node.mode, nlink: 1, uid: 0, gid: 0, rdev: 0, size: node.size, atime: new Date(node.atime), mtime: new Date(node.mtime), ctime: new Date(node.ctime), blksize: 4096, blocks: Math.ceil(node.size / 4096) };\n }, setattr(node, attr) {\n for (const key of ["mode", "atime", "mtime", "ctime"]) {\n if (attr[key] != null) {\n node[key] = attr[key];\n }\n }\n }, lookup(parent, name2) {\n throw new FS.ErrnoError(44);\n }, mknod(parent, name2, mode, dev) {\n throw new FS.ErrnoError(63);\n }, rename(oldNode, newDir, newName) {\n throw new FS.ErrnoError(63);\n }, unlink(parent, name2) {\n throw new FS.ErrnoError(63);\n }, rmdir(parent, name2) {\n throw new FS.ErrnoError(63);\n }, readdir(node) {\n var entries = [".", ".."];\n for (var key of Object.keys(node.contents)) {\n entries.push(key);\n }\n return entries;\n }, symlink(parent, newName, oldPath) {\n throw new FS.ErrnoError(63);\n } }, stream_ops: { read(stream, buffer, offset, length, position) {\n if (position >= stream.node.size) return 0;\n var chunk = stream.node.contents.slice(position, position + length);\n var ab = WORKERFS.reader.readAsArrayBuffer(chunk);\n buffer.set(new Uint8Array(ab), offset);\n return chunk.size;\n }, write(stream, buffer, offset, length, position) {\n throw new FS.ErrnoError(29);\n }, llseek(stream, offset, whence) {\n var position = offset;\n if (whence === 1) {\n position += stream.position;\n } else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) {\n position += stream.node.size;\n }\n }\n if (position < 0) {\n throw new FS.ErrnoError(28);\n }\n return position;\n } } };\n var PROXYFS = { mount(mount) {\n return PROXYFS.createNode(null, "/", mount.opts.fs.lstat(mount.opts.root).mode, 0);\n }, createNode(parent, name2, mode, dev) {\n if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) {\n throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\n }\n var node = FS.createNode(parent, name2, mode);\n node.node_ops = PROXYFS.node_ops;\n node.stream_ops = PROXYFS.stream_ops;\n return node;\n }, realPath(node) {\n var parts = [];\n while (node.parent !== node) {\n parts.push(node.name);\n node = node.parent;\n }\n parts.push(node.mount.opts.root);\n parts.reverse();\n return PATH.join(...parts);\n }, node_ops: { getattr(node) {\n var path = PROXYFS.realPath(node);\n var stat;\n try {\n stat = node.mount.opts.fs.lstat(path);\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n }\n return { dev: stat.dev, ino: stat.ino, mode: stat.mode, nlink: stat.nlink, uid: stat.uid, gid: stat.gid, rdev: stat.rdev, size: stat.size, atime: stat.atime, mtime: stat.mtime, ctime: stat.ctime, blksize: stat.blksize, blocks: stat.blocks };\n }, setattr(node, attr) {\n var path = PROXYFS.realPath(node);\n try {\n if (attr.mode !== void 0) {\n node.mount.opts.fs.chmod(path, attr.mode);\n node.mode = attr.mode;\n }\n if (attr.atime || attr.mtime) {\n var atime = new Date(attr.atime || attr.mtime);\n var mtime = new Date(attr.mtime || attr.atime);\n node.mount.opts.fs.utime(path, atime, mtime);\n }\n if (attr.size !== void 0) {\n node.mount.opts.fs.truncate(path, attr.size);\n }\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n }\n }, lookup(parent, name2) {\n try {\n var path = PATH.join2(PROXYFS.realPath(parent), name2);\n var mode = parent.mount.opts.fs.lstat(path).mode;\n var node = PROXYFS.createNode(parent, name2, mode);\n return node;\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n }\n }, mknod(parent, name2, mode, dev) {\n var node = PROXYFS.createNode(parent, name2, mode, dev);\n var path = PROXYFS.realPath(node);\n try {\n if (FS.isDir(node.mode)) {\n node.mount.opts.fs.mkdir(path, node.mode);\n } else {\n node.mount.opts.fs.writeFile(path, "", { mode: node.mode });\n }\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n }\n return node;\n }, rename(oldNode, newDir, newName) {\n var oldPath = PROXYFS.realPath(oldNode);\n var newPath = PATH.join2(PROXYFS.realPath(newDir), newName);\n try {\n oldNode.mount.opts.fs.rename(oldPath, newPath);\n oldNode.name = newName;\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n }\n }, unlink(parent, name2) {\n var path = PATH.join2(PROXYFS.realPath(parent), name2);\n try {\n parent.mount.opts.fs.unlink(path);\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n }\n }, rmdir(parent, name2) {\n var path = PATH.join2(PROXYFS.realPath(parent), name2);\n try {\n parent.mount.opts.fs.rmdir(path);\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n }\n }, readdir(node) {\n var path = PROXYFS.realPath(node);\n try {\n return node.mount.opts.fs.readdir(path);\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n }\n }, symlink(parent, newName, oldPath) {\n var newPath = PATH.join2(PROXYFS.realPath(parent), newName);\n try {\n parent.mount.opts.fs.symlink(oldPath, newPath);\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n }\n }, readlink(node) {\n var path = PROXYFS.realPath(node);\n try {\n return node.mount.opts.fs.readlink(path);\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n }\n } }, stream_ops: { open(stream) {\n var path = PROXYFS.realPath(stream.node);\n try {\n stream.nfd = stream.node.mount.opts.fs.open(path, stream.flags);\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n }\n }, close(stream) {\n try {\n stream.node.mount.opts.fs.close(stream.nfd);\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n }\n }, read(stream, buffer, offset, length, position) {\n try {\n return stream.node.mount.opts.fs.read(stream.nfd, buffer, offset, length, position);\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n }\n }, write(stream, buffer, offset, length, position) {\n try {\n return stream.node.mount.opts.fs.write(stream.nfd, buffer, offset, length, position);\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n }\n }, llseek(stream, offset, whence) {\n var position = offset;\n if (whence === 1) {\n position += stream.position;\n } else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) {\n try {\n var stat = stream.node.node_ops.getattr(stream.node);\n position += stat.size;\n } catch (e) {\n throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n }\n }\n }\n if (position < 0) {\n throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\n }\n return position;\n } } };\n var FS_createDataFile = (...args2) => FS.createDataFile(...args2);\n var getUniqueRunDependency = (id) => id;\n var runDependencies = 0;\n var dependenciesFulfilled = null;\n var removeRunDependency = (id) => {\n runDependencies--;\n Module["monitorRunDependencies"]?.(runDependencies);\n if (runDependencies == 0) {\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n };\n var addRunDependency = (id) => {\n runDependencies++;\n Module["monitorRunDependencies"]?.(runDependencies);\n };\n var FS_handledByPreloadPlugin = async (byteArray, fullname) => {\n if (typeof Browser != "undefined") Browser.init();\n for (var plugin of preloadPlugins) {\n if (plugin["canHandle"](fullname)) {\n return plugin["handle"](byteArray, fullname);\n }\n }\n return byteArray;\n };\n var FS_preloadFile = async (parent, name2, url2, canRead, canWrite, dontCreateFile, canOwn, preFinish) => {\n var fullname = name2 ? PATH_FS.resolve(PATH.join2(parent, name2)) : parent;\n var dep = getUniqueRunDependency(`cp ${fullname}`);\n addRunDependency(dep);\n try {\n var byteArray = url2;\n if (typeof url2 == "string") {\n byteArray = await asyncLoad(url2);\n }\n byteArray = await FS_handledByPreloadPlugin(byteArray, fullname);\n preFinish?.();\n if (!dontCreateFile) {\n FS_createDataFile(parent, name2, byteArray, canRead, canWrite, canOwn);\n }\n } finally {\n removeRunDependency(dep);\n }\n };\n var FS_createPreloadedFile = (parent, name2, url2, canRead, canWrite, onload2, onerror2, dontCreateFile, canOwn, preFinish) => {\n FS_preloadFile(parent, name2, url2, canRead, canWrite, dontCreateFile, canOwn, preFinish).then(onload2).catch(onerror2);\n };\n var LZ4 = { DIR_MODE: 16895, FILE_MODE: 33279, CHUNK_SIZE: -1, codec: null, init() {\n if (LZ4.codec) return;\n LZ4.codec = (() => {\n var MiniLZ4 = (function() {\n var exports = {};\n exports.uncompress = function(input, output, sIdx, eIdx) {\n sIdx = sIdx || 0;\n eIdx = eIdx || input.length - sIdx;\n for (var i2 = sIdx, n = eIdx, j2 = 0; i2 < n; ) {\n var token = input[i2++];\n var literals_length = token >> 4;\n if (literals_length > 0) {\n var l = literals_length + 240;\n while (l === 255) {\n l = input[i2++];\n literals_length += l;\n }\n var end = i2 + literals_length;\n while (i2 < end) output[j2++] = input[i2++];\n if (i2 === n) return j2;\n }\n var offset = input[i2++] | input[i2++] << 8;\n if (offset === 0) return j2;\n if (offset > j2) return -(i2 - 2);\n var match_length = token & 15;\n var l = match_length + 240;\n while (l === 255) {\n l = input[i2++];\n match_length += l;\n }\n var pos = j2 - offset;\n var end = j2 + match_length + 4;\n while (j2 < end) output[j2++] = output[pos++];\n }\n return j2;\n };\n var maxInputSize = 2113929216, minMatch = 4, hashLog = 16, hashShift = minMatch * 8 - hashLog, hashSize = 1 << hashLog, copyLength = 8, lastLiterals = 5, mfLimit = copyLength + minMatch, skipStrength = 6, mlBits = 4, mlMask = (1 << mlBits) - 1, runBits = 8 - mlBits, runMask = (1 << runBits) - 1, hasher = 2654435761;\n assert(hashShift === 16);\n var hashTable = new Int16Array(1 << 16);\n var empty = new Int16Array(hashTable.length);\n exports.compressBound = function(isize) {\n return isize > maxInputSize ? 0 : isize + isize / 255 + 16 | 0;\n };\n exports.compress = function(src, dst, sIdx, eIdx) {\n hashTable.set(empty);\n return compressBlock(src, dst, 0, sIdx || 0, eIdx || dst.length);\n };\n function compressBlock(src, dst, pos, sIdx, eIdx) {\n var dpos = sIdx;\n var dlen = eIdx - sIdx;\n var anchor = 0;\n if (src.length >= maxInputSize) throw new Error("input too large");\n if (src.length > mfLimit) {\n var n = exports.compressBound(src.length);\n if (dlen < n) throw Error("output too small: " + dlen + " < " + n);\n var step = 1, findMatchAttempts = (1 << skipStrength) + 3, srcLength = src.length - mfLimit;\n while (pos + minMatch < srcLength) {\n var sequenceLowBits = src[pos + 1] << 8 | src[pos];\n var sequenceHighBits = src[pos + 3] << 8 | src[pos + 2];\n var hash = Math.imul(sequenceLowBits | sequenceHighBits << 16, hasher) >>> hashShift;\n var ref = hashTable[hash] - 1;\n hashTable[hash] = pos + 1;\n if (ref < 0 || pos - ref >>> 16 > 0 || ((src[ref + 3] << 8 | src[ref + 2]) != sequenceHighBits || (src[ref + 1] << 8 | src[ref]) != sequenceLowBits)) {\n step = findMatchAttempts++ >> skipStrength;\n pos += step;\n continue;\n }\n findMatchAttempts = (1 << skipStrength) + 3;\n var literals_length = pos - anchor;\n var offset = pos - ref;\n pos += minMatch;\n ref += minMatch;\n var match_length = pos;\n while (pos < srcLength && src[pos] == src[ref]) {\n pos++;\n ref++;\n }\n match_length = pos - match_length;\n var token = match_length < mlMask ? match_length : mlMask;\n if (literals_length >= runMask) {\n dst[dpos++] = (runMask << mlBits) + token;\n for (var len = literals_length - runMask; len > 254; len -= 255) {\n dst[dpos++] = 255;\n }\n dst[dpos++] = len;\n } else {\n dst[dpos++] = (literals_length << mlBits) + token;\n }\n for (var i2 = 0; i2 < literals_length; i2++) {\n dst[dpos++] = src[anchor + i2];\n }\n dst[dpos++] = offset;\n dst[dpos++] = offset >> 8;\n if (match_length >= mlMask) {\n match_length -= mlMask;\n while (match_length >= 255) {\n match_length -= 255;\n dst[dpos++] = 255;\n }\n dst[dpos++] = match_length;\n }\n anchor = pos;\n }\n }\n if (anchor == 0) return 0;\n literals_length = src.length - anchor;\n if (literals_length >= runMask) {\n dst[dpos++] = runMask << mlBits;\n for (var ln = literals_length - runMask; ln > 254; ln -= 255) {\n dst[dpos++] = 255;\n }\n dst[dpos++] = ln;\n } else {\n dst[dpos++] = literals_length << mlBits;\n }\n pos = anchor;\n while (pos < src.length) {\n dst[dpos++] = src[pos++];\n }\n return dpos;\n }\n exports.CHUNK_SIZE = 2048;\n exports.compressPackage = function(data2, verify) {\n if (verify) {\n var temp = new Uint8Array(exports.CHUNK_SIZE);\n }\n assert(data2 instanceof ArrayBuffer);\n data2 = new Uint8Array(data2);\n console.log("compressing package of size " + data2.length);\n var compressedChunks = [];\n var successes = [];\n var offset = 0;\n var total = 0;\n while (offset < data2.length) {\n var chunk = data2.subarray(offset, offset + exports.CHUNK_SIZE);\n offset += exports.CHUNK_SIZE;\n var bound = exports.compressBound(chunk.length);\n var compressed = new Uint8Array(bound);\n var compressedSize = exports.compress(chunk, compressed);\n if (compressedSize > 0) {\n assert(compressedSize <= bound);\n compressed = compressed.subarray(0, compressedSize);\n compressedChunks.push(compressed);\n total += compressedSize;\n successes.push(1);\n if (verify) {\n var back = exports.uncompress(compressed, temp);\n assert(back === chunk.length, [back, chunk.length]);\n for (var i2 = 0; i2 < chunk.length; i2++) {\n assert(chunk[i2] === temp[i2]);\n }\n }\n } else {\n assert(compressedSize === 0);\n compressedChunks.push(chunk);\n total += chunk.length;\n successes.push(0);\n }\n }\n data2 = null;\n var compressedData = { data: new Uint8Array(total + exports.CHUNK_SIZE * 2), cachedOffset: total, cachedIndexes: [-1, -1], cachedChunks: [null, null], offsets: [], sizes: [], successes };\n offset = 0;\n for (var i2 = 0; i2 < compressedChunks.length; i2++) {\n compressedData["data"].set(compressedChunks[i2], offset);\n compressedData["offsets"][i2] = offset;\n compressedData["sizes"][i2] = compressedChunks[i2].length;\n offset += compressedChunks[i2].length;\n }\n console.log("compressed package into " + [compressedData["data"].length]);\n assert(offset === total);\n return compressedData;\n };\n assert(exports.CHUNK_SIZE < 1 << 15);\n return exports;\n })();\n if (typeof module != "undefined") {\n module.exports = MiniLZ4;\n }\n return MiniLZ4;\n })();\n LZ4.CHUNK_SIZE = LZ4.codec.CHUNK_SIZE;\n }, loadPackage(pack, preloadPlugin) {\n LZ4.init();\n var compressedData = pack["compressedData"] || LZ4.codec.compressPackage(pack["data"]);\n assert(compressedData["cachedIndexes"].length === compressedData["cachedChunks"].length);\n for (var i2 = 0; i2 < compressedData["cachedIndexes"].length; i2++) {\n compressedData["cachedIndexes"][i2] = -1;\n compressedData["cachedChunks"][i2] = compressedData["data"].subarray(compressedData["cachedOffset"] + i2 * LZ4.CHUNK_SIZE, compressedData["cachedOffset"] + (i2 + 1) * LZ4.CHUNK_SIZE);\n assert(compressedData["cachedChunks"][i2].length === LZ4.CHUNK_SIZE);\n }\n for (var file of pack["metadata"].files) {\n var dir = PATH.dirname(file.filename);\n var name2 = PATH.basename(file.filename);\n FS.createPath("", dir, true, true);\n var parent = FS.analyzePath(dir).object;\n LZ4.createNode(parent, name2, LZ4.FILE_MODE, 0, { compressedData, start: file.start, end: file.end });\n }\n if (preloadPlugin) {\n Browser.init();\n for (var file of pack["metadata"].files) {\n var fullname = file.filename;\n for (var plugin of preloadPlugins) {\n if (plugin["canHandle"](fullname)) {\n var dep = getUniqueRunDependency("fp " + fullname);\n addRunDependency(dep);\n var finish = () => removeRunDependency(dep);\n var byteArray = FS.readFile(fullname);\n plugin["handle"](byteArray, fullname).then(finish).catch(finish);\n break;\n }\n }\n }\n }\n }, createNode(parent, name2, mode, dev, contents, mtime) {\n var node = FS.createNode(parent, name2, mode);\n node.mode = mode;\n node.node_ops = LZ4.node_ops;\n node.stream_ops = LZ4.stream_ops;\n this.atime = this.mtime = this.ctime = (mtime || /* @__PURE__ */ new Date()).getTime();\n assert(LZ4.FILE_MODE !== LZ4.DIR_MODE);\n if (mode === LZ4.FILE_MODE) {\n node.size = contents.end - contents.start;\n node.contents = contents;\n } else {\n node.size = 4096;\n node.contents = {};\n }\n if (parent) {\n parent.contents[name2] = node;\n }\n return node;\n }, node_ops: { getattr(node) {\n return { dev: 1, ino: node.id, mode: node.mode, nlink: 1, uid: 0, gid: 0, rdev: 0, size: node.size, atime: new Date(node.atime), mtime: new Date(node.mtime), ctime: new Date(node.ctime), blksize: 4096, blocks: Math.ceil(node.size / 4096) };\n }, setattr(node, attr) {\n for (const key of ["mode", "atime", "mtime", "ctime"]) {\n if (attr[key]) {\n node[key] = attr[key];\n }\n }\n }, lookup(parent, name2) {\n throw new FS.ErrnoError(44);\n }, mknod(parent, name2, mode, dev) {\n throw new FS.ErrnoError(63);\n }, rename(oldNode, newDir, newName) {\n throw new FS.ErrnoError(63);\n }, unlink(parent, name2) {\n throw new FS.ErrnoError(63);\n }, rmdir(parent, name2) {\n throw new FS.ErrnoError(63);\n }, readdir(node) {\n throw new FS.ErrnoError(63);\n }, symlink(parent, newName, oldPath) {\n throw new FS.ErrnoError(63);\n } }, stream_ops: { read(stream, buffer, offset, length, position) {\n length = Math.min(length, stream.node.size - position);\n if (length <= 0) return 0;\n var contents = stream.node.contents;\n var compressedData = contents.compressedData;\n var written = 0;\n while (written < length) {\n var start2 = contents.start + position + written;\n var desired = length - written;\n var chunkIndex = Math.floor(start2 / LZ4.CHUNK_SIZE);\n var compressedStart = compressedData["offsets"][chunkIndex];\n var compressedSize = compressedData["sizes"][chunkIndex];\n var currChunk;\n if (compressedData["successes"][chunkIndex]) {\n var found = compressedData["cachedIndexes"].indexOf(chunkIndex);\n if (found >= 0) {\n currChunk = compressedData["cachedChunks"][found];\n } else {\n compressedData["cachedIndexes"].pop();\n compressedData["cachedIndexes"].unshift(chunkIndex);\n currChunk = compressedData["cachedChunks"].pop();\n compressedData["cachedChunks"].unshift(currChunk);\n if (compressedData["debug"]) {\n out("decompressing chunk " + chunkIndex);\n Module["decompressedChunks"] = (Module["decompressedChunks"] || 0) + 1;\n }\n var compressed = compressedData["data"].subarray(compressedStart, compressedStart + compressedSize);\n var originalSize = LZ4.codec.uncompress(compressed, currChunk);\n if (chunkIndex < compressedData["successes"].length - 1) assert(originalSize === LZ4.CHUNK_SIZE);\n }\n } else {\n currChunk = compressedData["data"].subarray(compressedStart, compressedStart + LZ4.CHUNK_SIZE);\n }\n var startInChunk = start2 % LZ4.CHUNK_SIZE;\n var endInChunk = Math.min(startInChunk + desired, LZ4.CHUNK_SIZE);\n buffer.set(currChunk.subarray(startInChunk, endInChunk), offset + written);\n var currWritten = endInChunk - startInChunk;\n written += currWritten;\n }\n return written;\n }, write(stream, buffer, offset, length, position) {\n throw new FS.ErrnoError(29);\n }, llseek(stream, offset, whence) {\n var position = offset;\n if (whence === 1) {\n position += stream.position;\n } else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) {\n position += stream.node.size;\n }\n }\n if (position < 0) {\n throw new FS.ErrnoError(28);\n }\n return position;\n } } };\n var FS = { root: null, mounts: [], devices: {}, streams: [], nextInode: 1, nameTable: null, currentPath: "/", initialized: false, ignorePermissions: true, trackingDelegate: {}, filesystems: null, syncFSRequests: 0, ErrnoError: class {\n name = "ErrnoError";\n constructor(errno) {\n this.errno = errno;\n }\n }, FSStream: class {\n shared = {};\n get object() {\n return this.node;\n }\n set object(val) {\n this.node = val;\n }\n get isRead() {\n return (this.flags & 2097155) !== 1;\n }\n get isWrite() {\n return (this.flags & 2097155) !== 0;\n }\n get isAppend() {\n return this.flags & 1024;\n }\n get flags() {\n return this.shared.flags;\n }\n set flags(val) {\n this.shared.flags = val;\n }\n get position() {\n return this.shared.position;\n }\n set position(val) {\n this.shared.position = val;\n }\n }, FSNode: class {\n node_ops = {};\n stream_ops = {};\n readMode = 292 | 73;\n writeMode = 146;\n mounted = null;\n constructor(parent, name2, mode, rdev) {\n if (!parent) {\n parent = this;\n }\n this.parent = parent;\n this.mount = parent.mount;\n this.id = FS.nextInode++;\n this.name = name2;\n this.mode = mode;\n this.rdev = rdev;\n this.atime = this.mtime = this.ctime = Date.now();\n }\n get read() {\n return (this.mode & this.readMode) === this.readMode;\n }\n set read(val) {\n val ? this.mode |= this.readMode : this.mode &= ~this.readMode;\n }\n get write() {\n return (this.mode & this.writeMode) === this.writeMode;\n }\n set write(val) {\n val ? this.mode |= this.writeMode : this.mode &= ~this.writeMode;\n }\n get isFolder() {\n return FS.isDir(this.mode);\n }\n get isDevice() {\n return FS.isChrdev(this.mode);\n }\n }, lookupPath(path, opts = {}) {\n if (!path) {\n throw new FS.ErrnoError(44);\n }\n opts.follow_mount ??= true;\n if (!PATH.isAbs(path)) {\n path = FS.cwd() + "/" + path;\n }\n linkloop: for (var nlinks = 0; nlinks < 40; nlinks++) {\n var parts = path.split("/").filter((p2) => !!p2);\n var current = FS.root;\n var current_path = "/";\n for (var i2 = 0; i2 < parts.length; i2++) {\n var islast = i2 === parts.length - 1;\n if (islast && opts.parent) {\n break;\n }\n if (parts[i2] === ".") {\n continue;\n }\n if (parts[i2] === "..") {\n current_path = PATH.dirname(current_path);\n if (FS.isRoot(current)) {\n path = current_path + "/" + parts.slice(i2 + 1).join("/");\n nlinks--;\n continue linkloop;\n } else {\n current = current.parent;\n }\n continue;\n }\n current_path = PATH.join2(current_path, parts[i2]);\n try {\n current = FS.lookupNode(current, parts[i2]);\n } catch (e) {\n if (e?.errno === 44 && islast && opts.noent_okay) {\n return { path: current_path };\n }\n throw e;\n }\n if (FS.isMountpoint(current) && (!islast || opts.follow_mount)) {\n current = current.mounted.root;\n }\n if (FS.isLink(current.mode) && (!islast || opts.follow)) {\n if (!current.node_ops.readlink) {\n throw new FS.ErrnoError(52);\n }\n var link = current.node_ops.readlink(current);\n if (!PATH.isAbs(link)) {\n link = PATH.dirname(current_path) + "/" + link;\n }\n path = link + "/" + parts.slice(i2 + 1).join("/");\n continue linkloop;\n }\n }\n return { path: current_path, node: current };\n }\n throw new FS.ErrnoError(32);\n }, getPath(node) {\n var path;\n while (true) {\n if (FS.isRoot(node)) {\n var mount = node.mount.mountpoint;\n if (!path) return mount;\n return mount[mount.length - 1] !== "/" ? `${mount}/${path}` : mount + path;\n }\n path = path ? `${node.name}/${path}` : node.name;\n node = node.parent;\n }\n }, hashName(parentid, name2) {\n var hash = 0;\n for (var i2 = 0; i2 < name2.length; i2++) {\n hash = (hash << 5) - hash + name2.charCodeAt(i2) | 0;\n }\n return (parentid + hash >>> 0) % FS.nameTable.length;\n }, hashAddNode(node) {\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n }, hashRemoveNode(node) {\n var hash = FS.hashName(node.parent.id, node.name);\n if (FS.nameTable[hash] === node) {\n FS.nameTable[hash] = node.name_next;\n } else {\n var current = FS.nameTable[hash];\n while (current) {\n if (current.name_next === node) {\n current.name_next = node.name_next;\n break;\n }\n current = current.name_next;\n }\n }\n }, lookupNode(parent, name2) {\n var errCode = FS.mayLookup(parent);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n var hash = FS.hashName(parent.id, name2);\n for (var node = FS.nameTable[hash]; node; node = node.name_next) {\n var nodeName = node.name;\n if (node.parent.id === parent.id && nodeName === name2) {\n return node;\n }\n }\n return FS.lookup(parent, name2);\n }, createNode(parent, name2, mode, rdev) {\n var node = new FS.FSNode(parent, name2, mode, rdev);\n FS.hashAddNode(node);\n return node;\n }, destroyNode(node) {\n FS.hashRemoveNode(node);\n }, isRoot(node) {\n return node === node.parent;\n }, isMountpoint(node) {\n return !!node.mounted;\n }, isFile(mode) {\n return (mode & 61440) === 32768;\n }, isDir(mode) {\n return (mode & 61440) === 16384;\n }, isLink(mode) {\n return (mode & 61440) === 40960;\n }, isChrdev(mode) {\n return (mode & 61440) === 8192;\n }, isBlkdev(mode) {\n return (mode & 61440) === 24576;\n }, isFIFO(mode) {\n return (mode & 61440) === 4096;\n }, isSocket(mode) {\n return (mode & 49152) === 49152;\n }, flagsToPermissionString(flag) {\n var perms = ["r", "w", "rw"][flag & 3];\n if (flag & 512) {\n perms += "w";\n }\n return perms;\n }, nodePermissions(node, perms) {\n if (FS.ignorePermissions) {\n return 0;\n }\n if (perms.includes("r") && !(node.mode & 292)) {\n return 2;\n }\n if (perms.includes("w") && !(node.mode & 146)) {\n return 2;\n }\n if (perms.includes("x") && !(node.mode & 73)) {\n return 2;\n }\n return 0;\n }, mayLookup(dir) {\n if (!FS.isDir(dir.mode)) return 54;\n var errCode = FS.nodePermissions(dir, "x");\n if (errCode) return errCode;\n if (!dir.node_ops.lookup) return 2;\n return 0;\n }, mayCreate(dir, name2) {\n if (!FS.isDir(dir.mode)) {\n return 54;\n }\n try {\n var node = FS.lookupNode(dir, name2);\n return 20;\n } catch (e) {\n }\n return FS.nodePermissions(dir, "wx");\n }, mayDelete(dir, name2, isdir) {\n var node;\n try {\n node = FS.lookupNode(dir, name2);\n } catch (e) {\n return e.errno;\n }\n var errCode = FS.nodePermissions(dir, "wx");\n if (errCode) {\n return errCode;\n }\n if (isdir) {\n if (!FS.isDir(node.mode)) {\n return 54;\n }\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {\n return 10;\n }\n } else if (FS.isDir(node.mode)) {\n return 31;\n }\n return 0;\n }, mayOpen(node, flags2) {\n if (!node) {\n return 44;\n }\n if (FS.isLink(node.mode)) {\n return 32;\n }\n var mode = FS.flagsToPermissionString(flags2);\n if (FS.isDir(node.mode)) {\n if (mode !== "r" || flags2 & (512 | 64)) {\n return 31;\n }\n }\n return FS.nodePermissions(node, mode);\n }, checkOpExists(op, err2) {\n if (!op) {\n throw new FS.ErrnoError(err2);\n }\n return op;\n }, MAX_OPEN_FDS: 4096, nextfd() {\n for (var fd = 0; fd <= FS.MAX_OPEN_FDS; fd++) {\n if (!FS.streams[fd]) {\n return fd;\n }\n }\n throw new FS.ErrnoError(33);\n }, getStreamChecked(fd) {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n return stream;\n }, getStream: (fd) => FS.streams[fd], createStream(stream, fd = -1) {\n stream = Object.assign(new FS.FSStream(), stream);\n if (fd == -1) {\n fd = FS.nextfd();\n }\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n }, closeStream(fd) {\n FS.streams[fd] = null;\n }, dupStream(origStream, fd = -1) {\n var stream = FS.createStream(origStream, fd);\n stream.stream_ops?.dup?.(stream);\n return stream;\n }, doSetAttr(stream, node, attr) {\n var setattr = stream?.stream_ops.setattr;\n var arg2 = setattr ? stream : node;\n setattr ??= node.node_ops.setattr;\n FS.checkOpExists(setattr, 63);\n setattr(arg2, attr);\n }, chrdev_stream_ops: { open(stream) {\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n stream.stream_ops.open?.(stream);\n }, llseek() {\n throw new FS.ErrnoError(70);\n } }, major: (dev) => dev >> 8, minor: (dev) => dev & 255, makedev: (ma, mi) => ma << 8 | mi, registerDevice(dev, ops) {\n FS.devices[dev] = { stream_ops: ops };\n }, getDevice: (dev) => FS.devices[dev], getMounts(mount) {\n var mounts = [];\n var check = [mount];\n while (check.length) {\n var m = check.pop();\n mounts.push(m);\n check.push(...m.mounts);\n }\n return mounts;\n }, syncfs(populate, callback) {\n if (typeof populate == "function") {\n callback = populate;\n populate = false;\n }\n FS.syncFSRequests++;\n if (FS.syncFSRequests > 1) {\n err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);\n }\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n function doCallback(errCode) {\n FS.syncFSRequests--;\n return callback(errCode);\n }\n function done(errCode) {\n if (errCode) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(errCode);\n }\n return;\n }\n if (++completed >= mounts.length) {\n doCallback(null);\n }\n }\n for (var mount of mounts) {\n if (mount.type.syncfs) {\n mount.type.syncfs(mount, populate, done);\n } else {\n done(null);\n }\n }\n }, mount(type, opts, mountpoint) {\n var root = mountpoint === "/";\n var pseudo = !mountpoint;\n var node;\n if (root && FS.root) {\n throw new FS.ErrnoError(10);\n } else if (!root && !pseudo) {\n var lookup = FS.lookupPath(mountpoint, { follow_mount: false });\n mountpoint = lookup.path;\n node = lookup.node;\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n if (!FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n }\n var mount = { type, opts, mountpoint, mounts: [] };\n var mountRoot = type.mount(mount);\n mountRoot.mount = mount;\n mount.root = mountRoot;\n if (root) {\n FS.root = mountRoot;\n } else if (node) {\n node.mounted = mount;\n if (node.mount) {\n node.mount.mounts.push(mount);\n }\n }\n return mountRoot;\n }, unmount(mountpoint) {\n var lookup = FS.lookupPath(mountpoint, { follow_mount: false });\n if (!FS.isMountpoint(lookup.node)) {\n throw new FS.ErrnoError(28);\n }\n var node = lookup.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n for (var [hash, current] of Object.entries(FS.nameTable)) {\n while (current) {\n var next = current.name_next;\n if (mounts.includes(current.mount)) {\n FS.destroyNode(current);\n }\n current = next;\n }\n }\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n node.mount.mounts.splice(idx, 1);\n }, lookup(parent, name2) {\n return parent.node_ops.lookup(parent, name2);\n }, mknod(path, mode, dev) {\n var lookup = FS.lookupPath(path, { parent: true });\n var parent = lookup.node;\n var name2 = PATH.basename(path);\n if (!name2) {\n throw new FS.ErrnoError(28);\n }\n if (name2 === "." || name2 === "..") {\n throw new FS.ErrnoError(20);\n }\n var errCode = FS.mayCreate(parent, name2);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.mknod) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.mknod(parent, name2, mode, dev);\n }, statfs(path) {\n return FS.statfsNode(FS.lookupPath(path, { follow: true }).node);\n }, statfsStream(stream) {\n return FS.statfsNode(stream.node);\n }, statfsNode(node) {\n var rtn = { bsize: 4096, frsize: 4096, blocks: 1e6, bfree: 5e5, bavail: 5e5, files: FS.nextInode, ffree: FS.nextInode - 1, fsid: 42, flags: 2, namelen: 255 };\n if (node.node_ops.statfs) {\n Object.assign(rtn, node.node_ops.statfs(node.mount.opts.root));\n }\n return rtn;\n }, create(path, mode = 438) {\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n }, mkdir(path, mode = 511) {\n mode &= 511 | 512;\n mode |= 16384;\n FS.trackingDelegate["onMakeDirectory"]?.(path, mode);\n return FS.mknod(path, mode, 0);\n }, mkdirTree(path, mode) {\n var dirs = path.split("/");\n var d = "";\n for (var dir of dirs) {\n if (!dir) continue;\n if (d || PATH.isAbs(path)) d += "/";\n d += dir;\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 20) throw e;\n }\n }\n }, mkdev(path, mode, dev) {\n if (typeof dev == "undefined") {\n dev = mode;\n mode = 438;\n }\n mode |= 8192;\n return FS.mknod(path, mode, dev);\n }, symlink(oldpath, newpath) {\n if (!PATH_FS.resolve(oldpath)) {\n throw new FS.ErrnoError(44);\n }\n var lookup = FS.lookupPath(newpath, { parent: true });\n var parent = lookup.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var newname = PATH.basename(newpath);\n var errCode = FS.mayCreate(parent, newname);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.symlink) {\n throw new FS.ErrnoError(63);\n }\n FS.trackingDelegate["onMakeSymlink"]?.(oldpath, newpath);\n return parent.node_ops.symlink(parent, newname, oldpath);\n }, rename(old_path, new_path) {\n var old_dirname = PATH.dirname(old_path);\n var new_dirname = PATH.dirname(new_path);\n var old_name = PATH.basename(old_path);\n var new_name = PATH.basename(new_path);\n var lookup, old_dir, new_dir;\n lookup = FS.lookupPath(old_path, { parent: true });\n old_dir = lookup.node;\n lookup = FS.lookupPath(new_path, { parent: true });\n new_dir = lookup.node;\n if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n if (old_dir.mount !== new_dir.mount) {\n throw new FS.ErrnoError(75);\n }\n var old_node = FS.lookupNode(old_dir, old_name);\n var relative = PATH_FS.relative(old_path, new_dirname);\n if (relative.charAt(0) !== ".") {\n throw new FS.ErrnoError(28);\n }\n relative = PATH_FS.relative(new_path, old_dirname);\n if (relative.charAt(0) !== ".") {\n throw new FS.ErrnoError(55);\n }\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {\n }\n if (old_node === new_node) {\n return;\n }\n var isdir = FS.isDir(old_node.mode);\n var errCode = FS.mayDelete(old_dir, old_name, isdir);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!old_dir.node_ops.rename) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) {\n throw new FS.ErrnoError(10);\n }\n if (new_dir !== old_dir) {\n errCode = FS.nodePermissions(old_dir, "w");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n FS.trackingDelegate["willMovePath"]?.(old_path, new_path);\n FS.hashRemoveNode(old_node);\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n old_node.parent = new_dir;\n } catch (e) {\n throw e;\n } finally {\n FS.hashAddNode(old_node);\n }\n FS.trackingDelegate["onMovePath"]?.(old_path, new_path);\n }, rmdir(path) {\n var lookup = FS.lookupPath(path, { parent: true });\n var parent = lookup.node;\n var name2 = PATH.basename(path);\n var node = FS.lookupNode(parent, name2);\n var errCode = FS.mayDelete(parent, name2, true);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.rmdir) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n FS.trackingDelegate["willDeletePath"]?.(path);\n parent.node_ops.rmdir(parent, name2);\n FS.destroyNode(node);\n FS.trackingDelegate["onDeletePath"]?.(path);\n }, readdir(path) {\n var lookup = FS.lookupPath(path, { follow: true });\n var node = lookup.node;\n var readdir = FS.checkOpExists(node.node_ops.readdir, 54);\n return readdir(node);\n }, unlink(path) {\n var lookup = FS.lookupPath(path, { parent: true });\n var parent = lookup.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var name2 = PATH.basename(path);\n var node = FS.lookupNode(parent, name2);\n var errCode = FS.mayDelete(parent, name2, false);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.unlink) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n FS.trackingDelegate["willDeletePath"]?.(path);\n parent.node_ops.unlink(parent, name2);\n FS.destroyNode(node);\n FS.trackingDelegate["onDeletePath"]?.(path);\n }, readlink(path) {\n var lookup = FS.lookupPath(path);\n var link = lookup.node;\n if (!link) {\n throw new FS.ErrnoError(44);\n }\n if (!link.node_ops.readlink) {\n throw new FS.ErrnoError(28);\n }\n return link.node_ops.readlink(link);\n }, stat(path, dontFollow) {\n var lookup = FS.lookupPath(path, { follow: !dontFollow });\n var node = lookup.node;\n var getattr = FS.checkOpExists(node.node_ops.getattr, 63);\n return getattr(node);\n }, fstat(fd) {\n var stream = FS.getStreamChecked(fd);\n var node = stream.node;\n var getattr = stream.stream_ops.getattr;\n var arg2 = getattr ? stream : node;\n getattr ??= node.node_ops.getattr;\n FS.checkOpExists(getattr, 63);\n return getattr(arg2);\n }, lstat(path) {\n return FS.stat(path, true);\n }, doChmod(stream, node, mode, dontFollow) {\n FS.doSetAttr(stream, node, { mode: mode & 4095 | node.mode & ~4095, ctime: Date.now(), dontFollow });\n }, chmod(path, mode, dontFollow) {\n var node;\n if (typeof path == "string") {\n var lookup = FS.lookupPath(path, { follow: !dontFollow });\n node = lookup.node;\n } else {\n node = path;\n }\n FS.doChmod(null, node, mode, dontFollow);\n }, lchmod(path, mode) {\n FS.chmod(path, mode, true);\n }, fchmod(fd, mode) {\n var stream = FS.getStreamChecked(fd);\n FS.doChmod(stream, stream.node, mode, false);\n }, doChown(stream, node, dontFollow) {\n FS.doSetAttr(stream, node, { timestamp: Date.now(), dontFollow });\n }, chown(path, uid, gid, dontFollow) {\n var node;\n if (typeof path == "string") {\n var lookup = FS.lookupPath(path, { follow: !dontFollow });\n node = lookup.node;\n } else {\n node = path;\n }\n FS.doChown(null, node, dontFollow);\n }, lchown(path, uid, gid) {\n FS.chown(path, uid, gid, true);\n }, fchown(fd, uid, gid) {\n var stream = FS.getStreamChecked(fd);\n FS.doChown(stream, stream.node, false);\n }, doTruncate(stream, node, len) {\n if (FS.isDir(node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!FS.isFile(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.nodePermissions(node, "w");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n FS.doSetAttr(stream, node, { size: len, timestamp: Date.now() });\n }, truncate(path, len) {\n if (len < 0) {\n throw new FS.ErrnoError(28);\n }\n var node;\n if (typeof path == "string") {\n var lookup = FS.lookupPath(path, { follow: true });\n node = lookup.node;\n } else {\n node = path;\n }\n FS.doTruncate(null, node, len);\n }, ftruncate(fd, len) {\n var stream = FS.getStreamChecked(fd);\n if (len < 0 || (stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(28);\n }\n FS.doTruncate(stream, stream.node, len);\n }, utime(path, atime, mtime) {\n var lookup = FS.lookupPath(path, { follow: true });\n var node = lookup.node;\n var setattr = FS.checkOpExists(node.node_ops.setattr, 63);\n setattr(node, { atime, mtime });\n }, open(path, flags2, mode = 438) {\n if (path === "") {\n throw new FS.ErrnoError(44);\n }\n flags2 = FS_modeStringToFlags(flags2);\n if (flags2 & 64) {\n mode = mode & 4095 | 32768;\n } else {\n mode = 0;\n }\n var node;\n var isDirPath;\n if (typeof path == "object") {\n node = path;\n } else {\n isDirPath = path.endsWith("/");\n var lookup = FS.lookupPath(path, { follow: !(flags2 & 131072), noent_okay: true });\n node = lookup.node;\n path = lookup.path;\n }\n var created = false;\n if (flags2 & 64) {\n if (node) {\n if (flags2 & 128) {\n throw new FS.ErrnoError(20);\n }\n } else if (isDirPath) {\n throw new FS.ErrnoError(31);\n } else {\n node = FS.mknod(path, mode | 511, 0);\n created = true;\n }\n }\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (FS.isChrdev(node.mode)) {\n flags2 &= ~512;\n }\n if (flags2 & 65536 && !FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n if (!created) {\n var errCode = FS.mayOpen(node, flags2);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n if (flags2 & 512 && !created) {\n FS.truncate(node, 0);\n }\n var origFlags = flags2;\n flags2 &= ~(128 | 512 | 131072);\n var stream = FS.createStream({ node, path: FS.getPath(node), flags: flags2, seekable: true, position: 0, stream_ops: node.stream_ops, ungotten: [], error: false });\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n if (created) {\n FS.chmod(node, mode & 511);\n }\n FS.trackingDelegate["onOpenFile"]?.(path, origFlags);\n return stream;\n }, close(stream) {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (stream.getdents) stream.getdents = null;\n try {\n if (stream.stream_ops.close) {\n stream.stream_ops.close(stream);\n }\n } catch (e) {\n throw e;\n } finally {\n FS.closeStream(stream.fd);\n }\n stream.fd = null;\n if (stream.path) {\n FS.trackingDelegate["onCloseFile"]?.(stream.path);\n }\n }, isClosed(stream) {\n return stream.fd === null;\n }, llseek(stream, offset, whence) {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (!stream.seekable || !stream.stream_ops.llseek) {\n throw new FS.ErrnoError(70);\n }\n if (whence != 0 && whence != 1 && whence != 2) {\n throw new FS.ErrnoError(28);\n }\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n if (stream.path) {\n FS.trackingDelegate["onSeekFile"]?.(stream.path, stream.position, whence);\n }\n return stream.position;\n }, read(stream, buffer, offset, length, position) {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.read) {\n throw new FS.ErrnoError(28);\n }\n var seeking = typeof position != "undefined";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n if (!seeking) stream.position += bytesRead;\n if (stream.path) {\n FS.trackingDelegate["onReadFile"]?.(stream.path, bytesRead);\n }\n return bytesRead;\n }, write(stream, buffer, offset, length, position, canOwn) {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.write) {\n throw new FS.ErrnoError(28);\n }\n if (stream.seekable && stream.flags & 1024) {\n FS.llseek(stream, 0, 2);\n }\n var seeking = typeof position != "undefined";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n if (!seeking) stream.position += bytesWritten;\n if (stream.path) {\n FS.trackingDelegate["onWriteToFile"]?.(stream.path, bytesWritten);\n }\n return bytesWritten;\n }, mmap(stream, length, position, prot, flags2) {\n if ((prot & 2) !== 0 && (flags2 & 2) === 0 && (stream.flags & 2097155) !== 2) {\n throw new FS.ErrnoError(2);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(2);\n }\n if (!stream.stream_ops.mmap) {\n throw new FS.ErrnoError(43);\n }\n if (!length) {\n throw new FS.ErrnoError(28);\n }\n return stream.stream_ops.mmap(stream, length, position, prot, flags2);\n }, msync(stream, buffer, offset, length, mmapFlags) {\n if (!stream.stream_ops.msync) {\n return 0;\n }\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n }, ioctl(stream, cmd, arg2) {\n if (!stream.stream_ops.ioctl) {\n throw new FS.ErrnoError(59);\n }\n return stream.stream_ops.ioctl(stream, cmd, arg2);\n }, readFile(path, opts = {}) {\n opts.flags = opts.flags || 0;\n opts.encoding = opts.encoding || "binary";\n if (opts.encoding !== "utf8" && opts.encoding !== "binary") {\n abort(`Invalid encoding type "${opts.encoding}"`);\n }\n var stream = FS.open(path, opts.flags);\n var stat = FS.stat(path);\n var length = stat.size;\n var buf = new Uint8Array(length);\n FS.read(stream, buf, 0, length, 0);\n if (opts.encoding === "utf8") {\n buf = UTF8ArrayToString(buf);\n }\n FS.close(stream);\n return buf;\n }, writeFile(path, data2, opts = {}) {\n opts.flags = opts.flags || 577;\n var stream = FS.open(path, opts.flags, opts.mode);\n data2 = FS_fileDataToTypedArray(data2);\n FS.write(stream, data2, 0, data2.byteLength, void 0, opts.canOwn);\n FS.close(stream);\n }, cwd: () => FS.currentPath, chdir(path) {\n var lookup = FS.lookupPath(path, { follow: true });\n if (lookup.node === null) {\n throw new FS.ErrnoError(44);\n }\n if (!FS.isDir(lookup.node.mode)) {\n throw new FS.ErrnoError(54);\n }\n var errCode = FS.nodePermissions(lookup.node, "x");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n FS.currentPath = lookup.path;\n }, createDefaultDirectories() {\n FS.mkdir("/tmp");\n FS.mkdir("/home");\n FS.mkdir("/home/web_user");\n }, createDefaultDevices() {\n FS.mkdir("/dev");\n FS.registerDevice(FS.makedev(1, 3), { read: () => 0, write: (stream, buffer, offset, length, pos) => length, llseek: () => 0 });\n FS.mkdev("/dev/null", FS.makedev(1, 3));\n TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n FS.mkdev("/dev/tty", FS.makedev(5, 0));\n FS.mkdev("/dev/tty1", FS.makedev(6, 0));\n var randomBuffer = new Uint8Array(1024), randomLeft = 0;\n var randomByte = () => {\n if (randomLeft === 0) {\n randomFill(randomBuffer);\n randomLeft = randomBuffer.byteLength;\n }\n return randomBuffer[--randomLeft];\n };\n FS.createDevice("/dev", "random", randomByte);\n FS.createDevice("/dev", "urandom", randomByte);\n FS.mkdir("/dev/shm");\n FS.mkdir("/dev/shm/tmp");\n }, createSpecialDirectories() {\n FS.mkdir("/proc");\n var proc_self = FS.mkdir("/proc/self");\n FS.mkdir("/proc/self/fd");\n FS.mount({ mount() {\n var node = FS.createNode(proc_self, "fd", 16895, 73);\n node.stream_ops = { llseek: MEMFS.stream_ops.llseek };\n node.node_ops = { lookup(parent, name2) {\n var fd = +name2;\n var stream = FS.getStreamChecked(fd);\n var ret = { parent: null, mount: { mountpoint: "fake" }, node_ops: { readlink: () => stream.path }, id: fd + 1 };\n ret.parent = ret;\n return ret;\n }, readdir() {\n return Array.from(FS.streams.entries()).filter(([k2, v2]) => v2).map(([k2, v2]) => k2.toString());\n } };\n return node;\n } }, {}, "/proc/self/fd");\n }, createStandardStreams(input, output, error) {\n if (input) {\n FS.createDevice("/dev", "stdin", input);\n } else {\n FS.symlink("/dev/tty", "/dev/stdin");\n }\n if (output) {\n FS.createDevice("/dev", "stdout", null, output);\n } else {\n FS.symlink("/dev/tty", "/dev/stdout");\n }\n if (error) {\n FS.createDevice("/dev", "stderr", null, error);\n } else {\n FS.symlink("/dev/tty1", "/dev/stderr");\n }\n var stdin = FS.open("/dev/stdin", 0);\n var stdout = FS.open("/dev/stdout", 1);\n var stderr = FS.open("/dev/stderr", 1);\n }, staticInit() {\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, "/");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = { MEMFS, IDBFS, NODEFS, WORKERFS, PROXYFS };\n }, init(input, output, error) {\n FS.initialized = true;\n input ??= Module["stdin"];\n output ??= Module["stdout"];\n error ??= Module["stderr"];\n FS.createStandardStreams(input, output, error);\n }, quit() {\n FS.initialized = false;\n _fflush(0);\n for (var stream of FS.streams) {\n if (stream) {\n FS.close(stream);\n }\n }\n }, findObject(path, dontResolveLastLink) {\n var ret = FS.analyzePath(path, dontResolveLastLink);\n if (!ret.exists) {\n return null;\n }\n return ret.object;\n }, analyzePath(path, dontResolveLastLink) {\n try {\n var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });\n path = lookup.path;\n } catch (e) {\n }\n var ret = { isRoot: false, exists: false, error: 0, name: null, path: null, object: null, parentExists: false, parentPath: null, parentObject: null };\n try {\n var lookup = FS.lookupPath(path, { parent: true });\n ret.parentExists = true;\n ret.parentPath = lookup.path;\n ret.parentObject = lookup.node;\n ret.name = PATH.basename(path);\n lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });\n ret.exists = true;\n ret.path = lookup.path;\n ret.object = lookup.node;\n ret.name = lookup.node.name;\n ret.isRoot = lookup.path === "/";\n } catch (e) {\n ret.error = e.errno;\n }\n return ret;\n }, createPath(parent, path, canRead, canWrite) {\n parent = typeof parent == "string" ? parent : FS.getPath(parent);\n var parts = path.split("/").reverse();\n while (parts.length) {\n var part = parts.pop();\n if (!part) continue;\n var current = PATH.join2(parent, part);\n try {\n FS.mkdir(current);\n } catch (e) {\n if (e.errno != 20) throw e;\n }\n parent = current;\n }\n return current;\n }, createFile(parent, name2, properties, canRead, canWrite) {\n var path = PATH.join2(typeof parent == "string" ? parent : FS.getPath(parent), name2);\n var mode = FS_getMode(canRead, canWrite);\n return FS.create(path, mode);\n }, createDataFile(parent, name2, data2, canRead, canWrite, canOwn) {\n var path = name2;\n if (parent) {\n parent = typeof parent == "string" ? parent : FS.getPath(parent);\n path = name2 ? PATH.join2(parent, name2) : parent;\n }\n var mode = FS_getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n if (data2) {\n data2 = FS_fileDataToTypedArray(data2);\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, 577);\n FS.write(stream, data2, 0, data2.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n }, createDevice(parent, name2, input, output) {\n var path = PATH.join2(typeof parent == "string" ? parent : FS.getPath(parent), name2);\n var mode = FS_getMode(!!input, !!output);\n FS.createDevice.major ??= 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, { open(stream) {\n stream.seekable = false;\n }, close(stream) {\n if (output?.buffer?.length) {\n output(10);\n }\n }, read(stream, buffer, offset, length, pos) {\n var bytesRead = 0;\n for (var i2 = 0; i2 < length; i2++) {\n var result;\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === void 0 && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === void 0) break;\n bytesRead++;\n buffer[offset + i2] = result;\n }\n if (bytesRead) {\n stream.node.atime = Date.now();\n }\n return bytesRead;\n }, write(stream, buffer, offset, length, pos) {\n for (var i2 = 0; i2 < length; i2++) {\n try {\n output(buffer[offset + i2]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n }\n if (length) {\n stream.node.mtime = stream.node.ctime = Date.now();\n }\n return i2;\n } });\n return FS.mkdev(path, mode, dev);\n }, forceLoadFile(obj) {\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n dbg(`forceLoadFile: ${obj.url}`);\n if (globalThis.XMLHttpRequest) {\n abort("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");\n } else {\n try {\n obj.contents = readBinary(obj.url);\n } catch (e) {\n dbg(`forceLoadFile exception: ${e}`);\n throw new FS.ErrnoError(29);\n }\n }\n }, createLazyFile(parent, name2, url2, canRead, canWrite) {\n class LazyUint8Array {\n lengthKnown = false;\n chunks = [];\n get(idx) {\n if (idx > this.length - 1 || idx < 0) {\n return void 0;\n }\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = idx / this.chunkSize | 0;\n return this.getter(chunkNum)[chunkOffset];\n }\n setDataGetter(getter) {\n this.getter = getter;\n }\n cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open("HEAD", url2, false);\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) abort("Couldn\'t load " + url2 + ". Status: " + xhr.status);\n var datalength = Number(xhr.getResponseHeader("Content-length"));\n var header;\n var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes";\n var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip";\n var chunkSize = 1024 * 1024;\n if (!hasByteServing) chunkSize = datalength;\n var doXHR = (from, to) => {\n if (from > to) abort("invalid range (" + from + ", " + to + ") or no bytes requested!");\n if (to > datalength - 1) abort("only " + datalength + " bytes available! programmer error!");\n var xhr2 = new XMLHttpRequest();\n xhr2.open("GET", url2, false);\n if (datalength !== chunkSize) xhr2.setRequestHeader("Range", "bytes=" + from + "-" + to);\n xhr2.responseType = "arraybuffer";\n if (xhr2.overrideMimeType) {\n xhr2.overrideMimeType("text/plain; charset=x-user-defined");\n }\n xhr2.send(null);\n if (!(xhr2.status >= 200 && xhr2.status < 300 || xhr2.status === 304)) abort("Couldn\'t load " + url2 + ". Status: " + xhr2.status);\n if (xhr2.response !== void 0) {\n return new Uint8Array(xhr2.response || []);\n }\n return intArrayFromString(xhr2.responseText || "", true);\n };\n var lazyArray2 = this;\n lazyArray2.setDataGetter((chunkNum) => {\n var start2 = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n if (typeof lazyArray2.chunks[chunkNum] == "undefined") {\n lazyArray2.chunks[chunkNum] = doXHR(start2, end);\n }\n if (typeof lazyArray2.chunks[chunkNum] == "undefined") abort("doXHR failed!");\n return lazyArray2.chunks[chunkNum];\n });\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n out("LazyFiles on gzip forces download of the whole file when length is accessed");\n }\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n }\n get length() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._length;\n }\n get chunkSize() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._chunkSize;\n }\n }\n if (globalThis.XMLHttpRequest) {\n if (!ENVIRONMENT_IS_WORKER) abort("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");\n var lazyArray = new LazyUint8Array();\n var properties = { isDevice: false, contents: lazyArray };\n } else {\n var properties = { isDevice: false, url: url2 };\n }\n var node = FS.createFile(parent, name2, properties, canRead, canWrite);\n if (properties.contents) {\n node.contents = properties.contents;\n } else if (properties.url) {\n node.contents = null;\n node.url = properties.url;\n }\n Object.defineProperties(node, { usedBytes: { get: function() {\n return this.contents.length;\n } } });\n var stream_ops = {};\n for (const [key, fn] of Object.entries(node.stream_ops)) {\n stream_ops[key] = (...args2) => {\n FS.forceLoadFile(node);\n return fn(...args2);\n };\n }\n function writeChunks(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n if (contents.slice) {\n for (var i2 = 0; i2 < size; i2++) {\n buffer[offset + i2] = contents[position + i2];\n }\n } else {\n for (var i2 = 0; i2 < size; i2++) {\n buffer[offset + i2] = contents.get(position + i2);\n }\n }\n return size;\n }\n stream_ops.read = (stream, buffer, offset, length, position) => {\n FS.forceLoadFile(node);\n return writeChunks(stream, buffer, offset, length, position);\n };\n stream_ops.mmap = (stream, length, position, prot, flags2) => {\n FS.forceLoadFile(node);\n var ptr2 = mmapAlloc(length);\n if (!ptr2) {\n throw new FS.ErrnoError(48);\n }\n writeChunks(stream, HEAP8, ptr2, length, position);\n return { ptr: ptr2, allocated: true };\n };\n node.stream_ops = stream_ops;\n return node;\n } };\n var findLibraryFS = (libName2, rpath) => {\n if (!runtimeInitialized) {\n return void 0;\n }\n if (PATH.isAbs(libName2)) {\n try {\n FS.lookupPath(libName2);\n return libName2;\n } catch (e) {\n return void 0;\n }\n }\n var rpathResolved = (rpath?.paths || []).map((p2) => replaceORIGIN(rpath?.parentLibPath, p2));\n return withStackSave(() => {\n var bufSize = 2 * 255 + 2;\n var buf = stackAlloc(bufSize);\n var rpathC = stringToUTF8OnStack(rpathResolved.join(":"));\n var libNameC = stringToUTF8OnStack(libName2);\n var resLibNameC = __emscripten_find_dylib(buf, rpathC, libNameC, bufSize);\n return resLibNameC ? UTF8ToString(resLibNameC) : void 0;\n });\n };\n function loadDynamicLibrary(libName2, flags2 = { global: true, nodelete: true }, localScope2, handle2) {\n libName2 = PATH.normalize(libName2);\n var dso = LDSO.loadedLibsByName[libName2];\n if (dso) {\n if (!flags2.global) {\n if (localScope2) {\n Object.assign(localScope2, dso.exports);\n }\n } else if (!dso.global) {\n dso.global = true;\n mergeLibSymbols(dso.exports, libName2);\n }\n if (flags2.nodelete && dso.refcount !== Infinity) {\n dso.refcount = Infinity;\n }\n dso.refcount++;\n if (handle2) {\n LDSO.loadedLibsByHandle[handle2] = dso;\n }\n return flags2.loadAsync ? Promise.resolve(true) : true;\n }\n dso = newDSO(libName2, handle2, "loading");\n dso.refcount = flags2.nodelete ? Infinity : 1;\n dso.global = flags2.global;\n function loadLibData() {\n if (handle2) {\n var data2 = HEAPU32[handle2 + 28 >>> 2 >>> 0];\n var dataSize = HEAPU32[handle2 + 32 >>> 2 >>> 0];\n if (data2 && dataSize) {\n var libData = HEAP8.slice(data2, data2 + dataSize);\n return flags2.loadAsync ? Promise.resolve(libData) : libData;\n }\n }\n var f2 = findLibraryFS(libName2, flags2.rpath);\n if (f2) {\n var libData = FS.readFile(f2, { encoding: "binary" });\n return flags2.loadAsync ? Promise.resolve(libData) : libData;\n }\n var libFile = locateFile(libName2);\n if (flags2.loadAsync) {\n return asyncLoad(libFile);\n }\n if (!readBinary) {\n throw new Error(`${libFile}: file not found, and synchronous loading of external files is not available`);\n }\n return readBinary(libFile);\n }\n function getExports() {\n var preloaded = preloadedWasm[libName2];\n if (preloaded) {\n return flags2.loadAsync ? Promise.resolve(preloaded) : preloaded;\n }\n if (flags2.loadAsync) {\n return loadLibData().then((libData) => loadWebAssemblyModule(libData, flags2, libName2, localScope2, handle2));\n }\n return loadWebAssemblyModule(loadLibData(), flags2, libName2, localScope2, handle2);\n }\n function moduleLoaded(exports) {\n if (dso.global) {\n mergeLibSymbols(exports, libName2);\n } else if (localScope2) {\n Object.assign(localScope2, exports);\n }\n dso.exports = exports;\n }\n if (flags2.loadAsync) {\n return getExports().then((exports) => {\n moduleLoaded(exports);\n return true;\n });\n }\n moduleLoaded(getExports());\n return true;\n }\n var reportUndefinedSymbols = () => {\n for (var [symName, entry] of Object.entries(GOT)) {\n if (entry.value == -1) {\n var value2 = resolveGlobalSymbol(symName, true).sym;\n if (!value2 && !entry.required) {\n entry.value = 0;\n continue;\n } else if (!value2) {\n throw new Error(`Dynamic linking error: undefined symbol \'${symName}\'`);\n }\n if (typeof value2 == "function") {\n entry.value = addFunction(value2, value2.sig);\n } else if (typeof value2 == "number") {\n entry.value = value2;\n } else if (typeof value2.value == "number") {\n entry.value = value2;\n } else {\n throw new Error(`bad export type for \'${symName}\': ${typeof value2} (${value2})`);\n }\n }\n }\n };\n var loadDylibs = async () => {\n if (!dynamicLibraries.length) {\n reportUndefinedSymbols();\n return;\n }\n addRunDependency("loadDylibs");\n for (var lib of dynamicLibraries) {\n await loadDynamicLibrary(lib, { loadAsync: true, global: true, nodelete: true, allowUndefined: true });\n }\n reportUndefinedSymbols();\n removeRunDependency("loadDylibs");\n };\n var noExitRuntime = false;\n function setValue(ptr2, value2, type = "i8") {\n if (type.endsWith("*")) type = "*";\n switch (type) {\n case "i1":\n HEAP8[ptr2 >>> 0] = value2;\n break;\n case "i8":\n HEAP8[ptr2 >>> 0] = value2;\n break;\n case "i16":\n HEAP16[ptr2 >>> 1 >>> 0] = value2;\n break;\n case "i32":\n HEAP32[ptr2 >>> 2 >>> 0] = value2;\n break;\n case "i64":\n HEAP64[ptr2 >>> 3 >>> 0] = BigInt(value2);\n break;\n case "float":\n HEAPF32[ptr2 >>> 2 >>> 0] = value2;\n break;\n case "double":\n HEAPF64[ptr2 >>> 3 >>> 0] = value2;\n break;\n case "*":\n HEAPU32[ptr2 >>> 2 >>> 0] = value2;\n break;\n default:\n abort(`invalid type for setValue: ${type}`);\n }\n }\n var _JsvError_Check = () => {\n };\n var _Jsv_GetError_import = () => {\n };\n var INT53_MAX = 9007199254740992;\n var INT53_MIN = -9007199254740992;\n var bigintToI53Checked = (num) => num < INT53_MIN || num > INT53_MAX ? NaN : Number(num);\n function ___assert_fail(condition, filename, line, func2) {\n condition >>>= 0;\n filename >>>= 0;\n func2 >>>= 0;\n return abort(`Assertion failed: ${UTF8ToString(condition)}, at: ` + [filename ? UTF8ToString(filename) : "unknown filename", line, func2 ? UTF8ToString(func2) : "unknown function"]);\n }\n ___assert_fail.sig = "vppip";\n function ___call_sighandler(fp, sig2) {\n fp >>>= 0;\n return getWasmTableEntry(fp)(sig2);\n }\n ___call_sighandler.sig = "vpi";\n var SOCKFS = { websocketArgs: {}, callbacks: {}, on(event, callback) {\n SOCKFS.callbacks[event] = callback;\n }, emit(event, param) {\n SOCKFS.callbacks[event]?.(param);\n }, mount(mount) {\n SOCKFS.websocketArgs = Module["websocket"] || {};\n (Module["websocket"] ??= {})["on"] = SOCKFS.on;\n return FS.createNode(null, "/", 16895, 0);\n }, createSocket(family, type, protocol) {\n if (family != 2) {\n throw new FS.ErrnoError(5);\n }\n type &= ~526336;\n if (type != 1 && type != 2) {\n throw new FS.ErrnoError(28);\n }\n var streaming = type == 1;\n if (streaming && protocol && protocol != 6) {\n throw new FS.ErrnoError(66);\n }\n var sock = { family, type, protocol, server: null, error: null, peers: {}, pending: [], recv_queue: [], sock_ops: SOCKFS.websocket_sock_ops };\n var name2 = SOCKFS.nextname();\n var node = FS.createNode(SOCKFS.root, name2, 49152, 0);\n node.sock = sock;\n var stream = FS.createStream({ path: name2, node, flags: 2, seekable: false, stream_ops: SOCKFS.stream_ops });\n sock.stream = stream;\n return sock;\n }, getSocket(fd) {\n var stream = FS.getStream(fd);\n if (!stream || !FS.isSocket(stream.node.mode)) {\n return null;\n }\n return stream.node.sock;\n }, stream_ops: { poll(stream) {\n var sock = stream.node.sock;\n return sock.sock_ops.poll(sock);\n }, ioctl(stream, request, varargs) {\n var sock = stream.node.sock;\n return sock.sock_ops.ioctl(sock, request, varargs);\n }, read(stream, buffer, offset, length, position) {\n var sock = stream.node.sock;\n var msg = sock.sock_ops.recvmsg(sock, length);\n if (!msg) {\n return 0;\n }\n buffer.set(msg.buffer, offset);\n return msg.buffer.length;\n }, write(stream, buffer, offset, length, position) {\n var sock = stream.node.sock;\n return sock.sock_ops.sendmsg(sock, buffer, offset, length);\n }, close(stream) {\n var sock = stream.node.sock;\n sock.sock_ops.close(sock);\n } }, nextname() {\n if (!SOCKFS.nextname.current) {\n SOCKFS.nextname.current = 0;\n }\n return `socket[${SOCKFS.nextname.current++}]`;\n }, websocket_sock_ops: { createPeer(sock, addr2, port) {\n var ws;\n if (typeof addr2 == "object") {\n ws = addr2;\n addr2 = null;\n port = null;\n }\n if (ws) {\n if (ws._socket) {\n addr2 = ws._socket.remoteAddress;\n port = ws._socket.remotePort;\n } else {\n var result = /ws[s]?:\\/\\/([^:]+):(\\d+)/.exec(ws.url);\n if (!result) {\n throw new Error("WebSocket URL must be in the format ws(s)://address:port");\n }\n addr2 = result[1];\n port = parseInt(result[2], 10);\n }\n } else {\n try {\n var url2 = "ws://".replace("#", "//");\n var subProtocols = "binary";\n var opts = void 0;\n if (SOCKFS.websocketArgs["url"]) {\n url2 = SOCKFS.websocketArgs["url"];\n }\n if (SOCKFS.websocketArgs["subprotocol"]) {\n subProtocols = SOCKFS.websocketArgs["subprotocol"];\n } else if (SOCKFS.websocketArgs["subprotocol"] === null) {\n subProtocols = "null";\n }\n if (url2 === "ws://" || url2 === "wss://") {\n var parts = addr2.split("/");\n url2 = url2 + parts[0] + ":" + port + "/" + parts.slice(1).join("/");\n }\n if (subProtocols !== "null") {\n subProtocols = subProtocols.replace(/^ +| +$/g, "").split(/ *, */);\n opts = subProtocols;\n }\n var WebSocketConstructor;\n if (ENVIRONMENT_IS_NODE) {\n WebSocketConstructor = require("ws");\n } else {\n WebSocketConstructor = WebSocket;\n }\n ws = new WebSocketConstructor(url2, opts);\n ws.binaryType = "arraybuffer";\n } catch (e) {\n throw new FS.ErrnoError(23);\n }\n }\n var peer = { addr: addr2, port, socket: ws, msg_send_queue: [] };\n SOCKFS.websocket_sock_ops.addPeer(sock, peer);\n SOCKFS.websocket_sock_ops.handlePeerEvents(sock, peer);\n if (sock.type === 2 && typeof sock.sport != "undefined") {\n peer.msg_send_queue.push(new Uint8Array([255, 255, 255, 255, "p".charCodeAt(0), "o".charCodeAt(0), "r".charCodeAt(0), "t".charCodeAt(0), (sock.sport & 65280) >> 8, sock.sport & 255]));\n }\n return peer;\n }, getPeer(sock, addr2, port) {\n return sock.peers[addr2 + ":" + port];\n }, addPeer(sock, peer) {\n sock.peers[peer.addr + ":" + peer.port] = peer;\n }, removePeer(sock, peer) {\n delete sock.peers[peer.addr + ":" + peer.port];\n }, handlePeerEvents(sock, peer) {\n var first = true;\n var handleOpen = function() {\n sock.connecting = false;\n SOCKFS.emit("open", sock.stream.fd);\n try {\n var queued = peer.msg_send_queue.shift();\n while (queued) {\n peer.socket.send(queued);\n queued = peer.msg_send_queue.shift();\n }\n } catch (e) {\n peer.socket.close();\n }\n };\n function handleMessage(data2) {\n if (typeof data2 == "string") {\n var encoder = new TextEncoder();\n data2 = encoder.encode(data2);\n } else {\n if (data2.byteLength == 0) {\n return;\n }\n data2 = new Uint8Array(data2);\n }\n var wasfirst = first;\n first = false;\n if (wasfirst && data2.length === 10 && data2[0] === 255 && data2[1] === 255 && data2[2] === 255 && data2[3] === 255 && data2[4] === "p".charCodeAt(0) && data2[5] === "o".charCodeAt(0) && data2[6] === "r".charCodeAt(0) && data2[7] === "t".charCodeAt(0)) {\n var newport = data2[8] << 8 | data2[9];\n SOCKFS.websocket_sock_ops.removePeer(sock, peer);\n peer.port = newport;\n SOCKFS.websocket_sock_ops.addPeer(sock, peer);\n return;\n }\n sock.recv_queue.push({ addr: peer.addr, port: peer.port, data: data2 });\n SOCKFS.emit("message", sock.stream.fd);\n }\n if (ENVIRONMENT_IS_NODE) {\n peer.socket.on("open", handleOpen);\n peer.socket.on("message", function(data2, isBinary) {\n if (!isBinary) {\n return;\n }\n handleMessage(new Uint8Array(data2).buffer);\n });\n peer.socket.on("close", function() {\n SOCKFS.emit("close", sock.stream.fd);\n });\n peer.socket.on("error", function(error) {\n sock.error = 14;\n SOCKFS.emit("error", [sock.stream.fd, sock.error, "ECONNREFUSED: Connection refused"]);\n });\n } else {\n peer.socket.onopen = handleOpen;\n peer.socket.onclose = function() {\n SOCKFS.emit("close", sock.stream.fd);\n };\n peer.socket.onmessage = function peer_socket_onmessage(event) {\n handleMessage(event.data);\n };\n peer.socket.onerror = function(error) {\n sock.error = 14;\n SOCKFS.emit("error", [sock.stream.fd, sock.error, "ECONNREFUSED: Connection refused"]);\n };\n }\n }, poll(sock) {\n if (sock.type === 1 && sock.server) {\n return sock.pending.length ? 64 | 1 : 0;\n }\n var mask = 0;\n var dest = sock.type === 1 ? SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport) : null;\n if (sock.recv_queue.length || !dest || dest && dest.socket.readyState === dest.socket.CLOSING || dest && dest.socket.readyState === dest.socket.CLOSED) {\n mask |= 64 | 1;\n }\n if (!dest || dest && dest.socket.readyState === dest.socket.OPEN) {\n mask |= 4;\n }\n if (dest && dest.socket.readyState === dest.socket.CLOSING || dest && dest.socket.readyState === dest.socket.CLOSED) {\n if (sock.connecting) {\n mask |= 4;\n } else {\n mask |= 16;\n }\n }\n return mask;\n }, ioctl(sock, request, arg2) {\n switch (request) {\n case 21531:\n var bytes = 0;\n if (sock.recv_queue.length) {\n bytes = sock.recv_queue[0].data.length;\n }\n HEAP32[arg2 >>> 2 >>> 0] = bytes;\n return 0;\n case 21537:\n var on = HEAP32[arg2 >>> 2 >>> 0];\n if (on) {\n sock.stream.flags |= 2048;\n } else {\n sock.stream.flags &= ~2048;\n }\n return 0;\n default:\n return 28;\n }\n }, close(sock) {\n if (sock.server) {\n try {\n sock.server.close();\n } catch (e) {\n }\n sock.server = null;\n }\n for (var peer of Object.values(sock.peers)) {\n try {\n peer.socket.close();\n } catch (e) {\n }\n SOCKFS.websocket_sock_ops.removePeer(sock, peer);\n }\n return 0;\n }, bind(sock, addr2, port) {\n if (typeof sock.saddr != "undefined" || typeof sock.sport != "undefined") {\n throw new FS.ErrnoError(28);\n }\n sock.saddr = addr2;\n sock.sport = port;\n if (sock.type === 2) {\n if (sock.server) {\n sock.server.close();\n sock.server = null;\n }\n try {\n sock.sock_ops.listen(sock, 0);\n } catch (e) {\n if (!(e.name === "ErrnoError")) throw e;\n if (e.errno !== 138) throw e;\n }\n }\n }, connect(sock, addr2, port) {\n if (sock.server) {\n throw new FS.ErrnoError(138);\n }\n if (typeof sock.daddr != "undefined" && typeof sock.dport != "undefined") {\n var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport);\n if (dest) {\n if (dest.socket.readyState === dest.socket.CONNECTING) {\n throw new FS.ErrnoError(7);\n } else {\n throw new FS.ErrnoError(30);\n }\n }\n }\n var peer = SOCKFS.websocket_sock_ops.createPeer(sock, addr2, port);\n sock.daddr = peer.addr;\n sock.dport = peer.port;\n sock.connecting = true;\n }, listen(sock, backlog) {\n if (!ENVIRONMENT_IS_NODE) {\n throw new FS.ErrnoError(138);\n }\n if (sock.server) {\n throw new FS.ErrnoError(28);\n }\n var WebSocketServer = require("ws").Server;\n var host = sock.saddr;\n sock.server = new WebSocketServer({ host, port: sock.sport });\n SOCKFS.emit("listen", sock.stream.fd);\n sock.server.on("connection", function(ws) {\n if (sock.type === 1) {\n var newsock = SOCKFS.createSocket(sock.family, sock.type, sock.protocol);\n var peer = SOCKFS.websocket_sock_ops.createPeer(newsock, ws);\n newsock.daddr = peer.addr;\n newsock.dport = peer.port;\n sock.pending.push(newsock);\n SOCKFS.emit("connection", newsock.stream.fd);\n } else {\n SOCKFS.websocket_sock_ops.createPeer(sock, ws);\n SOCKFS.emit("connection", sock.stream.fd);\n }\n });\n sock.server.on("close", function() {\n SOCKFS.emit("close", sock.stream.fd);\n sock.server = null;\n });\n sock.server.on("error", function(error) {\n sock.error = 23;\n SOCKFS.emit("error", [sock.stream.fd, sock.error, "EHOSTUNREACH: Host is unreachable"]);\n });\n }, accept(listensock) {\n if (!listensock.server || !listensock.pending.length) {\n throw new FS.ErrnoError(28);\n }\n var newsock = listensock.pending.shift();\n newsock.stream.flags = listensock.stream.flags;\n return newsock;\n }, getname(sock, peer) {\n var addr2, port;\n if (peer) {\n if (sock.daddr === void 0 || sock.dport === void 0) {\n throw new FS.ErrnoError(53);\n }\n addr2 = sock.daddr;\n port = sock.dport;\n } else {\n addr2 = sock.saddr || 0;\n port = sock.sport || 0;\n }\n return { addr: addr2, port };\n }, sendmsg(sock, buffer, offset, length, addr2, port) {\n if (sock.type === 2) {\n if (addr2 === void 0 || port === void 0) {\n addr2 = sock.daddr;\n port = sock.dport;\n }\n if (addr2 === void 0 || port === void 0) {\n throw new FS.ErrnoError(17);\n }\n } else {\n addr2 = sock.daddr;\n port = sock.dport;\n }\n var dest = SOCKFS.websocket_sock_ops.getPeer(sock, addr2, port);\n if (sock.type === 1) {\n if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) {\n throw new FS.ErrnoError(53);\n }\n }\n if (ArrayBuffer.isView(buffer)) {\n offset += buffer.byteOffset;\n buffer = buffer.buffer;\n }\n var data2 = buffer.slice(offset, offset + length);\n if (!dest || dest.socket.readyState !== dest.socket.OPEN) {\n if (sock.type === 2) {\n if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) {\n dest = SOCKFS.websocket_sock_ops.createPeer(sock, addr2, port);\n }\n }\n dest.msg_send_queue.push(data2);\n return length;\n }\n try {\n dest.socket.send(data2);\n return length;\n } catch (e) {\n throw new FS.ErrnoError(28);\n }\n }, recvmsg(sock, length) {\n if (sock.type === 1 && sock.server) {\n throw new FS.ErrnoError(53);\n }\n var queued = sock.recv_queue.shift();\n if (!queued) {\n if (sock.type === 1) {\n var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport);\n if (!dest) {\n throw new FS.ErrnoError(53);\n }\n if (dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) {\n return null;\n }\n throw new FS.ErrnoError(6);\n }\n throw new FS.ErrnoError(6);\n }\n var queuedLength = queued.data.byteLength || queued.data.length;\n var queuedOffset = queued.data.byteOffset || 0;\n var queuedBuffer = queued.data.buffer || queued.data;\n var bytesRead = Math.min(length, queuedLength);\n var res = { buffer: new Uint8Array(queuedBuffer, queuedOffset, bytesRead), addr: queued.addr, port: queued.port };\n if (sock.type === 1 && bytesRead < queuedLength) {\n var bytesRemaining = queuedLength - bytesRead;\n queued.data = new Uint8Array(queuedBuffer, queuedOffset + bytesRead, bytesRemaining);\n sock.recv_queue.unshift(queued);\n }\n return res;\n } } };\n var getSocketFromFD = (fd) => {\n var socket = SOCKFS.getSocket(fd);\n if (!socket) throw new FS.ErrnoError(8);\n return socket;\n };\n var inetPton4 = (str) => {\n var b2 = str.split(".");\n for (var i2 = 0; i2 < 4; i2++) {\n var tmp = Number(b2[i2]);\n if (isNaN(tmp)) return null;\n b2[i2] = tmp;\n }\n return (b2[0] | b2[1] << 8 | b2[2] << 16 | b2[3] << 24) >>> 0;\n };\n var inetPton6 = (str) => {\n var words;\n var w2, offset, z2, i2;\n var valid6regx = /^((?=.*::)(?!.*::.+::)(::)?([\\dA-F]{1,4}:(:|\\b)|){5}|([\\dA-F]{1,4}:){6})((([\\dA-F]{1,4}((?!\\3)::|:\\b|$))|(?!\\2\\3)){2}|(((2[0-4]|1\\d|[1-9])?\\d|25[0-5])\\.?\\b){4})$/i;\n var parts = [];\n if (!valid6regx.test(str)) {\n return null;\n }\n if (str === "::") {\n return [0, 0, 0, 0, 0, 0, 0, 0];\n }\n if (str.startsWith("::")) {\n str = str.replace("::", "Z:");\n } else {\n str = str.replace("::", ":Z:");\n }\n if (str.indexOf(".") > 0) {\n str = str.replace(new RegExp("[.]", "g"), ":");\n words = str.split(":");\n words[words.length - 4] = Number(words[words.length - 4]) + Number(words[words.length - 3]) * 256;\n words[words.length - 3] = Number(words[words.length - 2]) + Number(words[words.length - 1]) * 256;\n words = words.slice(0, words.length - 2);\n } else {\n words = str.split(":");\n }\n offset = 0;\n z2 = 0;\n for (w2 = 0; w2 < words.length; w2++) {\n if (typeof words[w2] == "string") {\n if (words[w2] === "Z") {\n for (z2 = 0; z2 < 8 - words.length + 1; z2++) {\n parts[w2 + z2] = 0;\n }\n offset = z2 - 1;\n } else {\n parts[w2 + offset] = _htons(parseInt(words[w2], 16));\n }\n } else {\n parts[w2 + offset] = words[w2];\n }\n }\n return [parts[1] << 16 | parts[0], parts[3] << 16 | parts[2], parts[5] << 16 | parts[4], parts[7] << 16 | parts[6]];\n };\n var writeSockaddr = (sa, family, addr2, port, addrlen) => {\n switch (family) {\n case 2:\n addr2 = inetPton4(addr2);\n zeroMemory(sa, 16);\n if (addrlen) {\n HEAP32[addrlen >>> 2 >>> 0] = 16;\n }\n HEAP16[sa >>> 1 >>> 0] = family;\n HEAP32[sa + 4 >>> 2 >>> 0] = addr2;\n HEAP16[sa + 2 >>> 1 >>> 0] = _htons(port);\n break;\n case 10:\n addr2 = inetPton6(addr2);\n zeroMemory(sa, 28);\n if (addrlen) {\n HEAP32[addrlen >>> 2 >>> 0] = 28;\n }\n HEAP32[sa >>> 2 >>> 0] = family;\n HEAP32[sa + 8 >>> 2 >>> 0] = addr2[0];\n HEAP32[sa + 12 >>> 2 >>> 0] = addr2[1];\n HEAP32[sa + 16 >>> 2 >>> 0] = addr2[2];\n HEAP32[sa + 20 >>> 2 >>> 0] = addr2[3];\n HEAP16[sa + 2 >>> 1 >>> 0] = _htons(port);\n break;\n default:\n return 5;\n }\n return 0;\n };\n var DNS = { address_map: { id: 1, addrs: {}, names: {} }, lookup_name(name2) {\n var res = inetPton4(name2);\n if (res !== null) {\n return name2;\n }\n res = inetPton6(name2);\n if (res !== null) {\n return name2;\n }\n var addr2;\n if (DNS.address_map.addrs[name2]) {\n addr2 = DNS.address_map.addrs[name2];\n } else {\n var id = DNS.address_map.id++;\n addr2 = "172.29." + (id & 255) + "." + (id & 65280);\n DNS.address_map.names[addr2] = name2;\n DNS.address_map.addrs[name2] = addr2;\n }\n return addr2;\n }, lookup_addr(addr2) {\n if (DNS.address_map.names[addr2]) {\n return DNS.address_map.names[addr2];\n }\n return null;\n } };\n function ___syscall_accept4(fd, addr2, addrlen, flags2, d1, d2) {\n addr2 >>>= 0;\n addrlen >>>= 0;\n try {\n var sock = getSocketFromFD(fd);\n var newsock = sock.sock_ops.accept(sock);\n if (addr2) {\n var errno = writeSockaddr(addr2, newsock.family, DNS.lookup_name(newsock.daddr), newsock.dport, addrlen);\n }\n return newsock.stream.fd;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_accept4.sig = "iippiii";\n var inetNtop4 = (addr2) => (addr2 & 255) + "." + (addr2 >> 8 & 255) + "." + (addr2 >> 16 & 255) + "." + (addr2 >> 24 & 255);\n var inetNtop6 = (ints) => {\n var str = "";\n var word = 0;\n var longest = 0;\n var lastzero = 0;\n var zstart = 0;\n var len = 0;\n var i2 = 0;\n var parts = [ints[0] & 65535, ints[0] >> 16, ints[1] & 65535, ints[1] >> 16, ints[2] & 65535, ints[2] >> 16, ints[3] & 65535, ints[3] >> 16];\n var hasipv4 = true;\n var v4part = "";\n for (i2 = 0; i2 < 5; i2++) {\n if (parts[i2] !== 0) {\n hasipv4 = false;\n break;\n }\n }\n if (hasipv4) {\n v4part = inetNtop4(parts[6] | parts[7] << 16);\n if (parts[5] === -1) {\n str = "::ffff:";\n str += v4part;\n return str;\n }\n if (parts[5] === 0) {\n str = "::";\n if (v4part === "0.0.0.0") v4part = "";\n if (v4part === "0.0.0.1") v4part = "1";\n str += v4part;\n return str;\n }\n }\n for (word = 0; word < 8; word++) {\n if (parts[word] === 0) {\n if (word - lastzero > 1) {\n len = 0;\n }\n lastzero = word;\n len++;\n }\n if (len > longest) {\n longest = len;\n zstart = word - longest + 1;\n }\n }\n for (word = 0; word < 8; word++) {\n if (longest > 1) {\n if (parts[word] === 0 && word >= zstart && word < zstart + longest) {\n if (word === zstart) {\n str += ":";\n if (zstart === 0) str += ":";\n }\n continue;\n }\n }\n str += Number(_ntohs(parts[word] & 65535)).toString(16);\n str += word < 7 ? ":" : "";\n }\n return str;\n };\n var readSockaddr = (sa, salen) => {\n var family = HEAP16[sa >>> 1 >>> 0];\n var port = _ntohs(HEAPU16[sa + 2 >>> 1 >>> 0]);\n var addr2;\n switch (family) {\n case 2:\n if (salen !== 16) {\n return { errno: 28 };\n }\n addr2 = HEAP32[sa + 4 >>> 2 >>> 0];\n addr2 = inetNtop4(addr2);\n break;\n case 10:\n if (salen !== 28) {\n return { errno: 28 };\n }\n addr2 = [HEAP32[sa + 8 >>> 2 >>> 0], HEAP32[sa + 12 >>> 2 >>> 0], HEAP32[sa + 16 >>> 2 >>> 0], HEAP32[sa + 20 >>> 2 >>> 0]];\n addr2 = inetNtop6(addr2);\n break;\n default:\n return { errno: 5 };\n }\n return { family, addr: addr2, port };\n };\n var getSocketAddress = (addrp, addrlen) => {\n var info2 = readSockaddr(addrp, addrlen);\n if (info2.errno) throw new FS.ErrnoError(info2.errno);\n info2.addr = DNS.lookup_addr(info2.addr) || info2.addr;\n return info2;\n };\n function ___syscall_bind(fd, addr2, addrlen, d1, d2, d3) {\n addr2 >>>= 0;\n addrlen >>>= 0;\n try {\n var sock = getSocketFromFD(fd);\n var info2 = getSocketAddress(addr2, addrlen);\n sock.sock_ops.bind(sock, info2.addr, info2.port);\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_bind.sig = "iippiii";\n var SYSCALLS = { calculateAt(dirfd, path, allowEmpty) {\n if (PATH.isAbs(path)) {\n return path;\n }\n var dir;\n if (dirfd === -100) {\n dir = FS.cwd();\n } else {\n var dirstream = SYSCALLS.getStreamFromFD(dirfd);\n dir = dirstream.path;\n }\n if (path.length == 0) {\n if (!allowEmpty) {\n throw new FS.ErrnoError(44);\n }\n return dir;\n }\n return dir + "/" + path;\n }, writeStat(buf, stat) {\n HEAPU32[buf >>> 2 >>> 0] = stat.dev;\n HEAPU32[buf + 4 >>> 2 >>> 0] = stat.mode;\n HEAPU32[buf + 8 >>> 2 >>> 0] = stat.nlink;\n HEAPU32[buf + 12 >>> 2 >>> 0] = stat.uid;\n HEAPU32[buf + 16 >>> 2 >>> 0] = stat.gid;\n HEAPU32[buf + 20 >>> 2 >>> 0] = stat.rdev;\n HEAP64[buf + 24 >>> 3 >>> 0] = BigInt(stat.size);\n HEAP32[buf + 32 >>> 2 >>> 0] = 4096;\n HEAP32[buf + 36 >>> 2 >>> 0] = stat.blocks;\n var atime = stat.atime.getTime();\n var mtime = stat.mtime.getTime();\n var ctime = stat.ctime.getTime();\n HEAP64[buf + 40 >>> 3 >>> 0] = BigInt(Math.floor(atime / 1e3));\n HEAPU32[buf + 48 >>> 2 >>> 0] = atime % 1e3 * 1e3 * 1e3;\n HEAP64[buf + 56 >>> 3 >>> 0] = BigInt(Math.floor(mtime / 1e3));\n HEAPU32[buf + 64 >>> 2 >>> 0] = mtime % 1e3 * 1e3 * 1e3;\n HEAP64[buf + 72 >>> 3 >>> 0] = BigInt(Math.floor(ctime / 1e3));\n HEAPU32[buf + 80 >>> 2 >>> 0] = ctime % 1e3 * 1e3 * 1e3;\n HEAP64[buf + 88 >>> 3 >>> 0] = BigInt(stat.ino);\n return 0;\n }, writeStatFs(buf, stats) {\n HEAPU32[buf + 4 >>> 2 >>> 0] = stats.bsize;\n HEAPU32[buf + 60 >>> 2 >>> 0] = stats.bsize;\n HEAP64[buf + 8 >>> 3 >>> 0] = BigInt(stats.blocks);\n HEAP64[buf + 16 >>> 3 >>> 0] = BigInt(stats.bfree);\n HEAP64[buf + 24 >>> 3 >>> 0] = BigInt(stats.bavail);\n HEAP64[buf + 32 >>> 3 >>> 0] = BigInt(stats.files);\n HEAP64[buf + 40 >>> 3 >>> 0] = BigInt(stats.ffree);\n HEAPU32[buf + 48 >>> 2 >>> 0] = stats.fsid;\n HEAPU32[buf + 64 >>> 2 >>> 0] = stats.flags;\n HEAPU32[buf + 56 >>> 2 >>> 0] = stats.namelen;\n }, doMsync(addr2, stream, len, flags2, offset) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (flags2 & 2) {\n return 0;\n }\n var buffer = HEAPU8.slice(addr2, addr2 + len);\n FS.msync(stream, buffer, offset, len, flags2);\n }, getStreamFromFD(fd) {\n var stream = FS.getStreamChecked(fd);\n return stream;\n }, varargs: void 0, getStr(ptr2) {\n var ret = UTF8ToString(ptr2);\n return ret;\n } };\n function ___syscall_chdir(path) {\n path >>>= 0;\n try {\n path = SYSCALLS.getStr(path);\n FS.chdir(path);\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_chdir.sig = "ip";\n function ___syscall_chmod(path, mode) {\n path >>>= 0;\n try {\n path = SYSCALLS.getStr(path);\n FS.chmod(path, mode);\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_chmod.sig = "ipi";\n function ___syscall_connect(fd, addr2, addrlen, d1, d2, d3) {\n addr2 >>>= 0;\n addrlen >>>= 0;\n try {\n var sock = getSocketFromFD(fd);\n var info2 = getSocketAddress(addr2, addrlen);\n sock.sock_ops.connect(sock, info2.addr, info2.port);\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_connect.sig = "iippiii";\n function ___syscall_dup(fd) {\n try {\n var old = SYSCALLS.getStreamFromFD(fd);\n return FS.dupStream(old).fd;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_dup.sig = "ii";\n function ___syscall_dup3(fd, newfd, flags2) {\n try {\n var old = SYSCALLS.getStreamFromFD(fd);\n if (old.fd === newfd) return -28;\n if (newfd < 0 || newfd >= FS.MAX_OPEN_FDS) return -8;\n var existing = FS.getStream(newfd);\n if (existing) FS.close(existing);\n return FS.dupStream(old, newfd).fd;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_dup3.sig = "iiii";\n function ___syscall_faccessat(dirfd, path, amode, flags2) {\n path >>>= 0;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (amode & ~7) {\n return -28;\n }\n var lookup = FS.lookupPath(path, { follow: true });\n var node = lookup.node;\n if (!node) {\n return -44;\n }\n var perms = "";\n if (amode & 4) perms += "r";\n if (amode & 2) perms += "w";\n if (amode & 1) perms += "x";\n if (perms && FS.nodePermissions(node, perms)) {\n return -2;\n }\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_faccessat.sig = "iipii";\n var ___syscall_fadvise64 = (fd, offset, len, advice) => 0;\n ___syscall_fadvise64.sig = "iijji";\n function ___syscall_fallocate(fd, mode, offset, len) {\n offset = bigintToI53Checked(offset);\n len = bigintToI53Checked(len);\n try {\n if (isNaN(offset) || isNaN(len)) return -61;\n if (mode != 0) {\n return -138;\n }\n if (offset < 0 || len < 0) {\n return -28;\n }\n var oldSize = FS.fstat(fd).size;\n var newSize = offset + len;\n if (newSize > oldSize) {\n FS.ftruncate(fd, newSize);\n }\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_fallocate.sig = "iiijj";\n function ___syscall_fchdir(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.chdir(stream.path);\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_fchdir.sig = "ii";\n function ___syscall_fchmod(fd, mode) {\n try {\n FS.fchmod(fd, mode);\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_fchmod.sig = "iii";\n function ___syscall_fchmodat2(dirfd, path, mode, flags2) {\n path >>>= 0;\n try {\n var nofollow = flags2 & 256;\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n FS.chmod(path, mode, nofollow);\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_fchmodat2.sig = "iipii";\n function ___syscall_fchown32(fd, owner, group) {\n try {\n FS.fchown(fd, owner, group);\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_fchown32.sig = "iiii";\n function ___syscall_fchownat(dirfd, path, owner, group, flags2) {\n path >>>= 0;\n try {\n path = SYSCALLS.getStr(path);\n var nofollow = flags2 & 256;\n flags2 = flags2 & ~256;\n path = SYSCALLS.calculateAt(dirfd, path);\n (nofollow ? FS.lchown : FS.chown)(path, owner, group);\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_fchownat.sig = "iipiii";\n var syscallGetVarargI = () => {\n var ret = HEAP32[+SYSCALLS.varargs >>> 2 >>> 0];\n SYSCALLS.varargs += 4;\n return ret;\n };\n var syscallGetVarargP = syscallGetVarargI;\n function ___syscall_fcntl64(fd, cmd, varargs) {\n varargs >>>= 0;\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (cmd) {\n case 0: {\n var arg2 = syscallGetVarargI();\n if (arg2 < 0) {\n return -28;\n }\n while (FS.streams[arg2]) {\n arg2++;\n }\n var newStream;\n newStream = FS.dupStream(stream, arg2);\n return newStream.fd;\n }\n case 1:\n case 2:\n return 0;\n case 3:\n return stream.flags;\n case 4: {\n var arg2 = syscallGetVarargI();\n stream.flags |= arg2;\n return 0;\n }\n case 12: {\n var arg2 = syscallGetVarargP();\n var offset = 0;\n HEAP16[arg2 + offset >>> 1 >>> 0] = 2;\n return 0;\n }\n case 13:\n case 14:\n return 0;\n }\n return -28;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_fcntl64.sig = "iiip";\n function ___syscall_fdatasync(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_fdatasync.sig = "ii";\n function ___syscall_fstat64(fd, buf) {\n buf >>>= 0;\n try {\n return SYSCALLS.writeStat(buf, FS.fstat(fd));\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_fstat64.sig = "iip";\n function ___syscall_fstatfs64(fd, size, buf) {\n size >>>= 0;\n buf >>>= 0;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n SYSCALLS.writeStatFs(buf, FS.statfsStream(stream));\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_fstatfs64.sig = "iipp";\n function ___syscall_ftruncate64(fd, length) {\n length = bigintToI53Checked(length);\n try {\n if (isNaN(length)) return -61;\n FS.ftruncate(fd, length);\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_ftruncate64.sig = "iij";\n function ___syscall_getcwd(buf, size) {\n buf >>>= 0;\n size >>>= 0;\n try {\n if (size === 0) return -28;\n var cwd = FS.cwd();\n var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1;\n if (size < cwdLengthInBytes) return -68;\n stringToUTF8(cwd, buf, size);\n return cwdLengthInBytes;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_getcwd.sig = "ipp";\n function ___syscall_getdents64(fd, dirp, count) {\n dirp >>>= 0;\n count >>>= 0;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n stream.getdents ||= FS.readdir(stream.path);\n var struct_size = 280;\n var pos = 0;\n var off = FS.llseek(stream, 0, 1);\n var startIdx = Math.floor(off / struct_size);\n var endIdx = Math.min(stream.getdents.length, startIdx + Math.floor(count / struct_size));\n for (var idx = startIdx; idx < endIdx; idx++) {\n var id;\n var type;\n var name2 = stream.getdents[idx];\n if (name2 === ".") {\n id = stream.node.id;\n type = 4;\n } else if (name2 === "..") {\n var lookup = FS.lookupPath(stream.path, { parent: true });\n id = lookup.node.id;\n type = 4;\n } else {\n var child;\n try {\n child = FS.lookupNode(stream.node, name2);\n } catch (e) {\n if (e?.errno === 28) {\n continue;\n }\n throw e;\n }\n id = child.id;\n type = FS.isChrdev(child.mode) ? 2 : FS.isDir(child.mode) ? 4 : FS.isLink(child.mode) ? 10 : 8;\n }\n HEAP64[dirp + pos >>> 3 >>> 0] = BigInt(id);\n HEAP64[dirp + pos + 8 >>> 3 >>> 0] = BigInt((idx + 1) * struct_size);\n HEAP16[dirp + pos + 16 >>> 1 >>> 0] = 280;\n HEAP8[dirp + pos + 18 >>> 0] = type;\n stringToUTF8(name2, dirp + pos + 19, 256);\n pos += struct_size;\n }\n FS.llseek(stream, idx * struct_size, 0);\n return pos;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_getdents64.sig = "iipp";\n function ___syscall_getpeername(fd, addr2, addrlen, d1, d2, d3) {\n addr2 >>>= 0;\n addrlen >>>= 0;\n try {\n var sock = getSocketFromFD(fd);\n if (!sock.daddr) {\n return -53;\n }\n var errno = writeSockaddr(addr2, sock.family, DNS.lookup_name(sock.daddr), sock.dport, addrlen);\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_getpeername.sig = "iippiii";\n function ___syscall_getsockname(fd, addr2, addrlen, d1, d2, d3) {\n addr2 >>>= 0;\n addrlen >>>= 0;\n try {\n var sock = getSocketFromFD(fd);\n var errno = writeSockaddr(addr2, sock.family, DNS.lookup_name(sock.saddr || "0.0.0.0"), sock.sport, addrlen);\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_getsockname.sig = "iippiii";\n function ___syscall_getsockopt(fd, level, optname, optval, optlen, d1) {\n optval >>>= 0;\n optlen >>>= 0;\n try {\n var sock = getSocketFromFD(fd);\n if (level === 1) {\n if (optname === 4) {\n HEAP32[optval >>> 2 >>> 0] = sock.error;\n HEAP32[optlen >>> 2 >>> 0] = 4;\n sock.error = null;\n return 0;\n }\n }\n return -50;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_getsockopt.sig = "iiiippi";\n function ___syscall_ioctl(fd, op, varargs) {\n varargs >>>= 0;\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (op) {\n case 21509: {\n if (!stream.tty) return -59;\n return 0;\n }\n case 21505: {\n if (!stream.tty) return -59;\n if (stream.tty.ops.ioctl_tcgets) {\n var termios = stream.tty.ops.ioctl_tcgets(stream);\n var argp = syscallGetVarargP();\n HEAP32[argp >>> 2 >>> 0] = termios.c_iflag || 0;\n HEAP32[argp + 4 >>> 2 >>> 0] = termios.c_oflag || 0;\n HEAP32[argp + 8 >>> 2 >>> 0] = termios.c_cflag || 0;\n HEAP32[argp + 12 >>> 2 >>> 0] = termios.c_lflag || 0;\n for (var i2 = 0; i2 < 32; i2++) {\n HEAP8[argp + i2 + 17 >>> 0] = termios.c_cc[i2] || 0;\n }\n return 0;\n }\n return 0;\n }\n case 21510:\n case 21511:\n case 21512: {\n if (!stream.tty) return -59;\n return 0;\n }\n case 21506:\n case 21507:\n case 21508: {\n if (!stream.tty) return -59;\n if (stream.tty.ops.ioctl_tcsets) {\n var argp = syscallGetVarargP();\n var c_iflag = HEAP32[argp >>> 2 >>> 0];\n var c_oflag = HEAP32[argp + 4 >>> 2 >>> 0];\n var c_cflag = HEAP32[argp + 8 >>> 2 >>> 0];\n var c_lflag = HEAP32[argp + 12 >>> 2 >>> 0];\n var c_cc = [];\n for (var i2 = 0; i2 < 32; i2++) {\n c_cc.push(HEAP8[argp + i2 + 17 >>> 0]);\n }\n return stream.tty.ops.ioctl_tcsets(stream.tty, op, { c_iflag, c_oflag, c_cflag, c_lflag, c_cc });\n }\n return 0;\n }\n case 21519: {\n if (!stream.tty) return -59;\n var argp = syscallGetVarargP();\n HEAP32[argp >>> 2 >>> 0] = 0;\n return 0;\n }\n case 21520: {\n if (!stream.tty) return -59;\n return -28;\n }\n case 21537:\n case 21531: {\n var argp = syscallGetVarargP();\n return FS.ioctl(stream, op, argp);\n }\n case 21523: {\n if (!stream.tty) return -59;\n if (stream.tty.ops.ioctl_tiocgwinsz) {\n var winsize = stream.tty.ops.ioctl_tiocgwinsz(stream.tty);\n var argp = syscallGetVarargP();\n HEAP16[argp >>> 1 >>> 0] = winsize[0];\n HEAP16[argp + 2 >>> 1 >>> 0] = winsize[1];\n }\n return 0;\n }\n case 21524: {\n if (!stream.tty) return -59;\n return 0;\n }\n case 21515: {\n if (!stream.tty) return -59;\n return 0;\n }\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_ioctl.sig = "iiip";\n function ___syscall_listen(fd, backlog) {\n try {\n var sock = getSocketFromFD(fd);\n sock.sock_ops.listen(sock, backlog);\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_listen.sig = "iiiiiii";\n function ___syscall_lstat64(path, buf) {\n path >>>= 0;\n buf >>>= 0;\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.writeStat(buf, FS.lstat(path));\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_lstat64.sig = "ipp";\n function ___syscall_mkdirat(dirfd, path, mode) {\n path >>>= 0;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n FS.mkdir(path, mode, 0);\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_mkdirat.sig = "iipi";\n function ___syscall_mknodat(dirfd, path, mode, dev) {\n path >>>= 0;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n switch (mode & 61440) {\n case 32768:\n case 8192:\n case 24576:\n case 4096:\n case 49152:\n break;\n default:\n return -28;\n }\n FS.mknod(path, mode, dev);\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_mknodat.sig = "iipii";\n function ___syscall_newfstatat(dirfd, path, buf, flags2) {\n path >>>= 0;\n buf >>>= 0;\n try {\n path = SYSCALLS.getStr(path);\n var nofollow = flags2 & 256;\n var allowEmpty = flags2 & 4096;\n flags2 = flags2 & ~6400;\n path = SYSCALLS.calculateAt(dirfd, path, allowEmpty);\n return SYSCALLS.writeStat(buf, nofollow ? FS.lstat(path) : FS.stat(path));\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_newfstatat.sig = "iippi";\n function ___syscall_openat(dirfd, path, flags2, varargs) {\n path >>>= 0;\n varargs >>>= 0;\n SYSCALLS.varargs = varargs;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n var mode = varargs ? syscallGetVarargI() : 0;\n return FS.open(path, flags2, mode).fd;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_openat.sig = "iipip";\n var PIPEFS = { BUCKET_BUFFER_SIZE: 8192, mount(mount) {\n return FS.createNode(null, "/", 16384 | 511, 0);\n }, createPipe() {\n var pipe = { buckets: [], refcnt: 2, timestamp: /* @__PURE__ */ new Date() };\n pipe.buckets.push({ buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE), offset: 0, roffset: 0 });\n var rName = PIPEFS.nextname();\n var wName = PIPEFS.nextname();\n var rNode = FS.createNode(PIPEFS.root, rName, 4096, 0);\n var wNode = FS.createNode(PIPEFS.root, wName, 4096, 0);\n rNode.pipe = pipe;\n wNode.pipe = pipe;\n var readableStream = FS.createStream({ path: rName, node: rNode, flags: 0, seekable: false, stream_ops: PIPEFS.stream_ops });\n rNode.stream = readableStream;\n var writableStream = FS.createStream({ path: wName, node: wNode, flags: 1, seekable: false, stream_ops: PIPEFS.stream_ops });\n wNode.stream = writableStream;\n return { readable_fd: readableStream.fd, writable_fd: writableStream.fd };\n }, stream_ops: { getattr(stream) {\n var node = stream.node;\n var timestamp = node.pipe.timestamp;\n return { dev: 14, ino: node.id, mode: 4480, nlink: 1, uid: 0, gid: 0, rdev: 0, size: 0, atime: timestamp, mtime: timestamp, ctime: timestamp, blksize: 4096, blocks: 0 };\n }, poll(stream, timeout, notifyCallback) {\n var pipe = stream.node.pipe;\n if ((stream.flags & 2097155) === 1) {\n return 256 | 4;\n }\n for (var bucket of pipe.buckets) {\n if (bucket.offset - bucket.roffset > 0) {\n return 64 | 1;\n }\n }\n return 0;\n }, dup(stream) {\n stream.node.pipe.refcnt++;\n }, ioctl(stream, request, varargs) {\n return 28;\n }, fsync(stream) {\n return 28;\n }, read(stream, buffer, offset, length, position) {\n var pipe = stream.node.pipe;\n var currentLength = 0;\n for (var bucket of pipe.buckets) {\n currentLength += bucket.offset - bucket.roffset;\n }\n var data2 = buffer.subarray(offset, offset + length);\n if (length <= 0) {\n return 0;\n }\n if (currentLength == 0) {\n throw new FS.ErrnoError(6);\n }\n var toRead = Math.min(currentLength, length);\n var totalRead = toRead;\n var toRemove = 0;\n for (var bucket of pipe.buckets) {\n var bucketSize = bucket.offset - bucket.roffset;\n if (toRead <= bucketSize) {\n var tmpSlice = bucket.buffer.subarray(bucket.roffset, bucket.offset);\n if (toRead < bucketSize) {\n tmpSlice = tmpSlice.subarray(0, toRead);\n bucket.roffset += toRead;\n } else {\n toRemove++;\n }\n data2.set(tmpSlice);\n break;\n } else {\n var tmpSlice = bucket.buffer.subarray(bucket.roffset, bucket.offset);\n data2.set(tmpSlice);\n data2 = data2.subarray(tmpSlice.byteLength);\n toRead -= tmpSlice.byteLength;\n toRemove++;\n }\n }\n if (toRemove && toRemove == pipe.buckets.length) {\n toRemove--;\n pipe.buckets[toRemove].offset = 0;\n pipe.buckets[toRemove].roffset = 0;\n }\n pipe.buckets.splice(0, toRemove);\n return totalRead;\n }, write(stream, buffer, offset, length, position) {\n var pipe = stream.node.pipe;\n var data2 = buffer.subarray(offset, offset + length);\n var dataLen = data2.byteLength;\n if (dataLen <= 0) {\n return 0;\n }\n var currBucket = null;\n if (pipe.buckets.length == 0) {\n currBucket = { buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE), offset: 0, roffset: 0 };\n pipe.buckets.push(currBucket);\n } else {\n currBucket = pipe.buckets[pipe.buckets.length - 1];\n }\n var freeBytesInCurrBuffer = PIPEFS.BUCKET_BUFFER_SIZE - currBucket.offset;\n if (freeBytesInCurrBuffer >= dataLen) {\n currBucket.buffer.set(data2, currBucket.offset);\n currBucket.offset += dataLen;\n return dataLen;\n } else if (freeBytesInCurrBuffer > 0) {\n currBucket.buffer.set(data2.subarray(0, freeBytesInCurrBuffer), currBucket.offset);\n currBucket.offset += freeBytesInCurrBuffer;\n data2 = data2.subarray(freeBytesInCurrBuffer, data2.byteLength);\n }\n var numBuckets = data2.byteLength / PIPEFS.BUCKET_BUFFER_SIZE | 0;\n var remElements = data2.byteLength % PIPEFS.BUCKET_BUFFER_SIZE;\n for (var i2 = 0; i2 < numBuckets; i2++) {\n var newBucket = { buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE), offset: PIPEFS.BUCKET_BUFFER_SIZE, roffset: 0 };\n pipe.buckets.push(newBucket);\n newBucket.buffer.set(data2.subarray(0, PIPEFS.BUCKET_BUFFER_SIZE));\n data2 = data2.subarray(PIPEFS.BUCKET_BUFFER_SIZE, data2.byteLength);\n }\n if (remElements > 0) {\n var newBucket = { buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE), offset: data2.byteLength, roffset: 0 };\n pipe.buckets.push(newBucket);\n newBucket.buffer.set(data2);\n }\n return dataLen;\n }, close(stream) {\n var pipe = stream.node.pipe;\n pipe.refcnt--;\n if (pipe.refcnt === 0) {\n pipe.buckets = null;\n }\n } }, nextname() {\n if (!PIPEFS.nextname.current) {\n PIPEFS.nextname.current = 0;\n }\n return "pipe[" + PIPEFS.nextname.current++ + "]";\n } };\n function ___syscall_pipe(fdPtr) {\n fdPtr >>>= 0;\n try {\n if (fdPtr == 0) {\n throw new FS.ErrnoError(21);\n }\n var res = PIPEFS.createPipe();\n HEAP32[fdPtr >>> 2 >>> 0] = res.readable_fd;\n HEAP32[fdPtr + 4 >>> 2 >>> 0] = res.writable_fd;\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_pipe.sig = "ip";\n function ___syscall_poll(fds, nfds, timeout) {\n fds >>>= 0;\n try {\n var count = 0;\n for (var i2 = 0; i2 < nfds; i2++) {\n var pollfd = fds + 8 * i2;\n var fd = HEAP32[pollfd >>> 2 >>> 0];\n var events = HEAP16[pollfd + 4 >>> 1 >>> 0];\n var flags2 = 32;\n var stream = FS.getStream(fd);\n if (stream) {\n if (stream.stream_ops.poll) {\n flags2 = stream.stream_ops.poll(stream, -1);\n } else {\n flags2 = 5;\n }\n }\n flags2 &= events | 8 | 16;\n if (flags2) count++;\n HEAP16[pollfd + 6 >>> 1 >>> 0] = flags2;\n }\n return count;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_poll.sig = "ipii";\n function ___syscall_readlinkat(dirfd, path, buf, bufsize) {\n path >>>= 0;\n buf >>>= 0;\n bufsize >>>= 0;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (bufsize <= 0) return -28;\n var ret = FS.readlink(path);\n var len = Math.min(bufsize, lengthBytesUTF8(ret));\n var endChar = HEAP8[buf + len >>> 0];\n stringToUTF8(ret, buf, bufsize + 1);\n HEAP8[buf + len >>> 0] = endChar;\n return len;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_readlinkat.sig = "iippp";\n function ___syscall_recvfrom(fd, buf, len, flags2, addr2, addrlen) {\n buf >>>= 0;\n len >>>= 0;\n addr2 >>>= 0;\n addrlen >>>= 0;\n try {\n var sock = getSocketFromFD(fd);\n var msg = sock.sock_ops.recvmsg(sock, len);\n if (!msg) return 0;\n if (addr2) {\n var errno = writeSockaddr(addr2, sock.family, DNS.lookup_name(msg.addr), msg.port, addrlen);\n }\n HEAPU8.set(msg.buffer, buf >>> 0);\n return msg.buffer.byteLength;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_recvfrom.sig = "iippipp";\n function ___syscall_recvmsg(fd, message, flags2, d1, d2, d3) {\n message >>>= 0;\n try {\n var sock = getSocketFromFD(fd);\n var iov = HEAPU32[message + 8 >>> 2 >>> 0];\n var num = HEAP32[message + 12 >>> 2 >>> 0];\n var total = 0;\n for (var i2 = 0; i2 < num; i2++) {\n total += HEAP32[iov + (8 * i2 + 4) >>> 2 >>> 0];\n }\n var msg = sock.sock_ops.recvmsg(sock, total);\n if (!msg) return 0;\n var name2 = HEAPU32[message >>> 2 >>> 0];\n if (name2) {\n var errno = writeSockaddr(name2, sock.family, DNS.lookup_name(msg.addr), msg.port);\n }\n var bytesRead = 0;\n var bytesRemaining = msg.buffer.byteLength;\n for (var i2 = 0; bytesRemaining > 0 && i2 < num; i2++) {\n var iovbase = HEAPU32[iov + (8 * i2 + 0) >>> 2 >>> 0];\n var iovlen = HEAP32[iov + (8 * i2 + 4) >>> 2 >>> 0];\n if (!iovlen) {\n continue;\n }\n var length = Math.min(iovlen, bytesRemaining);\n var buf = msg.buffer.subarray(bytesRead, bytesRead + length);\n HEAPU8.set(buf, iovbase + bytesRead >>> 0);\n bytesRead += length;\n bytesRemaining -= length;\n }\n return bytesRead;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_recvmsg.sig = "iipiiii";\n function ___syscall_renameat(olddirfd, oldpath, newdirfd, newpath) {\n oldpath >>>= 0;\n newpath >>>= 0;\n try {\n oldpath = SYSCALLS.getStr(oldpath);\n newpath = SYSCALLS.getStr(newpath);\n oldpath = SYSCALLS.calculateAt(olddirfd, oldpath);\n newpath = SYSCALLS.calculateAt(newdirfd, newpath);\n FS.rename(oldpath, newpath);\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_renameat.sig = "iipip";\n function ___syscall_rmdir(path) {\n path >>>= 0;\n try {\n path = SYSCALLS.getStr(path);\n FS.rmdir(path);\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_rmdir.sig = "ip";\n function ___syscall_sendmsg(fd, message, flags2, d1, d2, d3) {\n message >>>= 0;\n d1 >>>= 0;\n d2 >>>= 0;\n try {\n var sock = getSocketFromFD(fd);\n var iov = HEAPU32[message + 8 >>> 2 >>> 0];\n var num = HEAP32[message + 12 >>> 2 >>> 0];\n var addr2, port;\n var name2 = HEAPU32[message >>> 2 >>> 0];\n var namelen = HEAP32[message + 4 >>> 2 >>> 0];\n if (name2) {\n var info2 = getSocketAddress(name2, namelen);\n port = info2.port;\n addr2 = info2.addr;\n }\n var total = 0;\n for (var i2 = 0; i2 < num; i2++) {\n total += HEAP32[iov + (8 * i2 + 4) >>> 2 >>> 0];\n }\n var view = new Uint8Array(total);\n var offset = 0;\n for (var i2 = 0; i2 < num; i2++) {\n var iovbase = HEAPU32[iov + (8 * i2 + 0) >>> 2 >>> 0];\n var iovlen = HEAP32[iov + (8 * i2 + 4) >>> 2 >>> 0];\n for (var j2 = 0; j2 < iovlen; j2++) {\n view[offset++] = HEAP8[iovbase + j2 >>> 0];\n }\n }\n return sock.sock_ops.sendmsg(sock, view, 0, total, addr2, port);\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_sendmsg.sig = "iipippi";\n function ___syscall_sendto(fd, message, length, flags2, addr2, addr_len) {\n message >>>= 0;\n length >>>= 0;\n addr2 >>>= 0;\n addr_len >>>= 0;\n try {\n var sock = getSocketFromFD(fd);\n if (!addr2) {\n return FS.write(sock.stream, HEAP8, message, length);\n }\n var dest = getSocketAddress(addr2, addr_len);\n return sock.sock_ops.sendmsg(sock, HEAP8, message, length, dest.addr, dest.port);\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_sendto.sig = "iippipp";\n function ___syscall_socket(domain, type, protocol) {\n try {\n var sock = SOCKFS.createSocket(domain, type, protocol);\n return sock.stream.fd;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_socket.sig = "iiiiiii";\n function ___syscall_stat64(path, buf) {\n path >>>= 0;\n buf >>>= 0;\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.writeStat(buf, FS.stat(path));\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_stat64.sig = "ipp";\n function ___syscall_statfs64(path, size, buf) {\n path >>>= 0;\n size >>>= 0;\n buf >>>= 0;\n try {\n SYSCALLS.writeStatFs(buf, FS.statfs(SYSCALLS.getStr(path)));\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_statfs64.sig = "ippp";\n function ___syscall_symlinkat(target, dirfd, linkpath) {\n target >>>= 0;\n linkpath >>>= 0;\n try {\n target = SYSCALLS.getStr(target);\n linkpath = SYSCALLS.getStr(linkpath);\n linkpath = SYSCALLS.calculateAt(dirfd, linkpath);\n FS.symlink(target, linkpath);\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_symlinkat.sig = "ipip";\n function ___syscall_truncate64(path, length) {\n path >>>= 0;\n length = bigintToI53Checked(length);\n try {\n if (isNaN(length)) return -61;\n path = SYSCALLS.getStr(path);\n FS.truncate(path, length);\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_truncate64.sig = "ipj";\n function ___syscall_unlinkat(dirfd, path, flags2) {\n path >>>= 0;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (!flags2) {\n FS.unlink(path);\n } else if (flags2 === 512) {\n FS.rmdir(path);\n } else {\n return -28;\n }\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_unlinkat.sig = "iipi";\n var readI53FromI64 = (ptr2) => HEAPU32[ptr2 >>> 2 >>> 0] + HEAP32[ptr2 + 4 >>> 2 >>> 0] * 4294967296;\n function ___syscall_utimensat(dirfd, path, times, flags2) {\n path >>>= 0;\n times >>>= 0;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path, true);\n var now = Date.now(), atime, mtime;\n if (!times) {\n atime = now;\n mtime = now;\n } else {\n var seconds = readI53FromI64(times);\n var nanoseconds = HEAP32[times + 8 >>> 2 >>> 0];\n if (nanoseconds == 1073741823) {\n atime = now;\n } else if (nanoseconds == 1073741822) {\n atime = null;\n } else {\n atime = seconds * 1e3 + nanoseconds / (1e3 * 1e3);\n }\n times += 16;\n seconds = readI53FromI64(times);\n nanoseconds = HEAP32[times + 8 >>> 2 >>> 0];\n if (nanoseconds == 1073741823) {\n mtime = now;\n } else if (nanoseconds == 1073741822) {\n mtime = null;\n } else {\n mtime = seconds * 1e3 + nanoseconds / (1e3 * 1e3);\n }\n }\n if ((mtime ?? atime) !== null) {\n FS.utime(path, atime, mtime);\n }\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n ___syscall_utimensat.sig = "iippi";\n var __abort_js = () => abort("");\n __abort_js.sig = "v";\n var dlSetError = (msg) => {\n var sp = stackSave();\n var cmsg = stringToUTF8OnStack(msg);\n ___dl_seterr(cmsg, 0);\n stackRestore(sp);\n };\n var dlopenInternal = (handle2, jsflags) => {\n var filename = UTF8ToString(handle2 + 36);\n var flags2 = HEAP32[handle2 + 4 >>> 2 >>> 0];\n filename = PATH.normalize(filename);\n var searchpaths = [];\n var global = Boolean(flags2 & 256);\n var localScope2 = global ? null : {};\n var combinedFlags = { global, nodelete: Boolean(flags2 & 4096), loadAsync: jsflags.loadAsync };\n if (jsflags.loadAsync) {\n return loadDynamicLibrary(filename, combinedFlags, localScope2, handle2);\n }\n try {\n return loadDynamicLibrary(filename, combinedFlags, localScope2, handle2);\n } catch (e) {\n dlSetError(`could not load dynamic lib: ${filename}\n${e}`);\n return 0;\n }\n };\n function __dlopen_js(handle2) {\n handle2 >>>= 0;\n return dlopenInternal(handle2, { loadAsync: false });\n }\n __dlopen_js.sig = "pp";\n function __dlsym_js(handle2, symbol, symbolIndex) {\n handle2 >>>= 0;\n symbol >>>= 0;\n symbolIndex >>>= 0;\n symbol = UTF8ToString(symbol);\n var result;\n var newSymIndex;\n var lib = LDSO.loadedLibsByHandle[handle2];\n newSymIndex = Object.keys(lib.exports).indexOf(symbol);\n if (newSymIndex == -1 || lib.exports[symbol].stub) {\n dlSetError(`Tried to lookup unknown symbol "${symbol}" in dynamic lib: ${lib.name}`);\n return 0;\n }\n result = lib.exports[symbol];\n if (typeof result == "function") {\n var addr2 = getFunctionAddress(result);\n if (addr2) {\n result = addr2;\n } else {\n result = addFunction(result, result.sig);\n HEAPU32[symbolIndex >>> 2 >>> 0] = newSymIndex;\n }\n }\n return result;\n }\n __dlsym_js.sig = "pppp";\n var handleException = (e) => {\n if (e instanceof ExitStatus || e == "unwind") {\n return EXITSTATUS;\n }\n quit_(1, e);\n };\n var runtimeKeepaliveCounter = 0;\n var keepRuntimeAlive = () => noExitRuntime || runtimeKeepaliveCounter > 0;\n var _proc_exit = (code) => {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n Module["onExit"]?.(code);\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n };\n _proc_exit.sig = "vi";\n var exitJS = (status, implicit) => {\n EXITSTATUS = status;\n if (!keepRuntimeAlive()) {\n exitRuntime();\n }\n _proc_exit(status);\n };\n var _exit = exitJS;\n _exit.sig = "vi";\n var maybeExit = () => {\n if (runtimeExited) {\n return;\n }\n if (!keepRuntimeAlive()) {\n try {\n _exit(EXITSTATUS);\n } catch (e) {\n handleException(e);\n }\n }\n };\n var callUserCallback = (func2) => {\n if (runtimeExited || ABORT) {\n return;\n }\n try {\n return func2();\n } catch (e) {\n handleException(e);\n } finally {\n maybeExit();\n }\n };\n var runtimeKeepalivePush = () => {\n runtimeKeepaliveCounter += 1;\n };\n runtimeKeepalivePush.sig = "v";\n var runtimeKeepalivePop = () => {\n runtimeKeepaliveCounter -= 1;\n };\n runtimeKeepalivePop.sig = "v";\n function __emscripten_dlopen_js(handle2, onsuccess, onerror2, user_data) {\n handle2 >>>= 0;\n onsuccess >>>= 0;\n onerror2 >>>= 0;\n user_data >>>= 0;\n function errorCallback(e) {\n var filename = UTF8ToString(handle2 + 36);\n dlSetError(`\'Could not load dynamic lib: ${filename}\n${e}`);\n runtimeKeepalivePop();\n callUserCallback(() => getWasmTableEntry(onerror2)(handle2, user_data));\n }\n function successCallback() {\n runtimeKeepalivePop();\n callUserCallback(() => getWasmTableEntry(onsuccess)(handle2, user_data));\n }\n runtimeKeepalivePush();\n var promise = dlopenInternal(handle2, { loadAsync: true });\n if (promise) {\n promise.then(successCallback, errorCallback);\n } else {\n errorCallback();\n }\n }\n __emscripten_dlopen_js.sig = "vpppp";\n var getExecutableName = () => thisProgram || "./this.program";\n function __emscripten_get_progname(str, len) {\n str >>>= 0;\n return stringToUTF8(getExecutableName(), str, len);\n }\n __emscripten_get_progname.sig = "vpi";\n var jsStackTrace = () => new Error().stack.toString();\n var getCallstack = (flags2) => {\n var callstack = jsStackTrace();\n var lines = callstack.split("\\n");\n callstack = "";\n var firefoxRe = new RegExp("\\\\s*(.*?)@(.*?):([0-9]+):([0-9]+)");\n var chromeRe = new RegExp("\\\\s*at (.*?) \\\\((.*):(.*):(.*)\\\\)");\n for (var line of lines) {\n var symbolName = "";\n var file = "";\n var lineno = 0;\n var column = 0;\n var parts = chromeRe.exec(line);\n if (parts?.length == 5) {\n symbolName = parts[1];\n file = parts[2];\n lineno = parts[3];\n column = parts[4];\n } else {\n parts = firefoxRe.exec(line);\n if (parts?.length >= 4) {\n symbolName = parts[1];\n file = parts[2];\n lineno = parts[3];\n column = parts[4] | 0;\n } else {\n callstack += line + "\\n";\n continue;\n }\n }\n if (symbolName == "_emscripten_log" || symbolName == "_emscripten_get_callstack") {\n callstack = "";\n continue;\n }\n if (flags2 & 24) {\n if (flags2 & 64) {\n file = file.substring(file.replace(/\\\\/g, "/").lastIndexOf("/") + 1);\n }\n callstack += ` at ${symbolName} (${file}:${lineno}:${column})\n`;\n }\n }\n callstack = callstack.replace(/\\s+$/, "");\n return callstack;\n };\n function __emscripten_log_formatted(flags2, str) {\n str >>>= 0;\n str = UTF8ToString(str);\n if (flags2 & 24) {\n str = str.replace(/\\s+$/, "");\n str += (str.length > 0 ? "\\n" : "") + getCallstack(flags2);\n }\n if (flags2 & 1) {\n if (flags2 & 4) {\n console.error(str);\n } else if (flags2 & 2) {\n console.warn(str);\n } else if (flags2 & 512) {\n console.info(str);\n } else if (flags2 & 256) {\n console.debug(str);\n } else {\n console.log(str);\n }\n } else if (flags2 & 6) {\n err(str);\n } else {\n out(str);\n }\n }\n __emscripten_log_formatted.sig = "vip";\n function __emscripten_lookup_name(name2) {\n name2 >>>= 0;\n var nameString = UTF8ToString(name2);\n return inetPton4(DNS.lookup_name(nameString));\n }\n __emscripten_lookup_name.sig = "ip";\n var __emscripten_runtime_keepalive_clear = () => {\n noExitRuntime = false;\n runtimeKeepaliveCounter = 0;\n };\n __emscripten_runtime_keepalive_clear.sig = "v";\n function __emscripten_system(command) {\n command >>>= 0;\n if (ENVIRONMENT_IS_NODE) {\n if (!command) return 1;\n var cmdstr = UTF8ToString(command);\n if (!cmdstr.length) return 0;\n var cp = require("node:child_process");\n var ret = cp.spawnSync(cmdstr, [], { shell: true, stdio: "inherit" });\n var _W_EXITCODE = (ret2, sig2) => ret2 << 8 | sig2;\n if (ret.status === null) {\n var signalToNumber = (sig2) => {\n switch (sig2) {\n case "SIGHUP":\n return 1;\n case "SIGQUIT":\n return 3;\n case "SIGFPE":\n return 8;\n case "SIGKILL":\n return 9;\n case "SIGALRM":\n return 14;\n case "SIGTERM":\n return 15;\n default:\n return 2;\n }\n };\n return _W_EXITCODE(0, signalToNumber(ret.signal));\n }\n return _W_EXITCODE(ret.status, 0);\n }\n if (!command) return 0;\n return -52;\n }\n __emscripten_system.sig = "ip";\n function __gmtime_js(time, tmPtr) {\n time = bigintToI53Checked(time);\n tmPtr >>>= 0;\n var date = new Date(time * 1e3);\n HEAP32[tmPtr >>> 2 >>> 0] = date.getUTCSeconds();\n HEAP32[tmPtr + 4 >>> 2 >>> 0] = date.getUTCMinutes();\n HEAP32[tmPtr + 8 >>> 2 >>> 0] = date.getUTCHours();\n HEAP32[tmPtr + 12 >>> 2 >>> 0] = date.getUTCDate();\n HEAP32[tmPtr + 16 >>> 2 >>> 0] = date.getUTCMonth();\n HEAP32[tmPtr + 20 >>> 2 >>> 0] = date.getUTCFullYear() - 1900;\n HEAP32[tmPtr + 24 >>> 2 >>> 0] = date.getUTCDay();\n var start2 = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);\n var yday = (date.getTime() - start2) / (1e3 * 60 * 60 * 24) | 0;\n HEAP32[tmPtr + 28 >>> 2 >>> 0] = yday;\n }\n __gmtime_js.sig = "vjp";\n var isLeapYear = (year) => year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n var MONTH_DAYS_LEAP_CUMULATIVE = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\n var MONTH_DAYS_REGULAR_CUMULATIVE = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];\n var ydayFromDate = (date) => {\n var leap = isLeapYear(date.getFullYear());\n var monthDaysCumulative = leap ? MONTH_DAYS_LEAP_CUMULATIVE : MONTH_DAYS_REGULAR_CUMULATIVE;\n var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1;\n return yday;\n };\n function __localtime_js(time, tmPtr) {\n time = bigintToI53Checked(time);\n tmPtr >>>= 0;\n var date = new Date(time * 1e3);\n HEAP32[tmPtr >>> 2 >>> 0] = date.getSeconds();\n HEAP32[tmPtr + 4 >>> 2 >>> 0] = date.getMinutes();\n HEAP32[tmPtr + 8 >>> 2 >>> 0] = date.getHours();\n HEAP32[tmPtr + 12 >>> 2 >>> 0] = date.getDate();\n HEAP32[tmPtr + 16 >>> 2 >>> 0] = date.getMonth();\n HEAP32[tmPtr + 20 >>> 2 >>> 0] = date.getFullYear() - 1900;\n HEAP32[tmPtr + 24 >>> 2 >>> 0] = date.getDay();\n var yday = ydayFromDate(date) | 0;\n HEAP32[tmPtr + 28 >>> 2 >>> 0] = yday;\n HEAP32[tmPtr + 36 >>> 2 >>> 0] = -(date.getTimezoneOffset() * 60);\n var start2 = new Date(date.getFullYear(), 0, 1);\n var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n var winterOffset = start2.getTimezoneOffset();\n var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;\n HEAP32[tmPtr + 32 >>> 2 >>> 0] = dst;\n }\n __localtime_js.sig = "vjp";\n var __mktime_js = function(tmPtr) {\n tmPtr >>>= 0;\n var ret = (() => {\n var date = new Date(HEAP32[tmPtr + 20 >>> 2 >>> 0] + 1900, HEAP32[tmPtr + 16 >>> 2 >>> 0], HEAP32[tmPtr + 12 >>> 2 >>> 0], HEAP32[tmPtr + 8 >>> 2 >>> 0], HEAP32[tmPtr + 4 >>> 2 >>> 0], HEAP32[tmPtr >>> 2 >>> 0], 0);\n var dst = HEAP32[tmPtr + 32 >>> 2 >>> 0];\n var guessedOffset = date.getTimezoneOffset();\n var start2 = new Date(date.getFullYear(), 0, 1);\n var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n var winterOffset = start2.getTimezoneOffset();\n var dstOffset = Math.min(winterOffset, summerOffset);\n if (dst < 0) {\n HEAP32[tmPtr + 32 >>> 2 >>> 0] = Number(summerOffset != winterOffset && dstOffset == guessedOffset);\n } else if (dst > 0 != (dstOffset == guessedOffset)) {\n var nonDstOffset = Math.max(winterOffset, summerOffset);\n var trueOffset = dst > 0 ? dstOffset : nonDstOffset;\n date.setTime(date.getTime() + (trueOffset - guessedOffset) * 6e4);\n }\n HEAP32[tmPtr + 24 >>> 2 >>> 0] = date.getDay();\n var yday = ydayFromDate(date) | 0;\n HEAP32[tmPtr + 28 >>> 2 >>> 0] = yday;\n HEAP32[tmPtr >>> 2 >>> 0] = date.getSeconds();\n HEAP32[tmPtr + 4 >>> 2 >>> 0] = date.getMinutes();\n HEAP32[tmPtr + 8 >>> 2 >>> 0] = date.getHours();\n HEAP32[tmPtr + 12 >>> 2 >>> 0] = date.getDate();\n HEAP32[tmPtr + 16 >>> 2 >>> 0] = date.getMonth();\n HEAP32[tmPtr + 20 >>> 2 >>> 0] = date.getYear();\n var timeMs = date.getTime();\n if (isNaN(timeMs)) {\n return -1;\n }\n return timeMs / 1e3;\n })();\n return BigInt(ret);\n };\n __mktime_js.sig = "jp";\n function __mmap_js(len, prot, flags2, fd, offset, allocated, addr2) {\n len >>>= 0;\n offset = bigintToI53Checked(offset);\n allocated >>>= 0;\n addr2 >>>= 0;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var res = FS.mmap(stream, len, offset, prot, flags2);\n var ptr2 = res.ptr;\n HEAP32[allocated >>> 2 >>> 0] = res.allocated;\n HEAPU32[addr2 >>> 2 >>> 0] = ptr2;\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n __mmap_js.sig = "ipiiijpp";\n function __msync_js(addr2, len, prot, flags2, fd, offset) {\n addr2 >>>= 0;\n len >>>= 0;\n offset = bigintToI53Checked(offset);\n try {\n if (isNaN(offset)) return -61;\n SYSCALLS.doMsync(addr2, SYSCALLS.getStreamFromFD(fd), len, flags2, offset);\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n __msync_js.sig = "ippiiij";\n function __munmap_js(addr2, len, prot, flags2, fd, offset) {\n addr2 >>>= 0;\n len >>>= 0;\n offset = bigintToI53Checked(offset);\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n if (prot & 2) {\n SYSCALLS.doMsync(addr2, stream, len, flags2, offset);\n }\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return -e.errno;\n }\n }\n __munmap_js.sig = "ippiiij";\n var timers = {};\n var _emscripten_get_now = () => performance.now();\n _emscripten_get_now.sig = "d";\n var __setitimer_js = (which, timeout_ms) => {\n if (timers[which]) {\n clearTimeout(timers[which].id);\n delete timers[which];\n }\n if (!timeout_ms) return 0;\n var id = setTimeout(() => {\n delete timers[which];\n callUserCallback(() => __emscripten_timeout(which, _emscripten_get_now()));\n }, timeout_ms);\n timers[which] = { id, timeout_ms };\n return 0;\n };\n __setitimer_js.sig = "iid";\n var __timegm_js = function(tmPtr) {\n tmPtr >>>= 0;\n var ret = (() => {\n var time = Date.UTC(HEAP32[tmPtr + 20 >>> 2 >>> 0] + 1900, HEAP32[tmPtr + 16 >>> 2 >>> 0], HEAP32[tmPtr + 12 >>> 2 >>> 0], HEAP32[tmPtr + 8 >>> 2 >>> 0], HEAP32[tmPtr + 4 >>> 2 >>> 0], HEAP32[tmPtr >>> 2 >>> 0], 0);\n var date = new Date(time);\n HEAP32[tmPtr + 24 >>> 2 >>> 0] = date.getUTCDay();\n var start2 = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);\n var yday = (date.getTime() - start2) / (1e3 * 60 * 60 * 24) | 0;\n HEAP32[tmPtr + 28 >>> 2 >>> 0] = yday;\n return date.getTime() / 1e3;\n })();\n return BigInt(ret);\n };\n __timegm_js.sig = "jp";\n var __tzset_js = function(timezone, daylight, std_name, dst_name) {\n timezone >>>= 0;\n daylight >>>= 0;\n std_name >>>= 0;\n dst_name >>>= 0;\n var currentYear = (/* @__PURE__ */ new Date()).getFullYear();\n var winter = new Date(currentYear, 0, 1);\n var summer = new Date(currentYear, 6, 1);\n var winterOffset = winter.getTimezoneOffset();\n var summerOffset = summer.getTimezoneOffset();\n var stdTimezoneOffset = Math.max(winterOffset, summerOffset);\n HEAPU32[timezone >>> 2 >>> 0] = stdTimezoneOffset * 60;\n HEAP32[daylight >>> 2 >>> 0] = Number(winterOffset != summerOffset);\n var extractZone = (timezoneOffset) => {\n var sign = timezoneOffset >= 0 ? "-" : "+";\n var absOffset = Math.abs(timezoneOffset);\n var hours = String(Math.floor(absOffset / 60)).padStart(2, "0");\n var minutes = String(absOffset % 60).padStart(2, "0");\n return `UTC${sign}${hours}${minutes}`;\n };\n var winterName = extractZone(winterOffset);\n var summerName = extractZone(summerOffset);\n if (summerOffset < winterOffset) {\n stringToUTF8(winterName, std_name, 17);\n stringToUTF8(summerName, dst_name, 17);\n } else {\n stringToUTF8(winterName, dst_name, 17);\n stringToUTF8(summerName, std_name, 17);\n }\n };\n __tzset_js.sig = "vpppp";\n var _emscripten_get_now_res = () => {\n if (ENVIRONMENT_IS_NODE) {\n return 1;\n }\n return 1e3;\n };\n _emscripten_get_now_res.sig = "d";\n var nowIsMonotonic = 1;\n var checkWasiClock = (clock_id) => clock_id >= 0 && clock_id <= 3;\n function _clock_res_get(clk_id, pres) {\n pres >>>= 0;\n if (!checkWasiClock(clk_id)) {\n return 28;\n }\n var nsec;\n if (clk_id === 0) {\n nsec = 1e3 * 1e3;\n } else if (nowIsMonotonic) {\n nsec = _emscripten_get_now_res();\n } else {\n return 52;\n }\n HEAP64[pres >>> 3 >>> 0] = BigInt(nsec);\n return 0;\n }\n _clock_res_get.sig = "iip";\n var _emscripten_date_now = () => Date.now();\n _emscripten_date_now.sig = "d";\n function _clock_time_get(clk_id, ignored_precision, ptime) {\n ignored_precision = bigintToI53Checked(ignored_precision);\n ptime >>>= 0;\n if (!checkWasiClock(clk_id)) {\n return 28;\n }\n var now;\n if (clk_id === 0) {\n now = _emscripten_date_now();\n } else if (nowIsMonotonic) {\n now = _emscripten_get_now();\n } else {\n return 52;\n }\n var nsec = Math.round(now * 1e3 * 1e3);\n HEAP64[ptime >>> 3 >>> 0] = BigInt(nsec);\n return 0;\n }\n _clock_time_get.sig = "iijp";\n var readEmAsmArgsArray = [];\n var readEmAsmArgs = (sigPtr, buf) => {\n readEmAsmArgsArray.length = 0;\n var ch;\n while (ch = HEAPU8[sigPtr++ >>> 0]) {\n var wide = ch != 105;\n wide &= ch != 112;\n buf += wide && buf % 8 ? 4 : 0;\n readEmAsmArgsArray.push(ch == 112 ? HEAPU32[buf >>> 2 >>> 0] : ch == 106 ? HEAP64[buf >>> 3 >>> 0] : ch == 105 ? HEAP32[buf >>> 2 >>> 0] : HEAPF64[buf >>> 3 >>> 0]);\n buf += wide ? 8 : 4;\n }\n return readEmAsmArgsArray;\n };\n var runEmAsmFunction = (code, sigPtr, argbuf) => {\n var args2 = readEmAsmArgs(sigPtr, argbuf);\n return ASM_CONSTS[code](...args2);\n };\n function _emscripten_asm_const_int(code, sigPtr, argbuf) {\n code >>>= 0;\n sigPtr >>>= 0;\n argbuf >>>= 0;\n return runEmAsmFunction(code, sigPtr, argbuf);\n }\n _emscripten_asm_const_int.sig = "ippp";\n function _emscripten_console_error(str) {\n str >>>= 0;\n console.error(UTF8ToString(str));\n }\n _emscripten_console_error.sig = "vp";\n function _emscripten_console_log(str) {\n str >>>= 0;\n console.log(UTF8ToString(str));\n }\n _emscripten_console_log.sig = "vp";\n function _emscripten_console_trace(str) {\n str >>>= 0;\n console.trace(UTF8ToString(str));\n }\n _emscripten_console_trace.sig = "vp";\n function _emscripten_console_warn(str) {\n str >>>= 0;\n console.warn(UTF8ToString(str));\n }\n _emscripten_console_warn.sig = "vp";\n var _emscripten_debugger = () => {\n debugger;\n };\n _emscripten_debugger.sig = "v";\n function _emscripten_err(str) {\n str >>>= 0;\n return err(UTF8ToString(str));\n }\n _emscripten_err.sig = "vp";\n var getHeapMax = () => 4294901760;\n function _emscripten_get_heap_max() {\n return getHeapMax();\n }\n _emscripten_get_heap_max.sig = "p";\n var GLctx;\n var webgl_enable_ANGLE_instanced_arrays = (ctx) => {\n var ext = ctx.getExtension("ANGLE_instanced_arrays");\n if (ext) {\n ctx["vertexAttribDivisor"] = (index, divisor) => ext["vertexAttribDivisorANGLE"](index, divisor);\n ctx["drawArraysInstanced"] = (mode, first, count, primcount) => ext["drawArraysInstancedANGLE"](mode, first, count, primcount);\n ctx["drawElementsInstanced"] = (mode, count, type, indices, primcount) => ext["drawElementsInstancedANGLE"](mode, count, type, indices, primcount);\n return 1;\n }\n };\n var webgl_enable_OES_vertex_array_object = (ctx) => {\n var ext = ctx.getExtension("OES_vertex_array_object");\n if (ext) {\n ctx["createVertexArray"] = () => ext["createVertexArrayOES"]();\n ctx["deleteVertexArray"] = (vao) => ext["deleteVertexArrayOES"](vao);\n ctx["bindVertexArray"] = (vao) => ext["bindVertexArrayOES"](vao);\n ctx["isVertexArray"] = (vao) => ext["isVertexArrayOES"](vao);\n return 1;\n }\n };\n var webgl_enable_WEBGL_draw_buffers = (ctx) => {\n var ext = ctx.getExtension("WEBGL_draw_buffers");\n if (ext) {\n ctx["drawBuffers"] = (n, bufs) => ext["drawBuffersWEBGL"](n, bufs);\n return 1;\n }\n };\n var webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance = (ctx) => !!(ctx.dibvbi = ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"));\n var webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance = (ctx) => !!(ctx.mdibvbi = ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"));\n var webgl_enable_EXT_polygon_offset_clamp = (ctx) => !!(ctx.extPolygonOffsetClamp = ctx.getExtension("EXT_polygon_offset_clamp"));\n var webgl_enable_EXT_clip_control = (ctx) => !!(ctx.extClipControl = ctx.getExtension("EXT_clip_control"));\n var webgl_enable_WEBGL_polygon_mode = (ctx) => !!(ctx.webglPolygonMode = ctx.getExtension("WEBGL_polygon_mode"));\n var webgl_enable_WEBGL_multi_draw = (ctx) => !!(ctx.multiDrawWebgl = ctx.getExtension("WEBGL_multi_draw"));\n var getEmscriptenSupportedExtensions = (ctx) => {\n var supportedExtensions = ["ANGLE_instanced_arrays", "EXT_blend_minmax", "EXT_disjoint_timer_query", "EXT_frag_depth", "EXT_shader_texture_lod", "EXT_sRGB", "OES_element_index_uint", "OES_fbo_render_mipmap", "OES_standard_derivatives", "OES_texture_float", "OES_texture_half_float", "OES_texture_half_float_linear", "OES_vertex_array_object", "WEBGL_color_buffer_float", "WEBGL_depth_texture", "WEBGL_draw_buffers", "EXT_color_buffer_float", "EXT_conservative_depth", "EXT_disjoint_timer_query_webgl2", "EXT_texture_norm16", "NV_shader_noperspective_interpolation", "WEBGL_clip_cull_distance", "EXT_clip_control", "EXT_color_buffer_half_float", "EXT_depth_clamp", "EXT_float_blend", "EXT_polygon_offset_clamp", "EXT_texture_compression_bptc", "EXT_texture_compression_rgtc", "EXT_texture_filter_anisotropic", "KHR_parallel_shader_compile", "OES_texture_float_linear", "WEBGL_blend_func_extended", "WEBGL_compressed_texture_astc", "WEBGL_compressed_texture_etc", "WEBGL_compressed_texture_etc1", "WEBGL_compressed_texture_s3tc", "WEBGL_compressed_texture_s3tc_srgb", "WEBGL_debug_renderer_info", "WEBGL_debug_shaders", "WEBGL_lose_context", "WEBGL_multi_draw", "WEBGL_polygon_mode"];\n return (ctx.getSupportedExtensions() || []).filter((ext) => supportedExtensions.includes(ext));\n };\n var GL = { counter: 1, buffers: [], programs: [], framebuffers: [], renderbuffers: [], textures: [], shaders: [], vaos: [], contexts: [], offscreenCanvases: {}, queries: [], samplers: [], transformFeedbacks: [], syncs: [], stringCache: {}, stringiCache: {}, unpackAlignment: 4, unpackRowLength: 0, recordError: (errorCode) => {\n if (!GL.lastError) {\n GL.lastError = errorCode;\n }\n }, getNewId: (table) => {\n var ret = GL.counter++;\n for (var i2 = table.length; i2 < ret; i2++) {\n table[i2] = null;\n }\n return ret;\n }, genObject: (n, buffers, createFunction, objectTable) => {\n for (var i2 = 0; i2 < n; i2++) {\n var buffer = GLctx[createFunction]();\n var id = buffer && GL.getNewId(objectTable);\n if (buffer) {\n buffer.name = id;\n objectTable[id] = buffer;\n } else {\n GL.recordError(1282);\n }\n HEAP32[buffers + i2 * 4 >>> 2 >>> 0] = id;\n }\n }, getSource: (shader, count, string, length) => {\n var source = "";\n for (var i2 = 0; i2 < count; ++i2) {\n var len = length ? HEAPU32[length + i2 * 4 >>> 2 >>> 0] : void 0;\n source += UTF8ToString(HEAPU32[string + i2 * 4 >>> 2 >>> 0], len);\n }\n return source;\n }, createContext: (canvas, webGLContextAttributes) => {\n var ctx = webGLContextAttributes.majorVersion > 1 ? canvas.getContext("webgl2", webGLContextAttributes) : canvas.getContext("webgl", webGLContextAttributes);\n if (!ctx) return 0;\n var handle2 = GL.registerContext(ctx, webGLContextAttributes);\n return handle2;\n }, registerContext: (ctx, webGLContextAttributes) => {\n var handle2 = GL.getNewId(GL.contexts);\n var context = { handle: handle2, attributes: webGLContextAttributes, version: webGLContextAttributes.majorVersion, GLctx: ctx };\n if (ctx.canvas) ctx.canvas.GLctxObject = context;\n GL.contexts[handle2] = context;\n if (typeof webGLContextAttributes.enableExtensionsByDefault == "undefined" || webGLContextAttributes.enableExtensionsByDefault) {\n GL.initExtensions(context);\n }\n return handle2;\n }, makeContextCurrent: (contextHandle) => {\n GL.currentContext = GL.contexts[contextHandle];\n Module["ctx"] = GLctx = GL.currentContext?.GLctx;\n return !(contextHandle && !GLctx);\n }, getContext: (contextHandle) => GL.contexts[contextHandle], deleteContext: (contextHandle) => {\n if (GL.currentContext === GL.contexts[contextHandle]) {\n GL.currentContext = null;\n }\n if (typeof JSEvents == "object") {\n JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);\n }\n if (GL.contexts[contextHandle]?.GLctx.canvas) {\n GL.contexts[contextHandle].GLctx.canvas.GLctxObject = void 0;\n }\n GL.contexts[contextHandle] = null;\n }, initExtensions: (context) => {\n context ||= GL.currentContext;\n if (context.initExtensionsDone) return;\n context.initExtensionsDone = true;\n var GLctx2 = context.GLctx;\n webgl_enable_WEBGL_multi_draw(GLctx2);\n webgl_enable_EXT_polygon_offset_clamp(GLctx2);\n webgl_enable_EXT_clip_control(GLctx2);\n webgl_enable_WEBGL_polygon_mode(GLctx2);\n webgl_enable_ANGLE_instanced_arrays(GLctx2);\n webgl_enable_OES_vertex_array_object(GLctx2);\n webgl_enable_WEBGL_draw_buffers(GLctx2);\n webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx2);\n webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx2);\n if (context.version >= 2) {\n GLctx2.disjointTimerQueryExt = GLctx2.getExtension("EXT_disjoint_timer_query_webgl2");\n }\n if (context.version < 2 || !GLctx2.disjointTimerQueryExt) {\n GLctx2.disjointTimerQueryExt = GLctx2.getExtension("EXT_disjoint_timer_query");\n }\n for (var ext of getEmscriptenSupportedExtensions(GLctx2)) {\n if (!ext.includes("lose_context") && !ext.includes("debug")) {\n GLctx2.getExtension(ext);\n }\n }\n } };\n var _emscripten_glActiveTexture = (x0) => GLctx.activeTexture(x0);\n _emscripten_glActiveTexture.sig = "vi";\n var _emscripten_glAttachShader = (program, shader) => {\n GLctx.attachShader(GL.programs[program], GL.shaders[shader]);\n };\n _emscripten_glAttachShader.sig = "vii";\n var _emscripten_glBeginQuery = (target, id) => {\n GLctx.beginQuery(target, GL.queries[id]);\n };\n _emscripten_glBeginQuery.sig = "vii";\n var _emscripten_glBeginQueryEXT = (target, id) => {\n GLctx.disjointTimerQueryExt["beginQueryEXT"](target, GL.queries[id]);\n };\n _emscripten_glBeginQueryEXT.sig = "vii";\n var _emscripten_glBeginTransformFeedback = (x0) => GLctx.beginTransformFeedback(x0);\n _emscripten_glBeginTransformFeedback.sig = "vi";\n function _emscripten_glBindAttribLocation(program, index, name2) {\n name2 >>>= 0;\n GLctx.bindAttribLocation(GL.programs[program], index, UTF8ToString(name2));\n }\n _emscripten_glBindAttribLocation.sig = "viip";\n var _emscripten_glBindBuffer = (target, buffer) => {\n if (target == 35051) {\n GLctx.currentPixelPackBufferBinding = buffer;\n } else if (target == 35052) {\n GLctx.currentPixelUnpackBufferBinding = buffer;\n }\n GLctx.bindBuffer(target, GL.buffers[buffer]);\n };\n _emscripten_glBindBuffer.sig = "vii";\n var _emscripten_glBindBufferBase = (target, index, buffer) => {\n GLctx.bindBufferBase(target, index, GL.buffers[buffer]);\n };\n _emscripten_glBindBufferBase.sig = "viii";\n function _emscripten_glBindBufferRange(target, index, buffer, offset, ptrsize) {\n offset >>>= 0;\n ptrsize >>>= 0;\n GLctx.bindBufferRange(target, index, GL.buffers[buffer], offset, ptrsize);\n }\n _emscripten_glBindBufferRange.sig = "viiipp";\n var _emscripten_glBindFramebuffer = (target, framebuffer) => {\n GLctx.bindFramebuffer(target, GL.framebuffers[framebuffer]);\n };\n _emscripten_glBindFramebuffer.sig = "vii";\n var _emscripten_glBindRenderbuffer = (target, renderbuffer) => {\n GLctx.bindRenderbuffer(target, GL.renderbuffers[renderbuffer]);\n };\n _emscripten_glBindRenderbuffer.sig = "vii";\n var _emscripten_glBindSampler = (unit, sampler) => {\n GLctx.bindSampler(unit, GL.samplers[sampler]);\n };\n _emscripten_glBindSampler.sig = "vii";\n var _emscripten_glBindTexture = (target, texture) => {\n GLctx.bindTexture(target, GL.textures[texture]);\n };\n _emscripten_glBindTexture.sig = "vii";\n var _emscripten_glBindTransformFeedback = (target, id) => {\n GLctx.bindTransformFeedback(target, GL.transformFeedbacks[id]);\n };\n _emscripten_glBindTransformFeedback.sig = "vii";\n var _emscripten_glBindVertexArray = (vao) => {\n GLctx.bindVertexArray(GL.vaos[vao]);\n };\n _emscripten_glBindVertexArray.sig = "vi";\n var _glBindVertexArray = _emscripten_glBindVertexArray;\n _glBindVertexArray.sig = "vi";\n var _emscripten_glBindVertexArrayOES = _glBindVertexArray;\n _emscripten_glBindVertexArrayOES.sig = "vi";\n var _emscripten_glBlendColor = (x0, x1, x2, x3) => GLctx.blendColor(x0, x1, x2, x3);\n _emscripten_glBlendColor.sig = "vffff";\n var _emscripten_glBlendEquation = (x0) => GLctx.blendEquation(x0);\n _emscripten_glBlendEquation.sig = "vi";\n var _emscripten_glBlendEquationSeparate = (x0, x1) => GLctx.blendEquationSeparate(x0, x1);\n _emscripten_glBlendEquationSeparate.sig = "vii";\n var _emscripten_glBlendFunc = (x0, x1) => GLctx.blendFunc(x0, x1);\n _emscripten_glBlendFunc.sig = "vii";\n var _emscripten_glBlendFuncSeparate = (x0, x1, x2, x3) => GLctx.blendFuncSeparate(x0, x1, x2, x3);\n _emscripten_glBlendFuncSeparate.sig = "viiii";\n var _emscripten_glBlitFramebuffer = (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9) => GLctx.blitFramebuffer(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9);\n _emscripten_glBlitFramebuffer.sig = "viiiiiiiiii";\n function _emscripten_glBufferData(target, size, data2, usage) {\n size >>>= 0;\n data2 >>>= 0;\n GLctx.bufferData(target, data2 ? HEAPU8.subarray(data2 >>> 0, data2 + size >>> 0) : size, usage);\n }\n _emscripten_glBufferData.sig = "vippi";\n function _emscripten_glBufferSubData(target, offset, size, data2) {\n offset >>>= 0;\n size >>>= 0;\n data2 >>>= 0;\n GLctx.bufferSubData(target, offset, HEAPU8.subarray(data2 >>> 0, data2 + size >>> 0));\n }\n _emscripten_glBufferSubData.sig = "vippp";\n var _emscripten_glCheckFramebufferStatus = (x0) => GLctx.checkFramebufferStatus(x0);\n _emscripten_glCheckFramebufferStatus.sig = "ii";\n var _emscripten_glClear = (x0) => GLctx.clear(x0);\n _emscripten_glClear.sig = "vi";\n var _emscripten_glClearBufferfi = (x0, x1, x2, x3) => GLctx.clearBufferfi(x0, x1, x2, x3);\n _emscripten_glClearBufferfi.sig = "viifi";\n function _emscripten_glClearBufferfv(buffer, drawbuffer, value2) {\n value2 >>>= 0;\n GLctx.clearBufferfv(buffer, drawbuffer, HEAPF32, value2 >>> 2);\n }\n _emscripten_glClearBufferfv.sig = "viip";\n function _emscripten_glClearBufferiv(buffer, drawbuffer, value2) {\n value2 >>>= 0;\n GLctx.clearBufferiv(buffer, drawbuffer, HEAP32, value2 >>> 2);\n }\n _emscripten_glClearBufferiv.sig = "viip";\n function _emscripten_glClearBufferuiv(buffer, drawbuffer, value2) {\n value2 >>>= 0;\n GLctx.clearBufferuiv(buffer, drawbuffer, HEAPU32, value2 >>> 2);\n }\n _emscripten_glClearBufferuiv.sig = "viip";\n var _emscripten_glClearColor = (x0, x1, x2, x3) => GLctx.clearColor(x0, x1, x2, x3);\n _emscripten_glClearColor.sig = "vffff";\n var _emscripten_glClearDepthf = (x0) => GLctx.clearDepth(x0);\n _emscripten_glClearDepthf.sig = "vf";\n var _emscripten_glClearStencil = (x0) => GLctx.clearStencil(x0);\n _emscripten_glClearStencil.sig = "vi";\n function _emscripten_glClientWaitSync(sync, flags2, timeout) {\n sync >>>= 0;\n timeout = Number(timeout);\n return GLctx.clientWaitSync(GL.syncs[sync], flags2, timeout);\n }\n _emscripten_glClientWaitSync.sig = "ipij";\n var _emscripten_glClipControlEXT = (origin, depth) => {\n GLctx.extClipControl["clipControlEXT"](origin, depth);\n };\n _emscripten_glClipControlEXT.sig = "vii";\n var _emscripten_glColorMask = (red, green, blue, alpha) => {\n GLctx.colorMask(!!red, !!green, !!blue, !!alpha);\n };\n _emscripten_glColorMask.sig = "viiii";\n var _emscripten_glCompileShader = (shader) => {\n GLctx.compileShader(GL.shaders[shader]);\n };\n _emscripten_glCompileShader.sig = "vi";\n function _emscripten_glCompressedTexImage2D(target, level, internalFormat, width, height, border, imageSize, data2) {\n data2 >>>= 0;\n if (GL.currentContext.version >= 2) {\n if (GLctx.currentPixelUnpackBufferBinding || !imageSize) {\n GLctx.compressedTexImage2D(target, level, internalFormat, width, height, border, imageSize, data2);\n return;\n }\n }\n GLctx.compressedTexImage2D(target, level, internalFormat, width, height, border, HEAPU8.subarray(data2 >>> 0, data2 + imageSize >>> 0));\n }\n _emscripten_glCompressedTexImage2D.sig = "viiiiiiip";\n function _emscripten_glCompressedTexImage3D(target, level, internalFormat, width, height, depth, border, imageSize, data2) {\n data2 >>>= 0;\n if (GLctx.currentPixelUnpackBufferBinding) {\n GLctx.compressedTexImage3D(target, level, internalFormat, width, height, depth, border, imageSize, data2);\n } else {\n GLctx.compressedTexImage3D(target, level, internalFormat, width, height, depth, border, HEAPU8, data2, imageSize);\n }\n }\n _emscripten_glCompressedTexImage3D.sig = "viiiiiiiip";\n function _emscripten_glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data2) {\n data2 >>>= 0;\n if (GL.currentContext.version >= 2) {\n if (GLctx.currentPixelUnpackBufferBinding || !imageSize) {\n GLctx.compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data2);\n return;\n }\n }\n GLctx.compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, HEAPU8.subarray(data2 >>> 0, data2 + imageSize >>> 0));\n }\n _emscripten_glCompressedTexSubImage2D.sig = "viiiiiiiip";\n function _emscripten_glCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data2) {\n data2 >>>= 0;\n if (GLctx.currentPixelUnpackBufferBinding) {\n GLctx.compressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data2);\n } else {\n GLctx.compressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, HEAPU8, data2, imageSize);\n }\n }\n _emscripten_glCompressedTexSubImage3D.sig = "viiiiiiiiiip";\n function _emscripten_glCopyBufferSubData(x0, x1, x2, x3, x4) {\n x2 >>>= 0;\n x3 >>>= 0;\n x4 >>>= 0;\n return GLctx.copyBufferSubData(x0, x1, x2, x3, x4);\n }\n _emscripten_glCopyBufferSubData.sig = "viippp";\n var _emscripten_glCopyTexImage2D = (x0, x1, x2, x3, x4, x5, x6, x7) => GLctx.copyTexImage2D(x0, x1, x2, x3, x4, x5, x6, x7);\n _emscripten_glCopyTexImage2D.sig = "viiiiiiii";\n var _emscripten_glCopyTexSubImage2D = (x0, x1, x2, x3, x4, x5, x6, x7) => GLctx.copyTexSubImage2D(x0, x1, x2, x3, x4, x5, x6, x7);\n _emscripten_glCopyTexSubImage2D.sig = "viiiiiiii";\n var _emscripten_glCopyTexSubImage3D = (x0, x1, x2, x3, x4, x5, x6, x7, x8) => GLctx.copyTexSubImage3D(x0, x1, x2, x3, x4, x5, x6, x7, x8);\n _emscripten_glCopyTexSubImage3D.sig = "viiiiiiiii";\n var _emscripten_glCreateProgram = () => {\n var id = GL.getNewId(GL.programs);\n var program = GLctx.createProgram();\n program.name = id;\n program.maxUniformLength = program.maxAttributeLength = program.maxUniformBlockNameLength = 0;\n program.uniformIdCounter = 1;\n GL.programs[id] = program;\n return id;\n };\n _emscripten_glCreateProgram.sig = "i";\n var _emscripten_glCreateShader = (shaderType) => {\n var id = GL.getNewId(GL.shaders);\n GL.shaders[id] = GLctx.createShader(shaderType);\n return id;\n };\n _emscripten_glCreateShader.sig = "ii";\n var _emscripten_glCullFace = (x0) => GLctx.cullFace(x0);\n _emscripten_glCullFace.sig = "vi";\n function _emscripten_glDeleteBuffers(n, buffers) {\n buffers >>>= 0;\n for (var i2 = 0; i2 < n; i2++) {\n var id = HEAP32[buffers + i2 * 4 >>> 2 >>> 0];\n var buffer = GL.buffers[id];\n if (!buffer) continue;\n GLctx.deleteBuffer(buffer);\n buffer.name = 0;\n GL.buffers[id] = null;\n if (id == GLctx.currentPixelPackBufferBinding) GLctx.currentPixelPackBufferBinding = 0;\n if (id == GLctx.currentPixelUnpackBufferBinding) GLctx.currentPixelUnpackBufferBinding = 0;\n }\n }\n _emscripten_glDeleteBuffers.sig = "vip";\n function _emscripten_glDeleteFramebuffers(n, framebuffers) {\n framebuffers >>>= 0;\n for (var i2 = 0; i2 < n; ++i2) {\n var id = HEAP32[framebuffers + i2 * 4 >>> 2 >>> 0];\n var framebuffer = GL.framebuffers[id];\n if (!framebuffer) continue;\n GLctx.deleteFramebuffer(framebuffer);\n framebuffer.name = 0;\n GL.framebuffers[id] = null;\n }\n }\n _emscripten_glDeleteFramebuffers.sig = "vip";\n var _emscripten_glDeleteProgram = (id) => {\n if (!id) return;\n var program = GL.programs[id];\n if (!program) {\n GL.recordError(1281);\n return;\n }\n GLctx.deleteProgram(program);\n program.name = 0;\n GL.programs[id] = null;\n };\n _emscripten_glDeleteProgram.sig = "vi";\n function _emscripten_glDeleteQueries(n, ids) {\n ids >>>= 0;\n for (var i2 = 0; i2 < n; i2++) {\n var id = HEAP32[ids + i2 * 4 >>> 2 >>> 0];\n var query = GL.queries[id];\n if (!query) continue;\n GLctx.deleteQuery(query);\n GL.queries[id] = null;\n }\n }\n _emscripten_glDeleteQueries.sig = "vip";\n function _emscripten_glDeleteQueriesEXT(n, ids) {\n ids >>>= 0;\n for (var i2 = 0; i2 < n; i2++) {\n var id = HEAP32[ids + i2 * 4 >>> 2 >>> 0];\n var query = GL.queries[id];\n if (!query) continue;\n GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);\n GL.queries[id] = null;\n }\n }\n _emscripten_glDeleteQueriesEXT.sig = "vip";\n function _emscripten_glDeleteRenderbuffers(n, renderbuffers) {\n renderbuffers >>>= 0;\n for (var i2 = 0; i2 < n; i2++) {\n var id = HEAP32[renderbuffers + i2 * 4 >>> 2 >>> 0];\n var renderbuffer = GL.renderbuffers[id];\n if (!renderbuffer) continue;\n GLctx.deleteRenderbuffer(renderbuffer);\n renderbuffer.name = 0;\n GL.renderbuffers[id] = null;\n }\n }\n _emscripten_glDeleteRenderbuffers.sig = "vip";\n function _emscripten_glDeleteSamplers(n, samplers) {\n samplers >>>= 0;\n for (var i2 = 0; i2 < n; i2++) {\n var id = HEAP32[samplers + i2 * 4 >>> 2 >>> 0];\n var sampler = GL.samplers[id];\n if (!sampler) continue;\n GLctx.deleteSampler(sampler);\n sampler.name = 0;\n GL.samplers[id] = null;\n }\n }\n _emscripten_glDeleteSamplers.sig = "vip";\n var _emscripten_glDeleteShader = (id) => {\n if (!id) return;\n var shader = GL.shaders[id];\n if (!shader) {\n GL.recordError(1281);\n return;\n }\n GLctx.deleteShader(shader);\n GL.shaders[id] = null;\n };\n _emscripten_glDeleteShader.sig = "vi";\n function _emscripten_glDeleteSync(id) {\n id >>>= 0;\n if (!id) return;\n var sync = GL.syncs[id];\n if (!sync) {\n GL.recordError(1281);\n return;\n }\n GLctx.deleteSync(sync);\n sync.name = 0;\n GL.syncs[id] = null;\n }\n _emscripten_glDeleteSync.sig = "vp";\n function _emscripten_glDeleteTextures(n, textures) {\n textures >>>= 0;\n for (var i2 = 0; i2 < n; i2++) {\n var id = HEAP32[textures + i2 * 4 >>> 2 >>> 0];\n var texture = GL.textures[id];\n if (!texture) continue;\n GLctx.deleteTexture(texture);\n texture.name = 0;\n GL.textures[id] = null;\n }\n }\n _emscripten_glDeleteTextures.sig = "vip";\n function _emscripten_glDeleteTransformFeedbacks(n, ids) {\n ids >>>= 0;\n for (var i2 = 0; i2 < n; i2++) {\n var id = HEAP32[ids + i2 * 4 >>> 2 >>> 0];\n var transformFeedback = GL.transformFeedbacks[id];\n if (!transformFeedback) continue;\n GLctx.deleteTransformFeedback(transformFeedback);\n transformFeedback.name = 0;\n GL.transformFeedbacks[id] = null;\n }\n }\n _emscripten_glDeleteTransformFeedbacks.sig = "vip";\n function _emscripten_glDeleteVertexArrays(n, vaos) {\n vaos >>>= 0;\n for (var i2 = 0; i2 < n; i2++) {\n var id = HEAP32[vaos + i2 * 4 >>> 2 >>> 0];\n GLctx.deleteVertexArray(GL.vaos[id]);\n GL.vaos[id] = null;\n }\n }\n _emscripten_glDeleteVertexArrays.sig = "vip";\n var _glDeleteVertexArrays = _emscripten_glDeleteVertexArrays;\n _glDeleteVertexArrays.sig = "vip";\n var _emscripten_glDeleteVertexArraysOES = _glDeleteVertexArrays;\n _emscripten_glDeleteVertexArraysOES.sig = "vip";\n var _emscripten_glDepthFunc = (x0) => GLctx.depthFunc(x0);\n _emscripten_glDepthFunc.sig = "vi";\n var _emscripten_glDepthMask = (flag) => {\n GLctx.depthMask(!!flag);\n };\n _emscripten_glDepthMask.sig = "vi";\n var _emscripten_glDepthRangef = (x0, x1) => GLctx.depthRange(x0, x1);\n _emscripten_glDepthRangef.sig = "vff";\n var _emscripten_glDetachShader = (program, shader) => {\n GLctx.detachShader(GL.programs[program], GL.shaders[shader]);\n };\n _emscripten_glDetachShader.sig = "vii";\n var _emscripten_glDisable = (x0) => GLctx.disable(x0);\n _emscripten_glDisable.sig = "vi";\n var _emscripten_glDisableVertexAttribArray = (index) => {\n GLctx.disableVertexAttribArray(index);\n };\n _emscripten_glDisableVertexAttribArray.sig = "vi";\n var _emscripten_glDrawArrays = (mode, first, count) => {\n GLctx.drawArrays(mode, first, count);\n };\n _emscripten_glDrawArrays.sig = "viii";\n var _emscripten_glDrawArraysInstanced = (mode, first, count, primcount) => {\n GLctx.drawArraysInstanced(mode, first, count, primcount);\n };\n _emscripten_glDrawArraysInstanced.sig = "viiii";\n var _glDrawArraysInstanced = _emscripten_glDrawArraysInstanced;\n _glDrawArraysInstanced.sig = "viiii";\n var _emscripten_glDrawArraysInstancedANGLE = _glDrawArraysInstanced;\n var _emscripten_glDrawArraysInstancedARB = _glDrawArraysInstanced;\n var _emscripten_glDrawArraysInstancedEXT = _glDrawArraysInstanced;\n var _emscripten_glDrawArraysInstancedNV = _glDrawArraysInstanced;\n var tempFixedLengthArray = [];\n function _emscripten_glDrawBuffers(n, bufs) {\n bufs >>>= 0;\n var bufArray = tempFixedLengthArray[n];\n for (var i2 = 0; i2 < n; i2++) {\n bufArray[i2] = HEAP32[bufs + i2 * 4 >>> 2 >>> 0];\n }\n GLctx.drawBuffers(bufArray);\n }\n _emscripten_glDrawBuffers.sig = "vip";\n var _glDrawBuffers = _emscripten_glDrawBuffers;\n _glDrawBuffers.sig = "vip";\n var _emscripten_glDrawBuffersEXT = _glDrawBuffers;\n var _emscripten_glDrawBuffersWEBGL = _glDrawBuffers;\n function _emscripten_glDrawElements(mode, count, type, indices) {\n indices >>>= 0;\n GLctx.drawElements(mode, count, type, indices);\n }\n _emscripten_glDrawElements.sig = "viiip";\n function _emscripten_glDrawElementsInstanced(mode, count, type, indices, primcount) {\n indices >>>= 0;\n GLctx.drawElementsInstanced(mode, count, type, indices, primcount);\n }\n _emscripten_glDrawElementsInstanced.sig = "viiipi";\n var _glDrawElementsInstanced = _emscripten_glDrawElementsInstanced;\n _glDrawElementsInstanced.sig = "viiipi";\n var _emscripten_glDrawElementsInstancedANGLE = _glDrawElementsInstanced;\n var _emscripten_glDrawElementsInstancedARB = _glDrawElementsInstanced;\n var _emscripten_glDrawElementsInstancedEXT = _glDrawElementsInstanced;\n var _emscripten_glDrawElementsInstancedNV = _glDrawElementsInstanced;\n var _glDrawElements = _emscripten_glDrawElements;\n _glDrawElements.sig = "viiip";\n function _emscripten_glDrawRangeElements(mode, start2, end, count, type, indices) {\n indices >>>= 0;\n _glDrawElements(mode, count, type, indices);\n }\n _emscripten_glDrawRangeElements.sig = "viiiiip";\n var _emscripten_glEnable = (x0) => GLctx.enable(x0);\n _emscripten_glEnable.sig = "vi";\n var _emscripten_glEnableVertexAttribArray = (index) => {\n GLctx.enableVertexAttribArray(index);\n };\n _emscripten_glEnableVertexAttribArray.sig = "vi";\n var _emscripten_glEndQuery = (x0) => GLctx.endQuery(x0);\n _emscripten_glEndQuery.sig = "vi";\n var _emscripten_glEndQueryEXT = (target) => {\n GLctx.disjointTimerQueryExt["endQueryEXT"](target);\n };\n _emscripten_glEndQueryEXT.sig = "vi";\n var _emscripten_glEndTransformFeedback = () => GLctx.endTransformFeedback();\n _emscripten_glEndTransformFeedback.sig = "v";\n function _emscripten_glFenceSync(condition, flags2) {\n var sync = GLctx.fenceSync(condition, flags2);\n if (sync) {\n var id = GL.getNewId(GL.syncs);\n sync.name = id;\n GL.syncs[id] = sync;\n return id;\n }\n return 0;\n }\n _emscripten_glFenceSync.sig = "pii";\n var _emscripten_glFinish = () => GLctx.finish();\n _emscripten_glFinish.sig = "v";\n var _emscripten_glFlush = () => GLctx.flush();\n _emscripten_glFlush.sig = "v";\n var _emscripten_glFramebufferRenderbuffer = (target, attachment, renderbuffertarget, renderbuffer) => {\n GLctx.framebufferRenderbuffer(target, attachment, renderbuffertarget, GL.renderbuffers[renderbuffer]);\n };\n _emscripten_glFramebufferRenderbuffer.sig = "viiii";\n var _emscripten_glFramebufferTexture2D = (target, attachment, textarget, texture, level) => {\n GLctx.framebufferTexture2D(target, attachment, textarget, GL.textures[texture], level);\n };\n _emscripten_glFramebufferTexture2D.sig = "viiiii";\n var _emscripten_glFramebufferTextureLayer = (target, attachment, texture, level, layer) => {\n GLctx.framebufferTextureLayer(target, attachment, GL.textures[texture], level, layer);\n };\n _emscripten_glFramebufferTextureLayer.sig = "viiiii";\n var _emscripten_glFrontFace = (x0) => GLctx.frontFace(x0);\n _emscripten_glFrontFace.sig = "vi";\n function _emscripten_glGenBuffers(n, buffers) {\n buffers >>>= 0;\n GL.genObject(n, buffers, "createBuffer", GL.buffers);\n }\n _emscripten_glGenBuffers.sig = "vip";\n function _emscripten_glGenFramebuffers(n, ids) {\n ids >>>= 0;\n GL.genObject(n, ids, "createFramebuffer", GL.framebuffers);\n }\n _emscripten_glGenFramebuffers.sig = "vip";\n function _emscripten_glGenQueries(n, ids) {\n ids >>>= 0;\n GL.genObject(n, ids, "createQuery", GL.queries);\n }\n _emscripten_glGenQueries.sig = "vip";\n function _emscripten_glGenQueriesEXT(n, ids) {\n ids >>>= 0;\n for (var i2 = 0; i2 < n; i2++) {\n var query = GLctx.disjointTimerQueryExt["createQueryEXT"]();\n if (!query) {\n GL.recordError(1282);\n while (i2 < n) HEAP32[ids + i2++ * 4 >>> 2 >>> 0] = 0;\n return;\n }\n var id = GL.getNewId(GL.queries);\n query.name = id;\n GL.queries[id] = query;\n HEAP32[ids + i2 * 4 >>> 2 >>> 0] = id;\n }\n }\n _emscripten_glGenQueriesEXT.sig = "vip";\n function _emscripten_glGenRenderbuffers(n, renderbuffers) {\n renderbuffers >>>= 0;\n GL.genObject(n, renderbuffers, "createRenderbuffer", GL.renderbuffers);\n }\n _emscripten_glGenRenderbuffers.sig = "vip";\n function _emscripten_glGenSamplers(n, samplers) {\n samplers >>>= 0;\n GL.genObject(n, samplers, "createSampler", GL.samplers);\n }\n _emscripten_glGenSamplers.sig = "vip";\n function _emscripten_glGenTextures(n, textures) {\n textures >>>= 0;\n GL.genObject(n, textures, "createTexture", GL.textures);\n }\n _emscripten_glGenTextures.sig = "vip";\n function _emscripten_glGenTransformFeedbacks(n, ids) {\n ids >>>= 0;\n GL.genObject(n, ids, "createTransformFeedback", GL.transformFeedbacks);\n }\n _emscripten_glGenTransformFeedbacks.sig = "vip";\n function _emscripten_glGenVertexArrays(n, arrays) {\n arrays >>>= 0;\n GL.genObject(n, arrays, "createVertexArray", GL.vaos);\n }\n _emscripten_glGenVertexArrays.sig = "vip";\n var _glGenVertexArrays = _emscripten_glGenVertexArrays;\n _glGenVertexArrays.sig = "vip";\n var _emscripten_glGenVertexArraysOES = _glGenVertexArrays;\n _emscripten_glGenVertexArraysOES.sig = "vip";\n var _emscripten_glGenerateMipmap = (x0) => GLctx.generateMipmap(x0);\n _emscripten_glGenerateMipmap.sig = "vi";\n var __glGetActiveAttribOrUniform = (funcName, program, index, bufSize, length, size, type, name2) => {\n program = GL.programs[program];\n var info2 = GLctx[funcName](program, index);\n if (info2) {\n var numBytesWrittenExclNull = name2 && stringToUTF8(info2.name, name2, bufSize);\n if (length) HEAP32[length >>> 2 >>> 0] = numBytesWrittenExclNull;\n if (size) HEAP32[size >>> 2 >>> 0] = info2.size;\n if (type) HEAP32[type >>> 2 >>> 0] = info2.type;\n }\n };\n function _emscripten_glGetActiveAttrib(program, index, bufSize, length, size, type, name2) {\n length >>>= 0;\n size >>>= 0;\n type >>>= 0;\n name2 >>>= 0;\n return __glGetActiveAttribOrUniform("getActiveAttrib", program, index, bufSize, length, size, type, name2);\n }\n _emscripten_glGetActiveAttrib.sig = "viiipppp";\n function _emscripten_glGetActiveUniform(program, index, bufSize, length, size, type, name2) {\n length >>>= 0;\n size >>>= 0;\n type >>>= 0;\n name2 >>>= 0;\n return __glGetActiveAttribOrUniform("getActiveUniform", program, index, bufSize, length, size, type, name2);\n }\n _emscripten_glGetActiveUniform.sig = "viiipppp";\n function _emscripten_glGetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName) {\n length >>>= 0;\n uniformBlockName >>>= 0;\n program = GL.programs[program];\n var result = GLctx.getActiveUniformBlockName(program, uniformBlockIndex);\n if (!result) return;\n if (uniformBlockName && bufSize > 0) {\n var numBytesWrittenExclNull = stringToUTF8(result, uniformBlockName, bufSize);\n if (length) HEAP32[length >>> 2 >>> 0] = numBytesWrittenExclNull;\n } else {\n if (length) HEAP32[length >>> 2 >>> 0] = 0;\n }\n }\n _emscripten_glGetActiveUniformBlockName.sig = "viiipp";\n function _emscripten_glGetActiveUniformBlockiv(program, uniformBlockIndex, pname, params) {\n params >>>= 0;\n if (!params) {\n GL.recordError(1281);\n return;\n }\n program = GL.programs[program];\n if (pname == 35393) {\n var name2 = GLctx.getActiveUniformBlockName(program, uniformBlockIndex);\n HEAP32[params >>> 2 >>> 0] = name2.length + 1;\n return;\n }\n var result = GLctx.getActiveUniformBlockParameter(program, uniformBlockIndex, pname);\n if (result === null) return;\n if (pname == 35395) {\n for (var i2 = 0; i2 < result.length; i2++) {\n HEAP32[params + i2 * 4 >>> 2 >>> 0] = result[i2];\n }\n } else {\n HEAP32[params >>> 2 >>> 0] = result;\n }\n }\n _emscripten_glGetActiveUniformBlockiv.sig = "viiip";\n function _emscripten_glGetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params) {\n uniformIndices >>>= 0;\n params >>>= 0;\n if (!params) {\n GL.recordError(1281);\n return;\n }\n if (uniformCount > 0 && uniformIndices == 0) {\n GL.recordError(1281);\n return;\n }\n program = GL.programs[program];\n var ids = [];\n for (var i2 = 0; i2 < uniformCount; i2++) {\n ids.push(HEAP32[uniformIndices + i2 * 4 >>> 2 >>> 0]);\n }\n var result = GLctx.getActiveUniforms(program, ids, pname);\n if (!result) return;\n var len = result.length;\n for (var i2 = 0; i2 < len; i2++) {\n HEAP32[params + i2 * 4 >>> 2 >>> 0] = result[i2];\n }\n }\n _emscripten_glGetActiveUniformsiv.sig = "viipip";\n function _emscripten_glGetAttachedShaders(program, maxCount, count, shaders) {\n count >>>= 0;\n shaders >>>= 0;\n var result = GLctx.getAttachedShaders(GL.programs[program]);\n var len = result.length;\n if (len > maxCount) {\n len = maxCount;\n }\n HEAP32[count >>> 2 >>> 0] = len;\n for (var i2 = 0; i2 < len; ++i2) {\n var id = GL.shaders.indexOf(result[i2]);\n HEAP32[shaders + i2 * 4 >>> 2 >>> 0] = id;\n }\n }\n _emscripten_glGetAttachedShaders.sig = "viipp";\n function _emscripten_glGetAttribLocation(program, name2) {\n name2 >>>= 0;\n return GLctx.getAttribLocation(GL.programs[program], UTF8ToString(name2));\n }\n _emscripten_glGetAttribLocation.sig = "iip";\n var writeI53ToI64 = (ptr2, num) => {\n HEAPU32[ptr2 >>> 2 >>> 0] = num;\n var lower = HEAPU32[ptr2 >>> 2 >>> 0];\n HEAPU32[ptr2 + 4 >>> 2 >>> 0] = (num - lower) / 4294967296;\n };\n var webglGetExtensions = () => {\n var exts = getEmscriptenSupportedExtensions(GLctx);\n exts = exts.concat(exts.map((e) => "GL_" + e));\n return exts;\n };\n var emscriptenWebGLGet = (name_, p2, type) => {\n if (!p2) {\n GL.recordError(1281);\n return;\n }\n var ret = void 0;\n switch (name_) {\n case 36346:\n ret = 1;\n break;\n case 36344:\n if (type != 0 && type != 1) {\n GL.recordError(1280);\n }\n return;\n case 34814:\n case 36345:\n ret = 0;\n break;\n case 34466:\n var formats = GLctx.getParameter(34467);\n ret = formats ? formats.length : 0;\n break;\n case 33309:\n if (GL.currentContext.version < 2) {\n GL.recordError(1282);\n return;\n }\n ret = webglGetExtensions().length;\n break;\n case 33307:\n case 33308:\n if (GL.currentContext.version < 2) {\n GL.recordError(1280);\n return;\n }\n ret = name_ == 33307 ? 3 : 0;\n break;\n }\n if (ret === void 0) {\n var result = GLctx.getParameter(name_);\n switch (typeof result) {\n case "number":\n ret = result;\n break;\n case "boolean":\n ret = result ? 1 : 0;\n break;\n case "string":\n GL.recordError(1280);\n return;\n case "object":\n if (result === null) {\n switch (name_) {\n case 34964:\n case 35725:\n case 34965:\n case 36006:\n case 36007:\n case 32873:\n case 34229:\n case 36662:\n case 36663:\n case 35053:\n case 35055:\n case 36010:\n case 35097:\n case 35869:\n case 32874:\n case 36389:\n case 35983:\n case 35368:\n case 34068: {\n ret = 0;\n break;\n }\n default: {\n GL.recordError(1280);\n return;\n }\n }\n } else if (result instanceof Float32Array || result instanceof Uint32Array || result instanceof Int32Array || result instanceof Array) {\n for (var i2 = 0; i2 < result.length; ++i2) {\n switch (type) {\n case 0:\n HEAP32[p2 + i2 * 4 >>> 2 >>> 0] = result[i2];\n break;\n case 2:\n HEAPF32[p2 + i2 * 4 >>> 2 >>> 0] = result[i2];\n break;\n case 4:\n HEAP8[p2 + i2 >>> 0] = result[i2] ? 1 : 0;\n break;\n }\n }\n return;\n } else {\n try {\n ret = result.name | 0;\n } catch (e) {\n GL.recordError(1280);\n err(`GL_INVALID_ENUM in glGet${type}v: Unknown object returned from WebGL getParameter(${name_})! (error: ${e})`);\n return;\n }\n }\n break;\n default:\n GL.recordError(1280);\n err(`GL_INVALID_ENUM in glGet${type}v: Native code calling glGet${type}v(${name_}) and it returns ${result} of type ${typeof result}!`);\n return;\n }\n }\n switch (type) {\n case 1:\n writeI53ToI64(p2, ret);\n break;\n case 0:\n HEAP32[p2 >>> 2 >>> 0] = ret;\n break;\n case 2:\n HEAPF32[p2 >>> 2 >>> 0] = ret;\n break;\n case 4:\n HEAP8[p2 >>> 0] = ret ? 1 : 0;\n break;\n }\n };\n function _emscripten_glGetBooleanv(name_, p2) {\n p2 >>>= 0;\n return emscriptenWebGLGet(name_, p2, 4);\n }\n _emscripten_glGetBooleanv.sig = "vip";\n function _emscripten_glGetBufferParameteri64v(target, value2, data2) {\n data2 >>>= 0;\n if (!data2) {\n GL.recordError(1281);\n return;\n }\n writeI53ToI64(data2, GLctx.getBufferParameter(target, value2));\n }\n _emscripten_glGetBufferParameteri64v.sig = "viip";\n function _emscripten_glGetBufferParameteriv(target, value2, data2) {\n data2 >>>= 0;\n if (!data2) {\n GL.recordError(1281);\n return;\n }\n HEAP32[data2 >>> 2 >>> 0] = GLctx.getBufferParameter(target, value2);\n }\n _emscripten_glGetBufferParameteriv.sig = "viip";\n var _emscripten_glGetError = () => {\n var error = GLctx.getError() || GL.lastError;\n GL.lastError = 0;\n return error;\n };\n _emscripten_glGetError.sig = "i";\n function _emscripten_glGetFloatv(name_, p2) {\n p2 >>>= 0;\n return emscriptenWebGLGet(name_, p2, 2);\n }\n _emscripten_glGetFloatv.sig = "vip";\n function _emscripten_glGetFragDataLocation(program, name2) {\n name2 >>>= 0;\n return GLctx.getFragDataLocation(GL.programs[program], UTF8ToString(name2));\n }\n _emscripten_glGetFragDataLocation.sig = "iip";\n function _emscripten_glGetFramebufferAttachmentParameteriv(target, attachment, pname, params) {\n params >>>= 0;\n var result = GLctx.getFramebufferAttachmentParameter(target, attachment, pname);\n if (result instanceof WebGLRenderbuffer || result instanceof WebGLTexture) {\n result = result.name | 0;\n }\n HEAP32[params >>> 2 >>> 0] = result;\n }\n _emscripten_glGetFramebufferAttachmentParameteriv.sig = "viiip";\n var emscriptenWebGLGetIndexed = (target, index, data2, type) => {\n if (!data2) {\n GL.recordError(1281);\n return;\n }\n var result = GLctx.getIndexedParameter(target, index);\n var ret;\n switch (typeof result) {\n case "boolean":\n ret = result ? 1 : 0;\n break;\n case "number":\n ret = result;\n break;\n case "object":\n if (result === null) {\n switch (target) {\n case 35983:\n case 35368:\n ret = 0;\n break;\n default: {\n GL.recordError(1280);\n return;\n }\n }\n } else if (result instanceof WebGLBuffer) {\n ret = result.name | 0;\n } else {\n GL.recordError(1280);\n return;\n }\n break;\n default:\n GL.recordError(1280);\n return;\n }\n switch (type) {\n case 1:\n writeI53ToI64(data2, ret);\n break;\n case 0:\n HEAP32[data2 >>> 2 >>> 0] = ret;\n break;\n case 2:\n HEAPF32[data2 >>> 2 >>> 0] = ret;\n break;\n case 4:\n HEAP8[data2 >>> 0] = ret ? 1 : 0;\n break;\n default:\n abort("internal emscriptenWebGLGetIndexed() error, bad type: " + type);\n }\n };\n function _emscripten_glGetInteger64i_v(target, index, data2) {\n data2 >>>= 0;\n return emscriptenWebGLGetIndexed(target, index, data2, 1);\n }\n _emscripten_glGetInteger64i_v.sig = "viip";\n function _emscripten_glGetInteger64v(name_, p2) {\n p2 >>>= 0;\n emscriptenWebGLGet(name_, p2, 1);\n }\n _emscripten_glGetInteger64v.sig = "vip";\n function _emscripten_glGetIntegeri_v(target, index, data2) {\n data2 >>>= 0;\n return emscriptenWebGLGetIndexed(target, index, data2, 0);\n }\n _emscripten_glGetIntegeri_v.sig = "viip";\n function _emscripten_glGetIntegerv(name_, p2) {\n p2 >>>= 0;\n return emscriptenWebGLGet(name_, p2, 0);\n }\n _emscripten_glGetIntegerv.sig = "vip";\n function _emscripten_glGetInternalformativ(target, internalformat, pname, bufSize, params) {\n params >>>= 0;\n if (bufSize < 0) {\n GL.recordError(1281);\n return;\n }\n if (!params) {\n GL.recordError(1281);\n return;\n }\n var ret = GLctx.getInternalformatParameter(target, internalformat, pname);\n if (ret === null) return;\n for (var i2 = 0; i2 < ret.length && i2 < bufSize; ++i2) {\n HEAP32[params + i2 * 4 >>> 2 >>> 0] = ret[i2];\n }\n }\n _emscripten_glGetInternalformativ.sig = "viiiip";\n function _emscripten_glGetProgramBinary(program, bufSize, length, binaryFormat, binary2) {\n length >>>= 0;\n binaryFormat >>>= 0;\n binary2 >>>= 0;\n GL.recordError(1282);\n }\n _emscripten_glGetProgramBinary.sig = "viippp";\n function _emscripten_glGetProgramInfoLog(program, maxLength, length, infoLog) {\n length >>>= 0;\n infoLog >>>= 0;\n var log = GLctx.getProgramInfoLog(GL.programs[program]);\n if (log === null) log = "(unknown error)";\n var numBytesWrittenExclNull = maxLength > 0 && infoLog ? stringToUTF8(log, infoLog, maxLength) : 0;\n if (length) HEAP32[length >>> 2 >>> 0] = numBytesWrittenExclNull;\n }\n _emscripten_glGetProgramInfoLog.sig = "viipp";\n function _emscripten_glGetProgramiv(program, pname, p2) {\n p2 >>>= 0;\n if (!p2) {\n GL.recordError(1281);\n return;\n }\n if (program >= GL.counter) {\n GL.recordError(1281);\n return;\n }\n program = GL.programs[program];\n if (pname == 35716) {\n var log = GLctx.getProgramInfoLog(program);\n if (log === null) log = "(unknown error)";\n HEAP32[p2 >>> 2 >>> 0] = log.length + 1;\n } else if (pname == 35719) {\n if (!program.maxUniformLength) {\n var numActiveUniforms = GLctx.getProgramParameter(program, 35718);\n for (var i2 = 0; i2 < numActiveUniforms; ++i2) {\n program.maxUniformLength = Math.max(program.maxUniformLength, GLctx.getActiveUniform(program, i2).name.length + 1);\n }\n }\n HEAP32[p2 >>> 2 >>> 0] = program.maxUniformLength;\n } else if (pname == 35722) {\n if (!program.maxAttributeLength) {\n var numActiveAttributes = GLctx.getProgramParameter(program, 35721);\n for (var i2 = 0; i2 < numActiveAttributes; ++i2) {\n program.maxAttributeLength = Math.max(program.maxAttributeLength, GLctx.getActiveAttrib(program, i2).name.length + 1);\n }\n }\n HEAP32[p2 >>> 2 >>> 0] = program.maxAttributeLength;\n } else if (pname == 35381) {\n if (!program.maxUniformBlockNameLength) {\n var numActiveUniformBlocks = GLctx.getProgramParameter(program, 35382);\n for (var i2 = 0; i2 < numActiveUniformBlocks; ++i2) {\n program.maxUniformBlockNameLength = Math.max(program.maxUniformBlockNameLength, GLctx.getActiveUniformBlockName(program, i2).length + 1);\n }\n }\n HEAP32[p2 >>> 2 >>> 0] = program.maxUniformBlockNameLength;\n } else {\n HEAP32[p2 >>> 2 >>> 0] = GLctx.getProgramParameter(program, pname);\n }\n }\n _emscripten_glGetProgramiv.sig = "viip";\n function _emscripten_glGetQueryObjecti64vEXT(id, pname, params) {\n params >>>= 0;\n if (!params) {\n GL.recordError(1281);\n return;\n }\n var query = GL.queries[id];\n var param;\n if (GL.currentContext.version < 2) {\n param = GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query, pname);\n } else {\n param = GLctx.getQueryParameter(query, pname);\n }\n var ret;\n if (typeof param == "boolean") {\n ret = param ? 1 : 0;\n } else {\n ret = param;\n }\n writeI53ToI64(params, ret);\n }\n _emscripten_glGetQueryObjecti64vEXT.sig = "viip";\n function _emscripten_glGetQueryObjectivEXT(id, pname, params) {\n params >>>= 0;\n if (!params) {\n GL.recordError(1281);\n return;\n }\n var query = GL.queries[id];\n var param = GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query, pname);\n var ret;\n if (typeof param == "boolean") {\n ret = param ? 1 : 0;\n } else {\n ret = param;\n }\n HEAP32[params >>> 2 >>> 0] = ret;\n }\n _emscripten_glGetQueryObjectivEXT.sig = "viip";\n var _glGetQueryObjecti64vEXT = _emscripten_glGetQueryObjecti64vEXT;\n var _emscripten_glGetQueryObjectui64vEXT = _glGetQueryObjecti64vEXT;\n function _emscripten_glGetQueryObjectuiv(id, pname, params) {\n params >>>= 0;\n if (!params) {\n GL.recordError(1281);\n return;\n }\n var query = GL.queries[id];\n var param = GLctx.getQueryParameter(query, pname);\n var ret;\n if (typeof param == "boolean") {\n ret = param ? 1 : 0;\n } else {\n ret = param;\n }\n HEAP32[params >>> 2 >>> 0] = ret;\n }\n _emscripten_glGetQueryObjectuiv.sig = "viip";\n var _glGetQueryObjectivEXT = _emscripten_glGetQueryObjectivEXT;\n var _emscripten_glGetQueryObjectuivEXT = _glGetQueryObjectivEXT;\n function _emscripten_glGetQueryiv(target, pname, params) {\n params >>>= 0;\n if (!params) {\n GL.recordError(1281);\n return;\n }\n HEAP32[params >>> 2 >>> 0] = GLctx.getQuery(target, pname);\n }\n _emscripten_glGetQueryiv.sig = "viip";\n function _emscripten_glGetQueryivEXT(target, pname, params) {\n params >>>= 0;\n if (!params) {\n GL.recordError(1281);\n return;\n }\n HEAP32[params >>> 2 >>> 0] = GLctx.disjointTimerQueryExt["getQueryEXT"](target, pname);\n }\n _emscripten_glGetQueryivEXT.sig = "viip";\n function _emscripten_glGetRenderbufferParameteriv(target, pname, params) {\n params >>>= 0;\n if (!params) {\n GL.recordError(1281);\n return;\n }\n HEAP32[params >>> 2 >>> 0] = GLctx.getRenderbufferParameter(target, pname);\n }\n _emscripten_glGetRenderbufferParameteriv.sig = "viip";\n function _emscripten_glGetSamplerParameterfv(sampler, pname, params) {\n params >>>= 0;\n if (!params) {\n GL.recordError(1281);\n return;\n }\n HEAPF32[params >>> 2 >>> 0] = GLctx.getSamplerParameter(GL.samplers[sampler], pname);\n }\n _emscripten_glGetSamplerParameterfv.sig = "viip";\n function _emscripten_glGetSamplerParameteriv(sampler, pname, params) {\n params >>>= 0;\n if (!params) {\n GL.recordError(1281);\n return;\n }\n HEAP32[params >>> 2 >>> 0] = GLctx.getSamplerParameter(GL.samplers[sampler], pname);\n }\n _emscripten_glGetSamplerParameteriv.sig = "viip";\n function _emscripten_glGetShaderInfoLog(shader, maxLength, length, infoLog) {\n length >>>= 0;\n infoLog >>>= 0;\n var log = GLctx.getShaderInfoLog(GL.shaders[shader]);\n if (log === null) log = "(unknown error)";\n var numBytesWrittenExclNull = maxLength > 0 && infoLog ? stringToUTF8(log, infoLog, maxLength) : 0;\n if (length) HEAP32[length >>> 2 >>> 0] = numBytesWrittenExclNull;\n }\n _emscripten_glGetShaderInfoLog.sig = "viipp";\n function _emscripten_glGetShaderPrecisionFormat(shaderType, precisionType, range, precision) {\n range >>>= 0;\n precision >>>= 0;\n var result = GLctx.getShaderPrecisionFormat(shaderType, precisionType);\n HEAP32[range >>> 2 >>> 0] = result.rangeMin;\n HEAP32[range + 4 >>> 2 >>> 0] = result.rangeMax;\n HEAP32[precision >>> 2 >>> 0] = result.precision;\n }\n _emscripten_glGetShaderPrecisionFormat.sig = "viipp";\n function _emscripten_glGetShaderSource(shader, bufSize, length, source) {\n length >>>= 0;\n source >>>= 0;\n var result = GLctx.getShaderSource(GL.shaders[shader]);\n if (!result) return;\n var numBytesWrittenExclNull = bufSize > 0 && source ? stringToUTF8(result, source, bufSize) : 0;\n if (length) HEAP32[length >>> 2 >>> 0] = numBytesWrittenExclNull;\n }\n _emscripten_glGetShaderSource.sig = "viipp";\n function _emscripten_glGetShaderiv(shader, pname, p2) {\n p2 >>>= 0;\n if (!p2) {\n GL.recordError(1281);\n return;\n }\n if (pname == 35716) {\n var log = GLctx.getShaderInfoLog(GL.shaders[shader]);\n if (log === null) log = "(unknown error)";\n var logLength = log ? log.length + 1 : 0;\n HEAP32[p2 >>> 2 >>> 0] = logLength;\n } else if (pname == 35720) {\n var source = GLctx.getShaderSource(GL.shaders[shader]);\n var sourceLength = source ? source.length + 1 : 0;\n HEAP32[p2 >>> 2 >>> 0] = sourceLength;\n } else {\n HEAP32[p2 >>> 2 >>> 0] = GLctx.getShaderParameter(GL.shaders[shader], pname);\n }\n }\n _emscripten_glGetShaderiv.sig = "viip";\n var stringToNewUTF8 = (str) => {\n var size = lengthBytesUTF8(str) + 1;\n var ret = _malloc(size);\n if (ret) stringToUTF8(str, ret, size);\n return ret;\n };\n function _emscripten_glGetString(name_) {\n var ret = GL.stringCache[name_];\n if (!ret) {\n switch (name_) {\n case 7939:\n ret = stringToNewUTF8(webglGetExtensions().join(" "));\n break;\n case 7936:\n case 7937:\n case 37445:\n case 37446:\n var s2 = GLctx.getParameter(name_);\n if (!s2) {\n GL.recordError(1280);\n }\n ret = s2 ? stringToNewUTF8(s2) : 0;\n break;\n case 7938:\n var webGLVersion = GLctx.getParameter(7938);\n var glVersion = `OpenGL ES 2.0 (${webGLVersion})`;\n if (GL.currentContext.version >= 2) glVersion = `OpenGL ES 3.0 (${webGLVersion})`;\n ret = stringToNewUTF8(glVersion);\n break;\n case 35724:\n var glslVersion = GLctx.getParameter(35724);\n var ver_re = /^WebGL GLSL ES ([0-9]\\.[0-9][0-9]?)(?:$| .*)/;\n var ver_num = glslVersion.match(ver_re);\n if (ver_num !== null) {\n if (ver_num[1].length == 3) ver_num[1] = ver_num[1] + "0";\n glslVersion = `OpenGL ES GLSL ES ${ver_num[1]} (${glslVersion})`;\n }\n ret = stringToNewUTF8(glslVersion);\n break;\n default:\n GL.recordError(1280);\n }\n GL.stringCache[name_] = ret;\n }\n return ret;\n }\n _emscripten_glGetString.sig = "pi";\n function _emscripten_glGetStringi(name2, index) {\n if (GL.currentContext.version < 2) {\n GL.recordError(1282);\n return 0;\n }\n var stringiCache = GL.stringiCache[name2];\n if (stringiCache) {\n if (index < 0 || index >= stringiCache.length) {\n GL.recordError(1281);\n return 0;\n }\n return stringiCache[index];\n }\n switch (name2) {\n case 7939:\n var exts = webglGetExtensions().map(stringToNewUTF8);\n stringiCache = GL.stringiCache[name2] = exts;\n if (index < 0 || index >= stringiCache.length) {\n GL.recordError(1281);\n return 0;\n }\n return stringiCache[index];\n default:\n GL.recordError(1280);\n return 0;\n }\n }\n _emscripten_glGetStringi.sig = "pii";\n function _emscripten_glGetSynciv(sync, pname, bufSize, length, values) {\n sync >>>= 0;\n length >>>= 0;\n values >>>= 0;\n if (bufSize < 0) {\n GL.recordError(1281);\n return;\n }\n if (!values) {\n GL.recordError(1281);\n return;\n }\n var ret = GLctx.getSyncParameter(GL.syncs[sync], pname);\n if (ret !== null) {\n HEAP32[values >>> 2 >>> 0] = ret;\n if (length) HEAP32[length >>> 2 >>> 0] = 1;\n }\n }\n _emscripten_glGetSynciv.sig = "vpiipp";\n function _emscripten_glGetTexParameterfv(target, pname, params) {\n params >>>= 0;\n if (!params) {\n GL.recordError(1281);\n return;\n }\n HEAPF32[params >>> 2 >>> 0] = GLctx.getTexParameter(target, pname);\n }\n _emscripten_glGetTexParameterfv.sig = "viip";\n function _emscripten_glGetTexParameteriv(target, pname, params) {\n params >>>= 0;\n if (!params) {\n GL.recordError(1281);\n return;\n }\n HEAP32[params >>> 2 >>> 0] = GLctx.getTexParameter(target, pname);\n }\n _emscripten_glGetTexParameteriv.sig = "viip";\n function _emscripten_glGetTransformFeedbackVarying(program, index, bufSize, length, size, type, name2) {\n length >>>= 0;\n size >>>= 0;\n type >>>= 0;\n name2 >>>= 0;\n program = GL.programs[program];\n var info2 = GLctx.getTransformFeedbackVarying(program, index);\n if (!info2) return;\n if (name2 && bufSize > 0) {\n var numBytesWrittenExclNull = stringToUTF8(info2.name, name2, bufSize);\n if (length) HEAP32[length >>> 2 >>> 0] = numBytesWrittenExclNull;\n } else {\n if (length) HEAP32[length >>> 2 >>> 0] = 0;\n }\n if (size) HEAP32[size >>> 2 >>> 0] = info2.size;\n if (type) HEAP32[type >>> 2 >>> 0] = info2.type;\n }\n _emscripten_glGetTransformFeedbackVarying.sig = "viiipppp";\n function _emscripten_glGetUniformBlockIndex(program, uniformBlockName) {\n uniformBlockName >>>= 0;\n return GLctx.getUniformBlockIndex(GL.programs[program], UTF8ToString(uniformBlockName));\n }\n _emscripten_glGetUniformBlockIndex.sig = "iip";\n function _emscripten_glGetUniformIndices(program, uniformCount, uniformNames, uniformIndices) {\n uniformNames >>>= 0;\n uniformIndices >>>= 0;\n if (!uniformIndices) {\n GL.recordError(1281);\n return;\n }\n if (uniformCount > 0 && (uniformNames == 0 || uniformIndices == 0)) {\n GL.recordError(1281);\n return;\n }\n program = GL.programs[program];\n var names = [];\n for (var i2 = 0; i2 < uniformCount; i2++) names.push(UTF8ToString(HEAPU32[uniformNames + i2 * 4 >>> 2 >>> 0]));\n var result = GLctx.getUniformIndices(program, names);\n if (!result) return;\n var len = result.length;\n for (var i2 = 0; i2 < len; i2++) {\n HEAP32[uniformIndices + i2 * 4 >>> 2 >>> 0] = result[i2];\n }\n }\n _emscripten_glGetUniformIndices.sig = "viipp";\n var jstoi_q = (str) => parseInt(str);\n var webglGetLeftBracePos = (name2) => name2.slice(-1) == "]" && name2.lastIndexOf("[");\n var webglPrepareUniformLocationsBeforeFirstUse = (program) => {\n var uniformLocsById = program.uniformLocsById, uniformSizeAndIdsByName = program.uniformSizeAndIdsByName, i2, j2;\n if (!uniformLocsById) {\n program.uniformLocsById = uniformLocsById = {};\n program.uniformArrayNamesById = {};\n var numActiveUniforms = GLctx.getProgramParameter(program, 35718);\n for (i2 = 0; i2 < numActiveUniforms; ++i2) {\n var u = GLctx.getActiveUniform(program, i2);\n var nm = u.name;\n var sz = u.size;\n var lb = webglGetLeftBracePos(nm);\n var arrayName = lb > 0 ? nm.slice(0, lb) : nm;\n var id = program.uniformIdCounter;\n program.uniformIdCounter += sz;\n uniformSizeAndIdsByName[arrayName] = [sz, id];\n for (j2 = 0; j2 < sz; ++j2) {\n uniformLocsById[id] = j2;\n program.uniformArrayNamesById[id++] = arrayName;\n }\n }\n }\n };\n function _emscripten_glGetUniformLocation(program, name2) {\n name2 >>>= 0;\n name2 = UTF8ToString(name2);\n if (program = GL.programs[program]) {\n webglPrepareUniformLocationsBeforeFirstUse(program);\n var uniformLocsById = program.uniformLocsById;\n var arrayIndex = 0;\n var uniformBaseName = name2;\n var leftBrace = webglGetLeftBracePos(name2);\n if (leftBrace > 0) {\n arrayIndex = jstoi_q(name2.slice(leftBrace + 1)) >>> 0;\n uniformBaseName = name2.slice(0, leftBrace);\n }\n var sizeAndId = program.uniformSizeAndIdsByName[uniformBaseName];\n if (sizeAndId && arrayIndex < sizeAndId[0]) {\n arrayIndex += sizeAndId[1];\n if (uniformLocsById[arrayIndex] = uniformLocsById[arrayIndex] || GLctx.getUniformLocation(program, name2)) {\n return arrayIndex;\n }\n }\n } else {\n GL.recordError(1281);\n }\n return -1;\n }\n _emscripten_glGetUniformLocation.sig = "iip";\n var webglGetUniformLocation = (location2) => {\n var p2 = GLctx.currentProgram;\n if (p2) {\n var webglLoc = p2.uniformLocsById[location2];\n if (typeof webglLoc == "number") {\n p2.uniformLocsById[location2] = webglLoc = GLctx.getUniformLocation(p2, p2.uniformArrayNamesById[location2] + (webglLoc > 0 ? `[${webglLoc}]` : ""));\n }\n return webglLoc;\n } else {\n GL.recordError(1282);\n }\n };\n var emscriptenWebGLGetUniform = (program, location2, params, type) => {\n if (!params) {\n GL.recordError(1281);\n return;\n }\n program = GL.programs[program];\n webglPrepareUniformLocationsBeforeFirstUse(program);\n var data2 = GLctx.getUniform(program, webglGetUniformLocation(location2));\n if (typeof data2 == "number" || typeof data2 == "boolean") {\n switch (type) {\n case 0:\n HEAP32[params >>> 2 >>> 0] = data2;\n break;\n case 2:\n HEAPF32[params >>> 2 >>> 0] = data2;\n break;\n }\n } else {\n for (var i2 = 0; i2 < data2.length; i2++) {\n switch (type) {\n case 0:\n HEAP32[params + i2 * 4 >>> 2 >>> 0] = data2[i2];\n break;\n case 2:\n HEAPF32[params + i2 * 4 >>> 2 >>> 0] = data2[i2];\n break;\n }\n }\n }\n };\n function _emscripten_glGetUniformfv(program, location2, params) {\n params >>>= 0;\n emscriptenWebGLGetUniform(program, location2, params, 2);\n }\n _emscripten_glGetUniformfv.sig = "viip";\n function _emscripten_glGetUniformiv(program, location2, params) {\n params >>>= 0;\n emscriptenWebGLGetUniform(program, location2, params, 0);\n }\n _emscripten_glGetUniformiv.sig = "viip";\n function _emscripten_glGetUniformuiv(program, location2, params) {\n params >>>= 0;\n return emscriptenWebGLGetUniform(program, location2, params, 0);\n }\n _emscripten_glGetUniformuiv.sig = "viip";\n var emscriptenWebGLGetVertexAttrib = (index, pname, params, type) => {\n if (!params) {\n GL.recordError(1281);\n return;\n }\n var data2 = GLctx.getVertexAttrib(index, pname);\n if (pname == 34975) {\n HEAP32[params >>> 2 >>> 0] = data2 && data2["name"];\n } else if (typeof data2 == "number" || typeof data2 == "boolean") {\n switch (type) {\n case 0:\n HEAP32[params >>> 2 >>> 0] = data2;\n break;\n case 2:\n HEAPF32[params >>> 2 >>> 0] = data2;\n break;\n case 5:\n HEAP32[params >>> 2 >>> 0] = Math.fround(data2);\n break;\n }\n } else {\n for (var i2 = 0; i2 < data2.length; i2++) {\n switch (type) {\n case 0:\n HEAP32[params + i2 * 4 >>> 2 >>> 0] = data2[i2];\n break;\n case 2:\n HEAPF32[params + i2 * 4 >>> 2 >>> 0] = data2[i2];\n break;\n case 5:\n HEAP32[params + i2 * 4 >>> 2 >>> 0] = Math.fround(data2[i2]);\n break;\n }\n }\n }\n };\n function _emscripten_glGetVertexAttribIiv(index, pname, params) {\n params >>>= 0;\n emscriptenWebGLGetVertexAttrib(index, pname, params, 0);\n }\n _emscripten_glGetVertexAttribIiv.sig = "viip";\n var _glGetVertexAttribIiv = _emscripten_glGetVertexAttribIiv;\n _glGetVertexAttribIiv.sig = "viip";\n var _emscripten_glGetVertexAttribIuiv = _glGetVertexAttribIiv;\n _emscripten_glGetVertexAttribIuiv.sig = "viip";\n function _emscripten_glGetVertexAttribPointerv(index, pname, pointer) {\n pointer >>>= 0;\n if (!pointer) {\n GL.recordError(1281);\n return;\n }\n HEAP32[pointer >>> 2 >>> 0] = GLctx.getVertexAttribOffset(index, pname);\n }\n _emscripten_glGetVertexAttribPointerv.sig = "viip";\n function _emscripten_glGetVertexAttribfv(index, pname, params) {\n params >>>= 0;\n emscriptenWebGLGetVertexAttrib(index, pname, params, 2);\n }\n _emscripten_glGetVertexAttribfv.sig = "viip";\n function _emscripten_glGetVertexAttribiv(index, pname, params) {\n params >>>= 0;\n emscriptenWebGLGetVertexAttrib(index, pname, params, 5);\n }\n _emscripten_glGetVertexAttribiv.sig = "viip";\n var _emscripten_glHint = (x0, x1) => GLctx.hint(x0, x1);\n _emscripten_glHint.sig = "vii";\n function _emscripten_glInvalidateFramebuffer(target, numAttachments, attachments) {\n attachments >>>= 0;\n var list = tempFixedLengthArray[numAttachments];\n for (var i2 = 0; i2 < numAttachments; i2++) {\n list[i2] = HEAP32[attachments + i2 * 4 >>> 2 >>> 0];\n }\n GLctx.invalidateFramebuffer(target, list);\n }\n _emscripten_glInvalidateFramebuffer.sig = "viip";\n function _emscripten_glInvalidateSubFramebuffer(target, numAttachments, attachments, x2, y, width, height) {\n attachments >>>= 0;\n var list = tempFixedLengthArray[numAttachments];\n for (var i2 = 0; i2 < numAttachments; i2++) {\n list[i2] = HEAP32[attachments + i2 * 4 >>> 2 >>> 0];\n }\n GLctx.invalidateSubFramebuffer(target, list, x2, y, width, height);\n }\n _emscripten_glInvalidateSubFramebuffer.sig = "viipiiii";\n var _emscripten_glIsBuffer = (buffer) => {\n var b2 = GL.buffers[buffer];\n if (!b2) return 0;\n return GLctx.isBuffer(b2);\n };\n _emscripten_glIsBuffer.sig = "ii";\n var _emscripten_glIsEnabled = (x0) => GLctx.isEnabled(x0);\n _emscripten_glIsEnabled.sig = "ii";\n var _emscripten_glIsFramebuffer = (framebuffer) => {\n var fb = GL.framebuffers[framebuffer];\n if (!fb) return 0;\n return GLctx.isFramebuffer(fb);\n };\n _emscripten_glIsFramebuffer.sig = "ii";\n var _emscripten_glIsProgram = (program) => {\n program = GL.programs[program];\n if (!program) return 0;\n return GLctx.isProgram(program);\n };\n _emscripten_glIsProgram.sig = "ii";\n var _emscripten_glIsQuery = (id) => {\n var query = GL.queries[id];\n if (!query) return 0;\n return GLctx.isQuery(query);\n };\n _emscripten_glIsQuery.sig = "ii";\n var _emscripten_glIsQueryEXT = (id) => {\n var query = GL.queries[id];\n if (!query) return 0;\n return GLctx.disjointTimerQueryExt["isQueryEXT"](query);\n };\n _emscripten_glIsQueryEXT.sig = "ii";\n var _emscripten_glIsRenderbuffer = (renderbuffer) => {\n var rb = GL.renderbuffers[renderbuffer];\n if (!rb) return 0;\n return GLctx.isRenderbuffer(rb);\n };\n _emscripten_glIsRenderbuffer.sig = "ii";\n var _emscripten_glIsSampler = (id) => {\n var sampler = GL.samplers[id];\n if (!sampler) return 0;\n return GLctx.isSampler(sampler);\n };\n _emscripten_glIsSampler.sig = "ii";\n var _emscripten_glIsShader = (shader) => {\n var s2 = GL.shaders[shader];\n if (!s2) return 0;\n return GLctx.isShader(s2);\n };\n _emscripten_glIsShader.sig = "ii";\n function _emscripten_glIsSync(sync) {\n sync >>>= 0;\n return GLctx.isSync(GL.syncs[sync]);\n }\n _emscripten_glIsSync.sig = "ip";\n var _emscripten_glIsTexture = (id) => {\n var texture = GL.textures[id];\n if (!texture) return 0;\n return GLctx.isTexture(texture);\n };\n _emscripten_glIsTexture.sig = "ii";\n var _emscripten_glIsTransformFeedback = (id) => GLctx.isTransformFeedback(GL.transformFeedbacks[id]);\n _emscripten_glIsTransformFeedback.sig = "ii";\n var _emscripten_glIsVertexArray = (array) => {\n var vao = GL.vaos[array];\n if (!vao) return 0;\n return GLctx.isVertexArray(vao);\n };\n _emscripten_glIsVertexArray.sig = "ii";\n var _glIsVertexArray = _emscripten_glIsVertexArray;\n _glIsVertexArray.sig = "ii";\n var _emscripten_glIsVertexArrayOES = _glIsVertexArray;\n _emscripten_glIsVertexArrayOES.sig = "ii";\n var _emscripten_glLineWidth = (x0) => GLctx.lineWidth(x0);\n _emscripten_glLineWidth.sig = "vf";\n var _emscripten_glLinkProgram = (program) => {\n program = GL.programs[program];\n GLctx.linkProgram(program);\n program.uniformLocsById = 0;\n program.uniformSizeAndIdsByName = {};\n };\n _emscripten_glLinkProgram.sig = "vi";\n var _emscripten_glPauseTransformFeedback = () => GLctx.pauseTransformFeedback();\n _emscripten_glPauseTransformFeedback.sig = "v";\n var _emscripten_glPixelStorei = (pname, param) => {\n if (pname == 3317) {\n GL.unpackAlignment = param;\n } else if (pname == 3314) {\n GL.unpackRowLength = param;\n }\n GLctx.pixelStorei(pname, param);\n };\n _emscripten_glPixelStorei.sig = "vii";\n var _emscripten_glPolygonModeWEBGL = (face, mode) => {\n GLctx.webglPolygonMode["polygonModeWEBGL"](face, mode);\n };\n _emscripten_glPolygonModeWEBGL.sig = "vii";\n var _emscripten_glPolygonOffset = (x0, x1) => GLctx.polygonOffset(x0, x1);\n _emscripten_glPolygonOffset.sig = "vff";\n var _emscripten_glPolygonOffsetClampEXT = (factor, units, clamp) => {\n GLctx.extPolygonOffsetClamp["polygonOffsetClampEXT"](factor, units, clamp);\n };\n _emscripten_glPolygonOffsetClampEXT.sig = "vfff";\n function _emscripten_glProgramBinary(program, binaryFormat, binary2, length) {\n binary2 >>>= 0;\n GL.recordError(1280);\n }\n _emscripten_glProgramBinary.sig = "viipi";\n var _emscripten_glProgramParameteri = (program, pname, value2) => {\n GL.recordError(1280);\n };\n _emscripten_glProgramParameteri.sig = "viii";\n var _emscripten_glQueryCounterEXT = (id, target) => {\n GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.queries[id], target);\n };\n _emscripten_glQueryCounterEXT.sig = "vii";\n var _emscripten_glReadBuffer = (x0) => GLctx.readBuffer(x0);\n _emscripten_glReadBuffer.sig = "vi";\n var computeUnpackAlignedImageSize = (width, height, sizePerPixel) => {\n function roundedToNextMultipleOf(x2, y) {\n return x2 + y - 1 & -y;\n }\n var plainRowSize = (GL.unpackRowLength || width) * sizePerPixel;\n var alignedRowSize = roundedToNextMultipleOf(plainRowSize, GL.unpackAlignment);\n return height * alignedRowSize;\n };\n var colorChannelsInGlTextureFormat = (format) => {\n var colorChannels = { 5: 3, 6: 4, 8: 2, 29502: 3, 29504: 4, 26917: 2, 26918: 2, 29846: 3, 29847: 4 };\n return colorChannels[format - 6402] || 1;\n };\n var heapObjectForWebGLType = (type) => {\n type -= 5120;\n if (type == 0) return HEAP8;\n if (type == 1) return HEAPU8;\n if (type == 2) return HEAP16;\n if (type == 4) return HEAP32;\n if (type == 6) return HEAPF32;\n if (type == 5 || type == 28922 || type == 28520 || type == 30779 || type == 30782) return HEAPU32;\n return HEAPU16;\n };\n var toTypedArrayIndex = (pointer, heap) => pointer >>> 31 - Math.clz32(heap.BYTES_PER_ELEMENT);\n var emscriptenWebGLGetTexPixelData = (type, format, width, height, pixels, internalFormat) => {\n var heap = heapObjectForWebGLType(type);\n var sizePerPixel = colorChannelsInGlTextureFormat(format) * heap.BYTES_PER_ELEMENT;\n var bytes = computeUnpackAlignedImageSize(width, height, sizePerPixel);\n return heap.subarray(toTypedArrayIndex(pixels, heap) >>> 0, toTypedArrayIndex(pixels + bytes, heap) >>> 0);\n };\n function _emscripten_glReadPixels(x2, y, width, height, format, type, pixels) {\n pixels >>>= 0;\n if (GL.currentContext.version >= 2) {\n if (GLctx.currentPixelPackBufferBinding) {\n GLctx.readPixels(x2, y, width, height, format, type, pixels);\n return;\n }\n }\n var pixelData = emscriptenWebGLGetTexPixelData(type, format, width, height, pixels, format);\n if (!pixelData) {\n GL.recordError(1280);\n return;\n }\n GLctx.readPixels(x2, y, width, height, format, type, pixelData);\n }\n _emscripten_glReadPixels.sig = "viiiiiip";\n var _emscripten_glReleaseShaderCompiler = () => {\n };\n _emscripten_glReleaseShaderCompiler.sig = "v";\n var _emscripten_glRenderbufferStorage = (x0, x1, x2, x3) => GLctx.renderbufferStorage(x0, x1, x2, x3);\n _emscripten_glRenderbufferStorage.sig = "viiii";\n var _emscripten_glRenderbufferStorageMultisample = (x0, x1, x2, x3, x4) => GLctx.renderbufferStorageMultisample(x0, x1, x2, x3, x4);\n _emscripten_glRenderbufferStorageMultisample.sig = "viiiii";\n var _emscripten_glResumeTransformFeedback = () => GLctx.resumeTransformFeedback();\n _emscripten_glResumeTransformFeedback.sig = "v";\n var _emscripten_glSampleCoverage = (value2, invert) => {\n GLctx.sampleCoverage(value2, !!invert);\n };\n _emscripten_glSampleCoverage.sig = "vfi";\n var _emscripten_glSamplerParameterf = (sampler, pname, param) => {\n GLctx.samplerParameterf(GL.samplers[sampler], pname, param);\n };\n _emscripten_glSamplerParameterf.sig = "viif";\n function _emscripten_glSamplerParameterfv(sampler, pname, params) {\n params >>>= 0;\n var param = HEAPF32[params >>> 2 >>> 0];\n GLctx.samplerParameterf(GL.samplers[sampler], pname, param);\n }\n _emscripten_glSamplerParameterfv.sig = "viip";\n var _emscripten_glSamplerParameteri = (sampler, pname, param) => {\n GLctx.samplerParameteri(GL.samplers[sampler], pname, param);\n };\n _emscripten_glSamplerParameteri.sig = "viii";\n function _emscripten_glSamplerParameteriv(sampler, pname, params) {\n params >>>= 0;\n var param = HEAP32[params >>> 2 >>> 0];\n GLctx.samplerParameteri(GL.samplers[sampler], pname, param);\n }\n _emscripten_glSamplerParameteriv.sig = "viip";\n var _emscripten_glScissor = (x0, x1, x2, x3) => GLctx.scissor(x0, x1, x2, x3);\n _emscripten_glScissor.sig = "viiii";\n function _emscripten_glShaderBinary(count, shaders, binaryformat, binary2, length) {\n shaders >>>= 0;\n binary2 >>>= 0;\n GL.recordError(1280);\n }\n _emscripten_glShaderBinary.sig = "vipipi";\n function _emscripten_glShaderSource(shader, count, string, length) {\n string >>>= 0;\n length >>>= 0;\n var source = GL.getSource(shader, count, string, length);\n GLctx.shaderSource(GL.shaders[shader], source);\n }\n _emscripten_glShaderSource.sig = "viipp";\n var _emscripten_glStencilFunc = (x0, x1, x2) => GLctx.stencilFunc(x0, x1, x2);\n _emscripten_glStencilFunc.sig = "viii";\n var _emscripten_glStencilFuncSeparate = (x0, x1, x2, x3) => GLctx.stencilFuncSeparate(x0, x1, x2, x3);\n _emscripten_glStencilFuncSeparate.sig = "viiii";\n var _emscripten_glStencilMask = (x0) => GLctx.stencilMask(x0);\n _emscripten_glStencilMask.sig = "vi";\n var _emscripten_glStencilMaskSeparate = (x0, x1) => GLctx.stencilMaskSeparate(x0, x1);\n _emscripten_glStencilMaskSeparate.sig = "vii";\n var _emscripten_glStencilOp = (x0, x1, x2) => GLctx.stencilOp(x0, x1, x2);\n _emscripten_glStencilOp.sig = "viii";\n var _emscripten_glStencilOpSeparate = (x0, x1, x2, x3) => GLctx.stencilOpSeparate(x0, x1, x2, x3);\n _emscripten_glStencilOpSeparate.sig = "viiii";\n function _emscripten_glTexImage2D(target, level, internalFormat, width, height, border, format, type, pixels) {\n pixels >>>= 0;\n if (GL.currentContext.version >= 2) {\n if (GLctx.currentPixelUnpackBufferBinding) {\n GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, pixels);\n return;\n }\n }\n var pixelData = pixels ? emscriptenWebGLGetTexPixelData(type, format, width, height, pixels, internalFormat) : null;\n GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, pixelData);\n }\n _emscripten_glTexImage2D.sig = "viiiiiiiip";\n function _emscripten_glTexImage3D(target, level, internalFormat, width, height, depth, border, format, type, pixels) {\n pixels >>>= 0;\n if (GLctx.currentPixelUnpackBufferBinding) {\n GLctx.texImage3D(target, level, internalFormat, width, height, depth, border, format, type, pixels);\n } else if (pixels) {\n var heap = heapObjectForWebGLType(type);\n var pixelData = emscriptenWebGLGetTexPixelData(type, format, width, height * depth, pixels, internalFormat);\n GLctx.texImage3D(target, level, internalFormat, width, height, depth, border, format, type, pixelData);\n } else {\n GLctx.texImage3D(target, level, internalFormat, width, height, depth, border, format, type, null);\n }\n }\n _emscripten_glTexImage3D.sig = "viiiiiiiiip";\n var _emscripten_glTexParameterf = (x0, x1, x2) => GLctx.texParameterf(x0, x1, x2);\n _emscripten_glTexParameterf.sig = "viif";\n function _emscripten_glTexParameterfv(target, pname, params) {\n params >>>= 0;\n var param = HEAPF32[params >>> 2 >>> 0];\n GLctx.texParameterf(target, pname, param);\n }\n _emscripten_glTexParameterfv.sig = "viip";\n var _emscripten_glTexParameteri = (x0, x1, x2) => GLctx.texParameteri(x0, x1, x2);\n _emscripten_glTexParameteri.sig = "viii";\n function _emscripten_glTexParameteriv(target, pname, params) {\n params >>>= 0;\n var param = HEAP32[params >>> 2 >>> 0];\n GLctx.texParameteri(target, pname, param);\n }\n _emscripten_glTexParameteriv.sig = "viip";\n var _emscripten_glTexStorage2D = (x0, x1, x2, x3, x4) => GLctx.texStorage2D(x0, x1, x2, x3, x4);\n _emscripten_glTexStorage2D.sig = "viiiii";\n var _emscripten_glTexStorage3D = (x0, x1, x2, x3, x4, x5) => GLctx.texStorage3D(x0, x1, x2, x3, x4, x5);\n _emscripten_glTexStorage3D.sig = "viiiiii";\n function _emscripten_glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels) {\n pixels >>>= 0;\n if (GL.currentContext.version >= 2) {\n if (GLctx.currentPixelUnpackBufferBinding) {\n GLctx.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);\n return;\n }\n }\n var pixelData = pixels ? emscriptenWebGLGetTexPixelData(type, format, width, height, pixels, 0) : null;\n GLctx.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixelData);\n }\n _emscripten_glTexSubImage2D.sig = "viiiiiiiip";\n function _emscripten_glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels) {\n pixels >>>= 0;\n if (GLctx.currentPixelUnpackBufferBinding) {\n GLctx.texSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);\n } else if (pixels) {\n var heap = heapObjectForWebGLType(type);\n GLctx.texSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, heap, toTypedArrayIndex(pixels, heap));\n } else {\n GLctx.texSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, null);\n }\n }\n _emscripten_glTexSubImage3D.sig = "viiiiiiiiiip";\n function _emscripten_glTransformFeedbackVaryings(program, count, varyings, bufferMode) {\n varyings >>>= 0;\n program = GL.programs[program];\n var vars = [];\n for (var i2 = 0; i2 < count; i2++) vars.push(UTF8ToString(HEAPU32[varyings + i2 * 4 >>> 2 >>> 0]));\n GLctx.transformFeedbackVaryings(program, vars, bufferMode);\n }\n _emscripten_glTransformFeedbackVaryings.sig = "viipi";\n var _emscripten_glUniform1f = (location2, v0) => {\n GLctx.uniform1f(webglGetUniformLocation(location2), v0);\n };\n _emscripten_glUniform1f.sig = "vif";\n var miniTempWebGLFloatBuffers = [];\n function _emscripten_glUniform1fv(location2, count, value2) {\n value2 >>>= 0;\n if (count <= 288) {\n var view = miniTempWebGLFloatBuffers[count];\n for (var i2 = 0; i2 < count; ++i2) {\n view[i2] = HEAPF32[value2 + 4 * i2 >>> 2 >>> 0];\n }\n } else {\n var view = HEAPF32.subarray(value2 >>> 2 >>> 0, value2 + count * 4 >>> 2 >>> 0);\n }\n GLctx.uniform1fv(webglGetUniformLocation(location2), view);\n }\n _emscripten_glUniform1fv.sig = "viip";\n var _emscripten_glUniform1i = (location2, v0) => {\n GLctx.uniform1i(webglGetUniformLocation(location2), v0);\n };\n _emscripten_glUniform1i.sig = "vii";\n var miniTempWebGLIntBuffers = [];\n function _emscripten_glUniform1iv(location2, count, value2) {\n value2 >>>= 0;\n if (count <= 288) {\n var view = miniTempWebGLIntBuffers[count];\n for (var i2 = 0; i2 < count; ++i2) {\n view[i2] = HEAP32[value2 + 4 * i2 >>> 2 >>> 0];\n }\n } else {\n var view = HEAP32.subarray(value2 >>> 2 >>> 0, value2 + count * 4 >>> 2 >>> 0);\n }\n GLctx.uniform1iv(webglGetUniformLocation(location2), view);\n }\n _emscripten_glUniform1iv.sig = "viip";\n var _emscripten_glUniform1ui = (location2, v0) => {\n GLctx.uniform1ui(webglGetUniformLocation(location2), v0);\n };\n _emscripten_glUniform1ui.sig = "vii";\n function _emscripten_glUniform1uiv(location2, count, value2) {\n value2 >>>= 0;\n count && GLctx.uniform1uiv(webglGetUniformLocation(location2), HEAPU32, value2 >>> 2, count);\n }\n _emscripten_glUniform1uiv.sig = "viip";\n var _emscripten_glUniform2f = (location2, v0, v1) => {\n GLctx.uniform2f(webglGetUniformLocation(location2), v0, v1);\n };\n _emscripten_glUniform2f.sig = "viff";\n function _emscripten_glUniform2fv(location2, count, value2) {\n value2 >>>= 0;\n if (count <= 144) {\n count *= 2;\n var view = miniTempWebGLFloatBuffers[count];\n for (var i2 = 0; i2 < count; i2 += 2) {\n view[i2] = HEAPF32[value2 + 4 * i2 >>> 2 >>> 0];\n view[i2 + 1] = HEAPF32[value2 + (4 * i2 + 4) >>> 2 >>> 0];\n }\n } else {\n var view = HEAPF32.subarray(value2 >>> 2 >>> 0, value2 + count * 8 >>> 2 >>> 0);\n }\n GLctx.uniform2fv(webglGetUniformLocation(location2), view);\n }\n _emscripten_glUniform2fv.sig = "viip";\n var _emscripten_glUniform2i = (location2, v0, v1) => {\n GLctx.uniform2i(webglGetUniformLocation(location2), v0, v1);\n };\n _emscripten_glUniform2i.sig = "viii";\n function _emscripten_glUniform2iv(location2, count, value2) {\n value2 >>>= 0;\n if (count <= 144) {\n count *= 2;\n var view = miniTempWebGLIntBuffers[count];\n for (var i2 = 0; i2 < count; i2 += 2) {\n view[i2] = HEAP32[value2 + 4 * i2 >>> 2 >>> 0];\n view[i2 + 1] = HEAP32[value2 + (4 * i2 + 4) >>> 2 >>> 0];\n }\n } else {\n var view = HEAP32.subarray(value2 >>> 2 >>> 0, value2 + count * 8 >>> 2 >>> 0);\n }\n GLctx.uniform2iv(webglGetUniformLocation(location2), view);\n }\n _emscripten_glUniform2iv.sig = "viip";\n var _emscripten_glUniform2ui = (location2, v0, v1) => {\n GLctx.uniform2ui(webglGetUniformLocation(location2), v0, v1);\n };\n _emscripten_glUniform2ui.sig = "viii";\n function _emscripten_glUniform2uiv(location2, count, value2) {\n value2 >>>= 0;\n count && GLctx.uniform2uiv(webglGetUniformLocation(location2), HEAPU32, value2 >>> 2, count * 2);\n }\n _emscripten_glUniform2uiv.sig = "viip";\n var _emscripten_glUniform3f = (location2, v0, v1, v2) => {\n GLctx.uniform3f(webglGetUniformLocation(location2), v0, v1, v2);\n };\n _emscripten_glUniform3f.sig = "vifff";\n function _emscripten_glUniform3fv(location2, count, value2) {\n value2 >>>= 0;\n if (count <= 96) {\n count *= 3;\n var view = miniTempWebGLFloatBuffers[count];\n for (var i2 = 0; i2 < count; i2 += 3) {\n view[i2] = HEAPF32[value2 + 4 * i2 >>> 2 >>> 0];\n view[i2 + 1] = HEAPF32[value2 + (4 * i2 + 4) >>> 2 >>> 0];\n view[i2 + 2] = HEAPF32[value2 + (4 * i2 + 8) >>> 2 >>> 0];\n }\n } else {\n var view = HEAPF32.subarray(value2 >>> 2 >>> 0, value2 + count * 12 >>> 2 >>> 0);\n }\n GLctx.uniform3fv(webglGetUniformLocation(location2), view);\n }\n _emscripten_glUniform3fv.sig = "viip";\n var _emscripten_glUniform3i = (location2, v0, v1, v2) => {\n GLctx.uniform3i(webglGetUniformLocation(location2), v0, v1, v2);\n };\n _emscripten_glUniform3i.sig = "viiii";\n function _emscripten_glUniform3iv(location2, count, value2) {\n value2 >>>= 0;\n if (count <= 96) {\n count *= 3;\n var view = miniTempWebGLIntBuffers[count];\n for (var i2 = 0; i2 < count; i2 += 3) {\n view[i2] = HEAP32[value2 + 4 * i2 >>> 2 >>> 0];\n view[i2 + 1] = HEAP32[value2 + (4 * i2 + 4) >>> 2 >>> 0];\n view[i2 + 2] = HEAP32[value2 + (4 * i2 + 8) >>> 2 >>> 0];\n }\n } else {\n var view = HEAP32.subarray(value2 >>> 2 >>> 0, value2 + count * 12 >>> 2 >>> 0);\n }\n GLctx.uniform3iv(webglGetUniformLocation(location2), view);\n }\n _emscripten_glUniform3iv.sig = "viip";\n var _emscripten_glUniform3ui = (location2, v0, v1, v2) => {\n GLctx.uniform3ui(webglGetUniformLocation(location2), v0, v1, v2);\n };\n _emscripten_glUniform3ui.sig = "viiii";\n function _emscripten_glUniform3uiv(location2, count, value2) {\n value2 >>>= 0;\n count && GLctx.uniform3uiv(webglGetUniformLocation(location2), HEAPU32, value2 >>> 2, count * 3);\n }\n _emscripten_glUniform3uiv.sig = "viip";\n var _emscripten_glUniform4f = (location2, v0, v1, v2, v3) => {\n GLctx.uniform4f(webglGetUniformLocation(location2), v0, v1, v2, v3);\n };\n _emscripten_glUniform4f.sig = "viffff";\n function _emscripten_glUniform4fv(location2, count, value2) {\n value2 >>>= 0;\n if (count <= 72) {\n var view = miniTempWebGLFloatBuffers[4 * count];\n var heap = HEAPF32;\n value2 = value2 >>> 2;\n count *= 4;\n for (var i2 = 0; i2 < count; i2 += 4) {\n var dst = value2 + i2;\n view[i2] = heap[dst >>> 0];\n view[i2 + 1] = heap[dst + 1 >>> 0];\n view[i2 + 2] = heap[dst + 2 >>> 0];\n view[i2 + 3] = heap[dst + 3 >>> 0];\n }\n } else {\n var view = HEAPF32.subarray(value2 >>> 2 >>> 0, value2 + count * 16 >>> 2 >>> 0);\n }\n GLctx.uniform4fv(webglGetUniformLocation(location2), view);\n }\n _emscripten_glUniform4fv.sig = "viip";\n var _emscripten_glUniform4i = (location2, v0, v1, v2, v3) => {\n GLctx.uniform4i(webglGetUniformLocation(location2), v0, v1, v2, v3);\n };\n _emscripten_glUniform4i.sig = "viiiii";\n function _emscripten_glUniform4iv(location2, count, value2) {\n value2 >>>= 0;\n if (count <= 72) {\n count *= 4;\n var view = miniTempWebGLIntBuffers[count];\n for (var i2 = 0; i2 < count; i2 += 4) {\n view[i2] = HEAP32[value2 + 4 * i2 >>> 2 >>> 0];\n view[i2 + 1] = HEAP32[value2 + (4 * i2 + 4) >>> 2 >>> 0];\n view[i2 + 2] = HEAP32[value2 + (4 * i2 + 8) >>> 2 >>> 0];\n view[i2 + 3] = HEAP32[value2 + (4 * i2 + 12) >>> 2 >>> 0];\n }\n } else {\n var view = HEAP32.subarray(value2 >>> 2 >>> 0, value2 + count * 16 >>> 2 >>> 0);\n }\n GLctx.uniform4iv(webglGetUniformLocation(location2), view);\n }\n _emscripten_glUniform4iv.sig = "viip";\n var _emscripten_glUniform4ui = (location2, v0, v1, v2, v3) => {\n GLctx.uniform4ui(webglGetUniformLocation(location2), v0, v1, v2, v3);\n };\n _emscripten_glUniform4ui.sig = "viiiii";\n function _emscripten_glUniform4uiv(location2, count, value2) {\n value2 >>>= 0;\n count && GLctx.uniform4uiv(webglGetUniformLocation(location2), HEAPU32, value2 >>> 2, count * 4);\n }\n _emscripten_glUniform4uiv.sig = "viip";\n var _emscripten_glUniformBlockBinding = (program, uniformBlockIndex, uniformBlockBinding) => {\n program = GL.programs[program];\n GLctx.uniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding);\n };\n _emscripten_glUniformBlockBinding.sig = "viii";\n function _emscripten_glUniformMatrix2fv(location2, count, transpose, value2) {\n value2 >>>= 0;\n if (count <= 72) {\n count *= 4;\n var view = miniTempWebGLFloatBuffers[count];\n for (var i2 = 0; i2 < count; i2 += 4) {\n view[i2] = HEAPF32[value2 + 4 * i2 >>> 2 >>> 0];\n view[i2 + 1] = HEAPF32[value2 + (4 * i2 + 4) >>> 2 >>> 0];\n view[i2 + 2] = HEAPF32[value2 + (4 * i2 + 8) >>> 2 >>> 0];\n view[i2 + 3] = HEAPF32[value2 + (4 * i2 + 12) >>> 2 >>> 0];\n }\n } else {\n var view = HEAPF32.subarray(value2 >>> 2 >>> 0, value2 + count * 16 >>> 2 >>> 0);\n }\n GLctx.uniformMatrix2fv(webglGetUniformLocation(location2), !!transpose, view);\n }\n _emscripten_glUniformMatrix2fv.sig = "viiip";\n function _emscripten_glUniformMatrix2x3fv(location2, count, transpose, value2) {\n value2 >>>= 0;\n count && GLctx.uniformMatrix2x3fv(webglGetUniformLocation(location2), !!transpose, HEAPF32, value2 >>> 2, count * 6);\n }\n _emscripten_glUniformMatrix2x3fv.sig = "viiip";\n function _emscripten_glUniformMatrix2x4fv(location2, count, transpose, value2) {\n value2 >>>= 0;\n count && GLctx.uniformMatrix2x4fv(webglGetUniformLocation(location2), !!transpose, HEAPF32, value2 >>> 2, count * 8);\n }\n _emscripten_glUniformMatrix2x4fv.sig = "viiip";\n function _emscripten_glUniformMatrix3fv(location2, count, transpose, value2) {\n value2 >>>= 0;\n if (count <= 32) {\n count *= 9;\n var view = miniTempWebGLFloatBuffers[count];\n for (var i2 = 0; i2 < count; i2 += 9) {\n view[i2] = HEAPF32[value2 + 4 * i2 >>> 2 >>> 0];\n view[i2 + 1] = HEAPF32[value2 + (4 * i2 + 4) >>> 2 >>> 0];\n view[i2 + 2] = HEAPF32[value2 + (4 * i2 + 8) >>> 2 >>> 0];\n view[i2 + 3] = HEAPF32[value2 + (4 * i2 + 12) >>> 2 >>> 0];\n view[i2 + 4] = HEAPF32[value2 + (4 * i2 + 16) >>> 2 >>> 0];\n view[i2 + 5] = HEAPF32[value2 + (4 * i2 + 20) >>> 2 >>> 0];\n view[i2 + 6] = HEAPF32[value2 + (4 * i2 + 24) >>> 2 >>> 0];\n view[i2 + 7] = HEAPF32[value2 + (4 * i2 + 28) >>> 2 >>> 0];\n view[i2 + 8] = HEAPF32[value2 + (4 * i2 + 32) >>> 2 >>> 0];\n }\n } else {\n var view = HEAPF32.subarray(value2 >>> 2 >>> 0, value2 + count * 36 >>> 2 >>> 0);\n }\n GLctx.uniformMatrix3fv(webglGetUniformLocation(location2), !!transpose, view);\n }\n _emscripten_glUniformMatrix3fv.sig = "viiip";\n function _emscripten_glUniformMatrix3x2fv(location2, count, transpose, value2) {\n value2 >>>= 0;\n count && GLctx.uniformMatrix3x2fv(webglGetUniformLocation(location2), !!transpose, HEAPF32, value2 >>> 2, count * 6);\n }\n _emscripten_glUniformMatrix3x2fv.sig = "viiip";\n function _emscripten_glUniformMatrix3x4fv(location2, count, transpose, value2) {\n value2 >>>= 0;\n count && GLctx.uniformMatrix3x4fv(webglGetUniformLocation(location2), !!transpose, HEAPF32, value2 >>> 2, count * 12);\n }\n _emscripten_glUniformMatrix3x4fv.sig = "viiip";\n function _emscripten_glUniformMatrix4fv(location2, count, transpose, value2) {\n value2 >>>= 0;\n if (count <= 18) {\n var view = miniTempWebGLFloatBuffers[16 * count];\n var heap = HEAPF32;\n value2 = value2 >>> 2;\n count *= 16;\n for (var i2 = 0; i2 < count; i2 += 16) {\n var dst = value2 + i2;\n view[i2] = heap[dst >>> 0];\n view[i2 + 1] = heap[dst + 1 >>> 0];\n view[i2 + 2] = heap[dst + 2 >>> 0];\n view[i2 + 3] = heap[dst + 3 >>> 0];\n view[i2 + 4] = heap[dst + 4 >>> 0];\n view[i2 + 5] = heap[dst + 5 >>> 0];\n view[i2 + 6] = heap[dst + 6 >>> 0];\n view[i2 + 7] = heap[dst + 7 >>> 0];\n view[i2 + 8] = heap[dst + 8 >>> 0];\n view[i2 + 9] = heap[dst + 9 >>> 0];\n view[i2 + 10] = heap[dst + 10 >>> 0];\n view[i2 + 11] = heap[dst + 11 >>> 0];\n view[i2 + 12] = heap[dst + 12 >>> 0];\n view[i2 + 13] = heap[dst + 13 >>> 0];\n view[i2 + 14] = heap[dst + 14 >>> 0];\n view[i2 + 15] = heap[dst + 15 >>> 0];\n }\n } else {\n var view = HEAPF32.subarray(value2 >>> 2 >>> 0, value2 + count * 64 >>> 2 >>> 0);\n }\n GLctx.uniformMatrix4fv(webglGetUniformLocation(location2), !!transpose, view);\n }\n _emscripten_glUniformMatrix4fv.sig = "viiip";\n function _emscripten_glUniformMatrix4x2fv(location2, count, transpose, value2) {\n value2 >>>= 0;\n count && GLctx.uniformMatrix4x2fv(webglGetUniformLocation(location2), !!transpose, HEAPF32, value2 >>> 2, count * 8);\n }\n _emscripten_glUniformMatrix4x2fv.sig = "viiip";\n function _emscripten_glUniformMatrix4x3fv(location2, count, transpose, value2) {\n value2 >>>= 0;\n count && GLctx.uniformMatrix4x3fv(webglGetUniformLocation(location2), !!transpose, HEAPF32, value2 >>> 2, count * 12);\n }\n _emscripten_glUniformMatrix4x3fv.sig = "viiip";\n var _emscripten_glUseProgram = (program) => {\n program = GL.programs[program];\n GLctx.useProgram(program);\n GLctx.currentProgram = program;\n };\n _emscripten_glUseProgram.sig = "vi";\n var _emscripten_glValidateProgram = (program) => {\n GLctx.validateProgram(GL.programs[program]);\n };\n _emscripten_glValidateProgram.sig = "vi";\n var _emscripten_glVertexAttrib1f = (x0, x1) => GLctx.vertexAttrib1f(x0, x1);\n _emscripten_glVertexAttrib1f.sig = "vif";\n function _emscripten_glVertexAttrib1fv(index, v2) {\n v2 >>>= 0;\n GLctx.vertexAttrib1f(index, HEAPF32[v2 >>> 2]);\n }\n _emscripten_glVertexAttrib1fv.sig = "vip";\n var _emscripten_glVertexAttrib2f = (x0, x1, x2) => GLctx.vertexAttrib2f(x0, x1, x2);\n _emscripten_glVertexAttrib2f.sig = "viff";\n function _emscripten_glVertexAttrib2fv(index, v2) {\n v2 >>>= 0;\n GLctx.vertexAttrib2f(index, HEAPF32[v2 >>> 2], HEAPF32[v2 + 4 >>> 2]);\n }\n _emscripten_glVertexAttrib2fv.sig = "vip";\n var _emscripten_glVertexAttrib3f = (x0, x1, x2, x3) => GLctx.vertexAttrib3f(x0, x1, x2, x3);\n _emscripten_glVertexAttrib3f.sig = "vifff";\n function _emscripten_glVertexAttrib3fv(index, v2) {\n v2 >>>= 0;\n GLctx.vertexAttrib3f(index, HEAPF32[v2 >>> 2], HEAPF32[v2 + 4 >>> 2], HEAPF32[v2 + 8 >>> 2]);\n }\n _emscripten_glVertexAttrib3fv.sig = "vip";\n var _emscripten_glVertexAttrib4f = (x0, x1, x2, x3, x4) => GLctx.vertexAttrib4f(x0, x1, x2, x3, x4);\n _emscripten_glVertexAttrib4f.sig = "viffff";\n function _emscripten_glVertexAttrib4fv(index, v2) {\n v2 >>>= 0;\n GLctx.vertexAttrib4f(index, HEAPF32[v2 >>> 2], HEAPF32[v2 + 4 >>> 2], HEAPF32[v2 + 8 >>> 2], HEAPF32[v2 + 12 >>> 2]);\n }\n _emscripten_glVertexAttrib4fv.sig = "vip";\n var _emscripten_glVertexAttribDivisor = (index, divisor) => {\n GLctx.vertexAttribDivisor(index, divisor);\n };\n _emscripten_glVertexAttribDivisor.sig = "vii";\n var _glVertexAttribDivisor = _emscripten_glVertexAttribDivisor;\n _glVertexAttribDivisor.sig = "vii";\n var _emscripten_glVertexAttribDivisorANGLE = _glVertexAttribDivisor;\n var _emscripten_glVertexAttribDivisorARB = _glVertexAttribDivisor;\n var _emscripten_glVertexAttribDivisorEXT = _glVertexAttribDivisor;\n var _emscripten_glVertexAttribDivisorNV = _glVertexAttribDivisor;\n var _emscripten_glVertexAttribI4i = (x0, x1, x2, x3, x4) => GLctx.vertexAttribI4i(x0, x1, x2, x3, x4);\n _emscripten_glVertexAttribI4i.sig = "viiiii";\n function _emscripten_glVertexAttribI4iv(index, v2) {\n v2 >>>= 0;\n GLctx.vertexAttribI4i(index, HEAP32[v2 >>> 2], HEAP32[v2 + 4 >>> 2], HEAP32[v2 + 8 >>> 2], HEAP32[v2 + 12 >>> 2]);\n }\n _emscripten_glVertexAttribI4iv.sig = "vip";\n var _emscripten_glVertexAttribI4ui = (x0, x1, x2, x3, x4) => GLctx.vertexAttribI4ui(x0, x1, x2, x3, x4);\n _emscripten_glVertexAttribI4ui.sig = "viiiii";\n function _emscripten_glVertexAttribI4uiv(index, v2) {\n v2 >>>= 0;\n GLctx.vertexAttribI4ui(index, HEAPU32[v2 >>> 2], HEAPU32[v2 + 4 >>> 2], HEAPU32[v2 + 8 >>> 2], HEAPU32[v2 + 12 >>> 2]);\n }\n _emscripten_glVertexAttribI4uiv.sig = "vip";\n function _emscripten_glVertexAttribIPointer(index, size, type, stride, ptr2) {\n ptr2 >>>= 0;\n GLctx.vertexAttribIPointer(index, size, type, stride, ptr2);\n }\n _emscripten_glVertexAttribIPointer.sig = "viiiip";\n function _emscripten_glVertexAttribPointer(index, size, type, normalized, stride, ptr2) {\n ptr2 >>>= 0;\n GLctx.vertexAttribPointer(index, size, type, !!normalized, stride, ptr2);\n }\n _emscripten_glVertexAttribPointer.sig = "viiiiip";\n var _emscripten_glViewport = (x0, x1, x2, x3) => GLctx.viewport(x0, x1, x2, x3);\n _emscripten_glViewport.sig = "viiii";\n function _emscripten_glWaitSync(sync, flags2, timeout) {\n sync >>>= 0;\n timeout = Number(timeout);\n GLctx.waitSync(GL.syncs[sync], flags2, timeout);\n }\n _emscripten_glWaitSync.sig = "vpij";\n function _emscripten_out(str) {\n str >>>= 0;\n return out(UTF8ToString(str));\n }\n _emscripten_out.sig = "vp";\n class HandleAllocator {\n allocated = [void 0];\n freelist = [];\n get(id) {\n return this.allocated[id];\n }\n has(id) {\n return this.allocated[id] !== void 0;\n }\n allocate(handle2) {\n var id = this.freelist.pop() || this.allocated.length;\n this.allocated[id] = handle2;\n return id;\n }\n free(id) {\n this.allocated[id] = void 0;\n this.freelist.push(id);\n }\n }\n var promiseMap = new HandleAllocator();\n var makePromise = () => {\n var promiseInfo = {};\n promiseInfo.promise = new Promise((resolve, reject) => {\n promiseInfo.reject = reject;\n promiseInfo.resolve = resolve;\n });\n promiseInfo.id = promiseMap.allocate(promiseInfo);\n return promiseInfo;\n };\n function _emscripten_promise_create() {\n return makePromise().id;\n }\n _emscripten_promise_create.sig = "p";\n function _emscripten_promise_destroy(id) {\n id >>>= 0;\n promiseMap.free(id);\n }\n _emscripten_promise_destroy.sig = "vp";\n var getPromise = (id) => promiseMap.get(id).promise;\n function _emscripten_promise_resolve(id, result, value2) {\n id >>>= 0;\n value2 >>>= 0;\n var info2 = promiseMap.get(id);\n switch (result) {\n case 0:\n info2.resolve(value2);\n return;\n case 1:\n info2.resolve(getPromise(value2));\n return;\n case 2:\n info2.resolve(getPromise(value2));\n _emscripten_promise_destroy(value2);\n return;\n case 3:\n info2.reject(value2);\n return;\n }\n }\n _emscripten_promise_resolve.sig = "vpip";\n var growMemory = (size) => {\n var oldHeapSize = wasmMemory.buffer.byteLength;\n var pages = (size - oldHeapSize + 65535) / 65536 | 0;\n try {\n wasmMemory.grow(pages);\n updateMemoryViews();\n return 1;\n } catch (e) {\n }\n };\n function _emscripten_resize_heap(requestedSize) {\n requestedSize >>>= 0;\n var oldSize = HEAPU8.length;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) {\n return false;\n }\n for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignMemory(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = growMemory(newSize);\n if (replacement) {\n return true;\n }\n }\n return false;\n }\n _emscripten_resize_heap.sig = "ip";\n var _emscripten_runtime_keepalive_pop = runtimeKeepalivePop;\n _emscripten_runtime_keepalive_pop.sig = "v";\n var _emscripten_runtime_keepalive_push = runtimeKeepalivePush;\n _emscripten_runtime_keepalive_push.sig = "v";\n var ENV = {};\n var getEnvStrings = () => {\n if (!getEnvStrings.strings) {\n var lang = (globalThis.navigator?.language ?? "C").replace("-", "_") + ".UTF-8";\n var env = { USER: "web_user", LOGNAME: "web_user", PATH: "/", PWD: "/", HOME: "/home/web_user", LANG: lang, _: getExecutableName() };\n for (var x2 in ENV) {\n if (ENV[x2] === void 0) delete env[x2];\n else env[x2] = ENV[x2];\n }\n var strings = [];\n for (var x2 in env) {\n strings.push(`${x2}=${env[x2]}`);\n }\n getEnvStrings.strings = strings;\n }\n return getEnvStrings.strings;\n };\n function _environ_get(__environ2, environ_buf) {\n __environ2 >>>= 0;\n environ_buf >>>= 0;\n var bufSize = 0;\n var envp = 0;\n for (var string of getEnvStrings()) {\n var ptr2 = environ_buf + bufSize;\n HEAPU32[__environ2 + envp >>> 2 >>> 0] = ptr2;\n bufSize += stringToUTF8(string, ptr2, Infinity) + 1;\n envp += 4;\n }\n return 0;\n }\n _environ_get.sig = "ipp";\n function _environ_sizes_get(penviron_count, penviron_buf_size) {\n penviron_count >>>= 0;\n penviron_buf_size >>>= 0;\n var strings = getEnvStrings();\n HEAPU32[penviron_count >>> 2 >>> 0] = strings.length;\n var bufSize = 0;\n for (var string of strings) {\n bufSize += lengthBytesUTF8(string) + 1;\n }\n HEAPU32[penviron_buf_size >>> 2 >>> 0] = bufSize;\n return 0;\n }\n _environ_sizes_get.sig = "ipp";\n function _fd_close(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return e.errno;\n }\n }\n _fd_close.sig = "ii";\n function _fd_fdstat_get(fd, pbuf) {\n pbuf >>>= 0;\n try {\n var rightsBase = 0;\n var rightsInheriting = 0;\n var flags2 = 0;\n {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var type = stream.tty ? 2 : FS.isDir(stream.mode) ? 3 : FS.isLink(stream.mode) ? 7 : 4;\n }\n HEAP8[pbuf >>> 0] = type;\n HEAP16[pbuf + 2 >>> 1 >>> 0] = flags2;\n HEAP64[pbuf + 8 >>> 3 >>> 0] = BigInt(rightsBase);\n HEAP64[pbuf + 16 >>> 3 >>> 0] = BigInt(rightsInheriting);\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return e.errno;\n }\n }\n _fd_fdstat_get.sig = "iip";\n var doReadv = (stream, iov, iovcnt, offset) => {\n var ret = 0;\n for (var i2 = 0; i2 < iovcnt; i2++) {\n var ptr2 = HEAPU32[iov >>> 2 >>> 0];\n var len = HEAPU32[iov + 4 >>> 2 >>> 0];\n iov += 8;\n var curr = FS.read(stream, HEAP8, ptr2, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n if (typeof offset != "undefined") {\n offset += curr;\n }\n }\n return ret;\n };\n function _fd_pread(fd, iov, iovcnt, offset, pnum) {\n iov >>>= 0;\n iovcnt >>>= 0;\n offset = bigintToI53Checked(offset);\n pnum >>>= 0;\n try {\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doReadv(stream, iov, iovcnt, offset);\n HEAPU32[pnum >>> 2 >>> 0] = num;\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return e.errno;\n }\n }\n _fd_pread.sig = "iippjp";\n var doWritev = (stream, iov, iovcnt, offset) => {\n var ret = 0;\n for (var i2 = 0; i2 < iovcnt; i2++) {\n var ptr2 = HEAPU32[iov >>> 2 >>> 0];\n var len = HEAPU32[iov + 4 >>> 2 >>> 0];\n iov += 8;\n var curr = FS.write(stream, HEAP8, ptr2, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) {\n break;\n }\n if (typeof offset != "undefined") {\n offset += curr;\n }\n }\n return ret;\n };\n function _fd_pwrite(fd, iov, iovcnt, offset, pnum) {\n iov >>>= 0;\n iovcnt >>>= 0;\n offset = bigintToI53Checked(offset);\n pnum >>>= 0;\n try {\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doWritev(stream, iov, iovcnt, offset);\n HEAPU32[pnum >>> 2 >>> 0] = num;\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return e.errno;\n }\n }\n _fd_pwrite.sig = "iippjp";\n function _fd_read(fd, iov, iovcnt, pnum) {\n iov >>>= 0;\n iovcnt >>>= 0;\n pnum >>>= 0;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doReadv(stream, iov, iovcnt);\n HEAPU32[pnum >>> 2 >>> 0] = num;\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return e.errno;\n }\n }\n _fd_read.sig = "iippp";\n function _fd_seek(fd, offset, whence, newOffset) {\n offset = bigintToI53Checked(offset);\n newOffset >>>= 0;\n try {\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.llseek(stream, offset, whence);\n HEAP64[newOffset >>> 3 >>> 0] = BigInt(stream.position);\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return e.errno;\n }\n }\n _fd_seek.sig = "iijip";\n function _fd_sync(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var rtn = stream.stream_ops?.fsync?.(stream);\n return rtn;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return e.errno;\n }\n }\n _fd_sync.sig = "ii";\n function _fd_write(fd, iov, iovcnt, pnum) {\n iov >>>= 0;\n iovcnt >>>= 0;\n pnum >>>= 0;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doWritev(stream, iov, iovcnt);\n HEAPU32[pnum >>> 2 >>> 0] = num;\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return e.errno;\n }\n }\n _fd_write.sig = "iippp";\n function _getaddrinfo(node, service, hint, out2) {\n node >>>= 0;\n service >>>= 0;\n hint >>>= 0;\n out2 >>>= 0;\n var addrs = [];\n var canon = null;\n var addr2 = 0;\n var port = 0;\n var flags2 = 0;\n var family = 0;\n var type = 0;\n var proto = 0;\n var ai, last;\n function allocaddrinfo(family2, type2, proto2, canon2, addr3, port2) {\n var sa, salen, ai2;\n var errno;\n salen = family2 === 10 ? 28 : 16;\n addr3 = family2 === 10 ? inetNtop6(addr3) : inetNtop4(addr3);\n sa = _malloc(salen);\n errno = writeSockaddr(sa, family2, addr3, port2);\n ai2 = _malloc(32);\n HEAP32[ai2 + 4 >>> 2 >>> 0] = family2;\n HEAP32[ai2 + 8 >>> 2 >>> 0] = type2;\n HEAP32[ai2 + 12 >>> 2 >>> 0] = proto2;\n HEAPU32[ai2 + 24 >>> 2 >>> 0] = canon2;\n HEAPU32[ai2 + 20 >>> 2 >>> 0] = sa;\n if (family2 === 10) {\n HEAP32[ai2 + 16 >>> 2 >>> 0] = 28;\n } else {\n HEAP32[ai2 + 16 >>> 2 >>> 0] = 16;\n }\n HEAP32[ai2 + 28 >>> 2 >>> 0] = 0;\n return ai2;\n }\n if (hint) {\n flags2 = HEAP32[hint >>> 2 >>> 0];\n family = HEAP32[hint + 4 >>> 2 >>> 0];\n type = HEAP32[hint + 8 >>> 2 >>> 0];\n proto = HEAP32[hint + 12 >>> 2 >>> 0];\n }\n if (type && !proto) {\n proto = type === 2 ? 17 : 6;\n }\n if (!type && proto) {\n type = proto === 17 ? 2 : 1;\n }\n if (proto === 0) {\n proto = 6;\n }\n if (type === 0) {\n type = 1;\n }\n if (!node && !service) {\n return -2;\n }\n if (flags2 & ~(1 | 2 | 4 | 1024 | 8 | 16 | 32)) {\n return -1;\n }\n if (hint !== 0 && HEAP32[hint >>> 2 >>> 0] & 2 && !node) {\n return -1;\n }\n if (flags2 & 32) {\n return -2;\n }\n if (type !== 0 && type !== 1 && type !== 2) {\n return -7;\n }\n if (family !== 0 && family !== 2 && family !== 10) {\n return -6;\n }\n if (service) {\n service = UTF8ToString(service);\n port = parseInt(service, 10);\n if (isNaN(port)) {\n if (flags2 & 1024) {\n return -2;\n }\n return -8;\n }\n }\n if (!node) {\n if (family === 0) {\n family = 2;\n }\n if ((flags2 & 1) === 0) {\n if (family === 2) {\n addr2 = _htonl(2130706433);\n } else {\n addr2 = [0, 0, 0, _htonl(1)];\n }\n }\n ai = allocaddrinfo(family, type, proto, null, addr2, port);\n HEAPU32[out2 >>> 2 >>> 0] = ai;\n return 0;\n }\n node = UTF8ToString(node);\n addr2 = inetPton4(node);\n if (addr2 !== null) {\n if (family === 0 || family === 2) {\n family = 2;\n } else if (family === 10 && flags2 & 8) {\n addr2 = [0, 0, _htonl(65535), addr2];\n family = 10;\n } else {\n return -2;\n }\n } else {\n addr2 = inetPton6(node);\n if (addr2 !== null) {\n if (family === 0 || family === 10) {\n family = 10;\n } else {\n return -2;\n }\n }\n }\n if (addr2 != null) {\n ai = allocaddrinfo(family, type, proto, node, addr2, port);\n HEAPU32[out2 >>> 2 >>> 0] = ai;\n return 0;\n }\n if (flags2 & 4) {\n return -2;\n }\n node = DNS.lookup_name(node);\n addr2 = inetPton4(node);\n if (family === 0) {\n family = 2;\n } else if (family === 10) {\n addr2 = [0, 0, _htonl(65535), addr2];\n }\n ai = allocaddrinfo(family, type, proto, null, addr2, port);\n HEAPU32[out2 >>> 2 >>> 0] = ai;\n return 0;\n }\n _getaddrinfo.sig = "ipppp";\n function _getnameinfo(sa, salen, node, nodelen, serv, servlen, flags2) {\n sa >>>= 0;\n node >>>= 0;\n serv >>>= 0;\n var info2 = readSockaddr(sa, salen);\n if (info2.errno) {\n return -6;\n }\n var port = info2.port;\n var addr2 = info2.addr;\n var overflowed = false;\n if (node && nodelen) {\n var lookup;\n if (flags2 & 1 || !(lookup = DNS.lookup_addr(addr2))) {\n if (flags2 & 8) {\n return -2;\n }\n } else {\n addr2 = lookup;\n }\n var numBytesWrittenExclNull = stringToUTF8(addr2, node, nodelen);\n if (numBytesWrittenExclNull + 1 >= nodelen) {\n overflowed = true;\n }\n }\n if (serv && servlen) {\n port = "" + port;\n var numBytesWrittenExclNull = stringToUTF8(port, serv, servlen);\n if (numBytesWrittenExclNull + 1 >= servlen) {\n overflowed = true;\n }\n }\n if (overflowed) {\n return -12;\n }\n return 0;\n }\n _getnameinfo.sig = "ipipipii";\n var Protocols = { list: [], map: {} };\n var stringToAscii = (str, buffer) => {\n for (var i2 = 0; i2 < str.length; ++i2) {\n HEAP8[buffer++ >>> 0] = str.charCodeAt(i2);\n }\n HEAP8[buffer >>> 0] = 0;\n };\n var _setprotoent = (stayopen) => {\n function allocprotoent(name2, proto, aliases) {\n var nameBuf = _malloc(name2.length + 1);\n stringToAscii(name2, nameBuf);\n var j2 = 0;\n var length = aliases.length;\n var aliasListBuf = _malloc((length + 1) * 4);\n for (var i2 = 0; i2 < length; i2++, j2 += 4) {\n var alias = aliases[i2];\n var aliasBuf = _malloc(alias.length + 1);\n stringToAscii(alias, aliasBuf);\n HEAPU32[aliasListBuf + j2 >>> 2 >>> 0] = aliasBuf;\n }\n HEAPU32[aliasListBuf + j2 >>> 2 >>> 0] = 0;\n var pe2 = _malloc(12);\n HEAPU32[pe2 >>> 2 >>> 0] = nameBuf;\n HEAPU32[pe2 + 4 >>> 2 >>> 0] = aliasListBuf;\n HEAP32[pe2 + 8 >>> 2 >>> 0] = proto;\n return pe2;\n }\n var list = Protocols.list;\n var map = Protocols.map;\n if (list.length === 0) {\n var entry = allocprotoent("tcp", 6, ["TCP"]);\n list.push(entry);\n map["tcp"] = map["6"] = entry;\n entry = allocprotoent("udp", 17, ["UDP"]);\n list.push(entry);\n map["udp"] = map["17"] = entry;\n }\n _setprotoent.index = 0;\n };\n _setprotoent.sig = "vi";\n function _getprotobyname(name2) {\n name2 >>>= 0;\n name2 = UTF8ToString(name2);\n _setprotoent(true);\n var result = Protocols.map[name2];\n return result;\n }\n _getprotobyname.sig = "pp";\n function _random_get(buffer, size) {\n buffer >>>= 0;\n size >>>= 0;\n try {\n randomFill(HEAPU8.subarray(buffer >>> 0, buffer + size >>> 0));\n return 0;\n } catch (e) {\n if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;\n return e.errno;\n }\n }\n _random_get.sig = "ipp";\n var _stackAlloc = stackAlloc;\n var _stackRestore = stackSave;\n var _stackSave = stackSave;\n var FS_createPath = (...args2) => FS.createPath(...args2);\n var FS_unlink = (...args2) => FS.unlink(...args2);\n var FS_createLazyFile = (...args2) => FS.createLazyFile(...args2);\n var FS_createDevice = (...args2) => FS.createDevice(...args2);\n var writeI53ToI64Clamped = (ptr2, num) => {\n if (num > 9223372036854776e3) {\n HEAPU32[ptr2 >>> 2 >>> 0] = 4294967295;\n HEAPU32[ptr2 + 4 >>> 2 >>> 0] = 2147483647;\n } else if (num < -9223372036854776e3) {\n HEAPU32[ptr2 >>> 2 >>> 0] = 0;\n HEAPU32[ptr2 + 4 >>> 2 >>> 0] = 2147483648;\n } else {\n writeI53ToI64(ptr2, num);\n }\n };\n var writeI53ToI64Signaling = (ptr2, num) => {\n if (num > 9223372036854776e3 || num < -9223372036854776e3) {\n throw `RangeError: ${num}`;\n }\n writeI53ToI64(ptr2, num);\n };\n var writeI53ToU64Clamped = (ptr2, num) => {\n if (num > 18446744073709552e3) {\n HEAPU32[ptr2 >>> 2 >>> 0] = 4294967295;\n HEAPU32[ptr2 + 4 >>> 2 >>> 0] = 4294967295;\n } else if (num < 0) {\n HEAPU32[ptr2 >>> 2 >>> 0] = 0;\n HEAPU32[ptr2 + 4 >>> 2 >>> 0] = 0;\n } else {\n writeI53ToI64(ptr2, num);\n }\n };\n var writeI53ToU64Signaling = (ptr2, num) => {\n if (num < 0 || num > 18446744073709552e3) {\n throw `RangeError: ${num}`;\n }\n writeI53ToI64(ptr2, num);\n };\n var readI53FromU64 = (ptr2) => HEAPU32[ptr2 >>> 2 >>> 0] + HEAPU32[ptr2 + 4 >>> 2 >>> 0] * 4294967296;\n var convertI32PairToI53 = (lo, hi) => (lo >>> 0) + hi * 4294967296;\n var convertI32PairToI53Checked = (lo, hi) => hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;\n var convertU32PairToI53 = (lo, hi) => (lo >>> 0) + (hi >>> 0) * 4294967296;\n var getTempRet0 = (val) => __emscripten_tempret_get();\n var setTempRet0 = (val) => __emscripten_tempret_set(val);\n var ptrToString = (ptr2) => {\n ptr2 >>>= 0;\n return "0x" + ptr2.toString(16).padStart(8, "0");\n };\n function _emscripten_notify_memory_growth(memoryIndex) {\n memoryIndex >>>= 0;\n updateMemoryViews();\n }\n _emscripten_notify_memory_growth.sig = "vp";\n var strError = (errno) => UTF8ToString(_strerror(errno));\n var _endprotoent = () => {\n };\n _endprotoent.sig = "v";\n function _getprotoent(number) {\n if (_setprotoent.index === Protocols.list.length) {\n return 0;\n }\n var result = Protocols.list[_setprotoent.index++];\n return result;\n }\n _getprotoent.sig = "p";\n function _getprotobynumber(number) {\n _setprotoent(true);\n var result = Protocols.map[number];\n return result;\n }\n _getprotobynumber.sig = "pi";\n var Sockets = { BUFFER_SIZE: 10240, MAX_BUFFER_SIZE: 10485760, nextFd: 1, fds: {}, nextport: 1, maxport: 65535, peer: null, connections: {}, portmap: {}, localAddr: 4261412874, addrPool: [33554442, 50331658, 67108874, 83886090, 100663306, 117440522, 134217738, 150994954, 167772170, 184549386, 201326602, 218103818, 234881034] };\n function _emscripten_run_script(ptr) {\n ptr >>>= 0;\n eval(UTF8ToString(ptr));\n }\n _emscripten_run_script.sig = "vp";\n function _emscripten_run_script_int(ptr) {\n ptr >>>= 0;\n return eval(UTF8ToString(ptr)) | 0;\n }\n _emscripten_run_script_int.sig = "ip";\n function _emscripten_run_script_string(ptr) {\n ptr >>>= 0;\n var s = eval(UTF8ToString(ptr));\n if (s == null) {\n return 0;\n }\n s += "";\n var me = _emscripten_run_script_string;\n me.bufferSize = lengthBytesUTF8(s) + 1;\n me.buffer = _realloc(me.buffer ?? 0, me.bufferSize);\n stringToUTF8(s, me.buffer, me.bufferSize);\n return me.buffer;\n }\n _emscripten_run_script_string.sig = "pp";\n var _emscripten_random = () => Math.random();\n _emscripten_random.sig = "f";\n var _emscripten_performance_now = () => performance.now();\n _emscripten_performance_now.sig = "d";\n var __emscripten_get_now_is_monotonic = () => nowIsMonotonic;\n __emscripten_get_now_is_monotonic.sig = "i";\n var warnOnce = (text) => {\n warnOnce.shown ||= {};\n if (!warnOnce.shown[text]) {\n warnOnce.shown[text] = 1;\n if (ENVIRONMENT_IS_NODE) text = "warning: " + text;\n err(text);\n }\n };\n function _emscripten_get_compiler_setting(name2) {\n name2 >>>= 0;\n return abort("You must build with -sRETAIN_COMPILER_SETTINGS for getCompilerSetting or emscripten_get_compiler_setting to work");\n }\n _emscripten_get_compiler_setting.sig = "pp";\n var _emscripten_has_asyncify = () => 0;\n _emscripten_has_asyncify.sig = "i";\n function _emscripten_print_double(x2, to, max) {\n to >>>= 0;\n var str = x2 + "";\n if (to) return stringToUTF8(str, to, max);\n else return lengthBytesUTF8(str);\n }\n _emscripten_print_double.sig = "idpi";\n function _emscripten_asm_const_double(code, sigPtr, argbuf) {\n code >>>= 0;\n sigPtr >>>= 0;\n argbuf >>>= 0;\n return runEmAsmFunction(code, sigPtr, argbuf);\n }\n _emscripten_asm_const_double.sig = "dppp";\n function _emscripten_asm_const_ptr(code, sigPtr, argbuf) {\n code >>>= 0;\n sigPtr >>>= 0;\n argbuf >>>= 0;\n return runEmAsmFunction(code, sigPtr, argbuf);\n }\n _emscripten_asm_const_ptr.sig = "pppp";\n var runMainThreadEmAsm = (emAsmAddr, sigPtr, argbuf, sync) => {\n var args2 = readEmAsmArgs(sigPtr, argbuf);\n return ASM_CONSTS[emAsmAddr](...args2);\n };\n function _emscripten_asm_const_int_sync_on_main_thread(emAsmAddr, sigPtr, argbuf) {\n emAsmAddr >>>= 0;\n sigPtr >>>= 0;\n argbuf >>>= 0;\n return runMainThreadEmAsm(emAsmAddr, sigPtr, argbuf, 1);\n }\n _emscripten_asm_const_int_sync_on_main_thread.sig = "ippp";\n function _emscripten_asm_const_ptr_sync_on_main_thread(emAsmAddr, sigPtr, argbuf) {\n emAsmAddr >>>= 0;\n sigPtr >>>= 0;\n argbuf >>>= 0;\n return runMainThreadEmAsm(emAsmAddr, sigPtr, argbuf, 1);\n }\n _emscripten_asm_const_ptr_sync_on_main_thread.sig = "pppp";\n function _emscripten_asm_const_double_sync_on_main_thread(a1, a2, a3) {\n a1 >>>= 0;\n a2 >>>= 0;\n a3 >>>= 0;\n return _emscripten_asm_const_int_sync_on_main_thread(a1, a2, a3);\n }\n _emscripten_asm_const_double_sync_on_main_thread.sig = "dppp";\n function _emscripten_asm_const_async_on_main_thread(emAsmAddr, sigPtr, argbuf) {\n emAsmAddr >>>= 0;\n sigPtr >>>= 0;\n argbuf >>>= 0;\n return runMainThreadEmAsm(emAsmAddr, sigPtr, argbuf, 0);\n }\n _emscripten_asm_const_async_on_main_thread.sig = "vppp";\n function __Unwind_Backtrace(func2, arg2) {\n func2 >>>= 0;\n arg2 >>>= 0;\n var trace = getCallstack();\n var parts = trace.split("\\n");\n for (var i2 = 0; i2 < parts.length; i2++) {\n var ret = getWasmTableEntry(func2)(0, arg2);\n if (ret !== 0) return;\n }\n }\n __Unwind_Backtrace.sig = "ipp";\n function __Unwind_GetIPInfo(context, ipBefore) {\n context >>>= 0;\n ipBefore >>>= 0;\n return abort("Unwind_GetIPInfo");\n }\n __Unwind_GetIPInfo.sig = "ppp";\n function __Unwind_FindEnclosingFunction(ip) {\n ip >>>= 0;\n return 0;\n }\n __Unwind_FindEnclosingFunction.sig = "pp";\n var autoResumeAudioContext = (ctx) => {\n for (var event of ["keydown", "mousedown", "touchstart"]) {\n for (var element of [document, document.getElementById("canvas")]) {\n element?.addEventListener(event, () => {\n if (ctx.state === "suspended") ctx.resume();\n }, { once: true });\n }\n }\n };\n var dynCall = (sig2, ptr2, args2 = [], promising = false) => {\n var func2 = getWasmTableEntry(ptr2);\n var rtn = func2(...args2);\n function convert(rtn2) {\n return sig2[0] == "p" ? rtn2 >>> 0 : rtn2;\n }\n return convert(rtn);\n };\n var getDynCaller = (sig2, ptr2, promising = false) => (...args2) => dynCall(sig2, ptr2, args2, promising);\n var _emscripten_exit_with_live_runtime = () => {\n runtimeKeepalivePush();\n throw "unwind";\n };\n _emscripten_exit_with_live_runtime.sig = "v";\n var _emscripten_force_exit = (status) => {\n __emscripten_runtime_keepalive_clear();\n _exit(status);\n };\n _emscripten_force_exit.sig = "vi";\n function _emscripten_outn(str, len) {\n str >>>= 0;\n len >>>= 0;\n return out(UTF8ToString(str, len));\n }\n _emscripten_outn.sig = "vpp";\n function _emscripten_errn(str, len) {\n str >>>= 0;\n len >>>= 0;\n return err(UTF8ToString(str, len));\n }\n _emscripten_errn.sig = "vpp";\n var _emscripten_throw_number = (number) => {\n throw number;\n };\n _emscripten_throw_number.sig = "vd";\n function _emscripten_throw_string(str) {\n str >>>= 0;\n throw UTF8ToString(str);\n }\n _emscripten_throw_string.sig = "vp";\n var _emscripten_runtime_keepalive_check = keepRuntimeAlive;\n _emscripten_runtime_keepalive_check.sig = "i";\n var asmjsMangle = (x2) => {\n if (x2 == "__main_argc_argv") {\n x2 = "main";\n }\n return "_" + x2;\n };\n function __emscripten_fs_load_embedded_files(ptr2) {\n ptr2 >>>= 0;\n do {\n var name_addr = HEAPU32[ptr2 >>> 2 >>> 0];\n ptr2 += 4;\n var len = HEAPU32[ptr2 >>> 2 >>> 0];\n ptr2 += 4;\n var content = HEAPU32[ptr2 >>> 2 >>> 0];\n ptr2 += 4;\n var name2 = UTF8ToString(name_addr);\n FS.createPath("/", PATH.dirname(name2), true, true);\n FS.createDataFile(name2, null, HEAP8.subarray(content >>> 0, content + len >>> 0), true, true, true);\n } while (HEAPU32[ptr2 >>> 2 >>> 0]);\n }\n __emscripten_fs_load_embedded_files.sig = "vp";\n var onInits = [];\n var addOnInit = (cb) => onInits.push(cb);\n var onMains = [];\n var addOnPreMain = (cb) => onMains.push(cb);\n var onExits = [];\n var addOnExit = (cb) => onExits.push(cb);\n var STACK_SIZE = 10485760;\n var STACK_ALIGN = 16;\n var POINTER_SIZE = 4;\n var ASSERTIONS = 0;\n var getCFunc = (ident) => {\n var func2 = Module["_" + ident];\n return func2;\n };\n var writeArrayToMemory = (array, buffer) => {\n HEAP8.set(array, buffer >>> 0);\n };\n var ccall = (ident, returnType, argTypes, args2, opts) => {\n var toC = { string: (str) => {\n var ret2 = 0;\n if (str !== null && str !== void 0 && str !== 0) {\n ret2 = stringToUTF8OnStack(str);\n }\n return ret2;\n }, array: (arr) => {\n var ret2 = stackAlloc(arr.length);\n writeArrayToMemory(arr, ret2);\n return ret2;\n } };\n function convertReturnValue(ret2) {\n if (returnType === "string") {\n return UTF8ToString(ret2);\n }\n if (returnType === "pointer") return ret2 >>> 0;\n if (returnType === "boolean") return Boolean(ret2);\n return ret2;\n }\n var func2 = getCFunc(ident);\n var cArgs = [];\n var stack = 0;\n if (args2) {\n for (var i2 = 0; i2 < args2.length; i2++) {\n var converter = toC[argTypes[i2]];\n if (converter) {\n if (stack === 0) stack = stackSave();\n cArgs[i2] = converter(args2[i2]);\n } else {\n cArgs[i2] = args2[i2];\n }\n }\n }\n var ret = func2(...cArgs);\n function onDone(ret2) {\n if (stack !== 0) stackRestore(stack);\n return convertReturnValue(ret2);\n }\n ret = onDone(ret);\n return ret;\n };\n var cwrap = (ident, returnType, argTypes, opts) => {\n var numericArgs = !argTypes || argTypes.every((type) => type === "number" || type === "boolean");\n var numericRet = returnType !== "string";\n if (numericRet && numericArgs && !opts) {\n return getCFunc(ident);\n }\n return (...args2) => ccall(ident, returnType, argTypes, args2, opts);\n };\n var removeFunction = (index) => {\n functionsInTableMap.delete(getWasmTableEntry(index));\n setWasmTableEntry(index, null);\n freeTableIndexes.push(index);\n };\n var _emscripten_math_cbrt = Math.cbrt;\n _emscripten_math_cbrt.sig = "dd";\n var _emscripten_math_pow = Math.pow;\n _emscripten_math_pow.sig = "ddd";\n var _emscripten_math_random = Math.random;\n _emscripten_math_random.sig = "d";\n var _emscripten_math_sign = Math.sign;\n _emscripten_math_sign.sig = "dd";\n var _emscripten_math_sqrt = Math.sqrt;\n _emscripten_math_sqrt.sig = "dd";\n var _emscripten_math_exp = Math.exp;\n _emscripten_math_exp.sig = "dd";\n var _emscripten_math_expm1 = Math.expm1;\n _emscripten_math_expm1.sig = "dd";\n var _emscripten_math_fmod = (x2, y) => x2 % y;\n _emscripten_math_fmod.sig = "ddd";\n var _emscripten_math_log = Math.log;\n _emscripten_math_log.sig = "dd";\n var _emscripten_math_log1p = Math.log1p;\n _emscripten_math_log1p.sig = "dd";\n var _emscripten_math_log10 = Math.log10;\n _emscripten_math_log10.sig = "dd";\n var _emscripten_math_log2 = Math.log2;\n _emscripten_math_log2.sig = "dd";\n var _emscripten_math_round = Math.round;\n _emscripten_math_round.sig = "dd";\n var _emscripten_math_acos = Math.acos;\n _emscripten_math_acos.sig = "dd";\n var _emscripten_math_acosh = Math.acosh;\n _emscripten_math_acosh.sig = "dd";\n var _emscripten_math_asin = Math.asin;\n _emscripten_math_asin.sig = "dd";\n var _emscripten_math_asinh = Math.asinh;\n _emscripten_math_asinh.sig = "dd";\n var _emscripten_math_atan = Math.atan;\n _emscripten_math_atan.sig = "dd";\n var _emscripten_math_atanh = Math.atanh;\n _emscripten_math_atanh.sig = "dd";\n var _emscripten_math_atan2 = Math.atan2;\n _emscripten_math_atan2.sig = "ddd";\n var _emscripten_math_cos = Math.cos;\n _emscripten_math_cos.sig = "dd";\n var _emscripten_math_cosh = Math.cosh;\n _emscripten_math_cosh.sig = "dd";\n function _emscripten_math_hypot(count, varargs) {\n varargs >>>= 0;\n var args2 = [];\n for (var i2 = 0; i2 < count; ++i2) {\n args2.push(HEAPF64[varargs + i2 * 8 >>> 3 >>> 0]);\n }\n return Math.hypot(...args2);\n }\n _emscripten_math_hypot.sig = "dip";\n var _emscripten_math_sin = Math.sin;\n _emscripten_math_sin.sig = "dd";\n var _emscripten_math_sinh = Math.sinh;\n _emscripten_math_sinh.sig = "dd";\n var _emscripten_math_tan = Math.tan;\n _emscripten_math_tan.sig = "dd";\n var _emscripten_math_tanh = Math.tanh;\n _emscripten_math_tanh.sig = "dd";\n var intArrayToString = (array) => {\n var ret = [];\n for (var i2 = 0; i2 < array.length; i2++) {\n var chr = array[i2];\n if (chr > 255) {\n chr &= 255;\n }\n ret.push(String.fromCharCode(chr));\n }\n return ret.join("");\n };\n var AsciiToString = (ptr2) => {\n ptr2 >>>= 0;\n var str = "";\n while (1) {\n var ch = HEAPU8[ptr2++ >>> 0];\n if (!ch) return str;\n str += String.fromCharCode(ch);\n }\n };\n var UTF16Decoder = globalThis.TextDecoder ? new TextDecoder("utf-16le") : void 0;\n var UTF16ToString = (ptr2, maxBytesToRead, ignoreNul) => {\n var idx = ptr2 >>> 1;\n var endIdx = findStringEnd(HEAPU16, idx, maxBytesToRead / 2, ignoreNul);\n if (endIdx - idx > 16 && UTF16Decoder) return UTF16Decoder.decode(HEAPU16.subarray(idx >>> 0, endIdx >>> 0));\n var str = "";\n for (var i2 = idx; i2 < endIdx; ++i2) {\n var codeUnit = HEAPU16[i2 >>> 0];\n str += String.fromCharCode(codeUnit);\n }\n return str;\n };\n var stringToUTF16 = (str, outPtr, maxBytesToWrite) => {\n maxBytesToWrite ??= 2147483647;\n if (maxBytesToWrite < 2) return 0;\n maxBytesToWrite -= 2;\n var startPtr = outPtr;\n var numCharsToWrite = maxBytesToWrite < str.length * 2 ? maxBytesToWrite / 2 : str.length;\n for (var i2 = 0; i2 < numCharsToWrite; ++i2) {\n var codeUnit = str.charCodeAt(i2);\n HEAP16[outPtr >>> 1 >>> 0] = codeUnit;\n outPtr += 2;\n }\n HEAP16[outPtr >>> 1 >>> 0] = 0;\n return outPtr - startPtr;\n };\n var lengthBytesUTF16 = (str) => str.length * 2;\n var UTF32ToString = (ptr2, maxBytesToRead, ignoreNul) => {\n var str = "";\n var startIdx = ptr2 >>> 2;\n for (var i2 = 0; !(i2 >= maxBytesToRead / 4); i2++) {\n var utf32 = HEAPU32[startIdx + i2 >>> 0];\n if (!utf32 && !ignoreNul) break;\n str += String.fromCodePoint(utf32);\n }\n return str;\n };\n var stringToUTF32 = (str, outPtr, maxBytesToWrite) => {\n outPtr >>>= 0;\n maxBytesToWrite ??= 2147483647;\n if (maxBytesToWrite < 4) return 0;\n var startPtr = outPtr;\n var endPtr = startPtr + maxBytesToWrite - 4;\n for (var i2 = 0; i2 < str.length; ++i2) {\n var codePoint = str.codePointAt(i2);\n if (codePoint > 65535) {\n i2++;\n }\n HEAP32[outPtr >>> 2 >>> 0] = codePoint;\n outPtr += 4;\n if (outPtr + 4 > endPtr) break;\n }\n HEAP32[outPtr >>> 2 >>> 0] = 0;\n return outPtr - startPtr;\n };\n var lengthBytesUTF32 = (str) => {\n var len = 0;\n for (var i2 = 0; i2 < str.length; ++i2) {\n var codePoint = str.codePointAt(i2);\n if (codePoint > 65535) {\n i2++;\n }\n len += 4;\n }\n return len;\n };\n var JSEvents = { removeAllEventListeners() {\n while (JSEvents.eventHandlers.length) {\n JSEvents._removeHandler(JSEvents.eventHandlers.length - 1);\n }\n JSEvents.deferredCalls = [];\n }, registerRemoveEventListeners() {\n if (!JSEvents.removeEventListenersRegistered) {\n addOnExit(JSEvents.removeAllEventListeners);\n JSEvents.removeEventListenersRegistered = true;\n }\n }, inEventHandler: 0, deferredCalls: [], deferCall(targetFunction, precedence, argsList) {\n function arraysHaveEqualContent(arrA, arrB) {\n if (arrA.length != arrB.length) return false;\n for (var i2 in arrA) {\n if (arrA[i2] != arrB[i2]) return false;\n }\n return true;\n }\n for (var call of JSEvents.deferredCalls) {\n if (call.targetFunction == targetFunction && arraysHaveEqualContent(call.argsList, argsList)) {\n return;\n }\n }\n JSEvents.deferredCalls.push({ targetFunction, precedence, argsList });\n JSEvents.deferredCalls.sort((x2, y) => x2.precedence < y.precedence);\n }, removeDeferredCalls(targetFunction) {\n JSEvents.deferredCalls = JSEvents.deferredCalls.filter((call) => call.targetFunction != targetFunction);\n }, canPerformEventHandlerRequests() {\n if (navigator.userActivation) {\n return navigator.userActivation.isActive;\n }\n return JSEvents.inEventHandler && JSEvents.currentEventHandler.allowsDeferredCalls;\n }, runDeferredCalls() {\n if (!JSEvents.canPerformEventHandlerRequests()) {\n return;\n }\n var deferredCalls = JSEvents.deferredCalls;\n JSEvents.deferredCalls = [];\n for (var call of deferredCalls) {\n call.targetFunction(...call.argsList);\n }\n }, eventHandlers: [], removeAllHandlersOnTarget: (target, eventTypeString) => {\n for (var i2 = 0; i2 < JSEvents.eventHandlers.length; ++i2) {\n if (JSEvents.eventHandlers[i2].target == target && (!eventTypeString || eventTypeString == JSEvents.eventHandlers[i2].eventTypeString)) {\n JSEvents._removeHandler(i2--);\n }\n }\n }, _removeHandler(i2) {\n var h = JSEvents.eventHandlers[i2];\n h.target.removeEventListener(h.eventTypeString, h.eventListenerFunc, h.useCapture);\n JSEvents.eventHandlers.splice(i2, 1);\n }, registerOrRemoveHandler(eventHandler) {\n if (!eventHandler.target) {\n return -4;\n }\n if (eventHandler.callbackfunc) {\n eventHandler.eventListenerFunc = function(event) {\n ++JSEvents.inEventHandler;\n JSEvents.currentEventHandler = eventHandler;\n JSEvents.runDeferredCalls();\n eventHandler.handlerFunc(event);\n JSEvents.runDeferredCalls();\n --JSEvents.inEventHandler;\n };\n eventHandler.target.addEventListener(eventHandler.eventTypeString, eventHandler.eventListenerFunc, eventHandler.useCapture);\n JSEvents.eventHandlers.push(eventHandler);\n JSEvents.registerRemoveEventListeners();\n } else {\n for (var i2 = 0; i2 < JSEvents.eventHandlers.length; ++i2) {\n if (JSEvents.eventHandlers[i2].target == eventHandler.target && JSEvents.eventHandlers[i2].eventTypeString == eventHandler.eventTypeString) {\n JSEvents._removeHandler(i2--);\n }\n }\n }\n return 0;\n }, removeSingleHandler(eventHandler) {\n let success = false;\n for (let i2 = 0; i2 < JSEvents.eventHandlers.length; ++i2) {\n const handler = JSEvents.eventHandlers[i2];\n if (handler.target === eventHandler.target && handler.eventTypeId === eventHandler.eventTypeId && handler.callbackfunc === eventHandler.callbackfunc && handler.userData === eventHandler.userData) {\n JSEvents._removeHandler(i2--);\n success = true;\n }\n }\n return success ? 0 : -5;\n }, getNodeNameForTarget(target) {\n if (!target) return "";\n if (target == window) return "#window";\n if (target == screen) return "#screen";\n return target?.nodeName || "";\n }, fullscreenEnabled() {\n return document.fullscreenEnabled || document.webkitFullscreenEnabled;\n } };\n function getFullscreenElement() {\n return document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || document.webkitCurrentFullScreenElement || document.msFullscreenElement;\n }\n var maybeCStringToJsString = (cString) => cString > 2 ? UTF8ToString(cString) : cString;\n var specialHTMLTargets = [0, globalThis.document ?? 0, globalThis.window ?? 0];\n var findEventTarget = (target) => {\n target = maybeCStringToJsString(target);\n var domElement = specialHTMLTargets[target] || globalThis.document?.querySelector(target);\n return domElement;\n };\n var registerKeyEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n var eventSize = 160;\n JSEvents.keyEvent ||= _malloc(eventSize);\n var keyEventHandlerFunc = (e) => {\n var keyEventData = JSEvents.keyEvent;\n HEAPF64[keyEventData >>> 3 >>> 0] = e.timeStamp;\n var idx = keyEventData >>> 2;\n HEAP32[idx + 2 >>> 0] = e.location;\n HEAP8[keyEventData + 12 >>> 0] = e.ctrlKey;\n HEAP8[keyEventData + 13 >>> 0] = e.shiftKey;\n HEAP8[keyEventData + 14 >>> 0] = e.altKey;\n HEAP8[keyEventData + 15 >>> 0] = e.metaKey;\n HEAP8[keyEventData + 16 >>> 0] = e.repeat;\n HEAP32[idx + 5 >>> 0] = e.charCode;\n HEAP32[idx + 6 >>> 0] = e.keyCode;\n HEAP32[idx + 7 >>> 0] = e.which;\n stringToUTF8(e.key || "", keyEventData + 32, 32);\n stringToUTF8(e.code || "", keyEventData + 64, 32);\n stringToUTF8(e.char || "", keyEventData + 96, 32);\n stringToUTF8(e.locale || "", keyEventData + 128, 32);\n if (getWasmTableEntry(callbackfunc)(eventTypeId, keyEventData, userData)) e.preventDefault();\n };\n var eventHandler = { target: findEventTarget(target), eventTypeString, eventTypeId, userData, callbackfunc, handlerFunc: keyEventHandlerFunc, useCapture };\n return JSEvents.registerOrRemoveHandler(eventHandler);\n };\n var findCanvasEventTarget = findEventTarget;\n function _emscripten_html5_remove_event_listener(target, userData, eventTypeId, callback) {\n target >>>= 0;\n userData >>>= 0;\n callback >>>= 0;\n var eventHandler = { target: findEventTarget(target), userData, eventTypeId, callbackfunc: callback };\n return JSEvents.removeSingleHandler(eventHandler);\n }\n _emscripten_html5_remove_event_listener.sig = "ippip";\n function _emscripten_set_keypress_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n target >>>= 0;\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n return registerKeyEventCallback(target, userData, useCapture, callbackfunc, 1, "keypress", targetThread);\n }\n _emscripten_set_keypress_callback_on_thread.sig = "ippipp";\n function _emscripten_set_keydown_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n target >>>= 0;\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n return registerKeyEventCallback(target, userData, useCapture, callbackfunc, 2, "keydown", targetThread);\n }\n _emscripten_set_keydown_callback_on_thread.sig = "ippipp";\n function _emscripten_set_keyup_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n target >>>= 0;\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n return registerKeyEventCallback(target, userData, useCapture, callbackfunc, 3, "keyup", targetThread);\n }\n _emscripten_set_keyup_callback_on_thread.sig = "ippipp";\n var getBoundingClientRect = (e) => specialHTMLTargets.indexOf(e) < 0 ? e.getBoundingClientRect() : { left: 0, top: 0 };\n var fillMouseEventData = (eventStruct, e, target) => {\n HEAPF64[eventStruct >>> 3 >>> 0] = e.timeStamp;\n var idx = eventStruct >>> 2;\n HEAP32[idx + 2 >>> 0] = e.screenX;\n HEAP32[idx + 3 >>> 0] = e.screenY;\n HEAP32[idx + 4 >>> 0] = e.clientX;\n HEAP32[idx + 5 >>> 0] = e.clientY;\n HEAP8[eventStruct + 24 >>> 0] = e.ctrlKey;\n HEAP8[eventStruct + 25 >>> 0] = e.shiftKey;\n HEAP8[eventStruct + 26 >>> 0] = e.altKey;\n HEAP8[eventStruct + 27 >>> 0] = e.metaKey;\n HEAP16[idx * 2 + 14 >>> 0] = e.button;\n HEAP16[idx * 2 + 15 >>> 0] = e.buttons;\n HEAP32[idx + 8 >>> 0] = e["movementX"];\n HEAP32[idx + 9 >>> 0] = e["movementY"];\n var rect = getBoundingClientRect(target);\n HEAP32[idx + 10 >>> 0] = e.clientX - (rect.left | 0);\n HEAP32[idx + 11 >>> 0] = e.clientY - (rect.top | 0);\n };\n var registerMouseEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n var eventSize = 64;\n JSEvents.mouseEvent ||= _malloc(eventSize);\n target = findEventTarget(target);\n var mouseEventHandlerFunc = (e) => {\n fillMouseEventData(JSEvents.mouseEvent, e, target);\n if (getWasmTableEntry(callbackfunc)(eventTypeId, JSEvents.mouseEvent, userData)) e.preventDefault();\n };\n var eventHandler = { target, allowsDeferredCalls: eventTypeString != "mousemove" && eventTypeString != "mouseenter" && eventTypeString != "mouseleave", eventTypeString, eventTypeId, userData, callbackfunc, handlerFunc: mouseEventHandlerFunc, useCapture };\n return JSEvents.registerOrRemoveHandler(eventHandler);\n };\n function _emscripten_set_click_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n target >>>= 0;\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 4, "click", targetThread);\n }\n _emscripten_set_click_callback_on_thread.sig = "ippipp";\n function _emscripten_set_mousedown_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n target >>>= 0;\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 5, "mousedown", targetThread);\n }\n _emscripten_set_mousedown_callback_on_thread.sig = "ippipp";\n function _emscripten_set_mouseup_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n target >>>= 0;\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 6, "mouseup", targetThread);\n }\n _emscripten_set_mouseup_callback_on_thread.sig = "ippipp";\n function _emscripten_set_dblclick_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n target >>>= 0;\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 7, "dblclick", targetThread);\n }\n _emscripten_set_dblclick_callback_on_thread.sig = "ippipp";\n function _emscripten_set_mousemove_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n target >>>= 0;\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 8, "mousemove", targetThread);\n }\n _emscripten_set_mousemove_callback_on_thread.sig = "ippipp";\n function _emscripten_set_mouseenter_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n target >>>= 0;\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 33, "mouseenter", targetThread);\n }\n _emscripten_set_mouseenter_callback_on_thread.sig = "ippipp";\n function _emscripten_set_mouseleave_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n target >>>= 0;\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 34, "mouseleave", targetThread);\n }\n _emscripten_set_mouseleave_callback_on_thread.sig = "ippipp";\n function _emscripten_set_mouseover_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n target >>>= 0;\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 35, "mouseover", targetThread);\n }\n _emscripten_set_mouseover_callback_on_thread.sig = "ippipp";\n function _emscripten_set_mouseout_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n target >>>= 0;\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 36, "mouseout", targetThread);\n }\n _emscripten_set_mouseout_callback_on_thread.sig = "ippipp";\n function __emscripten_get_last_mouse_event() {\n return JSEvents.mouseEvent;\n }\n __emscripten_get_last_mouse_event.sig = "p";\n var registerWheelEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n var eventSize = 96;\n JSEvents.wheelEvent ||= _malloc(eventSize);\n var wheelHandlerFunc = (e) => {\n var wheelEvent = JSEvents.wheelEvent;\n fillMouseEventData(wheelEvent, e, target);\n HEAPF64[wheelEvent + 64 >>> 3 >>> 0] = e["deltaX"];\n HEAPF64[wheelEvent + 72 >>> 3 >>> 0] = e["deltaY"];\n HEAPF64[wheelEvent + 80 >>> 3 >>> 0] = e["deltaZ"];\n HEAP32[wheelEvent + 88 >>> 2 >>> 0] = e["deltaMode"];\n if (getWasmTableEntry(callbackfunc)(eventTypeId, wheelEvent, userData)) e.preventDefault();\n };\n var eventHandler = { target, allowsDeferredCalls: true, eventTypeString, eventTypeId, userData, callbackfunc, handlerFunc: wheelHandlerFunc, useCapture };\n return JSEvents.registerOrRemoveHandler(eventHandler);\n };\n function _emscripten_set_wheel_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n target >>>= 0;\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n target = findEventTarget(target);\n if (!target) return -4;\n if (typeof target.onwheel != "undefined") {\n return registerWheelEventCallback(target, userData, useCapture, callbackfunc, 9, "wheel", targetThread);\n } else {\n return -1;\n }\n }\n _emscripten_set_wheel_callback_on_thread.sig = "ippipp";\n var registerUiEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n var eventSize = 36;\n JSEvents.uiEvent ||= _malloc(eventSize);\n target = findEventTarget(target);\n var uiEventHandlerFunc = (e) => {\n if (e.target != target) {\n return;\n }\n var b2 = document.body;\n if (!b2) {\n return;\n }\n var uiEvent = JSEvents.uiEvent;\n HEAP32[uiEvent >>> 2 >>> 0] = 0;\n HEAP32[uiEvent + 4 >>> 2 >>> 0] = b2.clientWidth;\n HEAP32[uiEvent + 8 >>> 2 >>> 0] = b2.clientHeight;\n HEAP32[uiEvent + 12 >>> 2 >>> 0] = innerWidth;\n HEAP32[uiEvent + 16 >>> 2 >>> 0] = innerHeight;\n HEAP32[uiEvent + 20 >>> 2 >>> 0] = outerWidth;\n HEAP32[uiEvent + 24 >>> 2 >>> 0] = outerHeight;\n HEAP32[uiEvent + 28 >>> 2 >>> 0] = pageXOffset | 0;\n HEAP32[uiEvent + 32 >>> 2 >>> 0] = pageYOffset | 0;\n if (getWasmTableEntry(callbackfunc)(eventTypeId, uiEvent, userData)) e.preventDefault();\n };\n var eventHandler = { target, eventTypeString, eventTypeId, userData, callbackfunc, handlerFunc: uiEventHandlerFunc, useCapture };\n return JSEvents.registerOrRemoveHandler(eventHandler);\n };\n function _emscripten_set_resize_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n target >>>= 0;\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n return registerUiEventCallback(target, userData, useCapture, callbackfunc, 10, "resize", targetThread);\n }\n _emscripten_set_resize_callback_on_thread.sig = "ippipp";\n function _emscripten_set_scroll_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n target >>>= 0;\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n return registerUiEventCallback(target, userData, useCapture, callbackfunc, 11, "scroll", targetThread);\n }\n _emscripten_set_scroll_callback_on_thread.sig = "ippipp";\n var registerFocusEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n var eventSize = 256;\n JSEvents.focusEvent ||= _malloc(eventSize);\n var focusEventHandlerFunc = (e) => {\n var nodeName = JSEvents.getNodeNameForTarget(e.target);\n var id = e.target.id ? e.target.id : "";\n var focusEvent = JSEvents.focusEvent;\n stringToUTF8(nodeName, focusEvent + 0, 128);\n stringToUTF8(id, focusEvent + 128, 128);\n if (getWasmTableEntry(callbackfunc)(eventTypeId, focusEvent, userData)) e.preventDefault();\n };\n var eventHandler = { target: findEventTarget(target), eventTypeString, eventTypeId, userData, callbackfunc, handlerFunc: focusEventHandlerFunc, useCapture };\n return JSEvents.registerOrRemoveHandler(eventHandler);\n };\n function _emscripten_set_blur_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n target >>>= 0;\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n return registerFocusEventCallback(target, userData, useCapture, callbackfunc, 12, "blur", targetThread);\n }\n _emscripten_set_blur_callback_on_thread.sig = "ippipp";\n function _emscripten_set_focus_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n target >>>= 0;\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n return registerFocusEventCallback(target, userData, useCapture, callbackfunc, 13, "focus", targetThread);\n }\n _emscripten_set_focus_callback_on_thread.sig = "ippipp";\n function _emscripten_set_focusin_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n target >>>= 0;\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n return registerFocusEventCallback(target, userData, useCapture, callbackfunc, 14, "focusin", targetThread);\n }\n _emscripten_set_focusin_callback_on_thread.sig = "ippipp";\n function _emscripten_set_focusout_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n target >>>= 0;\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n return registerFocusEventCallback(target, userData, useCapture, callbackfunc, 15, "focusout", targetThread);\n }\n _emscripten_set_focusout_callback_on_thread.sig = "ippipp";\n var fillDeviceOrientationEventData = (eventStruct, e, target) => {\n HEAPF64[eventStruct >>> 3 >>> 0] = e.alpha;\n HEAPF64[eventStruct + 8 >>> 3 >>> 0] = e.beta;\n HEAPF64[eventStruct + 16 >>> 3 >>> 0] = e.gamma;\n HEAP8[eventStruct + 24 >>> 0] = e.absolute;\n };\n var registerDeviceOrientationEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n var eventSize = 32;\n JSEvents.deviceOrientationEvent ||= _malloc(eventSize);\n var deviceOrientationEventHandlerFunc = (e) => {\n fillDeviceOrientationEventData(JSEvents.deviceOrientationEvent, e, target);\n if (getWasmTableEntry(callbackfunc)(eventTypeId, JSEvents.deviceOrientationEvent, userData)) e.preventDefault();\n };\n var eventHandler = { target: findEventTarget(target), eventTypeString, eventTypeId, userData, callbackfunc, handlerFunc: deviceOrientationEventHandlerFunc, useCapture };\n return JSEvents.registerOrRemoveHandler(eventHandler);\n };\n function _emscripten_set_deviceorientation_callback_on_thread(userData, useCapture, callbackfunc, targetThread) {\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n return registerDeviceOrientationEventCallback(2, userData, useCapture, callbackfunc, 16, "deviceorientation", targetThread);\n }\n _emscripten_set_deviceorientation_callback_on_thread.sig = "ipipp";\n function __emscripten_get_last_deviceorientation_event() {\n return JSEvents.deviceOrientationEvent;\n }\n __emscripten_get_last_deviceorientation_event.sig = "p";\n var fillDeviceMotionEventData = (eventStruct, e, target) => {\n var supportedFields = 0;\n var a = e["acceleration"];\n supportedFields |= a && 1;\n var ag = e["accelerationIncludingGravity"];\n supportedFields |= ag && 2;\n var rr = e["rotationRate"];\n supportedFields |= rr && 4;\n a = a || {};\n ag = ag || {};\n rr = rr || {};\n HEAP32[eventStruct + 72 >>> 2 >>> 0] = supportedFields;\n HEAPF64[eventStruct >>> 3 >>> 0] = a["x"];\n HEAPF64[eventStruct + 8 >>> 3 >>> 0] = a["y"];\n HEAPF64[eventStruct + 16 >>> 3 >>> 0] = a["z"];\n HEAPF64[eventStruct + 24 >>> 3 >>> 0] = ag["x"];\n HEAPF64[eventStruct + 32 >>> 3 >>> 0] = ag["y"];\n HEAPF64[eventStruct + 40 >>> 3 >>> 0] = ag["z"];\n HEAPF64[eventStruct + 48 >>> 3 >>> 0] = rr["alpha"];\n HEAPF64[eventStruct + 56 >>> 3 >>> 0] = rr["beta"];\n HEAPF64[eventStruct + 64 >>> 3 >>> 0] = rr["gamma"];\n };\n var registerDeviceMotionEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n var eventSize = 80;\n JSEvents.deviceMotionEvent ||= _malloc(eventSize);\n var deviceMotionEventHandlerFunc = (e) => {\n fillDeviceMotionEventData(JSEvents.deviceMotionEvent, e, target);\n if (getWasmTableEntry(callbackfunc)(eventTypeId, JSEvents.deviceMotionEvent, userData)) e.preventDefault();\n };\n var eventHandler = { target: findEventTarget(target), eventTypeString, eventTypeId, userData, callbackfunc, handlerFunc: deviceMotionEventHandlerFunc, useCapture };\n return JSEvents.registerOrRemoveHandler(eventHandler);\n };\n function _emscripten_set_devicemotion_callback_on_thread(userData, useCapture, callbackfunc, targetThread) {\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n return registerDeviceMotionEventCallback(2, userData, useCapture, callbackfunc, 17, "devicemotion", targetThread);\n }\n _emscripten_set_devicemotion_callback_on_thread.sig = "ipipp";\n function __emscripten_get_last_devicemotion_event() {\n return JSEvents.deviceMotionEvent;\n }\n __emscripten_get_last_devicemotion_event.sig = "p";\n var screenOrientation = () => {\n if (!window.screen) return void 0;\n return screen.orientation || screen["mozOrientation"] || screen["webkitOrientation"];\n };\n var fillOrientationChangeEventData = (eventStruct) => {\n var orientationsType1 = ["portrait-primary", "portrait-secondary", "landscape-primary", "landscape-secondary"];\n var orientationsType2 = ["portrait", "portrait", "landscape", "landscape"];\n var orientationIndex = 0;\n var orientationAngle = 0;\n var screenOrientObj = screenOrientation();\n if (typeof screenOrientObj === "object") {\n orientationIndex = orientationsType1.indexOf(screenOrientObj.type);\n if (orientationIndex < 0) {\n orientationIndex = orientationsType2.indexOf(screenOrientObj.type);\n }\n if (orientationIndex >= 0) {\n orientationIndex = 1 << orientationIndex;\n }\n orientationAngle = screenOrientObj.angle;\n } else {\n orientationAngle = window.orientation;\n }\n HEAP32[eventStruct >>> 2 >>> 0] = orientationIndex;\n HEAP32[eventStruct + 4 >>> 2 >>> 0] = orientationAngle;\n };\n var registerOrientationChangeEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n var eventSize = 8;\n JSEvents.orientationChangeEvent ||= _malloc(eventSize);\n var orientationChangeEventHandlerFunc = (e) => {\n var orientationChangeEvent = JSEvents.orientationChangeEvent;\n fillOrientationChangeEventData(orientationChangeEvent);\n if (getWasmTableEntry(callbackfunc)(eventTypeId, orientationChangeEvent, userData)) e.preventDefault();\n };\n var eventHandler = { target, eventTypeString, eventTypeId, userData, callbackfunc, handlerFunc: orientationChangeEventHandlerFunc, useCapture };\n return JSEvents.registerOrRemoveHandler(eventHandler);\n };\n function _emscripten_set_orientationchange_callback_on_thread(userData, useCapture, callbackfunc, targetThread) {\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n if (!window.screen || !screen.orientation) return -1;\n return registerOrientationChangeEventCallback(screen.orientation, userData, useCapture, callbackfunc, 18, "change", targetThread);\n }\n _emscripten_set_orientationchange_callback_on_thread.sig = "ipipp";\n function _emscripten_get_orientation_status(orientationChangeEvent) {\n orientationChangeEvent >>>= 0;\n if (!screenOrientation() && typeof orientation == "undefined") return -1;\n fillOrientationChangeEventData(orientationChangeEvent);\n return 0;\n }\n _emscripten_get_orientation_status.sig = "ip";\n var _emscripten_lock_orientation = (allowedOrientations) => {\n var orientations = [];\n if (allowedOrientations & 1) orientations.push("portrait-primary");\n if (allowedOrientations & 2) orientations.push("portrait-secondary");\n if (allowedOrientations & 4) orientations.push("landscape-primary");\n if (allowedOrientations & 8) orientations.push("landscape-secondary");\n var succeeded;\n if (screen.lockOrientation) {\n succeeded = screen.lockOrientation(orientations);\n } else if (screen.mozLockOrientation) {\n succeeded = screen.mozLockOrientation(orientations);\n } else if (screen.webkitLockOrientation) {\n succeeded = screen.webkitLockOrientation(orientations);\n } else {\n return -1;\n }\n if (succeeded) {\n return 0;\n }\n return -6;\n };\n _emscripten_lock_orientation.sig = "ii";\n var _emscripten_unlock_orientation = () => {\n if (screen.unlockOrientation) {\n screen.unlockOrientation();\n } else if (screen.mozUnlockOrientation) {\n screen.mozUnlockOrientation();\n } else if (screen.webkitUnlockOrientation) {\n screen.webkitUnlockOrientation();\n } else {\n return -1;\n }\n return 0;\n };\n _emscripten_unlock_orientation.sig = "i";\n var fillFullscreenChangeEventData = (eventStruct) => {\n var fullscreenElement = getFullscreenElement();\n var isFullscreen = !!fullscreenElement;\n HEAP8[eventStruct >>> 0] = isFullscreen;\n HEAP8[eventStruct + 1 >>> 0] = JSEvents.fullscreenEnabled();\n var reportedElement = isFullscreen ? fullscreenElement : JSEvents.previousFullscreenElement;\n var nodeName = JSEvents.getNodeNameForTarget(reportedElement);\n var id = reportedElement?.id || "";\n stringToUTF8(nodeName, eventStruct + 2, 128);\n stringToUTF8(id, eventStruct + 130, 128);\n HEAP32[eventStruct + 260 >>> 2 >>> 0] = reportedElement ? reportedElement.clientWidth : 0;\n HEAP32[eventStruct + 264 >>> 2 >>> 0] = reportedElement ? reportedElement.clientHeight : 0;\n HEAP32[eventStruct + 268 >>> 2 >>> 0] = screen.width;\n HEAP32[eventStruct + 272 >>> 2 >>> 0] = screen.height;\n if (isFullscreen) {\n JSEvents.previousFullscreenElement = fullscreenElement;\n }\n };\n var registerFullscreenChangeEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n var eventSize = 276;\n JSEvents.fullscreenChangeEvent ||= _malloc(eventSize);\n var fullscreenChangeEventHandlerFunc = (e) => {\n var fullscreenChangeEvent = JSEvents.fullscreenChangeEvent;\n fillFullscreenChangeEventData(fullscreenChangeEvent);\n if (getWasmTableEntry(callbackfunc)(eventTypeId, fullscreenChangeEvent, userData)) e.preventDefault();\n };\n var eventHandler = { target, eventTypeString, eventTypeId, userData, callbackfunc, handlerFunc: fullscreenChangeEventHandlerFunc, useCapture };\n return JSEvents.registerOrRemoveHandler(eventHandler);\n };\n function _emscripten_set_fullscreenchange_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n target >>>= 0;\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n if (!JSEvents.fullscreenEnabled()) return -1;\n target = findEventTarget(target);\n if (!target) return -4;\n registerFullscreenChangeEventCallback(target, userData, useCapture, callbackfunc, 19, "webkitfullscreenchange", targetThread);\n return registerFullscreenChangeEventCallback(target, userData, useCapture, callbackfunc, 19, "fullscreenchange", targetThread);\n }\n _emscripten_set_fullscreenchange_callback_on_thread.sig = "ippipp";\n function _emscripten_get_fullscreen_status(fullscreenStatus) {\n fullscreenStatus >>>= 0;\n if (!JSEvents.fullscreenEnabled()) return -1;\n fillFullscreenChangeEventData(fullscreenStatus);\n return 0;\n }\n _emscripten_get_fullscreen_status.sig = "ip";\n function _emscripten_get_canvas_element_size(target, width, height) {\n target >>>= 0;\n width >>>= 0;\n height >>>= 0;\n var canvas = findCanvasEventTarget(target);\n if (!canvas) return -4;\n HEAP32[width >>> 2 >>> 0] = canvas.width;\n HEAP32[height >>> 2 >>> 0] = canvas.height;\n }\n _emscripten_get_canvas_element_size.sig = "ippp";\n var getCanvasElementSize = (target) => {\n var sp = stackSave();\n var w2 = stackAlloc(8);\n var h = w2 + 4;\n var targetInt = stringToUTF8OnStack(target.id);\n var ret = _emscripten_get_canvas_element_size(targetInt, w2, h);\n var size = [HEAP32[w2 >>> 2 >>> 0], HEAP32[h >>> 2 >>> 0]];\n stackRestore(sp);\n return size;\n };\n function _emscripten_set_canvas_element_size(target, width, height) {\n target >>>= 0;\n var canvas = findCanvasEventTarget(target);\n if (!canvas) return -4;\n canvas.width = width;\n canvas.height = height;\n return 0;\n }\n _emscripten_set_canvas_element_size.sig = "ipii";\n var setCanvasElementSize = (target, width, height) => {\n if (!target.controlTransferredOffscreen) {\n target.width = width;\n target.height = height;\n } else {\n var sp = stackSave();\n var targetInt = stringToUTF8OnStack(target.id);\n _emscripten_set_canvas_element_size(targetInt, width, height);\n stackRestore(sp);\n }\n };\n var currentFullscreenStrategy = {};\n var registerRestoreOldStyle = (canvas) => {\n var canvasSize = getCanvasElementSize(canvas);\n var oldWidth = canvasSize[0];\n var oldHeight = canvasSize[1];\n var oldCssWidth = canvas.style.width;\n var oldCssHeight = canvas.style.height;\n var oldBackgroundColor = canvas.style.backgroundColor;\n var oldDocumentBackgroundColor = document.body.style.backgroundColor;\n var oldPaddingLeft = canvas.style.paddingLeft;\n var oldPaddingRight = canvas.style.paddingRight;\n var oldPaddingTop = canvas.style.paddingTop;\n var oldPaddingBottom = canvas.style.paddingBottom;\n var oldMarginLeft = canvas.style.marginLeft;\n var oldMarginRight = canvas.style.marginRight;\n var oldMarginTop = canvas.style.marginTop;\n var oldMarginBottom = canvas.style.marginBottom;\n var oldDocumentBodyMargin = document.body.style.margin;\n var oldDocumentOverflow = document.documentElement.style.overflow;\n var oldDocumentScroll = document.body.scroll;\n var oldImageRendering = canvas.style.imageRendering;\n function restoreOldStyle() {\n if (!getFullscreenElement()) {\n document.removeEventListener("fullscreenchange", restoreOldStyle);\n document.removeEventListener("webkitfullscreenchange", restoreOldStyle);\n setCanvasElementSize(canvas, oldWidth, oldHeight);\n canvas.style.width = oldCssWidth;\n canvas.style.height = oldCssHeight;\n canvas.style.backgroundColor = oldBackgroundColor;\n if (!oldDocumentBackgroundColor) document.body.style.backgroundColor = "white";\n document.body.style.backgroundColor = oldDocumentBackgroundColor;\n canvas.style.paddingLeft = oldPaddingLeft;\n canvas.style.paddingRight = oldPaddingRight;\n canvas.style.paddingTop = oldPaddingTop;\n canvas.style.paddingBottom = oldPaddingBottom;\n canvas.style.marginLeft = oldMarginLeft;\n canvas.style.marginRight = oldMarginRight;\n canvas.style.marginTop = oldMarginTop;\n canvas.style.marginBottom = oldMarginBottom;\n document.body.style.margin = oldDocumentBodyMargin;\n document.documentElement.style.overflow = oldDocumentOverflow;\n document.body.scroll = oldDocumentScroll;\n canvas.style.imageRendering = oldImageRendering;\n if (canvas.GLctxObject) canvas.GLctxObject.GLctx.viewport(0, 0, oldWidth, oldHeight);\n if (currentFullscreenStrategy.canvasResizedCallback) {\n getWasmTableEntry(currentFullscreenStrategy.canvasResizedCallback)(37, 0, currentFullscreenStrategy.canvasResizedCallbackUserData);\n }\n }\n }\n document.addEventListener("fullscreenchange", restoreOldStyle);\n document.addEventListener("webkitfullscreenchange", restoreOldStyle);\n return restoreOldStyle;\n };\n var setLetterbox = (element, topBottom, leftRight) => {\n element.style.paddingLeft = element.style.paddingRight = leftRight + "px";\n element.style.paddingTop = element.style.paddingBottom = topBottom + "px";\n };\n var JSEvents_resizeCanvasForFullscreen = (target, strategy) => {\n var restoreOldStyle = registerRestoreOldStyle(target);\n var cssWidth = strategy.softFullscreen ? innerWidth : screen.width;\n var cssHeight = strategy.softFullscreen ? innerHeight : screen.height;\n var rect = getBoundingClientRect(target);\n var windowedCssWidth = rect.width;\n var windowedCssHeight = rect.height;\n var canvasSize = getCanvasElementSize(target);\n var windowedRttWidth = canvasSize[0];\n var windowedRttHeight = canvasSize[1];\n if (strategy.scaleMode == 3) {\n setLetterbox(target, (cssHeight - windowedCssHeight) / 2, (cssWidth - windowedCssWidth) / 2);\n cssWidth = windowedCssWidth;\n cssHeight = windowedCssHeight;\n } else if (strategy.scaleMode == 2) {\n if (cssWidth * windowedRttHeight < windowedRttWidth * cssHeight) {\n var desiredCssHeight = windowedRttHeight * cssWidth / windowedRttWidth;\n setLetterbox(target, (cssHeight - desiredCssHeight) / 2, 0);\n cssHeight = desiredCssHeight;\n } else {\n var desiredCssWidth = windowedRttWidth * cssHeight / windowedRttHeight;\n setLetterbox(target, 0, (cssWidth - desiredCssWidth) / 2);\n cssWidth = desiredCssWidth;\n }\n }\n target.style.backgroundColor ||= "black";\n document.body.style.backgroundColor ||= "black";\n target.style.width = cssWidth + "px";\n target.style.height = cssHeight + "px";\n if (strategy.filteringMode == 1) {\n target.style.imageRendering = "optimizeSpeed";\n target.style.imageRendering = "-moz-crisp-edges";\n target.style.imageRendering = "-o-crisp-edges";\n target.style.imageRendering = "-webkit-optimize-contrast";\n target.style.imageRendering = "optimize-contrast";\n target.style.imageRendering = "crisp-edges";\n target.style.imageRendering = "pixelated";\n }\n var dpiScale = strategy.canvasResolutionScaleMode == 2 ? devicePixelRatio : 1;\n if (strategy.canvasResolutionScaleMode != 0) {\n var newWidth = cssWidth * dpiScale | 0;\n var newHeight = cssHeight * dpiScale | 0;\n setCanvasElementSize(target, newWidth, newHeight);\n if (target.GLctxObject) target.GLctxObject.GLctx.viewport(0, 0, newWidth, newHeight);\n }\n return restoreOldStyle;\n };\n var JSEvents_requestFullscreen = (target, strategy) => {\n if (strategy.scaleMode != 0 || strategy.canvasResolutionScaleMode != 0) {\n JSEvents_resizeCanvasForFullscreen(target, strategy);\n }\n if (target.requestFullscreen) {\n target.requestFullscreen();\n } else if (target.webkitRequestFullscreen) {\n target.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);\n } else {\n return JSEvents.fullscreenEnabled() ? -3 : -1;\n }\n currentFullscreenStrategy = strategy;\n if (strategy.canvasResizedCallback) {\n getWasmTableEntry(strategy.canvasResizedCallback)(37, 0, strategy.canvasResizedCallbackUserData);\n }\n return 0;\n };\n var hideEverythingExceptGivenElement = (onlyVisibleElement) => {\n var child = onlyVisibleElement;\n var parent = child.parentNode;\n var hiddenElements = [];\n while (child != document.body) {\n var children = parent.children;\n for (var currChild of children) {\n if (currChild != child) {\n hiddenElements.push({ node: currChild, displayState: currChild.style.display });\n currChild.style.display = "none";\n }\n }\n child = parent;\n parent = parent.parentNode;\n }\n return hiddenElements;\n };\n var restoreHiddenElements = (hiddenElements) => {\n for (var elem of hiddenElements) {\n elem.node.style.display = elem.displayState;\n }\n };\n var restoreOldWindowedStyle = null;\n var softFullscreenResizeWebGLRenderTarget = () => {\n var dpr = devicePixelRatio;\n var inHiDPIFullscreenMode = currentFullscreenStrategy.canvasResolutionScaleMode == 2;\n var inAspectRatioFixedFullscreenMode = currentFullscreenStrategy.scaleMode == 2;\n var inPixelPerfectFullscreenMode = currentFullscreenStrategy.canvasResolutionScaleMode != 0;\n var inCenteredWithoutScalingFullscreenMode = currentFullscreenStrategy.scaleMode == 3;\n var screenWidth = inHiDPIFullscreenMode ? Math.round(innerWidth * dpr) : innerWidth;\n var screenHeight = inHiDPIFullscreenMode ? Math.round(innerHeight * dpr) : innerHeight;\n var w2 = screenWidth;\n var h = screenHeight;\n var canvas = currentFullscreenStrategy.target;\n var canvasSize = getCanvasElementSize(canvas);\n var x2 = canvasSize[0];\n var y = canvasSize[1];\n var topMargin;\n if (inAspectRatioFixedFullscreenMode) {\n if (w2 * y < x2 * h) h = w2 * y / x2 | 0;\n else if (w2 * y > x2 * h) w2 = h * x2 / y | 0;\n topMargin = (screenHeight - h) / 2 | 0;\n }\n if (inPixelPerfectFullscreenMode) {\n setCanvasElementSize(canvas, w2, h);\n if (canvas.GLctxObject) canvas.GLctxObject.GLctx.viewport(0, 0, w2, h);\n }\n if (inHiDPIFullscreenMode) {\n topMargin /= dpr;\n w2 /= dpr;\n h /= dpr;\n w2 = Math.round(w2 * 1e4) / 1e4;\n h = Math.round(h * 1e4) / 1e4;\n topMargin = Math.round(topMargin * 1e4) / 1e4;\n }\n if (inCenteredWithoutScalingFullscreenMode) {\n var t = (innerHeight - jstoi_q(canvas.style.height)) / 2;\n var b2 = (innerWidth - jstoi_q(canvas.style.width)) / 2;\n setLetterbox(canvas, t, b2);\n } else {\n canvas.style.width = w2 + "px";\n canvas.style.height = h + "px";\n var b2 = (innerWidth - w2) / 2;\n setLetterbox(canvas, topMargin, b2);\n }\n if (!inCenteredWithoutScalingFullscreenMode && currentFullscreenStrategy.canvasResizedCallback) {\n getWasmTableEntry(currentFullscreenStrategy.canvasResizedCallback)(37, 0, currentFullscreenStrategy.canvasResizedCallbackUserData);\n }\n };\n var doRequestFullscreen = (target, strategy) => {\n if (!JSEvents.fullscreenEnabled()) return -1;\n target = findEventTarget(target);\n if (!target) return -4;\n if (!target.requestFullscreen && !target.webkitRequestFullscreen) {\n return -3;\n }\n if (!JSEvents.canPerformEventHandlerRequests()) {\n if (strategy.deferUntilInEventHandler) {\n JSEvents.deferCall(JSEvents_requestFullscreen, 1, [target, strategy]);\n return 1;\n }\n return -2;\n }\n return JSEvents_requestFullscreen(target, strategy);\n };\n function _emscripten_request_fullscreen(target, deferUntilInEventHandler) {\n target >>>= 0;\n var strategy = { scaleMode: 0, canvasResolutionScaleMode: 0, filteringMode: 0, deferUntilInEventHandler, canvasResizedCallbackTargetThread: 2 };\n return doRequestFullscreen(target, strategy);\n }\n _emscripten_request_fullscreen.sig = "ipi";\n function _emscripten_request_fullscreen_strategy(target, deferUntilInEventHandler, fullscreenStrategy) {\n target >>>= 0;\n fullscreenStrategy >>>= 0;\n var strategy = { scaleMode: HEAP32[fullscreenStrategy >>> 2 >>> 0], canvasResolutionScaleMode: HEAP32[fullscreenStrategy + 4 >>> 2 >>> 0], filteringMode: HEAP32[fullscreenStrategy + 8 >>> 2 >>> 0], deferUntilInEventHandler, canvasResizedCallback: HEAP32[fullscreenStrategy + 12 >>> 2 >>> 0], canvasResizedCallbackUserData: HEAP32[fullscreenStrategy + 16 >>> 2 >>> 0] };\n return doRequestFullscreen(target, strategy);\n }\n _emscripten_request_fullscreen_strategy.sig = "ipip";\n function _emscripten_enter_soft_fullscreen(target, fullscreenStrategy) {\n target >>>= 0;\n fullscreenStrategy >>>= 0;\n target = findEventTarget(target);\n if (!target) return -4;\n var strategy = { scaleMode: HEAP32[fullscreenStrategy >>> 2 >>> 0], canvasResolutionScaleMode: HEAP32[fullscreenStrategy + 4 >>> 2 >>> 0], filteringMode: HEAP32[fullscreenStrategy + 8 >>> 2 >>> 0], canvasResizedCallback: HEAP32[fullscreenStrategy + 12 >>> 2 >>> 0], canvasResizedCallbackUserData: HEAP32[fullscreenStrategy + 16 >>> 2 >>> 0], target, softFullscreen: true };\n var restoreOldStyle = JSEvents_resizeCanvasForFullscreen(target, strategy);\n document.documentElement.style.overflow = "hidden";\n document.body.scroll = "no";\n document.body.style.margin = "0px";\n var hiddenElements = hideEverythingExceptGivenElement(target);\n function restoreWindowedState() {\n restoreOldStyle();\n restoreHiddenElements(hiddenElements);\n removeEventListener("resize", softFullscreenResizeWebGLRenderTarget);\n if (strategy.canvasResizedCallback) {\n getWasmTableEntry(strategy.canvasResizedCallback)(37, 0, strategy.canvasResizedCallbackUserData);\n }\n currentFullscreenStrategy = 0;\n }\n restoreOldWindowedStyle = restoreWindowedState;\n currentFullscreenStrategy = strategy;\n addEventListener("resize", softFullscreenResizeWebGLRenderTarget);\n if (strategy.canvasResizedCallback) {\n getWasmTableEntry(strategy.canvasResizedCallback)(37, 0, strategy.canvasResizedCallbackUserData);\n }\n return 0;\n }\n _emscripten_enter_soft_fullscreen.sig = "ipp";\n var _emscripten_exit_soft_fullscreen = () => {\n restoreOldWindowedStyle?.();\n restoreOldWindowedStyle = null;\n return 0;\n };\n _emscripten_exit_soft_fullscreen.sig = "i";\n var _emscripten_exit_fullscreen = () => {\n if (!JSEvents.fullscreenEnabled()) return -1;\n JSEvents.removeDeferredCalls(JSEvents_requestFullscreen);\n var d = specialHTMLTargets[1];\n if (d.exitFullscreen) {\n d.fullscreenElement && d.exitFullscreen();\n } else if (d.webkitExitFullscreen) {\n d.webkitFullscreenElement && d.webkitExitFullscreen();\n } else {\n return -1;\n }\n return 0;\n };\n _emscripten_exit_fullscreen.sig = "i";\n var fillPointerlockChangeEventData = (eventStruct) => {\n var pointerLockElement = document.pointerLockElement;\n var isPointerlocked = !!pointerLockElement;\n HEAP8[eventStruct >>> 0] = isPointerlocked;\n var nodeName = JSEvents.getNodeNameForTarget(pointerLockElement);\n var id = pointerLockElement?.id || "";\n stringToUTF8(nodeName, eventStruct + 1, 128);\n stringToUTF8(id, eventStruct + 129, 128);\n };\n var registerPointerlockChangeEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n var eventSize = 257;\n JSEvents.pointerlockChangeEvent ||= _malloc(eventSize);\n var pointerlockChangeEventHandlerFunc = (e) => {\n var pointerlockChangeEvent = JSEvents.pointerlockChangeEvent;\n fillPointerlockChangeEventData(pointerlockChangeEvent);\n if (getWasmTableEntry(callbackfunc)(eventTypeId, pointerlockChangeEvent, userData)) e.preventDefault();\n };\n var eventHandler = { target, eventTypeString, eventTypeId, userData, callbackfunc, handlerFunc: pointerlockChangeEventHandlerFunc, useCapture };\n return JSEvents.registerOrRemoveHandler(eventHandler);\n };\n function _emscripten_set_pointerlockchange_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n target >>>= 0;\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n if (!document.body?.requestPointerLock) {\n return -1;\n }\n target = findEventTarget(target);\n if (!target) return -4;\n return registerPointerlockChangeEventCallback(target, userData, useCapture, callbackfunc, 20, "pointerlockchange", targetThread);\n }\n _emscripten_set_pointerlockchange_callback_on_thread.sig = "ippipp";\n var registerPointerlockErrorEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n var pointerlockErrorEventHandlerFunc = (e) => {\n if (getWasmTableEntry(callbackfunc)(eventTypeId, 0, userData)) e.preventDefault();\n };\n var eventHandler = { target, eventTypeString, eventTypeId, userData, callbackfunc, handlerFunc: pointerlockErrorEventHandlerFunc, useCapture };\n return JSEvents.registerOrRemoveHandler(eventHandler);\n };\n function _emscripten_set_pointerlockerror_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n target >>>= 0;\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n if (!document.body?.requestPointerLock) {\n return -1;\n }\n target = findEventTarget(target);\n if (!target) return -4;\n return registerPointerlockErrorEventCallback(target, userData, useCapture, callbackfunc, 38, "pointerlockerror", targetThread);\n }\n _emscripten_set_pointerlockerror_callback_on_thread.sig = "ippipp";\n function _emscripten_get_pointerlock_status(pointerlockStatus) {\n pointerlockStatus >>>= 0;\n if (pointerlockStatus) fillPointerlockChangeEventData(pointerlockStatus);\n if (!document.body?.requestPointerLock) {\n return -1;\n }\n return 0;\n }\n _emscripten_get_pointerlock_status.sig = "ip";\n var requestPointerLock = (target) => {\n if (target.requestPointerLock) {\n target.requestPointerLock();\n } else {\n if (document.body.requestPointerLock) {\n return -3;\n }\n return -1;\n }\n return 0;\n };\n function _emscripten_request_pointerlock(target, deferUntilInEventHandler) {\n target >>>= 0;\n target = findEventTarget(target);\n if (!target) return -4;\n if (!target.requestPointerLock) {\n return -1;\n }\n if (!JSEvents.canPerformEventHandlerRequests()) {\n if (deferUntilInEventHandler) {\n JSEvents.deferCall(requestPointerLock, 2, [target]);\n return 1;\n }\n return -2;\n }\n return requestPointerLock(target);\n }\n _emscripten_request_pointerlock.sig = "ipi";\n var _emscripten_exit_pointerlock = () => {\n JSEvents.removeDeferredCalls(requestPointerLock);\n if (!document.exitPointerLock) return -1;\n document.exitPointerLock();\n return 0;\n };\n _emscripten_exit_pointerlock.sig = "i";\n var _emscripten_vibrate = (msecs) => {\n if (!navigator.vibrate) return -1;\n navigator.vibrate(msecs);\n return 0;\n };\n _emscripten_vibrate.sig = "ii";\n function _emscripten_vibrate_pattern(msecsArray, numEntries) {\n msecsArray >>>= 0;\n if (!navigator.vibrate) return -1;\n var vibrateList = [];\n for (var i2 = 0; i2 < numEntries; ++i2) {\n var msecs = HEAP32[msecsArray + i2 * 4 >>> 2 >>> 0];\n vibrateList.push(msecs);\n }\n navigator.vibrate(vibrateList);\n return 0;\n }\n _emscripten_vibrate_pattern.sig = "ipi";\n var fillVisibilityChangeEventData = (eventStruct) => {\n var visibilityStates = ["hidden", "visible", "prerender", "unloaded"];\n var visibilityState = visibilityStates.indexOf(document.visibilityState);\n HEAP8[eventStruct >>> 0] = document.hidden;\n HEAP32[eventStruct + 4 >>> 2 >>> 0] = visibilityState;\n };\n var registerVisibilityChangeEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n var eventSize = 8;\n JSEvents.visibilityChangeEvent ||= _malloc(eventSize);\n var visibilityChangeEventHandlerFunc = (e) => {\n var visibilityChangeEvent = JSEvents.visibilityChangeEvent;\n fillVisibilityChangeEventData(visibilityChangeEvent);\n if (getWasmTableEntry(callbackfunc)(eventTypeId, visibilityChangeEvent, userData)) e.preventDefault();\n };\n var eventHandler = { target, eventTypeString, eventTypeId, userData, callbackfunc, handlerFunc: visibilityChangeEventHandlerFunc, useCapture };\n return JSEvents.registerOrRemoveHandler(eventHandler);\n };\n function _emscripten_set_visibilitychange_callback_on_thread(userData, useCapture, callbackfunc, targetThread) {\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n if (!specialHTMLTargets[1]) {\n return -4;\n }\n return registerVisibilityChangeEventCallback(specialHTMLTargets[1], userData, useCapture, callbackfunc, 21, "visibilitychange", targetThread);\n }\n _emscripten_set_visibilitychange_callback_on_thread.sig = "ipipp";\n function _emscripten_get_visibility_status(visibilityStatus) {\n visibilityStatus >>>= 0;\n if (typeof document.visibilityState == "undefined" && typeof document.hidden == "undefined") {\n return -1;\n }\n fillVisibilityChangeEventData(visibilityStatus);\n return 0;\n }\n _emscripten_get_visibility_status.sig = "ip";\n var registerTouchEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n var eventSize = 1552;\n JSEvents.touchEvent ||= _malloc(eventSize);\n target = findEventTarget(target);\n var touchEventHandlerFunc = (e) => {\n var t, touches = {}, et = e.touches;\n for (let t2 of et) {\n t2.isChanged = t2.onTarget = 0;\n touches[t2.identifier] = t2;\n }\n for (let t2 of e.changedTouches) {\n t2.isChanged = 1;\n touches[t2.identifier] = t2;\n }\n for (let t2 of e.targetTouches) {\n touches[t2.identifier].onTarget = 1;\n }\n var touchEvent = JSEvents.touchEvent;\n HEAPF64[touchEvent >>> 3 >>> 0] = e.timeStamp;\n HEAP8[touchEvent + 12 >>> 0] = e.ctrlKey;\n HEAP8[touchEvent + 13 >>> 0] = e.shiftKey;\n HEAP8[touchEvent + 14 >>> 0] = e.altKey;\n HEAP8[touchEvent + 15 >>> 0] = e.metaKey;\n var idx = touchEvent + 16;\n var targetRect = getBoundingClientRect(target);\n var numTouches = 0;\n for (let t2 of Object.values(touches)) {\n var idx32 = idx >>> 2;\n HEAP32[idx32 + 0 >>> 0] = t2.identifier;\n HEAP32[idx32 + 1 >>> 0] = t2.screenX;\n HEAP32[idx32 + 2 >>> 0] = t2.screenY;\n HEAP32[idx32 + 3 >>> 0] = t2.clientX;\n HEAP32[idx32 + 4 >>> 0] = t2.clientY;\n HEAP32[idx32 + 5 >>> 0] = t2.pageX;\n HEAP32[idx32 + 6 >>> 0] = t2.pageY;\n HEAP8[idx + 28 >>> 0] = t2.isChanged;\n HEAP8[idx + 29 >>> 0] = t2.onTarget;\n HEAP32[idx32 + 8 >>> 0] = t2.clientX - (targetRect.left | 0);\n HEAP32[idx32 + 9 >>> 0] = t2.clientY - (targetRect.top | 0);\n idx += 48;\n if (++numTouches > 31) {\n break;\n }\n }\n HEAP32[touchEvent + 8 >>> 2 >>> 0] = numTouches;\n if (getWasmTableEntry(callbackfunc)(eventTypeId, touchEvent, userData)) e.preventDefault();\n };\n var eventHandler = { target, allowsDeferredCalls: eventTypeString == "touchstart" || eventTypeString == "touchend", eventTypeString, eventTypeId, userData, callbackfunc, handlerFunc: touchEventHandlerFunc, useCapture };\n return JSEvents.registerOrRemoveHandler(eventHandler);\n };\n function _emscripten_set_touchstart_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n target >>>= 0;\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n return registerTouchEventCallback(target, userData, useCapture, callbackfunc, 22, "touchstart", targetThread);\n }\n _emscripten_set_touchstart_callback_on_thread.sig = "ippipp";\n function _emscripten_set_touchend_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n target >>>= 0;\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n return registerTouchEventCallback(target, userData, useCapture, callbackfunc, 23, "touchend", targetThread);\n }\n _emscripten_set_touchend_callback_on_thread.sig = "ippipp";\n function _emscripten_set_touchmove_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n target >>>= 0;\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n return registerTouchEventCallback(target, userData, useCapture, callbackfunc, 24, "touchmove", targetThread);\n }\n _emscripten_set_touchmove_callback_on_thread.sig = "ippipp";\n function _emscripten_set_touchcancel_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n target >>>= 0;\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n return registerTouchEventCallback(target, userData, useCapture, callbackfunc, 25, "touchcancel", targetThread);\n }\n _emscripten_set_touchcancel_callback_on_thread.sig = "ippipp";\n var fillGamepadEventData = (eventStruct, e) => {\n HEAPF64[eventStruct >>> 3 >>> 0] = e.timestamp;\n for (var i2 = 0; i2 < e.axes.length; ++i2) {\n HEAPF64[eventStruct + i2 * 8 + 16 >>> 3 >>> 0] = e.axes[i2];\n }\n for (var i2 = 0; i2 < e.buttons.length; ++i2) {\n if (typeof e.buttons[i2] == "object") {\n HEAPF64[eventStruct + i2 * 8 + 528 >>> 3 >>> 0] = e.buttons[i2].value;\n } else {\n HEAPF64[eventStruct + i2 * 8 + 528 >>> 3 >>> 0] = e.buttons[i2];\n }\n }\n for (var i2 = 0; i2 < e.buttons.length; ++i2) {\n if (typeof e.buttons[i2] == "object") {\n HEAP8[eventStruct + i2 + 1040 >>> 0] = e.buttons[i2].pressed;\n } else {\n HEAP8[eventStruct + i2 + 1040 >>> 0] = e.buttons[i2] == 1;\n }\n }\n HEAP8[eventStruct + 1104 >>> 0] = e.connected;\n HEAP32[eventStruct + 1108 >>> 2 >>> 0] = e.index;\n HEAP32[eventStruct + 8 >>> 2 >>> 0] = e.axes.length;\n HEAP32[eventStruct + 12 >>> 2 >>> 0] = e.buttons.length;\n stringToUTF8(e.id, eventStruct + 1112, 64);\n stringToUTF8(e.mapping, eventStruct + 1176, 64);\n };\n var registerGamepadEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n var eventSize = 1240;\n JSEvents.gamepadEvent ||= _malloc(eventSize);\n var gamepadEventHandlerFunc = (e) => {\n var gamepadEvent = JSEvents.gamepadEvent;\n fillGamepadEventData(gamepadEvent, e["gamepad"]);\n if (getWasmTableEntry(callbackfunc)(eventTypeId, gamepadEvent, userData)) e.preventDefault();\n };\n var eventHandler = { target: findEventTarget(target), allowsDeferredCalls: true, eventTypeString, eventTypeId, userData, callbackfunc, handlerFunc: gamepadEventHandlerFunc, useCapture };\n return JSEvents.registerOrRemoveHandler(eventHandler);\n };\n var _emscripten_sample_gamepad_data = () => {\n try {\n if (navigator.getGamepads) return (JSEvents.lastGamepadState = navigator.getGamepads()) ? 0 : -1;\n } catch (e) {\n navigator.getGamepads = null;\n }\n return -1;\n };\n _emscripten_sample_gamepad_data.sig = "i";\n function _emscripten_set_gamepadconnected_callback_on_thread(userData, useCapture, callbackfunc, targetThread) {\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n if (_emscripten_sample_gamepad_data()) return -1;\n return registerGamepadEventCallback(2, userData, useCapture, callbackfunc, 26, "gamepadconnected", targetThread);\n }\n _emscripten_set_gamepadconnected_callback_on_thread.sig = "ipipp";\n function _emscripten_set_gamepaddisconnected_callback_on_thread(userData, useCapture, callbackfunc, targetThread) {\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n if (_emscripten_sample_gamepad_data()) return -1;\n return registerGamepadEventCallback(2, userData, useCapture, callbackfunc, 27, "gamepaddisconnected", targetThread);\n }\n _emscripten_set_gamepaddisconnected_callback_on_thread.sig = "ipipp";\n var _emscripten_get_num_gamepads = () => JSEvents.lastGamepadState.length;\n _emscripten_get_num_gamepads.sig = "i";\n function _emscripten_get_gamepad_status(index, gamepadState) {\n gamepadState >>>= 0;\n if (index < 0 || index >= JSEvents.lastGamepadState.length) return -5;\n if (!JSEvents.lastGamepadState[index]) return -7;\n fillGamepadEventData(gamepadState, JSEvents.lastGamepadState[index]);\n return 0;\n }\n _emscripten_get_gamepad_status.sig = "iip";\n var registerBeforeUnloadEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString) => {\n var beforeUnloadEventHandlerFunc = (e) => {\n var confirmationMessage = getWasmTableEntry(callbackfunc)(eventTypeId, 0, userData);\n if (confirmationMessage) {\n confirmationMessage = UTF8ToString(confirmationMessage);\n }\n if (confirmationMessage) {\n e.preventDefault();\n e.returnValue = confirmationMessage;\n return confirmationMessage;\n }\n };\n var eventHandler = { target: findEventTarget(target), eventTypeString, eventTypeId, userData, callbackfunc, handlerFunc: beforeUnloadEventHandlerFunc, useCapture };\n return JSEvents.registerOrRemoveHandler(eventHandler);\n };\n function _emscripten_set_beforeunload_callback_on_thread(userData, callbackfunc, targetThread) {\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n if (typeof onbeforeunload == "undefined") return -1;\n if (targetThread !== 1) return -5;\n return registerBeforeUnloadEventCallback(2, userData, true, callbackfunc, 28, "beforeunload");\n }\n _emscripten_set_beforeunload_callback_on_thread.sig = "ippp";\n var fillBatteryEventData = (eventStruct, battery) => {\n HEAPF64[eventStruct >>> 3 >>> 0] = battery.chargingTime;\n HEAPF64[eventStruct + 8 >>> 3 >>> 0] = battery.dischargingTime;\n HEAPF64[eventStruct + 16 >>> 3 >>> 0] = battery.level;\n HEAP8[eventStruct + 24 >>> 0] = battery.charging;\n };\n var hasBatteryAPI = () => globalThis.navigator?.getBattery;\n var registerBatteryEventCallback = (battery, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n var eventSize = 32;\n JSEvents.batteryEvent ||= _malloc(eventSize);\n var batteryEventHandlerFunc = (e) => {\n var batteryEvent = JSEvents.batteryEvent;\n fillBatteryEventData(batteryEvent, battery);\n if (getWasmTableEntry(callbackfunc)(eventTypeId, batteryEvent, userData)) e.preventDefault();\n };\n var eventHandler = { target: battery, eventTypeString, eventTypeId, userData, callbackfunc, handlerFunc: batteryEventHandlerFunc, useCapture };\n return JSEvents.registerOrRemoveHandler(eventHandler);\n };\n var _emscripten_set_batterychargingchange_callback_on_thread = function(userData, callbackfunc, targetThread) {\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n if (!hasBatteryAPI()) return -1;\n navigator.getBattery().then((b2) => {\n registerBatteryEventCallback(b2, userData, true, callbackfunc, 29, "chargingchange", targetThread);\n });\n };\n _emscripten_set_batterychargingchange_callback_on_thread.sig = "ippp";\n var _emscripten_set_batterylevelchange_callback_on_thread = function(userData, callbackfunc, targetThread) {\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n if (!hasBatteryAPI()) return -1;\n navigator.getBattery().then((b2) => {\n registerBatteryEventCallback(b2, userData, true, callbackfunc, 30, "levelchange", targetThread);\n });\n };\n _emscripten_set_batterylevelchange_callback_on_thread.sig = "ippp";\n var batteryManager;\n var _emscripten_get_battery_status = function(batteryState) {\n batteryState >>>= 0;\n if (!hasBatteryAPI()) return -1;\n if (!batteryManager) {\n navigator.getBattery().then((b2) => {\n batteryManager = b2;\n });\n return -7;\n }\n fillBatteryEventData(batteryState, batteryManager);\n return 0;\n };\n _emscripten_get_battery_status.sig = "ip";\n function _emscripten_set_element_css_size(target, width, height) {\n target >>>= 0;\n target = findEventTarget(target);\n if (!target) return -4;\n target.style.width = width + "px";\n target.style.height = height + "px";\n return 0;\n }\n _emscripten_set_element_css_size.sig = "ipdd";\n function _emscripten_get_element_css_size(target, width, height) {\n target >>>= 0;\n width >>>= 0;\n height >>>= 0;\n target = findEventTarget(target);\n if (!target) return -4;\n var rect = getBoundingClientRect(target);\n HEAPF64[width >>> 3 >>> 0] = rect.width;\n HEAPF64[height >>> 3 >>> 0] = rect.height;\n return 0;\n }\n _emscripten_get_element_css_size.sig = "ippp";\n var _emscripten_html5_remove_all_event_listeners = () => JSEvents.removeAllEventListeners();\n _emscripten_html5_remove_all_event_listeners.sig = "v";\n var _emscripten_request_animation_frame = function(cb, userData) {\n cb >>>= 0;\n userData >>>= 0;\n return requestAnimationFrame((timeStamp) => getWasmTableEntry(cb)(timeStamp, userData));\n };\n _emscripten_request_animation_frame.sig = "ipp";\n var _emscripten_cancel_animation_frame = (id) => cancelAnimationFrame(id);\n _emscripten_cancel_animation_frame.sig = "vi";\n function _emscripten_request_animation_frame_loop(cb, userData) {\n cb >>>= 0;\n userData >>>= 0;\n function tick(timeStamp) {\n if (getWasmTableEntry(cb)(timeStamp, userData)) {\n requestAnimationFrame(tick);\n }\n }\n return requestAnimationFrame(tick);\n }\n _emscripten_request_animation_frame_loop.sig = "vpp";\n var _emscripten_get_device_pixel_ratio = () => globalThis.devicePixelRatio ?? 1;\n _emscripten_get_device_pixel_ratio.sig = "d";\n function _emscripten_get_callstack(flags2, str, maxbytes) {\n str >>>= 0;\n var callstack = getCallstack(flags2);\n if (!str || maxbytes <= 0) {\n return lengthBytesUTF8(callstack) + 1;\n }\n var bytesWrittenExcludingNull = stringToUTF8(callstack, str, maxbytes);\n return bytesWrittenExcludingNull + 1;\n }\n _emscripten_get_callstack.sig = "iipi";\n var convertFrameToPC = (frame) => {\n var match;\n if (match = /\\bwasm-function\\[\\d+\\]:(0x[0-9a-f]+)/.exec(frame)) {\n return +match[1];\n } else if (match = /:(\\d+):\\d+(?:\\)|$)/.exec(frame)) {\n return 2147483648 | +match[1];\n }\n return 0;\n };\n function _emscripten_return_address(level) {\n var callstack = jsStackTrace().split("\\n");\n if (callstack[0] == "Error") {\n callstack.shift();\n }\n var caller = callstack[level + 3];\n return convertFrameToPC(caller);\n }\n _emscripten_return_address.sig = "pi";\n var UNWIND_CACHE = {};\n var saveInUnwindCache = (callstack) => {\n for (var line of callstack) {\n var pc = convertFrameToPC(line);\n if (pc) {\n UNWIND_CACHE[pc] = line;\n }\n }\n };\n function _emscripten_stack_snapshot() {\n var callstack = jsStackTrace().split("\\n");\n if (callstack[0] == "Error") {\n callstack.shift();\n }\n saveInUnwindCache(callstack);\n UNWIND_CACHE.last_addr = convertFrameToPC(callstack[3]);\n UNWIND_CACHE.last_stack = callstack;\n return UNWIND_CACHE.last_addr;\n }\n _emscripten_stack_snapshot.sig = "p";\n function _emscripten_stack_unwind_buffer(addr2, buffer, count) {\n addr2 >>>= 0;\n buffer >>>= 0;\n var stack;\n if (UNWIND_CACHE.last_addr == addr2) {\n stack = UNWIND_CACHE.last_stack;\n } else {\n stack = jsStackTrace().split("\\n");\n if (stack[0] == "Error") {\n stack.shift();\n }\n saveInUnwindCache(stack);\n }\n var offset = 3;\n while (stack[offset] && convertFrameToPC(stack[offset]) != addr2) {\n ++offset;\n }\n for (var i2 = 0; i2 < count && stack[i2 + offset]; ++i2) {\n HEAP32[buffer + i2 * 4 >>> 2 >>> 0] = convertFrameToPC(stack[i2 + offset]);\n }\n return i2;\n }\n _emscripten_stack_unwind_buffer.sig = "ippi";\n function _emscripten_pc_get_function(pc) {\n pc >>>= 0;\n var frame = UNWIND_CACHE[pc];\n if (!frame) return 0;\n var name2;\n var match;\n if (match = /^\\s+at .*\\.wasm\\.(.*) \\(.*\\)$/.exec(frame)) {\n name2 = match[1];\n } else if (match = /^\\s+at (.*) \\(.*\\)$/.exec(frame)) {\n name2 = match[1];\n } else if (match = /^(.+?)@/.exec(frame)) {\n name2 = match[1];\n } else {\n return 0;\n }\n _free(_emscripten_pc_get_function.ret ?? 0);\n _emscripten_pc_get_function.ret = stringToNewUTF8(name2);\n return _emscripten_pc_get_function.ret;\n }\n _emscripten_pc_get_function.sig = "pp";\n var convertPCtoSourceLocation = (pc) => {\n if (UNWIND_CACHE.last_get_source_pc == pc) return UNWIND_CACHE.last_source;\n var match;\n var source;\n if (!source) {\n var frame = UNWIND_CACHE[pc];\n if (!frame) return null;\n if (match = /\\((.*):(\\d+):(\\d+)\\)$/.exec(frame)) {\n source = { file: match[1], line: match[2], column: match[3] };\n } else if (match = /@(.*):(\\d+):(\\d+)/.exec(frame)) {\n source = { file: match[1], line: match[2], column: match[3] };\n }\n }\n UNWIND_CACHE.last_get_source_pc = pc;\n UNWIND_CACHE.last_source = source;\n return source;\n };\n function _emscripten_pc_get_file(pc) {\n pc >>>= 0;\n var result = convertPCtoSourceLocation(pc);\n if (!result) return 0;\n _free(_emscripten_pc_get_file.ret ?? 0);\n _emscripten_pc_get_file.ret = stringToNewUTF8(result.file);\n return _emscripten_pc_get_file.ret;\n }\n _emscripten_pc_get_file.sig = "pp";\n function _emscripten_pc_get_line(pc) {\n pc >>>= 0;\n var result = convertPCtoSourceLocation(pc);\n return result ? result.line : 0;\n }\n _emscripten_pc_get_line.sig = "ip";\n function _emscripten_pc_get_column(pc) {\n pc >>>= 0;\n var result = convertPCtoSourceLocation(pc);\n return result ? result.column || 0 : 0;\n }\n _emscripten_pc_get_column.sig = "ip";\n var wasiRightsToMuslOFlags = (rights) => {\n if (rights & 2 && rights & 64) {\n return 2;\n }\n if (rights & 2) {\n return 0;\n }\n if (rights & 64) {\n return 1;\n }\n throw new FS.ErrnoError(28);\n };\n var wasiOFlagsToMuslOFlags = (oflags) => {\n var musl_oflags = 0;\n if (oflags & 1) {\n musl_oflags |= 64;\n }\n if (oflags & 8) {\n musl_oflags |= 512;\n }\n if (oflags & 2) {\n musl_oflags |= 65536;\n }\n if (oflags & 4) {\n musl_oflags |= 128;\n }\n return musl_oflags;\n };\n var _emscripten_unwind_to_js_event_loop = () => {\n throw "unwind";\n };\n _emscripten_unwind_to_js_event_loop.sig = "v";\n var safeSetTimeout = (func2, timeout) => {\n runtimeKeepalivePush();\n return setTimeout(() => {\n runtimeKeepalivePop();\n callUserCallback(func2);\n }, timeout);\n };\n var setImmediateWrapped = (func2) => {\n setImmediateWrapped.mapping ||= [];\n var id = setImmediateWrapped.mapping.length;\n setImmediateWrapped.mapping[id] = setImmediate(() => {\n setImmediateWrapped.mapping[id] = void 0;\n func2();\n });\n return id;\n };\n var _emscripten_set_main_loop_timing = (mode, value2) => {\n MainLoop.timingMode = mode;\n MainLoop.timingValue = value2;\n if (!MainLoop.func) {\n return 1;\n }\n if (!MainLoop.running) {\n runtimeKeepalivePush();\n MainLoop.running = true;\n }\n if (mode == 0) {\n MainLoop.scheduler = function MainLoop_scheduler_setTimeout() {\n var timeUntilNextTick = Math.max(0, MainLoop.tickStartTime + value2 - _emscripten_get_now()) | 0;\n setTimeout(MainLoop.runner, timeUntilNextTick);\n };\n } else if (mode == 1) {\n MainLoop.scheduler = function MainLoop_scheduler_rAF() {\n MainLoop.requestAnimationFrame(MainLoop.runner);\n };\n } else {\n if (!MainLoop.setImmediate) {\n if (globalThis.setImmediate) {\n MainLoop.setImmediate = setImmediate;\n } else {\n var setImmediates = [];\n var emscriptenMainLoopMessageId = "setimmediate";\n var MainLoop_setImmediate_messageHandler = (event) => {\n if (event.data === emscriptenMainLoopMessageId || event.data.target === emscriptenMainLoopMessageId) {\n event.stopPropagation();\n setImmediates.shift()();\n }\n };\n addEventListener("message", MainLoop_setImmediate_messageHandler, true);\n MainLoop.setImmediate = (func2) => {\n setImmediates.push(func2);\n if (ENVIRONMENT_IS_WORKER) {\n Module["setImmediates"] ??= [];\n Module["setImmediates"].push(func2);\n postMessage({ target: emscriptenMainLoopMessageId });\n } else postMessage(emscriptenMainLoopMessageId, "*");\n };\n }\n }\n MainLoop.scheduler = function MainLoop_scheduler_setImmediate() {\n MainLoop.setImmediate(MainLoop.runner);\n };\n }\n return 0;\n };\n _emscripten_set_main_loop_timing.sig = "iii";\n var setMainLoop = (iterFunc, fps, simulateInfiniteLoop, arg2, noSetTiming) => {\n MainLoop.func = iterFunc;\n MainLoop.arg = arg2;\n var thisMainLoopId = MainLoop.currentlyRunningMainloop;\n function checkIsRunning() {\n if (thisMainLoopId < MainLoop.currentlyRunningMainloop) {\n runtimeKeepalivePop();\n maybeExit();\n return false;\n }\n return true;\n }\n MainLoop.running = false;\n MainLoop.runner = function MainLoop_runner() {\n if (ABORT) return;\n if (MainLoop.queue.length > 0) {\n var start2 = Date.now();\n var blocker = MainLoop.queue.shift();\n blocker.func(blocker.arg);\n if (MainLoop.remainingBlockers) {\n var remaining = MainLoop.remainingBlockers;\n var next = remaining % 1 == 0 ? remaining - 1 : Math.floor(remaining);\n if (blocker.counted) {\n MainLoop.remainingBlockers = next;\n } else {\n next = next + 0.5;\n MainLoop.remainingBlockers = (8 * remaining + next) / 9;\n }\n }\n MainLoop.updateStatus();\n if (!checkIsRunning()) return;\n setTimeout(MainLoop.runner, 0);\n return;\n }\n if (!checkIsRunning()) return;\n MainLoop.currentFrameNumber = MainLoop.currentFrameNumber + 1 | 0;\n if (MainLoop.timingMode == 1 && MainLoop.timingValue > 1 && MainLoop.currentFrameNumber % MainLoop.timingValue != 0) {\n MainLoop.scheduler();\n return;\n } else if (MainLoop.timingMode == 0) {\n MainLoop.tickStartTime = _emscripten_get_now();\n }\n MainLoop.runIter(iterFunc);\n if (!checkIsRunning()) return;\n MainLoop.scheduler();\n };\n if (!noSetTiming) {\n if (fps > 0) {\n _emscripten_set_main_loop_timing(0, 1e3 / fps);\n } else {\n _emscripten_set_main_loop_timing(1, 1);\n }\n MainLoop.scheduler();\n }\n if (simulateInfiniteLoop) {\n throw "unwind";\n }\n };\n var MainLoop = { running: false, scheduler: null, currentlyRunningMainloop: 0, func: null, arg: 0, timingMode: 0, timingValue: 0, currentFrameNumber: 0, queue: [], preMainLoop: [], postMainLoop: [], pause() {\n MainLoop.scheduler = null;\n MainLoop.currentlyRunningMainloop++;\n }, resume() {\n MainLoop.currentlyRunningMainloop++;\n var timingMode = MainLoop.timingMode;\n var timingValue = MainLoop.timingValue;\n var func2 = MainLoop.func;\n MainLoop.func = null;\n setMainLoop(func2, 0, false, MainLoop.arg, true);\n _emscripten_set_main_loop_timing(timingMode, timingValue);\n MainLoop.scheduler();\n }, updateStatus() {\n if (Module["setStatus"]) {\n var message = Module["statusMessage"] || "Please wait...";\n var remaining = MainLoop.remainingBlockers ?? 0;\n var expected = MainLoop.expectedBlockers ?? 0;\n if (remaining) {\n if (remaining < expected) {\n Module["setStatus"](`{message} ({expected - remaining}/{expected})`);\n } else {\n Module["setStatus"](message);\n }\n } else {\n Module["setStatus"]("");\n }\n }\n }, init() {\n Module["preMainLoop"] && MainLoop.preMainLoop.push(Module["preMainLoop"]);\n Module["postMainLoop"] && MainLoop.postMainLoop.push(Module["postMainLoop"]);\n }, runIter(func2) {\n if (ABORT) return;\n for (var pre of MainLoop.preMainLoop) {\n if (pre() === false) {\n return;\n }\n }\n callUserCallback(func2);\n for (var post of MainLoop.postMainLoop) {\n post();\n }\n }, nextRAF: 0, fakeRequestAnimationFrame(func2) {\n var now = Date.now();\n if (MainLoop.nextRAF === 0) {\n MainLoop.nextRAF = now + 1e3 / 60;\n } else {\n while (now + 2 >= MainLoop.nextRAF) {\n MainLoop.nextRAF += 1e3 / 60;\n }\n }\n var delay = Math.max(MainLoop.nextRAF - now, 0);\n setTimeout(func2, delay);\n }, requestAnimationFrame(func2) {\n if (globalThis.requestAnimationFrame) {\n requestAnimationFrame(func2);\n } else {\n MainLoop.fakeRequestAnimationFrame(func2);\n }\n } };\n var safeRequestAnimationFrame = (func2) => {\n runtimeKeepalivePush();\n return MainLoop.requestAnimationFrame(() => {\n runtimeKeepalivePop();\n callUserCallback(func2);\n });\n };\n var clearImmediateWrapped = (id) => {\n clearImmediate(setImmediateWrapped.mapping[id]);\n setImmediateWrapped.mapping[id] = void 0;\n };\n var emClearImmediate;\n var emSetImmediate;\n var emClearImmediate_deps = ["$emSetImmediate"];\n var _emscripten_set_immediate = function(cb, userData) {\n cb >>>= 0;\n userData >>>= 0;\n runtimeKeepalivePush();\n return emSetImmediate(() => {\n runtimeKeepalivePop();\n callUserCallback(() => getWasmTableEntry(cb)(userData));\n });\n };\n _emscripten_set_immediate.sig = "ipp";\n var _emscripten_clear_immediate = (id) => {\n runtimeKeepalivePop();\n emClearImmediate(id);\n };\n _emscripten_clear_immediate.sig = "vi";\n var _emscripten_set_immediate_loop = function(cb, userData) {\n cb >>>= 0;\n userData >>>= 0;\n function tick() {\n callUserCallback(() => {\n if (getWasmTableEntry(cb)(userData)) {\n emSetImmediate(tick);\n } else {\n runtimeKeepalivePop();\n }\n });\n }\n runtimeKeepalivePush();\n emSetImmediate(tick);\n };\n _emscripten_set_immediate_loop.sig = "vpp";\n var _emscripten_set_timeout = function(cb, msecs, userData) {\n cb >>>= 0;\n userData >>>= 0;\n return safeSetTimeout(() => getWasmTableEntry(cb)(userData), msecs);\n };\n _emscripten_set_timeout.sig = "ipdp";\n var _emscripten_clear_timeout = clearTimeout;\n _emscripten_clear_timeout.sig = "vi";\n var _emscripten_set_timeout_loop = function(cb, msecs, userData) {\n cb >>>= 0;\n userData >>>= 0;\n function tick() {\n var t = _emscripten_get_now();\n var n = t + msecs;\n runtimeKeepalivePop();\n callUserCallback(() => {\n if (getWasmTableEntry(cb)(t, userData)) {\n runtimeKeepalivePush();\n var remaining = n - _emscripten_get_now();\n remaining = Math.max(0, remaining);\n setTimeout(tick, remaining);\n }\n });\n }\n runtimeKeepalivePush();\n return setTimeout(tick, 0);\n };\n _emscripten_set_timeout_loop.sig = "vpdp";\n var _emscripten_set_interval = function(cb, msecs, userData) {\n cb >>>= 0;\n userData >>>= 0;\n runtimeKeepalivePush();\n return setInterval(() => {\n callUserCallback(() => getWasmTableEntry(cb)(userData));\n }, msecs);\n };\n _emscripten_set_interval.sig = "ipdp";\n var _emscripten_clear_interval = (id) => {\n runtimeKeepalivePop();\n clearInterval(id);\n };\n _emscripten_clear_interval.sig = "vi";\n var _emscripten_async_call = function(func2, arg2, millis) {\n func2 >>>= 0;\n arg2 >>>= 0;\n var wrapper = () => getWasmTableEntry(func2)(arg2);\n if (millis >= 0 || ENVIRONMENT_IS_NODE) {\n safeSetTimeout(wrapper, millis);\n } else {\n safeRequestAnimationFrame(wrapper);\n }\n };\n _emscripten_async_call.sig = "vppi";\n var registerPostMainLoop = (f2) => {\n typeof MainLoop != "undefined" && MainLoop.postMainLoop.push(f2);\n };\n var registerPreMainLoop = (f2) => {\n typeof MainLoop != "undefined" && MainLoop.preMainLoop.push(f2);\n };\n function _emscripten_get_main_loop_timing(mode, value2) {\n mode >>>= 0;\n value2 >>>= 0;\n if (mode) HEAP32[mode >>> 2 >>> 0] = MainLoop.timingMode;\n if (value2) HEAP32[value2 >>> 2 >>> 0] = MainLoop.timingValue;\n }\n _emscripten_get_main_loop_timing.sig = "vpp";\n function _emscripten_set_main_loop(func2, fps, simulateInfiniteLoop) {\n func2 >>>= 0;\n var iterFunc = getWasmTableEntry(func2);\n setMainLoop(iterFunc, fps, simulateInfiniteLoop);\n }\n _emscripten_set_main_loop.sig = "vpii";\n var _emscripten_set_main_loop_arg = function(func2, arg2, fps, simulateInfiniteLoop) {\n func2 >>>= 0;\n arg2 >>>= 0;\n var iterFunc = () => getWasmTableEntry(func2)(arg2);\n setMainLoop(iterFunc, fps, simulateInfiniteLoop, arg2);\n };\n _emscripten_set_main_loop_arg.sig = "vppii";\n var _emscripten_cancel_main_loop = () => {\n MainLoop.pause();\n MainLoop.func = null;\n };\n _emscripten_cancel_main_loop.sig = "v";\n var _emscripten_pause_main_loop = () => MainLoop.pause();\n _emscripten_pause_main_loop.sig = "v";\n var _emscripten_resume_main_loop = () => MainLoop.resume();\n _emscripten_resume_main_loop.sig = "v";\n var __emscripten_push_main_loop_blocker = function(func2, arg2, name2) {\n func2 >>>= 0;\n arg2 >>>= 0;\n name2 >>>= 0;\n MainLoop.queue.push({ func: () => {\n getWasmTableEntry(func2)(arg2);\n }, name: UTF8ToString(name2), counted: true });\n MainLoop.updateStatus();\n };\n __emscripten_push_main_loop_blocker.sig = "vppp";\n var __emscripten_push_uncounted_main_loop_blocker = function(func2, arg2, name2) {\n func2 >>>= 0;\n arg2 >>>= 0;\n name2 >>>= 0;\n MainLoop.queue.push({ func: () => {\n getWasmTableEntry(func2)(arg2);\n }, name: UTF8ToString(name2), counted: false });\n MainLoop.updateStatus();\n };\n __emscripten_push_uncounted_main_loop_blocker.sig = "vppp";\n var _emscripten_set_main_loop_expected_blockers = (num) => {\n MainLoop.expectedBlockers = num;\n MainLoop.remainingBlockers = num;\n MainLoop.updateStatus();\n };\n _emscripten_set_main_loop_expected_blockers.sig = "vi";\n var idsToPromises = (idBuf, size) => {\n var promises = [];\n for (var i2 = 0; i2 < size; i2++) {\n var id = HEAP32[idBuf + i2 * 4 >>> 2 >>> 0];\n promises[i2] = getPromise(id);\n }\n return promises;\n };\n var makePromiseCallback = (callback, userData) => (value2) => {\n runtimeKeepalivePop();\n var stack = stackSave();\n var resultPtr = stackAlloc(POINTER_SIZE);\n HEAPU32[resultPtr >>> 2 >>> 0] = 0;\n try {\n var result = getWasmTableEntry(callback)(resultPtr, userData, value2);\n var resultVal = HEAPU32[resultPtr >>> 2 >>> 0];\n } catch (e) {\n if (typeof e != "number") {\n throw 0;\n }\n throw e;\n } finally {\n stackRestore(stack);\n }\n switch (result) {\n case 0:\n return resultVal;\n case 1:\n return getPromise(resultVal);\n case 2:\n var ret = getPromise(resultVal);\n _emscripten_promise_destroy(resultVal);\n return ret;\n case 3:\n throw resultVal;\n }\n };\n function _emscripten_promise_then(id, onFulfilled, onRejected, userData) {\n id >>>= 0;\n onFulfilled >>>= 0;\n onRejected >>>= 0;\n userData >>>= 0;\n runtimeKeepalivePush();\n var promise = getPromise(id);\n var newId = promiseMap.allocate({ promise: promise.then(makePromiseCallback(onFulfilled, userData), makePromiseCallback(onRejected, userData)) });\n return newId;\n }\n _emscripten_promise_then.sig = "ppppp";\n var _emscripten_promise_all = function(idBuf, resultBuf, size) {\n idBuf >>>= 0;\n resultBuf >>>= 0;\n size >>>= 0;\n var promises = idsToPromises(idBuf, size);\n var id = promiseMap.allocate({ promise: Promise.all(promises).then((results) => {\n if (resultBuf) {\n for (var i2 = 0; i2 < size; i2++) {\n var result = results[i2];\n HEAPU32[resultBuf + i2 * 4 >>> 2 >>> 0] = result;\n }\n }\n return resultBuf;\n }) });\n return id;\n };\n _emscripten_promise_all.sig = "pppp";\n var setPromiseResult = (ptr2, fulfill, value2) => {\n var result = fulfill ? 0 : 3;\n HEAP32[ptr2 >>> 2 >>> 0] = result;\n HEAPU32[ptr2 + 4 >>> 2 >>> 0] = value2;\n };\n var _emscripten_promise_all_settled = function(idBuf, resultBuf, size) {\n idBuf >>>= 0;\n resultBuf >>>= 0;\n size >>>= 0;\n var promises = idsToPromises(idBuf, size);\n var id = promiseMap.allocate({ promise: Promise.allSettled(promises).then((results) => {\n if (resultBuf) {\n var offset = resultBuf;\n for (var i2 = 0; i2 < size; i2++, offset += 8) {\n if (results[i2].status === "fulfilled") {\n setPromiseResult(offset, true, results[i2].value);\n } else {\n setPromiseResult(offset, false, results[i2].reason);\n }\n }\n }\n return resultBuf;\n }) });\n return id;\n };\n _emscripten_promise_all_settled.sig = "pppp";\n var _emscripten_promise_any = function(idBuf, errorBuf, size) {\n idBuf >>>= 0;\n errorBuf >>>= 0;\n size >>>= 0;\n var promises = idsToPromises(idBuf, size);\n var id = promiseMap.allocate({ promise: Promise.any(promises).catch((err2) => {\n if (errorBuf) {\n for (var i2 = 0; i2 < size; i2++) {\n HEAPU32[errorBuf + i2 * 4 >>> 2 >>> 0] = err2.errors[i2];\n }\n }\n throw errorBuf;\n }) });\n return id;\n };\n _emscripten_promise_any.sig = "pppp";\n function _emscripten_promise_race(idBuf, size) {\n idBuf >>>= 0;\n size >>>= 0;\n var promises = idsToPromises(idBuf, size);\n var id = promiseMap.allocate({ promise: Promise.race(promises) });\n return id;\n }\n _emscripten_promise_race.sig = "ppp";\n function _emscripten_promise_await(returnValuePtr, id) {\n returnValuePtr >>>= 0;\n id >>>= 0;\n abort("emscripten_promise_await is only available with ASYNCIFY");\n }\n _emscripten_promise_await.sig = "vpp";\n var getExceptionMessageCommon = (ptr2) => {\n var sp = stackSave();\n var type_addr_addr = stackAlloc(4);\n var message_addr_addr = stackAlloc(4);\n ___get_exception_message(ptr2, type_addr_addr, message_addr_addr);\n var type_addr = HEAPU32[type_addr_addr >>> 2 >>> 0];\n var message_addr = HEAPU32[message_addr_addr >>> 2 >>> 0];\n var type = UTF8ToString(type_addr);\n _free(type_addr);\n var message;\n if (message_addr) {\n message = UTF8ToString(message_addr);\n _free(message_addr);\n }\n stackRestore(sp);\n return [type, message];\n };\n var getCppExceptionTag = () => ___cpp_exception;\n var getCppExceptionThrownObjectFromWebAssemblyException = (ex) => {\n var unwind_header = ex.getArg(getCppExceptionTag(), 0);\n return ___thrown_object_from_unwind_exception(unwind_header);\n };\n var incrementExceptionRefcount = (ex) => {\n var ptr2 = getCppExceptionThrownObjectFromWebAssemblyException(ex);\n ___cxa_increment_exception_refcount(ptr2);\n };\n var decrementExceptionRefcount = (ex) => {\n var ptr2 = getCppExceptionThrownObjectFromWebAssemblyException(ex);\n ___cxa_decrement_exception_refcount(ptr2);\n };\n var getExceptionMessage = (ex) => {\n var ptr2 = getCppExceptionThrownObjectFromWebAssemblyException(ex);\n return getExceptionMessageCommon(ptr2);\n };\n var Browser = { useWebGL: false, isFullscreen: false, pointerLock: false, moduleContextCreatedCallbacks: [], workers: [], preloadedImages: {}, preloadedAudios: {}, getCanvas: () => Module["canvas"], init() {\n if (Browser.initted) return;\n Browser.initted = true;\n var imagePlugin = {};\n imagePlugin["canHandle"] = (name2) => !Module["noImageDecoding"] && /\\.(jpg|jpeg|png|bmp|webp)$/i.test(name2);\n imagePlugin["handle"] = async (byteArray, name2) => {\n var b2 = new Blob([byteArray], { type: Browser.getMimetype(name2) });\n if (b2.size !== byteArray.length) {\n b2 = new Blob([new Uint8Array(byteArray).buffer], { type: Browser.getMimetype(name2) });\n }\n var url2 = URL.createObjectURL(b2);\n return new Promise((resolve, reject) => {\n var img = new Image();\n img.onload = () => {\n var canvas2 = document.createElement("canvas");\n canvas2.width = img.width;\n canvas2.height = img.height;\n var ctx = canvas2.getContext("2d");\n ctx.drawImage(img, 0, 0);\n Browser.preloadedImages[name2] = canvas2;\n URL.revokeObjectURL(url2);\n resolve(byteArray);\n };\n img.onerror = (event) => {\n err(`Image ${url2} could not be decoded`);\n reject();\n };\n img.src = url2;\n });\n };\n preloadPlugins.push(imagePlugin);\n var audioPlugin = {};\n audioPlugin["canHandle"] = (name2) => !Module["noAudioDecoding"] && name2.slice(-4) in { ".ogg": 1, ".wav": 1, ".mp3": 1 };\n audioPlugin["handle"] = async (byteArray, name2) => new Promise((resolve, reject) => {\n var done = false;\n function finish(audio2) {\n if (done) return;\n done = true;\n Browser.preloadedAudios[name2] = audio2;\n resolve(byteArray);\n }\n var b2 = new Blob([byteArray], { type: Browser.getMimetype(name2) });\n var url2 = URL.createObjectURL(b2);\n var audio = new Audio();\n audio.addEventListener("canplaythrough", () => finish(audio), false);\n audio.onerror = (event) => {\n if (done) return;\n err(`warning: browser could not fully decode audio ${name2}, trying slower base64 approach`);\n function encode64(data2) {\n var BASE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";\n var PAD = "=";\n var ret = "";\n var leftchar = 0;\n var leftbits = 0;\n for (var i2 = 0; i2 < data2.length; i2++) {\n leftchar = leftchar << 8 | data2[i2];\n leftbits += 8;\n while (leftbits >= 6) {\n var curr = leftchar >> leftbits - 6 & 63;\n leftbits -= 6;\n ret += BASE[curr];\n }\n }\n if (leftbits == 2) {\n ret += BASE[(leftchar & 3) << 4];\n ret += PAD + PAD;\n } else if (leftbits == 4) {\n ret += BASE[(leftchar & 15) << 2];\n ret += PAD;\n }\n return ret;\n }\n audio.src = "data:audio/x-" + name2.slice(-3) + ";base64," + encode64(byteArray);\n finish(audio);\n };\n audio.src = url2;\n safeSetTimeout(() => {\n finish(audio);\n }, 1e4);\n });\n preloadPlugins.push(audioPlugin);\n function pointerLockChange() {\n var canvas2 = Browser.getCanvas();\n Browser.pointerLock = document.pointerLockElement === canvas2;\n }\n var canvas = Browser.getCanvas();\n if (canvas) {\n document.addEventListener("pointerlockchange", pointerLockChange, false);\n if (Module["elementPointerLock"]) {\n canvas.addEventListener("click", (ev) => {\n if (!Browser.pointerLock && Browser.getCanvas().requestPointerLock) {\n Browser.getCanvas().requestPointerLock();\n ev.preventDefault();\n }\n }, false);\n }\n }\n }, createContext(canvas, useWebGL, setInModule, webGLContextAttributes) {\n if (useWebGL && Module["ctx"] && canvas == Browser.getCanvas()) return Module["ctx"];\n var ctx;\n var contextHandle;\n if (useWebGL) {\n var contextAttributes = { antialias: false, alpha: false, majorVersion: typeof WebGL2RenderingContext != "undefined" ? 2 : 1 };\n if (webGLContextAttributes) {\n for (var attribute in webGLContextAttributes) {\n contextAttributes[attribute] = webGLContextAttributes[attribute];\n }\n }\n if (typeof GL != "undefined") {\n contextHandle = GL.createContext(canvas, contextAttributes);\n if (contextHandle) {\n ctx = GL.getContext(contextHandle).GLctx;\n }\n }\n } else {\n ctx = canvas.getContext("2d");\n }\n if (!ctx) return null;\n if (setInModule) {\n Module["ctx"] = ctx;\n if (useWebGL) GL.makeContextCurrent(contextHandle);\n Browser.useWebGL = useWebGL;\n Browser.moduleContextCreatedCallbacks.forEach((callback) => callback());\n Browser.init();\n }\n return ctx;\n }, fullscreenHandlersInstalled: false, lockPointer: void 0, resizeCanvas: void 0, requestFullscreen(lockPointer, resizeCanvas) {\n Browser.lockPointer = lockPointer;\n Browser.resizeCanvas = resizeCanvas;\n if (typeof Browser.lockPointer == "undefined") Browser.lockPointer = true;\n if (typeof Browser.resizeCanvas == "undefined") Browser.resizeCanvas = false;\n var canvas = Browser.getCanvas();\n function fullscreenChange() {\n Browser.isFullscreen = false;\n var canvasContainer2 = canvas.parentNode;\n if (getFullscreenElement() === canvasContainer2) {\n canvas.exitFullscreen = Browser.exitFullscreen;\n if (Browser.lockPointer) canvas.requestPointerLock();\n Browser.isFullscreen = true;\n if (Browser.resizeCanvas) {\n Browser.setFullscreenCanvasSize();\n } else {\n Browser.updateCanvasDimensions(canvas);\n }\n } else {\n canvasContainer2.parentNode.insertBefore(canvas, canvasContainer2);\n canvasContainer2.parentNode.removeChild(canvasContainer2);\n if (Browser.resizeCanvas) {\n Browser.setWindowedCanvasSize();\n } else {\n Browser.updateCanvasDimensions(canvas);\n }\n }\n Module["onFullScreen"]?.(Browser.isFullscreen);\n Module["onFullscreen"]?.(Browser.isFullscreen);\n }\n if (!Browser.fullscreenHandlersInstalled) {\n Browser.fullscreenHandlersInstalled = true;\n document.addEventListener("fullscreenchange", fullscreenChange, false);\n document.addEventListener("mozfullscreenchange", fullscreenChange, false);\n document.addEventListener("webkitfullscreenchange", fullscreenChange, false);\n document.addEventListener("MSFullscreenChange", fullscreenChange, false);\n }\n var canvasContainer = document.createElement("div");\n canvas.parentNode.insertBefore(canvasContainer, canvas);\n canvasContainer.appendChild(canvas);\n canvasContainer.requestFullscreen = canvasContainer["requestFullscreen"] || canvasContainer["mozRequestFullScreen"] || canvasContainer["msRequestFullscreen"] || (canvasContainer["webkitRequestFullscreen"] ? () => canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"]) : null) || (canvasContainer["webkitRequestFullScreen"] ? () => canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]) : null);\n canvasContainer.requestFullscreen();\n }, exitFullscreen() {\n if (!Browser.isFullscreen) {\n return false;\n }\n var CFS = document["exitFullscreen"] || document["cancelFullScreen"] || document["mozCancelFullScreen"] || document["msExitFullscreen"] || document["webkitCancelFullScreen"] || (() => {\n });\n CFS.apply(document, []);\n return true;\n }, safeSetTimeout(func2, timeout) {\n return safeSetTimeout(func2, timeout);\n }, getMimetype(name2) {\n return { jpg: "image/jpeg", jpeg: "image/jpeg", png: "image/png", bmp: "image/bmp", ogg: "audio/ogg", wav: "audio/wav", mp3: "audio/mpeg" }[name2.slice(name2.lastIndexOf(".") + 1)];\n }, getUserMedia(func2) {\n window.getUserMedia ||= navigator["getUserMedia"] || navigator["mozGetUserMedia"];\n window.getUserMedia(func2);\n }, getMovementX(event) {\n return event["movementX"] || event["mozMovementX"] || event["webkitMovementX"] || 0;\n }, getMovementY(event) {\n return event["movementY"] || event["mozMovementY"] || event["webkitMovementY"] || 0;\n }, getMouseWheelDelta(event) {\n var delta = 0;\n switch (event.type) {\n case "DOMMouseScroll":\n delta = event.detail / 3;\n break;\n case "mousewheel":\n delta = event.wheelDelta / 120;\n break;\n case "wheel":\n delta = event.deltaY;\n switch (event.deltaMode) {\n case 0:\n delta /= 100;\n break;\n case 1:\n delta /= 3;\n break;\n case 2:\n delta *= 80;\n break;\n default:\n abort("unrecognized mouse wheel delta mode: " + event.deltaMode);\n }\n break;\n default:\n abort("unrecognized mouse wheel event: " + event.type);\n }\n return delta;\n }, mouseX: 0, mouseY: 0, mouseMovementX: 0, mouseMovementY: 0, touches: {}, lastTouches: {}, calculateMouseCoords(pageX, pageY) {\n var canvas = Browser.getCanvas();\n var rect = canvas.getBoundingClientRect();\n var scrollX = typeof window.scrollX != "undefined" ? window.scrollX : window.pageXOffset;\n var scrollY = typeof window.scrollY != "undefined" ? window.scrollY : window.pageYOffset;\n var adjustedX = pageX - (scrollX + rect.left);\n var adjustedY = pageY - (scrollY + rect.top);\n adjustedX = adjustedX * (canvas.width / rect.width);\n adjustedY = adjustedY * (canvas.height / rect.height);\n return { x: adjustedX, y: adjustedY };\n }, setMouseCoords(pageX, pageY) {\n const { x: x2, y } = Browser.calculateMouseCoords(pageX, pageY);\n Browser.mouseMovementX = x2 - Browser.mouseX;\n Browser.mouseMovementY = y - Browser.mouseY;\n Browser.mouseX = x2;\n Browser.mouseY = y;\n }, calculateMouseEvent(event) {\n if (Browser.pointerLock) {\n if (event.type != "mousemove" && "mozMovementX" in event) {\n Browser.mouseMovementX = Browser.mouseMovementY = 0;\n } else {\n Browser.mouseMovementX = Browser.getMovementX(event);\n Browser.mouseMovementY = Browser.getMovementY(event);\n }\n Browser.mouseX += Browser.mouseMovementX;\n Browser.mouseY += Browser.mouseMovementY;\n } else {\n if (event.type === "touchstart" || event.type === "touchend" || event.type === "touchmove") {\n var touch = event.touch;\n if (touch === void 0) {\n return;\n }\n var coords = Browser.calculateMouseCoords(touch.pageX, touch.pageY);\n if (event.type === "touchstart") {\n Browser.lastTouches[touch.identifier] = coords;\n Browser.touches[touch.identifier] = coords;\n } else if (event.type === "touchend" || event.type === "touchmove") {\n var last = Browser.touches[touch.identifier];\n last ||= coords;\n Browser.lastTouches[touch.identifier] = last;\n Browser.touches[touch.identifier] = coords;\n }\n return;\n }\n Browser.setMouseCoords(event.pageX, event.pageY);\n }\n }, resizeListeners: [], updateResizeListeners() {\n var canvas = Browser.getCanvas();\n Browser.resizeListeners.forEach((listener) => listener(canvas.width, canvas.height));\n }, setCanvasSize(width, height, noUpdates) {\n var canvas = Browser.getCanvas();\n Browser.updateCanvasDimensions(canvas, width, height);\n if (!noUpdates) Browser.updateResizeListeners();\n }, windowedWidth: 0, windowedHeight: 0, setFullscreenCanvasSize() {\n if (typeof SDL != "undefined") {\n var flags2 = HEAPU32[SDL.screen >>> 2 >>> 0];\n flags2 = flags2 | 8388608;\n HEAP32[SDL.screen >>> 2 >>> 0] = flags2;\n }\n Browser.updateCanvasDimensions(Browser.getCanvas());\n Browser.updateResizeListeners();\n }, setWindowedCanvasSize() {\n if (typeof SDL != "undefined") {\n var flags2 = HEAPU32[SDL.screen >>> 2 >>> 0];\n flags2 = flags2 & ~8388608;\n HEAP32[SDL.screen >>> 2 >>> 0] = flags2;\n }\n Browser.updateCanvasDimensions(Browser.getCanvas());\n Browser.updateResizeListeners();\n }, updateCanvasDimensions(canvas, wNative, hNative) {\n if (wNative && hNative) {\n canvas.widthNative = wNative;\n canvas.heightNative = hNative;\n } else {\n wNative = canvas.widthNative;\n hNative = canvas.heightNative;\n }\n var w2 = wNative;\n var h = hNative;\n if (Module["forcedAspectRatio"] > 0) {\n if (w2 / h < Module["forcedAspectRatio"]) {\n w2 = Math.round(h * Module["forcedAspectRatio"]);\n } else {\n h = Math.round(w2 / Module["forcedAspectRatio"]);\n }\n }\n if (getFullscreenElement() === canvas.parentNode && typeof screen != "undefined") {\n var factor = Math.min(screen.width / w2, screen.height / h);\n w2 = Math.round(w2 * factor);\n h = Math.round(h * factor);\n }\n if (Browser.resizeCanvas) {\n if (canvas.width != w2) canvas.width = w2;\n if (canvas.height != h) canvas.height = h;\n if (typeof canvas.style != "undefined") {\n canvas.style.removeProperty("width");\n canvas.style.removeProperty("height");\n }\n } else {\n if (canvas.width != wNative) canvas.width = wNative;\n if (canvas.height != hNative) canvas.height = hNative;\n if (typeof canvas.style != "undefined") {\n if (w2 != wNative || h != hNative) {\n canvas.style.setProperty("width", w2 + "px", "important");\n canvas.style.setProperty("height", h + "px", "important");\n } else {\n canvas.style.removeProperty("width");\n canvas.style.removeProperty("height");\n }\n }\n }\n } };\n var requestFullscreen = Browser.requestFullscreen;\n var setCanvasSize = Browser.setCanvasSize;\n var getUserMedia = Browser.getUserMedia;\n var createContext = Browser.createContext;\n var _emscripten_run_preload_plugins = function(file, onload2, onerror2) {\n file >>>= 0;\n onload2 >>>= 0;\n onerror2 >>>= 0;\n runtimeKeepalivePush();\n var _file = UTF8ToString(file);\n var data2 = FS.analyzePath(_file);\n if (!data2.exists) return -1;\n FS.createPreloadedFile(PATH.dirname(_file), PATH.basename(_file), data2.object.contents, true, true, () => {\n runtimeKeepalivePop();\n if (onload2) getWasmTableEntry(onload2)(file);\n }, () => {\n runtimeKeepalivePop();\n if (onerror2) getWasmTableEntry(onerror2)(file);\n }, true);\n return 0;\n };\n _emscripten_run_preload_plugins.sig = "ippp";\n var Browser_asyncPrepareDataCounter = 0;\n var _emscripten_run_preload_plugins_data = function(data2, size, suffix, arg2, onload2, onerror2) {\n data2 >>>= 0;\n suffix >>>= 0;\n arg2 >>>= 0;\n onload2 >>>= 0;\n onerror2 >>>= 0;\n runtimeKeepalivePush();\n var _suffix = UTF8ToString(suffix);\n var name2 = "prepare_data_" + Browser_asyncPrepareDataCounter++ + "." + _suffix;\n var cname = stringToNewUTF8(name2);\n FS.createPreloadedFile("/", name2, HEAPU8.subarray(data2 >>> 0, data2 + size >>> 0), true, true, () => {\n runtimeKeepalivePop();\n if (onload2) getWasmTableEntry(onload2)(arg2, cname);\n }, () => {\n runtimeKeepalivePop();\n if (onerror2) getWasmTableEntry(onerror2)(arg2);\n }, true);\n };\n _emscripten_run_preload_plugins_data.sig = "vpipppp";\n var _emscripten_async_run_script = function(script2, millis) {\n script2 >>>= 0;\n safeSetTimeout(() => _emscripten_run_script(script2), millis);\n };\n _emscripten_async_run_script.sig = "vpi";\n var _emscripten_async_load_script = async function(url, onload, onerror) {\n url >>>= 0;\n onload >>>= 0;\n onerror >>>= 0;\n url = UTF8ToString(url);\n runtimeKeepalivePush();\n var loadDone = () => {\n runtimeKeepalivePop();\n if (onload) {\n var onloadCallback = () => callUserCallback(getWasmTableEntry(onload));\n if (runDependencies > 0) {\n dependenciesFulfilled = onloadCallback;\n } else {\n onloadCallback();\n }\n }\n };\n var loadError = () => {\n runtimeKeepalivePop();\n if (onerror) {\n callUserCallback(getWasmTableEntry(onerror));\n }\n };\n if (ENVIRONMENT_IS_NODE) {\n try {\n var data = await readAsync(url, false);\n eval(data);\n loadDone();\n } catch (e) {\n err(e);\n loadError();\n }\n return;\n }\n var script = document.createElement("script");\n script.onload = loadDone;\n script.onerror = loadError;\n script.src = url;\n document.body.appendChild(script);\n };\n _emscripten_async_load_script.sig = "vppp";\n function _emscripten_get_window_title() {\n var buflen = 256;\n if (!_emscripten_get_window_title.buffer) {\n _emscripten_get_window_title.buffer = _malloc(buflen);\n }\n stringToUTF8(document.title, _emscripten_get_window_title.buffer, buflen);\n return _emscripten_get_window_title.buffer;\n }\n _emscripten_get_window_title.sig = "p";\n function _emscripten_set_window_title(title) {\n title >>>= 0;\n return document.title = UTF8ToString(title);\n }\n _emscripten_set_window_title.sig = "vp";\n function _emscripten_get_screen_size(width, height) {\n width >>>= 0;\n height >>>= 0;\n HEAP32[width >>> 2 >>> 0] = screen.width;\n HEAP32[height >>> 2 >>> 0] = screen.height;\n }\n _emscripten_get_screen_size.sig = "vpp";\n var _emscripten_hide_mouse = () => {\n var styleSheet = document.styleSheets[0];\n var rules = styleSheet.cssRules;\n for (var i2 = 0; i2 < rules.length; i2++) {\n if (rules[i2].cssText.startsWith("canvas")) {\n styleSheet.deleteRule(i2);\n i2--;\n }\n }\n styleSheet.insertRule("canvas.emscripten { border: 1px solid black; cursor: none; }", 0);\n };\n _emscripten_hide_mouse.sig = "v";\n var _emscripten_set_canvas_size = (width, height) => Browser.setCanvasSize(width, height);\n _emscripten_set_canvas_size.sig = "vii";\n function _emscripten_get_canvas_size(width, height, isFullscreen) {\n width >>>= 0;\n height >>>= 0;\n isFullscreen >>>= 0;\n var canvas = Browser.getCanvas();\n HEAP32[width >>> 2 >>> 0] = canvas.width;\n HEAP32[height >>> 2 >>> 0] = canvas.height;\n HEAP32[isFullscreen >>> 2 >>> 0] = Browser.isFullscreen ? 1 : 0;\n }\n _emscripten_get_canvas_size.sig = "vppp";\n function _emscripten_create_worker(url2) {\n url2 >>>= 0;\n url2 = UTF8ToString(url2);\n var id = Browser.workers.length;\n var info2 = { worker: new Worker(url2), callbacks: [], awaited: 0, buffer: 0 };\n info2.worker.onmessage = (msg) => {\n if (ABORT) return;\n var info3 = Browser.workers[id];\n if (!info3) return;\n var callbackId = msg.data["callbackId"];\n var callbackInfo = info3.callbacks[callbackId];\n if (!callbackInfo) return;\n if (msg.data["finalResponse"]) {\n info3.awaited--;\n info3.callbacks[callbackId] = null;\n runtimeKeepalivePop();\n }\n var data2 = msg.data["data"];\n if (data2) {\n if (!data2.byteLength) data2 = new Uint8Array(data2);\n info3.buffer = _realloc(info3.buffer, data2.length);\n HEAPU8.set(data2, info3.buffer >>> 0);\n callbackInfo.func(info3.buffer, data2.length, callbackInfo.arg);\n } else {\n callbackInfo.func(0, 0, callbackInfo.arg);\n }\n };\n Browser.workers.push(info2);\n return id;\n }\n _emscripten_create_worker.sig = "ip";\n var _emscripten_destroy_worker = (id) => {\n var info2 = Browser.workers[id];\n info2.worker.terminate();\n _free(info2.buffer);\n Browser.workers[id] = null;\n };\n _emscripten_destroy_worker.sig = "vi";\n function _emscripten_call_worker(id, funcName, data2, size, callback, arg2) {\n funcName >>>= 0;\n data2 >>>= 0;\n callback >>>= 0;\n arg2 >>>= 0;\n funcName = UTF8ToString(funcName);\n var info2 = Browser.workers[id];\n var callbackId = -1;\n if (callback) {\n runtimeKeepalivePush();\n callbackId = info2.callbacks.length;\n info2.callbacks.push({ func: getWasmTableEntry(callback), arg: arg2 });\n info2.awaited++;\n }\n var transferObject = { funcName, callbackId, data: data2 ? new Uint8Array(HEAPU8.subarray(data2 >>> 0, data2 + size >>> 0)) : 0 };\n if (data2) {\n info2.worker.postMessage(transferObject, [transferObject.data.buffer]);\n } else {\n info2.worker.postMessage(transferObject);\n }\n }\n _emscripten_call_worker.sig = "vippipp";\n var _emscripten_get_worker_queue_size = (id) => {\n var info2 = Browser.workers[id];\n if (!info2) return -1;\n return info2.awaited;\n };\n _emscripten_get_worker_queue_size.sig = "ii";\n var getPreloadedImageData = (path, w2, h) => {\n path = PATH_FS.resolve(path);\n var canvas = Browser.preloadedImages[path];\n if (!canvas) return 0;\n var ctx = canvas.getContext("2d");\n var image = ctx.getImageData(0, 0, canvas.width, canvas.height);\n var buf = _malloc(canvas.width * canvas.height * 4);\n HEAPU8.set(image.data, buf >>> 0);\n HEAP32[w2 >>> 2 >>> 0] = canvas.width;\n HEAP32[h >>> 2 >>> 0] = canvas.height;\n return buf;\n };\n function _emscripten_get_preloaded_image_data(path, w2, h) {\n path >>>= 0;\n w2 >>>= 0;\n h >>>= 0;\n return getPreloadedImageData(UTF8ToString(path), w2, h);\n }\n _emscripten_get_preloaded_image_data.sig = "pppp";\n var getPreloadedImageData__data = ["$PATH_FS", "malloc"];\n function _emscripten_get_preloaded_image_data_from_FILE(file, w2, h) {\n file >>>= 0;\n w2 >>>= 0;\n h >>>= 0;\n var fd = _fileno(file);\n var stream = FS.getStream(fd);\n if (stream) {\n return getPreloadedImageData(stream.path, w2, h);\n }\n return 0;\n }\n _emscripten_get_preloaded_image_data_from_FILE.sig = "pppp";\n var wget = { wgetRequests: {}, nextWgetRequestHandle: 0, getNextWgetRequestHandle() {\n var handle2 = wget.nextWgetRequestHandle;\n wget.nextWgetRequestHandle++;\n return handle2;\n } };\n var FS_mkdirTree = (path, mode) => FS.mkdirTree(path, mode);\n var _emscripten_async_wget = function(url2, file, onload2, onerror2) {\n url2 >>>= 0;\n file >>>= 0;\n onload2 >>>= 0;\n onerror2 >>>= 0;\n runtimeKeepalivePush();\n var _url = UTF8ToString(url2);\n var _file = UTF8ToString(file);\n _file = PATH_FS.resolve(_file);\n function doCallback(callback) {\n if (callback) {\n runtimeKeepalivePop();\n callUserCallback(() => withStackSave(() => getWasmTableEntry(callback)(stringToUTF8OnStack(_file))));\n }\n }\n var destinationDirectory = PATH.dirname(_file);\n FS_preloadFile(destinationDirectory, PATH.basename(_file), _url, true, true, false, false, () => {\n try {\n FS_unlink(_file);\n } catch (e) {\n }\n FS_mkdirTree(destinationDirectory);\n }).then(() => doCallback(onload2)).catch(() => doCallback(onerror2));\n };\n _emscripten_async_wget.sig = "vpppp";\n var _emscripten_async_wget_data = async function(url2, userdata, onload2, onerror2) {\n url2 >>>= 0;\n userdata >>>= 0;\n onload2 >>>= 0;\n onerror2 >>>= 0;\n runtimeKeepalivePush();\n try {\n var byteArray = await asyncLoad(UTF8ToString(url2));\n runtimeKeepalivePop();\n callUserCallback(() => {\n var buffer = _malloc(byteArray.length);\n HEAPU8.set(byteArray, buffer >>> 0);\n getWasmTableEntry(onload2)(userdata, buffer, byteArray.length);\n _free(buffer);\n });\n } catch (e) {\n if (onerror2) {\n runtimeKeepalivePop();\n callUserCallback(() => {\n getWasmTableEntry(onerror2)(userdata);\n });\n }\n }\n };\n _emscripten_async_wget_data.sig = "vpppp";\n var _emscripten_async_wget2 = function(url2, file, request, param, userdata, onload2, onerror2, onprogress) {\n url2 >>>= 0;\n file >>>= 0;\n request >>>= 0;\n param >>>= 0;\n userdata >>>= 0;\n onload2 >>>= 0;\n onerror2 >>>= 0;\n onprogress >>>= 0;\n runtimeKeepalivePush();\n var _url = UTF8ToString(url2);\n var _file = UTF8ToString(file);\n _file = PATH_FS.resolve(_file);\n var _request = UTF8ToString(request);\n var _param = UTF8ToString(param);\n var index = _file.lastIndexOf("/");\n var http = new XMLHttpRequest();\n http.open(_request, _url, true);\n http.responseType = "arraybuffer";\n var handle2 = wget.getNextWgetRequestHandle();\n var destinationDirectory = PATH.dirname(_file);\n http.onload = (e) => {\n runtimeKeepalivePop();\n if (http.status >= 200 && http.status < 300) {\n try {\n FS.unlink(_file);\n } catch (e2) {\n }\n FS.mkdirTree(destinationDirectory);\n FS.createDataFile(_file.slice(0, index), _file.slice(index + 1), new Uint8Array(http.response), true, true, false);\n if (onload2) {\n var sp = stackSave();\n getWasmTableEntry(onload2)(handle2, userdata, stringToUTF8OnStack(_file));\n stackRestore(sp);\n }\n } else {\n if (onerror2) getWasmTableEntry(onerror2)(handle2, userdata, http.status);\n }\n delete wget.wgetRequests[handle2];\n };\n http.onerror = (e) => {\n runtimeKeepalivePop();\n if (onerror2) getWasmTableEntry(onerror2)(handle2, userdata, http.status);\n delete wget.wgetRequests[handle2];\n };\n http.onprogress = (e) => {\n if (e.lengthComputable || e.lengthComputable === void 0 && e.total != 0) {\n var percentComplete = e.loaded / e.total * 100;\n if (onprogress) getWasmTableEntry(onprogress)(handle2, userdata, percentComplete);\n }\n };\n http.onabort = (e) => {\n runtimeKeepalivePop();\n delete wget.wgetRequests[handle2];\n };\n if (_request == "POST") {\n http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");\n http.send(_param);\n } else {\n http.send(null);\n }\n wget.wgetRequests[handle2] = http;\n return handle2;\n };\n _emscripten_async_wget2.sig = "ipppppppp";\n function _emscripten_async_wget2_data(url2, request, param, userdata, free, onload2, onerror2, onprogress) {\n url2 >>>= 0;\n request >>>= 0;\n param >>>= 0;\n userdata >>>= 0;\n onload2 >>>= 0;\n onerror2 >>>= 0;\n onprogress >>>= 0;\n var _url = UTF8ToString(url2);\n var _request = UTF8ToString(request);\n var _param = UTF8ToString(param);\n var http = new XMLHttpRequest();\n http.open(_request, _url, true);\n http.responseType = "arraybuffer";\n var handle2 = wget.getNextWgetRequestHandle();\n function onerrorjs() {\n if (onerror2) {\n var sp = stackSave();\n var statusText = 0;\n if (http.statusText) {\n statusText = stringToUTF8OnStack(http.statusText);\n }\n getWasmTableEntry(onerror2)(handle2, userdata, http.status, statusText);\n stackRestore(sp);\n }\n }\n http.onload = (e) => {\n if (http.status >= 200 && http.status < 300 || http.status === 0 && _url.slice(0, 4).toLowerCase() != "http") {\n var byteArray = new Uint8Array(http.response);\n var buffer = _malloc(byteArray.length);\n HEAPU8.set(byteArray, buffer >>> 0);\n if (onload2) getWasmTableEntry(onload2)(handle2, userdata, buffer, byteArray.length);\n if (free) _free(buffer);\n } else {\n onerrorjs();\n }\n delete wget.wgetRequests[handle2];\n };\n http.onerror = (e) => {\n onerrorjs();\n delete wget.wgetRequests[handle2];\n };\n http.onprogress = (e) => {\n if (onprogress) getWasmTableEntry(onprogress)(handle2, userdata, e.loaded, e.lengthComputable || e.lengthComputable === void 0 ? e.total : 0);\n };\n http.onabort = (e) => {\n delete wget.wgetRequests[handle2];\n };\n if (_request == "POST") {\n http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");\n http.send(_param);\n } else {\n http.send(null);\n }\n wget.wgetRequests[handle2] = http;\n return handle2;\n }\n _emscripten_async_wget2_data.sig = "ippppippp";\n var _emscripten_async_wget2_abort = (handle2) => {\n var http = wget.wgetRequests[handle2];\n http?.abort();\n };\n _emscripten_async_wget2_abort.sig = "vi";\n function ___asctime_r(tmPtr, buf) {\n tmPtr >>>= 0;\n buf >>>= 0;\n var date = { tm_sec: HEAP32[tmPtr >>> 2 >>> 0], tm_min: HEAP32[tmPtr + 4 >>> 2 >>> 0], tm_hour: HEAP32[tmPtr + 8 >>> 2 >>> 0], tm_mday: HEAP32[tmPtr + 12 >>> 2 >>> 0], tm_mon: HEAP32[tmPtr + 16 >>> 2 >>> 0], tm_year: HEAP32[tmPtr + 20 >>> 2 >>> 0], tm_wday: HEAP32[tmPtr + 24 >>> 2 >>> 0] };\n var days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];\n var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];\n var s2 = days[date.tm_wday] + " " + months[date.tm_mon] + (date.tm_mday < 10 ? " " : " ") + date.tm_mday + (date.tm_hour < 10 ? " 0" : " ") + date.tm_hour + (date.tm_min < 10 ? ":0" : ":") + date.tm_min + (date.tm_sec < 10 ? ":0" : ":") + date.tm_sec + " " + (1900 + date.tm_year) + "\\n";\n stringToUTF8(s2, buf, 26);\n return buf;\n }\n ___asctime_r.sig = "ppp";\n var MONTH_DAYS_REGULAR = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n var MONTH_DAYS_LEAP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n var arraySum = (array, index) => {\n var sum = 0;\n for (var i2 = 0; i2 <= index; sum += array[i2++]) {\n }\n return sum;\n };\n var addDays = (date, days) => {\n var newDate = new Date(date.getTime());\n while (days > 0) {\n var leap = isLeapYear(newDate.getFullYear());\n var currentMonth = newDate.getMonth();\n var daysInCurrentMonth = (leap ? MONTH_DAYS_LEAP : MONTH_DAYS_REGULAR)[currentMonth];\n if (days > daysInCurrentMonth - newDate.getDate()) {\n days -= daysInCurrentMonth - newDate.getDate() + 1;\n newDate.setDate(1);\n if (currentMonth < 11) {\n newDate.setMonth(currentMonth + 1);\n } else {\n newDate.setMonth(0);\n newDate.setFullYear(newDate.getFullYear() + 1);\n }\n } else {\n newDate.setDate(newDate.getDate() + days);\n return newDate;\n }\n }\n return newDate;\n };\n function _strptime(buf, format, tm) {\n buf >>>= 0;\n format >>>= 0;\n tm >>>= 0;\n var pattern = UTF8ToString(format);\n var SPECIAL_CHARS = "\\\\!@#$^&*()+=-[]/{}|:<>?,.";\n for (var i2 = 0, ii = SPECIAL_CHARS.length; i2 < ii; ++i2) {\n pattern = pattern.replace(new RegExp("\\\\" + SPECIAL_CHARS[i2], "g"), "\\\\" + SPECIAL_CHARS[i2]);\n }\n var EQUIVALENT_MATCHERS = { A: "%a", B: "%b", c: "%a %b %d %H:%M:%S %Y", D: "%m\\\\/%d\\\\/%y", e: "%d", F: "%Y-%m-%d", h: "%b", R: "%H\\\\:%M", r: "%I\\\\:%M\\\\:%S\\\\s%p", T: "%H\\\\:%M\\\\:%S", x: "%m\\\\/%d\\\\/(?:%y|%Y)", X: "%H\\\\:%M\\\\:%S" };\n var DATE_PATTERNS = { a: "(?:Sun(?:day)?)|(?:Mon(?:day)?)|(?:Tue(?:sday)?)|(?:Wed(?:nesday)?)|(?:Thu(?:rsday)?)|(?:Fri(?:day)?)|(?:Sat(?:urday)?)", b: "(?:Jan(?:uary)?)|(?:Feb(?:ruary)?)|(?:Mar(?:ch)?)|(?:Apr(?:il)?)|May|(?:Jun(?:e)?)|(?:Jul(?:y)?)|(?:Aug(?:ust)?)|(?:Sep(?:tember)?)|(?:Oct(?:ober)?)|(?:Nov(?:ember)?)|(?:Dec(?:ember)?)", C: "\\\\d\\\\d", d: "0[1-9]|[1-9](?!\\\\d)|1\\\\d|2\\\\d|30|31", H: "\\\\d(?!\\\\d)|[0,1]\\\\d|20|21|22|23", I: "\\\\d(?!\\\\d)|0\\\\d|10|11|12", j: "00[1-9]|0?[1-9](?!\\\\d)|0?[1-9]\\\\d(?!\\\\d)|[1,2]\\\\d\\\\d|3[0-6]\\\\d", m: "0[1-9]|[1-9](?!\\\\d)|10|11|12", M: "0\\\\d|\\\\d(?!\\\\d)|[1-5]\\\\d", n: " ", p: "AM|am|PM|pm|A\\\\.M\\\\.|a\\\\.m\\\\.|P\\\\.M\\\\.|p\\\\.m\\\\.", S: "0\\\\d|\\\\d(?!\\\\d)|[1-5]\\\\d|60", U: "0\\\\d|\\\\d(?!\\\\d)|[1-4]\\\\d|50|51|52|53", W: "0\\\\d|\\\\d(?!\\\\d)|[1-4]\\\\d|50|51|52|53", w: "[0-6]", y: "\\\\d\\\\d", Y: "\\\\d\\\\d\\\\d\\\\d", t: " ", z: "Z|(?:[\\\\+\\\\-]\\\\d\\\\d:?(?:\\\\d\\\\d)?)" };\n var MONTH_NUMBERS = { JAN: 0, FEB: 1, MAR: 2, APR: 3, MAY: 4, JUN: 5, JUL: 6, AUG: 7, SEP: 8, OCT: 9, NOV: 10, DEC: 11 };\n var DAY_NUMBERS_SUN_FIRST = { SUN: 0, MON: 1, TUE: 2, WED: 3, THU: 4, FRI: 5, SAT: 6 };\n var DAY_NUMBERS_MON_FIRST = { MON: 0, TUE: 1, WED: 2, THU: 3, FRI: 4, SAT: 5, SUN: 6 };\n var capture = [];\n var pattern_out = pattern.replace(/%(.)/g, (m, c) => EQUIVALENT_MATCHERS[c] || m).replace(/%(.)/g, (_2, c) => {\n let pat = DATE_PATTERNS[c];\n if (pat) {\n capture.push(c);\n return `(${pat})`;\n } else {\n return c;\n }\n }).replace(/\\s+/g, "\\\\s*");\n var matches = new RegExp("^" + pattern_out, "i").exec(UTF8ToString(buf));\n function initDate() {\n function fixup(value3, min, max) {\n return typeof value3 != "number" || isNaN(value3) ? min : value3 >= min ? value3 <= max ? value3 : max : min;\n }\n return { year: fixup(HEAP32[tm + 20 >>> 2 >>> 0] + 1900, 1970, 9999), month: fixup(HEAP32[tm + 16 >>> 2 >>> 0], 0, 11), day: fixup(HEAP32[tm + 12 >>> 2 >>> 0], 1, 31), hour: fixup(HEAP32[tm + 8 >>> 2 >>> 0], 0, 23), min: fixup(HEAP32[tm + 4 >>> 2 >>> 0], 0, 59), sec: fixup(HEAP32[tm >>> 2 >>> 0], 0, 59), gmtoff: 0 };\n }\n if (matches) {\n var date = initDate();\n var value2;\n var getMatch = (symbol) => {\n var pos = capture.indexOf(symbol);\n if (pos >= 0) {\n return matches[pos + 1];\n }\n return;\n };\n if (value2 = getMatch("S")) {\n date.sec = Number(value2);\n }\n if (value2 = getMatch("M")) {\n date.min = Number(value2);\n }\n if (value2 = getMatch("H")) {\n date.hour = Number(value2);\n } else if (value2 = getMatch("I")) {\n var hour = Number(value2);\n if (value2 = getMatch("p")) {\n hour += value2.toUpperCase()[0] === "P" ? 12 : 0;\n }\n date.hour = hour;\n }\n if (value2 = getMatch("Y")) {\n date.year = Number(value2);\n } else if (value2 = getMatch("y")) {\n var year = Number(value2);\n if (value2 = getMatch("C")) {\n year += Number(value2) * 100;\n } else {\n year += year < 69 ? 2e3 : 1900;\n }\n date.year = year;\n }\n if (value2 = getMatch("m")) {\n date.month = Number(value2) - 1;\n } else if (value2 = getMatch("b")) {\n date.month = MONTH_NUMBERS[value2.substring(0, 3).toUpperCase()] || 0;\n }\n if (value2 = getMatch("d")) {\n date.day = Number(value2);\n } else if (value2 = getMatch("j")) {\n var day = Number(value2);\n var leapYear = isLeapYear(date.year);\n for (var month = 0; month < 12; ++month) {\n var daysUntilMonth = arraySum(leapYear ? MONTH_DAYS_LEAP : MONTH_DAYS_REGULAR, month - 1);\n if (day <= daysUntilMonth + (leapYear ? MONTH_DAYS_LEAP : MONTH_DAYS_REGULAR)[month]) {\n date.day = day - daysUntilMonth;\n }\n }\n } else if (value2 = getMatch("a")) {\n var weekDay = value2.substring(0, 3).toUpperCase();\n if (value2 = getMatch("U")) {\n var weekDayNumber = DAY_NUMBERS_SUN_FIRST[weekDay];\n var weekNumber = Number(value2);\n var janFirst = new Date(date.year, 0, 1);\n var endDate;\n if (janFirst.getDay() === 0) {\n endDate = addDays(janFirst, weekDayNumber + 7 * (weekNumber - 1));\n } else {\n endDate = addDays(janFirst, 7 - janFirst.getDay() + weekDayNumber + 7 * (weekNumber - 1));\n }\n date.day = endDate.getDate();\n date.month = endDate.getMonth();\n } else if (value2 = getMatch("W")) {\n var weekDayNumber = DAY_NUMBERS_MON_FIRST[weekDay];\n var weekNumber = Number(value2);\n var janFirst = new Date(date.year, 0, 1);\n var endDate;\n if (janFirst.getDay() === 1) {\n endDate = addDays(janFirst, weekDayNumber + 7 * (weekNumber - 1));\n } else {\n endDate = addDays(janFirst, 7 - janFirst.getDay() + 1 + weekDayNumber + 7 * (weekNumber - 1));\n }\n date.day = endDate.getDate();\n date.month = endDate.getMonth();\n }\n }\n if (value2 = getMatch("z")) {\n if (value2.toLowerCase() === "z") {\n date.gmtoff = 0;\n } else {\n var match = value2.match(/^((?:\\-|\\+)\\d\\d):?(\\d\\d)?/);\n date.gmtoff = match[1] * 3600;\n if (match[2]) {\n date.gmtoff += date.gmtoff > 0 ? match[2] * 60 : -match[2] * 60;\n }\n }\n }\n var fullDate = new Date(date.year, date.month, date.day, date.hour, date.min, date.sec, 0);\n HEAP32[tm >>> 2 >>> 0] = fullDate.getSeconds();\n HEAP32[tm + 4 >>> 2 >>> 0] = fullDate.getMinutes();\n HEAP32[tm + 8 >>> 2 >>> 0] = fullDate.getHours();\n HEAP32[tm + 12 >>> 2 >>> 0] = fullDate.getDate();\n HEAP32[tm + 16 >>> 2 >>> 0] = fullDate.getMonth();\n HEAP32[tm + 20 >>> 2 >>> 0] = fullDate.getFullYear() - 1900;\n HEAP32[tm + 24 >>> 2 >>> 0] = fullDate.getDay();\n HEAP32[tm + 28 >>> 2 >>> 0] = arraySum(isLeapYear(fullDate.getFullYear()) ? MONTH_DAYS_LEAP : MONTH_DAYS_REGULAR, fullDate.getMonth() - 1) + fullDate.getDate() - 1;\n HEAP32[tm + 32 >>> 2 >>> 0] = 0;\n HEAP32[tm + 36 >>> 2 >>> 0] = date.gmtoff;\n return buf + lengthBytesUTF8(matches[0]);\n }\n return 0;\n }\n _strptime.sig = "pppp";\n function _strptime_l(buf, format, tm, locale) {\n buf >>>= 0;\n format >>>= 0;\n tm >>>= 0;\n locale >>>= 0;\n return _strptime(buf, format, tm);\n }\n _strptime_l.sig = "ppppp";\n function __dlsym_catchup_js(handle2, symbolIndex) {\n handle2 >>>= 0;\n var lib = LDSO.loadedLibsByHandle[handle2];\n var symDict = lib.exports;\n var symName = Object.keys(symDict)[symbolIndex];\n var sym = symDict[symName];\n var result = addFunction(sym, sym.sig);\n return result;\n }\n __dlsym_catchup_js.sig = "ppi";\n var FS_readFile = (...args2) => FS.readFile(...args2);\n var FS_root = (...args2) => FS.root(...args2);\n var FS_mounts = (...args2) => FS.mounts(...args2);\n var FS_devices = (...args2) => FS.devices(...args2);\n var FS_streams = (...args2) => FS.streams(...args2);\n var FS_nextInode = (...args2) => FS.nextInode(...args2);\n var FS_nameTable = (...args2) => FS.nameTable(...args2);\n var FS_currentPath = (...args2) => FS.currentPath(...args2);\n var FS_initialized = (...args2) => FS.initialized(...args2);\n var FS_ignorePermissions = (...args2) => FS.ignorePermissions(...args2);\n var FS_trackingDelegate = (...args2) => FS.trackingDelegate(...args2);\n var FS_filesystems = (...args2) => FS.filesystems(...args2);\n var FS_syncFSRequests = (...args2) => FS.syncFSRequests(...args2);\n var FS_lookupPath = (...args2) => FS.lookupPath(...args2);\n var FS_getPath = (...args2) => FS.getPath(...args2);\n var FS_hashName = (...args2) => FS.hashName(...args2);\n var FS_hashAddNode = (...args2) => FS.hashAddNode(...args2);\n var FS_hashRemoveNode = (...args2) => FS.hashRemoveNode(...args2);\n var FS_lookupNode = (...args2) => FS.lookupNode(...args2);\n var FS_createNode = (...args2) => FS.createNode(...args2);\n var FS_destroyNode = (...args2) => FS.destroyNode(...args2);\n var FS_isRoot = (...args2) => FS.isRoot(...args2);\n var FS_isMountpoint = (...args2) => FS.isMountpoint(...args2);\n var FS_isFile = (...args2) => FS.isFile(...args2);\n var FS_isDir = (...args2) => FS.isDir(...args2);\n var FS_isLink = (...args2) => FS.isLink(...args2);\n var FS_isChrdev = (...args2) => FS.isChrdev(...args2);\n var FS_isBlkdev = (...args2) => FS.isBlkdev(...args2);\n var FS_isFIFO = (...args2) => FS.isFIFO(...args2);\n var FS_isSocket = (...args2) => FS.isSocket(...args2);\n var FS_flagsToPermissionString = (...args2) => FS.flagsToPermissionString(...args2);\n var FS_nodePermissions = (...args2) => FS.nodePermissions(...args2);\n var FS_mayLookup = (...args2) => FS.mayLookup(...args2);\n var FS_mayCreate = (...args2) => FS.mayCreate(...args2);\n var FS_mayDelete = (...args2) => FS.mayDelete(...args2);\n var FS_mayOpen = (...args2) => FS.mayOpen(...args2);\n var FS_checkOpExists = (...args2) => FS.checkOpExists(...args2);\n var FS_nextfd = (...args2) => FS.nextfd(...args2);\n var FS_getStreamChecked = (...args2) => FS.getStreamChecked(...args2);\n var FS_getStream = (...args2) => FS.getStream(...args2);\n var FS_createStream = (...args2) => FS.createStream(...args2);\n var FS_closeStream = (...args2) => FS.closeStream(...args2);\n var FS_dupStream = (...args2) => FS.dupStream(...args2);\n var FS_doSetAttr = (...args2) => FS.doSetAttr(...args2);\n var FS_chrdev_stream_ops = (...args2) => FS.chrdev_stream_ops(...args2);\n var FS_major = (...args2) => FS.major(...args2);\n var FS_minor = (...args2) => FS.minor(...args2);\n var FS_makedev = (...args2) => FS.makedev(...args2);\n var FS_registerDevice = (...args2) => FS.registerDevice(...args2);\n var FS_getDevice = (...args2) => FS.getDevice(...args2);\n var FS_getMounts = (...args2) => FS.getMounts(...args2);\n var FS_syncfs = (...args2) => FS.syncfs(...args2);\n var FS_mount = (...args2) => FS.mount(...args2);\n var FS_unmount = (...args2) => FS.unmount(...args2);\n var FS_lookup = (...args2) => FS.lookup(...args2);\n var FS_mknod = (...args2) => FS.mknod(...args2);\n var FS_statfs = (...args2) => FS.statfs(...args2);\n var FS_statfsStream = (...args2) => FS.statfsStream(...args2);\n var FS_statfsNode = (...args2) => FS.statfsNode(...args2);\n var FS_create = (...args2) => FS.create(...args2);\n var FS_mkdir = (...args2) => FS.mkdir(...args2);\n var FS_mkdev = (...args2) => FS.mkdev(...args2);\n var FS_symlink = (...args2) => FS.symlink(...args2);\n var FS_rename = (...args2) => FS.rename(...args2);\n var FS_rmdir = (...args2) => FS.rmdir(...args2);\n var FS_readdir = (...args2) => FS.readdir(...args2);\n var FS_readlink = (...args2) => FS.readlink(...args2);\n var FS_stat = (...args2) => FS.stat(...args2);\n var FS_fstat = (...args2) => FS.fstat(...args2);\n var FS_lstat = (...args2) => FS.lstat(...args2);\n var FS_doChmod = (...args2) => FS.doChmod(...args2);\n var FS_chmod = (...args2) => FS.chmod(...args2);\n var FS_lchmod = (...args2) => FS.lchmod(...args2);\n var FS_fchmod = (...args2) => FS.fchmod(...args2);\n var FS_doChown = (...args2) => FS.doChown(...args2);\n var FS_chown = (...args2) => FS.chown(...args2);\n var FS_lchown = (...args2) => FS.lchown(...args2);\n var FS_fchown = (...args2) => FS.fchown(...args2);\n var FS_doTruncate = (...args2) => FS.doTruncate(...args2);\n var FS_truncate = (...args2) => FS.truncate(...args2);\n var FS_ftruncate = (...args2) => FS.ftruncate(...args2);\n var FS_utime = (...args2) => FS.utime(...args2);\n var FS_open = (...args2) => FS.open(...args2);\n var FS_close = (...args2) => FS.close(...args2);\n var FS_isClosed = (...args2) => FS.isClosed(...args2);\n var FS_llseek = (...args2) => FS.llseek(...args2);\n var FS_read = (...args2) => FS.read(...args2);\n var FS_write = (...args2) => FS.write(...args2);\n var FS_mmap = (...args2) => FS.mmap(...args2);\n var FS_msync = (...args2) => FS.msync(...args2);\n var FS_ioctl = (...args2) => FS.ioctl(...args2);\n var FS_writeFile = (...args2) => FS.writeFile(...args2);\n var FS_cwd = (...args2) => FS.cwd(...args2);\n var FS_chdir = (...args2) => FS.chdir(...args2);\n var FS_createDefaultDirectories = (...args2) => FS.createDefaultDirectories(...args2);\n var FS_createDefaultDevices = (...args2) => FS.createDefaultDevices(...args2);\n var FS_createSpecialDirectories = (...args2) => FS.createSpecialDirectories(...args2);\n var FS_createStandardStreams = (...args2) => FS.createStandardStreams(...args2);\n var FS_staticInit = (...args2) => FS.staticInit(...args2);\n var FS_init = (...args2) => FS.init(...args2);\n var FS_quit = (...args2) => FS.quit(...args2);\n var FS_findObject = (...args2) => FS.findObject(...args2);\n var FS_analyzePath = (...args2) => FS.analyzePath(...args2);\n var FS_createFile = (...args2) => FS.createFile(...args2);\n var FS_forceLoadFile = (...args2) => FS.forceLoadFile(...args2);\n var _setNetworkCallback = (event, userData, callback) => {\n function _callback(data2) {\n callUserCallback(() => {\n if (event === "error") {\n withStackSave(() => {\n var msg = stringToUTF8OnStack(data2[2]);\n getWasmTableEntry(callback)(data2[0], data2[1], msg, userData);\n });\n } else {\n getWasmTableEntry(callback)(data2, userData);\n }\n });\n }\n runtimeKeepalivePush();\n SOCKFS.on(event, callback ? _callback : null);\n };\n function _emscripten_set_socket_error_callback(userData, callback) {\n userData >>>= 0;\n callback >>>= 0;\n return _setNetworkCallback("error", userData, callback);\n }\n _emscripten_set_socket_error_callback.sig = "vpp";\n function _emscripten_set_socket_open_callback(userData, callback) {\n userData >>>= 0;\n callback >>>= 0;\n return _setNetworkCallback("open", userData, callback);\n }\n _emscripten_set_socket_open_callback.sig = "vpp";\n function _emscripten_set_socket_listen_callback(userData, callback) {\n userData >>>= 0;\n callback >>>= 0;\n return _setNetworkCallback("listen", userData, callback);\n }\n _emscripten_set_socket_listen_callback.sig = "vpp";\n function _emscripten_set_socket_connection_callback(userData, callback) {\n userData >>>= 0;\n callback >>>= 0;\n return _setNetworkCallback("connection", userData, callback);\n }\n _emscripten_set_socket_connection_callback.sig = "vpp";\n function _emscripten_set_socket_message_callback(userData, callback) {\n userData >>>= 0;\n callback >>>= 0;\n return _setNetworkCallback("message", userData, callback);\n }\n _emscripten_set_socket_message_callback.sig = "vpp";\n function _emscripten_set_socket_close_callback(userData, callback) {\n userData >>>= 0;\n callback >>>= 0;\n return _setNetworkCallback("close", userData, callback);\n }\n _emscripten_set_socket_close_callback.sig = "vpp";\n function _emscripten_webgl_enable_ANGLE_instanced_arrays(ctx) {\n ctx >>>= 0;\n return webgl_enable_ANGLE_instanced_arrays(GL.contexts[ctx].GLctx);\n }\n _emscripten_webgl_enable_ANGLE_instanced_arrays.sig = "ip";\n function _emscripten_webgl_enable_OES_vertex_array_object(ctx) {\n ctx >>>= 0;\n return webgl_enable_OES_vertex_array_object(GL.contexts[ctx].GLctx);\n }\n _emscripten_webgl_enable_OES_vertex_array_object.sig = "ip";\n function _emscripten_webgl_enable_WEBGL_draw_buffers(ctx) {\n ctx >>>= 0;\n return webgl_enable_WEBGL_draw_buffers(GL.contexts[ctx].GLctx);\n }\n _emscripten_webgl_enable_WEBGL_draw_buffers.sig = "ip";\n function _emscripten_webgl_enable_WEBGL_multi_draw(ctx) {\n ctx >>>= 0;\n return webgl_enable_WEBGL_multi_draw(GL.contexts[ctx].GLctx);\n }\n _emscripten_webgl_enable_WEBGL_multi_draw.sig = "ip";\n function _emscripten_webgl_enable_EXT_polygon_offset_clamp(ctx) {\n ctx >>>= 0;\n return webgl_enable_EXT_polygon_offset_clamp(GL.contexts[ctx].GLctx);\n }\n _emscripten_webgl_enable_EXT_polygon_offset_clamp.sig = "ip";\n function _emscripten_webgl_enable_EXT_clip_control(ctx) {\n ctx >>>= 0;\n return webgl_enable_EXT_clip_control(GL.contexts[ctx].GLctx);\n }\n _emscripten_webgl_enable_EXT_clip_control.sig = "ip";\n function _emscripten_webgl_enable_WEBGL_polygon_mode(ctx) {\n ctx >>>= 0;\n return webgl_enable_WEBGL_polygon_mode(GL.contexts[ctx].GLctx);\n }\n _emscripten_webgl_enable_WEBGL_polygon_mode.sig = "ip";\n var _glPixelStorei = _emscripten_glPixelStorei;\n _glPixelStorei.sig = "vii";\n var _glGetString = _emscripten_glGetString;\n _glGetString.sig = "pi";\n var _glGetIntegerv = _emscripten_glGetIntegerv;\n _glGetIntegerv.sig = "vip";\n var _glGetFloatv = _emscripten_glGetFloatv;\n _glGetFloatv.sig = "vip";\n var _glGetBooleanv = _emscripten_glGetBooleanv;\n _glGetBooleanv.sig = "vip";\n var _glDeleteTextures = _emscripten_glDeleteTextures;\n _glDeleteTextures.sig = "vip";\n var _glCompressedTexImage2D = _emscripten_glCompressedTexImage2D;\n _glCompressedTexImage2D.sig = "viiiiiiip";\n var _glCompressedTexSubImage2D = _emscripten_glCompressedTexSubImage2D;\n _glCompressedTexSubImage2D.sig = "viiiiiiiip";\n var _glTexImage2D = _emscripten_glTexImage2D;\n _glTexImage2D.sig = "viiiiiiiip";\n var _glTexSubImage2D = _emscripten_glTexSubImage2D;\n _glTexSubImage2D.sig = "viiiiiiiip";\n var _glReadPixels = _emscripten_glReadPixels;\n _glReadPixels.sig = "viiiiiip";\n var _glBindTexture = _emscripten_glBindTexture;\n _glBindTexture.sig = "vii";\n var _glGetTexParameterfv = _emscripten_glGetTexParameterfv;\n _glGetTexParameterfv.sig = "viip";\n var _glGetTexParameteriv = _emscripten_glGetTexParameteriv;\n _glGetTexParameteriv.sig = "viip";\n var _glTexParameterfv = _emscripten_glTexParameterfv;\n _glTexParameterfv.sig = "viip";\n var _glTexParameteriv = _emscripten_glTexParameteriv;\n _glTexParameteriv.sig = "viip";\n var _glIsTexture = _emscripten_glIsTexture;\n _glIsTexture.sig = "ii";\n var _glGenBuffers = _emscripten_glGenBuffers;\n _glGenBuffers.sig = "vip";\n var _glGenTextures = _emscripten_glGenTextures;\n _glGenTextures.sig = "vip";\n var _glDeleteBuffers = _emscripten_glDeleteBuffers;\n _glDeleteBuffers.sig = "vip";\n var _glGetBufferParameteriv = _emscripten_glGetBufferParameteriv;\n _glGetBufferParameteriv.sig = "viip";\n var _glBufferData = _emscripten_glBufferData;\n _glBufferData.sig = "vippi";\n var _glBufferSubData = _emscripten_glBufferSubData;\n _glBufferSubData.sig = "vippp";\n var _glGenQueriesEXT = _emscripten_glGenQueriesEXT;\n var _glDeleteQueriesEXT = _emscripten_glDeleteQueriesEXT;\n var _glIsQueryEXT = _emscripten_glIsQueryEXT;\n var _glBeginQueryEXT = _emscripten_glBeginQueryEXT;\n var _glEndQueryEXT = _emscripten_glEndQueryEXT;\n var _glQueryCounterEXT = _emscripten_glQueryCounterEXT;\n var _glGetQueryivEXT = _emscripten_glGetQueryivEXT;\n var _glGetQueryObjectuivEXT = _emscripten_glGetQueryObjectuivEXT;\n var _glGetQueryObjectui64vEXT = _emscripten_glGetQueryObjectui64vEXT;\n var _glIsBuffer = _emscripten_glIsBuffer;\n _glIsBuffer.sig = "ii";\n var _glGenRenderbuffers = _emscripten_glGenRenderbuffers;\n _glGenRenderbuffers.sig = "vip";\n var _glDeleteRenderbuffers = _emscripten_glDeleteRenderbuffers;\n _glDeleteRenderbuffers.sig = "vip";\n var _glBindRenderbuffer = _emscripten_glBindRenderbuffer;\n _glBindRenderbuffer.sig = "vii";\n var _glGetRenderbufferParameteriv = _emscripten_glGetRenderbufferParameteriv;\n _glGetRenderbufferParameteriv.sig = "viip";\n var _glIsRenderbuffer = _emscripten_glIsRenderbuffer;\n _glIsRenderbuffer.sig = "ii";\n var _glGetUniformfv = _emscripten_glGetUniformfv;\n _glGetUniformfv.sig = "viip";\n var _glGetUniformiv = _emscripten_glGetUniformiv;\n _glGetUniformiv.sig = "viip";\n var _glGetUniformLocation = _emscripten_glGetUniformLocation;\n _glGetUniformLocation.sig = "iip";\n var _glGetVertexAttribfv = _emscripten_glGetVertexAttribfv;\n _glGetVertexAttribfv.sig = "viip";\n var _glGetVertexAttribiv = _emscripten_glGetVertexAttribiv;\n _glGetVertexAttribiv.sig = "viip";\n var _glGetVertexAttribPointerv = _emscripten_glGetVertexAttribPointerv;\n _glGetVertexAttribPointerv.sig = "viip";\n var _glUniform1f = _emscripten_glUniform1f;\n _glUniform1f.sig = "vif";\n var _glUniform2f = _emscripten_glUniform2f;\n _glUniform2f.sig = "viff";\n var _glUniform3f = _emscripten_glUniform3f;\n _glUniform3f.sig = "vifff";\n var _glUniform4f = _emscripten_glUniform4f;\n _glUniform4f.sig = "viffff";\n var _glUniform1i = _emscripten_glUniform1i;\n _glUniform1i.sig = "vii";\n var _glUniform2i = _emscripten_glUniform2i;\n _glUniform2i.sig = "viii";\n var _glUniform3i = _emscripten_glUniform3i;\n _glUniform3i.sig = "viiii";\n var _glUniform4i = _emscripten_glUniform4i;\n _glUniform4i.sig = "viiiii";\n var _glUniform1iv = _emscripten_glUniform1iv;\n _glUniform1iv.sig = "viip";\n var _glUniform2iv = _emscripten_glUniform2iv;\n _glUniform2iv.sig = "viip";\n var _glUniform3iv = _emscripten_glUniform3iv;\n _glUniform3iv.sig = "viip";\n var _glUniform4iv = _emscripten_glUniform4iv;\n _glUniform4iv.sig = "viip";\n var _glUniform1fv = _emscripten_glUniform1fv;\n _glUniform1fv.sig = "viip";\n var _glUniform2fv = _emscripten_glUniform2fv;\n _glUniform2fv.sig = "viip";\n var _glUniform3fv = _emscripten_glUniform3fv;\n _glUniform3fv.sig = "viip";\n var _glUniform4fv = _emscripten_glUniform4fv;\n _glUniform4fv.sig = "viip";\n var _glUniformMatrix2fv = _emscripten_glUniformMatrix2fv;\n _glUniformMatrix2fv.sig = "viiip";\n var _glUniformMatrix3fv = _emscripten_glUniformMatrix3fv;\n _glUniformMatrix3fv.sig = "viiip";\n var _glUniformMatrix4fv = _emscripten_glUniformMatrix4fv;\n _glUniformMatrix4fv.sig = "viiip";\n var _glBindBuffer = _emscripten_glBindBuffer;\n _glBindBuffer.sig = "vii";\n var _glVertexAttrib1fv = _emscripten_glVertexAttrib1fv;\n _glVertexAttrib1fv.sig = "vip";\n var _glVertexAttrib2fv = _emscripten_glVertexAttrib2fv;\n _glVertexAttrib2fv.sig = "vip";\n var _glVertexAttrib3fv = _emscripten_glVertexAttrib3fv;\n _glVertexAttrib3fv.sig = "vip";\n var _glVertexAttrib4fv = _emscripten_glVertexAttrib4fv;\n _glVertexAttrib4fv.sig = "vip";\n var _glGetAttribLocation = _emscripten_glGetAttribLocation;\n _glGetAttribLocation.sig = "iip";\n var _glGetActiveAttrib = _emscripten_glGetActiveAttrib;\n _glGetActiveAttrib.sig = "viiipppp";\n var _glGetActiveUniform = _emscripten_glGetActiveUniform;\n _glGetActiveUniform.sig = "viiipppp";\n var _glCreateShader = _emscripten_glCreateShader;\n _glCreateShader.sig = "ii";\n var _glDeleteShader = _emscripten_glDeleteShader;\n _glDeleteShader.sig = "vi";\n var _glGetAttachedShaders = _emscripten_glGetAttachedShaders;\n _glGetAttachedShaders.sig = "viipp";\n var _glShaderSource = _emscripten_glShaderSource;\n _glShaderSource.sig = "viipp";\n var _glGetShaderSource = _emscripten_glGetShaderSource;\n _glGetShaderSource.sig = "viipp";\n var _glCompileShader = _emscripten_glCompileShader;\n _glCompileShader.sig = "vi";\n var _glGetShaderInfoLog = _emscripten_glGetShaderInfoLog;\n _glGetShaderInfoLog.sig = "viipp";\n var _glGetShaderiv = _emscripten_glGetShaderiv;\n _glGetShaderiv.sig = "viip";\n var _glGetProgramiv = _emscripten_glGetProgramiv;\n _glGetProgramiv.sig = "viip";\n var _glIsShader = _emscripten_glIsShader;\n _glIsShader.sig = "ii";\n var _glCreateProgram = _emscripten_glCreateProgram;\n _glCreateProgram.sig = "i";\n var _glDeleteProgram = _emscripten_glDeleteProgram;\n _glDeleteProgram.sig = "vi";\n var _glAttachShader = _emscripten_glAttachShader;\n _glAttachShader.sig = "vii";\n var _glDetachShader = _emscripten_glDetachShader;\n _glDetachShader.sig = "vii";\n var _glGetShaderPrecisionFormat = _emscripten_glGetShaderPrecisionFormat;\n _glGetShaderPrecisionFormat.sig = "viipp";\n var _glLinkProgram = _emscripten_glLinkProgram;\n _glLinkProgram.sig = "vi";\n var _glGetProgramInfoLog = _emscripten_glGetProgramInfoLog;\n _glGetProgramInfoLog.sig = "viipp";\n var _glUseProgram = _emscripten_glUseProgram;\n _glUseProgram.sig = "vi";\n var _glValidateProgram = _emscripten_glValidateProgram;\n _glValidateProgram.sig = "vi";\n var _glIsProgram = _emscripten_glIsProgram;\n _glIsProgram.sig = "ii";\n var _glBindAttribLocation = _emscripten_glBindAttribLocation;\n _glBindAttribLocation.sig = "viip";\n var _glBindFramebuffer = _emscripten_glBindFramebuffer;\n _glBindFramebuffer.sig = "vii";\n var _glGenFramebuffers = _emscripten_glGenFramebuffers;\n _glGenFramebuffers.sig = "vip";\n var _glDeleteFramebuffers = _emscripten_glDeleteFramebuffers;\n _glDeleteFramebuffers.sig = "vip";\n var _glFramebufferRenderbuffer = _emscripten_glFramebufferRenderbuffer;\n _glFramebufferRenderbuffer.sig = "viiii";\n var _glFramebufferTexture2D = _emscripten_glFramebufferTexture2D;\n _glFramebufferTexture2D.sig = "viiiii";\n var _glGetFramebufferAttachmentParameteriv = _emscripten_glGetFramebufferAttachmentParameteriv;\n _glGetFramebufferAttachmentParameteriv.sig = "viiip";\n var _glIsFramebuffer = _emscripten_glIsFramebuffer;\n _glIsFramebuffer.sig = "ii";\n function _emscripten_glVertexPointer(size, type, stride, ptr2) {\n ptr2 >>>= 0;\n return abort("Legacy GL function (glVertexPointer) called. If you want legacy GL emulation, you need to compile with -sLEGACY_GL_EMULATION to enable legacy GL emulation.");\n }\n _emscripten_glVertexPointer.sig = "viiip";\n var _glVertexPointer = _emscripten_glVertexPointer;\n _glVertexPointer.sig = "viiip";\n var _emscripten_glMatrixMode = () => abort("Legacy GL function (glMatrixMode) called. If you want legacy GL emulation, you need to compile with -sLEGACY_GL_EMULATION to enable legacy GL emulation.");\n _emscripten_glMatrixMode.sig = "vi";\n var _glMatrixMode = _emscripten_glMatrixMode;\n _glMatrixMode.sig = "vi";\n var _emscripten_glBegin = () => abort("Legacy GL function (glBegin) called. If you want legacy GL emulation, you need to compile with -sLEGACY_GL_EMULATION to enable legacy GL emulation.");\n _emscripten_glBegin.sig = "vi";\n var _glBegin = _emscripten_glBegin;\n _glBegin.sig = "vi";\n var _emscripten_glLoadIdentity = () => abort("Legacy GL function (glLoadIdentity) called. If you want legacy GL emulation, you need to compile with -sLEGACY_GL_EMULATION to enable legacy GL emulation.");\n _emscripten_glLoadIdentity.sig = "v";\n var _glLoadIdentity = _emscripten_glLoadIdentity;\n _glLoadIdentity.sig = "v";\n var _glGenVertexArraysOES = _emscripten_glGenVertexArraysOES;\n _glGenVertexArraysOES.sig = "vip";\n var _glDeleteVertexArraysOES = _emscripten_glDeleteVertexArraysOES;\n _glDeleteVertexArraysOES.sig = "vip";\n var _glBindVertexArrayOES = _emscripten_glBindVertexArrayOES;\n _glBindVertexArrayOES.sig = "vi";\n var _glIsVertexArrayOES = _emscripten_glIsVertexArrayOES;\n _glIsVertexArrayOES.sig = "ii";\n var _glVertexAttribPointer = _emscripten_glVertexAttribPointer;\n _glVertexAttribPointer.sig = "viiiiip";\n var _glEnableVertexAttribArray = _emscripten_glEnableVertexAttribArray;\n _glEnableVertexAttribArray.sig = "vi";\n var _glDisableVertexAttribArray = _emscripten_glDisableVertexAttribArray;\n _glDisableVertexAttribArray.sig = "vi";\n var _glDrawArrays = _emscripten_glDrawArrays;\n _glDrawArrays.sig = "viii";\n var _glShaderBinary = _emscripten_glShaderBinary;\n _glShaderBinary.sig = "vipipi";\n var _glReleaseShaderCompiler = _emscripten_glReleaseShaderCompiler;\n _glReleaseShaderCompiler.sig = "v";\n var _glGetError = _emscripten_glGetError;\n _glGetError.sig = "i";\n var _glVertexAttribDivisorNV = _emscripten_glVertexAttribDivisorNV;\n var _glDrawArraysInstancedNV = _emscripten_glDrawArraysInstancedNV;\n var _glDrawElementsInstancedNV = _emscripten_glDrawElementsInstancedNV;\n var _glVertexAttribDivisorEXT = _emscripten_glVertexAttribDivisorEXT;\n var _glDrawArraysInstancedEXT = _emscripten_glDrawArraysInstancedEXT;\n var _glDrawElementsInstancedEXT = _emscripten_glDrawElementsInstancedEXT;\n var _glVertexAttribDivisorARB = _emscripten_glVertexAttribDivisorARB;\n var _glDrawArraysInstancedARB = _emscripten_glDrawArraysInstancedARB;\n var _glDrawElementsInstancedARB = _emscripten_glDrawElementsInstancedARB;\n var _glVertexAttribDivisorANGLE = _emscripten_glVertexAttribDivisorANGLE;\n var _glDrawArraysInstancedANGLE = _emscripten_glDrawArraysInstancedANGLE;\n var _glDrawElementsInstancedANGLE = _emscripten_glDrawElementsInstancedANGLE;\n var _glDrawBuffersEXT = _emscripten_glDrawBuffersEXT;\n var _glDrawBuffersWEBGL = _emscripten_glDrawBuffersWEBGL;\n var _glColorMask = _emscripten_glColorMask;\n _glColorMask.sig = "viiii";\n var _glDepthMask = _emscripten_glDepthMask;\n _glDepthMask.sig = "vi";\n var _glSampleCoverage = _emscripten_glSampleCoverage;\n _glSampleCoverage.sig = "vfi";\n function _emscripten_glMultiDrawArraysWEBGL(mode, firsts, counts, drawcount) {\n firsts >>>= 0;\n counts >>>= 0;\n GLctx.multiDrawWebgl["multiDrawArraysWEBGL"](mode, HEAP32, firsts >>> 2, HEAP32, counts >>> 2, drawcount);\n }\n _emscripten_glMultiDrawArraysWEBGL.sig = "vippi";\n var _glMultiDrawArraysWEBGL = _emscripten_glMultiDrawArraysWEBGL;\n var _emscripten_glMultiDrawArrays = _glMultiDrawArraysWEBGL;\n _emscripten_glMultiDrawArrays.sig = "vippi";\n var _glMultiDrawArrays = _emscripten_glMultiDrawArrays;\n _glMultiDrawArrays.sig = "vippi";\n var _emscripten_glMultiDrawArraysANGLE = _glMultiDrawArraysWEBGL;\n var _glMultiDrawArraysANGLE = _emscripten_glMultiDrawArraysANGLE;\n function _emscripten_glMultiDrawArraysInstancedWEBGL(mode, firsts, counts, instanceCounts, drawcount) {\n firsts >>>= 0;\n counts >>>= 0;\n instanceCounts >>>= 0;\n GLctx.multiDrawWebgl["multiDrawArraysInstancedWEBGL"](mode, HEAP32, firsts >>> 2, HEAP32, counts >>> 2, HEAP32, instanceCounts >>> 2, drawcount);\n }\n _emscripten_glMultiDrawArraysInstancedWEBGL.sig = "vipppi";\n var _glMultiDrawArraysInstancedWEBGL = _emscripten_glMultiDrawArraysInstancedWEBGL;\n var _emscripten_glMultiDrawArraysInstancedANGLE = _glMultiDrawArraysInstancedWEBGL;\n var _glMultiDrawArraysInstancedANGLE = _emscripten_glMultiDrawArraysInstancedANGLE;\n function _emscripten_glMultiDrawElementsWEBGL(mode, counts, type, offsets, drawcount) {\n counts >>>= 0;\n offsets >>>= 0;\n GLctx.multiDrawWebgl["multiDrawElementsWEBGL"](mode, HEAP32, counts >>> 2, type, HEAP32, offsets >>> 2, drawcount);\n }\n _emscripten_glMultiDrawElementsWEBGL.sig = "vipipi";\n var _glMultiDrawElementsWEBGL = _emscripten_glMultiDrawElementsWEBGL;\n var _emscripten_glMultiDrawElements = _glMultiDrawElementsWEBGL;\n _emscripten_glMultiDrawElements.sig = "vipipi";\n var _glMultiDrawElements = _emscripten_glMultiDrawElements;\n _glMultiDrawElements.sig = "vipipi";\n var _emscripten_glMultiDrawElementsANGLE = _glMultiDrawElementsWEBGL;\n var _glMultiDrawElementsANGLE = _emscripten_glMultiDrawElementsANGLE;\n function _emscripten_glMultiDrawElementsInstancedWEBGL(mode, counts, type, offsets, instanceCounts, drawcount) {\n counts >>>= 0;\n offsets >>>= 0;\n instanceCounts >>>= 0;\n GLctx.multiDrawWebgl["multiDrawElementsInstancedWEBGL"](mode, HEAP32, counts >>> 2, type, HEAP32, offsets >>> 2, HEAP32, instanceCounts >>> 2, drawcount);\n }\n _emscripten_glMultiDrawElementsInstancedWEBGL.sig = "vipippi";\n var _glMultiDrawElementsInstancedWEBGL = _emscripten_glMultiDrawElementsInstancedWEBGL;\n var _emscripten_glMultiDrawElementsInstancedANGLE = _glMultiDrawElementsInstancedWEBGL;\n var _glMultiDrawElementsInstancedANGLE = _emscripten_glMultiDrawElementsInstancedANGLE;\n var _glPolygonOffsetClampEXT = _emscripten_glPolygonOffsetClampEXT;\n var _glClipControlEXT = _emscripten_glClipControlEXT;\n var _glPolygonModeWEBGL = _emscripten_glPolygonModeWEBGL;\n var _glFinish = _emscripten_glFinish;\n _glFinish.sig = "v";\n var _glFlush = _emscripten_glFlush;\n _glFlush.sig = "v";\n var _emscripten_glClearDepth = (x0) => GLctx.clearDepth(x0);\n _emscripten_glClearDepth.sig = "vd";\n var _glClearDepth = _emscripten_glClearDepth;\n _glClearDepth.sig = "vd";\n var _glClearDepthf = _emscripten_glClearDepthf;\n _glClearDepthf.sig = "vf";\n var _glDepthFunc = _emscripten_glDepthFunc;\n _glDepthFunc.sig = "vi";\n var _glEnable = _emscripten_glEnable;\n _glEnable.sig = "vi";\n var _glDisable = _emscripten_glDisable;\n _glDisable.sig = "vi";\n var _glFrontFace = _emscripten_glFrontFace;\n _glFrontFace.sig = "vi";\n var _glCullFace = _emscripten_glCullFace;\n _glCullFace.sig = "vi";\n var _glClear = _emscripten_glClear;\n _glClear.sig = "vi";\n var _glLineWidth = _emscripten_glLineWidth;\n _glLineWidth.sig = "vf";\n var _glClearStencil = _emscripten_glClearStencil;\n _glClearStencil.sig = "vi";\n var _glStencilMask = _emscripten_glStencilMask;\n _glStencilMask.sig = "vi";\n var _glCheckFramebufferStatus = _emscripten_glCheckFramebufferStatus;\n _glCheckFramebufferStatus.sig = "ii";\n var _glGenerateMipmap = _emscripten_glGenerateMipmap;\n _glGenerateMipmap.sig = "vi";\n var _glActiveTexture = _emscripten_glActiveTexture;\n _glActiveTexture.sig = "vi";\n var _glBlendEquation = _emscripten_glBlendEquation;\n _glBlendEquation.sig = "vi";\n var _glIsEnabled = _emscripten_glIsEnabled;\n _glIsEnabled.sig = "ii";\n var _glBlendFunc = _emscripten_glBlendFunc;\n _glBlendFunc.sig = "vii";\n var _glBlendEquationSeparate = _emscripten_glBlendEquationSeparate;\n _glBlendEquationSeparate.sig = "vii";\n var _emscripten_glDepthRange = (x0, x1) => GLctx.depthRange(x0, x1);\n _emscripten_glDepthRange.sig = "vdd";\n var _glDepthRange = _emscripten_glDepthRange;\n _glDepthRange.sig = "vdd";\n var _glDepthRangef = _emscripten_glDepthRangef;\n _glDepthRangef.sig = "vff";\n var _glStencilMaskSeparate = _emscripten_glStencilMaskSeparate;\n _glStencilMaskSeparate.sig = "vii";\n var _glHint = _emscripten_glHint;\n _glHint.sig = "vii";\n var _glPolygonOffset = _emscripten_glPolygonOffset;\n _glPolygonOffset.sig = "vff";\n var _glVertexAttrib1f = _emscripten_glVertexAttrib1f;\n _glVertexAttrib1f.sig = "vif";\n var _glTexParameteri = _emscripten_glTexParameteri;\n _glTexParameteri.sig = "viii";\n var _glTexParameterf = _emscripten_glTexParameterf;\n _glTexParameterf.sig = "viif";\n var _glVertexAttrib2f = _emscripten_glVertexAttrib2f;\n _glVertexAttrib2f.sig = "viff";\n var _glStencilFunc = _emscripten_glStencilFunc;\n _glStencilFunc.sig = "viii";\n var _glStencilOp = _emscripten_glStencilOp;\n _glStencilOp.sig = "viii";\n var _glViewport = _emscripten_glViewport;\n _glViewport.sig = "viiii";\n var _glClearColor = _emscripten_glClearColor;\n _glClearColor.sig = "vffff";\n var _glScissor = _emscripten_glScissor;\n _glScissor.sig = "viiii";\n var _glVertexAttrib3f = _emscripten_glVertexAttrib3f;\n _glVertexAttrib3f.sig = "vifff";\n var _glRenderbufferStorage = _emscripten_glRenderbufferStorage;\n _glRenderbufferStorage.sig = "viiii";\n var _glBlendFuncSeparate = _emscripten_glBlendFuncSeparate;\n _glBlendFuncSeparate.sig = "viiii";\n var _glBlendColor = _emscripten_glBlendColor;\n _glBlendColor.sig = "vffff";\n var _glStencilFuncSeparate = _emscripten_glStencilFuncSeparate;\n _glStencilFuncSeparate.sig = "viiii";\n var _glStencilOpSeparate = _emscripten_glStencilOpSeparate;\n _glStencilOpSeparate.sig = "viiii";\n var _glVertexAttrib4f = _emscripten_glVertexAttrib4f;\n _glVertexAttrib4f.sig = "viffff";\n var _glCopyTexImage2D = _emscripten_glCopyTexImage2D;\n _glCopyTexImage2D.sig = "viiiiiiii";\n var _glCopyTexSubImage2D = _emscripten_glCopyTexSubImage2D;\n _glCopyTexSubImage2D.sig = "viiiiiiii";\n function _emscripten_webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx) {\n ctx >>>= 0;\n return webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GL.contexts[ctx].GLctx);\n }\n _emscripten_webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance.sig = "ip";\n function _emscripten_webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx) {\n ctx >>>= 0;\n return webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GL.contexts[ctx].GLctx);\n }\n _emscripten_webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance.sig = "ip";\n var _glGetStringi = _emscripten_glGetStringi;\n _glGetStringi.sig = "pii";\n var _glGetInteger64v = _emscripten_glGetInteger64v;\n _glGetInteger64v.sig = "vip";\n var _glGetInternalformativ = _emscripten_glGetInternalformativ;\n _glGetInternalformativ.sig = "viiiip";\n var _glCompressedTexImage3D = _emscripten_glCompressedTexImage3D;\n _glCompressedTexImage3D.sig = "viiiiiiiip";\n var _glCompressedTexSubImage3D = _emscripten_glCompressedTexSubImage3D;\n _glCompressedTexSubImage3D.sig = "viiiiiiiiiip";\n var _glGetBufferParameteri64v = _emscripten_glGetBufferParameteri64v;\n _glGetBufferParameteri64v.sig = "viip";\n function _emscripten_glGetBufferSubData(target, offset, size, data2) {\n offset >>>= 0;\n size >>>= 0;\n data2 >>>= 0;\n if (!data2) {\n GL.recordError(1281);\n return;\n }\n size && GLctx.getBufferSubData(target, offset, HEAPU8.subarray(data2 >>> 0, data2 + size >>> 0));\n }\n _emscripten_glGetBufferSubData.sig = "vippp";\n var _glGetBufferSubData = _emscripten_glGetBufferSubData;\n _glGetBufferSubData.sig = "vippp";\n var _glInvalidateFramebuffer = _emscripten_glInvalidateFramebuffer;\n _glInvalidateFramebuffer.sig = "viip";\n var _glInvalidateSubFramebuffer = _emscripten_glInvalidateSubFramebuffer;\n _glInvalidateSubFramebuffer.sig = "viipiiii";\n var _glTexImage3D = _emscripten_glTexImage3D;\n _glTexImage3D.sig = "viiiiiiiiip";\n var _glTexSubImage3D = _emscripten_glTexSubImage3D;\n _glTexSubImage3D.sig = "viiiiiiiiiip";\n var _glGenQueries = _emscripten_glGenQueries;\n _glGenQueries.sig = "vip";\n var _glDeleteQueries = _emscripten_glDeleteQueries;\n _glDeleteQueries.sig = "vip";\n var _glIsQuery = _emscripten_glIsQuery;\n _glIsQuery.sig = "ii";\n var _glBeginQuery = _emscripten_glBeginQuery;\n _glBeginQuery.sig = "vii";\n var _glGetQueryiv = _emscripten_glGetQueryiv;\n _glGetQueryiv.sig = "viip";\n var _glGetQueryObjectuiv = _emscripten_glGetQueryObjectuiv;\n _glGetQueryObjectuiv.sig = "viip";\n var _glGenSamplers = _emscripten_glGenSamplers;\n _glGenSamplers.sig = "vip";\n var _glDeleteSamplers = _emscripten_glDeleteSamplers;\n _glDeleteSamplers.sig = "vip";\n var _glIsSampler = _emscripten_glIsSampler;\n _glIsSampler.sig = "ii";\n var _glBindSampler = _emscripten_glBindSampler;\n _glBindSampler.sig = "vii";\n var _glSamplerParameterf = _emscripten_glSamplerParameterf;\n _glSamplerParameterf.sig = "viif";\n var _glSamplerParameteri = _emscripten_glSamplerParameteri;\n _glSamplerParameteri.sig = "viii";\n var _glSamplerParameterfv = _emscripten_glSamplerParameterfv;\n _glSamplerParameterfv.sig = "viip";\n var _glSamplerParameteriv = _emscripten_glSamplerParameteriv;\n _glSamplerParameteriv.sig = "viip";\n var _glGetSamplerParameterfv = _emscripten_glGetSamplerParameterfv;\n _glGetSamplerParameterfv.sig = "viip";\n var _glGetSamplerParameteriv = _emscripten_glGetSamplerParameteriv;\n _glGetSamplerParameteriv.sig = "viip";\n var _glGenTransformFeedbacks = _emscripten_glGenTransformFeedbacks;\n _glGenTransformFeedbacks.sig = "vip";\n var _glDeleteTransformFeedbacks = _emscripten_glDeleteTransformFeedbacks;\n _glDeleteTransformFeedbacks.sig = "vip";\n var _glIsTransformFeedback = _emscripten_glIsTransformFeedback;\n _glIsTransformFeedback.sig = "ii";\n var _glBindTransformFeedback = _emscripten_glBindTransformFeedback;\n _glBindTransformFeedback.sig = "vii";\n var _glTransformFeedbackVaryings = _emscripten_glTransformFeedbackVaryings;\n _glTransformFeedbackVaryings.sig = "viipi";\n var _glGetTransformFeedbackVarying = _emscripten_glGetTransformFeedbackVarying;\n _glGetTransformFeedbackVarying.sig = "viiipppp";\n var _glGetIntegeri_v = _emscripten_glGetIntegeri_v;\n _glGetIntegeri_v.sig = "viip";\n var _glGetInteger64i_v = _emscripten_glGetInteger64i_v;\n _glGetInteger64i_v.sig = "viip";\n var _glBindBufferBase = _emscripten_glBindBufferBase;\n _glBindBufferBase.sig = "viii";\n var _glBindBufferRange = _emscripten_glBindBufferRange;\n _glBindBufferRange.sig = "viiipp";\n var _glGetUniformIndices = _emscripten_glGetUniformIndices;\n _glGetUniformIndices.sig = "viipp";\n var _glGetActiveUniformsiv = _emscripten_glGetActiveUniformsiv;\n _glGetActiveUniformsiv.sig = "viipip";\n var _glGetUniformBlockIndex = _emscripten_glGetUniformBlockIndex;\n _glGetUniformBlockIndex.sig = "iip";\n var _glGetActiveUniformBlockiv = _emscripten_glGetActiveUniformBlockiv;\n _glGetActiveUniformBlockiv.sig = "viiip";\n var _glGetActiveUniformBlockName = _emscripten_glGetActiveUniformBlockName;\n _glGetActiveUniformBlockName.sig = "viiipp";\n var _glUniformBlockBinding = _emscripten_glUniformBlockBinding;\n _glUniformBlockBinding.sig = "viii";\n var _glClearBufferiv = _emscripten_glClearBufferiv;\n _glClearBufferiv.sig = "viip";\n var _glClearBufferuiv = _emscripten_glClearBufferuiv;\n _glClearBufferuiv.sig = "viip";\n var _glClearBufferfv = _emscripten_glClearBufferfv;\n _glClearBufferfv.sig = "viip";\n var _glFenceSync = _emscripten_glFenceSync;\n _glFenceSync.sig = "pii";\n var _glDeleteSync = _emscripten_glDeleteSync;\n _glDeleteSync.sig = "vp";\n var _glClientWaitSync = _emscripten_glClientWaitSync;\n _glClientWaitSync.sig = "ipij";\n var _glWaitSync = _emscripten_glWaitSync;\n _glWaitSync.sig = "vpij";\n var _glGetSynciv = _emscripten_glGetSynciv;\n _glGetSynciv.sig = "vpiipp";\n var _glIsSync = _emscripten_glIsSync;\n _glIsSync.sig = "ip";\n var _glGetUniformuiv = _emscripten_glGetUniformuiv;\n _glGetUniformuiv.sig = "viip";\n var _glGetFragDataLocation = _emscripten_glGetFragDataLocation;\n _glGetFragDataLocation.sig = "iip";\n var _glGetVertexAttribIuiv = _emscripten_glGetVertexAttribIuiv;\n _glGetVertexAttribIuiv.sig = "viip";\n var _glUniform1ui = _emscripten_glUniform1ui;\n _glUniform1ui.sig = "vii";\n var _glUniform2ui = _emscripten_glUniform2ui;\n _glUniform2ui.sig = "viii";\n var _glUniform3ui = _emscripten_glUniform3ui;\n _glUniform3ui.sig = "viiii";\n var _glUniform4ui = _emscripten_glUniform4ui;\n _glUniform4ui.sig = "viiiii";\n var _glUniform1uiv = _emscripten_glUniform1uiv;\n _glUniform1uiv.sig = "viip";\n var _glUniform2uiv = _emscripten_glUniform2uiv;\n _glUniform2uiv.sig = "viip";\n var _glUniform3uiv = _emscripten_glUniform3uiv;\n _glUniform3uiv.sig = "viip";\n var _glUniform4uiv = _emscripten_glUniform4uiv;\n _glUniform4uiv.sig = "viip";\n var _glUniformMatrix2x3fv = _emscripten_glUniformMatrix2x3fv;\n _glUniformMatrix2x3fv.sig = "viiip";\n var _glUniformMatrix3x2fv = _emscripten_glUniformMatrix3x2fv;\n _glUniformMatrix3x2fv.sig = "viiip";\n var _glUniformMatrix2x4fv = _emscripten_glUniformMatrix2x4fv;\n _glUniformMatrix2x4fv.sig = "viiip";\n var _glUniformMatrix4x2fv = _emscripten_glUniformMatrix4x2fv;\n _glUniformMatrix4x2fv.sig = "viiip";\n var _glUniformMatrix3x4fv = _emscripten_glUniformMatrix3x4fv;\n _glUniformMatrix3x4fv.sig = "viiip";\n var _glUniformMatrix4x3fv = _emscripten_glUniformMatrix4x3fv;\n _glUniformMatrix4x3fv.sig = "viiip";\n var _glVertexAttribI4iv = _emscripten_glVertexAttribI4iv;\n _glVertexAttribI4iv.sig = "vip";\n var _glVertexAttribI4uiv = _emscripten_glVertexAttribI4uiv;\n _glVertexAttribI4uiv.sig = "vip";\n var _glProgramParameteri = _emscripten_glProgramParameteri;\n _glProgramParameteri.sig = "viii";\n var _glGetProgramBinary = _emscripten_glGetProgramBinary;\n _glGetProgramBinary.sig = "viippp";\n var _glProgramBinary = _emscripten_glProgramBinary;\n _glProgramBinary.sig = "viipi";\n var _glFramebufferTextureLayer = _emscripten_glFramebufferTextureLayer;\n _glFramebufferTextureLayer.sig = "viiiii";\n var _glVertexAttribIPointer = _emscripten_glVertexAttribIPointer;\n _glVertexAttribIPointer.sig = "viiiip";\n var _glDrawRangeElements = _emscripten_glDrawRangeElements;\n _glDrawRangeElements.sig = "viiiiip";\n var _emscripten_glDrawArraysInstancedBaseInstanceWEBGL = (mode, first, count, instanceCount, baseInstance) => {\n GLctx.dibvbi["drawArraysInstancedBaseInstanceWEBGL"](mode, first, count, instanceCount, baseInstance);\n };\n _emscripten_glDrawArraysInstancedBaseInstanceWEBGL.sig = "viiiii";\n var _glDrawArraysInstancedBaseInstanceWEBGL = _emscripten_glDrawArraysInstancedBaseInstanceWEBGL;\n var _emscripten_glDrawArraysInstancedBaseInstance = _glDrawArraysInstancedBaseInstanceWEBGL;\n _emscripten_glDrawArraysInstancedBaseInstance.sig = "viiiii";\n var _glDrawArraysInstancedBaseInstance = _emscripten_glDrawArraysInstancedBaseInstance;\n _glDrawArraysInstancedBaseInstance.sig = "viiiii";\n var _emscripten_glDrawArraysInstancedBaseInstanceANGLE = _glDrawArraysInstancedBaseInstanceWEBGL;\n var _glDrawArraysInstancedBaseInstanceANGLE = _emscripten_glDrawArraysInstancedBaseInstanceANGLE;\n var _emscripten_glDrawElementsInstancedBaseVertexBaseInstanceWEBGL = (mode, count, type, offset, instanceCount, baseVertex, baseinstance) => {\n GLctx.dibvbi["drawElementsInstancedBaseVertexBaseInstanceWEBGL"](mode, count, type, offset, instanceCount, baseVertex, baseinstance);\n };\n _emscripten_glDrawElementsInstancedBaseVertexBaseInstanceWEBGL.sig = "viiiiiii";\n var _glDrawElementsInstancedBaseVertexBaseInstanceWEBGL = _emscripten_glDrawElementsInstancedBaseVertexBaseInstanceWEBGL;\n var _emscripten_glDrawElementsInstancedBaseVertexBaseInstanceANGLE = _glDrawElementsInstancedBaseVertexBaseInstanceWEBGL;\n var _glDrawElementsInstancedBaseVertexBaseInstanceANGLE = _emscripten_glDrawElementsInstancedBaseVertexBaseInstanceANGLE;\n var _emscripten_glMultiDrawArraysInstancedBaseInstanceWEBGL = (mode, firsts, counts, instanceCounts, baseInstances, drawCount) => {\n GLctx.mdibvbi["multiDrawArraysInstancedBaseInstanceWEBGL"](mode, HEAP32, firsts >>> 2, HEAP32, counts >>> 2, HEAP32, instanceCounts >>> 2, HEAPU32, baseInstances >>> 2, drawCount);\n };\n _emscripten_glMultiDrawArraysInstancedBaseInstanceWEBGL.sig = "viiiiii";\n var _glMultiDrawArraysInstancedBaseInstanceWEBGL = _emscripten_glMultiDrawArraysInstancedBaseInstanceWEBGL;\n var _emscripten_glMultiDrawArraysInstancedBaseInstanceANGLE = _glMultiDrawArraysInstancedBaseInstanceWEBGL;\n var _glMultiDrawArraysInstancedBaseInstanceANGLE = _emscripten_glMultiDrawArraysInstancedBaseInstanceANGLE;\n var _emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL = (mode, counts, type, offsets, instanceCounts, baseVertices, baseInstances, drawCount) => {\n GLctx.mdibvbi["multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL"](mode, HEAP32, counts >>> 2, type, HEAP32, offsets >>> 2, HEAP32, instanceCounts >>> 2, HEAP32, baseVertices >>> 2, HEAPU32, baseInstances >>> 2, drawCount);\n };\n _emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL.sig = "viiiiiiii";\n var _glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL = _emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL;\n var _emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE = _glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL;\n var _glMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE = _emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE;\n var _glEndTransformFeedback = _emscripten_glEndTransformFeedback;\n _glEndTransformFeedback.sig = "v";\n var _glPauseTransformFeedback = _emscripten_glPauseTransformFeedback;\n _glPauseTransformFeedback.sig = "v";\n var _glResumeTransformFeedback = _emscripten_glResumeTransformFeedback;\n _glResumeTransformFeedback.sig = "v";\n var _glBeginTransformFeedback = _emscripten_glBeginTransformFeedback;\n _glBeginTransformFeedback.sig = "vi";\n var _glReadBuffer = _emscripten_glReadBuffer;\n _glReadBuffer.sig = "vi";\n var _glEndQuery = _emscripten_glEndQuery;\n _glEndQuery.sig = "vi";\n var _glClearBufferfi = _emscripten_glClearBufferfi;\n _glClearBufferfi.sig = "viifi";\n var _glVertexAttribI4i = _emscripten_glVertexAttribI4i;\n _glVertexAttribI4i.sig = "viiiii";\n var _glVertexAttribI4ui = _emscripten_glVertexAttribI4ui;\n _glVertexAttribI4ui.sig = "viiiii";\n var _glCopyBufferSubData = _emscripten_glCopyBufferSubData;\n _glCopyBufferSubData.sig = "viippp";\n var _glTexStorage2D = _emscripten_glTexStorage2D;\n _glTexStorage2D.sig = "viiiii";\n var _glRenderbufferStorageMultisample = _emscripten_glRenderbufferStorageMultisample;\n _glRenderbufferStorageMultisample.sig = "viiiii";\n var _glTexStorage3D = _emscripten_glTexStorage3D;\n _glTexStorage3D.sig = "viiiiii";\n var _glCopyTexSubImage3D = _emscripten_glCopyTexSubImage3D;\n _glCopyTexSubImage3D.sig = "viiiiiiiii";\n var _glBlitFramebuffer = _emscripten_glBlitFramebuffer;\n _glBlitFramebuffer.sig = "viiiiiiiiii";\n var ALLOC_NORMAL = 0;\n var ALLOC_STACK = 1;\n var allocate = (slab, allocator) => {\n var ret;\n if (allocator == ALLOC_STACK) {\n ret = stackAlloc(slab.length);\n } else {\n ret = _malloc(slab.length);\n }\n if (!slab.subarray && !slab.slice) {\n slab = new Uint8Array(slab);\n }\n HEAPU8.set(slab, ret >>> 0);\n return ret;\n };\n var writeStringToMemory = (string, buffer, dontAddNull) => {\n warnOnce("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!");\n var lastChar, end;\n if (dontAddNull) {\n end = buffer + lengthBytesUTF8(string);\n lastChar = HEAP8[end >>> 0];\n }\n stringToUTF8(string, buffer, Infinity);\n if (dontAddNull) HEAP8[end >>> 0] = lastChar;\n };\n var writeAsciiToMemory = (str, buffer, dontAddNull) => {\n for (var i2 = 0; i2 < str.length; ++i2) {\n HEAP8[buffer++ >>> 0] = str.charCodeAt(i2);\n }\n if (!dontAddNull) HEAP8[buffer >>> 0] = 0;\n };\n var allocateUTF8 = (...args2) => stringToNewUTF8(...args2);\n var allocateUTF8OnStack = (...args2) => stringToUTF8OnStack(...args2);\n var demangle = (func2) => {\n demangle.recursionGuard = (demangle.recursionGuard | 0) + 1;\n if (demangle.recursionGuard > 1) return func2;\n return withStackSave(() => {\n try {\n var s2 = func2;\n if (s2.startsWith("__Z")) s2 = s2.slice(1);\n var buf = stringToUTF8OnStack(s2);\n var status = stackAlloc(4);\n var ret = ___cxa_demangle(buf, 0, 0, status);\n if (HEAP32[status >>> 2 >>> 0] === 0 && ret) {\n return UTF8ToString(ret);\n }\n } catch (e) {\n } finally {\n _free(ret);\n if (demangle.recursionGuard < 2) --demangle.recursionGuard;\n }\n return func2;\n });\n };\n var stackTrace = () => {\n var js = jsStackTrace();\n if (Module["extraStackTrace"]) js += "\\n" + Module["extraStackTrace"]();\n return js;\n };\n var print = out;\n var printErr = err;\n var jstoi_s = Number;\n function getNativeTypeSize(type) {\n switch (type) {\n case "i1":\n case "i8":\n case "u8":\n return 1;\n case "i16":\n case "u16":\n return 2;\n case "i32":\n case "u32":\n return 4;\n case "i64":\n case "u64":\n return 8;\n case "float":\n return 4;\n case "double":\n return 8;\n default: {\n if (type.endsWith("*")) {\n return POINTER_SIZE;\n }\n if (type[0] === "i") {\n const bits = Number(type.slice(1));\n return bits / 8;\n }\n return 0;\n }\n }\n }\n var _emscripten_is_main_browser_thread = () => !ENVIRONMENT_IS_WORKER;\n var webSockets = new HandleAllocator();\n var WS = { socketEvent: null, getSocket(socketId) {\n if (!webSockets.has(socketId)) {\n return 0;\n }\n return webSockets.get(socketId);\n }, getSocketEvent(socketId) {\n this.socketEvent ||= _malloc(520);\n HEAPU32[this.socketEvent >>> 2 >>> 0] = socketId;\n return this.socketEvent;\n } };\n function _emscripten_websocket_get_ready_state(socketId, readyState) {\n readyState >>>= 0;\n var socket = WS.getSocket(socketId);\n if (!socket) {\n return -3;\n }\n HEAP16[readyState >>> 1 >>> 0] = socket.readyState;\n return 0;\n }\n _emscripten_websocket_get_ready_state.sig = "iip";\n function _emscripten_websocket_get_buffered_amount(socketId, bufferedAmount) {\n bufferedAmount >>>= 0;\n var socket = WS.getSocket(socketId);\n if (!socket) {\n return -3;\n }\n HEAPU32[bufferedAmount >>> 2 >>> 0] = socket.bufferedAmount;\n return 0;\n }\n _emscripten_websocket_get_buffered_amount.sig = "iip";\n function _emscripten_websocket_get_extensions(socketId, extensions, extensionsLength) {\n extensions >>>= 0;\n var socket = WS.getSocket(socketId);\n if (!socket) {\n return -3;\n }\n if (!extensions) return -5;\n stringToUTF8(socket.extensions, extensions, extensionsLength);\n return 0;\n }\n _emscripten_websocket_get_extensions.sig = "iipi";\n function _emscripten_websocket_get_extensions_length(socketId, extensionsLength) {\n extensionsLength >>>= 0;\n var socket = WS.getSocket(socketId);\n if (!socket) {\n return -3;\n }\n if (!extensionsLength) return -5;\n HEAP32[extensionsLength >>> 2 >>> 0] = lengthBytesUTF8(socket.extensions) + 1;\n return 0;\n }\n _emscripten_websocket_get_extensions_length.sig = "iip";\n function _emscripten_websocket_get_protocol(socketId, protocol, protocolLength) {\n protocol >>>= 0;\n var socket = WS.getSocket(socketId);\n if (!socket) {\n return -3;\n }\n if (!protocol) return -5;\n stringToUTF8(socket.protocol, protocol, protocolLength);\n return 0;\n }\n _emscripten_websocket_get_protocol.sig = "iipi";\n function _emscripten_websocket_get_protocol_length(socketId, protocolLength) {\n protocolLength >>>= 0;\n var socket = WS.getSocket(socketId);\n if (!socket) {\n return -3;\n }\n if (!protocolLength) return -5;\n HEAP32[protocolLength >>> 2 >>> 0] = lengthBytesUTF8(socket.protocol) + 1;\n return 0;\n }\n _emscripten_websocket_get_protocol_length.sig = "iip";\n function _emscripten_websocket_get_url(socketId, url2, urlLength) {\n url2 >>>= 0;\n var socket = WS.getSocket(socketId);\n if (!socket) {\n return -3;\n }\n if (!url2) return -5;\n stringToUTF8(socket.url, url2, urlLength);\n return 0;\n }\n _emscripten_websocket_get_url.sig = "iipi";\n function _emscripten_websocket_get_url_length(socketId, urlLength) {\n urlLength >>>= 0;\n var socket = WS.getSocket(socketId);\n if (!socket) {\n return -3;\n }\n if (!urlLength) return -5;\n HEAP32[urlLength >>> 2 >>> 0] = lengthBytesUTF8(socket.url) + 1;\n return 0;\n }\n _emscripten_websocket_get_url_length.sig = "iip";\n function _emscripten_websocket_set_onopen_callback_on_thread(socketId, userData, callbackFunc, thread) {\n userData >>>= 0;\n callbackFunc >>>= 0;\n thread >>>= 0;\n var socket = WS.getSocket(socketId);\n if (!socket) {\n return -3;\n }\n socket.onopen = (e) => {\n var eventPtr = WS.getSocketEvent(socketId);\n getWasmTableEntry(callbackFunc)(0, eventPtr, userData);\n };\n return 0;\n }\n _emscripten_websocket_set_onopen_callback_on_thread.sig = "iippp";\n function _emscripten_websocket_set_onerror_callback_on_thread(socketId, userData, callbackFunc, thread) {\n userData >>>= 0;\n callbackFunc >>>= 0;\n thread >>>= 0;\n var socket = WS.getSocket(socketId);\n if (!socket) {\n return -3;\n }\n socket.onerror = (e) => {\n var eventPtr = WS.getSocketEvent(socketId);\n getWasmTableEntry(callbackFunc)(0, eventPtr, userData);\n };\n return 0;\n }\n _emscripten_websocket_set_onerror_callback_on_thread.sig = "iippp";\n function _emscripten_websocket_set_onclose_callback_on_thread(socketId, userData, callbackFunc, thread) {\n userData >>>= 0;\n callbackFunc >>>= 0;\n thread >>>= 0;\n var socket = WS.getSocket(socketId);\n if (!socket) {\n return -3;\n }\n socket.onclose = (e) => {\n var eventPtr = WS.getSocketEvent(socketId);\n HEAP8[eventPtr + 4 >>> 0] = e.wasClean, HEAP16[eventPtr + 6 >>> 1 >>> 0] = e.code, stringToUTF8(e.reason, eventPtr + 8, 512);\n getWasmTableEntry(callbackFunc)(0, eventPtr, userData);\n };\n return 0;\n }\n _emscripten_websocket_set_onclose_callback_on_thread.sig = "iippp";\n function _emscripten_websocket_set_onmessage_callback_on_thread(socketId, userData, callbackFunc, thread) {\n userData >>>= 0;\n callbackFunc >>>= 0;\n thread >>>= 0;\n var socket = WS.getSocket(socketId);\n if (!socket) {\n return -3;\n }\n socket.onmessage = (e) => {\n var isText = typeof e.data == "string";\n if (isText) {\n var buf = stringToNewUTF8(e.data);\n var len = lengthBytesUTF8(e.data) + 1;\n } else {\n var len = e.data.byteLength;\n var buf = _malloc(len);\n HEAP8.set(new Uint8Array(e.data), buf >>> 0);\n }\n var eventPtr = WS.getSocketEvent(socketId);\n HEAPU32[eventPtr + 4 >>> 2 >>> 0] = buf, HEAP32[eventPtr + 8 >>> 2 >>> 0] = len, HEAP8[eventPtr + 12 >>> 0] = isText, getWasmTableEntry(callbackFunc)(0, eventPtr, userData);\n _free(buf);\n };\n return 0;\n }\n _emscripten_websocket_set_onmessage_callback_on_thread.sig = "iippp";\n function _emscripten_websocket_new(createAttributes) {\n createAttributes >>>= 0;\n if (!globalThis.WebSocket) {\n return -1;\n }\n if (!createAttributes) {\n return -5;\n }\n var url2 = UTF8ToString(HEAPU32[createAttributes >>> 2 >>> 0]);\n var protocols = HEAPU32[createAttributes + 4 >>> 2 >>> 0];\n var socket = protocols ? new WebSocket(url2, UTF8ToString(protocols).split(",")) : new WebSocket(url2);\n socket.binaryType = "arraybuffer";\n var socketId = webSockets.allocate(socket);\n return socketId;\n }\n _emscripten_websocket_new.sig = "ip";\n function _emscripten_websocket_send_utf8_text(socketId, textData) {\n textData >>>= 0;\n var socket = WS.getSocket(socketId);\n if (!socket) {\n return -3;\n }\n var str = UTF8ToString(textData);\n socket.send(str);\n return 0;\n }\n _emscripten_websocket_send_utf8_text.sig = "iip";\n function _emscripten_websocket_send_binary(socketId, binaryData, dataLength) {\n binaryData >>>= 0;\n var socket = WS.getSocket(socketId);\n if (!socket) {\n return -3;\n }\n socket.send(HEAPU8.subarray(binaryData >>> 0, binaryData + dataLength >>> 0));\n return 0;\n }\n _emscripten_websocket_send_binary.sig = "iipi";\n function _emscripten_websocket_close(socketId, code, reason) {\n reason >>>= 0;\n var socket = WS.getSocket(socketId);\n if (!socket) {\n return -3;\n }\n var reasonStr = reason ? UTF8ToString(reason) : void 0;\n if (reason) socket.close(code || void 0, UTF8ToString(reason));\n else if (code) socket.close(code);\n else socket.close();\n return 0;\n }\n _emscripten_websocket_close.sig = "iiip";\n var _emscripten_websocket_delete = (socketId) => {\n var socket = WS.getSocket(socketId);\n if (!socket) {\n return -3;\n }\n socket.onopen = socket.onerror = socket.onclose = socket.onmessage = null;\n webSockets.free(socketId);\n return 0;\n };\n _emscripten_websocket_delete.sig = "ii";\n var _emscripten_websocket_is_supported = () => typeof WebSocket != "undefined";\n _emscripten_websocket_is_supported.sig = "i";\n var _emscripten_websocket_deinitialize = () => {\n for (var i2 in webSockets.allocated) {\n if (webSockets.has(i2)) {\n var socket = webSockets.get(i2);\n socket.close();\n _emscripten_websocket_delete(i2);\n }\n }\n };\n _emscripten_websocket_deinitialize.sig = "v";\n var writeGLArray = (arr, dst, dstLength, heapType) => {\n var len = arr.length;\n var writeLength = dstLength < len ? dstLength : len;\n var heap = heapType ? HEAPF32 : HEAP32;\n dst = dst >>> 2;\n for (var i2 = 0; i2 < writeLength; ++i2) {\n heap[dst + i2 >>> 0] = arr[i2];\n }\n return len;\n };\n var webglPowerPreferences = ["default", "low-power", "high-performance"];\n function _emscripten_webgl_do_create_context(target, attributes) {\n target >>>= 0;\n attributes >>>= 0;\n var attr32 = attributes >>> 2;\n var powerPreference = HEAP32[attr32 + (8 >> 2) >>> 0];\n var contextAttributes = { alpha: !!HEAP8[attributes + 0 >>> 0], depth: !!HEAP8[attributes + 1 >>> 0], stencil: !!HEAP8[attributes + 2 >>> 0], antialias: !!HEAP8[attributes + 3 >>> 0], premultipliedAlpha: !!HEAP8[attributes + 4 >>> 0], preserveDrawingBuffer: !!HEAP8[attributes + 5 >>> 0], powerPreference: webglPowerPreferences[powerPreference], failIfMajorPerformanceCaveat: !!HEAP8[attributes + 12 >>> 0], majorVersion: HEAP32[attr32 + (16 >> 2) >>> 0], minorVersion: HEAP32[attr32 + (20 >> 2) >>> 0], enableExtensionsByDefault: HEAP8[attributes + 24 >>> 0], explicitSwapControl: HEAP8[attributes + 25 >>> 0], proxyContextToMainThread: HEAP32[attr32 + (28 >> 2) >>> 0], renderViaOffscreenBackBuffer: HEAP8[attributes + 32 >>> 0] };\n var canvas = findCanvasEventTarget(target);\n if (!canvas) {\n return 0;\n }\n if (contextAttributes.explicitSwapControl) {\n return 0;\n }\n var contextHandle = GL.createContext(canvas, contextAttributes);\n return contextHandle;\n }\n _emscripten_webgl_do_create_context.sig = "ppp";\n var _emscripten_webgl_create_context = _emscripten_webgl_do_create_context;\n _emscripten_webgl_create_context.sig = "ppp";\n function _emscripten_webgl_do_get_current_context() {\n return GL.currentContext ? GL.currentContext.handle : 0;\n }\n _emscripten_webgl_do_get_current_context.sig = "p";\n var _emscripten_webgl_get_current_context = _emscripten_webgl_do_get_current_context;\n _emscripten_webgl_get_current_context.sig = "p";\n var _emscripten_webgl_do_commit_frame = () => {\n if (!GL.currentContext || !GL.currentContext.GLctx) {\n return -3;\n }\n if (!GL.currentContext.attributes.explicitSwapControl) {\n return -3;\n }\n return 0;\n };\n _emscripten_webgl_do_commit_frame.sig = "i";\n var _emscripten_webgl_commit_frame = _emscripten_webgl_do_commit_frame;\n _emscripten_webgl_commit_frame.sig = "i";\n function _emscripten_webgl_make_context_current(contextHandle) {\n contextHandle >>>= 0;\n var success = GL.makeContextCurrent(contextHandle);\n return success ? 0 : -5;\n }\n _emscripten_webgl_make_context_current.sig = "ip";\n function _emscripten_webgl_get_drawing_buffer_size(contextHandle, width, height) {\n contextHandle >>>= 0;\n width >>>= 0;\n height >>>= 0;\n var GLContext = GL.getContext(contextHandle);\n if (!GLContext || !GLContext.GLctx || !width || !height) {\n return -5;\n }\n HEAP32[width >>> 2 >>> 0] = GLContext.GLctx.drawingBufferWidth;\n HEAP32[height >>> 2 >>> 0] = GLContext.GLctx.drawingBufferHeight;\n return 0;\n }\n _emscripten_webgl_get_drawing_buffer_size.sig = "ippp";\n function _emscripten_webgl_get_context_attributes(c, a) {\n c >>>= 0;\n a >>>= 0;\n if (!a) return -5;\n c = GL.contexts[c];\n if (!c) return -3;\n var t = c.GLctx?.getContextAttributes();\n if (!t) return -3;\n HEAP8[a >>> 0] = t.alpha;\n HEAP8[a + 1 >>> 0] = t.depth;\n HEAP8[a + 2 >>> 0] = t.stencil;\n HEAP8[a + 3 >>> 0] = t.antialias;\n HEAP8[a + 4 >>> 0] = t.premultipliedAlpha;\n HEAP8[a + 5 >>> 0] = t.preserveDrawingBuffer;\n var power = t["powerPreference"] && webglPowerPreferences.indexOf(t["powerPreference"]);\n HEAP32[a + 8 >>> 2 >>> 0] = power;\n HEAP8[a + 12 >>> 0] = t.failIfMajorPerformanceCaveat;\n HEAP32[a + 16 >>> 2 >>> 0] = c.version;\n HEAP32[a + 20 >>> 2 >>> 0] = 0;\n HEAP8[a + 24 >>> 0] = c.attributes.enableExtensionsByDefault;\n return 0;\n }\n _emscripten_webgl_get_context_attributes.sig = "ipp";\n function _emscripten_webgl_destroy_context(contextHandle) {\n contextHandle >>>= 0;\n if (GL.currentContext == contextHandle) GL.currentContext = 0;\n GL.deleteContext(contextHandle);\n }\n _emscripten_webgl_destroy_context.sig = "ip";\n function _emscripten_webgl_enable_extension(contextHandle, extension) {\n contextHandle >>>= 0;\n extension >>>= 0;\n var context = GL.getContext(contextHandle);\n var extString = UTF8ToString(extension);\n if (extString.startsWith("GL_")) extString = extString.slice(3);\n if (extString == "ANGLE_instanced_arrays") webgl_enable_ANGLE_instanced_arrays(GLctx);\n if (extString == "OES_vertex_array_object") webgl_enable_OES_vertex_array_object(GLctx);\n if (extString == "WEBGL_draw_buffers") webgl_enable_WEBGL_draw_buffers(GLctx);\n if (extString == "WEBGL_draw_instanced_base_vertex_base_instance") webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);\n if (extString == "WEBGL_multi_draw_instanced_base_vertex_base_instance") webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);\n if (extString == "WEBGL_multi_draw") webgl_enable_WEBGL_multi_draw(GLctx);\n if (extString == "EXT_polygon_offset_clamp") webgl_enable_EXT_polygon_offset_clamp(GLctx);\n if (extString == "EXT_clip_control") webgl_enable_EXT_clip_control(GLctx);\n if (extString == "WEBGL_polygon_mode") webgl_enable_WEBGL_polygon_mode(GLctx);\n var ext = context.GLctx.getExtension(extString);\n return !!ext;\n }\n _emscripten_webgl_enable_extension.sig = "ipp";\n var _emscripten_supports_offscreencanvas = () => 0;\n _emscripten_supports_offscreencanvas.sig = "i";\n var registerWebGlEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n var webGlEventHandlerFunc = (e) => {\n if (getWasmTableEntry(callbackfunc)(eventTypeId, 0, userData)) e.preventDefault();\n };\n var eventHandler = { target: findEventTarget(target), eventTypeString, eventTypeId, userData, callbackfunc, handlerFunc: webGlEventHandlerFunc, useCapture };\n JSEvents.registerOrRemoveHandler(eventHandler);\n };\n function _emscripten_set_webglcontextlost_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n target >>>= 0;\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n registerWebGlEventCallback(target, userData, useCapture, callbackfunc, 31, "webglcontextlost", targetThread);\n return 0;\n }\n _emscripten_set_webglcontextlost_callback_on_thread.sig = "ippipp";\n function _emscripten_set_webglcontextrestored_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n target >>>= 0;\n userData >>>= 0;\n callbackfunc >>>= 0;\n targetThread >>>= 0;\n registerWebGlEventCallback(target, userData, useCapture, callbackfunc, 32, "webglcontextrestored", targetThread);\n return 0;\n }\n _emscripten_set_webglcontextrestored_callback_on_thread.sig = "ippipp";\n function _emscripten_is_webgl_context_lost(contextHandle) {\n contextHandle >>>= 0;\n return !GL.contexts[contextHandle] || GL.contexts[contextHandle].GLctx.isContextLost();\n }\n _emscripten_is_webgl_context_lost.sig = "ip";\n function _emscripten_webgl_get_supported_extensions() {\n return stringToNewUTF8(GLctx.getSupportedExtensions().join(" "));\n }\n _emscripten_webgl_get_supported_extensions.sig = "p";\n var _emscripten_webgl_get_program_parameter_d = (program, param) => GLctx.getProgramParameter(GL.programs[program], param);\n _emscripten_webgl_get_program_parameter_d.sig = "dii";\n function _emscripten_webgl_get_program_info_log_utf8(program) {\n return stringToNewUTF8(GLctx.getProgramInfoLog(GL.programs[program]));\n }\n _emscripten_webgl_get_program_info_log_utf8.sig = "pi";\n var _emscripten_webgl_get_shader_parameter_d = (shader, param) => GLctx.getShaderParameter(GL.shaders[shader], param);\n _emscripten_webgl_get_shader_parameter_d.sig = "dii";\n function _emscripten_webgl_get_shader_info_log_utf8(shader) {\n return stringToNewUTF8(GLctx.getShaderInfoLog(GL.shaders[shader]));\n }\n _emscripten_webgl_get_shader_info_log_utf8.sig = "pi";\n function _emscripten_webgl_get_shader_source_utf8(shader) {\n return stringToNewUTF8(GLctx.getShaderSource(GL.shaders[shader]));\n }\n _emscripten_webgl_get_shader_source_utf8.sig = "pi";\n var _emscripten_webgl_get_vertex_attrib_d = (index, param) => GLctx.getVertexAttrib(index, param);\n _emscripten_webgl_get_vertex_attrib_d.sig = "dii";\n var _emscripten_webgl_get_vertex_attrib_o = (index, param) => {\n var obj = GLctx.getVertexAttrib(index, param);\n return obj?.name;\n };\n _emscripten_webgl_get_vertex_attrib_o.sig = "iii";\n function _emscripten_webgl_get_vertex_attrib_v(index, param, dst, dstLength, dstType) {\n dst >>>= 0;\n return writeGLArray(GLctx.getVertexAttrib(index, param), dst, dstLength, dstType);\n }\n _emscripten_webgl_get_vertex_attrib_v.sig = "iiipii";\n var _emscripten_webgl_get_uniform_d = (program, location2) => GLctx.getUniform(GL.programs[program], webglGetUniformLocation(location2));\n _emscripten_webgl_get_uniform_d.sig = "dii";\n function _emscripten_webgl_get_uniform_v(program, location2, dst, dstLength, dstType) {\n dst >>>= 0;\n return writeGLArray(GLctx.getUniform(GL.programs[program], webglGetUniformLocation(location2)), dst, dstLength, dstType);\n }\n _emscripten_webgl_get_uniform_v.sig = "iiipii";\n function _emscripten_webgl_get_parameter_v(param, dst, dstLength, dstType) {\n dst >>>= 0;\n return writeGLArray(GLctx.getParameter(param), dst, dstLength, dstType);\n }\n _emscripten_webgl_get_parameter_v.sig = "iipii";\n var _emscripten_webgl_get_parameter_d = (param) => GLctx.getParameter(param);\n _emscripten_webgl_get_parameter_d.sig = "di";\n var _emscripten_webgl_get_parameter_o = (param) => {\n var obj = GLctx.getParameter(param);\n return obj?.name;\n };\n _emscripten_webgl_get_parameter_o.sig = "ii";\n function _emscripten_webgl_get_parameter_utf8(param) {\n return stringToNewUTF8(GLctx.getParameter(param));\n }\n _emscripten_webgl_get_parameter_utf8.sig = "pi";\n function _emscripten_webgl_get_parameter_i64v(param, dst) {\n dst >>>= 0;\n return writeI53ToI64(dst, GLctx.getParameter(param));\n }\n _emscripten_webgl_get_parameter_i64v.sig = "vip";\n var EGL = { errorCode: 12288, defaultDisplayInitialized: false, currentContext: 0, currentReadSurface: 0, currentDrawSurface: 0, contextAttributes: { alpha: false, depth: false, stencil: false, antialias: false }, stringCache: {}, setErrorCode(code) {\n EGL.errorCode = code;\n }, chooseConfig(display, attribList, config, config_size, numConfigs) {\n if (display != 62e3) {\n EGL.setErrorCode(12296);\n return 0;\n }\n if (attribList) {\n for (; ; ) {\n var param = HEAP32[attribList >>> 2 >>> 0];\n if (param == 12321) {\n var alphaSize = HEAP32[attribList + 4 >>> 2 >>> 0];\n EGL.contextAttributes.alpha = alphaSize > 0;\n } else if (param == 12325) {\n var depthSize = HEAP32[attribList + 4 >>> 2 >>> 0];\n EGL.contextAttributes.depth = depthSize > 0;\n } else if (param == 12326) {\n var stencilSize = HEAP32[attribList + 4 >>> 2 >>> 0];\n EGL.contextAttributes.stencil = stencilSize > 0;\n } else if (param == 12337) {\n var samples = HEAP32[attribList + 4 >>> 2 >>> 0];\n EGL.contextAttributes.antialias = samples > 0;\n } else if (param == 12338) {\n var samples = HEAP32[attribList + 4 >>> 2 >>> 0];\n EGL.contextAttributes.antialias = samples == 1;\n } else if (param == 12544) {\n var requestedPriority = HEAP32[attribList + 4 >>> 2 >>> 0];\n EGL.contextAttributes.lowLatency = requestedPriority != 12547;\n } else if (param == 12344) {\n break;\n }\n attribList += 8;\n }\n }\n if ((!config || !config_size) && !numConfigs) {\n EGL.setErrorCode(12300);\n return 0;\n }\n if (numConfigs) {\n HEAP32[numConfigs >>> 2 >>> 0] = 1;\n }\n if (config && config_size > 0) {\n HEAPU32[config >>> 2 >>> 0] = 62002;\n }\n EGL.setErrorCode(12288);\n return 1;\n } };\n function _eglGetDisplay(nativeDisplayType) {\n nativeDisplayType >>>= 0;\n EGL.setErrorCode(12288);\n if (nativeDisplayType != 0 && nativeDisplayType != 1) {\n return 0;\n }\n return 62e3;\n }\n _eglGetDisplay.sig = "pp";\n function _eglInitialize(display, majorVersion, minorVersion) {\n display >>>= 0;\n majorVersion >>>= 0;\n minorVersion >>>= 0;\n if (display != 62e3) {\n EGL.setErrorCode(12296);\n return 0;\n }\n if (majorVersion) {\n HEAP32[majorVersion >>> 2 >>> 0] = 1;\n }\n if (minorVersion) {\n HEAP32[minorVersion >>> 2 >>> 0] = 4;\n }\n EGL.defaultDisplayInitialized = true;\n EGL.setErrorCode(12288);\n return 1;\n }\n _eglInitialize.sig = "ippp";\n function _eglTerminate(display) {\n display >>>= 0;\n if (display != 62e3) {\n EGL.setErrorCode(12296);\n return 0;\n }\n EGL.currentContext = 0;\n EGL.currentReadSurface = 0;\n EGL.currentDrawSurface = 0;\n EGL.defaultDisplayInitialized = false;\n EGL.setErrorCode(12288);\n return 1;\n }\n _eglTerminate.sig = "ip";\n function _eglGetConfigs(display, configs, config_size, numConfigs) {\n display >>>= 0;\n configs >>>= 0;\n numConfigs >>>= 0;\n return EGL.chooseConfig(display, 0, configs, config_size, numConfigs);\n }\n _eglGetConfigs.sig = "ippip";\n function _eglChooseConfig(display, attrib_list, configs, config_size, numConfigs) {\n display >>>= 0;\n attrib_list >>>= 0;\n configs >>>= 0;\n numConfigs >>>= 0;\n return EGL.chooseConfig(display, attrib_list, configs, config_size, numConfigs);\n }\n _eglChooseConfig.sig = "ipppip";\n function _eglGetConfigAttrib(display, config, attribute, value2) {\n display >>>= 0;\n config >>>= 0;\n value2 >>>= 0;\n if (display != 62e3) {\n EGL.setErrorCode(12296);\n return 0;\n }\n if (config != 62002) {\n EGL.setErrorCode(12293);\n return 0;\n }\n if (!value2) {\n EGL.setErrorCode(12300);\n return 0;\n }\n EGL.setErrorCode(12288);\n switch (attribute) {\n case 12320:\n HEAP32[value2 >>> 2 >>> 0] = EGL.contextAttributes.alpha ? 32 : 24;\n return 1;\n case 12321:\n HEAP32[value2 >>> 2 >>> 0] = EGL.contextAttributes.alpha ? 8 : 0;\n return 1;\n case 12322:\n HEAP32[value2 >>> 2 >>> 0] = 8;\n return 1;\n case 12323:\n HEAP32[value2 >>> 2 >>> 0] = 8;\n return 1;\n case 12324:\n HEAP32[value2 >>> 2 >>> 0] = 8;\n return 1;\n case 12325:\n HEAP32[value2 >>> 2 >>> 0] = EGL.contextAttributes.depth ? 24 : 0;\n return 1;\n case 12326:\n HEAP32[value2 >>> 2 >>> 0] = EGL.contextAttributes.stencil ? 8 : 0;\n return 1;\n case 12327:\n HEAP32[value2 >>> 2 >>> 0] = 12344;\n return 1;\n case 12328:\n HEAP32[value2 >>> 2 >>> 0] = 62002;\n return 1;\n case 12329:\n HEAP32[value2 >>> 2 >>> 0] = 0;\n return 1;\n case 12330:\n HEAP32[value2 >>> 2 >>> 0] = 4096;\n return 1;\n case 12331:\n HEAP32[value2 >>> 2 >>> 0] = 16777216;\n return 1;\n case 12332:\n HEAP32[value2 >>> 2 >>> 0] = 4096;\n return 1;\n case 12333:\n HEAP32[value2 >>> 2 >>> 0] = 0;\n return 1;\n case 12334:\n HEAP32[value2 >>> 2 >>> 0] = 0;\n return 1;\n case 12335:\n HEAP32[value2 >>> 2 >>> 0] = 12344;\n return 1;\n case 12337:\n HEAP32[value2 >>> 2 >>> 0] = EGL.contextAttributes.antialias ? 4 : 0;\n return 1;\n case 12338:\n HEAP32[value2 >>> 2 >>> 0] = EGL.contextAttributes.antialias ? 1 : 0;\n return 1;\n case 12339:\n HEAP32[value2 >>> 2 >>> 0] = 4;\n return 1;\n case 12340:\n HEAP32[value2 >>> 2 >>> 0] = 12344;\n return 1;\n case 12341:\n case 12342:\n case 12343:\n HEAP32[value2 >>> 2 >>> 0] = -1;\n return 1;\n case 12345:\n case 12346:\n HEAP32[value2 >>> 2 >>> 0] = 0;\n return 1;\n case 12347:\n HEAP32[value2 >>> 2 >>> 0] = 0;\n return 1;\n case 12348:\n HEAP32[value2 >>> 2 >>> 0] = 1;\n return 1;\n case 12349:\n case 12350:\n HEAP32[value2 >>> 2 >>> 0] = 0;\n return 1;\n case 12351:\n HEAP32[value2 >>> 2 >>> 0] = 12430;\n return 1;\n case 12352:\n HEAP32[value2 >>> 2 >>> 0] = 4;\n return 1;\n case 12354:\n HEAP32[value2 >>> 2 >>> 0] = 0;\n return 1;\n default:\n EGL.setErrorCode(12292);\n return 0;\n }\n }\n _eglGetConfigAttrib.sig = "ippip";\n function _eglCreateWindowSurface(display, config, win, attrib_list) {\n display >>>= 0;\n config >>>= 0;\n attrib_list >>>= 0;\n if (display != 62e3) {\n EGL.setErrorCode(12296);\n return 0;\n }\n if (config != 62002) {\n EGL.setErrorCode(12293);\n return 0;\n }\n EGL.setErrorCode(12288);\n return 62006;\n }\n _eglCreateWindowSurface.sig = "pppip";\n function _eglDestroySurface(display, surface) {\n display >>>= 0;\n surface >>>= 0;\n if (display != 62e3) {\n EGL.setErrorCode(12296);\n return 0;\n }\n if (surface != 62006) {\n EGL.setErrorCode(12301);\n return 1;\n }\n if (EGL.currentReadSurface == surface) {\n EGL.currentReadSurface = 0;\n }\n if (EGL.currentDrawSurface == surface) {\n EGL.currentDrawSurface = 0;\n }\n EGL.setErrorCode(12288);\n return 1;\n }\n _eglDestroySurface.sig = "ipp";\n function _eglCreateContext(display, config, hmm, contextAttribs) {\n display >>>= 0;\n config >>>= 0;\n hmm >>>= 0;\n contextAttribs >>>= 0;\n if (display != 62e3) {\n EGL.setErrorCode(12296);\n return 0;\n }\n var glesContextVersion = 1;\n for (; ; ) {\n var param = HEAP32[contextAttribs >>> 2 >>> 0];\n if (param == 12440) {\n glesContextVersion = HEAP32[contextAttribs + 4 >>> 2 >>> 0];\n } else if (param == 12344) {\n break;\n } else {\n EGL.setErrorCode(12292);\n return 0;\n }\n contextAttribs += 8;\n }\n if (glesContextVersion < 2 || glesContextVersion > 3) {\n EGL.setErrorCode(12293);\n return 0;\n }\n EGL.contextAttributes.majorVersion = glesContextVersion - 1;\n EGL.contextAttributes.minorVersion = 0;\n EGL.context = GL.createContext(Browser.getCanvas(), EGL.contextAttributes);\n if (EGL.context != 0) {\n EGL.setErrorCode(12288);\n GL.makeContextCurrent(EGL.context);\n Browser.useWebGL = true;\n Browser.moduleContextCreatedCallbacks.forEach((callback) => callback());\n GL.makeContextCurrent(null);\n return 62004;\n } else {\n EGL.setErrorCode(12297);\n return 0;\n }\n }\n _eglCreateContext.sig = "ppppp";\n function _eglDestroyContext(display, context) {\n display >>>= 0;\n context >>>= 0;\n if (display != 62e3) {\n EGL.setErrorCode(12296);\n return 0;\n }\n if (context != 62004) {\n EGL.setErrorCode(12294);\n return 0;\n }\n GL.deleteContext(EGL.context);\n EGL.setErrorCode(12288);\n if (EGL.currentContext == context) {\n EGL.currentContext = 0;\n }\n return 1;\n }\n _eglDestroyContext.sig = "ipp";\n function _eglQuerySurface(display, surface, attribute, value2) {\n display >>>= 0;\n surface >>>= 0;\n value2 >>>= 0;\n if (display != 62e3) {\n EGL.setErrorCode(12296);\n return 0;\n }\n if (surface != 62006) {\n EGL.setErrorCode(12301);\n return 0;\n }\n if (!value2) {\n EGL.setErrorCode(12300);\n return 0;\n }\n EGL.setErrorCode(12288);\n switch (attribute) {\n case 12328:\n HEAP32[value2 >>> 2 >>> 0] = 62002;\n return 1;\n case 12376:\n return 1;\n case 12375:\n HEAP32[value2 >>> 2 >>> 0] = Browser.getCanvas().width;\n return 1;\n case 12374:\n HEAP32[value2 >>> 2 >>> 0] = Browser.getCanvas().height;\n return 1;\n case 12432:\n HEAP32[value2 >>> 2 >>> 0] = -1;\n return 1;\n case 12433:\n HEAP32[value2 >>> 2 >>> 0] = -1;\n return 1;\n case 12434:\n HEAP32[value2 >>> 2 >>> 0] = -1;\n return 1;\n case 12422:\n HEAP32[value2 >>> 2 >>> 0] = 12420;\n return 1;\n case 12441:\n HEAP32[value2 >>> 2 >>> 0] = 12442;\n return 1;\n case 12435:\n HEAP32[value2 >>> 2 >>> 0] = 12437;\n return 1;\n case 12416:\n case 12417:\n case 12418:\n case 12419:\n return 1;\n default:\n EGL.setErrorCode(12292);\n return 0;\n }\n }\n _eglQuerySurface.sig = "ippip";\n function _eglQueryContext(display, context, attribute, value2) {\n display >>>= 0;\n context >>>= 0;\n value2 >>>= 0;\n if (display != 62e3) {\n EGL.setErrorCode(12296);\n return 0;\n }\n if (context != 62004) {\n EGL.setErrorCode(12294);\n return 0;\n }\n if (!value2) {\n EGL.setErrorCode(12300);\n return 0;\n }\n EGL.setErrorCode(12288);\n switch (attribute) {\n case 12328:\n HEAP32[value2 >>> 2 >>> 0] = 62002;\n return 1;\n case 12439:\n HEAP32[value2 >>> 2 >>> 0] = 12448;\n return 1;\n case 12440:\n HEAP32[value2 >>> 2 >>> 0] = EGL.contextAttributes.majorVersion + 1;\n return 1;\n case 12422:\n HEAP32[value2 >>> 2 >>> 0] = 12420;\n return 1;\n default:\n EGL.setErrorCode(12292);\n return 0;\n }\n }\n _eglQueryContext.sig = "ippip";\n var _eglGetError = () => EGL.errorCode;\n _eglGetError.sig = "i";\n function _eglQueryString(display, name2) {\n display >>>= 0;\n if (display != 62e3) {\n EGL.setErrorCode(12296);\n return 0;\n }\n EGL.setErrorCode(12288);\n if (EGL.stringCache[name2]) return EGL.stringCache[name2];\n var ret;\n switch (name2) {\n case 12371:\n ret = stringToNewUTF8("Emscripten");\n break;\n case 12372:\n ret = stringToNewUTF8("1.4 Emscripten EGL");\n break;\n case 12373:\n ret = stringToNewUTF8("");\n break;\n case 12429:\n ret = stringToNewUTF8("OpenGL_ES");\n break;\n default:\n EGL.setErrorCode(12300);\n return 0;\n }\n EGL.stringCache[name2] = ret;\n return ret;\n }\n _eglQueryString.sig = "ppi";\n var _eglBindAPI = (api) => {\n if (api == 12448) {\n EGL.setErrorCode(12288);\n return 1;\n }\n EGL.setErrorCode(12300);\n return 0;\n };\n _eglBindAPI.sig = "ii";\n var _eglQueryAPI = () => {\n EGL.setErrorCode(12288);\n return 12448;\n };\n _eglQueryAPI.sig = "i";\n var _eglWaitClient = () => {\n EGL.setErrorCode(12288);\n return 1;\n };\n _eglWaitClient.sig = "i";\n var _eglWaitNative = (nativeEngineId) => {\n EGL.setErrorCode(12288);\n return 1;\n };\n _eglWaitNative.sig = "ii";\n var _eglWaitGL = _eglWaitClient;\n _eglWaitGL.sig = "i";\n function _eglSwapInterval(display, interval) {\n display >>>= 0;\n if (display != 62e3) {\n EGL.setErrorCode(12296);\n return 0;\n }\n if (interval == 0) _emscripten_set_main_loop_timing(0, 0);\n else _emscripten_set_main_loop_timing(1, interval);\n EGL.setErrorCode(12288);\n return 1;\n }\n _eglSwapInterval.sig = "ipi";\n function _eglMakeCurrent(display, draw, read2, context) {\n display >>>= 0;\n draw >>>= 0;\n read2 >>>= 0;\n context >>>= 0;\n if (display != 62e3) {\n EGL.setErrorCode(12296);\n return 0;\n }\n if (context != 0 && context != 62004) {\n EGL.setErrorCode(12294);\n return 0;\n }\n if (read2 != 0 && read2 != 62006 || draw != 0 && draw != 62006) {\n EGL.setErrorCode(12301);\n return 0;\n }\n GL.makeContextCurrent(context ? EGL.context : null);\n EGL.currentContext = context;\n EGL.currentDrawSurface = draw;\n EGL.currentReadSurface = read2;\n EGL.setErrorCode(12288);\n return 1;\n }\n _eglMakeCurrent.sig = "ipppp";\n function _eglGetCurrentContext() {\n return EGL.currentContext;\n }\n _eglGetCurrentContext.sig = "p";\n function _eglGetCurrentSurface(readdraw) {\n if (readdraw == 12378) {\n return EGL.currentReadSurface;\n } else if (readdraw == 12377) {\n return EGL.currentDrawSurface;\n } else {\n EGL.setErrorCode(12300);\n return 0;\n }\n }\n _eglGetCurrentSurface.sig = "pi";\n function _eglGetCurrentDisplay() {\n return EGL.currentContext ? 62e3 : 0;\n }\n _eglGetCurrentDisplay.sig = "p";\n function _eglSwapBuffers(dpy, surface) {\n dpy >>>= 0;\n surface >>>= 0;\n if (!EGL.defaultDisplayInitialized) {\n EGL.setErrorCode(12289);\n } else if (!GLctx) {\n EGL.setErrorCode(12290);\n } else if (GLctx.isContextLost()) {\n EGL.setErrorCode(12302);\n } else {\n EGL.setErrorCode(12288);\n return 1;\n }\n return 0;\n }\n _eglSwapBuffers.sig = "ipp";\n var _eglReleaseThread = () => {\n EGL.currentContext = 0;\n EGL.currentReadSurface = 0;\n EGL.currentDrawSurface = 0;\n EGL.setErrorCode(12288);\n return 1;\n };\n _eglReleaseThread.sig = "i";\n var _SDL_GetTicks = () => Date.now() - SDL.startTime | 0;\n _SDL_GetTicks.sig = "i";\n function _SDL_LockSurface(surf) {\n surf >>>= 0;\n var surfData = SDL.surfaces[surf];\n surfData.locked++;\n if (surfData.locked > 1) return 0;\n if (!surfData.buffer) {\n surfData.buffer = _malloc(surfData.width * surfData.height * 4);\n HEAPU32[surf + 20 >>> 2 >>> 0] = surfData.buffer;\n }\n HEAPU32[surf + 20 >>> 2 >>> 0] = surfData.buffer;\n if (surf == SDL.screen && Module.screenIsReadOnly && surfData.image) return 0;\n if (SDL.defaults.discardOnLock) {\n if (!surfData.image) {\n surfData.image = surfData.ctx.createImageData(surfData.width, surfData.height);\n }\n if (!SDL.defaults.opaqueFrontBuffer) return;\n } else {\n surfData.image = surfData.ctx.getImageData(0, 0, surfData.width, surfData.height);\n }\n if (surf == SDL.screen && SDL.defaults.opaqueFrontBuffer) {\n var data2 = surfData.image.data;\n var num = data2.length;\n for (var i2 = 0; i2 < num / 4; i2++) {\n data2[i2 * 4 + 3] = 255;\n }\n }\n if (SDL.defaults.copyOnLock && !SDL.defaults.discardOnLock) {\n if (surfData.isFlagSet(2097152)) {\n abort("CopyOnLock is not supported for SDL_LockSurface with SDL_HWPALETTE flag set");\n } else {\n HEAPU8.set(surfData.image.data, surfData.buffer >>> 0);\n }\n }\n return 0;\n }\n _SDL_LockSurface.sig = "ip";\n var SDL = { defaults: { width: 320, height: 200, copyOnLock: true, discardOnLock: false, opaqueFrontBuffer: true }, version: null, surfaces: {}, canvasPool: [], events: [], fonts: [null], audios: [null], rwops: [null], music: { audio: null, volume: 1 }, mixerFrequency: 22050, mixerFormat: 32784, mixerNumChannels: 2, mixerChunkSize: 1024, channelMinimumNumber: 0, GL: false, glAttributes: { 0: 3, 1: 3, 2: 2, 3: 0, 4: 0, 5: 1, 6: 16, 7: 0, 8: 0, 9: 0, 10: 0, 11: 0, 12: 0, 13: 0, 14: 0, 15: 1, 16: 0, 17: 0, 18: 0 }, keyboardState: null, keyboardMap: {}, canRequestFullscreen: false, isRequestingFullscreen: false, textInput: false, unicode: false, ttfContext: null, audio: null, startTime: null, initFlags: 0, buttonState: 0, modState: 0, DOMButtons: [0, 0, 0], DOMEventToSDLEvent: {}, TOUCH_DEFAULT_ID: 0, eventHandler: null, eventHandlerContext: null, eventHandlerTemp: 0, keyCodes: { 16: 1249, 17: 1248, 18: 1250, 20: 1081, 33: 1099, 34: 1102, 35: 1101, 36: 1098, 37: 1104, 38: 1106, 39: 1103, 40: 1105, 44: 316, 45: 1097, 46: 127, 91: 1251, 93: 1125, 96: 1122, 97: 1113, 98: 1114, 99: 1115, 100: 1116, 101: 1117, 102: 1118, 103: 1119, 104: 1120, 105: 1121, 106: 1109, 107: 1111, 109: 1110, 110: 1123, 111: 1108, 112: 1082, 113: 1083, 114: 1084, 115: 1085, 116: 1086, 117: 1087, 118: 1088, 119: 1089, 120: 1090, 121: 1091, 122: 1092, 123: 1093, 124: 1128, 125: 1129, 126: 1130, 127: 1131, 128: 1132, 129: 1133, 130: 1134, 131: 1135, 132: 1136, 133: 1137, 134: 1138, 135: 1139, 144: 1107, 160: 94, 161: 33, 162: 34, 163: 35, 164: 36, 165: 37, 166: 38, 167: 95, 168: 40, 169: 41, 170: 42, 171: 43, 172: 124, 173: 45, 174: 123, 175: 125, 176: 126, 181: 127, 182: 129, 183: 128, 188: 44, 190: 46, 191: 47, 192: 96, 219: 91, 220: 92, 221: 93, 222: 39, 224: 1251 }, scanCodes: { 8: 42, 9: 43, 13: 40, 27: 41, 32: 44, 35: 204, 39: 53, 44: 54, 46: 55, 47: 56, 48: 39, 49: 30, 50: 31, 51: 32, 52: 33, 53: 34, 54: 35, 55: 36, 56: 37, 57: 38, 58: 203, 59: 51, 61: 46, 91: 47, 92: 49, 93: 48, 96: 52, 97: 4, 98: 5, 99: 6, 100: 7, 101: 8, 102: 9, 103: 10, 104: 11, 105: 12, 106: 13, 107: 14, 108: 15, 109: 16, 110: 17, 111: 18, 112: 19, 113: 20, 114: 21, 115: 22, 116: 23, 117: 24, 118: 25, 119: 26, 120: 27, 121: 28, 122: 29, 127: 76, 305: 224, 308: 226, 316: 70 }, loadRect(rect) {\n return { x: HEAP32[rect >>> 2 >>> 0], y: HEAP32[rect + 4 >>> 2 >>> 0], w: HEAP32[rect + 8 >>> 2 >>> 0], h: HEAP32[rect + 12 >>> 2 >>> 0] };\n }, updateRect(rect, r) {\n HEAP32[rect >>> 2 >>> 0] = r.x;\n HEAP32[rect + 4 >>> 2 >>> 0] = r.y;\n HEAP32[rect + 8 >>> 2 >>> 0] = r.w;\n HEAP32[rect + 12 >>> 2 >>> 0] = r.h;\n }, intersectionOfRects(first, second) {\n var leftX = Math.max(first.x, second.x);\n var leftY = Math.max(first.y, second.y);\n var rightX = Math.min(first.x + first.w, second.x + second.w);\n var rightY = Math.min(first.y + first.h, second.y + second.h);\n return { x: leftX, y: leftY, w: Math.max(leftX, rightX) - leftX, h: Math.max(leftY, rightY) - leftY };\n }, checkPixelFormat(fmt) {\n }, loadColorToCSSRGB(color) {\n var rgba = HEAP32[color >>> 2 >>> 0];\n return "rgb(" + (rgba & 255) + "," + (rgba >> 8 & 255) + "," + (rgba >> 16 & 255) + ")";\n }, loadColorToCSSRGBA(color) {\n var rgba = HEAP32[color >>> 2 >>> 0];\n return "rgba(" + (rgba & 255) + "," + (rgba >> 8 & 255) + "," + (rgba >> 16 & 255) + "," + (rgba >> 24 & 255) / 255 + ")";\n }, translateColorToCSSRGBA: (rgba) => "rgba(" + (rgba & 255) + "," + (rgba >> 8 & 255) + "," + (rgba >> 16 & 255) + "," + (rgba >>> 24) / 255 + ")", translateRGBAToCSSRGBA: (r, g, b2, a) => "rgba(" + (r & 255) + "," + (g & 255) + "," + (b2 & 255) + "," + (a & 255) / 255 + ")", translateRGBAToColor: (r, g, b2, a) => r | g << 8 | b2 << 16 | a << 24, makeSurface(width, height, flags2, usePageCanvas, source, rmask, gmask, bmask, amask) {\n var is_SDL_HWSURFACE = flags2 & 134217729;\n var is_SDL_HWPALETTE = flags2 & 2097152;\n var is_SDL_OPENGL = flags2 & 67108864;\n var surf = _malloc(60);\n var pixelFormat = _malloc(44);\n var bpp = is_SDL_HWPALETTE ? 1 : 4;\n var buffer = 0;\n if (!is_SDL_HWSURFACE && !is_SDL_OPENGL) {\n buffer = _malloc(width * height * 4);\n }\n HEAP32[surf >>> 2 >>> 0] = flags2;\n HEAPU32[surf + 4 >>> 2 >>> 0] = pixelFormat;\n HEAP32[surf + 8 >>> 2 >>> 0] = width;\n HEAP32[surf + 12 >>> 2 >>> 0] = height;\n HEAP32[surf + 16 >>> 2 >>> 0] = width * bpp;\n HEAPU32[surf + 20 >>> 2 >>> 0] = buffer;\n var canvas = Browser.getCanvas();\n HEAP32[surf + 36 >>> 2 >>> 0] = 0;\n HEAP32[surf + 40 >>> 2 >>> 0] = 0;\n HEAP32[surf + 44 >>> 2 >>> 0] = canvas.width;\n HEAP32[surf + 48 >>> 2 >>> 0] = canvas.height;\n HEAP32[surf + 56 >>> 2 >>> 0] = 1;\n HEAP32[pixelFormat >>> 2 >>> 0] = -2042224636;\n HEAP32[pixelFormat + 4 >>> 2 >>> 0] = 0;\n HEAP8[pixelFormat + 8 >>> 0] = bpp * 8;\n HEAP8[pixelFormat + 9 >>> 0] = bpp;\n HEAP32[pixelFormat + 12 >>> 2 >>> 0] = rmask || 255;\n HEAP32[pixelFormat + 16 >>> 2 >>> 0] = gmask || 65280;\n HEAP32[pixelFormat + 20 >>> 2 >>> 0] = bmask || 16711680;\n HEAP32[pixelFormat + 24 >>> 2 >>> 0] = amask || 4278190080;\n SDL.GL = SDL.GL || is_SDL_OPENGL;\n if (!usePageCanvas) {\n if (SDL.canvasPool.length > 0) {\n canvas = SDL.canvasPool.pop();\n } else {\n canvas = document.createElement("canvas");\n }\n canvas.width = width;\n canvas.height = height;\n }\n var webGLContextAttributes = { antialias: SDL.glAttributes[13] != 0 && SDL.glAttributes[14] > 1, depth: SDL.glAttributes[6] > 0, stencil: SDL.glAttributes[7] > 0, alpha: SDL.glAttributes[3] > 0 };\n var ctx = Browser.createContext(canvas, is_SDL_OPENGL, usePageCanvas, webGLContextAttributes);\n SDL.surfaces[surf] = { width, height, canvas, ctx, surf, buffer, pixelFormat, alpha: 255, flags: flags2, locked: 0, usePageCanvas, source, isFlagSet: (flag) => flags2 & flag };\n return surf;\n }, copyIndexedColorData(surfData, rX, rY, rW, rH) {\n if (!surfData.colors) {\n return;\n }\n var canvas = Browser.getCanvas();\n var fullWidth = canvas.width;\n var fullHeight = canvas.height;\n var startX = rX || 0;\n var startY = rY || 0;\n var endX = (rW || fullWidth - startX) + startX;\n var endY = (rH || fullHeight - startY) + startY;\n var buffer = surfData.buffer;\n if (!surfData.image.data32) {\n surfData.image.data32 = new Uint32Array(surfData.image.data.buffer);\n }\n var data32 = surfData.image.data32;\n var colors32 = surfData.colors32;\n for (var y = startY; y < endY; ++y) {\n var base = y * fullWidth;\n for (var x2 = startX; x2 < endX; ++x2) {\n data32[base + x2] = colors32[HEAPU8[buffer + (base + x2) >>> 0]];\n }\n }\n }, freeSurface(surf) {\n var refcountPointer = surf + 56;\n var refcount = HEAP32[refcountPointer >>> 2 >>> 0];\n if (refcount > 1) {\n HEAP32[refcountPointer >>> 2 >>> 0] = refcount - 1;\n return;\n }\n var info2 = SDL.surfaces[surf];\n if (!info2.usePageCanvas && info2.canvas) SDL.canvasPool.push(info2.canvas);\n _free(info2.buffer);\n _free(info2.pixelFormat);\n _free(surf);\n SDL.surfaces[surf] = null;\n if (surf === SDL.screen) {\n SDL.screen = null;\n }\n }, blitSurface(src, srcrect, dst, dstrect, scale) {\n var srcData = SDL.surfaces[src];\n var dstData = SDL.surfaces[dst];\n var sr, dr;\n if (srcrect) {\n sr = SDL.loadRect(srcrect);\n } else {\n sr = { x: 0, y: 0, w: srcData.width, h: srcData.height };\n }\n if (dstrect) {\n dr = SDL.loadRect(dstrect);\n } else {\n dr = { x: 0, y: 0, w: srcData.width, h: srcData.height };\n }\n if (dstData.clipRect) {\n var widthScale = !scale || sr.w === 0 ? 1 : sr.w / dr.w;\n var heightScale = !scale || sr.h === 0 ? 1 : sr.h / dr.h;\n dr = SDL.intersectionOfRects(dstData.clipRect, dr);\n sr.w = dr.w * widthScale;\n sr.h = dr.h * heightScale;\n if (dstrect) {\n SDL.updateRect(dstrect, dr);\n }\n }\n var blitw, blith;\n if (scale) {\n blitw = dr.w;\n blith = dr.h;\n } else {\n blitw = sr.w;\n blith = sr.h;\n }\n if (sr.w === 0 || sr.h === 0 || blitw === 0 || blith === 0) {\n return 0;\n }\n var oldAlpha = dstData.ctx.globalAlpha;\n dstData.ctx.globalAlpha = srcData.alpha / 255;\n dstData.ctx.drawImage(srcData.canvas, sr.x, sr.y, sr.w, sr.h, dr.x, dr.y, blitw, blith);\n dstData.ctx.globalAlpha = oldAlpha;\n if (dst != SDL.screen) {\n warnOnce("WARNING: copying canvas data to memory for compatibility");\n _SDL_LockSurface(dst);\n dstData.locked--;\n }\n return 0;\n }, downFingers: {}, savedKeydown: null, receiveEvent(event) {\n function unpressAllPressedKeys() {\n for (var keyCode of Object.values(SDL.keyboardMap)) {\n SDL.events.push({ type: "keyup", keyCode });\n }\n }\n switch (event.type) {\n case "touchstart":\n case "touchmove": {\n event.preventDefault();\n var touches = [];\n if (event.type === "touchstart") {\n for (var touch of event.touches) {\n if (SDL.downFingers[touch.identifier] != true) {\n SDL.downFingers[touch.identifier] = true;\n touches.push(touch);\n }\n }\n } else {\n touches = event.touches;\n }\n var firstTouch = touches[0];\n if (firstTouch) {\n if (event.type == "touchstart") {\n SDL.DOMButtons[0] = 1;\n }\n var mouseEventType;\n switch (event.type) {\n case "touchstart":\n mouseEventType = "mousedown";\n break;\n case "touchmove":\n mouseEventType = "mousemove";\n break;\n }\n var mouseEvent = { type: mouseEventType, button: 0, pageX: firstTouch.clientX, pageY: firstTouch.clientY };\n SDL.events.push(mouseEvent);\n }\n for (var touch of touches) {\n SDL.events.push({ type: event.type, touch });\n }\n break;\n }\n case "touchend": {\n event.preventDefault();\n for (var touch of event.changedTouches) {\n if (SDL.downFingers[touch.identifier] === true) {\n delete SDL.downFingers[touch.identifier];\n }\n }\n var mouseEvent = { type: "mouseup", button: 0, pageX: event.changedTouches[0].clientX, pageY: event.changedTouches[0].clientY };\n SDL.DOMButtons[0] = 0;\n SDL.events.push(mouseEvent);\n for (var touch of event.changedTouches) {\n SDL.events.push({ type: "touchend", touch });\n }\n break;\n }\n case "DOMMouseScroll":\n case "mousewheel":\n case "wheel":\n var delta = -Browser.getMouseWheelDelta(event);\n delta = delta == 0 ? 0 : delta > 0 ? Math.max(delta, 1) : Math.min(delta, -1);\n var button = (delta > 0 ? 4 : 5) - 1;\n SDL.events.push({ type: "mousedown", button, pageX: event.pageX, pageY: event.pageY });\n SDL.events.push({ type: "mouseup", button, pageX: event.pageX, pageY: event.pageY });\n SDL.events.push({ type: "wheel", deltaX: 0, deltaY: delta });\n event.preventDefault();\n break;\n case "mousemove":\n if (SDL.DOMButtons[0] === 1) {\n SDL.events.push({ type: "touchmove", touch: { identifier: 0, deviceID: -1, pageX: event.pageX, pageY: event.pageY } });\n }\n if (Browser.pointerLock) {\n if ("mozMovementX" in event) {\n event["movementX"] = event["mozMovementX"];\n event["movementY"] = event["mozMovementY"];\n }\n if (event["movementX"] == 0 && event["movementY"] == 0) {\n event.preventDefault();\n return;\n }\n }\n case "keydown":\n case "keyup":\n case "keypress":\n case "mousedown":\n case "mouseup":\n if (event.type !== "keydown" || !SDL.unicode && !SDL.textInput || (event.key == "Backspace" || event.key == "Tab")) {\n event.preventDefault();\n }\n if (event.type == "mousedown") {\n SDL.DOMButtons[event.button] = 1;\n SDL.events.push({ type: "touchstart", touch: { identifier: 0, deviceID: -1, pageX: event.pageX, pageY: event.pageY } });\n } else if (event.type == "mouseup") {\n if (!SDL.DOMButtons[event.button]) {\n return;\n }\n SDL.events.push({ type: "touchend", touch: { identifier: 0, deviceID: -1, pageX: event.pageX, pageY: event.pageY } });\n SDL.DOMButtons[event.button] = 0;\n }\n if (event.type === "keydown" || event.type === "mousedown") {\n SDL.canRequestFullscreen = true;\n } else if (event.type === "keyup" || event.type === "mouseup") {\n if (SDL.isRequestingFullscreen) {\n Module["requestFullscreen"](true, true);\n SDL.isRequestingFullscreen = false;\n }\n SDL.canRequestFullscreen = false;\n }\n if (event.type === "keypress" && SDL.savedKeydown) {\n SDL.savedKeydown.keypressCharCode = event.charCode;\n SDL.savedKeydown = null;\n } else if (event.type === "keydown") {\n SDL.savedKeydown = event;\n }\n if (event.type !== "keypress" || SDL.textInput) {\n SDL.events.push(event);\n }\n break;\n case "mouseout":\n for (var i2 = 0; i2 < 3; i2++) {\n if (SDL.DOMButtons[i2]) {\n SDL.events.push({ type: "mouseup", button: i2, pageX: event.pageX, pageY: event.pageY });\n SDL.DOMButtons[i2] = 0;\n }\n }\n event.preventDefault();\n break;\n case "focus":\n SDL.events.push(event);\n event.preventDefault();\n break;\n case "blur":\n SDL.events.push(event);\n unpressAllPressedKeys();\n event.preventDefault();\n break;\n case "visibilitychange":\n SDL.events.push({ type: "visibilitychange", visible: !document.hidden });\n unpressAllPressedKeys();\n event.preventDefault();\n break;\n case "unload":\n if (MainLoop.runner) {\n SDL.events.push(event);\n MainLoop.runner();\n }\n return;\n case "resize":\n SDL.events.push(event);\n if (event.preventDefault) {\n event.preventDefault();\n }\n break;\n }\n if (SDL.events.length >= 1e4) {\n err("SDL event queue full, dropping events");\n SDL.events = SDL.events.slice(0, 1e4);\n }\n SDL.flushEventsToHandler();\n return;\n }, lookupKeyCodeForEvent(event) {\n var code = event.keyCode;\n if (code >= 65 && code <= 90) {\n code += 32;\n } else {\n code = SDL.keyCodes[code] || (code < 128 ? code : 0);\n if (event.location === 2 && code >= (224 | 1 << 10) && code <= (227 | 1 << 10)) {\n code += 4;\n }\n }\n return code;\n }, handleEvent(event) {\n if (event.handled) return;\n event.handled = true;\n switch (event.type) {\n case "touchstart":\n case "touchend":\n case "touchmove": {\n Browser.calculateMouseEvent(event);\n break;\n }\n case "keydown":\n case "keyup": {\n var down = event.type === "keydown";\n var code = SDL.lookupKeyCodeForEvent(event);\n if (!code) return;\n HEAP8[SDL.keyboardState + code >>> 0] = down;\n SDL.modState = (HEAP8[SDL.keyboardState + 1248 >>> 0] ? 64 : 0) | (HEAP8[SDL.keyboardState + 1249 >>> 0] ? 1 : 0) | (HEAP8[SDL.keyboardState + 1250 >>> 0] ? 256 : 0) | (HEAP8[SDL.keyboardState + 1252 >>> 0] ? 128 : 0) | (HEAP8[SDL.keyboardState + 1253 >>> 0] ? 2 : 0) | (HEAP8[SDL.keyboardState + 1254 >>> 0] ? 512 : 0);\n if (down) {\n SDL.keyboardMap[code] = event.keyCode;\n } else {\n delete SDL.keyboardMap[code];\n }\n break;\n }\n case "mousedown":\n case "mouseup":\n if (event.type == "mousedown") {\n SDL.buttonState |= 1 << event.button;\n } else if (event.type == "mouseup") {\n SDL.buttonState &= ~(1 << event.button);\n }\n case "mousemove": {\n Browser.calculateMouseEvent(event);\n break;\n }\n }\n }, flushEventsToHandler() {\n if (!SDL.eventHandler) return;\n while (SDL.pollEvent(SDL.eventHandlerTemp)) {\n getWasmTableEntry(SDL.eventHandler)(SDL.eventHandlerContext, SDL.eventHandlerTemp);\n }\n }, pollEvent(ptr2) {\n if (SDL.initFlags & 512 && SDL.joystickEventState) {\n SDL.queryJoysticks();\n }\n if (ptr2) {\n while (SDL.events.length > 0) {\n if (SDL.makeCEvent(SDL.events.shift(), ptr2) !== false) return 1;\n }\n return 0;\n }\n return SDL.events.length > 0;\n }, makeCEvent(event, ptr2) {\n if (typeof event == "number") {\n _memcpy(ptr2, event, 28);\n _free(event);\n return;\n }\n SDL.handleEvent(event);\n switch (event.type) {\n case "keydown":\n case "keyup": {\n var down = event.type === "keydown";\n var key = SDL.lookupKeyCodeForEvent(event);\n if (!key) return false;\n var scan;\n if (key >= 1024) {\n scan = key - 1024;\n } else {\n scan = SDL.scanCodes[key] || key;\n }\n HEAP32[ptr2 >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n HEAP8[ptr2 + 8 >>> 0] = down ? 1 : 0;\n HEAP8[ptr2 + 9 >>> 0] = 0;\n HEAP32[ptr2 + 12 >>> 2 >>> 0] = scan;\n HEAP32[ptr2 + 16 >>> 2 >>> 0] = key;\n HEAP16[ptr2 + 20 >>> 1 >>> 0] = SDL.modState;\n HEAP32[ptr2 + 24 >>> 2 >>> 0] = event.keypressCharCode || key;\n break;\n }\n case "keypress": {\n HEAP32[ptr2 >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n stringToUTF8(String.fromCharCode(event.charCode), ptr2 + 8, 4);\n break;\n }\n case "mousedown":\n case "mouseup":\n case "mousemove": {\n if (event.type != "mousemove") {\n var down = event.type === "mousedown";\n HEAP32[ptr2 >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n HEAP32[ptr2 + 4 >>> 2 >>> 0] = 0;\n HEAP32[ptr2 + 8 >>> 2 >>> 0] = 0;\n HEAP32[ptr2 + 12 >>> 2 >>> 0] = 0;\n HEAP8[ptr2 + 16 >>> 0] = event.button + 1;\n HEAP8[ptr2 + 17 >>> 0] = down ? 1 : 0;\n HEAP32[ptr2 + 20 >>> 2 >>> 0] = Browser.mouseX;\n HEAP32[ptr2 + 24 >>> 2 >>> 0] = Browser.mouseY;\n } else {\n HEAP32[ptr2 >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n HEAP32[ptr2 + 4 >>> 2 >>> 0] = 0;\n HEAP32[ptr2 + 8 >>> 2 >>> 0] = 0;\n HEAP32[ptr2 + 12 >>> 2 >>> 0] = 0;\n HEAP32[ptr2 + 16 >>> 2 >>> 0] = SDL.buttonState;\n HEAP32[ptr2 + 20 >>> 2 >>> 0] = Browser.mouseX;\n HEAP32[ptr2 + 24 >>> 2 >>> 0] = Browser.mouseY;\n HEAP32[ptr2 + 28 >>> 2 >>> 0] = Browser.mouseMovementX;\n HEAP32[ptr2 + 32 >>> 2 >>> 0] = Browser.mouseMovementY;\n }\n break;\n }\n case "wheel": {\n HEAP32[ptr2 >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n HEAP32[ptr2 + 16 >>> 2 >>> 0] = event.deltaX;\n HEAP32[ptr2 + 20 >>> 2 >>> 0] = event.deltaY;\n break;\n }\n case "touchstart":\n case "touchend":\n case "touchmove": {\n var touch = event.touch;\n if (!Browser.touches[touch.identifier]) break;\n var canvas = Browser.getCanvas();\n var x2 = Browser.touches[touch.identifier].x / canvas.width;\n var y = Browser.touches[touch.identifier].y / canvas.height;\n var lx = Browser.lastTouches[touch.identifier].x / canvas.width;\n var ly = Browser.lastTouches[touch.identifier].y / canvas.height;\n var dx = x2 - lx;\n var dy = y - ly;\n if (touch["deviceID"] === void 0) touch.deviceID = SDL.TOUCH_DEFAULT_ID;\n if (dx === 0 && dy === 0 && event.type === "touchmove") return false;\n HEAP32[ptr2 >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n HEAP32[ptr2 + 4 >>> 2 >>> 0] = _SDL_GetTicks();\n HEAP64[ptr2 + 8 >>> 3 >>> 0] = BigInt(touch.deviceID);\n HEAP64[ptr2 + 16 >>> 3 >>> 0] = BigInt(touch.identifier);\n HEAPF32[ptr2 + 24 >>> 2 >>> 0] = x2;\n HEAPF32[ptr2 + 28 >>> 2 >>> 0] = y;\n HEAPF32[ptr2 + 32 >>> 2 >>> 0] = dx;\n HEAPF32[ptr2 + 36 >>> 2 >>> 0] = dy;\n if (touch.force !== void 0) {\n HEAPF32[ptr2 + 40 >>> 2 >>> 0] = touch.force;\n } else {\n HEAPF32[ptr2 + 40 >>> 2 >>> 0] = event.type == "touchend" ? 0 : 1;\n }\n break;\n }\n case "unload": {\n HEAP32[ptr2 >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n break;\n }\n case "resize": {\n HEAP32[ptr2 >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n HEAP32[ptr2 + 4 >>> 2 >>> 0] = event.w;\n HEAP32[ptr2 + 8 >>> 2 >>> 0] = event.h;\n break;\n }\n case "joystick_button_up":\n case "joystick_button_down": {\n var state = event.type === "joystick_button_up" ? 0 : 1;\n HEAP32[ptr2 >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n HEAP8[ptr2 + 4 >>> 0] = event.index;\n HEAP8[ptr2 + 5 >>> 0] = event.button;\n HEAP8[ptr2 + 6 >>> 0] = state;\n break;\n }\n case "joystick_axis_motion": {\n HEAP32[ptr2 >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n HEAP8[ptr2 + 4 >>> 0] = event.index;\n HEAP8[ptr2 + 5 >>> 0] = event.axis;\n HEAP32[ptr2 + 8 >>> 2 >>> 0] = SDL.joystickAxisValueConversion(event.value);\n break;\n }\n case "focus": {\n HEAP32[ptr2 >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n HEAP32[ptr2 + 4 >>> 2 >>> 0] = 0;\n HEAP8[ptr2 + 8 >>> 0] = 12;\n break;\n }\n case "blur": {\n HEAP32[ptr2 >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n HEAP32[ptr2 + 4 >>> 2 >>> 0] = 0;\n HEAP8[ptr2 + 8 >>> 0] = 13;\n break;\n }\n case "visibilitychange": {\n var visibilityEventID = event.visible ? 1 : 2;\n HEAP32[ptr2 >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n HEAP32[ptr2 + 4 >>> 2 >>> 0] = 0;\n HEAP8[ptr2 + 8 >>> 0] = visibilityEventID;\n break;\n }\n default:\n abort("Unhandled SDL event: " + event.type);\n }\n }, makeFontString(height, fontName) {\n if (fontName.charAt(0) != "\'" && fontName.charAt(0) != \'"\') {\n fontName = \'"\' + fontName + \'"\';\n }\n return height + "px " + fontName + ", serif";\n }, estimateTextWidth(fontData, text) {\n var h = fontData.size;\n var fontString = SDL.makeFontString(h, fontData.name);\n var tempCtx = SDL.ttfContext;\n tempCtx.font = fontString;\n var ret = tempCtx.measureText(text).width | 0;\n return ret;\n }, allocateChannels(num) {\n if (SDL.numChannels >= num && num != 0) return;\n SDL.numChannels = num;\n SDL.channels = [];\n for (var i2 = 0; i2 < num; i2++) {\n SDL.channels[i2] = { audio: null, volume: 1 };\n }\n }, setGetVolume(info2, volume) {\n if (!info2) return 0;\n var ret = info2.volume * 128;\n if (volume != -1) {\n info2.volume = Math.min(Math.max(volume, 0), 128) / 128;\n if (info2.audio) {\n try {\n info2.audio.volume = info2.volume;\n if (info2.audio.webAudioGainNode) info2.audio.webAudioGainNode["gain"]["value"] = info2.volume;\n } catch (e) {\n err(`setGetVolume failed to set audio volume: ${e}`);\n }\n }\n }\n return ret;\n }, setPannerPosition(info2, x2, y, z2) {\n info2?.audio?.webAudioPannerNode?.["setPosition"](x2, y, z2);\n }, playWebAudio(audio) {\n if (!audio) return;\n if (audio.webAudioNode) return;\n if (!SDL.webAudioAvailable()) return;\n try {\n var webAudio = audio.resource.webAudio;\n audio.paused = false;\n if (!webAudio.decodedBuffer) {\n if (webAudio.onDecodeComplete === void 0) {\n abort("Cannot play back audio object that was not loaded");\n }\n webAudio.onDecodeComplete.push(() => {\n if (!audio.paused) SDL.playWebAudio(audio);\n });\n return;\n }\n audio.webAudioNode = SDL.audioContext["createBufferSource"]();\n audio.webAudioNode["buffer"] = webAudio.decodedBuffer;\n audio.webAudioNode["loop"] = audio.loop;\n audio.webAudioNode["onended"] = audio["onended"];\n audio.webAudioPannerNode = SDL.audioContext["createPanner"]();\n audio.webAudioPannerNode["setPosition"](0, 0, -0.5);\n audio.webAudioPannerNode["panningModel"] = "equalpower";\n audio.webAudioGainNode = SDL.audioContext["createGain"]();\n audio.webAudioGainNode["gain"]["value"] = audio.volume;\n audio.webAudioNode["connect"](audio.webAudioPannerNode);\n audio.webAudioPannerNode["connect"](audio.webAudioGainNode);\n audio.webAudioGainNode["connect"](SDL.audioContext["destination"]);\n audio.webAudioNode["start"](0, audio.currentPosition);\n audio.startTime = SDL.audioContext["currentTime"] - audio.currentPosition;\n } catch (e) {\n err(`playWebAudio failed: ${e}`);\n }\n }, pauseWebAudio(audio) {\n if (!audio) return;\n if (audio.webAudioNode) {\n try {\n audio.currentPosition = (SDL.audioContext["currentTime"] - audio.startTime) % audio.resource.webAudio.decodedBuffer.duration;\n audio.webAudioNode["onended"] = void 0;\n audio.webAudioNode.stop(0);\n audio.webAudioNode = void 0;\n } catch (e) {\n err(`pauseWebAudio failed: ${e}`);\n }\n }\n audio.paused = true;\n }, openAudioContext() {\n if (!SDL.audioContext) {\n if (typeof AudioContext != "undefined") {\n SDL.audioContext = new AudioContext();\n } else if (typeof webkitAudioContext != "undefined") {\n SDL.audioContext = new webkitAudioContext();\n }\n }\n }, webAudioAvailable: () => !!SDL.audioContext, fillWebAudioBufferFromHeap(heapPtr, sizeSamplesPerChannel, dstAudioBuffer) {\n var audio = SDL.audio;\n var numChannels = audio.channels;\n for (var c = 0; c < numChannels; ++c) {\n var channelData = dstAudioBuffer["getChannelData"](c);\n if (channelData.length != sizeSamplesPerChannel) {\n abort("Web Audio output buffer length mismatch! Destination size: " + channelData.length + " samples vs expected " + sizeSamplesPerChannel + " samples!");\n }\n if (audio.format == 32784) {\n for (var j2 = 0; j2 < sizeSamplesPerChannel; ++j2) {\n channelData[j2] = HEAP16[heapPtr + (j2 * numChannels + c) * 2 >>> 1 >>> 0] / 32768;\n }\n } else if (audio.format == 8) {\n for (var j2 = 0; j2 < sizeSamplesPerChannel; ++j2) {\n var v2 = HEAP8[heapPtr + (j2 * numChannels + c) >>> 0];\n channelData[j2] = (v2 >= 0 ? v2 - 128 : v2 + 128) / 128;\n }\n } else if (audio.format == 33056) {\n for (var j2 = 0; j2 < sizeSamplesPerChannel; ++j2) {\n channelData[j2] = HEAPF32[heapPtr + (j2 * numChannels + c) * 4 >>> 2 >>> 0];\n }\n } else {\n abort("Invalid SDL audio format " + audio.format + "!");\n }\n }\n }, joystickEventState: 1, lastJoystickState: {}, joystickNamePool: {}, recordJoystickState(joystick, state) {\n var buttons = [];\n for (var button of state.buttons) {\n buttons.push(SDL.getJoystickButtonState(button));\n }\n SDL.lastJoystickState[joystick] = { buttons, axes: state.axes.slice(0), timestamp: state.timestamp, index: state.index, id: state.id };\n }, getJoystickButtonState(button) {\n if (typeof button == "object") {\n return button["pressed"];\n }\n return button > 0;\n }, queryJoysticks() {\n for (var joystick in SDL.lastJoystickState) {\n var state = SDL.getGamepad(joystick - 1);\n var prevState = SDL.lastJoystickState[joystick];\n if (typeof state == "undefined") return;\n if (state === null) return;\n if (typeof state.timestamp != "number" || state.timestamp != prevState.timestamp || !state.timestamp) {\n var i2;\n for (i2 = 0; i2 < state.buttons.length; i2++) {\n var buttonState = SDL.getJoystickButtonState(state.buttons[i2]);\n if (buttonState !== prevState.buttons[i2]) {\n SDL.events.push({ type: buttonState ? "joystick_button_down" : "joystick_button_up", joystick, index: joystick - 1, button: i2 });\n }\n }\n for (i2 = 0; i2 < state.axes.length; i2++) {\n if (state.axes[i2] !== prevState.axes[i2]) {\n SDL.events.push({ type: "joystick_axis_motion", joystick, index: joystick - 1, axis: i2, value: state.axes[i2] });\n }\n }\n SDL.recordJoystickState(joystick, state);\n }\n }\n }, joystickAxisValueConversion(value2) {\n value2 = Math.min(1, Math.max(value2, -1));\n return Math.ceil((value2 + 1) * 32767.5 - 32768);\n }, getGamepads() {\n if (!navigator.getGamepads) {\n return [];\n }\n return navigator.getGamepads();\n }, getGamepad(deviceIndex) {\n var gamepads = SDL.getGamepads();\n if (gamepads.length > deviceIndex && deviceIndex >= 0) {\n return gamepads[deviceIndex];\n }\n return null;\n } };\n function _SDL_Linked_Version() {\n if (SDL.version === null) {\n SDL.version = _malloc(3);\n HEAP8[SDL.version >>> 0] = 1;\n HEAP8[SDL.version + 1 >>> 0] = 3;\n HEAP8[SDL.version + 2 >>> 0] = 0;\n }\n return SDL.version;\n }\n _SDL_Linked_Version.sig = "p";\n var _SDL_Init = (initFlags) => {\n SDL.startTime = Date.now();\n SDL.initFlags = initFlags;\n if (!Module["doNotCaptureKeyboard"]) {\n var keyboardListeningElement = Module["keyboardListeningElement"] || document;\n keyboardListeningElement.addEventListener("keydown", SDL.receiveEvent);\n keyboardListeningElement.addEventListener("keyup", SDL.receiveEvent);\n keyboardListeningElement.addEventListener("keypress", SDL.receiveEvent);\n window.addEventListener("focus", SDL.receiveEvent);\n window.addEventListener("blur", SDL.receiveEvent);\n document.addEventListener("visibilitychange", SDL.receiveEvent);\n }\n window.addEventListener("unload", SDL.receiveEvent);\n SDL.keyboardState = _calloc(65536, 1);\n SDL.DOMEventToSDLEvent["keydown"] = 768;\n SDL.DOMEventToSDLEvent["keyup"] = 769;\n SDL.DOMEventToSDLEvent["keypress"] = 771;\n SDL.DOMEventToSDLEvent["mousedown"] = 1025;\n SDL.DOMEventToSDLEvent["mouseup"] = 1026;\n SDL.DOMEventToSDLEvent["mousemove"] = 1024;\n SDL.DOMEventToSDLEvent["wheel"] = 1027;\n SDL.DOMEventToSDLEvent["touchstart"] = 1792;\n SDL.DOMEventToSDLEvent["touchend"] = 1793;\n SDL.DOMEventToSDLEvent["touchmove"] = 1794;\n SDL.DOMEventToSDLEvent["unload"] = 256;\n SDL.DOMEventToSDLEvent["resize"] = 28673;\n SDL.DOMEventToSDLEvent["visibilitychange"] = 512;\n SDL.DOMEventToSDLEvent["focus"] = 512;\n SDL.DOMEventToSDLEvent["blur"] = 512;\n SDL.DOMEventToSDLEvent["joystick_axis_motion"] = 1536;\n SDL.DOMEventToSDLEvent["joystick_button_down"] = 1539;\n SDL.DOMEventToSDLEvent["joystick_button_up"] = 1540;\n return 0;\n };\n _SDL_Init.sig = "ii";\n var _SDL_WasInit = (flags2) => {\n if (SDL.startTime === null) {\n _SDL_Init(0);\n }\n return 1;\n };\n _SDL_WasInit.sig = "ii";\n function _SDL_GetVideoInfo() {\n var ret = _calloc(20, 1);\n var canvas = Browser.getCanvas();\n HEAP32[ret + 12 >>> 2 >>> 0] = canvas.width;\n HEAP32[ret + 16 >>> 2 >>> 0] = canvas.height;\n return ret;\n }\n _SDL_GetVideoInfo.sig = "p";\n function _SDL_ListModes(format, flags2) {\n format >>>= 0;\n return -1;\n }\n _SDL_ListModes.sig = "ppi";\n var _SDL_VideoModeOK = (width, height, depth, flags2) => depth;\n _SDL_VideoModeOK.sig = "iiiii";\n function _SDL_VideoDriverName(buf, max_size) {\n buf >>>= 0;\n if (SDL.startTime === null) {\n return 0;\n }\n var driverName = [101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 95, 115, 100, 108, 95, 100, 114, 105, 118, 101, 114];\n var index = 0;\n var size = driverName.length;\n if (max_size <= size) {\n size = max_size - 1;\n }\n while (index < size) {\n var value2 = driverName[index];\n HEAP8[buf + index >>> 0] = value2;\n index++;\n }\n HEAP8[buf + index >>> 0] = 0;\n return buf;\n }\n _SDL_VideoDriverName.sig = "ppi";\n var _SDL_AudioDriverName = _SDL_VideoDriverName;\n _SDL_AudioDriverName.sig = "ppi";\n var _SDL_SetVideoMode = function(width, height, depth, flags2) {\n var canvas = Browser.getCanvas();\n ["touchstart", "touchend", "touchmove", "mousedown", "mouseup", "mousemove", "mousewheel", "wheel", "mouseout", "DOMMouseScroll"].forEach((e) => canvas.addEventListener(e, SDL.receiveEvent, true));\n if (width == 0 && height == 0) {\n width = canvas.width;\n height = canvas.height;\n }\n if (!SDL.addedResizeListener) {\n SDL.addedResizeListener = true;\n Browser.resizeListeners.push((w2, h) => {\n if (!SDL.settingVideoMode) {\n SDL.receiveEvent({ type: "resize", w: w2, h });\n }\n });\n }\n SDL.settingVideoMode = true;\n Browser.setCanvasSize(width, height);\n SDL.settingVideoMode = false;\n if (SDL.screen) {\n SDL.freeSurface(SDL.screen);\n }\n if (SDL.GL) flags2 = flags2 | 67108864;\n SDL.screen = SDL.makeSurface(width, height, flags2, true, "screen");\n return SDL.screen;\n };\n _SDL_SetVideoMode.sig = "piiii";\n function _SDL_GetVideoSurface() {\n return SDL.screen;\n }\n _SDL_GetVideoSurface.sig = "p";\n var _SDL_AudioQuit = () => {\n for (var i2 = 0; i2 < SDL.numChannels; ++i2) {\n var chan = SDL.channels[i2];\n if (chan.audio) {\n chan.audio.pause();\n chan.audio = void 0;\n }\n }\n var audio = SDL.music.audio;\n audio?.pause();\n SDL.music.audio = void 0;\n };\n _SDL_AudioQuit.sig = "v";\n var _SDL_VideoQuit = () => out("SDL_VideoQuit called (and ignored)");\n _SDL_VideoQuit.sig = "v";\n var _SDL_QuitSubSystem = (flags2) => out("SDL_QuitSubSystem called (and ignored)");\n _SDL_QuitSubSystem.sig = "vi";\n var _SDL_Quit = () => {\n _SDL_AudioQuit();\n out("SDL_Quit called (and ignored)");\n };\n _SDL_Quit.sig = "v";\n function _SDL_UnlockSurface(surf) {\n surf >>>= 0;\n var surfData = SDL.surfaces[surf];\n if (!surfData.locked || --surfData.locked > 0) {\n return;\n }\n if (surfData.isFlagSet(2097152)) {\n SDL.copyIndexedColorData(surfData);\n } else if (!surfData.colors) {\n var data2 = surfData.image.data;\n var buffer = surfData.buffer;\n var src = buffer >>> 2;\n var dst = 0;\n var isScreen = surf == SDL.screen;\n var num;\n if (typeof CanvasPixelArray != "undefined" && data2 instanceof CanvasPixelArray) {\n num = data2.length;\n while (dst < num) {\n var val = HEAP32[src >>> 0];\n data2[dst] = val & 255;\n data2[dst + 1] = val >> 8 & 255;\n data2[dst + 2] = val >> 16 & 255;\n data2[dst + 3] = isScreen ? 255 : val >> 24 & 255;\n src++;\n dst += 4;\n }\n } else {\n var data32 = new Uint32Array(data2.buffer);\n if (isScreen && SDL.defaults.opaqueFrontBuffer) {\n num = data32.length;\n data32.set(HEAP32.subarray(src >>> 0, src + num >>> 0));\n var data8 = new Uint8Array(data2.buffer);\n var i2 = 3;\n var j2 = i2 + 4 * num;\n if (num % 8 == 0) {\n while (i2 < j2) {\n data8[i2] = 255;\n i2 = i2 + 4 | 0;\n data8[i2] = 255;\n i2 = i2 + 4 | 0;\n data8[i2] = 255;\n i2 = i2 + 4 | 0;\n data8[i2] = 255;\n i2 = i2 + 4 | 0;\n data8[i2] = 255;\n i2 = i2 + 4 | 0;\n data8[i2] = 255;\n i2 = i2 + 4 | 0;\n data8[i2] = 255;\n i2 = i2 + 4 | 0;\n data8[i2] = 255;\n i2 = i2 + 4 | 0;\n }\n } else {\n while (i2 < j2) {\n data8[i2] = 255;\n i2 = i2 + 4 | 0;\n }\n }\n } else {\n data32.set(HEAP32.subarray(src >>> 0, src + data32.length >>> 0));\n }\n }\n } else {\n var canvas = Browser.getCanvas();\n var width = canvas.width;\n var height = canvas.height;\n var s2 = surfData.buffer;\n var data2 = surfData.image.data;\n var colors = surfData.colors;\n for (var y = 0; y < height; y++) {\n var base = y * width * 4;\n for (var x2 = 0; x2 < width; x2++) {\n var val = HEAPU8[s2++ >>> 0] * 4;\n var start2 = base + x2 * 4;\n data2[start2] = colors[val];\n data2[start2 + 1] = colors[val + 1];\n data2[start2 + 2] = colors[val + 2];\n }\n s2 += width * 3;\n }\n }\n surfData.ctx.putImageData(surfData.image, 0, 0);\n }\n _SDL_UnlockSurface.sig = "vp";\n function _SDL_Flip(surf) {\n surf >>>= 0;\n }\n _SDL_Flip.sig = "ip";\n function _SDL_UpdateRect(surf, x2, y, w2, h) {\n surf >>>= 0;\n }\n _SDL_UpdateRect.sig = "vpiiii";\n function _SDL_UpdateRects(surf, numrects, rects) {\n surf >>>= 0;\n rects >>>= 0;\n }\n _SDL_UpdateRects.sig = "vpip";\n var _SDL_Delay = (delay) => {\n var now = Date.now();\n while (Date.now() - now < delay) {\n }\n };\n _SDL_Delay.sig = "vi";\n function _SDL_WM_SetCaption(title, icon) {\n title >>>= 0;\n icon >>>= 0;\n if (title) {\n _emscripten_set_window_title(title);\n }\n icon &&= UTF8ToString(icon);\n }\n _SDL_WM_SetCaption.sig = "vpp";\n var _SDL_EnableKeyRepeat = (delay, interval) => {\n };\n _SDL_EnableKeyRepeat.sig = "iii";\n function _SDL_GetKeyboardState(numKeys) {\n numKeys >>>= 0;\n if (numKeys) {\n HEAP32[numKeys >>> 2 >>> 0] = 65536;\n }\n return SDL.keyboardState;\n }\n _SDL_GetKeyboardState.sig = "pp";\n var _SDL_GetKeyState = () => _SDL_GetKeyboardState(0);\n function _SDL_GetKeyName(key) {\n var name2 = "";\n if (key >= 97 && key <= 122 || key >= 48 && key <= 57) {\n name2 = String.fromCharCode(key);\n }\n var size = lengthBytesUTF8(name2) + 1;\n SDL.keyName = _realloc(SDL.keyName, size);\n stringToUTF8(name2, SDL.keyName, size);\n return SDL.keyName;\n }\n _SDL_GetKeyName.sig = "pi";\n var _SDL_GetModState = () => SDL.modState;\n _SDL_GetModState.sig = "i";\n function _SDL_GetMouseState(x2, y) {\n x2 >>>= 0;\n y >>>= 0;\n if (x2) HEAP32[x2 >>> 2 >>> 0] = Browser.mouseX;\n if (y) HEAP32[y >>> 2 >>> 0] = Browser.mouseY;\n return SDL.buttonState;\n }\n _SDL_GetMouseState.sig = "ipp";\n var _SDL_WarpMouse = (x2, y) => {\n };\n _SDL_WarpMouse.sig = "vii";\n var _SDL_ShowCursor = (toggle) => {\n switch (toggle) {\n case 0:\n if (Browser.isFullscreen) {\n Browser.getCanvas().requestPointerLock();\n return 0;\n }\n return 1;\n case 1:\n document.exitPointerLock();\n return 1;\n case -1:\n return !Browser.pointerLock;\n default:\n err(`SDL_ShowCursor called with unknown toggle parameter value: ${toggle}`);\n break;\n }\n };\n _SDL_ShowCursor.sig = "ii";\n function _SDL_GetError() {\n SDL.errorMessage ||= stringToNewUTF8("unknown SDL-emscripten error");\n return SDL.errorMessage;\n }\n _SDL_GetError.sig = "p";\n function _SDL_SetError(fmt, varargs) {\n fmt >>>= 0;\n varargs >>>= 0;\n }\n _SDL_SetError.sig = "vpp";\n function _SDL_CreateRGBSurface(flags2, width, height, depth, rmask, gmask, bmask, amask) {\n return SDL.makeSurface(width, height, flags2, false, "CreateRGBSurface", rmask, gmask, bmask, amask);\n }\n _SDL_CreateRGBSurface.sig = "piiiiiiii";\n function _SDL_CreateRGBSurfaceFrom(pixels, width, height, depth, pitch, rmask, gmask, bmask, amask) {\n pixels >>>= 0;\n var surf = SDL.makeSurface(width, height, 0, false, "CreateRGBSurfaceFrom", rmask, gmask, bmask, amask);\n if (depth !== 32) {\n err("TODO: Partially unimplemented SDL_CreateRGBSurfaceFrom called!");\n return surf;\n }\n var data2 = SDL.surfaces[surf];\n var image = data2.ctx.createImageData(width, height);\n var pitchOfDst = width * 4;\n for (var row = 0; row < height; ++row) {\n var baseOfSrc = row * pitch;\n var baseOfDst = row * pitchOfDst;\n for (var col = 0; col < width * 4; ++col) {\n image.data[baseOfDst + col] = HEAPU8[pixels + (baseOfDst + col) >>> 0];\n }\n }\n data2.ctx.putImageData(image, 0, 0);\n return surf;\n }\n _SDL_CreateRGBSurfaceFrom.sig = "ppiiiiiiii";\n function _SDL_ConvertSurface(surf, format, flags2) {\n surf >>>= 0;\n format >>>= 0;\n if (format) {\n SDL.checkPixelFormat(format);\n }\n var oldData = SDL.surfaces[surf];\n var ret = SDL.makeSurface(oldData.width, oldData.height, oldData.flags, false, "copy:" + oldData.source);\n var newData = SDL.surfaces[ret];\n newData.ctx.globalCompositeOperation = "copy";\n newData.ctx.drawImage(oldData.canvas, 0, 0);\n newData.ctx.globalCompositeOperation = oldData.ctx.globalCompositeOperation;\n return ret;\n }\n _SDL_ConvertSurface.sig = "pppi";\n function _SDL_DisplayFormat(surf) {\n surf >>>= 0;\n return _SDL_ConvertSurface(surf, 0, 0);\n }\n _SDL_DisplayFormat.sig = "pp";\n function _SDL_DisplayFormatAlpha(surf) {\n surf >>>= 0;\n return _SDL_ConvertSurface(surf, 0, 0);\n }\n _SDL_DisplayFormatAlpha.sig = "pp";\n function _SDL_FreeSurface(surf) {\n surf >>>= 0;\n if (surf) SDL.freeSurface(surf);\n }\n _SDL_FreeSurface.sig = "vp";\n function _SDL_UpperBlit(src, srcrect, dst, dstrect) {\n src >>>= 0;\n srcrect >>>= 0;\n dst >>>= 0;\n dstrect >>>= 0;\n return SDL.blitSurface(src, srcrect, dst, dstrect, false);\n }\n _SDL_UpperBlit.sig = "ipppp";\n function _SDL_UpperBlitScaled(src, srcrect, dst, dstrect) {\n src >>>= 0;\n srcrect >>>= 0;\n dst >>>= 0;\n dstrect >>>= 0;\n return SDL.blitSurface(src, srcrect, dst, dstrect, true);\n }\n _SDL_UpperBlitScaled.sig = "ipppp";\n var _SDL_LowerBlit = _SDL_UpperBlit;\n _SDL_LowerBlit.sig = "ipppp";\n var _SDL_LowerBlitScaled = _SDL_UpperBlitScaled;\n _SDL_LowerBlitScaled.sig = "ipppp";\n function _SDL_GetClipRect(surf, rect) {\n surf >>>= 0;\n rect >>>= 0;\n var surfData = SDL.surfaces[surf];\n var r = surfData.clipRect || { x: 0, y: 0, w: surfData.width, h: surfData.height };\n SDL.updateRect(rect, r);\n }\n _SDL_GetClipRect.sig = "vpp";\n function _SDL_SetClipRect(surf, rect) {\n surf >>>= 0;\n rect >>>= 0;\n var surfData = SDL.surfaces[surf];\n if (rect) {\n surfData.clipRect = SDL.intersectionOfRects({ x: 0, y: 0, w: surfData.width, h: surfData.height }, SDL.loadRect(rect));\n } else {\n delete surfData.clipRect;\n }\n }\n _SDL_SetClipRect.sig = "ipp";\n function _SDL_FillRect(surf, rect, color) {\n surf >>>= 0;\n rect >>>= 0;\n var surfData = SDL.surfaces[surf];\n if (surfData.isFlagSet(2097152)) {\n color = surfData.colors32[color];\n }\n var r = rect ? SDL.loadRect(rect) : { x: 0, y: 0, w: surfData.width, h: surfData.height };\n if (surfData.clipRect) {\n r = SDL.intersectionOfRects(surfData.clipRect, r);\n if (rect) {\n SDL.updateRect(rect, r);\n }\n }\n surfData.ctx.save();\n surfData.ctx.fillStyle = SDL.translateColorToCSSRGBA(color);\n surfData.ctx.fillRect(r.x, r.y, r.w, r.h);\n surfData.ctx.restore();\n return 0;\n }\n _SDL_FillRect.sig = "ippi";\n function _zoomSurface(src, x2, y, smooth) {\n src >>>= 0;\n var srcData = SDL.surfaces[src];\n var w2 = srcData.width * x2;\n var h = srcData.height * y;\n var ret = SDL.makeSurface(Math.abs(w2), Math.abs(h), srcData.flags, false, "zoomSurface");\n var dstData = SDL.surfaces[ret];\n if (x2 >= 0 && y >= 0) {\n dstData.ctx.drawImage(srcData.canvas, 0, 0, w2, h);\n } else {\n dstData.ctx.save();\n dstData.ctx.scale(x2 < 0 ? -1 : 1, y < 0 ? -1 : 1);\n dstData.ctx.drawImage(srcData.canvas, w2 < 0 ? w2 : 0, h < 0 ? h : 0, Math.abs(w2), Math.abs(h));\n dstData.ctx.restore();\n }\n return ret;\n }\n _zoomSurface.sig = "ppddi";\n function _rotozoomSurface(src, angle, zoom, smooth) {\n src >>>= 0;\n if (angle % 360 === 0) {\n return _zoomSurface(src, zoom, zoom, smooth);\n }\n var srcData = SDL.surfaces[src];\n var w2 = srcData.width * zoom;\n var h = srcData.height * zoom;\n var diagonal = Math.ceil(Math.sqrt(Math.pow(w2, 2) + Math.pow(h, 2)));\n var ret = SDL.makeSurface(diagonal, diagonal, srcData.flags, false, "rotozoomSurface");\n var dstData = SDL.surfaces[ret];\n dstData.ctx.translate(diagonal / 2, diagonal / 2);\n dstData.ctx.rotate(-angle * Math.PI / 180);\n dstData.ctx.drawImage(srcData.canvas, -w2 / 2, -h / 2, w2, h);\n return ret;\n }\n _rotozoomSurface.sig = "ppddi";\n function _SDL_SetAlpha(surf, flag, alpha) {\n surf >>>= 0;\n var surfData = SDL.surfaces[surf];\n surfData.alpha = alpha;\n if (!(flag & 65536)) {\n surfData.alpha = 255;\n }\n }\n _SDL_SetAlpha.sig = "ipii";\n function _SDL_SetColorKey(surf, flag, key) {\n surf >>>= 0;\n warnOnce("SDL_SetColorKey is a no-op for performance reasons");\n return 0;\n }\n _SDL_SetColorKey.sig = "ipii";\n function _SDL_PollEvent(ptr2) {\n ptr2 >>>= 0;\n return SDL.pollEvent(ptr2);\n }\n _SDL_PollEvent.sig = "ip";\n function _SDL_PushEvent(ptr2) {\n ptr2 >>>= 0;\n var copy = _malloc(28);\n _memcpy(copy, ptr2, 28);\n SDL.events.push(copy);\n return 0;\n }\n _SDL_PushEvent.sig = "ip";\n function _SDL_PeepEvents(events, requestedEventCount, action, from, to) {\n events >>>= 0;\n switch (action) {\n case 2: {\n var index = 0;\n var retrievedEventCount = 0;\n while (index < SDL.events.length && retrievedEventCount < requestedEventCount) {\n var event = SDL.events[index];\n var type = SDL.DOMEventToSDLEvent[event.type];\n if (from <= type && type <= to) {\n if (SDL.makeCEvent(event, events) === false) {\n index++;\n } else {\n SDL.events.splice(index, 1);\n retrievedEventCount++;\n }\n } else {\n index++;\n }\n }\n return retrievedEventCount;\n }\n default:\n abort("SDL_PeepEvents does not yet support that action: " + action);\n }\n }\n _SDL_PeepEvents.sig = "ipiiii";\n var _SDL_PumpEvents = () => SDL.events.forEach(SDL.handleEvent);\n _SDL_PumpEvents.sig = "v";\n function _emscripten_SDL_SetEventHandler(handler, userdata) {\n handler >>>= 0;\n userdata >>>= 0;\n SDL.eventHandler = handler;\n SDL.eventHandlerContext = userdata;\n SDL.eventHandlerTemp ||= _malloc(28);\n }\n _emscripten_SDL_SetEventHandler.sig = "vpp";\n function _SDL_SetColors(surf, colors, firstColor, nColors) {\n surf >>>= 0;\n colors >>>= 0;\n var surfData = SDL.surfaces[surf];\n if (!surfData.colors) {\n var buffer = new ArrayBuffer(256 * 4);\n surfData.colors = new Uint8Array(buffer);\n surfData.colors32 = new Uint32Array(buffer);\n }\n for (var i2 = 0; i2 < nColors; ++i2) {\n var index = (firstColor + i2) * 4;\n surfData.colors[index] = HEAPU8[colors + i2 * 4 >>> 0];\n surfData.colors[index + 1] = HEAPU8[colors + (i2 * 4 + 1) >>> 0];\n surfData.colors[index + 2] = HEAPU8[colors + (i2 * 4 + 2) >>> 0];\n surfData.colors[index + 3] = 255;\n }\n return 1;\n }\n _SDL_SetColors.sig = "ippii";\n function _SDL_SetPalette(surf, flags2, colors, firstColor, nColors) {\n surf >>>= 0;\n colors >>>= 0;\n return _SDL_SetColors(surf, colors, firstColor, nColors);\n }\n _SDL_SetPalette.sig = "ipipii";\n function _SDL_MapRGB(fmt, r, g, b2) {\n fmt >>>= 0;\n SDL.checkPixelFormat(fmt);\n return r & 255 | (g & 255) << 8 | (b2 & 255) << 16 | 4278190080;\n }\n _SDL_MapRGB.sig = "ipiii";\n function _SDL_MapRGBA(fmt, r, g, b2, a) {\n fmt >>>= 0;\n SDL.checkPixelFormat(fmt);\n return r & 255 | (g & 255) << 8 | (b2 & 255) << 16 | (a & 255) << 24;\n }\n _SDL_MapRGBA.sig = "ipiiii";\n function _SDL_GetRGB(pixel, fmt, r, g, b2) {\n fmt >>>= 0;\n r >>>= 0;\n g >>>= 0;\n b2 >>>= 0;\n SDL.checkPixelFormat(fmt);\n if (r) {\n HEAP8[r >>> 0] = pixel & 255;\n }\n if (g) {\n HEAP8[g >>> 0] = pixel >> 8 & 255;\n }\n if (b2) {\n HEAP8[b2 >>> 0] = pixel >> 16 & 255;\n }\n }\n _SDL_GetRGB.sig = "vipppp";\n function _SDL_GetRGBA(pixel, fmt, r, g, b2, a) {\n fmt >>>= 0;\n r >>>= 0;\n g >>>= 0;\n b2 >>>= 0;\n a >>>= 0;\n SDL.checkPixelFormat(fmt);\n if (r) {\n HEAP8[r >>> 0] = pixel & 255;\n }\n if (g) {\n HEAP8[g >>> 0] = pixel >> 8 & 255;\n }\n if (b2) {\n HEAP8[b2 >>> 0] = pixel >> 16 & 255;\n }\n if (a) {\n HEAP8[a >>> 0] = pixel >> 24 & 255;\n }\n }\n _SDL_GetRGBA.sig = "vippppp";\n var _SDL_GetAppState = () => {\n var state = 0;\n if (Browser.pointerLock) {\n state |= 1;\n }\n if (document.hasFocus()) {\n state |= 2;\n }\n state |= 4;\n return state;\n };\n _SDL_GetAppState.sig = "i";\n var _SDL_WM_GrabInput = () => {\n };\n _SDL_WM_GrabInput.sig = "ii";\n function _SDL_WM_ToggleFullScreen(surf) {\n surf >>>= 0;\n if (Browser.exitFullscreen()) {\n return 1;\n }\n if (!SDL.canRequestFullscreen) {\n return 0;\n }\n SDL.isRequestingFullscreen = true;\n return 1;\n }\n _SDL_WM_ToggleFullScreen.sig = "ip";\n var _IMG_Init = (flags2) => flags2;\n _IMG_Init.sig = "ii";\n function _SDL_FreeRW(rwopsID) {\n rwopsID >>>= 0;\n SDL.rwops[rwopsID] = null;\n while (SDL.rwops.length > 0 && SDL.rwops[SDL.rwops.length - 1] === null) {\n SDL.rwops.pop();\n }\n }\n _SDL_FreeRW.sig = "vp";\n var _IMG_Load_RW = function(rwopsID, freeSrc) {\n rwopsID >>>= 0;\n var sp = stackSave();\n try {\n var cleanup = () => {\n stackRestore(sp);\n if (rwops && freeSrc) _SDL_FreeRW(rwopsID);\n };\n var addCleanup = (func2) => {\n var old = cleanup;\n cleanup = () => {\n old();\n func2();\n };\n };\n var callStbImage = (func2, params) => {\n var x2 = stackAlloc(4);\n var y = stackAlloc(4);\n var comp = stackAlloc(4);\n var data3 = Module["_" + func2](...params, x2, y, comp, 0);\n if (!data3) return null;\n addCleanup(() => Module["_stbi_image_free"](data3));\n return { rawData: true, data: data3, width: HEAP32[x2 >>> 2 >>> 0], height: HEAP32[y >>> 2 >>> 0], size: HEAP32[x2 >>> 2 >>> 0] * HEAP32[y >>> 2 >>> 0] * HEAP32[comp >>> 2 >>> 0], bpp: HEAP32[comp >>> 2 >>> 0] };\n };\n var rwops = SDL.rwops[rwopsID];\n if (rwops === void 0) {\n return 0;\n }\n var raw;\n var filename = rwops.filename;\n if (filename === void 0) {\n warnOnce("Only file names that have been preloaded are supported for IMG_Load_RW. Consider using STB_IMAGE=1 if you want synchronous image decoding (see settings.js), or package files with --use-preload-plugins");\n return 0;\n }\n if (!raw) {\n filename = PATH_FS.resolve(filename);\n raw = Browser.preloadedImages[filename];\n if (!raw) {\n if (raw === null) err("Trying to reuse preloaded image, but freePreloadedMediaOnUse is set!");\n warnOnce("Cannot find preloaded image " + filename);\n warnOnce("Cannot find preloaded image " + filename + ". Consider using STB_IMAGE=1 if you want synchronous image decoding (see settings.js), or package files with --use-preload-plugins");\n return 0;\n } else if (Module["freePreloadedMediaOnUse"]) {\n Browser.preloadedImages[filename] = null;\n }\n }\n var surf = SDL.makeSurface(raw.width, raw.height, 0, false, "load:" + filename);\n var surfData = SDL.surfaces[surf];\n surfData.ctx.globalCompositeOperation = "copy";\n if (!raw.rawData) {\n surfData.ctx.drawImage(raw, 0, 0, raw.width, raw.height, 0, 0, raw.width, raw.height);\n } else {\n var imageData = surfData.ctx.getImageData(0, 0, surfData.width, surfData.height);\n if (raw.bpp == 4) {\n imageData.data.set(HEAPU8.subarray(raw.data >>> 0, raw.data + raw.size >>> 0));\n } else if (raw.bpp == 3) {\n var pixels = raw.size / 3;\n var data2 = imageData.data;\n var sourcePtr = raw.data;\n var destPtr = 0;\n for (var i2 = 0; i2 < pixels; i2++) {\n data2[destPtr++] = HEAPU8[sourcePtr++ >>> 0];\n data2[destPtr++] = HEAPU8[sourcePtr++ >>> 0];\n data2[destPtr++] = HEAPU8[sourcePtr++ >>> 0];\n data2[destPtr++] = 255;\n }\n } else if (raw.bpp == 2) {\n var pixels = raw.size;\n var data2 = imageData.data;\n var sourcePtr = raw.data;\n var destPtr = 0;\n for (var i2 = 0; i2 < pixels; i2++) {\n var gray = HEAPU8[sourcePtr++ >>> 0];\n var alpha = HEAPU8[sourcePtr++ >>> 0];\n data2[destPtr++] = gray;\n data2[destPtr++] = gray;\n data2[destPtr++] = gray;\n data2[destPtr++] = alpha;\n }\n } else if (raw.bpp == 1) {\n var pixels = raw.size;\n var data2 = imageData.data;\n var sourcePtr = raw.data;\n var destPtr = 0;\n for (var i2 = 0; i2 < pixels; i2++) {\n var value2 = HEAPU8[sourcePtr++ >>> 0];\n data2[destPtr++] = value2;\n data2[destPtr++] = value2;\n data2[destPtr++] = value2;\n data2[destPtr++] = 255;\n }\n } else {\n err(`cannot handle bpp ${raw.bpp}`);\n return 0;\n }\n surfData.ctx.putImageData(imageData, 0, 0);\n }\n surfData.ctx.globalCompositeOperation = "source-over";\n _SDL_LockSurface(surf);\n surfData.locked--;\n if (SDL.GL) {\n surfData.canvas = surfData.ctx = null;\n }\n return surf;\n } finally {\n cleanup();\n }\n };\n _IMG_Load_RW.sig = "ppi";\n var _SDL_LoadBMP_RW = _IMG_Load_RW;\n _SDL_LoadBMP_RW.sig = "ppi";\n function _SDL_RWFromFile(_name, mode) {\n _name >>>= 0;\n mode >>>= 0;\n var id = SDL.rwops.length;\n var filename = UTF8ToString(_name);\n SDL.rwops.push({ filename, mimetype: Browser.getMimetype(filename) });\n return id;\n }\n _SDL_RWFromFile.sig = "ppp";\n function _IMG_Load(filename) {\n filename >>>= 0;\n var rwops = _SDL_RWFromFile(filename, 0);\n var result = _IMG_Load_RW(rwops, 1);\n return result;\n }\n _IMG_Load.sig = "pp";\n var _IMG_Quit = () => out("IMG_Quit called (and ignored)");\n _IMG_Quit.sig = "v";\n function _SDL_OpenAudio(desired, obtained) {\n desired >>>= 0;\n obtained >>>= 0;\n try {\n SDL.audio = { freq: HEAPU32[desired >>> 2 >>> 0], format: HEAPU16[desired + 4 >>> 1 >>> 0], channels: HEAPU8[desired + 6 >>> 0], samples: HEAPU16[desired + 8 >>> 1 >>> 0], callback: HEAPU32[desired + 16 >>> 2 >>> 0], userdata: HEAPU32[desired + 20 >>> 2 >>> 0], paused: true, timer: null };\n if (SDL.audio.format == 8) {\n SDL.audio.silence = 128;\n } else if (SDL.audio.format == 32784) {\n SDL.audio.silence = 0;\n } else if (SDL.audio.format == 33056) {\n SDL.audio.silence = 0;\n } else {\n abort("Invalid SDL audio format " + SDL.audio.format + "!");\n }\n if (SDL.audio.freq <= 0) {\n abort("Unsupported sound frequency " + SDL.audio.freq + "!");\n } else if (SDL.audio.freq <= 22050) {\n SDL.audio.freq = 22050;\n } else if (SDL.audio.freq <= 32e3) {\n SDL.audio.freq = 32e3;\n } else if (SDL.audio.freq <= 44100) {\n SDL.audio.freq = 44100;\n } else if (SDL.audio.freq <= 48e3) {\n SDL.audio.freq = 48e3;\n } else if (SDL.audio.freq <= 96e3) {\n SDL.audio.freq = 96e3;\n } else {\n abort(`Unsupported sound frequency ${SDL.audio.freq}!`);\n }\n if (SDL.audio.channels == 0) {\n SDL.audio.channels = 1;\n } else if (SDL.audio.channels < 0 || SDL.audio.channels > 32) {\n abort(`Unsupported number of audio channels for SDL audio: ${SDL.audio.channels}!`);\n } else if (SDL.audio.channels != 1 && SDL.audio.channels != 2) {\n out(`Warning: Using untested number of audio channels ${SDL.audio.channels}`);\n }\n if (SDL.audio.samples < 128 || SDL.audio.samples > 524288) {\n abort(`Unsupported audio callback buffer size ${SDL.audio.samples}!`);\n } else if ((SDL.audio.samples & SDL.audio.samples - 1) != 0) {\n abort(`Audio callback buffer size ${SDL.audio.samples} must be a power-of-two!`);\n }\n var totalSamples = SDL.audio.samples * SDL.audio.channels;\n if (SDL.audio.format == 8) {\n SDL.audio.bytesPerSample = 1;\n } else if (SDL.audio.format == 32784) {\n SDL.audio.bytesPerSample = 2;\n } else if (SDL.audio.format == 33056) {\n SDL.audio.bytesPerSample = 4;\n } else {\n abort(`Invalid SDL audio format ${SDL.audio.format}!`);\n }\n SDL.audio.bufferSize = totalSamples * SDL.audio.bytesPerSample;\n SDL.audio.bufferDurationSecs = SDL.audio.bufferSize / SDL.audio.bytesPerSample / SDL.audio.channels / SDL.audio.freq;\n SDL.audio.bufferingDelay = 50 / 1e3;\n SDL.audio.buffer = _malloc(SDL.audio.bufferSize);\n SDL.audio.numSimultaneouslyQueuedBuffers = Module["SDL_numSimultaneouslyQueuedBuffers"] || 5;\n SDL.audio.queueNewAudioData = () => {\n if (!SDL.audio) return;\n for (var i2 = 0; i2 < SDL.audio.numSimultaneouslyQueuedBuffers; ++i2) {\n var secsUntilNextPlayStart = SDL.audio.nextPlayTime - SDL.audioContext["currentTime"];\n if (secsUntilNextPlayStart >= SDL.audio.bufferingDelay + SDL.audio.bufferDurationSecs * SDL.audio.numSimultaneouslyQueuedBuffers) return;\n getWasmTableEntry(SDL.audio.callback)(SDL.audio.userdata, SDL.audio.buffer, SDL.audio.bufferSize);\n SDL.audio.pushAudio(SDL.audio.buffer, SDL.audio.bufferSize);\n }\n };\n SDL.audio.caller = () => {\n if (!SDL.audio) return;\n --SDL.audio.numAudioTimersPending;\n SDL.audio.queueNewAudioData();\n var secsUntilNextPlayStart = SDL.audio.nextPlayTime - SDL.audioContext["currentTime"];\n var preemptBufferFeedSecs = SDL.audio.bufferDurationSecs / 2;\n if (SDL.audio.numAudioTimersPending < SDL.audio.numSimultaneouslyQueuedBuffers) {\n ++SDL.audio.numAudioTimersPending;\n SDL.audio.timer = safeSetTimeout(SDL.audio.caller, Math.max(0, 1e3 * (secsUntilNextPlayStart - preemptBufferFeedSecs)));\n if (SDL.audio.numAudioTimersPending < SDL.audio.numSimultaneouslyQueuedBuffers) {\n ++SDL.audio.numAudioTimersPending;\n safeSetTimeout(SDL.audio.caller, 1);\n }\n }\n };\n SDL.audio.audioOutput = new Audio();\n SDL.openAudioContext();\n if (!SDL.audioContext) abort("Web Audio API is not available!");\n autoResumeAudioContext(SDL.audioContext);\n SDL.audio.nextPlayTime = 0;\n SDL.audio.pushAudio = (ptr2, sizeBytes) => {\n try {\n if (SDL.audio.paused) return;\n var sizeSamples = sizeBytes / SDL.audio.bytesPerSample;\n var sizeSamplesPerChannel = sizeSamples / SDL.audio.channels;\n if (sizeSamplesPerChannel != SDL.audio.samples) {\n abort("Received mismatching audio buffer size!");\n }\n var source = SDL.audioContext["createBufferSource"]();\n var soundBuffer = SDL.audioContext["createBuffer"](SDL.audio.channels, sizeSamplesPerChannel, SDL.audio.freq);\n source["connect"](SDL.audioContext["destination"]);\n SDL.fillWebAudioBufferFromHeap(ptr2, sizeSamplesPerChannel, soundBuffer);\n source["buffer"] = soundBuffer;\n var curtime = SDL.audioContext["currentTime"];\n var playtime = Math.max(curtime + SDL.audio.bufferingDelay, SDL.audio.nextPlayTime);\n if (typeof source["start"] != "undefined") {\n source["start"](playtime);\n } else if (typeof source["noteOn"] != "undefined") {\n source["noteOn"](playtime);\n }\n SDL.audio.nextPlayTime = playtime + SDL.audio.bufferDurationSecs;\n } catch (e) {\n err(`Web Audio API error playing back audio: ${e.toString()}`);\n }\n };\n if (obtained) {\n HEAP32[obtained >>> 2 >>> 0] = SDL.audio.freq;\n HEAP16[obtained + 4 >>> 1 >>> 0] = SDL.audio.format;\n HEAP8[obtained + 6 >>> 0] = SDL.audio.channels;\n HEAP8[obtained + 7 >>> 0] = SDL.audio.silence;\n HEAP16[obtained + 8 >>> 1 >>> 0] = SDL.audio.samples;\n HEAPU32[obtained + 16 >>> 2 >>> 0] = SDL.audio.callback;\n HEAPU32[obtained + 20 >>> 2 >>> 0] = SDL.audio.userdata;\n }\n SDL.allocateChannels(32);\n } catch (e) {\n err(`Initializing SDL audio threw an exception: "${e.toString()}"! Continuing without audio`);\n SDL.audio = null;\n SDL.allocateChannels(0);\n if (obtained) {\n HEAP32[obtained >>> 2 >>> 0] = 0;\n HEAP16[obtained + 4 >>> 1 >>> 0] = 0;\n HEAP8[obtained + 6 >>> 0] = 0;\n HEAP8[obtained + 7 >>> 0] = 0;\n HEAP16[obtained + 8 >>> 1 >>> 0] = 0;\n HEAPU32[obtained + 16 >>> 2 >>> 0] = 0;\n HEAPU32[obtained + 20 >>> 2 >>> 0] = 0;\n }\n }\n if (!SDL.audio) {\n return -1;\n }\n return 0;\n }\n _SDL_OpenAudio.sig = "ipp";\n var _SDL_PauseAudio = (pauseOn) => {\n if (!SDL.audio) {\n return;\n }\n if (pauseOn) {\n if (SDL.audio.timer !== void 0) {\n clearTimeout(SDL.audio.timer);\n SDL.audio.numAudioTimersPending = 0;\n SDL.audio.timer = void 0;\n }\n } else if (!SDL.audio.timer) {\n SDL.audio.numAudioTimersPending = 1;\n SDL.audio.timer = safeSetTimeout(SDL.audio.caller, 1);\n }\n SDL.audio.paused = pauseOn;\n };\n _SDL_PauseAudio.sig = "vi";\n var _SDL_CloseAudio = () => {\n if (SDL.audio) {\n if (SDL.audio.callbackRemover) {\n SDL.audio.callbackRemover();\n SDL.audio.callbackRemover = null;\n }\n _SDL_PauseAudio(1);\n _free(SDL.audio.buffer);\n SDL.audio = null;\n SDL.allocateChannels(0);\n }\n };\n _SDL_CloseAudio.sig = "v";\n var _SDL_LockAudio = () => {\n };\n _SDL_LockAudio.sig = "v";\n var _SDL_UnlockAudio = () => {\n };\n _SDL_UnlockAudio.sig = "v";\n function _SDL_CreateMutex() {\n return 0;\n }\n _SDL_CreateMutex.sig = "p";\n function _SDL_mutexP(mutex) {\n mutex >>>= 0;\n return 0;\n }\n _SDL_mutexP.sig = "ip";\n function _SDL_mutexV(mutex) {\n mutex >>>= 0;\n return 0;\n }\n _SDL_mutexV.sig = "ip";\n function _SDL_DestroyMutex(mutex) {\n mutex >>>= 0;\n }\n _SDL_DestroyMutex.sig = "vp";\n function _SDL_CreateCond() {\n return 0;\n }\n _SDL_CreateCond.sig = "p";\n function _SDL_CondSignal(cond) {\n cond >>>= 0;\n }\n _SDL_CondSignal.sig = "ip";\n function _SDL_CondWait(cond, mutex) {\n cond >>>= 0;\n mutex >>>= 0;\n }\n _SDL_CondWait.sig = "ipp";\n function _SDL_DestroyCond(cond) {\n cond >>>= 0;\n }\n _SDL_DestroyCond.sig = "vp";\n var _SDL_StartTextInput = () => {\n SDL.textInput = true;\n };\n _SDL_StartTextInput.sig = "v";\n var _SDL_StopTextInput = () => {\n SDL.textInput = false;\n };\n _SDL_StopTextInput.sig = "v";\n var _Mix_Init = (flags2) => {\n if (!flags2) return 0;\n return 8;\n };\n _Mix_Init.sig = "ii";\n var _Mix_Quit = () => {\n };\n _Mix_Quit.sig = "v";\n var _Mix_OpenAudio = (frequency, format, channels, chunksize) => {\n SDL.openAudioContext();\n autoResumeAudioContext(SDL.audioContext);\n SDL.allocateChannels(32);\n SDL.mixerFrequency = frequency;\n SDL.mixerFormat = format;\n SDL.mixerNumChannels = channels;\n SDL.mixerChunkSize = chunksize;\n return 0;\n };\n _Mix_OpenAudio.sig = "iiiii";\n var _Mix_CloseAudio = _SDL_CloseAudio;\n _Mix_CloseAudio.sig = "v";\n var _Mix_AllocateChannels = (num) => {\n SDL.allocateChannels(num);\n return num;\n };\n _Mix_AllocateChannels.sig = "ii";\n function _Mix_ChannelFinished(func2) {\n func2 >>>= 0;\n SDL.channelFinished = func2;\n }\n _Mix_ChannelFinished.sig = "vp";\n var _Mix_Volume = (channel, volume) => {\n if (channel == -1) {\n for (var i2 = 0; i2 < SDL.numChannels - 1; i2++) {\n _Mix_Volume(i2, volume);\n }\n return _Mix_Volume(SDL.numChannels - 1, volume);\n }\n return SDL.setGetVolume(SDL.channels[channel], volume);\n };\n _Mix_Volume.sig = "iii";\n var _Mix_SetPanning = (channel, left, right) => {\n left /= 255;\n right /= 255;\n SDL.setPannerPosition(SDL.channels[channel], right - left, 0, 0.1);\n return 1;\n };\n _Mix_SetPanning.sig = "iiii";\n function _Mix_LoadWAV_RW(rwopsID, freesrc) {\n rwopsID >>>= 0;\n var rwops = SDL.rwops[rwopsID];\n if (rwops === void 0) return 0;\n var filename = "";\n var audio;\n var webAudio;\n var bytes;\n if (rwops.filename !== void 0) {\n filename = PATH_FS.resolve(rwops.filename);\n var raw = Browser.preloadedAudios[filename];\n if (!raw) {\n if (raw === null) err("Trying to reuse preloaded audio, but freePreloadedMediaOnUse is set!");\n if (!Module["noAudioDecoding"]) warnOnce("Cannot find preloaded audio " + filename);\n try {\n bytes = FS.readFile(filename);\n } catch (e) {\n err(`Couldn\'t find file for: ${filename}`);\n return 0;\n }\n }\n if (Module["freePreloadedMediaOnUse"]) {\n Browser.preloadedAudios[filename] = null;\n }\n audio = raw;\n } else if (rwops.bytes !== void 0) {\n if (SDL.webAudioAvailable()) {\n bytes = HEAPU8.buffer.slice(rwops.bytes, rwops.bytes + rwops.count);\n } else {\n bytes = HEAPU8.subarray(rwops.bytes >>> 0, rwops.bytes + rwops.count >>> 0);\n }\n } else {\n return 0;\n }\n var arrayBuffer = bytes ? bytes.buffer || bytes : bytes;\n var canPlayWithWebAudio = Module["SDL_canPlayWithWebAudio"] === void 0 || Module["SDL_canPlayWithWebAudio"](filename, arrayBuffer);\n if (bytes !== void 0 && SDL.webAudioAvailable() && canPlayWithWebAudio) {\n audio = void 0;\n webAudio = { onDecodeComplete: [] };\n SDL.audioContext["decodeAudioData"](arrayBuffer, (data2) => {\n webAudio.decodedBuffer = data2;\n webAudio.onDecodeComplete.forEach((e) => e());\n delete webAudio.onDecodeComplete;\n });\n } else if (audio === void 0 && bytes) {\n var blob = new Blob([bytes], { type: rwops.mimetype });\n var url2 = URL.createObjectURL(blob);\n audio = new Audio();\n audio.src = url2;\n audio.mozAudioChannelType = "content";\n }\n var id = SDL.audios.length;\n SDL.audios.push({ source: filename, audio, webAudio });\n return id;\n }\n _Mix_LoadWAV_RW.sig = "ppi";\n function _Mix_LoadWAV(filename) {\n filename >>>= 0;\n var rwops = _SDL_RWFromFile(filename, 0);\n var result = _Mix_LoadWAV_RW(rwops, 0);\n _SDL_FreeRW(rwops);\n return result;\n }\n _Mix_LoadWAV.sig = "pp";\n function _Mix_QuickLoad_RAW(mem, len) {\n mem >>>= 0;\n var audio;\n var webAudio;\n var numSamples = len >> 1;\n var buffer = new Float32Array(numSamples);\n for (var i2 = 0; i2 < numSamples; ++i2) {\n buffer[i2] = HEAP16[mem + i2 * 2 >>> 1 >>> 0] / 32768;\n }\n if (SDL.webAudioAvailable()) {\n webAudio = { decodedBuffer: buffer };\n } else {\n audio = new Audio();\n audio.mozAudioChannelType = "content";\n audio.numChannels = SDL.mixerNumChannels;\n audio.frequency = SDL.mixerFrequency;\n }\n var id = SDL.audios.length;\n SDL.audios.push({ source: "", audio, webAudio, buffer });\n return id;\n }\n _Mix_QuickLoad_RAW.sig = "ppi";\n function _Mix_FreeChunk(id) {\n id >>>= 0;\n SDL.audios[id] = null;\n }\n _Mix_FreeChunk.sig = "vp";\n var _Mix_ReserveChannels = (num) => {\n SDL.channelMinimumNumber = num;\n };\n _Mix_ReserveChannels.sig = "ii";\n var _Mix_HaltChannel = (channel) => {\n function halt(channel2) {\n var info2 = SDL.channels[channel2];\n if (info2.audio) {\n info2.audio.pause();\n info2.audio = null;\n }\n if (SDL.channelFinished) {\n getWasmTableEntry(SDL.channelFinished)(channel2);\n }\n }\n if (channel != -1) {\n halt(channel);\n } else {\n for (var i2 = 0; i2 < SDL.channels.length; ++i2) halt(i2);\n }\n return 0;\n };\n _Mix_HaltChannel.sig = "ii";\n function _Mix_PlayChannelTimed(channel, id, loops, ticks) {\n id >>>= 0;\n var info2 = SDL.audios[id];\n if (!info2) return -1;\n if (!info2.audio && !info2.webAudio) return -1;\n if (channel == -1) {\n for (var i2 = SDL.channelMinimumNumber; i2 < SDL.numChannels; i2++) {\n if (!SDL.channels[i2].audio) {\n channel = i2;\n break;\n }\n }\n if (channel == -1) {\n err(`All ${SDL.numChannels} channels in use!`);\n return -1;\n }\n }\n var channelInfo = SDL.channels[channel];\n var audio;\n if (info2.webAudio) {\n audio = { resource: info2, paused: false, currentPosition: 0, play() {\n SDL.playWebAudio(this);\n }, pause() {\n SDL.pauseWebAudio(this);\n } };\n } else {\n audio = info2.audio.cloneNode(true);\n audio.numChannels = info2.audio.numChannels;\n audio.frequency = info2.audio.frequency;\n }\n audio["onended"] = function() {\n if (channelInfo.audio === this || channelInfo.audio.webAudioNode === this) {\n channelInfo.audio.paused = true;\n channelInfo.audio = null;\n }\n if (SDL.channelFinished) getWasmTableEntry(SDL.channelFinished)(channel);\n };\n if (channelInfo.audio) {\n _Mix_HaltChannel(channel);\n }\n channelInfo.audio = audio;\n audio.loop = loops != 0;\n audio.volume = channelInfo.volume;\n audio.play();\n return channel;\n }\n _Mix_PlayChannelTimed.sig = "iipii";\n var _Mix_FadingChannel = (channel) => 0;\n _Mix_FadingChannel.sig = "ii";\n var _Mix_HaltMusic = () => {\n var audio = SDL.music.audio;\n if (audio) {\n audio.src = audio.src;\n audio.currentPosition = 0;\n audio.pause();\n }\n SDL.music.audio = null;\n if (SDL.hookMusicFinished) {\n getWasmTableEntry(SDL.hookMusicFinished)();\n }\n return 0;\n };\n _Mix_HaltMusic.sig = "i";\n function _Mix_HookMusicFinished(func2) {\n func2 >>>= 0;\n SDL.hookMusicFinished = func2;\n if (SDL.music.audio) {\n SDL.music.audio["onended"] = _Mix_HaltMusic;\n }\n }\n _Mix_HookMusicFinished.sig = "vp";\n var _Mix_VolumeMusic = (volume) => SDL.setGetVolume(SDL.music, volume);\n _Mix_VolumeMusic.sig = "ii";\n function _Mix_LoadMUS_RW(filename) {\n filename >>>= 0;\n return _Mix_LoadWAV_RW(filename, 0);\n }\n _Mix_LoadMUS_RW.sig = "pp";\n function _Mix_LoadMUS(filename) {\n filename >>>= 0;\n var rwops = _SDL_RWFromFile(filename, 0);\n var result = _Mix_LoadMUS_RW(rwops);\n _SDL_FreeRW(rwops);\n return result;\n }\n _Mix_LoadMUS.sig = "pp";\n var _Mix_FreeMusic = _Mix_FreeChunk;\n _Mix_FreeMusic.sig = "vp";\n function _Mix_PlayMusic(id, loops) {\n id >>>= 0;\n if (SDL.music.audio) {\n if (!SDL.music.audio.paused) err(`Music is already playing. ${SDL.music.source}`);\n SDL.music.audio.pause();\n }\n var info2 = SDL.audios[id];\n var audio;\n if (info2.webAudio) {\n audio = { resource: info2, paused: false, currentPosition: 0, play() {\n SDL.playWebAudio(this);\n }, pause() {\n SDL.pauseWebAudio(this);\n } };\n } else if (info2.audio) {\n audio = info2.audio;\n }\n audio["onended"] = function() {\n if (SDL.music.audio === this || SDL.music.audio?.webAudioNode === this) {\n _Mix_HaltMusic();\n }\n };\n audio.loop = loops != 0 && loops != 1;\n audio.volume = SDL.music.volume;\n SDL.music.audio = audio;\n audio.play();\n return 0;\n }\n _Mix_PlayMusic.sig = "ipi";\n var _Mix_PauseMusic = () => {\n var audio = SDL.music.audio;\n audio?.pause();\n };\n _Mix_PauseMusic.sig = "v";\n var _Mix_ResumeMusic = () => {\n var audio = SDL.music.audio;\n audio?.play();\n };\n _Mix_ResumeMusic.sig = "v";\n function _Mix_FadeInMusicPos(a1, a2, a3, a4) {\n a1 >>>= 0;\n return _Mix_PlayMusic(a1, a2);\n }\n _Mix_FadeInMusicPos.sig = "ipiid";\n var _Mix_FadeOutMusic = (a1) => _Mix_HaltMusic();\n _Mix_FadeOutMusic.sig = "ii";\n var _Mix_PlayingMusic = () => SDL.music.audio && !SDL.music.audio.paused;\n _Mix_PlayingMusic.sig = "i";\n var _Mix_Playing = (channel) => {\n if (channel === -1) {\n var count = 0;\n for (var i2 = 0; i2 < SDL.channels.length; i2++) {\n count += _Mix_Playing(i2);\n }\n return count;\n }\n var info2 = SDL.channels[channel];\n if (info2?.audio && !info2.audio.paused) {\n return 1;\n }\n return 0;\n };\n _Mix_Playing.sig = "ii";\n var _Mix_Pause = (channel) => {\n if (channel === -1) {\n for (var i2 = 0; i2 < SDL.channels.length; i2++) {\n _Mix_Pause(i2);\n }\n return;\n }\n var info2 = SDL.channels[channel];\n if (info2?.audio) {\n info2.audio.pause();\n } else {\n }\n };\n _Mix_Pause.sig = "vi";\n var _Mix_Paused = (channel) => {\n if (channel === -1) {\n var pausedCount = 0;\n for (var i2 = 0; i2 < SDL.channels.length; i2++) {\n pausedCount += _Mix_Paused(i2);\n }\n return pausedCount;\n }\n var info2 = SDL.channels[channel];\n return info2?.audio?.paused ? 1 : 0;\n };\n _Mix_Paused.sig = "ii";\n var _Mix_PausedMusic = () => SDL.music.audio?.paused ? 1 : 0;\n _Mix_PausedMusic.sig = "i";\n var _Mix_Resume = (channel) => {\n if (channel === -1) {\n for (var i2 = 0; i2 < SDL.channels.length; i2++) {\n _Mix_Resume(i2);\n }\n return;\n }\n var info2 = SDL.channels[channel];\n if (info2?.audio) info2.audio.play();\n };\n _Mix_Resume.sig = "vi";\n var _TTF_Init = () => {\n try {\n var offscreenCanvas = new OffscreenCanvas(0, 0);\n SDL.ttfContext = offscreenCanvas.getContext("2d");\n if (!SDL.ttfContext.measureText) {\n throw 1;\n }\n } catch (ex) {\n var canvas = document.createElement("canvas");\n SDL.ttfContext = canvas.getContext("2d");\n }\n return 0;\n };\n _TTF_Init.sig = "i";\n function _TTF_OpenFont(name2, size) {\n name2 >>>= 0;\n name2 = PATH.normalize(UTF8ToString(name2));\n var id = SDL.fonts.length;\n SDL.fonts.push({ name: name2, size });\n return id;\n }\n _TTF_OpenFont.sig = "ppi";\n function _TTF_CloseFont(font) {\n font >>>= 0;\n SDL.fonts[font] = null;\n }\n _TTF_CloseFont.sig = "vp";\n function _TTF_RenderText_Solid(font, text, color) {\n font >>>= 0;\n text >>>= 0;\n color >>>= 0;\n text = UTF8ToString(text) || " ";\n var fontData = SDL.fonts[font];\n var w2 = SDL.estimateTextWidth(fontData, text);\n var h = fontData.size;\n color = SDL.loadColorToCSSRGB(color);\n var fontString = SDL.makeFontString(h, fontData.name);\n var surf = SDL.makeSurface(w2, h, 0, false, "text:" + text);\n var surfData = SDL.surfaces[surf];\n surfData.ctx.save();\n surfData.ctx.fillStyle = color;\n surfData.ctx.font = fontString;\n surfData.ctx.textBaseline = "bottom";\n surfData.ctx.fillText(text, 0, h | 0);\n surfData.ctx.restore();\n return surf;\n }\n _TTF_RenderText_Solid.sig = "pppp";\n var _TTF_RenderText_Blended = _TTF_RenderText_Solid;\n _TTF_RenderText_Blended.sig = "pppp";\n function _TTF_RenderText_Shaded(a1, a2, a3, a4) {\n a1 >>>= 0;\n a2 >>>= 0;\n a3 >>>= 0;\n a4 >>>= 0;\n return _TTF_RenderText_Solid(a1, a2, a3);\n }\n _TTF_RenderText_Shaded.sig = "ppppp";\n var _TTF_RenderUTF8_Solid = _TTF_RenderText_Solid;\n _TTF_RenderUTF8_Solid.sig = "pppp";\n function _TTF_SizeText(font, text, w2, h) {\n font >>>= 0;\n text >>>= 0;\n w2 >>>= 0;\n h >>>= 0;\n var fontData = SDL.fonts[font];\n if (w2) {\n HEAP32[w2 >>> 2 >>> 0] = SDL.estimateTextWidth(fontData, UTF8ToString(text));\n }\n if (h) {\n HEAP32[h >>> 2 >>> 0] = fontData.size;\n }\n return 0;\n }\n _TTF_SizeText.sig = "ipppp";\n var _TTF_SizeUTF8 = _TTF_SizeText;\n _TTF_SizeUTF8.sig = "ipppp";\n function _TTF_GlyphMetrics(font, ch, minx, maxx, miny, maxy, advance) {\n font >>>= 0;\n minx >>>= 0;\n maxx >>>= 0;\n miny >>>= 0;\n maxy >>>= 0;\n advance >>>= 0;\n var fontData = SDL.fonts[font];\n var width = SDL.estimateTextWidth(fontData, String.fromCharCode(ch));\n if (advance) {\n HEAP32[advance >>> 2 >>> 0] = width;\n }\n if (minx) {\n HEAP32[minx >>> 2 >>> 0] = 0;\n }\n if (maxx) {\n HEAP32[maxx >>> 2 >>> 0] = width;\n }\n if (miny) {\n HEAP32[miny >>> 2 >>> 0] = 0;\n }\n if (maxy) {\n HEAP32[maxy >>> 2 >>> 0] = fontData.size;\n }\n }\n _TTF_GlyphMetrics.sig = "ipippppp";\n function _TTF_FontAscent(font) {\n font >>>= 0;\n var fontData = SDL.fonts[font];\n return fontData.size * 0.98 | 0;\n }\n _TTF_FontAscent.sig = "ip";\n function _TTF_FontDescent(font) {\n font >>>= 0;\n var fontData = SDL.fonts[font];\n return fontData.size * 0.02 | 0;\n }\n _TTF_FontDescent.sig = "ip";\n function _TTF_FontHeight(font) {\n font >>>= 0;\n var fontData = SDL.fonts[font];\n return fontData.size;\n }\n _TTF_FontHeight.sig = "ip";\n var _TTF_FontLineSkip = _TTF_FontHeight;\n _TTF_FontLineSkip.sig = "ip";\n var _TTF_Quit = () => out("TTF_Quit called (and ignored)");\n _TTF_Quit.sig = "v";\n var SDL_gfx = { drawRectangle: (surf, x1, y1, x2, y2, action, cssColor) => {\n x1 = x1 << 16 >> 16;\n y1 = y1 << 16 >> 16;\n x2 = x2 << 16 >> 16;\n y2 = y2 << 16 >> 16;\n var surfData = SDL.surfaces[surf];\n var x3 = x1 < x2 ? x1 : x2;\n var y = y1 < y2 ? y1 : y2;\n var w2 = Math.abs(x2 - x1);\n var h = Math.abs(y2 - y1);\n surfData.ctx.save();\n surfData.ctx[action + "Style"] = cssColor;\n surfData.ctx[action + "Rect"](x3, y, w2, h);\n surfData.ctx.restore();\n }, drawLine: (surf, x1, y1, x2, y2, cssColor) => {\n x1 = x1 << 16 >> 16;\n y1 = y1 << 16 >> 16;\n x2 = x2 << 16 >> 16;\n y2 = y2 << 16 >> 16;\n var surfData = SDL.surfaces[surf];\n surfData.ctx.save();\n surfData.ctx.strokeStyle = cssColor;\n surfData.ctx.beginPath();\n surfData.ctx.moveTo(x1, y1);\n surfData.ctx.lineTo(x2, y2);\n surfData.ctx.stroke();\n surfData.ctx.restore();\n }, drawEllipse: (surf, x2, y, rx, ry, action, cssColor) => {\n x2 = x2 << 16 >> 16;\n y = y << 16 >> 16;\n rx = rx << 16 >> 16;\n ry = ry << 16 >> 16;\n var surfData = SDL.surfaces[surf];\n surfData.ctx.save();\n surfData.ctx.beginPath();\n surfData.ctx.translate(x2, y);\n surfData.ctx.scale(rx, ry);\n surfData.ctx.arc(0, 0, 1, 0, 2 * Math.PI);\n surfData.ctx.restore();\n surfData.ctx.save();\n surfData.ctx[action + "Style"] = cssColor;\n surfData.ctx[action]();\n surfData.ctx.restore();\n }, translateColorToCSSRGBA: (rgba) => `rgba(${rgba >>> 24},${rgba >> 16 & 255},${rgba >> 8 & 255},${rgba & 255})` };\n function _boxColor(surf, x1, y1, x2, y2, color) {\n surf >>>= 0;\n return SDL_gfx.drawRectangle(surf, x1, y1, x2, y2, "fill", SDL_gfx.translateColorToCSSRGBA(color));\n }\n _boxColor.sig = "ipiiiii";\n function _boxRGBA(surf, x1, y1, x2, y2, r, g, b2, a) {\n surf >>>= 0;\n return SDL_gfx.drawRectangle(surf, x1, y1, x2, y2, "fill", SDL.translateRGBAToCSSRGBA(r, g, b2, a));\n }\n _boxRGBA.sig = "ipiiiiiiii";\n function _rectangleColor(surf, x1, y1, x2, y2, color) {\n surf >>>= 0;\n return SDL_gfx.drawRectangle(surf, x1, y1, x2, y2, "stroke", SDL_gfx.translateColorToCSSRGBA(color));\n }\n _rectangleColor.sig = "ipiiiii";\n function _rectangleRGBA(surf, x1, y1, x2, y2, r, g, b2, a) {\n surf >>>= 0;\n return SDL_gfx.drawRectangle(surf, x1, y1, x2, y2, "stroke", SDL.translateRGBAToCSSRGBA(r, g, b2, a));\n }\n _rectangleRGBA.sig = "ipiiiiiiii";\n function _ellipseColor(surf, x2, y, rx, ry, color) {\n surf >>>= 0;\n return SDL_gfx.drawEllipse(surf, x2, y, rx, ry, "stroke", SDL_gfx.translateColorToCSSRGBA(color));\n }\n _ellipseColor.sig = "ipiiiii";\n function _ellipseRGBA(surf, x2, y, rx, ry, r, g, b2, a) {\n surf >>>= 0;\n return SDL_gfx.drawEllipse(surf, x2, y, rx, ry, "stroke", SDL.translateRGBAToCSSRGBA(r, g, b2, a));\n }\n _ellipseRGBA.sig = "ipiiiiiiii";\n function _filledEllipseColor(surf, x2, y, rx, ry, color) {\n surf >>>= 0;\n return SDL_gfx.drawEllipse(surf, x2, y, rx, ry, "fill", SDL_gfx.translateColorToCSSRGBA(color));\n }\n _filledEllipseColor.sig = "ipiiiii";\n function _filledEllipseRGBA(surf, x2, y, rx, ry, r, g, b2, a) {\n surf >>>= 0;\n return SDL_gfx.drawEllipse(surf, x2, y, rx, ry, "fill", SDL.translateRGBAToCSSRGBA(r, g, b2, a));\n }\n _filledEllipseRGBA.sig = "ipiiiiiiii";\n function _lineColor(surf, x1, y1, x2, y2, color) {\n surf >>>= 0;\n return SDL_gfx.drawLine(surf, x1, y1, x2, y2, SDL_gfx.translateColorToCSSRGBA(color));\n }\n _lineColor.sig = "ipiiiii";\n function _lineRGBA(surf, x1, y1, x2, y2, r, g, b2, a) {\n surf >>>= 0;\n return SDL_gfx.drawLine(surf, x1, y1, x2, y2, SDL.translateRGBAToCSSRGBA(r, g, b2, a));\n }\n _lineRGBA.sig = "ipiiiiiiii";\n function _pixelRGBA(surf, x1, y1, r, g, b2, a) {\n surf >>>= 0;\n return _boxRGBA(surf, x1, y1, x1, y1, r, g, b2, a);\n }\n _pixelRGBA.sig = "ipiiiiii";\n var _SDL_GL_SetAttribute = (attr, value2) => {\n if (!(attr in SDL.glAttributes)) {\n abort("Unknown SDL GL attribute (" + attr + "). Please check if your SDL version is supported.");\n }\n SDL.glAttributes[attr] = value2;\n };\n _SDL_GL_SetAttribute.sig = "iii";\n function _SDL_GL_GetAttribute(attr, value2) {\n value2 >>>= 0;\n if (!(attr in SDL.glAttributes)) {\n abort("Unknown SDL GL attribute (" + attr + "). Please check if your SDL version is supported.");\n }\n if (value2) HEAP32[value2 >>> 2 >>> 0] = SDL.glAttributes[attr];\n return 0;\n }\n _SDL_GL_GetAttribute.sig = "iip";\n var _SDL_GL_SwapBuffers = () => Browser.doSwapBuffers?.();\n _SDL_GL_SwapBuffers.sig = "v";\n function _SDL_GL_ExtensionSupported(extension) {\n extension >>>= 0;\n return GLctx?.getExtension(UTF8ToString(extension)) ? 1 : 0;\n }\n _SDL_GL_ExtensionSupported.sig = "ip";\n function _SDL_DestroyWindow(window2) {\n window2 >>>= 0;\n }\n _SDL_DestroyWindow.sig = "vp";\n function _SDL_DestroyRenderer(renderer) {\n renderer >>>= 0;\n }\n _SDL_DestroyRenderer.sig = "vp";\n function _SDL_GetWindowFlags(window2) {\n window2 >>>= 0;\n if (Browser.isFullscreen) {\n return 1;\n }\n return 0;\n }\n _SDL_GetWindowFlags.sig = "ip";\n function _SDL_GL_SwapWindow(window2) {\n window2 >>>= 0;\n }\n _SDL_GL_SwapWindow.sig = "vp";\n function _SDL_GL_MakeCurrent(window2, context) {\n window2 >>>= 0;\n context >>>= 0;\n }\n _SDL_GL_MakeCurrent.sig = "ipp";\n function _SDL_GL_DeleteContext(context) {\n context >>>= 0;\n }\n _SDL_GL_DeleteContext.sig = "vp";\n var _SDL_GL_GetSwapInterval = () => {\n if (MainLoop.timingMode == 1) {\n return MainLoop.timingValue;\n } else {\n return 0;\n }\n };\n _SDL_GL_GetSwapInterval.sig = "i";\n var _SDL_GL_SetSwapInterval = (state) => _emscripten_set_main_loop_timing(1, state);\n _SDL_GL_SetSwapInterval.sig = "ii";\n function _SDL_SetWindowTitle(window2, title) {\n window2 >>>= 0;\n title >>>= 0;\n if (title) document.title = UTF8ToString(title);\n }\n _SDL_SetWindowTitle.sig = "vpp";\n function _SDL_GetWindowSize(window2, width, height) {\n window2 >>>= 0;\n width >>>= 0;\n height >>>= 0;\n var canvas = Browser.getCanvas();\n if (width) HEAP32[width >>> 2 >>> 0] = canvas.width;\n if (height) HEAP32[height >>> 2 >>> 0] = canvas.height;\n }\n _SDL_GetWindowSize.sig = "vppp";\n function _SDL_LogSetOutputFunction(callback, userdata) {\n callback >>>= 0;\n userdata >>>= 0;\n }\n _SDL_LogSetOutputFunction.sig = "vpp";\n function _SDL_SetWindowFullscreen(window2, fullscreen) {\n window2 >>>= 0;\n if (Browser.isFullscreen) {\n Browser.getCanvas().exitFullscreen();\n return 1;\n }\n return 0;\n }\n _SDL_SetWindowFullscreen.sig = "ipi";\n var _SDL_ClearError = () => {\n };\n _SDL_ClearError.sig = "v";\n var _SDL_SetGamma = (r, g, b2) => -1;\n _SDL_SetGamma.sig = "ifff";\n function _SDL_SetGammaRamp(redTable, greenTable, blueTable) {\n redTable >>>= 0;\n greenTable >>>= 0;\n blueTable >>>= 0;\n return -1;\n }\n _SDL_SetGammaRamp.sig = "ippp";\n var _SDL_NumJoysticks = () => {\n var count = 0;\n var gamepads = SDL.getGamepads();\n for (var gamepad of gamepads) {\n if (gamepad !== void 0) count++;\n }\n return count;\n };\n _SDL_NumJoysticks.sig = "i";\n function _SDL_JoystickName(deviceIndex) {\n var gamepad = SDL.getGamepad(deviceIndex);\n if (gamepad) {\n var name2 = gamepad.id;\n if (SDL.joystickNamePool.hasOwnProperty(name2)) {\n return SDL.joystickNamePool[name2];\n }\n return SDL.joystickNamePool[name2] = stringToNewUTF8(name2);\n }\n return 0;\n }\n _SDL_JoystickName.sig = "pi";\n function _SDL_JoystickOpen(deviceIndex) {\n var gamepad = SDL.getGamepad(deviceIndex);\n if (gamepad) {\n var joystick = deviceIndex + 1;\n SDL.recordJoystickState(joystick, gamepad);\n return joystick;\n }\n return 0;\n }\n _SDL_JoystickOpen.sig = "pi";\n var _SDL_JoystickOpened = (deviceIndex) => SDL.lastJoystickState.hasOwnProperty(deviceIndex + 1) ? 1 : 0;\n _SDL_JoystickOpened.sig = "ii";\n function _SDL_JoystickIndex(joystick) {\n joystick >>>= 0;\n return joystick - 1;\n }\n _SDL_JoystickIndex.sig = "ip";\n function _SDL_JoystickNumAxes(joystick) {\n joystick >>>= 0;\n var gamepad = SDL.getGamepad(joystick - 1);\n if (gamepad) {\n return gamepad.axes.length;\n }\n return 0;\n }\n _SDL_JoystickNumAxes.sig = "ip";\n function _SDL_JoystickNumBalls(joystick) {\n joystick >>>= 0;\n return 0;\n }\n _SDL_JoystickNumBalls.sig = "ip";\n function _SDL_JoystickNumHats(joystick) {\n joystick >>>= 0;\n return 0;\n }\n _SDL_JoystickNumHats.sig = "ip";\n function _SDL_JoystickNumButtons(joystick) {\n joystick >>>= 0;\n var gamepad = SDL.getGamepad(joystick - 1);\n if (gamepad) {\n return gamepad.buttons.length;\n }\n return 0;\n }\n _SDL_JoystickNumButtons.sig = "ip";\n var _SDL_JoystickUpdate = () => SDL.queryJoysticks();\n _SDL_JoystickUpdate.sig = "v";\n var _SDL_JoystickEventState = (state) => {\n if (state < 0) {\n return SDL.joystickEventState;\n }\n return SDL.joystickEventState = state;\n };\n _SDL_JoystickEventState.sig = "ii";\n function _SDL_JoystickGetAxis(joystick, axis) {\n joystick >>>= 0;\n var gamepad = SDL.getGamepad(joystick - 1);\n if (gamepad?.axes.length > axis) {\n return SDL.joystickAxisValueConversion(gamepad.axes[axis]);\n }\n return 0;\n }\n _SDL_JoystickGetAxis.sig = "ipi";\n function _SDL_JoystickGetHat(joystick, hat) {\n joystick >>>= 0;\n return 0;\n }\n _SDL_JoystickGetHat.sig = "ipi";\n function _SDL_JoystickGetBall(joystick, ball, dxptr, dyptr) {\n joystick >>>= 0;\n dxptr >>>= 0;\n dyptr >>>= 0;\n return -1;\n }\n _SDL_JoystickGetBall.sig = "ipipp";\n function _SDL_JoystickGetButton(joystick, button) {\n joystick >>>= 0;\n var gamepad = SDL.getGamepad(joystick - 1);\n if (gamepad?.buttons.length > button) {\n return SDL.getJoystickButtonState(gamepad.buttons[button]) ? 1 : 0;\n }\n return 0;\n }\n _SDL_JoystickGetButton.sig = "ipi";\n function _SDL_JoystickClose(joystick) {\n joystick >>>= 0;\n delete SDL.lastJoystickState[joystick];\n }\n _SDL_JoystickClose.sig = "vp";\n var _SDL_InitSubSystem = (flags2) => 0;\n _SDL_InitSubSystem.sig = "ii";\n function _SDL_RWFromConstMem(mem, size) {\n mem >>>= 0;\n var id = SDL.rwops.length;\n SDL.rwops.push({ bytes: mem, count: size });\n return id;\n }\n _SDL_RWFromConstMem.sig = "ppi";\n var _SDL_RWFromMem = _SDL_RWFromConstMem;\n _SDL_RWFromMem.sig = "ppi";\n var _SDL_GetNumAudioDrivers = () => 1;\n _SDL_GetNumAudioDrivers.sig = "i";\n function _SDL_GetCurrentAudioDriver() {\n return stringToNewUTF8("Emscripten Audio");\n }\n _SDL_GetCurrentAudioDriver.sig = "p";\n var _SDL_GetScancodeFromKey = (key) => SDL.scanCodes[key];\n _SDL_GetScancodeFromKey.sig = "ii";\n function _SDL_GetAudioDriver(index) {\n return _SDL_GetCurrentAudioDriver();\n }\n _SDL_GetAudioDriver.sig = "pi";\n var _SDL_EnableUNICODE = (on) => {\n var ret = SDL.unicode || 0;\n SDL.unicode = on;\n return ret;\n };\n _SDL_EnableUNICODE.sig = "ii";\n var _SDL_AddTimer = function(interval, callback, param) {\n callback >>>= 0;\n param >>>= 0;\n return safeSetTimeout(() => getWasmTableEntry(callback)(interval, param), interval);\n };\n _SDL_AddTimer.sig = "iipp";\n var _SDL_RemoveTimer = (id) => {\n clearTimeout(id);\n return true;\n };\n _SDL_RemoveTimer.sig = "ii";\n function _SDL_CreateThread(fs2, data2, pfnBeginThread, pfnEndThread) {\n fs2 >>>= 0;\n data2 >>>= 0;\n return abort("SDL threads cannot be supported in the web platform because they assume shared state. See emscripten_create_worker etc. for a message-passing concurrency model that does let you run code in another thread.");\n }\n _SDL_CreateThread.sig = "ppp";\n function _SDL_WaitThread(thread, status) {\n thread >>>= 0;\n status >>>= 0;\n return abort("SDL_WaitThread: TODO");\n }\n _SDL_WaitThread.sig = "vpp";\n function _SDL_GetThreadID(thread) {\n thread >>>= 0;\n return abort("SDL_GetThreadID: TODO");\n }\n _SDL_GetThreadID.sig = "pp";\n function _SDL_ThreadID() {\n return 0;\n }\n _SDL_ThreadID.sig = "p";\n function _SDL_AllocRW() {\n return abort("SDL_AllocRW: TODO");\n }\n _SDL_AllocRW.sig = "p";\n function _SDL_CondBroadcast(cond) {\n cond >>>= 0;\n return abort("SDL_CondBroadcast: TODO");\n }\n _SDL_CondBroadcast.sig = "ip";\n function _SDL_CondWaitTimeout(cond, mutex, ms) {\n cond >>>= 0;\n mutex >>>= 0;\n return abort("SDL_CondWaitTimeout: TODO");\n }\n _SDL_CondWaitTimeout.sig = "ippi";\n var _SDL_WM_IconifyWindow = () => abort("SDL_WM_IconifyWindow TODO");\n _SDL_WM_IconifyWindow.sig = "i";\n function _Mix_SetPostMix(func2, arg2) {\n func2 >>>= 0;\n arg2 >>>= 0;\n return warnOnce("Mix_SetPostMix: TODO");\n }\n _Mix_SetPostMix.sig = "vpp";\n function _Mix_VolumeChunk(chunk, volume) {\n chunk >>>= 0;\n return abort("Mix_VolumeChunk: TODO");\n }\n _Mix_VolumeChunk.sig = "ipi";\n var _Mix_SetPosition = (channel, angle, distance) => abort("Mix_SetPosition: TODO");\n _Mix_SetPosition.sig = "iiii";\n function _Mix_QuerySpec(frequency, format, channels) {\n frequency >>>= 0;\n format >>>= 0;\n channels >>>= 0;\n return abort("Mix_QuerySpec: TODO");\n }\n _Mix_QuerySpec.sig = "ippp";\n function _Mix_FadeInChannelTimed(channel, chunk, loop, ms, ticks) {\n chunk >>>= 0;\n return abort("Mix_FadeInChannelTimed");\n }\n _Mix_FadeInChannelTimed.sig = "iipiii";\n var _Mix_FadeOutChannel = () => abort("Mix_FadeOutChannel");\n _Mix_FadeOutChannel.sig = "iii";\n function _Mix_Linked_Version() {\n return abort("Mix_Linked_Version: TODO");\n }\n _Mix_Linked_Version.sig = "p";\n function _SDL_SaveBMP_RW(surface, dst, freedst) {\n surface >>>= 0;\n dst >>>= 0;\n return abort("SDL_SaveBMP_RW: TODO");\n }\n _SDL_SaveBMP_RW.sig = "ippi";\n function _SDL_WM_SetIcon(icon, mask) {\n icon >>>= 0;\n mask >>>= 0;\n }\n _SDL_WM_SetIcon.sig = "vpp";\n var _SDL_HasRDTSC = () => 0;\n _SDL_HasRDTSC.sig = "i";\n var _SDL_HasMMX = () => 0;\n _SDL_HasMMX.sig = "i";\n var _SDL_HasMMXExt = () => 0;\n _SDL_HasMMXExt.sig = "i";\n var _SDL_Has3DNow = () => 0;\n _SDL_Has3DNow.sig = "i";\n var _SDL_Has3DNowExt = () => 0;\n _SDL_Has3DNowExt.sig = "i";\n var _SDL_HasSSE = () => 0;\n _SDL_HasSSE.sig = "i";\n var _SDL_HasSSE2 = () => 0;\n _SDL_HasSSE2.sig = "i";\n var _SDL_HasAltiVec = () => 0;\n _SDL_HasAltiVec.sig = "i";\n registerWasmPlugin();\n FS.createPreloadedFile = FS_createPreloadedFile;\n FS.preloadFile = FS_preloadFile;\n FS.staticInit();\n for (var base64ReverseLookup = new Uint8Array(123), __b64i = 25; __b64i >= 0; --__b64i) {\n base64ReverseLookup[48 + __b64i] = 52 + __b64i;\n base64ReverseLookup[65 + __b64i] = __b64i;\n base64ReverseLookup[97 + __b64i] = 26 + __b64i;\n }\n base64ReverseLookup[43] = 62;\n base64ReverseLookup[47] = 63;\n if (ENVIRONMENT_IS_NODE) {\n NODEFS.staticInit();\n }\n for (let i2 = 0; i2 < 32; ++i2) tempFixedLengthArray.push(new Array(i2));\n var miniTempWebGLFloatBuffersStorage = new Float32Array(288);\n for (var i = 0; i <= 288; ++i) {\n miniTempWebGLFloatBuffers[i] = miniTempWebGLFloatBuffersStorage.subarray(0, i);\n }\n var miniTempWebGLIntBuffersStorage = new Int32Array(288);\n for (var i = 0; i <= 288; ++i) {\n miniTempWebGLIntBuffers[i] = miniTempWebGLIntBuffersStorage.subarray(0, i);\n }\n Module["requestAnimationFrame"] = MainLoop.requestAnimationFrame;\n Module["pauseMainLoop"] = MainLoop.pause;\n Module["resumeMainLoop"] = MainLoop.resume;\n MainLoop.init();\n if (globalThis.setImmediate) {\n emSetImmediate = setImmediateWrapped;\n emClearImmediate = clearImmediateWrapped;\n } else if (globalThis.addEventListener) {\n var __setImmediate_id_counter = 0;\n var __setImmediate_queue = [];\n var __setImmediate_message_id = "_si";\n var __setImmediate_cb = (e) => {\n if (e.data === __setImmediate_message_id) {\n e.stopPropagation();\n __setImmediate_queue.shift()();\n ++__setImmediate_id_counter;\n }\n };\n addEventListener("message", __setImmediate_cb, true);\n emSetImmediate = (func2) => {\n postMessage(__setImmediate_message_id, "*");\n return __setImmediate_id_counter + __setImmediate_queue.push(func2) - 1;\n };\n emClearImmediate = (id) => {\n var index = id - __setImmediate_id_counter;\n if (index >= 0 && index < __setImmediate_queue.length) __setImmediate_queue[index] = () => {\n };\n };\n }\n registerPostMainLoop(() => SDL.audio?.queueNewAudioData?.());\n {\n if (Module["preloadPlugins"]) preloadPlugins = Module["preloadPlugins"];\n if (Module["noExitRuntime"]) noExitRuntime = Module["noExitRuntime"];\n if (Module["print"]) out = Module["print"];\n if (Module["printErr"]) err = Module["printErr"];\n if (Module["dynamicLibraries"]) dynamicLibraries = Module["dynamicLibraries"];\n if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"];\n if (Module["arguments"]) arguments_ = Module["arguments"];\n if (Module["thisProgram"]) thisProgram = Module["thisProgram"];\n if (Module["preInit"]) {\n if (typeof Module["preInit"] == "function") Module["preInit"] = [Module["preInit"]];\n while (Module["preInit"].length > 0) {\n Module["preInit"].shift()();\n }\n }\n }\n Module["ERRNO_CODES"] = ERRNO_CODES;\n Module["DNS"] = DNS;\n Module["addRunDependency"] = addRunDependency;\n Module["removeRunDependency"] = removeRunDependency;\n Module["FS_preloadFile"] = FS_preloadFile;\n Module["FS_unlink"] = FS_unlink;\n Module["FS_createPath"] = FS_createPath;\n Module["FS_createDevice"] = FS_createDevice;\n Module["FS_createDataFile"] = FS_createDataFile;\n Module["FS_createLazyFile"] = FS_createLazyFile;\n Module["LZ4"] = LZ4;\n Module["ExitStatus"] = ExitStatus;\n Module["GOTHandler"] = GOTHandler;\n Module["GOT"] = GOT;\n Module["addOnPostRun"] = addOnPostRun;\n Module["onPostRuns"] = onPostRuns;\n Module["callRuntimeCallbacks"] = callRuntimeCallbacks;\n Module["addOnPreRun"] = addOnPreRun;\n Module["onPreRuns"] = onPreRuns;\n Module["getDylinkMetadata"] = getDylinkMetadata;\n Module["UTF8ArrayToString"] = UTF8ArrayToString;\n Module["UTF8Decoder"] = UTF8Decoder;\n Module["findStringEnd"] = findStringEnd;\n Module["getValue"] = getValue;\n Module["loadDylibs"] = loadDylibs;\n Module["loadDynamicLibrary"] = loadDynamicLibrary;\n Module["LDSO"] = LDSO;\n Module["newDSO"] = newDSO;\n Module["loadWebAssemblyModule"] = loadWebAssemblyModule;\n Module["getMemory"] = getMemory;\n Module["alignMemory"] = alignMemory;\n Module["updateGOT"] = updateGOT;\n Module["isInternalSym"] = isInternalSym;\n Module["addFunction"] = addFunction;\n Module["getFunctionAddress"] = getFunctionAddress;\n Module["updateTableMap"] = updateTableMap;\n Module["getWasmTableEntry"] = getWasmTableEntry;\n Module["wasmTableMirror"] = wasmTableMirror;\n Module["functionsInTableMap"] = functionsInTableMap;\n Module["getEmptyTableSlot"] = getEmptyTableSlot;\n Module["freeTableIndexes"] = freeTableIndexes;\n Module["setWasmTableEntry"] = setWasmTableEntry;\n Module["convertJsFunctionToWasm"] = convertJsFunctionToWasm;\n Module["uleb128EncodeWithLen"] = uleb128EncodeWithLen;\n Module["generateTypePack"] = generateTypePack;\n Module["wasmTypeCodes"] = wasmTypeCodes;\n Module["relocateExports"] = relocateExports;\n Module["isImmutableGlobal"] = isImmutableGlobal;\n Module["resolveGlobalSymbol"] = resolveGlobalSymbol;\n Module["isSymbolDefined"] = isSymbolDefined;\n Module["createNamedFunction"] = createNamedFunction;\n Module["addOnPostCtor"] = addOnPostCtor;\n Module["onPostCtors"] = onPostCtors;\n Module["UTF8ToString"] = UTF8ToString;\n Module["mergeLibSymbols"] = mergeLibSymbols;\n Module["asyncLoad"] = asyncLoad;\n Module["preloadedWasm"] = preloadedWasm;\n Module["registerWasmPlugin"] = registerWasmPlugin;\n Module["preloadPlugins"] = preloadPlugins;\n Module["findLibraryFS"] = findLibraryFS;\n Module["replaceORIGIN"] = replaceORIGIN;\n Module["PATH"] = PATH;\n Module["withStackSave"] = withStackSave;\n Module["stackSave"] = stackSave;\n Module["stackRestore"] = stackRestore;\n Module["stackAlloc"] = stackAlloc;\n Module["lengthBytesUTF8"] = lengthBytesUTF8;\n Module["stringToUTF8OnStack"] = stringToUTF8OnStack;\n Module["stringToUTF8"] = stringToUTF8;\n Module["stringToUTF8Array"] = stringToUTF8Array;\n Module["FS"] = FS;\n Module["randomFill"] = randomFill;\n Module["initRandomFill"] = initRandomFill;\n Module["base64Decode"] = base64Decode;\n Module["PATH_FS"] = PATH_FS;\n Module["TTY"] = TTY;\n Module["FS_stdin_getChar"] = FS_stdin_getChar;\n Module["FS_stdin_getChar_buffer"] = FS_stdin_getChar_buffer;\n Module["intArrayFromString"] = intArrayFromString;\n Module["MEMFS"] = MEMFS;\n Module["mmapAlloc"] = mmapAlloc;\n Module["zeroMemory"] = zeroMemory;\n Module["FS_modeStringToFlags"] = FS_modeStringToFlags;\n Module["FS_fileDataToTypedArray"] = FS_fileDataToTypedArray;\n Module["FS_getMode"] = FS_getMode;\n Module["IDBFS"] = IDBFS;\n Module["NODEFS"] = NODEFS;\n Module["ERRNO_CODES"] = ERRNO_CODES;\n Module["WORKERFS"] = WORKERFS;\n Module["PROXYFS"] = PROXYFS;\n Module["FS_createPreloadedFile"] = FS_createPreloadedFile;\n Module["FS_preloadFile"] = FS_preloadFile;\n Module["FS_createDataFile"] = FS_createDataFile;\n Module["getUniqueRunDependency"] = getUniqueRunDependency;\n Module["addRunDependency"] = addRunDependency;\n Module["runDependencies"] = runDependencies;\n Module["removeRunDependency"] = removeRunDependency;\n Module["dependenciesFulfilled"] = dependenciesFulfilled;\n Module["FS_handledByPreloadPlugin"] = FS_handledByPreloadPlugin;\n Module["LZ4"] = LZ4;\n Module["reportUndefinedSymbols"] = reportUndefinedSymbols;\n Module["noExitRuntime"] = noExitRuntime;\n Module["setValue"] = setValue;\n Module["_JsvError_Check"] = _JsvError_Check;\n Module["_Jsv_GetError_import"] = _Jsv_GetError_import;\n Module["___assert_fail"] = ___assert_fail;\n Module["bigintToI53Checked"] = bigintToI53Checked;\n Module["INT53_MAX"] = INT53_MAX;\n Module["INT53_MIN"] = INT53_MIN;\n Module["___call_sighandler"] = ___call_sighandler;\n Module["___syscall_accept4"] = ___syscall_accept4;\n Module["getSocketFromFD"] = getSocketFromFD;\n Module["SOCKFS"] = SOCKFS;\n Module["writeSockaddr"] = writeSockaddr;\n Module["inetPton4"] = inetPton4;\n Module["inetPton6"] = inetPton6;\n Module["DNS"] = DNS;\n Module["___syscall_bind"] = ___syscall_bind;\n Module["getSocketAddress"] = getSocketAddress;\n Module["readSockaddr"] = readSockaddr;\n Module["inetNtop4"] = inetNtop4;\n Module["inetNtop6"] = inetNtop6;\n Module["___syscall_chdir"] = ___syscall_chdir;\n Module["SYSCALLS"] = SYSCALLS;\n Module["___syscall_chmod"] = ___syscall_chmod;\n Module["___syscall_connect"] = ___syscall_connect;\n Module["___syscall_dup"] = ___syscall_dup;\n Module["___syscall_dup3"] = ___syscall_dup3;\n Module["___syscall_faccessat"] = ___syscall_faccessat;\n Module["___syscall_fadvise64"] = ___syscall_fadvise64;\n Module["___syscall_fallocate"] = ___syscall_fallocate;\n Module["___syscall_fchdir"] = ___syscall_fchdir;\n Module["___syscall_fchmod"] = ___syscall_fchmod;\n Module["___syscall_fchmodat2"] = ___syscall_fchmodat2;\n Module["___syscall_fchown32"] = ___syscall_fchown32;\n Module["___syscall_fchownat"] = ___syscall_fchownat;\n Module["___syscall_fcntl64"] = ___syscall_fcntl64;\n Module["syscallGetVarargP"] = syscallGetVarargP;\n Module["syscallGetVarargI"] = syscallGetVarargI;\n Module["___syscall_fdatasync"] = ___syscall_fdatasync;\n Module["___syscall_fstat64"] = ___syscall_fstat64;\n Module["___syscall_fstatfs64"] = ___syscall_fstatfs64;\n Module["___syscall_ftruncate64"] = ___syscall_ftruncate64;\n Module["___syscall_getcwd"] = ___syscall_getcwd;\n Module["___syscall_getdents64"] = ___syscall_getdents64;\n Module["___syscall_getpeername"] = ___syscall_getpeername;\n Module["___syscall_getsockname"] = ___syscall_getsockname;\n Module["___syscall_getsockopt"] = ___syscall_getsockopt;\n Module["___syscall_ioctl"] = ___syscall_ioctl;\n Module["___syscall_listen"] = ___syscall_listen;\n Module["___syscall_lstat64"] = ___syscall_lstat64;\n Module["___syscall_mkdirat"] = ___syscall_mkdirat;\n Module["___syscall_mknodat"] = ___syscall_mknodat;\n Module["___syscall_newfstatat"] = ___syscall_newfstatat;\n Module["___syscall_openat"] = ___syscall_openat;\n Module["___syscall_pipe"] = ___syscall_pipe;\n Module["PIPEFS"] = PIPEFS;\n Module["___syscall_poll"] = ___syscall_poll;\n Module["___syscall_readlinkat"] = ___syscall_readlinkat;\n Module["___syscall_recvfrom"] = ___syscall_recvfrom;\n Module["___syscall_recvmsg"] = ___syscall_recvmsg;\n Module["___syscall_renameat"] = ___syscall_renameat;\n Module["___syscall_rmdir"] = ___syscall_rmdir;\n Module["___syscall_sendmsg"] = ___syscall_sendmsg;\n Module["___syscall_sendto"] = ___syscall_sendto;\n Module["___syscall_socket"] = ___syscall_socket;\n Module["___syscall_stat64"] = ___syscall_stat64;\n Module["___syscall_statfs64"] = ___syscall_statfs64;\n Module["___syscall_symlinkat"] = ___syscall_symlinkat;\n Module["___syscall_truncate64"] = ___syscall_truncate64;\n Module["___syscall_unlinkat"] = ___syscall_unlinkat;\n Module["___syscall_utimensat"] = ___syscall_utimensat;\n Module["readI53FromI64"] = readI53FromI64;\n Module["__abort_js"] = __abort_js;\n Module["__dlopen_js"] = __dlopen_js;\n Module["dlopenInternal"] = dlopenInternal;\n Module["dlSetError"] = dlSetError;\n Module["__dlsym_js"] = __dlsym_js;\n Module["__emscripten_dlopen_js"] = __emscripten_dlopen_js;\n Module["callUserCallback"] = callUserCallback;\n Module["handleException"] = handleException;\n Module["maybeExit"] = maybeExit;\n Module["_exit"] = _exit;\n Module["exitJS"] = exitJS;\n Module["_proc_exit"] = _proc_exit;\n Module["keepRuntimeAlive"] = keepRuntimeAlive;\n Module["runtimeKeepaliveCounter"] = runtimeKeepaliveCounter;\n Module["runtimeKeepalivePush"] = runtimeKeepalivePush;\n Module["runtimeKeepalivePop"] = runtimeKeepalivePop;\n Module["__emscripten_get_progname"] = __emscripten_get_progname;\n Module["getExecutableName"] = getExecutableName;\n Module["__emscripten_log_formatted"] = __emscripten_log_formatted;\n Module["getCallstack"] = getCallstack;\n Module["jsStackTrace"] = jsStackTrace;\n Module["__emscripten_lookup_name"] = __emscripten_lookup_name;\n Module["__emscripten_runtime_keepalive_clear"] = __emscripten_runtime_keepalive_clear;\n Module["__emscripten_system"] = __emscripten_system;\n Module["__gmtime_js"] = __gmtime_js;\n Module["__localtime_js"] = __localtime_js;\n Module["ydayFromDate"] = ydayFromDate;\n Module["isLeapYear"] = isLeapYear;\n Module["MONTH_DAYS_LEAP_CUMULATIVE"] = MONTH_DAYS_LEAP_CUMULATIVE;\n Module["MONTH_DAYS_REGULAR_CUMULATIVE"] = MONTH_DAYS_REGULAR_CUMULATIVE;\n Module["__mktime_js"] = __mktime_js;\n Module["__mmap_js"] = __mmap_js;\n Module["__msync_js"] = __msync_js;\n Module["__munmap_js"] = __munmap_js;\n Module["__setitimer_js"] = __setitimer_js;\n Module["timers"] = timers;\n Module["_emscripten_get_now"] = _emscripten_get_now;\n Module["__timegm_js"] = __timegm_js;\n Module["__tzset_js"] = __tzset_js;\n Module["_clock_res_get"] = _clock_res_get;\n Module["_emscripten_get_now_res"] = _emscripten_get_now_res;\n Module["nowIsMonotonic"] = nowIsMonotonic;\n Module["checkWasiClock"] = checkWasiClock;\n Module["_clock_time_get"] = _clock_time_get;\n Module["_emscripten_date_now"] = _emscripten_date_now;\n Module["_emscripten_asm_const_int"] = _emscripten_asm_const_int;\n Module["runEmAsmFunction"] = runEmAsmFunction;\n Module["readEmAsmArgs"] = readEmAsmArgs;\n Module["readEmAsmArgsArray"] = readEmAsmArgsArray;\n Module["_emscripten_console_error"] = _emscripten_console_error;\n Module["_emscripten_console_log"] = _emscripten_console_log;\n Module["_emscripten_console_trace"] = _emscripten_console_trace;\n Module["_emscripten_console_warn"] = _emscripten_console_warn;\n Module["_emscripten_debugger"] = _emscripten_debugger;\n Module["_emscripten_err"] = _emscripten_err;\n Module["_emscripten_get_heap_max"] = _emscripten_get_heap_max;\n Module["getHeapMax"] = getHeapMax;\n Module["_emscripten_glActiveTexture"] = _emscripten_glActiveTexture;\n Module["GL"] = GL;\n Module["GLctx"] = GLctx;\n Module["webgl_enable_ANGLE_instanced_arrays"] = webgl_enable_ANGLE_instanced_arrays;\n Module["webgl_enable_OES_vertex_array_object"] = webgl_enable_OES_vertex_array_object;\n Module["webgl_enable_WEBGL_draw_buffers"] = webgl_enable_WEBGL_draw_buffers;\n Module["webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance"] = webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance;\n Module["webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance"] = webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance;\n Module["webgl_enable_EXT_polygon_offset_clamp"] = webgl_enable_EXT_polygon_offset_clamp;\n Module["webgl_enable_EXT_clip_control"] = webgl_enable_EXT_clip_control;\n Module["webgl_enable_WEBGL_polygon_mode"] = webgl_enable_WEBGL_polygon_mode;\n Module["webgl_enable_WEBGL_multi_draw"] = webgl_enable_WEBGL_multi_draw;\n Module["getEmscriptenSupportedExtensions"] = getEmscriptenSupportedExtensions;\n Module["_emscripten_glAttachShader"] = _emscripten_glAttachShader;\n Module["_emscripten_glBeginQuery"] = _emscripten_glBeginQuery;\n Module["_emscripten_glBeginQueryEXT"] = _emscripten_glBeginQueryEXT;\n Module["_emscripten_glBeginTransformFeedback"] = _emscripten_glBeginTransformFeedback;\n Module["_emscripten_glBindAttribLocation"] = _emscripten_glBindAttribLocation;\n Module["_emscripten_glBindBuffer"] = _emscripten_glBindBuffer;\n Module["_emscripten_glBindBufferBase"] = _emscripten_glBindBufferBase;\n Module["_emscripten_glBindBufferRange"] = _emscripten_glBindBufferRange;\n Module["_emscripten_glBindFramebuffer"] = _emscripten_glBindFramebuffer;\n Module["_emscripten_glBindRenderbuffer"] = _emscripten_glBindRenderbuffer;\n Module["_emscripten_glBindSampler"] = _emscripten_glBindSampler;\n Module["_emscripten_glBindTexture"] = _emscripten_glBindTexture;\n Module["_emscripten_glBindTransformFeedback"] = _emscripten_glBindTransformFeedback;\n Module["_emscripten_glBindVertexArray"] = _emscripten_glBindVertexArray;\n Module["_emscripten_glBindVertexArrayOES"] = _emscripten_glBindVertexArrayOES;\n Module["_glBindVertexArray"] = _glBindVertexArray;\n Module["_emscripten_glBlendColor"] = _emscripten_glBlendColor;\n Module["_emscripten_glBlendEquation"] = _emscripten_glBlendEquation;\n Module["_emscripten_glBlendEquationSeparate"] = _emscripten_glBlendEquationSeparate;\n Module["_emscripten_glBlendFunc"] = _emscripten_glBlendFunc;\n Module["_emscripten_glBlendFuncSeparate"] = _emscripten_glBlendFuncSeparate;\n Module["_emscripten_glBlitFramebuffer"] = _emscripten_glBlitFramebuffer;\n Module["_emscripten_glBufferData"] = _emscripten_glBufferData;\n Module["_emscripten_glBufferSubData"] = _emscripten_glBufferSubData;\n Module["_emscripten_glCheckFramebufferStatus"] = _emscripten_glCheckFramebufferStatus;\n Module["_emscripten_glClear"] = _emscripten_glClear;\n Module["_emscripten_glClearBufferfi"] = _emscripten_glClearBufferfi;\n Module["_emscripten_glClearBufferfv"] = _emscripten_glClearBufferfv;\n Module["_emscripten_glClearBufferiv"] = _emscripten_glClearBufferiv;\n Module["_emscripten_glClearBufferuiv"] = _emscripten_glClearBufferuiv;\n Module["_emscripten_glClearColor"] = _emscripten_glClearColor;\n Module["_emscripten_glClearDepthf"] = _emscripten_glClearDepthf;\n Module["_emscripten_glClearStencil"] = _emscripten_glClearStencil;\n Module["_emscripten_glClientWaitSync"] = _emscripten_glClientWaitSync;\n Module["_emscripten_glClipControlEXT"] = _emscripten_glClipControlEXT;\n Module["_emscripten_glColorMask"] = _emscripten_glColorMask;\n Module["_emscripten_glCompileShader"] = _emscripten_glCompileShader;\n Module["_emscripten_glCompressedTexImage2D"] = _emscripten_glCompressedTexImage2D;\n Module["_emscripten_glCompressedTexImage3D"] = _emscripten_glCompressedTexImage3D;\n Module["_emscripten_glCompressedTexSubImage2D"] = _emscripten_glCompressedTexSubImage2D;\n Module["_emscripten_glCompressedTexSubImage3D"] = _emscripten_glCompressedTexSubImage3D;\n Module["_emscripten_glCopyBufferSubData"] = _emscripten_glCopyBufferSubData;\n Module["_emscripten_glCopyTexImage2D"] = _emscripten_glCopyTexImage2D;\n Module["_emscripten_glCopyTexSubImage2D"] = _emscripten_glCopyTexSubImage2D;\n Module["_emscripten_glCopyTexSubImage3D"] = _emscripten_glCopyTexSubImage3D;\n Module["_emscripten_glCreateProgram"] = _emscripten_glCreateProgram;\n Module["_emscripten_glCreateShader"] = _emscripten_glCreateShader;\n Module["_emscripten_glCullFace"] = _emscripten_glCullFace;\n Module["_emscripten_glDeleteBuffers"] = _emscripten_glDeleteBuffers;\n Module["_emscripten_glDeleteFramebuffers"] = _emscripten_glDeleteFramebuffers;\n Module["_emscripten_glDeleteProgram"] = _emscripten_glDeleteProgram;\n Module["_emscripten_glDeleteQueries"] = _emscripten_glDeleteQueries;\n Module["_emscripten_glDeleteQueriesEXT"] = _emscripten_glDeleteQueriesEXT;\n Module["_emscripten_glDeleteRenderbuffers"] = _emscripten_glDeleteRenderbuffers;\n Module["_emscripten_glDeleteSamplers"] = _emscripten_glDeleteSamplers;\n Module["_emscripten_glDeleteShader"] = _emscripten_glDeleteShader;\n Module["_emscripten_glDeleteSync"] = _emscripten_glDeleteSync;\n Module["_emscripten_glDeleteTextures"] = _emscripten_glDeleteTextures;\n Module["_emscripten_glDeleteTransformFeedbacks"] = _emscripten_glDeleteTransformFeedbacks;\n Module["_emscripten_glDeleteVertexArrays"] = _emscripten_glDeleteVertexArrays;\n Module["_emscripten_glDeleteVertexArraysOES"] = _emscripten_glDeleteVertexArraysOES;\n Module["_glDeleteVertexArrays"] = _glDeleteVertexArrays;\n Module["_emscripten_glDepthFunc"] = _emscripten_glDepthFunc;\n Module["_emscripten_glDepthMask"] = _emscripten_glDepthMask;\n Module["_emscripten_glDepthRangef"] = _emscripten_glDepthRangef;\n Module["_emscripten_glDetachShader"] = _emscripten_glDetachShader;\n Module["_emscripten_glDisable"] = _emscripten_glDisable;\n Module["_emscripten_glDisableVertexAttribArray"] = _emscripten_glDisableVertexAttribArray;\n Module["_emscripten_glDrawArrays"] = _emscripten_glDrawArrays;\n Module["_emscripten_glDrawArraysInstanced"] = _emscripten_glDrawArraysInstanced;\n Module["_emscripten_glDrawArraysInstancedANGLE"] = _emscripten_glDrawArraysInstancedANGLE;\n Module["_glDrawArraysInstanced"] = _glDrawArraysInstanced;\n Module["_emscripten_glDrawArraysInstancedARB"] = _emscripten_glDrawArraysInstancedARB;\n Module["_emscripten_glDrawArraysInstancedEXT"] = _emscripten_glDrawArraysInstancedEXT;\n Module["_emscripten_glDrawArraysInstancedNV"] = _emscripten_glDrawArraysInstancedNV;\n Module["_emscripten_glDrawBuffers"] = _emscripten_glDrawBuffers;\n Module["tempFixedLengthArray"] = tempFixedLengthArray;\n Module["_emscripten_glDrawBuffersEXT"] = _emscripten_glDrawBuffersEXT;\n Module["_glDrawBuffers"] = _glDrawBuffers;\n Module["_emscripten_glDrawBuffersWEBGL"] = _emscripten_glDrawBuffersWEBGL;\n Module["_emscripten_glDrawElements"] = _emscripten_glDrawElements;\n Module["_emscripten_glDrawElementsInstanced"] = _emscripten_glDrawElementsInstanced;\n Module["_emscripten_glDrawElementsInstancedANGLE"] = _emscripten_glDrawElementsInstancedANGLE;\n Module["_glDrawElementsInstanced"] = _glDrawElementsInstanced;\n Module["_emscripten_glDrawElementsInstancedARB"] = _emscripten_glDrawElementsInstancedARB;\n Module["_emscripten_glDrawElementsInstancedEXT"] = _emscripten_glDrawElementsInstancedEXT;\n Module["_emscripten_glDrawElementsInstancedNV"] = _emscripten_glDrawElementsInstancedNV;\n Module["_emscripten_glDrawRangeElements"] = _emscripten_glDrawRangeElements;\n Module["_glDrawElements"] = _glDrawElements;\n Module["_emscripten_glEnable"] = _emscripten_glEnable;\n Module["_emscripten_glEnableVertexAttribArray"] = _emscripten_glEnableVertexAttribArray;\n Module["_emscripten_glEndQuery"] = _emscripten_glEndQuery;\n Module["_emscripten_glEndQueryEXT"] = _emscripten_glEndQueryEXT;\n Module["_emscripten_glEndTransformFeedback"] = _emscripten_glEndTransformFeedback;\n Module["_emscripten_glFenceSync"] = _emscripten_glFenceSync;\n Module["_emscripten_glFinish"] = _emscripten_glFinish;\n Module["_emscripten_glFlush"] = _emscripten_glFlush;\n Module["_emscripten_glFramebufferRenderbuffer"] = _emscripten_glFramebufferRenderbuffer;\n Module["_emscripten_glFramebufferTexture2D"] = _emscripten_glFramebufferTexture2D;\n Module["_emscripten_glFramebufferTextureLayer"] = _emscripten_glFramebufferTextureLayer;\n Module["_emscripten_glFrontFace"] = _emscripten_glFrontFace;\n Module["_emscripten_glGenBuffers"] = _emscripten_glGenBuffers;\n Module["_emscripten_glGenFramebuffers"] = _emscripten_glGenFramebuffers;\n Module["_emscripten_glGenQueries"] = _emscripten_glGenQueries;\n Module["_emscripten_glGenQueriesEXT"] = _emscripten_glGenQueriesEXT;\n Module["_emscripten_glGenRenderbuffers"] = _emscripten_glGenRenderbuffers;\n Module["_emscripten_glGenSamplers"] = _emscripten_glGenSamplers;\n Module["_emscripten_glGenTextures"] = _emscripten_glGenTextures;\n Module["_emscripten_glGenTransformFeedbacks"] = _emscripten_glGenTransformFeedbacks;\n Module["_emscripten_glGenVertexArrays"] = _emscripten_glGenVertexArrays;\n Module["_emscripten_glGenVertexArraysOES"] = _emscripten_glGenVertexArraysOES;\n Module["_glGenVertexArrays"] = _glGenVertexArrays;\n Module["_emscripten_glGenerateMipmap"] = _emscripten_glGenerateMipmap;\n Module["_emscripten_glGetActiveAttrib"] = _emscripten_glGetActiveAttrib;\n Module["__glGetActiveAttribOrUniform"] = __glGetActiveAttribOrUniform;\n Module["_emscripten_glGetActiveUniform"] = _emscripten_glGetActiveUniform;\n Module["_emscripten_glGetActiveUniformBlockName"] = _emscripten_glGetActiveUniformBlockName;\n Module["_emscripten_glGetActiveUniformBlockiv"] = _emscripten_glGetActiveUniformBlockiv;\n Module["_emscripten_glGetActiveUniformsiv"] = _emscripten_glGetActiveUniformsiv;\n Module["_emscripten_glGetAttachedShaders"] = _emscripten_glGetAttachedShaders;\n Module["_emscripten_glGetAttribLocation"] = _emscripten_glGetAttribLocation;\n Module["_emscripten_glGetBooleanv"] = _emscripten_glGetBooleanv;\n Module["emscriptenWebGLGet"] = emscriptenWebGLGet;\n Module["writeI53ToI64"] = writeI53ToI64;\n Module["webglGetExtensions"] = webglGetExtensions;\n Module["_emscripten_glGetBufferParameteri64v"] = _emscripten_glGetBufferParameteri64v;\n Module["_emscripten_glGetBufferParameteriv"] = _emscripten_glGetBufferParameteriv;\n Module["_emscripten_glGetError"] = _emscripten_glGetError;\n Module["_emscripten_glGetFloatv"] = _emscripten_glGetFloatv;\n Module["_emscripten_glGetFragDataLocation"] = _emscripten_glGetFragDataLocation;\n Module["_emscripten_glGetFramebufferAttachmentParameteriv"] = _emscripten_glGetFramebufferAttachmentParameteriv;\n Module["_emscripten_glGetInteger64i_v"] = _emscripten_glGetInteger64i_v;\n Module["emscriptenWebGLGetIndexed"] = emscriptenWebGLGetIndexed;\n Module["_emscripten_glGetInteger64v"] = _emscripten_glGetInteger64v;\n Module["_emscripten_glGetIntegeri_v"] = _emscripten_glGetIntegeri_v;\n Module["_emscripten_glGetIntegerv"] = _emscripten_glGetIntegerv;\n Module["_emscripten_glGetInternalformativ"] = _emscripten_glGetInternalformativ;\n Module["_emscripten_glGetProgramBinary"] = _emscripten_glGetProgramBinary;\n Module["_emscripten_glGetProgramInfoLog"] = _emscripten_glGetProgramInfoLog;\n Module["_emscripten_glGetProgramiv"] = _emscripten_glGetProgramiv;\n Module["_emscripten_glGetQueryObjecti64vEXT"] = _emscripten_glGetQueryObjecti64vEXT;\n Module["_emscripten_glGetQueryObjectivEXT"] = _emscripten_glGetQueryObjectivEXT;\n Module["_emscripten_glGetQueryObjectui64vEXT"] = _emscripten_glGetQueryObjectui64vEXT;\n Module["_glGetQueryObjecti64vEXT"] = _glGetQueryObjecti64vEXT;\n Module["_emscripten_glGetQueryObjectuiv"] = _emscripten_glGetQueryObjectuiv;\n Module["_emscripten_glGetQueryObjectuivEXT"] = _emscripten_glGetQueryObjectuivEXT;\n Module["_glGetQueryObjectivEXT"] = _glGetQueryObjectivEXT;\n Module["_emscripten_glGetQueryiv"] = _emscripten_glGetQueryiv;\n Module["_emscripten_glGetQueryivEXT"] = _emscripten_glGetQueryivEXT;\n Module["_emscripten_glGetRenderbufferParameteriv"] = _emscripten_glGetRenderbufferParameteriv;\n Module["_emscripten_glGetSamplerParameterfv"] = _emscripten_glGetSamplerParameterfv;\n Module["_emscripten_glGetSamplerParameteriv"] = _emscripten_glGetSamplerParameteriv;\n Module["_emscripten_glGetShaderInfoLog"] = _emscripten_glGetShaderInfoLog;\n Module["_emscripten_glGetShaderPrecisionFormat"] = _emscripten_glGetShaderPrecisionFormat;\n Module["_emscripten_glGetShaderSource"] = _emscripten_glGetShaderSource;\n Module["_emscripten_glGetShaderiv"] = _emscripten_glGetShaderiv;\n Module["_emscripten_glGetString"] = _emscripten_glGetString;\n Module["stringToNewUTF8"] = stringToNewUTF8;\n Module["_emscripten_glGetStringi"] = _emscripten_glGetStringi;\n Module["_emscripten_glGetSynciv"] = _emscripten_glGetSynciv;\n Module["_emscripten_glGetTexParameterfv"] = _emscripten_glGetTexParameterfv;\n Module["_emscripten_glGetTexParameteriv"] = _emscripten_glGetTexParameteriv;\n Module["_emscripten_glGetTransformFeedbackVarying"] = _emscripten_glGetTransformFeedbackVarying;\n Module["_emscripten_glGetUniformBlockIndex"] = _emscripten_glGetUniformBlockIndex;\n Module["_emscripten_glGetUniformIndices"] = _emscripten_glGetUniformIndices;\n Module["_emscripten_glGetUniformLocation"] = _emscripten_glGetUniformLocation;\n Module["jstoi_q"] = jstoi_q;\n Module["webglPrepareUniformLocationsBeforeFirstUse"] = webglPrepareUniformLocationsBeforeFirstUse;\n Module["webglGetLeftBracePos"] = webglGetLeftBracePos;\n Module["_emscripten_glGetUniformfv"] = _emscripten_glGetUniformfv;\n Module["emscriptenWebGLGetUniform"] = emscriptenWebGLGetUniform;\n Module["webglGetUniformLocation"] = webglGetUniformLocation;\n Module["_emscripten_glGetUniformiv"] = _emscripten_glGetUniformiv;\n Module["_emscripten_glGetUniformuiv"] = _emscripten_glGetUniformuiv;\n Module["_emscripten_glGetVertexAttribIiv"] = _emscripten_glGetVertexAttribIiv;\n Module["emscriptenWebGLGetVertexAttrib"] = emscriptenWebGLGetVertexAttrib;\n Module["_emscripten_glGetVertexAttribIuiv"] = _emscripten_glGetVertexAttribIuiv;\n Module["_glGetVertexAttribIiv"] = _glGetVertexAttribIiv;\n Module["_emscripten_glGetVertexAttribPointerv"] = _emscripten_glGetVertexAttribPointerv;\n Module["_emscripten_glGetVertexAttribfv"] = _emscripten_glGetVertexAttribfv;\n Module["_emscripten_glGetVertexAttribiv"] = _emscripten_glGetVertexAttribiv;\n Module["_emscripten_glHint"] = _emscripten_glHint;\n Module["_emscripten_glInvalidateFramebuffer"] = _emscripten_glInvalidateFramebuffer;\n Module["_emscripten_glInvalidateSubFramebuffer"] = _emscripten_glInvalidateSubFramebuffer;\n Module["_emscripten_glIsBuffer"] = _emscripten_glIsBuffer;\n Module["_emscripten_glIsEnabled"] = _emscripten_glIsEnabled;\n Module["_emscripten_glIsFramebuffer"] = _emscripten_glIsFramebuffer;\n Module["_emscripten_glIsProgram"] = _emscripten_glIsProgram;\n Module["_emscripten_glIsQuery"] = _emscripten_glIsQuery;\n Module["_emscripten_glIsQueryEXT"] = _emscripten_glIsQueryEXT;\n Module["_emscripten_glIsRenderbuffer"] = _emscripten_glIsRenderbuffer;\n Module["_emscripten_glIsSampler"] = _emscripten_glIsSampler;\n Module["_emscripten_glIsShader"] = _emscripten_glIsShader;\n Module["_emscripten_glIsSync"] = _emscripten_glIsSync;\n Module["_emscripten_glIsTexture"] = _emscripten_glIsTexture;\n Module["_emscripten_glIsTransformFeedback"] = _emscripten_glIsTransformFeedback;\n Module["_emscripten_glIsVertexArray"] = _emscripten_glIsVertexArray;\n Module["_emscripten_glIsVertexArrayOES"] = _emscripten_glIsVertexArrayOES;\n Module["_glIsVertexArray"] = _glIsVertexArray;\n Module["_emscripten_glLineWidth"] = _emscripten_glLineWidth;\n Module["_emscripten_glLinkProgram"] = _emscripten_glLinkProgram;\n Module["_emscripten_glPauseTransformFeedback"] = _emscripten_glPauseTransformFeedback;\n Module["_emscripten_glPixelStorei"] = _emscripten_glPixelStorei;\n Module["_emscripten_glPolygonModeWEBGL"] = _emscripten_glPolygonModeWEBGL;\n Module["_emscripten_glPolygonOffset"] = _emscripten_glPolygonOffset;\n Module["_emscripten_glPolygonOffsetClampEXT"] = _emscripten_glPolygonOffsetClampEXT;\n Module["_emscripten_glProgramBinary"] = _emscripten_glProgramBinary;\n Module["_emscripten_glProgramParameteri"] = _emscripten_glProgramParameteri;\n Module["_emscripten_glQueryCounterEXT"] = _emscripten_glQueryCounterEXT;\n Module["_emscripten_glReadBuffer"] = _emscripten_glReadBuffer;\n Module["_emscripten_glReadPixels"] = _emscripten_glReadPixels;\n Module["emscriptenWebGLGetTexPixelData"] = emscriptenWebGLGetTexPixelData;\n Module["computeUnpackAlignedImageSize"] = computeUnpackAlignedImageSize;\n Module["colorChannelsInGlTextureFormat"] = colorChannelsInGlTextureFormat;\n Module["heapObjectForWebGLType"] = heapObjectForWebGLType;\n Module["toTypedArrayIndex"] = toTypedArrayIndex;\n Module["_emscripten_glReleaseShaderCompiler"] = _emscripten_glReleaseShaderCompiler;\n Module["_emscripten_glRenderbufferStorage"] = _emscripten_glRenderbufferStorage;\n Module["_emscripten_glRenderbufferStorageMultisample"] = _emscripten_glRenderbufferStorageMultisample;\n Module["_emscripten_glResumeTransformFeedback"] = _emscripten_glResumeTransformFeedback;\n Module["_emscripten_glSampleCoverage"] = _emscripten_glSampleCoverage;\n Module["_emscripten_glSamplerParameterf"] = _emscripten_glSamplerParameterf;\n Module["_emscripten_glSamplerParameterfv"] = _emscripten_glSamplerParameterfv;\n Module["_emscripten_glSamplerParameteri"] = _emscripten_glSamplerParameteri;\n Module["_emscripten_glSamplerParameteriv"] = _emscripten_glSamplerParameteriv;\n Module["_emscripten_glScissor"] = _emscripten_glScissor;\n Module["_emscripten_glShaderBinary"] = _emscripten_glShaderBinary;\n Module["_emscripten_glShaderSource"] = _emscripten_glShaderSource;\n Module["_emscripten_glStencilFunc"] = _emscripten_glStencilFunc;\n Module["_emscripten_glStencilFuncSeparate"] = _emscripten_glStencilFuncSeparate;\n Module["_emscripten_glStencilMask"] = _emscripten_glStencilMask;\n Module["_emscripten_glStencilMaskSeparate"] = _emscripten_glStencilMaskSeparate;\n Module["_emscripten_glStencilOp"] = _emscripten_glStencilOp;\n Module["_emscripten_glStencilOpSeparate"] = _emscripten_glStencilOpSeparate;\n Module["_emscripten_glTexImage2D"] = _emscripten_glTexImage2D;\n Module["_emscripten_glTexImage3D"] = _emscripten_glTexImage3D;\n Module["_emscripten_glTexParameterf"] = _emscripten_glTexParameterf;\n Module["_emscripten_glTexParameterfv"] = _emscripten_glTexParameterfv;\n Module["_emscripten_glTexParameteri"] = _emscripten_glTexParameteri;\n Module["_emscripten_glTexParameteriv"] = _emscripten_glTexParameteriv;\n Module["_emscripten_glTexStorage2D"] = _emscripten_glTexStorage2D;\n Module["_emscripten_glTexStorage3D"] = _emscripten_glTexStorage3D;\n Module["_emscripten_glTexSubImage2D"] = _emscripten_glTexSubImage2D;\n Module["_emscripten_glTexSubImage3D"] = _emscripten_glTexSubImage3D;\n Module["_emscripten_glTransformFeedbackVaryings"] = _emscripten_glTransformFeedbackVaryings;\n Module["_emscripten_glUniform1f"] = _emscripten_glUniform1f;\n Module["_emscripten_glUniform1fv"] = _emscripten_glUniform1fv;\n Module["miniTempWebGLFloatBuffers"] = miniTempWebGLFloatBuffers;\n Module["_emscripten_glUniform1i"] = _emscripten_glUniform1i;\n Module["_emscripten_glUniform1iv"] = _emscripten_glUniform1iv;\n Module["miniTempWebGLIntBuffers"] = miniTempWebGLIntBuffers;\n Module["_emscripten_glUniform1ui"] = _emscripten_glUniform1ui;\n Module["_emscripten_glUniform1uiv"] = _emscripten_glUniform1uiv;\n Module["_emscripten_glUniform2f"] = _emscripten_glUniform2f;\n Module["_emscripten_glUniform2fv"] = _emscripten_glUniform2fv;\n Module["_emscripten_glUniform2i"] = _emscripten_glUniform2i;\n Module["_emscripten_glUniform2iv"] = _emscripten_glUniform2iv;\n Module["_emscripten_glUniform2ui"] = _emscripten_glUniform2ui;\n Module["_emscripten_glUniform2uiv"] = _emscripten_glUniform2uiv;\n Module["_emscripten_glUniform3f"] = _emscripten_glUniform3f;\n Module["_emscripten_glUniform3fv"] = _emscripten_glUniform3fv;\n Module["_emscripten_glUniform3i"] = _emscripten_glUniform3i;\n Module["_emscripten_glUniform3iv"] = _emscripten_glUniform3iv;\n Module["_emscripten_glUniform3ui"] = _emscripten_glUniform3ui;\n Module["_emscripten_glUniform3uiv"] = _emscripten_glUniform3uiv;\n Module["_emscripten_glUniform4f"] = _emscripten_glUniform4f;\n Module["_emscripten_glUniform4fv"] = _emscripten_glUniform4fv;\n Module["_emscripten_glUniform4i"] = _emscripten_glUniform4i;\n Module["_emscripten_glUniform4iv"] = _emscripten_glUniform4iv;\n Module["_emscripten_glUniform4ui"] = _emscripten_glUniform4ui;\n Module["_emscripten_glUniform4uiv"] = _emscripten_glUniform4uiv;\n Module["_emscripten_glUniformBlockBinding"] = _emscripten_glUniformBlockBinding;\n Module["_emscripten_glUniformMatrix2fv"] = _emscripten_glUniformMatrix2fv;\n Module["_emscripten_glUniformMatrix2x3fv"] = _emscripten_glUniformMatrix2x3fv;\n Module["_emscripten_glUniformMatrix2x4fv"] = _emscripten_glUniformMatrix2x4fv;\n Module["_emscripten_glUniformMatrix3fv"] = _emscripten_glUniformMatrix3fv;\n Module["_emscripten_glUniformMatrix3x2fv"] = _emscripten_glUniformMatrix3x2fv;\n Module["_emscripten_glUniformMatrix3x4fv"] = _emscripten_glUniformMatrix3x4fv;\n Module["_emscripten_glUniformMatrix4fv"] = _emscripten_glUniformMatrix4fv;\n Module["_emscripten_glUniformMatrix4x2fv"] = _emscripten_glUniformMatrix4x2fv;\n Module["_emscripten_glUniformMatrix4x3fv"] = _emscripten_glUniformMatrix4x3fv;\n Module["_emscripten_glUseProgram"] = _emscripten_glUseProgram;\n Module["_emscripten_glValidateProgram"] = _emscripten_glValidateProgram;\n Module["_emscripten_glVertexAttrib1f"] = _emscripten_glVertexAttrib1f;\n Module["_emscripten_glVertexAttrib1fv"] = _emscripten_glVertexAttrib1fv;\n Module["_emscripten_glVertexAttrib2f"] = _emscripten_glVertexAttrib2f;\n Module["_emscripten_glVertexAttrib2fv"] = _emscripten_glVertexAttrib2fv;\n Module["_emscripten_glVertexAttrib3f"] = _emscripten_glVertexAttrib3f;\n Module["_emscripten_glVertexAttrib3fv"] = _emscripten_glVertexAttrib3fv;\n Module["_emscripten_glVertexAttrib4f"] = _emscripten_glVertexAttrib4f;\n Module["_emscripten_glVertexAttrib4fv"] = _emscripten_glVertexAttrib4fv;\n Module["_emscripten_glVertexAttribDivisor"] = _emscripten_glVertexAttribDivisor;\n Module["_emscripten_glVertexAttribDivisorANGLE"] = _emscripten_glVertexAttribDivisorANGLE;\n Module["_glVertexAttribDivisor"] = _glVertexAttribDivisor;\n Module["_emscripten_glVertexAttribDivisorARB"] = _emscripten_glVertexAttribDivisorARB;\n Module["_emscripten_glVertexAttribDivisorEXT"] = _emscripten_glVertexAttribDivisorEXT;\n Module["_emscripten_glVertexAttribDivisorNV"] = _emscripten_glVertexAttribDivisorNV;\n Module["_emscripten_glVertexAttribI4i"] = _emscripten_glVertexAttribI4i;\n Module["_emscripten_glVertexAttribI4iv"] = _emscripten_glVertexAttribI4iv;\n Module["_emscripten_glVertexAttribI4ui"] = _emscripten_glVertexAttribI4ui;\n Module["_emscripten_glVertexAttribI4uiv"] = _emscripten_glVertexAttribI4uiv;\n Module["_emscripten_glVertexAttribIPointer"] = _emscripten_glVertexAttribIPointer;\n Module["_emscripten_glVertexAttribPointer"] = _emscripten_glVertexAttribPointer;\n Module["_emscripten_glViewport"] = _emscripten_glViewport;\n Module["_emscripten_glWaitSync"] = _emscripten_glWaitSync;\n Module["_emscripten_out"] = _emscripten_out;\n Module["_emscripten_promise_create"] = _emscripten_promise_create;\n Module["makePromise"] = makePromise;\n Module["promiseMap"] = promiseMap;\n Module["HandleAllocator"] = HandleAllocator;\n Module["_emscripten_promise_destroy"] = _emscripten_promise_destroy;\n Module["_emscripten_promise_resolve"] = _emscripten_promise_resolve;\n Module["getPromise"] = getPromise;\n Module["_emscripten_resize_heap"] = _emscripten_resize_heap;\n Module["growMemory"] = growMemory;\n Module["_emscripten_runtime_keepalive_pop"] = _emscripten_runtime_keepalive_pop;\n Module["_emscripten_runtime_keepalive_push"] = _emscripten_runtime_keepalive_push;\n Module["_environ_get"] = _environ_get;\n Module["getEnvStrings"] = getEnvStrings;\n Module["ENV"] = ENV;\n Module["_environ_sizes_get"] = _environ_sizes_get;\n Module["_fd_close"] = _fd_close;\n Module["_fd_fdstat_get"] = _fd_fdstat_get;\n Module["_fd_pread"] = _fd_pread;\n Module["doReadv"] = doReadv;\n Module["_fd_pwrite"] = _fd_pwrite;\n Module["doWritev"] = doWritev;\n Module["_fd_read"] = _fd_read;\n Module["_fd_seek"] = _fd_seek;\n Module["_fd_sync"] = _fd_sync;\n Module["_fd_write"] = _fd_write;\n Module["_getaddrinfo"] = _getaddrinfo;\n Module["_getnameinfo"] = _getnameinfo;\n Module["_getprotobyname"] = _getprotobyname;\n Module["_setprotoent"] = _setprotoent;\n Module["Protocols"] = Protocols;\n Module["stringToAscii"] = stringToAscii;\n Module["_random_get"] = _random_get;\n Module["_stackAlloc"] = _stackAlloc;\n Module["_stackRestore"] = _stackRestore;\n Module["_stackSave"] = _stackSave;\n Module["FS_createPath"] = FS_createPath;\n Module["FS_unlink"] = FS_unlink;\n Module["FS_createLazyFile"] = FS_createLazyFile;\n Module["FS_createDevice"] = FS_createDevice;\n Module["writeI53ToI64Clamped"] = writeI53ToI64Clamped;\n Module["writeI53ToI64Signaling"] = writeI53ToI64Signaling;\n Module["writeI53ToU64Clamped"] = writeI53ToU64Clamped;\n Module["writeI53ToU64Signaling"] = writeI53ToU64Signaling;\n Module["readI53FromU64"] = readI53FromU64;\n Module["convertI32PairToI53"] = convertI32PairToI53;\n Module["convertI32PairToI53Checked"] = convertI32PairToI53Checked;\n Module["convertU32PairToI53"] = convertU32PairToI53;\n Module["getTempRet0"] = getTempRet0;\n Module["setTempRet0"] = setTempRet0;\n Module["ptrToString"] = ptrToString;\n Module["_emscripten_notify_memory_growth"] = _emscripten_notify_memory_growth;\n Module["strError"] = strError;\n Module["_endprotoent"] = _endprotoent;\n Module["_getprotoent"] = _getprotoent;\n Module["_getprotobynumber"] = _getprotobynumber;\n Module["Sockets"] = Sockets;\n Module["_emscripten_run_script"] = _emscripten_run_script;\n Module["_emscripten_run_script_int"] = _emscripten_run_script_int;\n Module["_emscripten_run_script_string"] = _emscripten_run_script_string;\n Module["_emscripten_random"] = _emscripten_random;\n Module["_emscripten_performance_now"] = _emscripten_performance_now;\n Module["__emscripten_get_now_is_monotonic"] = __emscripten_get_now_is_monotonic;\n Module["warnOnce"] = warnOnce;\n Module["_emscripten_get_compiler_setting"] = _emscripten_get_compiler_setting;\n Module["_emscripten_has_asyncify"] = _emscripten_has_asyncify;\n Module["_emscripten_print_double"] = _emscripten_print_double;\n Module["_emscripten_asm_const_double"] = _emscripten_asm_const_double;\n Module["_emscripten_asm_const_ptr"] = _emscripten_asm_const_ptr;\n Module["runMainThreadEmAsm"] = runMainThreadEmAsm;\n Module["_emscripten_asm_const_int_sync_on_main_thread"] = _emscripten_asm_const_int_sync_on_main_thread;\n Module["_emscripten_asm_const_ptr_sync_on_main_thread"] = _emscripten_asm_const_ptr_sync_on_main_thread;\n Module["_emscripten_asm_const_double_sync_on_main_thread"] = _emscripten_asm_const_double_sync_on_main_thread;\n Module["_emscripten_asm_const_async_on_main_thread"] = _emscripten_asm_const_async_on_main_thread;\n Module["__Unwind_Backtrace"] = __Unwind_Backtrace;\n Module["__Unwind_GetIPInfo"] = __Unwind_GetIPInfo;\n Module["__Unwind_FindEnclosingFunction"] = __Unwind_FindEnclosingFunction;\n Module["autoResumeAudioContext"] = autoResumeAudioContext;\n Module["getDynCaller"] = getDynCaller;\n Module["dynCall"] = dynCall;\n Module["_emscripten_exit_with_live_runtime"] = _emscripten_exit_with_live_runtime;\n Module["_emscripten_force_exit"] = _emscripten_force_exit;\n Module["_emscripten_outn"] = _emscripten_outn;\n Module["_emscripten_errn"] = _emscripten_errn;\n Module["_emscripten_throw_number"] = _emscripten_throw_number;\n Module["_emscripten_throw_string"] = _emscripten_throw_string;\n Module["_emscripten_runtime_keepalive_check"] = _emscripten_runtime_keepalive_check;\n Module["asmjsMangle"] = asmjsMangle;\n Module["__emscripten_fs_load_embedded_files"] = __emscripten_fs_load_embedded_files;\n Module["onInits"] = onInits;\n Module["addOnInit"] = addOnInit;\n Module["onMains"] = onMains;\n Module["addOnPreMain"] = addOnPreMain;\n Module["onExits"] = onExits;\n Module["addOnExit"] = addOnExit;\n Module["STACK_SIZE"] = STACK_SIZE;\n Module["STACK_ALIGN"] = STACK_ALIGN;\n Module["POINTER_SIZE"] = POINTER_SIZE;\n Module["ASSERTIONS"] = ASSERTIONS;\n Module["getCFunc"] = getCFunc;\n Module["ccall"] = ccall;\n Module["writeArrayToMemory"] = writeArrayToMemory;\n Module["cwrap"] = cwrap;\n Module["removeFunction"] = removeFunction;\n Module["_emscripten_math_cbrt"] = _emscripten_math_cbrt;\n Module["_emscripten_math_pow"] = _emscripten_math_pow;\n Module["_emscripten_math_random"] = _emscripten_math_random;\n Module["_emscripten_math_sign"] = _emscripten_math_sign;\n Module["_emscripten_math_sqrt"] = _emscripten_math_sqrt;\n Module["_emscripten_math_exp"] = _emscripten_math_exp;\n Module["_emscripten_math_expm1"] = _emscripten_math_expm1;\n Module["_emscripten_math_fmod"] = _emscripten_math_fmod;\n Module["_emscripten_math_log"] = _emscripten_math_log;\n Module["_emscripten_math_log1p"] = _emscripten_math_log1p;\n Module["_emscripten_math_log10"] = _emscripten_math_log10;\n Module["_emscripten_math_log2"] = _emscripten_math_log2;\n Module["_emscripten_math_round"] = _emscripten_math_round;\n Module["_emscripten_math_acos"] = _emscripten_math_acos;\n Module["_emscripten_math_acosh"] = _emscripten_math_acosh;\n Module["_emscripten_math_asin"] = _emscripten_math_asin;\n Module["_emscripten_math_asinh"] = _emscripten_math_asinh;\n Module["_emscripten_math_atan"] = _emscripten_math_atan;\n Module["_emscripten_math_atanh"] = _emscripten_math_atanh;\n Module["_emscripten_math_atan2"] = _emscripten_math_atan2;\n Module["_emscripten_math_cos"] = _emscripten_math_cos;\n Module["_emscripten_math_cosh"] = _emscripten_math_cosh;\n Module["_emscripten_math_hypot"] = _emscripten_math_hypot;\n Module["_emscripten_math_sin"] = _emscripten_math_sin;\n Module["_emscripten_math_sinh"] = _emscripten_math_sinh;\n Module["_emscripten_math_tan"] = _emscripten_math_tan;\n Module["_emscripten_math_tanh"] = _emscripten_math_tanh;\n Module["intArrayToString"] = intArrayToString;\n Module["AsciiToString"] = AsciiToString;\n Module["UTF16Decoder"] = UTF16Decoder;\n Module["UTF16ToString"] = UTF16ToString;\n Module["stringToUTF16"] = stringToUTF16;\n Module["lengthBytesUTF16"] = lengthBytesUTF16;\n Module["UTF32ToString"] = UTF32ToString;\n Module["stringToUTF32"] = stringToUTF32;\n Module["lengthBytesUTF32"] = lengthBytesUTF32;\n Module["JSEvents"] = JSEvents;\n Module["getFullscreenElement"] = getFullscreenElement;\n Module["registerKeyEventCallback"] = registerKeyEventCallback;\n Module["findEventTarget"] = findEventTarget;\n Module["maybeCStringToJsString"] = maybeCStringToJsString;\n Module["specialHTMLTargets"] = specialHTMLTargets;\n Module["findCanvasEventTarget"] = findCanvasEventTarget;\n Module["_emscripten_html5_remove_event_listener"] = _emscripten_html5_remove_event_listener;\n Module["_emscripten_set_keypress_callback_on_thread"] = _emscripten_set_keypress_callback_on_thread;\n Module["_emscripten_set_keydown_callback_on_thread"] = _emscripten_set_keydown_callback_on_thread;\n Module["_emscripten_set_keyup_callback_on_thread"] = _emscripten_set_keyup_callback_on_thread;\n Module["getBoundingClientRect"] = getBoundingClientRect;\n Module["fillMouseEventData"] = fillMouseEventData;\n Module["registerMouseEventCallback"] = registerMouseEventCallback;\n Module["_emscripten_set_click_callback_on_thread"] = _emscripten_set_click_callback_on_thread;\n Module["_emscripten_set_mousedown_callback_on_thread"] = _emscripten_set_mousedown_callback_on_thread;\n Module["_emscripten_set_mouseup_callback_on_thread"] = _emscripten_set_mouseup_callback_on_thread;\n Module["_emscripten_set_dblclick_callback_on_thread"] = _emscripten_set_dblclick_callback_on_thread;\n Module["_emscripten_set_mousemove_callback_on_thread"] = _emscripten_set_mousemove_callback_on_thread;\n Module["_emscripten_set_mouseenter_callback_on_thread"] = _emscripten_set_mouseenter_callback_on_thread;\n Module["_emscripten_set_mouseleave_callback_on_thread"] = _emscripten_set_mouseleave_callback_on_thread;\n Module["_emscripten_set_mouseover_callback_on_thread"] = _emscripten_set_mouseover_callback_on_thread;\n Module["_emscripten_set_mouseout_callback_on_thread"] = _emscripten_set_mouseout_callback_on_thread;\n Module["__emscripten_get_last_mouse_event"] = __emscripten_get_last_mouse_event;\n Module["registerWheelEventCallback"] = registerWheelEventCallback;\n Module["_emscripten_set_wheel_callback_on_thread"] = _emscripten_set_wheel_callback_on_thread;\n Module["registerUiEventCallback"] = registerUiEventCallback;\n Module["_emscripten_set_resize_callback_on_thread"] = _emscripten_set_resize_callback_on_thread;\n Module["_emscripten_set_scroll_callback_on_thread"] = _emscripten_set_scroll_callback_on_thread;\n Module["registerFocusEventCallback"] = registerFocusEventCallback;\n Module["_emscripten_set_blur_callback_on_thread"] = _emscripten_set_blur_callback_on_thread;\n Module["_emscripten_set_focus_callback_on_thread"] = _emscripten_set_focus_callback_on_thread;\n Module["_emscripten_set_focusin_callback_on_thread"] = _emscripten_set_focusin_callback_on_thread;\n Module["_emscripten_set_focusout_callback_on_thread"] = _emscripten_set_focusout_callback_on_thread;\n Module["fillDeviceOrientationEventData"] = fillDeviceOrientationEventData;\n Module["registerDeviceOrientationEventCallback"] = registerDeviceOrientationEventCallback;\n Module["_emscripten_set_deviceorientation_callback_on_thread"] = _emscripten_set_deviceorientation_callback_on_thread;\n Module["__emscripten_get_last_deviceorientation_event"] = __emscripten_get_last_deviceorientation_event;\n Module["fillDeviceMotionEventData"] = fillDeviceMotionEventData;\n Module["registerDeviceMotionEventCallback"] = registerDeviceMotionEventCallback;\n Module["_emscripten_set_devicemotion_callback_on_thread"] = _emscripten_set_devicemotion_callback_on_thread;\n Module["__emscripten_get_last_devicemotion_event"] = __emscripten_get_last_devicemotion_event;\n Module["screenOrientation"] = screenOrientation;\n Module["fillOrientationChangeEventData"] = fillOrientationChangeEventData;\n Module["registerOrientationChangeEventCallback"] = registerOrientationChangeEventCallback;\n Module["_emscripten_set_orientationchange_callback_on_thread"] = _emscripten_set_orientationchange_callback_on_thread;\n Module["_emscripten_get_orientation_status"] = _emscripten_get_orientation_status;\n Module["_emscripten_lock_orientation"] = _emscripten_lock_orientation;\n Module["_emscripten_unlock_orientation"] = _emscripten_unlock_orientation;\n Module["fillFullscreenChangeEventData"] = fillFullscreenChangeEventData;\n Module["registerFullscreenChangeEventCallback"] = registerFullscreenChangeEventCallback;\n Module["_emscripten_set_fullscreenchange_callback_on_thread"] = _emscripten_set_fullscreenchange_callback_on_thread;\n Module["_emscripten_get_fullscreen_status"] = _emscripten_get_fullscreen_status;\n Module["JSEvents_requestFullscreen"] = JSEvents_requestFullscreen;\n Module["JSEvents_resizeCanvasForFullscreen"] = JSEvents_resizeCanvasForFullscreen;\n Module["registerRestoreOldStyle"] = registerRestoreOldStyle;\n Module["getCanvasElementSize"] = getCanvasElementSize;\n Module["_emscripten_get_canvas_element_size"] = _emscripten_get_canvas_element_size;\n Module["setCanvasElementSize"] = setCanvasElementSize;\n Module["_emscripten_set_canvas_element_size"] = _emscripten_set_canvas_element_size;\n Module["currentFullscreenStrategy"] = currentFullscreenStrategy;\n Module["setLetterbox"] = setLetterbox;\n Module["hideEverythingExceptGivenElement"] = hideEverythingExceptGivenElement;\n Module["restoreHiddenElements"] = restoreHiddenElements;\n Module["restoreOldWindowedStyle"] = restoreOldWindowedStyle;\n Module["softFullscreenResizeWebGLRenderTarget"] = softFullscreenResizeWebGLRenderTarget;\n Module["doRequestFullscreen"] = doRequestFullscreen;\n Module["_emscripten_request_fullscreen"] = _emscripten_request_fullscreen;\n Module["_emscripten_request_fullscreen_strategy"] = _emscripten_request_fullscreen_strategy;\n Module["_emscripten_enter_soft_fullscreen"] = _emscripten_enter_soft_fullscreen;\n Module["_emscripten_exit_soft_fullscreen"] = _emscripten_exit_soft_fullscreen;\n Module["_emscripten_exit_fullscreen"] = _emscripten_exit_fullscreen;\n Module["fillPointerlockChangeEventData"] = fillPointerlockChangeEventData;\n Module["registerPointerlockChangeEventCallback"] = registerPointerlockChangeEventCallback;\n Module["_emscripten_set_pointerlockchange_callback_on_thread"] = _emscripten_set_pointerlockchange_callback_on_thread;\n Module["registerPointerlockErrorEventCallback"] = registerPointerlockErrorEventCallback;\n Module["_emscripten_set_pointerlockerror_callback_on_thread"] = _emscripten_set_pointerlockerror_callback_on_thread;\n Module["_emscripten_get_pointerlock_status"] = _emscripten_get_pointerlock_status;\n Module["requestPointerLock"] = requestPointerLock;\n Module["_emscripten_request_pointerlock"] = _emscripten_request_pointerlock;\n Module["_emscripten_exit_pointerlock"] = _emscripten_exit_pointerlock;\n Module["_emscripten_vibrate"] = _emscripten_vibrate;\n Module["_emscripten_vibrate_pattern"] = _emscripten_vibrate_pattern;\n Module["fillVisibilityChangeEventData"] = fillVisibilityChangeEventData;\n Module["registerVisibilityChangeEventCallback"] = registerVisibilityChangeEventCallback;\n Module["_emscripten_set_visibilitychange_callback_on_thread"] = _emscripten_set_visibilitychange_callback_on_thread;\n Module["_emscripten_get_visibility_status"] = _emscripten_get_visibility_status;\n Module["registerTouchEventCallback"] = registerTouchEventCallback;\n Module["_emscripten_set_touchstart_callback_on_thread"] = _emscripten_set_touchstart_callback_on_thread;\n Module["_emscripten_set_touchend_callback_on_thread"] = _emscripten_set_touchend_callback_on_thread;\n Module["_emscripten_set_touchmove_callback_on_thread"] = _emscripten_set_touchmove_callback_on_thread;\n Module["_emscripten_set_touchcancel_callback_on_thread"] = _emscripten_set_touchcancel_callback_on_thread;\n Module["fillGamepadEventData"] = fillGamepadEventData;\n Module["registerGamepadEventCallback"] = registerGamepadEventCallback;\n Module["_emscripten_set_gamepadconnected_callback_on_thread"] = _emscripten_set_gamepadconnected_callback_on_thread;\n Module["_emscripten_sample_gamepad_data"] = _emscripten_sample_gamepad_data;\n Module["_emscripten_set_gamepaddisconnected_callback_on_thread"] = _emscripten_set_gamepaddisconnected_callback_on_thread;\n Module["_emscripten_get_num_gamepads"] = _emscripten_get_num_gamepads;\n Module["_emscripten_get_gamepad_status"] = _emscripten_get_gamepad_status;\n Module["registerBeforeUnloadEventCallback"] = registerBeforeUnloadEventCallback;\n Module["_emscripten_set_beforeunload_callback_on_thread"] = _emscripten_set_beforeunload_callback_on_thread;\n Module["fillBatteryEventData"] = fillBatteryEventData;\n Module["hasBatteryAPI"] = hasBatteryAPI;\n Module["registerBatteryEventCallback"] = registerBatteryEventCallback;\n Module["_emscripten_set_batterychargingchange_callback_on_thread"] = _emscripten_set_batterychargingchange_callback_on_thread;\n Module["_emscripten_set_batterylevelchange_callback_on_thread"] = _emscripten_set_batterylevelchange_callback_on_thread;\n Module["batteryManager"] = batteryManager;\n Module["_emscripten_get_battery_status"] = _emscripten_get_battery_status;\n Module["_emscripten_set_element_css_size"] = _emscripten_set_element_css_size;\n Module["_emscripten_get_element_css_size"] = _emscripten_get_element_css_size;\n Module["_emscripten_html5_remove_all_event_listeners"] = _emscripten_html5_remove_all_event_listeners;\n Module["_emscripten_request_animation_frame"] = _emscripten_request_animation_frame;\n Module["_emscripten_cancel_animation_frame"] = _emscripten_cancel_animation_frame;\n Module["_emscripten_request_animation_frame_loop"] = _emscripten_request_animation_frame_loop;\n Module["_emscripten_get_device_pixel_ratio"] = _emscripten_get_device_pixel_ratio;\n Module["_emscripten_get_callstack"] = _emscripten_get_callstack;\n Module["convertFrameToPC"] = convertFrameToPC;\n Module["_emscripten_return_address"] = _emscripten_return_address;\n Module["UNWIND_CACHE"] = UNWIND_CACHE;\n Module["_emscripten_stack_snapshot"] = _emscripten_stack_snapshot;\n Module["saveInUnwindCache"] = saveInUnwindCache;\n Module["_emscripten_stack_unwind_buffer"] = _emscripten_stack_unwind_buffer;\n Module["_emscripten_pc_get_function"] = _emscripten_pc_get_function;\n Module["convertPCtoSourceLocation"] = convertPCtoSourceLocation;\n Module["_emscripten_pc_get_file"] = _emscripten_pc_get_file;\n Module["_emscripten_pc_get_line"] = _emscripten_pc_get_line;\n Module["_emscripten_pc_get_column"] = _emscripten_pc_get_column;\n Module["wasiRightsToMuslOFlags"] = wasiRightsToMuslOFlags;\n Module["wasiOFlagsToMuslOFlags"] = wasiOFlagsToMuslOFlags;\n Module["_emscripten_unwind_to_js_event_loop"] = _emscripten_unwind_to_js_event_loop;\n Module["safeSetTimeout"] = safeSetTimeout;\n Module["setImmediateWrapped"] = setImmediateWrapped;\n Module["safeRequestAnimationFrame"] = safeRequestAnimationFrame;\n Module["MainLoop"] = MainLoop;\n Module["setMainLoop"] = setMainLoop;\n Module["_emscripten_set_main_loop_timing"] = _emscripten_set_main_loop_timing;\n Module["clearImmediateWrapped"] = clearImmediateWrapped;\n Module["emSetImmediate"] = emSetImmediate;\n Module["emClearImmediate"] = emClearImmediate;\n Module["emClearImmediate_deps"] = emClearImmediate_deps;\n Module["_emscripten_set_immediate"] = _emscripten_set_immediate;\n Module["_emscripten_clear_immediate"] = _emscripten_clear_immediate;\n Module["_emscripten_set_immediate_loop"] = _emscripten_set_immediate_loop;\n Module["_emscripten_set_timeout"] = _emscripten_set_timeout;\n Module["_emscripten_clear_timeout"] = _emscripten_clear_timeout;\n Module["_emscripten_set_timeout_loop"] = _emscripten_set_timeout_loop;\n Module["_emscripten_set_interval"] = _emscripten_set_interval;\n Module["_emscripten_clear_interval"] = _emscripten_clear_interval;\n Module["_emscripten_async_call"] = _emscripten_async_call;\n Module["registerPostMainLoop"] = registerPostMainLoop;\n Module["registerPreMainLoop"] = registerPreMainLoop;\n Module["_emscripten_get_main_loop_timing"] = _emscripten_get_main_loop_timing;\n Module["_emscripten_set_main_loop"] = _emscripten_set_main_loop;\n Module["_emscripten_set_main_loop_arg"] = _emscripten_set_main_loop_arg;\n Module["_emscripten_cancel_main_loop"] = _emscripten_cancel_main_loop;\n Module["_emscripten_pause_main_loop"] = _emscripten_pause_main_loop;\n Module["_emscripten_resume_main_loop"] = _emscripten_resume_main_loop;\n Module["__emscripten_push_main_loop_blocker"] = __emscripten_push_main_loop_blocker;\n Module["__emscripten_push_uncounted_main_loop_blocker"] = __emscripten_push_uncounted_main_loop_blocker;\n Module["_emscripten_set_main_loop_expected_blockers"] = _emscripten_set_main_loop_expected_blockers;\n Module["idsToPromises"] = idsToPromises;\n Module["makePromiseCallback"] = makePromiseCallback;\n Module["_emscripten_promise_then"] = _emscripten_promise_then;\n Module["_emscripten_promise_all"] = _emscripten_promise_all;\n Module["setPromiseResult"] = setPromiseResult;\n Module["_emscripten_promise_all_settled"] = _emscripten_promise_all_settled;\n Module["_emscripten_promise_any"] = _emscripten_promise_any;\n Module["_emscripten_promise_race"] = _emscripten_promise_race;\n Module["_emscripten_promise_await"] = _emscripten_promise_await;\n Module["getExceptionMessageCommon"] = getExceptionMessageCommon;\n Module["getCppExceptionTag"] = getCppExceptionTag;\n Module["getCppExceptionThrownObjectFromWebAssemblyException"] = getCppExceptionThrownObjectFromWebAssemblyException;\n Module["incrementExceptionRefcount"] = incrementExceptionRefcount;\n Module["decrementExceptionRefcount"] = decrementExceptionRefcount;\n Module["getExceptionMessage"] = getExceptionMessage;\n Module["Browser"] = Browser;\n Module["requestFullscreen"] = requestFullscreen;\n Module["setCanvasSize"] = setCanvasSize;\n Module["getUserMedia"] = getUserMedia;\n Module["createContext"] = createContext;\n Module["_emscripten_run_preload_plugins"] = _emscripten_run_preload_plugins;\n Module["Browser_asyncPrepareDataCounter"] = Browser_asyncPrepareDataCounter;\n Module["_emscripten_run_preload_plugins_data"] = _emscripten_run_preload_plugins_data;\n Module["_emscripten_async_run_script"] = _emscripten_async_run_script;\n Module["_emscripten_async_load_script"] = _emscripten_async_load_script;\n Module["_emscripten_get_window_title"] = _emscripten_get_window_title;\n Module["_emscripten_set_window_title"] = _emscripten_set_window_title;\n Module["_emscripten_get_screen_size"] = _emscripten_get_screen_size;\n Module["_emscripten_hide_mouse"] = _emscripten_hide_mouse;\n Module["_emscripten_set_canvas_size"] = _emscripten_set_canvas_size;\n Module["_emscripten_get_canvas_size"] = _emscripten_get_canvas_size;\n Module["_emscripten_create_worker"] = _emscripten_create_worker;\n Module["_emscripten_destroy_worker"] = _emscripten_destroy_worker;\n Module["_emscripten_call_worker"] = _emscripten_call_worker;\n Module["_emscripten_get_worker_queue_size"] = _emscripten_get_worker_queue_size;\n Module["_emscripten_get_preloaded_image_data"] = _emscripten_get_preloaded_image_data;\n Module["getPreloadedImageData"] = getPreloadedImageData;\n Module["getPreloadedImageData__data"] = getPreloadedImageData__data;\n Module["_emscripten_get_preloaded_image_data_from_FILE"] = _emscripten_get_preloaded_image_data_from_FILE;\n Module["wget"] = wget;\n Module["_emscripten_async_wget"] = _emscripten_async_wget;\n Module["FS_mkdirTree"] = FS_mkdirTree;\n Module["_emscripten_async_wget_data"] = _emscripten_async_wget_data;\n Module["_emscripten_async_wget2"] = _emscripten_async_wget2;\n Module["_emscripten_async_wget2_data"] = _emscripten_async_wget2_data;\n Module["_emscripten_async_wget2_abort"] = _emscripten_async_wget2_abort;\n Module["___asctime_r"] = ___asctime_r;\n Module["MONTH_DAYS_REGULAR"] = MONTH_DAYS_REGULAR;\n Module["MONTH_DAYS_LEAP"] = MONTH_DAYS_LEAP;\n Module["arraySum"] = arraySum;\n Module["addDays"] = addDays;\n Module["_strptime"] = _strptime;\n Module["_strptime_l"] = _strptime_l;\n Module["__dlsym_catchup_js"] = __dlsym_catchup_js;\n Module["FS_readFile"] = FS_readFile;\n Module["FS_root"] = FS_root;\n Module["FS_mounts"] = FS_mounts;\n Module["FS_devices"] = FS_devices;\n Module["FS_streams"] = FS_streams;\n Module["FS_nextInode"] = FS_nextInode;\n Module["FS_nameTable"] = FS_nameTable;\n Module["FS_currentPath"] = FS_currentPath;\n Module["FS_initialized"] = FS_initialized;\n Module["FS_ignorePermissions"] = FS_ignorePermissions;\n Module["FS_trackingDelegate"] = FS_trackingDelegate;\n Module["FS_filesystems"] = FS_filesystems;\n Module["FS_syncFSRequests"] = FS_syncFSRequests;\n Module["FS_lookupPath"] = FS_lookupPath;\n Module["FS_getPath"] = FS_getPath;\n Module["FS_hashName"] = FS_hashName;\n Module["FS_hashAddNode"] = FS_hashAddNode;\n Module["FS_hashRemoveNode"] = FS_hashRemoveNode;\n Module["FS_lookupNode"] = FS_lookupNode;\n Module["FS_createNode"] = FS_createNode;\n Module["FS_destroyNode"] = FS_destroyNode;\n Module["FS_isRoot"] = FS_isRoot;\n Module["FS_isMountpoint"] = FS_isMountpoint;\n Module["FS_isFile"] = FS_isFile;\n Module["FS_isDir"] = FS_isDir;\n Module["FS_isLink"] = FS_isLink;\n Module["FS_isChrdev"] = FS_isChrdev;\n Module["FS_isBlkdev"] = FS_isBlkdev;\n Module["FS_isFIFO"] = FS_isFIFO;\n Module["FS_isSocket"] = FS_isSocket;\n Module["FS_flagsToPermissionString"] = FS_flagsToPermissionString;\n Module["FS_nodePermissions"] = FS_nodePermissions;\n Module["FS_mayLookup"] = FS_mayLookup;\n Module["FS_mayCreate"] = FS_mayCreate;\n Module["FS_mayDelete"] = FS_mayDelete;\n Module["FS_mayOpen"] = FS_mayOpen;\n Module["FS_checkOpExists"] = FS_checkOpExists;\n Module["FS_nextfd"] = FS_nextfd;\n Module["FS_getStreamChecked"] = FS_getStreamChecked;\n Module["FS_getStream"] = FS_getStream;\n Module["FS_createStream"] = FS_createStream;\n Module["FS_closeStream"] = FS_closeStream;\n Module["FS_dupStream"] = FS_dupStream;\n Module["FS_doSetAttr"] = FS_doSetAttr;\n Module["FS_chrdev_stream_ops"] = FS_chrdev_stream_ops;\n Module["FS_major"] = FS_major;\n Module["FS_minor"] = FS_minor;\n Module["FS_makedev"] = FS_makedev;\n Module["FS_registerDevice"] = FS_registerDevice;\n Module["FS_getDevice"] = FS_getDevice;\n Module["FS_getMounts"] = FS_getMounts;\n Module["FS_syncfs"] = FS_syncfs;\n Module["FS_mount"] = FS_mount;\n Module["FS_unmount"] = FS_unmount;\n Module["FS_lookup"] = FS_lookup;\n Module["FS_mknod"] = FS_mknod;\n Module["FS_statfs"] = FS_statfs;\n Module["FS_statfsStream"] = FS_statfsStream;\n Module["FS_statfsNode"] = FS_statfsNode;\n Module["FS_create"] = FS_create;\n Module["FS_mkdir"] = FS_mkdir;\n Module["FS_mkdev"] = FS_mkdev;\n Module["FS_symlink"] = FS_symlink;\n Module["FS_rename"] = FS_rename;\n Module["FS_rmdir"] = FS_rmdir;\n Module["FS_readdir"] = FS_readdir;\n Module["FS_readlink"] = FS_readlink;\n Module["FS_stat"] = FS_stat;\n Module["FS_fstat"] = FS_fstat;\n Module["FS_lstat"] = FS_lstat;\n Module["FS_doChmod"] = FS_doChmod;\n Module["FS_chmod"] = FS_chmod;\n Module["FS_lchmod"] = FS_lchmod;\n Module["FS_fchmod"] = FS_fchmod;\n Module["FS_doChown"] = FS_doChown;\n Module["FS_chown"] = FS_chown;\n Module["FS_lchown"] = FS_lchown;\n Module["FS_fchown"] = FS_fchown;\n Module["FS_doTruncate"] = FS_doTruncate;\n Module["FS_truncate"] = FS_truncate;\n Module["FS_ftruncate"] = FS_ftruncate;\n Module["FS_utime"] = FS_utime;\n Module["FS_open"] = FS_open;\n Module["FS_close"] = FS_close;\n Module["FS_isClosed"] = FS_isClosed;\n Module["FS_llseek"] = FS_llseek;\n Module["FS_read"] = FS_read;\n Module["FS_write"] = FS_write;\n Module["FS_mmap"] = FS_mmap;\n Module["FS_msync"] = FS_msync;\n Module["FS_ioctl"] = FS_ioctl;\n Module["FS_writeFile"] = FS_writeFile;\n Module["FS_cwd"] = FS_cwd;\n Module["FS_chdir"] = FS_chdir;\n Module["FS_createDefaultDirectories"] = FS_createDefaultDirectories;\n Module["FS_createDefaultDevices"] = FS_createDefaultDevices;\n Module["FS_createSpecialDirectories"] = FS_createSpecialDirectories;\n Module["FS_createStandardStreams"] = FS_createStandardStreams;\n Module["FS_staticInit"] = FS_staticInit;\n Module["FS_init"] = FS_init;\n Module["FS_quit"] = FS_quit;\n Module["FS_findObject"] = FS_findObject;\n Module["FS_analyzePath"] = FS_analyzePath;\n Module["FS_createFile"] = FS_createFile;\n Module["FS_forceLoadFile"] = FS_forceLoadFile;\n Module["_setNetworkCallback"] = _setNetworkCallback;\n Module["_emscripten_set_socket_error_callback"] = _emscripten_set_socket_error_callback;\n Module["_emscripten_set_socket_open_callback"] = _emscripten_set_socket_open_callback;\n Module["_emscripten_set_socket_listen_callback"] = _emscripten_set_socket_listen_callback;\n Module["_emscripten_set_socket_connection_callback"] = _emscripten_set_socket_connection_callback;\n Module["_emscripten_set_socket_message_callback"] = _emscripten_set_socket_message_callback;\n Module["_emscripten_set_socket_close_callback"] = _emscripten_set_socket_close_callback;\n Module["_emscripten_webgl_enable_ANGLE_instanced_arrays"] = _emscripten_webgl_enable_ANGLE_instanced_arrays;\n Module["_emscripten_webgl_enable_OES_vertex_array_object"] = _emscripten_webgl_enable_OES_vertex_array_object;\n Module["_emscripten_webgl_enable_WEBGL_draw_buffers"] = _emscripten_webgl_enable_WEBGL_draw_buffers;\n Module["_emscripten_webgl_enable_WEBGL_multi_draw"] = _emscripten_webgl_enable_WEBGL_multi_draw;\n Module["_emscripten_webgl_enable_EXT_polygon_offset_clamp"] = _emscripten_webgl_enable_EXT_polygon_offset_clamp;\n Module["_emscripten_webgl_enable_EXT_clip_control"] = _emscripten_webgl_enable_EXT_clip_control;\n Module["_emscripten_webgl_enable_WEBGL_polygon_mode"] = _emscripten_webgl_enable_WEBGL_polygon_mode;\n Module["_glPixelStorei"] = _glPixelStorei;\n Module["_glGetString"] = _glGetString;\n Module["_glGetIntegerv"] = _glGetIntegerv;\n Module["_glGetFloatv"] = _glGetFloatv;\n Module["_glGetBooleanv"] = _glGetBooleanv;\n Module["_glDeleteTextures"] = _glDeleteTextures;\n Module["_glCompressedTexImage2D"] = _glCompressedTexImage2D;\n Module["_glCompressedTexSubImage2D"] = _glCompressedTexSubImage2D;\n Module["_glTexImage2D"] = _glTexImage2D;\n Module["_glTexSubImage2D"] = _glTexSubImage2D;\n Module["_glReadPixels"] = _glReadPixels;\n Module["_glBindTexture"] = _glBindTexture;\n Module["_glGetTexParameterfv"] = _glGetTexParameterfv;\n Module["_glGetTexParameteriv"] = _glGetTexParameteriv;\n Module["_glTexParameterfv"] = _glTexParameterfv;\n Module["_glTexParameteriv"] = _glTexParameteriv;\n Module["_glIsTexture"] = _glIsTexture;\n Module["_glGenBuffers"] = _glGenBuffers;\n Module["_glGenTextures"] = _glGenTextures;\n Module["_glDeleteBuffers"] = _glDeleteBuffers;\n Module["_glGetBufferParameteriv"] = _glGetBufferParameteriv;\n Module["_glBufferData"] = _glBufferData;\n Module["_glBufferSubData"] = _glBufferSubData;\n Module["_glGenQueriesEXT"] = _glGenQueriesEXT;\n Module["_glDeleteQueriesEXT"] = _glDeleteQueriesEXT;\n Module["_glIsQueryEXT"] = _glIsQueryEXT;\n Module["_glBeginQueryEXT"] = _glBeginQueryEXT;\n Module["_glEndQueryEXT"] = _glEndQueryEXT;\n Module["_glQueryCounterEXT"] = _glQueryCounterEXT;\n Module["_glGetQueryivEXT"] = _glGetQueryivEXT;\n Module["_glGetQueryObjectuivEXT"] = _glGetQueryObjectuivEXT;\n Module["_glGetQueryObjectui64vEXT"] = _glGetQueryObjectui64vEXT;\n Module["_glIsBuffer"] = _glIsBuffer;\n Module["_glGenRenderbuffers"] = _glGenRenderbuffers;\n Module["_glDeleteRenderbuffers"] = _glDeleteRenderbuffers;\n Module["_glBindRenderbuffer"] = _glBindRenderbuffer;\n Module["_glGetRenderbufferParameteriv"] = _glGetRenderbufferParameteriv;\n Module["_glIsRenderbuffer"] = _glIsRenderbuffer;\n Module["_glGetUniformfv"] = _glGetUniformfv;\n Module["_glGetUniformiv"] = _glGetUniformiv;\n Module["_glGetUniformLocation"] = _glGetUniformLocation;\n Module["_glGetVertexAttribfv"] = _glGetVertexAttribfv;\n Module["_glGetVertexAttribiv"] = _glGetVertexAttribiv;\n Module["_glGetVertexAttribPointerv"] = _glGetVertexAttribPointerv;\n Module["_glUniform1f"] = _glUniform1f;\n Module["_glUniform2f"] = _glUniform2f;\n Module["_glUniform3f"] = _glUniform3f;\n Module["_glUniform4f"] = _glUniform4f;\n Module["_glUniform1i"] = _glUniform1i;\n Module["_glUniform2i"] = _glUniform2i;\n Module["_glUniform3i"] = _glUniform3i;\n Module["_glUniform4i"] = _glUniform4i;\n Module["_glUniform1iv"] = _glUniform1iv;\n Module["_glUniform2iv"] = _glUniform2iv;\n Module["_glUniform3iv"] = _glUniform3iv;\n Module["_glUniform4iv"] = _glUniform4iv;\n Module["_glUniform1fv"] = _glUniform1fv;\n Module["_glUniform2fv"] = _glUniform2fv;\n Module["_glUniform3fv"] = _glUniform3fv;\n Module["_glUniform4fv"] = _glUniform4fv;\n Module["_glUniformMatrix2fv"] = _glUniformMatrix2fv;\n Module["_glUniformMatrix3fv"] = _glUniformMatrix3fv;\n Module["_glUniformMatrix4fv"] = _glUniformMatrix4fv;\n Module["_glBindBuffer"] = _glBindBuffer;\n Module["_glVertexAttrib1fv"] = _glVertexAttrib1fv;\n Module["_glVertexAttrib2fv"] = _glVertexAttrib2fv;\n Module["_glVertexAttrib3fv"] = _glVertexAttrib3fv;\n Module["_glVertexAttrib4fv"] = _glVertexAttrib4fv;\n Module["_glGetAttribLocation"] = _glGetAttribLocation;\n Module["_glGetActiveAttrib"] = _glGetActiveAttrib;\n Module["_glGetActiveUniform"] = _glGetActiveUniform;\n Module["_glCreateShader"] = _glCreateShader;\n Module["_glDeleteShader"] = _glDeleteShader;\n Module["_glGetAttachedShaders"] = _glGetAttachedShaders;\n Module["_glShaderSource"] = _glShaderSource;\n Module["_glGetShaderSource"] = _glGetShaderSource;\n Module["_glCompileShader"] = _glCompileShader;\n Module["_glGetShaderInfoLog"] = _glGetShaderInfoLog;\n Module["_glGetShaderiv"] = _glGetShaderiv;\n Module["_glGetProgramiv"] = _glGetProgramiv;\n Module["_glIsShader"] = _glIsShader;\n Module["_glCreateProgram"] = _glCreateProgram;\n Module["_glDeleteProgram"] = _glDeleteProgram;\n Module["_glAttachShader"] = _glAttachShader;\n Module["_glDetachShader"] = _glDetachShader;\n Module["_glGetShaderPrecisionFormat"] = _glGetShaderPrecisionFormat;\n Module["_glLinkProgram"] = _glLinkProgram;\n Module["_glGetProgramInfoLog"] = _glGetProgramInfoLog;\n Module["_glUseProgram"] = _glUseProgram;\n Module["_glValidateProgram"] = _glValidateProgram;\n Module["_glIsProgram"] = _glIsProgram;\n Module["_glBindAttribLocation"] = _glBindAttribLocation;\n Module["_glBindFramebuffer"] = _glBindFramebuffer;\n Module["_glGenFramebuffers"] = _glGenFramebuffers;\n Module["_glDeleteFramebuffers"] = _glDeleteFramebuffers;\n Module["_glFramebufferRenderbuffer"] = _glFramebufferRenderbuffer;\n Module["_glFramebufferTexture2D"] = _glFramebufferTexture2D;\n Module["_glGetFramebufferAttachmentParameteriv"] = _glGetFramebufferAttachmentParameteriv;\n Module["_glIsFramebuffer"] = _glIsFramebuffer;\n Module["_emscripten_glVertexPointer"] = _emscripten_glVertexPointer;\n Module["_glVertexPointer"] = _glVertexPointer;\n Module["_emscripten_glMatrixMode"] = _emscripten_glMatrixMode;\n Module["_glMatrixMode"] = _glMatrixMode;\n Module["_emscripten_glBegin"] = _emscripten_glBegin;\n Module["_glBegin"] = _glBegin;\n Module["_emscripten_glLoadIdentity"] = _emscripten_glLoadIdentity;\n Module["_glLoadIdentity"] = _glLoadIdentity;\n Module["_glGenVertexArraysOES"] = _glGenVertexArraysOES;\n Module["_glDeleteVertexArraysOES"] = _glDeleteVertexArraysOES;\n Module["_glBindVertexArrayOES"] = _glBindVertexArrayOES;\n Module["_glIsVertexArrayOES"] = _glIsVertexArrayOES;\n Module["_glVertexAttribPointer"] = _glVertexAttribPointer;\n Module["_glEnableVertexAttribArray"] = _glEnableVertexAttribArray;\n Module["_glDisableVertexAttribArray"] = _glDisableVertexAttribArray;\n Module["_glDrawArrays"] = _glDrawArrays;\n Module["_glShaderBinary"] = _glShaderBinary;\n Module["_glReleaseShaderCompiler"] = _glReleaseShaderCompiler;\n Module["_glGetError"] = _glGetError;\n Module["_glVertexAttribDivisorNV"] = _glVertexAttribDivisorNV;\n Module["_glDrawArraysInstancedNV"] = _glDrawArraysInstancedNV;\n Module["_glDrawElementsInstancedNV"] = _glDrawElementsInstancedNV;\n Module["_glVertexAttribDivisorEXT"] = _glVertexAttribDivisorEXT;\n Module["_glDrawArraysInstancedEXT"] = _glDrawArraysInstancedEXT;\n Module["_glDrawElementsInstancedEXT"] = _glDrawElementsInstancedEXT;\n Module["_glVertexAttribDivisorARB"] = _glVertexAttribDivisorARB;\n Module["_glDrawArraysInstancedARB"] = _glDrawArraysInstancedARB;\n Module["_glDrawElementsInstancedARB"] = _glDrawElementsInstancedARB;\n Module["_glVertexAttribDivisorANGLE"] = _glVertexAttribDivisorANGLE;\n Module["_glDrawArraysInstancedANGLE"] = _glDrawArraysInstancedANGLE;\n Module["_glDrawElementsInstancedANGLE"] = _glDrawElementsInstancedANGLE;\n Module["_glDrawBuffersEXT"] = _glDrawBuffersEXT;\n Module["_glDrawBuffersWEBGL"] = _glDrawBuffersWEBGL;\n Module["_glColorMask"] = _glColorMask;\n Module["_glDepthMask"] = _glDepthMask;\n Module["_glSampleCoverage"] = _glSampleCoverage;\n Module["_emscripten_glMultiDrawArrays"] = _emscripten_glMultiDrawArrays;\n Module["_glMultiDrawArraysWEBGL"] = _glMultiDrawArraysWEBGL;\n Module["_emscripten_glMultiDrawArraysWEBGL"] = _emscripten_glMultiDrawArraysWEBGL;\n Module["_glMultiDrawArrays"] = _glMultiDrawArrays;\n Module["_emscripten_glMultiDrawArraysANGLE"] = _emscripten_glMultiDrawArraysANGLE;\n Module["_glMultiDrawArraysANGLE"] = _glMultiDrawArraysANGLE;\n Module["_emscripten_glMultiDrawArraysInstancedANGLE"] = _emscripten_glMultiDrawArraysInstancedANGLE;\n Module["_glMultiDrawArraysInstancedWEBGL"] = _glMultiDrawArraysInstancedWEBGL;\n Module["_emscripten_glMultiDrawArraysInstancedWEBGL"] = _emscripten_glMultiDrawArraysInstancedWEBGL;\n Module["_glMultiDrawArraysInstancedANGLE"] = _glMultiDrawArraysInstancedANGLE;\n Module["_emscripten_glMultiDrawElements"] = _emscripten_glMultiDrawElements;\n Module["_glMultiDrawElementsWEBGL"] = _glMultiDrawElementsWEBGL;\n Module["_emscripten_glMultiDrawElementsWEBGL"] = _emscripten_glMultiDrawElementsWEBGL;\n Module["_glMultiDrawElements"] = _glMultiDrawElements;\n Module["_emscripten_glMultiDrawElementsANGLE"] = _emscripten_glMultiDrawElementsANGLE;\n Module["_glMultiDrawElementsANGLE"] = _glMultiDrawElementsANGLE;\n Module["_emscripten_glMultiDrawElementsInstancedANGLE"] = _emscripten_glMultiDrawElementsInstancedANGLE;\n Module["_glMultiDrawElementsInstancedWEBGL"] = _glMultiDrawElementsInstancedWEBGL;\n Module["_emscripten_glMultiDrawElementsInstancedWEBGL"] = _emscripten_glMultiDrawElementsInstancedWEBGL;\n Module["_glMultiDrawElementsInstancedANGLE"] = _glMultiDrawElementsInstancedANGLE;\n Module["_glPolygonOffsetClampEXT"] = _glPolygonOffsetClampEXT;\n Module["_glClipControlEXT"] = _glClipControlEXT;\n Module["_glPolygonModeWEBGL"] = _glPolygonModeWEBGL;\n Module["_glFinish"] = _glFinish;\n Module["_glFlush"] = _glFlush;\n Module["_emscripten_glClearDepth"] = _emscripten_glClearDepth;\n Module["_glClearDepth"] = _glClearDepth;\n Module["_glClearDepthf"] = _glClearDepthf;\n Module["_glDepthFunc"] = _glDepthFunc;\n Module["_glEnable"] = _glEnable;\n Module["_glDisable"] = _glDisable;\n Module["_glFrontFace"] = _glFrontFace;\n Module["_glCullFace"] = _glCullFace;\n Module["_glClear"] = _glClear;\n Module["_glLineWidth"] = _glLineWidth;\n Module["_glClearStencil"] = _glClearStencil;\n Module["_glStencilMask"] = _glStencilMask;\n Module["_glCheckFramebufferStatus"] = _glCheckFramebufferStatus;\n Module["_glGenerateMipmap"] = _glGenerateMipmap;\n Module["_glActiveTexture"] = _glActiveTexture;\n Module["_glBlendEquation"] = _glBlendEquation;\n Module["_glIsEnabled"] = _glIsEnabled;\n Module["_glBlendFunc"] = _glBlendFunc;\n Module["_glBlendEquationSeparate"] = _glBlendEquationSeparate;\n Module["_emscripten_glDepthRange"] = _emscripten_glDepthRange;\n Module["_glDepthRange"] = _glDepthRange;\n Module["_glDepthRangef"] = _glDepthRangef;\n Module["_glStencilMaskSeparate"] = _glStencilMaskSeparate;\n Module["_glHint"] = _glHint;\n Module["_glPolygonOffset"] = _glPolygonOffset;\n Module["_glVertexAttrib1f"] = _glVertexAttrib1f;\n Module["_glTexParameteri"] = _glTexParameteri;\n Module["_glTexParameterf"] = _glTexParameterf;\n Module["_glVertexAttrib2f"] = _glVertexAttrib2f;\n Module["_glStencilFunc"] = _glStencilFunc;\n Module["_glStencilOp"] = _glStencilOp;\n Module["_glViewport"] = _glViewport;\n Module["_glClearColor"] = _glClearColor;\n Module["_glScissor"] = _glScissor;\n Module["_glVertexAttrib3f"] = _glVertexAttrib3f;\n Module["_glRenderbufferStorage"] = _glRenderbufferStorage;\n Module["_glBlendFuncSeparate"] = _glBlendFuncSeparate;\n Module["_glBlendColor"] = _glBlendColor;\n Module["_glStencilFuncSeparate"] = _glStencilFuncSeparate;\n Module["_glStencilOpSeparate"] = _glStencilOpSeparate;\n Module["_glVertexAttrib4f"] = _glVertexAttrib4f;\n Module["_glCopyTexImage2D"] = _glCopyTexImage2D;\n Module["_glCopyTexSubImage2D"] = _glCopyTexSubImage2D;\n Module["_emscripten_webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance"] = _emscripten_webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance;\n Module["_emscripten_webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance"] = _emscripten_webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance;\n Module["_glGetStringi"] = _glGetStringi;\n Module["_glGetInteger64v"] = _glGetInteger64v;\n Module["_glGetInternalformativ"] = _glGetInternalformativ;\n Module["_glCompressedTexImage3D"] = _glCompressedTexImage3D;\n Module["_glCompressedTexSubImage3D"] = _glCompressedTexSubImage3D;\n Module["_glGetBufferParameteri64v"] = _glGetBufferParameteri64v;\n Module["_emscripten_glGetBufferSubData"] = _emscripten_glGetBufferSubData;\n Module["_glGetBufferSubData"] = _glGetBufferSubData;\n Module["_glInvalidateFramebuffer"] = _glInvalidateFramebuffer;\n Module["_glInvalidateSubFramebuffer"] = _glInvalidateSubFramebuffer;\n Module["_glTexImage3D"] = _glTexImage3D;\n Module["_glTexSubImage3D"] = _glTexSubImage3D;\n Module["_glGenQueries"] = _glGenQueries;\n Module["_glDeleteQueries"] = _glDeleteQueries;\n Module["_glIsQuery"] = _glIsQuery;\n Module["_glBeginQuery"] = _glBeginQuery;\n Module["_glGetQueryiv"] = _glGetQueryiv;\n Module["_glGetQueryObjectuiv"] = _glGetQueryObjectuiv;\n Module["_glGenSamplers"] = _glGenSamplers;\n Module["_glDeleteSamplers"] = _glDeleteSamplers;\n Module["_glIsSampler"] = _glIsSampler;\n Module["_glBindSampler"] = _glBindSampler;\n Module["_glSamplerParameterf"] = _glSamplerParameterf;\n Module["_glSamplerParameteri"] = _glSamplerParameteri;\n Module["_glSamplerParameterfv"] = _glSamplerParameterfv;\n Module["_glSamplerParameteriv"] = _glSamplerParameteriv;\n Module["_glGetSamplerParameterfv"] = _glGetSamplerParameterfv;\n Module["_glGetSamplerParameteriv"] = _glGetSamplerParameteriv;\n Module["_glGenTransformFeedbacks"] = _glGenTransformFeedbacks;\n Module["_glDeleteTransformFeedbacks"] = _glDeleteTransformFeedbacks;\n Module["_glIsTransformFeedback"] = _glIsTransformFeedback;\n Module["_glBindTransformFeedback"] = _glBindTransformFeedback;\n Module["_glTransformFeedbackVaryings"] = _glTransformFeedbackVaryings;\n Module["_glGetTransformFeedbackVarying"] = _glGetTransformFeedbackVarying;\n Module["_glGetIntegeri_v"] = _glGetIntegeri_v;\n Module["_glGetInteger64i_v"] = _glGetInteger64i_v;\n Module["_glBindBufferBase"] = _glBindBufferBase;\n Module["_glBindBufferRange"] = _glBindBufferRange;\n Module["_glGetUniformIndices"] = _glGetUniformIndices;\n Module["_glGetActiveUniformsiv"] = _glGetActiveUniformsiv;\n Module["_glGetUniformBlockIndex"] = _glGetUniformBlockIndex;\n Module["_glGetActiveUniformBlockiv"] = _glGetActiveUniformBlockiv;\n Module["_glGetActiveUniformBlockName"] = _glGetActiveUniformBlockName;\n Module["_glUniformBlockBinding"] = _glUniformBlockBinding;\n Module["_glClearBufferiv"] = _glClearBufferiv;\n Module["_glClearBufferuiv"] = _glClearBufferuiv;\n Module["_glClearBufferfv"] = _glClearBufferfv;\n Module["_glFenceSync"] = _glFenceSync;\n Module["_glDeleteSync"] = _glDeleteSync;\n Module["_glClientWaitSync"] = _glClientWaitSync;\n Module["_glWaitSync"] = _glWaitSync;\n Module["_glGetSynciv"] = _glGetSynciv;\n Module["_glIsSync"] = _glIsSync;\n Module["_glGetUniformuiv"] = _glGetUniformuiv;\n Module["_glGetFragDataLocation"] = _glGetFragDataLocation;\n Module["_glGetVertexAttribIuiv"] = _glGetVertexAttribIuiv;\n Module["_glUniform1ui"] = _glUniform1ui;\n Module["_glUniform2ui"] = _glUniform2ui;\n Module["_glUniform3ui"] = _glUniform3ui;\n Module["_glUniform4ui"] = _glUniform4ui;\n Module["_glUniform1uiv"] = _glUniform1uiv;\n Module["_glUniform2uiv"] = _glUniform2uiv;\n Module["_glUniform3uiv"] = _glUniform3uiv;\n Module["_glUniform4uiv"] = _glUniform4uiv;\n Module["_glUniformMatrix2x3fv"] = _glUniformMatrix2x3fv;\n Module["_glUniformMatrix3x2fv"] = _glUniformMatrix3x2fv;\n Module["_glUniformMatrix2x4fv"] = _glUniformMatrix2x4fv;\n Module["_glUniformMatrix4x2fv"] = _glUniformMatrix4x2fv;\n Module["_glUniformMatrix3x4fv"] = _glUniformMatrix3x4fv;\n Module["_glUniformMatrix4x3fv"] = _glUniformMatrix4x3fv;\n Module["_glVertexAttribI4iv"] = _glVertexAttribI4iv;\n Module["_glVertexAttribI4uiv"] = _glVertexAttribI4uiv;\n Module["_glProgramParameteri"] = _glProgramParameteri;\n Module["_glGetProgramBinary"] = _glGetProgramBinary;\n Module["_glProgramBinary"] = _glProgramBinary;\n Module["_glFramebufferTextureLayer"] = _glFramebufferTextureLayer;\n Module["_glVertexAttribIPointer"] = _glVertexAttribIPointer;\n Module["_glDrawRangeElements"] = _glDrawRangeElements;\n Module["_emscripten_glDrawArraysInstancedBaseInstanceWEBGL"] = _emscripten_glDrawArraysInstancedBaseInstanceWEBGL;\n Module["_glDrawArraysInstancedBaseInstanceWEBGL"] = _glDrawArraysInstancedBaseInstanceWEBGL;\n Module["_emscripten_glDrawArraysInstancedBaseInstance"] = _emscripten_glDrawArraysInstancedBaseInstance;\n Module["_glDrawArraysInstancedBaseInstance"] = _glDrawArraysInstancedBaseInstance;\n Module["_emscripten_glDrawArraysInstancedBaseInstanceANGLE"] = _emscripten_glDrawArraysInstancedBaseInstanceANGLE;\n Module["_glDrawArraysInstancedBaseInstanceANGLE"] = _glDrawArraysInstancedBaseInstanceANGLE;\n Module["_emscripten_glDrawElementsInstancedBaseVertexBaseInstanceWEBGL"] = _emscripten_glDrawElementsInstancedBaseVertexBaseInstanceWEBGL;\n Module["_glDrawElementsInstancedBaseVertexBaseInstanceWEBGL"] = _glDrawElementsInstancedBaseVertexBaseInstanceWEBGL;\n Module["_emscripten_glDrawElementsInstancedBaseVertexBaseInstanceANGLE"] = _emscripten_glDrawElementsInstancedBaseVertexBaseInstanceANGLE;\n Module["_glDrawElementsInstancedBaseVertexBaseInstanceANGLE"] = _glDrawElementsInstancedBaseVertexBaseInstanceANGLE;\n Module["_emscripten_glMultiDrawArraysInstancedBaseInstanceWEBGL"] = _emscripten_glMultiDrawArraysInstancedBaseInstanceWEBGL;\n Module["_glMultiDrawArraysInstancedBaseInstanceWEBGL"] = _glMultiDrawArraysInstancedBaseInstanceWEBGL;\n Module["_emscripten_glMultiDrawArraysInstancedBaseInstanceANGLE"] = _emscripten_glMultiDrawArraysInstancedBaseInstanceANGLE;\n Module["_glMultiDrawArraysInstancedBaseInstanceANGLE"] = _glMultiDrawArraysInstancedBaseInstanceANGLE;\n Module["_emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL"] = _emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL;\n Module["_glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL"] = _glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL;\n Module["_emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE"] = _emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE;\n Module["_glMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE"] = _glMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE;\n Module["_glEndTransformFeedback"] = _glEndTransformFeedback;\n Module["_glPauseTransformFeedback"] = _glPauseTransformFeedback;\n Module["_glResumeTransformFeedback"] = _glResumeTransformFeedback;\n Module["_glBeginTransformFeedback"] = _glBeginTransformFeedback;\n Module["_glReadBuffer"] = _glReadBuffer;\n Module["_glEndQuery"] = _glEndQuery;\n Module["_glClearBufferfi"] = _glClearBufferfi;\n Module["_glVertexAttribI4i"] = _glVertexAttribI4i;\n Module["_glVertexAttribI4ui"] = _glVertexAttribI4ui;\n Module["_glCopyBufferSubData"] = _glCopyBufferSubData;\n Module["_glTexStorage2D"] = _glTexStorage2D;\n Module["_glRenderbufferStorageMultisample"] = _glRenderbufferStorageMultisample;\n Module["_glTexStorage3D"] = _glTexStorage3D;\n Module["_glCopyTexSubImage3D"] = _glCopyTexSubImage3D;\n Module["_glBlitFramebuffer"] = _glBlitFramebuffer;\n Module["ALLOC_NORMAL"] = ALLOC_NORMAL;\n Module["ALLOC_STACK"] = ALLOC_STACK;\n Module["allocate"] = allocate;\n Module["writeStringToMemory"] = writeStringToMemory;\n Module["writeAsciiToMemory"] = writeAsciiToMemory;\n Module["allocateUTF8"] = allocateUTF8;\n Module["allocateUTF8OnStack"] = allocateUTF8OnStack;\n Module["demangle"] = demangle;\n Module["stackTrace"] = stackTrace;\n Module["print"] = print;\n Module["printErr"] = printErr;\n Module["jstoi_s"] = jstoi_s;\n Module["getNativeTypeSize"] = getNativeTypeSize;\n Module["_emscripten_is_main_browser_thread"] = _emscripten_is_main_browser_thread;\n Module["webSockets"] = webSockets;\n Module["WS"] = WS;\n Module["_emscripten_websocket_get_ready_state"] = _emscripten_websocket_get_ready_state;\n Module["_emscripten_websocket_get_buffered_amount"] = _emscripten_websocket_get_buffered_amount;\n Module["_emscripten_websocket_get_extensions"] = _emscripten_websocket_get_extensions;\n Module["_emscripten_websocket_get_extensions_length"] = _emscripten_websocket_get_extensions_length;\n Module["_emscripten_websocket_get_protocol"] = _emscripten_websocket_get_protocol;\n Module["_emscripten_websocket_get_protocol_length"] = _emscripten_websocket_get_protocol_length;\n Module["_emscripten_websocket_get_url"] = _emscripten_websocket_get_url;\n Module["_emscripten_websocket_get_url_length"] = _emscripten_websocket_get_url_length;\n Module["_emscripten_websocket_set_onopen_callback_on_thread"] = _emscripten_websocket_set_onopen_callback_on_thread;\n Module["_emscripten_websocket_set_onerror_callback_on_thread"] = _emscripten_websocket_set_onerror_callback_on_thread;\n Module["_emscripten_websocket_set_onclose_callback_on_thread"] = _emscripten_websocket_set_onclose_callback_on_thread;\n Module["_emscripten_websocket_set_onmessage_callback_on_thread"] = _emscripten_websocket_set_onmessage_callback_on_thread;\n Module["_emscripten_websocket_new"] = _emscripten_websocket_new;\n Module["_emscripten_websocket_send_utf8_text"] = _emscripten_websocket_send_utf8_text;\n Module["_emscripten_websocket_send_binary"] = _emscripten_websocket_send_binary;\n Module["_emscripten_websocket_close"] = _emscripten_websocket_close;\n Module["_emscripten_websocket_delete"] = _emscripten_websocket_delete;\n Module["_emscripten_websocket_is_supported"] = _emscripten_websocket_is_supported;\n Module["_emscripten_websocket_deinitialize"] = _emscripten_websocket_deinitialize;\n Module["writeGLArray"] = writeGLArray;\n Module["webglPowerPreferences"] = webglPowerPreferences;\n Module["_emscripten_webgl_create_context"] = _emscripten_webgl_create_context;\n Module["_emscripten_webgl_do_create_context"] = _emscripten_webgl_do_create_context;\n Module["_emscripten_webgl_get_current_context"] = _emscripten_webgl_get_current_context;\n Module["_emscripten_webgl_do_get_current_context"] = _emscripten_webgl_do_get_current_context;\n Module["_emscripten_webgl_commit_frame"] = _emscripten_webgl_commit_frame;\n Module["_emscripten_webgl_do_commit_frame"] = _emscripten_webgl_do_commit_frame;\n Module["_emscripten_webgl_make_context_current"] = _emscripten_webgl_make_context_current;\n Module["_emscripten_webgl_get_drawing_buffer_size"] = _emscripten_webgl_get_drawing_buffer_size;\n Module["_emscripten_webgl_get_context_attributes"] = _emscripten_webgl_get_context_attributes;\n Module["_emscripten_webgl_destroy_context"] = _emscripten_webgl_destroy_context;\n Module["_emscripten_webgl_enable_extension"] = _emscripten_webgl_enable_extension;\n Module["_emscripten_supports_offscreencanvas"] = _emscripten_supports_offscreencanvas;\n Module["registerWebGlEventCallback"] = registerWebGlEventCallback;\n Module["_emscripten_set_webglcontextlost_callback_on_thread"] = _emscripten_set_webglcontextlost_callback_on_thread;\n Module["_emscripten_set_webglcontextrestored_callback_on_thread"] = _emscripten_set_webglcontextrestored_callback_on_thread;\n Module["_emscripten_is_webgl_context_lost"] = _emscripten_is_webgl_context_lost;\n Module["_emscripten_webgl_get_supported_extensions"] = _emscripten_webgl_get_supported_extensions;\n Module["_emscripten_webgl_get_program_parameter_d"] = _emscripten_webgl_get_program_parameter_d;\n Module["_emscripten_webgl_get_program_info_log_utf8"] = _emscripten_webgl_get_program_info_log_utf8;\n Module["_emscripten_webgl_get_shader_parameter_d"] = _emscripten_webgl_get_shader_parameter_d;\n Module["_emscripten_webgl_get_shader_info_log_utf8"] = _emscripten_webgl_get_shader_info_log_utf8;\n Module["_emscripten_webgl_get_shader_source_utf8"] = _emscripten_webgl_get_shader_source_utf8;\n Module["_emscripten_webgl_get_vertex_attrib_d"] = _emscripten_webgl_get_vertex_attrib_d;\n Module["_emscripten_webgl_get_vertex_attrib_o"] = _emscripten_webgl_get_vertex_attrib_o;\n Module["_emscripten_webgl_get_vertex_attrib_v"] = _emscripten_webgl_get_vertex_attrib_v;\n Module["_emscripten_webgl_get_uniform_d"] = _emscripten_webgl_get_uniform_d;\n Module["_emscripten_webgl_get_uniform_v"] = _emscripten_webgl_get_uniform_v;\n Module["_emscripten_webgl_get_parameter_v"] = _emscripten_webgl_get_parameter_v;\n Module["_emscripten_webgl_get_parameter_d"] = _emscripten_webgl_get_parameter_d;\n Module["_emscripten_webgl_get_parameter_o"] = _emscripten_webgl_get_parameter_o;\n Module["_emscripten_webgl_get_parameter_utf8"] = _emscripten_webgl_get_parameter_utf8;\n Module["_emscripten_webgl_get_parameter_i64v"] = _emscripten_webgl_get_parameter_i64v;\n Module["EGL"] = EGL;\n Module["_eglGetDisplay"] = _eglGetDisplay;\n Module["_eglInitialize"] = _eglInitialize;\n Module["_eglTerminate"] = _eglTerminate;\n Module["_eglGetConfigs"] = _eglGetConfigs;\n Module["_eglChooseConfig"] = _eglChooseConfig;\n Module["_eglGetConfigAttrib"] = _eglGetConfigAttrib;\n Module["_eglCreateWindowSurface"] = _eglCreateWindowSurface;\n Module["_eglDestroySurface"] = _eglDestroySurface;\n Module["_eglCreateContext"] = _eglCreateContext;\n Module["_eglDestroyContext"] = _eglDestroyContext;\n Module["_eglQuerySurface"] = _eglQuerySurface;\n Module["_eglQueryContext"] = _eglQueryContext;\n Module["_eglGetError"] = _eglGetError;\n Module["_eglQueryString"] = _eglQueryString;\n Module["_eglBindAPI"] = _eglBindAPI;\n Module["_eglQueryAPI"] = _eglQueryAPI;\n Module["_eglWaitClient"] = _eglWaitClient;\n Module["_eglWaitNative"] = _eglWaitNative;\n Module["_eglWaitGL"] = _eglWaitGL;\n Module["_eglSwapInterval"] = _eglSwapInterval;\n Module["_eglMakeCurrent"] = _eglMakeCurrent;\n Module["_eglGetCurrentContext"] = _eglGetCurrentContext;\n Module["_eglGetCurrentSurface"] = _eglGetCurrentSurface;\n Module["_eglGetCurrentDisplay"] = _eglGetCurrentDisplay;\n Module["_eglSwapBuffers"] = _eglSwapBuffers;\n Module["_eglReleaseThread"] = _eglReleaseThread;\n Module["SDL"] = SDL;\n Module["_SDL_GetTicks"] = _SDL_GetTicks;\n Module["_SDL_LockSurface"] = _SDL_LockSurface;\n Module["_SDL_Linked_Version"] = _SDL_Linked_Version;\n Module["_SDL_Init"] = _SDL_Init;\n Module["_SDL_WasInit"] = _SDL_WasInit;\n Module["_SDL_GetVideoInfo"] = _SDL_GetVideoInfo;\n Module["_SDL_ListModes"] = _SDL_ListModes;\n Module["_SDL_VideoModeOK"] = _SDL_VideoModeOK;\n Module["_SDL_AudioDriverName"] = _SDL_AudioDriverName;\n Module["_SDL_VideoDriverName"] = _SDL_VideoDriverName;\n Module["_SDL_SetVideoMode"] = _SDL_SetVideoMode;\n Module["_SDL_GetVideoSurface"] = _SDL_GetVideoSurface;\n Module["_SDL_AudioQuit"] = _SDL_AudioQuit;\n Module["_SDL_VideoQuit"] = _SDL_VideoQuit;\n Module["_SDL_QuitSubSystem"] = _SDL_QuitSubSystem;\n Module["_SDL_Quit"] = _SDL_Quit;\n Module["_SDL_UnlockSurface"] = _SDL_UnlockSurface;\n Module["_SDL_Flip"] = _SDL_Flip;\n Module["_SDL_UpdateRect"] = _SDL_UpdateRect;\n Module["_SDL_UpdateRects"] = _SDL_UpdateRects;\n Module["_SDL_Delay"] = _SDL_Delay;\n Module["_SDL_WM_SetCaption"] = _SDL_WM_SetCaption;\n Module["_SDL_EnableKeyRepeat"] = _SDL_EnableKeyRepeat;\n Module["_SDL_GetKeyboardState"] = _SDL_GetKeyboardState;\n Module["_SDL_GetKeyState"] = _SDL_GetKeyState;\n Module["_SDL_GetKeyName"] = _SDL_GetKeyName;\n Module["_SDL_GetModState"] = _SDL_GetModState;\n Module["_SDL_GetMouseState"] = _SDL_GetMouseState;\n Module["_SDL_WarpMouse"] = _SDL_WarpMouse;\n Module["_SDL_ShowCursor"] = _SDL_ShowCursor;\n Module["_SDL_GetError"] = _SDL_GetError;\n Module["_SDL_SetError"] = _SDL_SetError;\n Module["_SDL_CreateRGBSurface"] = _SDL_CreateRGBSurface;\n Module["_SDL_CreateRGBSurfaceFrom"] = _SDL_CreateRGBSurfaceFrom;\n Module["_SDL_ConvertSurface"] = _SDL_ConvertSurface;\n Module["_SDL_DisplayFormat"] = _SDL_DisplayFormat;\n Module["_SDL_DisplayFormatAlpha"] = _SDL_DisplayFormatAlpha;\n Module["_SDL_FreeSurface"] = _SDL_FreeSurface;\n Module["_SDL_UpperBlit"] = _SDL_UpperBlit;\n Module["_SDL_UpperBlitScaled"] = _SDL_UpperBlitScaled;\n Module["_SDL_LowerBlit"] = _SDL_LowerBlit;\n Module["_SDL_LowerBlitScaled"] = _SDL_LowerBlitScaled;\n Module["_SDL_GetClipRect"] = _SDL_GetClipRect;\n Module["_SDL_SetClipRect"] = _SDL_SetClipRect;\n Module["_SDL_FillRect"] = _SDL_FillRect;\n Module["_zoomSurface"] = _zoomSurface;\n Module["_rotozoomSurface"] = _rotozoomSurface;\n Module["_SDL_SetAlpha"] = _SDL_SetAlpha;\n Module["_SDL_SetColorKey"] = _SDL_SetColorKey;\n Module["_SDL_PollEvent"] = _SDL_PollEvent;\n Module["_SDL_PushEvent"] = _SDL_PushEvent;\n Module["_SDL_PeepEvents"] = _SDL_PeepEvents;\n Module["_SDL_PumpEvents"] = _SDL_PumpEvents;\n Module["_emscripten_SDL_SetEventHandler"] = _emscripten_SDL_SetEventHandler;\n Module["_SDL_SetColors"] = _SDL_SetColors;\n Module["_SDL_SetPalette"] = _SDL_SetPalette;\n Module["_SDL_MapRGB"] = _SDL_MapRGB;\n Module["_SDL_MapRGBA"] = _SDL_MapRGBA;\n Module["_SDL_GetRGB"] = _SDL_GetRGB;\n Module["_SDL_GetRGBA"] = _SDL_GetRGBA;\n Module["_SDL_GetAppState"] = _SDL_GetAppState;\n Module["_SDL_WM_GrabInput"] = _SDL_WM_GrabInput;\n Module["_SDL_WM_ToggleFullScreen"] = _SDL_WM_ToggleFullScreen;\n Module["_IMG_Init"] = _IMG_Init;\n Module["_IMG_Load_RW"] = _IMG_Load_RW;\n Module["_SDL_FreeRW"] = _SDL_FreeRW;\n Module["_SDL_LoadBMP_RW"] = _SDL_LoadBMP_RW;\n Module["_IMG_Load"] = _IMG_Load;\n Module["_SDL_RWFromFile"] = _SDL_RWFromFile;\n Module["_IMG_Quit"] = _IMG_Quit;\n Module["_SDL_OpenAudio"] = _SDL_OpenAudio;\n Module["_SDL_PauseAudio"] = _SDL_PauseAudio;\n Module["_SDL_CloseAudio"] = _SDL_CloseAudio;\n Module["_SDL_LockAudio"] = _SDL_LockAudio;\n Module["_SDL_UnlockAudio"] = _SDL_UnlockAudio;\n Module["_SDL_CreateMutex"] = _SDL_CreateMutex;\n Module["_SDL_mutexP"] = _SDL_mutexP;\n Module["_SDL_mutexV"] = _SDL_mutexV;\n Module["_SDL_DestroyMutex"] = _SDL_DestroyMutex;\n Module["_SDL_CreateCond"] = _SDL_CreateCond;\n Module["_SDL_CondSignal"] = _SDL_CondSignal;\n Module["_SDL_CondWait"] = _SDL_CondWait;\n Module["_SDL_DestroyCond"] = _SDL_DestroyCond;\n Module["_SDL_StartTextInput"] = _SDL_StartTextInput;\n Module["_SDL_StopTextInput"] = _SDL_StopTextInput;\n Module["_Mix_Init"] = _Mix_Init;\n Module["_Mix_Quit"] = _Mix_Quit;\n Module["_Mix_OpenAudio"] = _Mix_OpenAudio;\n Module["_Mix_CloseAudio"] = _Mix_CloseAudio;\n Module["_Mix_AllocateChannels"] = _Mix_AllocateChannels;\n Module["_Mix_ChannelFinished"] = _Mix_ChannelFinished;\n Module["_Mix_Volume"] = _Mix_Volume;\n Module["_Mix_SetPanning"] = _Mix_SetPanning;\n Module["_Mix_LoadWAV_RW"] = _Mix_LoadWAV_RW;\n Module["_Mix_LoadWAV"] = _Mix_LoadWAV;\n Module["_Mix_QuickLoad_RAW"] = _Mix_QuickLoad_RAW;\n Module["_Mix_FreeChunk"] = _Mix_FreeChunk;\n Module["_Mix_ReserveChannels"] = _Mix_ReserveChannels;\n Module["_Mix_PlayChannelTimed"] = _Mix_PlayChannelTimed;\n Module["_Mix_HaltChannel"] = _Mix_HaltChannel;\n Module["_Mix_FadingChannel"] = _Mix_FadingChannel;\n Module["_Mix_HookMusicFinished"] = _Mix_HookMusicFinished;\n Module["_Mix_HaltMusic"] = _Mix_HaltMusic;\n Module["_Mix_VolumeMusic"] = _Mix_VolumeMusic;\n Module["_Mix_LoadMUS_RW"] = _Mix_LoadMUS_RW;\n Module["_Mix_LoadMUS"] = _Mix_LoadMUS;\n Module["_Mix_FreeMusic"] = _Mix_FreeMusic;\n Module["_Mix_PlayMusic"] = _Mix_PlayMusic;\n Module["_Mix_PauseMusic"] = _Mix_PauseMusic;\n Module["_Mix_ResumeMusic"] = _Mix_ResumeMusic;\n Module["_Mix_FadeInMusicPos"] = _Mix_FadeInMusicPos;\n Module["_Mix_FadeOutMusic"] = _Mix_FadeOutMusic;\n Module["_Mix_PlayingMusic"] = _Mix_PlayingMusic;\n Module["_Mix_Playing"] = _Mix_Playing;\n Module["_Mix_Pause"] = _Mix_Pause;\n Module["_Mix_Paused"] = _Mix_Paused;\n Module["_Mix_PausedMusic"] = _Mix_PausedMusic;\n Module["_Mix_Resume"] = _Mix_Resume;\n Module["_TTF_Init"] = _TTF_Init;\n Module["_TTF_OpenFont"] = _TTF_OpenFont;\n Module["_TTF_CloseFont"] = _TTF_CloseFont;\n Module["_TTF_RenderText_Solid"] = _TTF_RenderText_Solid;\n Module["_TTF_RenderText_Blended"] = _TTF_RenderText_Blended;\n Module["_TTF_RenderText_Shaded"] = _TTF_RenderText_Shaded;\n Module["_TTF_RenderUTF8_Solid"] = _TTF_RenderUTF8_Solid;\n Module["_TTF_SizeUTF8"] = _TTF_SizeUTF8;\n Module["_TTF_SizeText"] = _TTF_SizeText;\n Module["_TTF_GlyphMetrics"] = _TTF_GlyphMetrics;\n Module["_TTF_FontAscent"] = _TTF_FontAscent;\n Module["_TTF_FontDescent"] = _TTF_FontDescent;\n Module["_TTF_FontHeight"] = _TTF_FontHeight;\n Module["_TTF_FontLineSkip"] = _TTF_FontLineSkip;\n Module["_TTF_Quit"] = _TTF_Quit;\n Module["SDL_gfx"] = SDL_gfx;\n Module["_boxColor"] = _boxColor;\n Module["_boxRGBA"] = _boxRGBA;\n Module["_rectangleColor"] = _rectangleColor;\n Module["_rectangleRGBA"] = _rectangleRGBA;\n Module["_ellipseColor"] = _ellipseColor;\n Module["_ellipseRGBA"] = _ellipseRGBA;\n Module["_filledEllipseColor"] = _filledEllipseColor;\n Module["_filledEllipseRGBA"] = _filledEllipseRGBA;\n Module["_lineColor"] = _lineColor;\n Module["_lineRGBA"] = _lineRGBA;\n Module["_pixelRGBA"] = _pixelRGBA;\n Module["_SDL_GL_SetAttribute"] = _SDL_GL_SetAttribute;\n Module["_SDL_GL_GetAttribute"] = _SDL_GL_GetAttribute;\n Module["_SDL_GL_SwapBuffers"] = _SDL_GL_SwapBuffers;\n Module["_SDL_GL_ExtensionSupported"] = _SDL_GL_ExtensionSupported;\n Module["_SDL_DestroyWindow"] = _SDL_DestroyWindow;\n Module["_SDL_DestroyRenderer"] = _SDL_DestroyRenderer;\n Module["_SDL_GetWindowFlags"] = _SDL_GetWindowFlags;\n Module["_SDL_GL_SwapWindow"] = _SDL_GL_SwapWindow;\n Module["_SDL_GL_MakeCurrent"] = _SDL_GL_MakeCurrent;\n Module["_SDL_GL_DeleteContext"] = _SDL_GL_DeleteContext;\n Module["_SDL_GL_GetSwapInterval"] = _SDL_GL_GetSwapInterval;\n Module["_SDL_GL_SetSwapInterval"] = _SDL_GL_SetSwapInterval;\n Module["_SDL_SetWindowTitle"] = _SDL_SetWindowTitle;\n Module["_SDL_GetWindowSize"] = _SDL_GetWindowSize;\n Module["_SDL_LogSetOutputFunction"] = _SDL_LogSetOutputFunction;\n Module["_SDL_SetWindowFullscreen"] = _SDL_SetWindowFullscreen;\n Module["_SDL_ClearError"] = _SDL_ClearError;\n Module["_SDL_SetGamma"] = _SDL_SetGamma;\n Module["_SDL_SetGammaRamp"] = _SDL_SetGammaRamp;\n Module["_SDL_NumJoysticks"] = _SDL_NumJoysticks;\n Module["_SDL_JoystickName"] = _SDL_JoystickName;\n Module["_SDL_JoystickOpen"] = _SDL_JoystickOpen;\n Module["_SDL_JoystickOpened"] = _SDL_JoystickOpened;\n Module["_SDL_JoystickIndex"] = _SDL_JoystickIndex;\n Module["_SDL_JoystickNumAxes"] = _SDL_JoystickNumAxes;\n Module["_SDL_JoystickNumBalls"] = _SDL_JoystickNumBalls;\n Module["_SDL_JoystickNumHats"] = _SDL_JoystickNumHats;\n Module["_SDL_JoystickNumButtons"] = _SDL_JoystickNumButtons;\n Module["_SDL_JoystickUpdate"] = _SDL_JoystickUpdate;\n Module["_SDL_JoystickEventState"] = _SDL_JoystickEventState;\n Module["_SDL_JoystickGetAxis"] = _SDL_JoystickGetAxis;\n Module["_SDL_JoystickGetHat"] = _SDL_JoystickGetHat;\n Module["_SDL_JoystickGetBall"] = _SDL_JoystickGetBall;\n Module["_SDL_JoystickGetButton"] = _SDL_JoystickGetButton;\n Module["_SDL_JoystickClose"] = _SDL_JoystickClose;\n Module["_SDL_InitSubSystem"] = _SDL_InitSubSystem;\n Module["_SDL_RWFromConstMem"] = _SDL_RWFromConstMem;\n Module["_SDL_RWFromMem"] = _SDL_RWFromMem;\n Module["_SDL_GetNumAudioDrivers"] = _SDL_GetNumAudioDrivers;\n Module["_SDL_GetCurrentAudioDriver"] = _SDL_GetCurrentAudioDriver;\n Module["_SDL_GetScancodeFromKey"] = _SDL_GetScancodeFromKey;\n Module["_SDL_GetAudioDriver"] = _SDL_GetAudioDriver;\n Module["_SDL_EnableUNICODE"] = _SDL_EnableUNICODE;\n Module["_SDL_AddTimer"] = _SDL_AddTimer;\n Module["_SDL_RemoveTimer"] = _SDL_RemoveTimer;\n Module["_SDL_CreateThread"] = _SDL_CreateThread;\n Module["_SDL_WaitThread"] = _SDL_WaitThread;\n Module["_SDL_GetThreadID"] = _SDL_GetThreadID;\n Module["_SDL_ThreadID"] = _SDL_ThreadID;\n Module["_SDL_AllocRW"] = _SDL_AllocRW;\n Module["_SDL_CondBroadcast"] = _SDL_CondBroadcast;\n Module["_SDL_CondWaitTimeout"] = _SDL_CondWaitTimeout;\n Module["_SDL_WM_IconifyWindow"] = _SDL_WM_IconifyWindow;\n Module["_Mix_SetPostMix"] = _Mix_SetPostMix;\n Module["_Mix_VolumeChunk"] = _Mix_VolumeChunk;\n Module["_Mix_SetPosition"] = _Mix_SetPosition;\n Module["_Mix_QuerySpec"] = _Mix_QuerySpec;\n Module["_Mix_FadeInChannelTimed"] = _Mix_FadeInChannelTimed;\n Module["_Mix_FadeOutChannel"] = _Mix_FadeOutChannel;\n Module["_Mix_Linked_Version"] = _Mix_Linked_Version;\n Module["_SDL_SaveBMP_RW"] = _SDL_SaveBMP_RW;\n Module["_SDL_WM_SetIcon"] = _SDL_WM_SetIcon;\n Module["_SDL_HasRDTSC"] = _SDL_HasRDTSC;\n Module["_SDL_HasMMX"] = _SDL_HasMMX;\n Module["_SDL_HasMMXExt"] = _SDL_HasMMXExt;\n Module["_SDL_Has3DNow"] = _SDL_Has3DNow;\n Module["_SDL_Has3DNowExt"] = _SDL_Has3DNowExt;\n Module["_SDL_HasSSE"] = _SDL_HasSSE;\n Module["_SDL_HasSSE2"] = _SDL_HasSSE2;\n Module["_SDL_HasAltiVec"] = _SDL_HasAltiVec;\n var ASM_CONSTS = { 3964903: () => {\n throw new Error("intentionally triggered fatal error!");\n }, 3964960: () => {\n wasmImports["open64"] = wasmImports["open"];\n }, 3965009: () => jspiSupported };\n function console_error(msg) {\n let jsmsg = UTF8ToString(msg);\n console.error(jsmsg);\n }\n function console_error_obj(obj) {\n console.error(obj);\n }\n function new_error(type, msg, err2) {\n return new API.PythonError(UTF8ToString(type), msg, err2);\n }\n new_error.sig = "eiei";\n function fail_test() {\n API.fail_test = true;\n }\n fail_test.sig = "v";\n function capture_stderr() {\n API.capture_stderr();\n }\n capture_stderr.sig = "v";\n function restore_stderr() {\n return API.restore_stderr();\n }\n restore_stderr.sig = "e";\n function raw_call_js(func2) {\n func2();\n }\n raw_call_js.sig = "ve";\n function hiwire_invalid_ref_js(type, ref) {\n API.fail_test = true;\n if (type === 1 && !ref) {\n if (_PyErr_Occurred()) {\n const e = _wrap_exception();\n console.error("Pyodide internal error: Argument to hiwire_get is falsy. This was probably because the Python error indicator was set when get_value was called. The Python error that caused this was:", e);\n throw e;\n } else {\n const msg2 = "Pyodide internal error: Argument to hiwire_get is falsy (but error indicator is not set).";\n console.error(msg2);\n throw new Error(msg2);\n }\n }\n const typestr = { [1]: "get", [2]: "incref", [3]: "decref" }[type];\n const msg = `hiwire_${typestr} on invalid reference ${ref}. This is most likely due to use after free. It may also be due to memory corruption.`;\n console.error(msg);\n throw new Error(msg);\n }\n hiwire_invalid_ref_js.sig = "vii";\n function set_pyodide_module(mod) {\n API._pyodide = mod;\n }\n set_pyodide_module.sig = "ve";\n function js2python_immutable_js(value2) {\n try {\n let result = Module.js2python_convertImmutable(value2);\n if (result !== void 0) {\n return result;\n }\n return 0;\n } catch (e) {\n Module.handle_js_error(e);\n return 0;\n }\n errNoRet();\n }\n js2python_immutable_js.sig = "ie";\n function js2python_js(value2) {\n try {\n let result = Module.js2python_convertImmutable(value2);\n if (result !== void 0) {\n return result;\n }\n return _JsProxy_create(value2);\n } catch (e) {\n Module.handle_js_error(e);\n return 0;\n }\n errNoRet();\n }\n js2python_js.sig = "ie";\n function js2python_convert(v2, depth, defaultConverter) {\n try {\n return Module.js2python_convert(v2, { depth, defaultConverter });\n } catch (e) {\n Module.handle_js_error(e);\n return 0;\n }\n errNoRet();\n }\n js2python_convert.sig = "ieie";\n function JsProxy_GetAttr_js(jsobj, ptrkey) {\n try {\n const jskey = normalizeReservedWords(UTF8ToString(ptrkey));\n const result = jsobj[jskey];\n if (result === void 0 && !(jskey in jsobj)) {\n return Module.error;\n }\n return result;\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsProxy_GetAttr_js.sig = "eei";\n function JsProxy_SetAttr_js(jsobj, ptrkey, jsval) {\n try {\n let jskey = normalizeReservedWords(UTF8ToString(ptrkey));\n jsobj[jskey] = jsval;\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n JsProxy_SetAttr_js.sig = "ieie";\n function JsProxy_DelAttr_js(jsobj, ptrkey) {\n try {\n let jskey = normalizeReservedWords(UTF8ToString(ptrkey));\n delete jsobj[jskey];\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n JsProxy_DelAttr_js.sig = "iei";\n function JsProxy_GetIter_js(obj) {\n try {\n return obj[Symbol.iterator]();\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsProxy_GetIter_js.sig = "ee";\n function handle_next_result_js(res, done, msg) {\n try {\n let errmsg;\n if (typeof res !== "object") {\n errmsg = `Result should have type "object" not "${typeof res}"`;\n } else if (typeof res.done === "undefined") {\n if (typeof res.then === "function") {\n errmsg = `Result was a promise, use anext() / asend() / athrow() instead.`;\n } else {\n errmsg = `Result has no "done" field.`;\n }\n }\n if (errmsg) {\n HEAPU32[(msg >>> 2) + 0 >>> 0] = stringToNewUTF8(errmsg);\n HEAPU32[(done >>> 2) + 0 >>> 0] = -1;\n }\n HEAPU32[(done >>> 2) + 0 >>> 0] = res.done;\n return res.value;\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n handle_next_result_js.sig = "eeii";\n function JsException_new_helper(name_ptr, message_ptr, stack_ptr) {\n try {\n let name2 = UTF8ToString(name_ptr);\n let message = UTF8ToString(message_ptr);\n let stack = UTF8ToString(stack_ptr);\n return API.deserializeError(name2, message, stack);\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsException_new_helper.sig = "eiii";\n function JsProxy_GetAsyncIter_js(obj) {\n try {\n return obj[Symbol.asyncIterator]();\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsProxy_GetAsyncIter_js.sig = "ee";\n function _agen_handle_result_js(p2, msg, set_result, set_exception, closing) {\n try {\n let errmsg;\n if (typeof p2 !== "object") {\n errmsg = `Result of anext() should be object not ${typeof p2}`;\n } else if (typeof p2.then !== "function") {\n if (typeof p2.done === "boolean") {\n errmsg = `Result of anext() was not a promise, use next() instead.`;\n } else {\n errmsg = `Result of anext() was not a promise.`;\n }\n }\n if (errmsg) {\n HEAPU32[(msg >>> 2) + 0 >>> 0] = stringToNewUTF8(errmsg);\n return -1;\n }\n _Py_IncRef(set_result);\n _Py_IncRef(set_exception);\n p2.then(({ done, value: value2 }) => {\n __agen_handle_result_js_c(set_result, set_exception, done, value2, closing);\n }, (err2) => {\n __agen_handle_result_js_c(set_result, set_exception, -1, err2, closing);\n }).finally(() => {\n _Py_DecRef(set_result);\n _Py_DecRef(set_exception);\n });\n return 0;\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n _agen_handle_result_js.sig = "ieiiii";\n function get_length_helper(val) {\n try {\n let result;\n if (typeof val.size === "number") {\n result = val.size;\n } else if (typeof val.length === "number") {\n result = val.length;\n } else {\n return -2;\n }\n if (result < 0) {\n return -3;\n }\n if (result > 2147483647) {\n return -4;\n }\n return result;\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n get_length_helper.sig = "ie";\n function get_length_string(val) {\n try {\n let result;\n if (typeof val.size === "number") {\n result = val.size;\n } else if (typeof val.length === "number") {\n result = val.length;\n }\n return stringToNewUTF8(" " + result.toString());\n } catch (e) {\n Module.handle_js_error(e);\n return 0;\n }\n errNoRet();\n }\n get_length_string.sig = "ie";\n function destroy_jsarray_entries(array) {\n for (let v2 of array) {\n try {\n if (typeof v2.destroy === "function") {\n v2.destroy();\n }\n } catch (e) {\n console.warn("Weird error:", e);\n }\n }\n }\n destroy_jsarray_entries.sig = "ve";\n function JsArray_repeat_js(o2, count) {\n try {\n if (!Array.isArray(o2)) {\n o2 = Array.from(o2);\n }\n return Array.from({ length: count }, () => o2).flat();\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsArray_repeat_js.sig = "eei";\n function JsArray_inplace_repeat_js(o2, count) {\n try {\n o2.splice(0, o2.length, ...Array.from({ length: count }, () => o2).flat());\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n JsArray_inplace_repeat_js.sig = "iei";\n function JsArray_reversed_iterator(array) {\n return new ReversedIterator(array);\n }\n class ReversedIterator {\n constructor(array) {\n this._array = array;\n this._i = array.length - 1;\n }\n __length_hint__() {\n return this._array.length;\n }\n [Symbol.toStringTag]() {\n return "ReverseIterator";\n }\n next() {\n const i2 = this._i;\n const a = this._array;\n const done = i2 < 0;\n const value2 = done ? void 0 : a[i2];\n this._i--;\n return { done, value: value2 };\n }\n }\n JsArray_reversed_iterator.sig = "ee";\n function JsArray_index_js(o2, v2, start2, stop2) {\n try {\n for (let i2 = start2; i2 < stop2; i2++) {\n if (o2[i2] === v2) {\n return i2;\n }\n }\n return -2;\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n JsArray_index_js.sig = "ieeii";\n function JsArray_count_js(o2, v2) {\n try {\n let result = 0;\n for (let i2 = 0; i2 < o2.length; i2++) {\n if (o2[i2] === v2) {\n result++;\n }\n }\n return result;\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n JsArray_count_js.sig = "iee";\n function JsArray_reverse_js(array) {\n try {\n array.reverse();\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n JsArray_reverse_js.sig = "ie";\n function JsProxy_subscript_js(obj, key) {\n try {\n let result = obj.get(key);\n if (result === void 0) {\n if (obj.has && typeof obj.has === "function" && !obj.has(key)) {\n return Module.error;\n }\n }\n return result;\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsProxy_subscript_js.sig = "eee";\n function JsProxy_exit_js(obj) {\n try {\n obj[Symbol.dispose]();\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n JsProxy_exit_js.sig = "ie";\n function JsProxy_aexit_js(obj) {\n try {\n return obj[Symbol.asyncDispose]();\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsProxy_aexit_js.sig = "ee";\n function JsMap_GetIter_js(obj) {\n try {\n let result;\n if (typeof obj.keys === "function") {\n result = obj.keys();\n } else {\n result = obj[Symbol.iterator]();\n }\n return result;\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsMap_GetIter_js.sig = "ee";\n function JsMap_clear_js(map) {\n try {\n if (map && typeof map.clear === "function") {\n map.clear();\n return 1;\n }\n return 0;\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n JsMap_clear_js.sig = "ie";\n function JsProxy_Dir_js(jsobj) {\n try {\n let result = [];\n do {\n const names = Object.getOwnPropertyNames(jsobj);\n result.push(...names.filter((s2) => {\n let c = s2.charCodeAt(0);\n return c < 48 || c > 57;\n }).map((word) => isReservedWord(word.replace(/_*$/, "")) ? word + "_" : word));\n } while (jsobj = Object.getPrototypeOf(jsobj));\n return result;\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsProxy_Dir_js.sig = "ee";\n function JsProxy_Bool_js(val) {\n try {\n if (!val) {\n return false;\n }\n if (val.size === 0) {\n if (/HTML[A-Za-z]*Element/.test(getTypeTag(val))) {\n return true;\n }\n return false;\n }\n if (val.length === 0 && JsvArray_Check(val)) {\n return false;\n }\n if (val.byteLength === 0) {\n return false;\n }\n return true;\n } catch (e) {\n return false;\n }\n }\n JsProxy_Bool_js.sig = "ie";\n function JsObjMap_GetIter_js(obj) {\n try {\n return Module.iterObject(obj);\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsObjMap_GetIter_js.sig = "ee";\n function JsObjMap_length_js(obj) {\n try {\n let length = 0;\n for (let _2 of Module.iterObject(obj)) {\n length++;\n }\n return length;\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n JsObjMap_length_js.sig = "ie";\n function JsObjMap_subscript_js(obj, key) {\n try {\n if (!Object.prototype.hasOwnProperty.call(obj, key)) {\n return Module.error;\n }\n return obj[key];\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsObjMap_subscript_js.sig = "eee";\n function JsObjMap_ass_subscript_js(obj, key, value2) {\n try {\n if (value2 === Module.error) {\n if (!Object.prototype.hasOwnProperty.call(obj, key)) {\n return -1;\n }\n delete obj[key];\n } else {\n obj[key] = value2;\n }\n return 0;\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n JsObjMap_ass_subscript_js.sig = "ieee";\n function JsObjMap_contains_js(obj, key) {\n try {\n return Object.prototype.hasOwnProperty.call(obj, key);\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n JsObjMap_contains_js.sig = "iee";\n function JsModule_GetAll_js(o2) {\n try {\n return Object.getOwnPropertyNames(o2);\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsModule_GetAll_js.sig = "ee";\n function JsBuffer_DecodeString_js(buffer, encoding) {\n try {\n let encoding_js;\n if (encoding) {\n encoding_js = UTF8ToString(encoding);\n }\n const decoder = new TextDecoder(encoding_js, { fatal: true, ignoreBOM: true });\n let res;\n try {\n res = decoder.decode(buffer);\n } catch (e) {\n if (e instanceof TypeError) {\n return Module.error;\n }\n throw e;\n }\n return res;\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsBuffer_DecodeString_js.sig = "eei";\n function JsBuffer_get_info(jsobj, byteLength_ptr, format_ptr, size_ptr, checked_ptr) {\n const [format_utf8, size, checked] = Module.get_buffer_datatype(jsobj);\n HEAPU32[(byteLength_ptr >>> 2) + 0 >>> 0] = jsobj.byteLength;\n HEAPU32[(format_ptr >>> 2) + 0 >>> 0] = format_utf8;\n HEAPU32[(size_ptr >>> 2) + 0 >>> 0] = size;\n HEAPU8[(checked_ptr >>> 0) + 0 >>> 0] = checked;\n }\n JsBuffer_get_info.sig = "veiiii";\n function JsDoubleProxy_unwrap_js(id) {\n try {\n return Module.PyProxy_getPtr(id);\n } catch (e) {\n Module.handle_js_error(e);\n return 0;\n }\n errNoRet();\n }\n JsDoubleProxy_unwrap_js.sig = "ie";\n function JsProxy_to_weakref_js(pyproxy) {\n try {\n return new WeakRef(pyproxy);\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsProxy_to_weakref_js.sig = "ee";\n function JsProxy_compute_typeflags(obj, is_py_json) {\n try {\n let safeBool = function(cb) {\n try {\n return cb();\n } catch (e) {\n return false;\n }\n };\n let type_flags = 0;\n if (API.isPyProxy(obj) && !pyproxyIsAlive(obj)) {\n return 0;\n }\n const typeTag = getTypeTag(obj);\n const isBufferView = safeBool(() => ArrayBuffer.isView(obj));\n const isArray = safeBool(() => Array.isArray(obj));\n const constructorName = safeBool(() => obj.constructor.name) || "";\n const hasLength = isArray || hasProperty(obj, "length") && typeof obj !== "function";\n if (typeof obj === "function") {\n type_flags |= 1 << 11;\n }\n if (hasMethod(obj, "then")) {\n type_flags |= 1 << 9;\n }\n if (hasMethod(obj, Symbol.iterator)) {\n type_flags |= 1 << 0;\n }\n if (hasMethod(obj, Symbol.asyncIterator)) {\n type_flags |= 1 << 17;\n }\n if (hasMethod(obj, "next") && (hasMethod(obj, Symbol.iterator) || !hasMethod(obj, Symbol.asyncIterator))) {\n type_flags |= 1 << 1;\n }\n if (hasMethod(obj, "next") && (!hasMethod(obj, Symbol.iterator) || hasMethod(obj, Symbol.asyncIterator))) {\n type_flags |= 1 << 20;\n }\n if (hasLength || hasProperty(obj, "size")) {\n type_flags |= 1 << 2;\n }\n if (hasMethod(obj, "get")) {\n type_flags |= 1 << 3;\n }\n if (hasMethod(obj, "set")) {\n type_flags |= 1 << 4;\n }\n if (hasMethod(obj, "has")) {\n type_flags |= 1 << 5;\n }\n if (hasMethod(obj, "includes")) {\n type_flags |= 1 << 6;\n }\n if (Symbol.asyncDispose) {\n if (hasMethod(obj, Symbol.dispose)) {\n type_flags |= 1 << 7;\n }\n if (hasMethod(obj, Symbol.asyncDispose)) {\n type_flags |= 1 << 8;\n }\n }\n if ((isBufferView || typeTag === "[object ArrayBuffer]") && !(type_flags & 1 << 11)) {\n type_flags |= 1 << 10;\n }\n if (API.isPyProxy(obj)) {\n type_flags |= 1 << 15;\n }\n if (isArray) {\n type_flags |= 1 << 12;\n }\n if (isBufferView && typeTag !== "[object DataView]") {\n type_flags |= 1 << 14;\n }\n if (!isArray && hasLength && type_flags & 1 << 0 && !(type_flags & (1 << 1 | 1 << 14))) {\n type_flags |= 1 << 13;\n }\n if (typeTag === "[object Generator]") {\n type_flags |= 1 << 18;\n }\n if (typeTag === "[object AsyncGenerator]") {\n type_flags |= 1 << 19;\n }\n if (hasProperty(obj, "name") && hasProperty(obj, "message") && (hasProperty(obj, "stack") || constructorName === "DOMException") && !(type_flags & (1 << 11 | 1 << 10))) {\n type_flags |= 1 << 21;\n }\n if (is_py_json && type_flags & (1 << 12 | 1 << 13 | 1 << 1)) {\n type_flags |= 1 << 23;\n }\n if (is_py_json && !(type_flags & (1 << 12 | 1 << 14 | 1 << 13 | 1 << 10 | 1 << 15 | 1 << 1 | 1 << 11 | 1 << 21))) {\n type_flags |= 1 << 22;\n }\n return type_flags;\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n JsProxy_compute_typeflags.sig = "iei";\n function is_comlink_proxy(obj) {\n try {\n return !!(API.Comlink && value[API.Comlink.createEndpoint]);\n } catch (e) {\n return false;\n }\n }\n is_comlink_proxy.sig = "ie";\n function can_run_sync_js() {\n return !!validSuspender.value;\n }\n can_run_sync_js.sig = "i";\n function my_dict_converter() {\n return Object.fromEntries;\n }\n my_dict_converter.sig = "e";\n function get_async_js_call_done_callback(proxies) {\n try {\n return function(result) {\n let msg = "This borrowed proxy was automatically destroyed at the end of an asynchronous function call. Try using create_proxy or create_once_callable.";\n for (let px of proxies) {\n Module.pyproxy_destroy(px, msg, false);\n }\n if (API.isPyProxy(result)) {\n Module.pyproxy_destroy(result, msg, false);\n }\n };\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n get_async_js_call_done_callback.sig = "ee";\n function wrap_generator(gen, proxies) {\n try {\n let cleanup = function() {\n proxies.forEach((px) => Module.pyproxy_destroy(px, msg));\n }, wrap = function(funcname) {\n return function(val) {\n if (API.isPyProxy(val)) {\n val = val.copy();\n proxies.add(val);\n }\n let res;\n try {\n res = gen[funcname](val);\n } catch (e) {\n cleanup();\n throw e;\n }\n if (res.done) {\n proxies.delete(res.value);\n cleanup();\n }\n return res;\n };\n };\n proxies = new Set(proxies);\n const msg = "This borrowed proxy was automatically destroyed when a generator completed execution. Try using create_proxy or create_once_callable.";\n return { get [Symbol.toStringTag]() {\n return "Generator";\n }, [Symbol.iterator]() {\n return this;\n }, next: wrap("next"), throw: wrap("throw"), return: wrap("return") };\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n wrap_generator.sig = "eee";\n function wrap_async_generator(gen, proxies) {\n try {\n let cleanup = function() {\n proxies.forEach((px) => Module.pyproxy_destroy(px, msg));\n }, wrap = function(funcname) {\n return async function(val) {\n if (API.isPyProxy(val)) {\n val = val.copy();\n proxies.add(val);\n }\n let res;\n try {\n res = await gen[funcname](val);\n } catch (e) {\n cleanup();\n throw e;\n }\n if (res.done) {\n proxies.delete(res.value);\n cleanup();\n }\n return res;\n };\n };\n proxies = new Set(proxies);\n const msg = "This borrowed proxy was automatically destroyed when an asynchronous generator completed execution. Try using create_proxy or create_once_callable.";\n return { get [Symbol.toStringTag]() {\n return "AsyncGenerator";\n }, [Symbol.asyncIterator]() {\n return this;\n }, next: wrap("next"), throw: wrap("throw"), return: wrap("return") };\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n wrap_async_generator.sig = "eee";\n function throw_no_gil() {\n throw new API.NoGilError("Attempted to use PyProxy when Python GIL not held");\n }\n throw_no_gil.sig = "v";\n function pyproxy_Check(val) {\n return API.isPyProxy(val);\n }\n pyproxy_Check.sig = "ie";\n function pyproxy_AsPyObject(val) {\n if (!API.isPyProxy(val) || !pyproxyIsAlive(val)) {\n return 0;\n }\n return Module.PyProxy_getPtr(val);\n }\n pyproxy_AsPyObject.sig = "ie";\n function destroy_proxies(proxies, msg_ptr) {\n let msg = void 0;\n if (msg_ptr) {\n msg = _JsvString_FromId(msg_ptr);\n }\n for (let px of proxies) {\n Module.pyproxy_destroy(px, msg, false);\n }\n }\n destroy_proxies.sig = "vei";\n function gc_register_proxies(proxies) {\n for (let px of proxies) {\n Module.gc_register_proxy(Module.PyProxy_getAttrs(px).shared);\n }\n }\n gc_register_proxies.sig = "ve";\n function destroy_proxy(px, msg_ptr) {\n const { shared, props } = Module.PyProxy_getAttrsQuiet(px);\n if (!shared.ptr) {\n return;\n }\n if (props.roundtrip) {\n return;\n }\n let msg = void 0;\n if (msg_ptr) {\n msg = _JsvString_FromId(msg_ptr);\n }\n Module.pyproxy_destroy(px, msg, false);\n }\n destroy_proxy.sig = "vei";\n function proxy_cache_get(proxyCache, descr) {\n const proxy2 = proxyCache.get(descr);\n if (!proxy2) {\n return Module.error;\n }\n if (pyproxyIsAlive(proxy2)) {\n return proxy2;\n } else {\n proxyCache.delete(descr);\n return Module.error;\n }\n }\n proxy_cache_get.sig = "eei";\n function proxy_cache_set(proxyCache, descr, proxy2) {\n proxyCache.set(descr, proxy2);\n }\n proxy_cache_set.sig = "veie";\n function _pyproxyGen_make_result(done, value2) {\n return { done: !!done, value: value2 };\n }\n _pyproxyGen_make_result.sig = "eie";\n function array_to_js(array, len) {\n return Array.from(HEAP32.subarray(array / 4 >>> 0, array / 4 + len >>> 0));\n }\n array_to_js.sig = "eii";\n function _pyproxy_get_buffer_result(start_ptr, smallest_ptr, largest_ptr, readonly, format, itemsize, shape, strides, view, c_contiguous, f_contiguous, sentinel) {\n format = UTF8ToString(format);\n return { start_ptr, smallest_ptr, largest_ptr, readonly, format, itemsize, shape, strides, view, c_contiguous, f_contiguous };\n }\n _pyproxy_get_buffer_result.sig = "eiiiiiieeiiii";\n function pyproxy_new_ex(ptrobj, capture_this, roundtrip, gcRegister, jsonAdaptor) {\n try {\n return Module.pyproxy_new(ptrobj, { props: { captureThis: !!capture_this, roundtrip: !!roundtrip }, gcRegister, jsonAdaptor });\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n pyproxy_new_ex.sig = "eiiiii";\n function pyproxy_new(ptrobj) {\n try {\n return Module.pyproxy_new(ptrobj);\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n pyproxy_new.sig = "ei";\n function create_once_callable(obj, may_syncify) {\n try {\n let wrapper = function(...args2) {\n if (alreadyCalled) {\n throw new Error("OnceProxy can only be called once");\n }\n try {\n if (may_syncify) {\n return Module.callPyObjectMaybePromising(obj, args2);\n } else {\n return Module.callPyObject(obj, args2);\n }\n } finally {\n wrapper.destroy();\n }\n };\n _Py_IncRef(obj);\n let alreadyCalled = false;\n wrapper.destroy = function() {\n if (alreadyCalled) {\n throw new Error("OnceProxy has already been destroyed");\n }\n alreadyCalled = true;\n Module.finalizationRegistry.unregister(wrapper);\n _Py_DecRef(obj);\n };\n Module.finalizationRegistry.register(wrapper, { ptr: obj }, wrapper);\n return wrapper;\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n create_once_callable.sig = "eii";\n function create_promise_handles(handle_result, handle_exception, done_callback, js2py_converter) {\n try {\n let checkUsed = function() {\n if (used) {\n throw new Error("One of the promise handles has already been called.");\n }\n }, destroy = function() {\n checkUsed();\n used = true;\n if (handle_result) {\n _Py_DecRef(handle_result);\n }\n if (handle_exception) {\n _Py_DecRef(handle_exception);\n }\n if (js2py_converter) {\n _Py_DecRef(js2py_converter);\n }\n }, onFulfilled = function(res) {\n checkUsed();\n try {\n if (handle_result) {\n return _create_promise_handles_result_helper(handle_result, js2py_converter, res);\n }\n } finally {\n done_callback(res);\n destroy();\n }\n }, onRejected = function(err2) {\n checkUsed();\n try {\n if (handle_exception) {\n return Module.callPyObjectMaybePromising(handle_exception, [err2]);\n }\n } finally {\n done_callback(void 0);\n destroy();\n }\n };\n if (handle_result) {\n _Py_IncRef(handle_result);\n }\n if (handle_exception) {\n _Py_IncRef(handle_exception);\n }\n if (js2py_converter) {\n _Py_IncRef(js2py_converter);\n }\n if (!done_callback) {\n done_callback = (x2) => {\n };\n }\n let used = false;\n onFulfilled.destroy = destroy;\n onRejected.destroy = destroy;\n return [onFulfilled, onRejected];\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n create_promise_handles.sig = "eiiei";\n function _python2js_buffer_inner(buf, itemsize, ndim, format, shape, strides, suboffsets) {\n try {\n let converter = Module.get_converter(format, itemsize);\n return Module._python2js_buffer_recursive(buf, 0, { ndim, format, itemsize, shape, strides, suboffsets, converter });\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n _python2js_buffer_inner.sig = "eiiiiiii";\n function jslib_init_js() {\n try {\n HEAP32[_Jsr_undefined / 4 >>> 0] = _hiwire_intern(void 0);\n HEAP32[_Jsr_true / 4 >>> 0] = _hiwire_intern(true);\n HEAP32[_Jsr_false / 4 >>> 0] = _hiwire_intern(false);\n HEAP32[_Jsr_error / 4 >>> 0] = _hiwire_intern(_Jsv_GetError());\n HEAP32[_Jsr_novalue / 4 >>> 0] = _hiwire_intern({ noValueMarker: 1 });\n Module.novalue = _hiwire_get(HEAP32[_Jsr_novalue / 4 >>> 0]);\n Module.error = _hiwire_get(HEAP32[_Jsr_error / 4 >>> 0]);\n Hiwire.num_keys = _hiwire_num_refs;\n return 0;\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n jslib_init_js.sig = "i";\n function JsvNoValue_Check(v2) {\n return v2 === Module.novalue;\n }\n JsvNoValue_Check.sig = "ie";\n function JsvBigInt_fromInt(x2) {\n return BigInt(x2);\n }\n JsvBigInt_fromInt.sig = "ei";\n function JsvNum_fromInt(x2) {\n return x2;\n }\n JsvNum_fromInt.sig = "ei";\n function JsvNum_fromDouble(val) {\n return val;\n }\n JsvNum_fromDouble.sig = "ed";\n function JsvNum_toInt(v2) {\n return v2;\n }\n JsvNum_toInt.sig = "ie";\n function JsvBigInt_fromDigits(digits, ndigits) {\n let result = BigInt(0);\n for (let i2 = 0; i2 < ndigits; i2++) {\n result += BigInt(HEAPU32[(digits >>> 2) + i2 >>> 0]) << BigInt(32 * i2);\n }\n result += BigInt(HEAPU32[(digits >>> 2) + ndigits - 1 >>> 0] & 2147483648) << BigInt(1 + 32 * (ndigits - 1));\n return result;\n }\n JsvBigInt_fromDigits.sig = "eii";\n function Jsv_BigIntToNum(x2) {\n if (-Number.MAX_SAFE_INTEGER < x2 && x2 < Number.MAX_SAFE_INTEGER) {\n return Number(x2);\n }\n return x2;\n }\n Jsv_BigIntToNum.sig = "ee";\n function Jsv_to_bool(x2) {\n return !!x2;\n }\n Jsv_to_bool.sig = "ie";\n function Jsv_typeof(x2) {\n return typeof x2;\n }\n Jsv_typeof.sig = "ee";\n function Jsv_constructorName(obj) {\n try {\n return stringToNewUTF8(obj.constructor.name);\n } catch (e) {\n Module.handle_js_error(e);\n return 0;\n }\n errNoRet();\n }\n Jsv_constructorName.sig = "ie";\n function JsvUTF8ToString(ptr2) {\n return UTF8ToString(ptr2);\n }\n JsvUTF8ToString.sig = "ei";\n function JsvArray_New() {\n return [];\n }\n JsvArray_New.sig = "e";\n function JsvArray_Check(obj) {\n try {\n if (Array.isArray(obj)) {\n return true;\n }\n let typeTag = getTypeTag(obj);\n if (typeTag === "[object HTMLCollection]" || typeTag === "[object NodeList]") {\n return true;\n }\n if (ArrayBuffer.isView(obj) && obj.constructor.name !== "DataView") {\n return true;\n }\n return false;\n } catch (e) {\n return false;\n }\n }\n JsvArray_Check.sig = "ie";\n function JsvArray_Get(arr, idx) {\n try {\n const result = arr[idx];\n if (result === void 0 && !(idx in arr)) {\n return Module.error;\n }\n return result;\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsvArray_Get.sig = "eei";\n function JsvArray_Set(arr, idx, val) {\n try {\n arr[idx] = val;\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n JsvArray_Set.sig = "ieie";\n function JsvArray_Delete(arr, idx) {\n try {\n if (idx < 0 || idx >= arr.length) {\n return Module.error;\n }\n return arr.splice(idx, 1)[0];\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsvArray_Delete.sig = "eei";\n function JsvArray_Push(arr, obj) {\n return arr.push(obj);\n }\n JsvArray_Push.sig = "iee";\n function JsvArray_Extend(arr, vals) {\n arr.push(...vals);\n }\n JsvArray_Extend.sig = "vee";\n function JsvArray_Insert(arr, idx, value2) {\n try {\n arr.splice(idx, 0, value2);\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n JsvArray_Insert.sig = "ieie";\n function JsvArray_ShallowCopy(arr) {\n try {\n return "slice" in arr ? arr.slice() : Array.from(arr);\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsvArray_ShallowCopy.sig = "ee";\n function JsvArray_slice(obj, length, start2, stop2, step) {\n try {\n let result;\n if (step === 1 && obj.slice) {\n result = obj.slice(start2, stop2);\n } else {\n result = Array.from({ length }, (_2, i2) => obj[start2 + i2 * step]);\n }\n return result;\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsvArray_slice.sig = "eeiiii";\n function JsvArray_slice_assign(obj, slicelength, start2, stop2, step, values_length, values) {\n try {\n let jsvalues = [];\n for (let i2 = 0; i2 < values_length; i2++) {\n const ref = _python2js(HEAPU32[(values >>> 2) + i2 >>> 0]);\n if (ref === Module.error) {\n return -1;\n }\n jsvalues.push(ref);\n }\n if (step === 1) {\n obj.splice(start2, slicelength, ...jsvalues);\n } else {\n if (values !== 0) {\n for (let i2 = 0; i2 < slicelength; i2++) {\n obj.splice(start2 + i2 * step, 1, jsvalues[i2]);\n }\n } else {\n for (let i2 = slicelength - 1; i2 >= 0; i2--) {\n obj.splice(start2 + i2 * step, 1);\n }\n }\n }\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n JsvArray_slice_assign.sig = "ieiiiiii";\n function JsvObject_New() {\n return {};\n }\n JsvObject_New.sig = "e";\n function JsvObject_SetAttr(obj, attr, value2) {\n try {\n obj[attr] = value2;\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n JsvObject_SetAttr.sig = "ieee";\n function JsvObject_Entries(obj) {\n try {\n return Object.entries(obj);\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsvObject_Entries.sig = "ee";\n function JsvObject_Keys(obj) {\n try {\n return Object.keys(obj);\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsvObject_Keys.sig = "ee";\n function JsvObject_Values(obj) {\n try {\n return Object.values(obj);\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsvObject_Values.sig = "ee";\n function JsvObject_toString(obj) {\n try {\n if (hasMethod(obj, "toString")) {\n return obj.toString();\n }\n return Object.prototype.toString.call(obj);\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsvObject_toString.sig = "ee";\n function JsvObject_CallMethod(obj, meth, args2) {\n try {\n return obj[meth](...args2);\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsvObject_CallMethod.sig = "eeee";\n function JsvObject_CallMethod_NoArgs(obj, meth) {\n try {\n return obj[meth]();\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsvObject_CallMethod_NoArgs.sig = "eee";\n function JsvObject_CallMethod_OneArg(obj, meth, arg2) {\n try {\n return obj[meth](arg2);\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsvObject_CallMethod_OneArg.sig = "eeee";\n function JsvObject_CallMethod_TwoArgs(obj, meth, arg1, arg2) {\n try {\n return obj[meth](arg1, arg2);\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsvObject_CallMethod_TwoArgs.sig = "eeeee";\n function JsvFunction_Check(obj) {\n try {\n return typeof obj === "function";\n } catch (e) {\n return false;\n }\n }\n JsvFunction_Check.sig = "ie";\n function JsvFunction_CallBound(func2, this_, args2) {\n try {\n return Function.prototype.apply.apply(func2, [this_, args2]);\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsvFunction_CallBound.sig = "eeee";\n function JsvFunction_Call_OneArg(func2, arg2) {\n try {\n return func2(arg2);\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsvFunction_Call_OneArg.sig = "eee";\n function JsvFunction_Construct(func2, args2) {\n try {\n return Reflect.construct(func2, args2);\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsvFunction_Construct.sig = "eee";\n function JsvPromise_Check(obj) {\n try {\n return isPromise(obj);\n } catch (e) {\n return false;\n }\n }\n JsvPromise_Check.sig = "ie";\n function JsvPromise_Resolve(obj) {\n try {\n return Promise.resolve(obj);\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsvPromise_Resolve.sig = "ee";\n function jslib_init_buffers_js() {\n try {\n const dtypes_str = Array.from("bBhHiIqQfd").join(String.fromCharCode(0));\n const dtypes_ptr = stringToNewUTF8(dtypes_str);\n const dtypes_map = Object.fromEntries(Object.entries(dtypes_str).map(([idx, val]) => [val, dtypes_ptr + +idx]));\n const buffer_datatype_map = /* @__PURE__ */ new Map([["Int8Array", [dtypes_map["b"], 1, true]], ["Uint8Array", [dtypes_map["B"], 1, true]], ["Uint8ClampedArray", [dtypes_map["B"], 1, true]], ["Int16Array", [dtypes_map["h"], 2, true]], ["Uint16Array", [dtypes_map["H"], 2, true]], ["Int32Array", [dtypes_map["i"], 4, true]], ["Uint32Array", [dtypes_map["I"], 4, true]], ["Float32Array", [dtypes_map["f"], 4, true]], ["Float64Array", [dtypes_map["d"], 8, true]], ["BigInt64Array", [dtypes_map["q"], 8, true]], ["BigUint64Array", [dtypes_map["Q"], 8, true]], ["DataView", [dtypes_map["B"], 1, false]], ["ArrayBuffer", [dtypes_map["B"], 1, false]]]);\n Module.get_buffer_datatype = function(jsobj) {\n return buffer_datatype_map.get(jsobj.constructor.name) || [0, 0, false];\n };\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n jslib_init_buffers_js.sig = "i";\n function JsvBuffer_assignToPtr(buf, ptr2) {\n try {\n Module.HEAPU8.set(bufferAsUint8Array(buf), ptr2);\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n JsvBuffer_assignToPtr.sig = "iei";\n function JsvBuffer_assignFromPtr(buf, ptr2) {\n try {\n bufferAsUint8Array(buf).set(Module.HEAPU8.subarray(ptr2, ptr2 + buf.byteLength));\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n JsvBuffer_assignFromPtr.sig = "iei";\n function JsvBuffer_readFromFile(buf, fd) {\n try {\n let uint8_buf = bufferAsUint8Array(buf);\n let stream = Module.FS.streams[fd];\n Module.FS.read(stream, uint8_buf, 0, uint8_buf.byteLength);\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n JsvBuffer_readFromFile.sig = "iei";\n function JsvBuffer_writeToFile(buf, fd) {\n try {\n let uint8_buf = bufferAsUint8Array(buf);\n let stream = Module.FS.streams[fd];\n Module.FS.write(stream, uint8_buf, 0, uint8_buf.byteLength);\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n JsvBuffer_writeToFile.sig = "iei";\n function JsvBuffer_intoFile(buf, fd) {\n try {\n let uint8_buf = bufferAsUint8Array(buf);\n let stream = Module.FS.streams[fd];\n Module.FS.write(stream, uint8_buf, 0, uint8_buf.byteLength, void 0, true);\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n JsvBuffer_intoFile.sig = "iei";\n function JsvGenerator_Check(obj) {\n try {\n return getTypeTag(obj) === "[object Generator]";\n } catch (e) {\n return false;\n }\n }\n JsvGenerator_Check.sig = "ie";\n function JsvAsyncGenerator_Check(obj) {\n try {\n return getTypeTag(obj) === "[object AsyncGenerator]";\n } catch (e) {\n return false;\n }\n }\n JsvAsyncGenerator_Check.sig = "ie";\n function JsvError_Throw(e) {\n throw e;\n }\n JsvError_Throw.sig = "ve";\n function Jsv_less_than(a, b2) {\n try {\n return !!(a < b2);\n } catch (e) {\n return false;\n }\n }\n Jsv_less_than.sig = "iee";\n function Jsv_less_than_equal(a, b2) {\n try {\n return !!(a <= b2);\n } catch (e) {\n return false;\n }\n }\n Jsv_less_than_equal.sig = "iee";\n function Jsv_equal(a, b2) {\n try {\n return !!(a === b2);\n } catch (e) {\n return false;\n }\n }\n Jsv_equal.sig = "iee";\n function Jsv_not_equal(a, b2) {\n try {\n return !!(a !== b2);\n } catch (e) {\n return false;\n }\n }\n Jsv_not_equal.sig = "iee";\n function Jsv_greater_than(a, b2) {\n try {\n return !!(a > b2);\n } catch (e) {\n return false;\n }\n }\n Jsv_greater_than.sig = "iee";\n function Jsv_greater_than_equal(a, b2) {\n try {\n return !!(a >= b2);\n } catch (e) {\n return false;\n }\n }\n Jsv_greater_than_equal.sig = "iee";\n function JsvMap_New() {\n try {\n return /* @__PURE__ */ new Map();\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsvMap_New.sig = "e";\n function JsvLiteralMap_New() {\n try {\n return new API.LiteralMap();\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsvLiteralMap_New.sig = "e";\n function JsvMap_Set(map, key, val) {\n try {\n map.set(key, val);\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n JsvMap_Set.sig = "ieee";\n function JsvSet_New() {\n try {\n return /* @__PURE__ */ new Set();\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n JsvSet_New.sig = "e";\n function JsvSet_Add(set, val) {\n try {\n set.add(val);\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n JsvSet_Add.sig = "iee";\n function _python2js_addto_postprocess_list(list, parent, key, value2) {\n list.push([parent, key, value2]);\n }\n _python2js_addto_postprocess_list.sig = "veeei";\n function _python2js_handle_postprocess_list(list, cache) {\n for (const [parent, key, ptr2] of list) {\n let val = cache.get(ptr2);\n if (parent.constructor.name === "LiteralMap") {\n parent.set(key, val);\n } else {\n parent[key] = val;\n }\n }\n }\n _python2js_handle_postprocess_list.sig = "vee";\n function _python2js_ascii(ptr2, len) {\n try {\n if (len >= 64) {\n let decoder = Module._asciiTextDecoder;\n if (!decoder) {\n decoder = Module._asciiTextDecoder = new TextDecoder("latin1");\n }\n return decoder.decode(Module.HEAPU8.subarray(ptr2, ptr2 + len));\n }\n let jsstr = "";\n for (let i2 = 0; i2 < len; ++i2) {\n jsstr += String.fromCharCode(HEAPU8[(ptr2 >>> 0) + i2 >>> 0]);\n }\n return jsstr;\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n _python2js_ascii.sig = "eii";\n function _python2js_ucs1(ptr2, len) {\n try {\n let jsstr = "";\n for (let i2 = 0; i2 < len; ++i2) {\n jsstr += String.fromCharCode(HEAPU8[(ptr2 >>> 0) + i2 >>> 0]);\n }\n return jsstr;\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n _python2js_ucs1.sig = "eii";\n function _python2js_ucs2(ptr2, len) {\n try {\n let jsstr = "";\n for (let i2 = 0; i2 < len; ++i2) {\n jsstr += String.fromCharCode(HEAPU16[(ptr2 >>> 1) + i2 >>> 0]);\n }\n return jsstr;\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n _python2js_ucs2.sig = "eii";\n function _python2js_ucs4(ptr2, len) {\n try {\n let jsstr = "";\n for (let i2 = 0; i2 < len; ++i2) {\n jsstr += String.fromCodePoint(HEAPU32[(ptr2 >>> 2) + i2 >>> 0]);\n }\n return jsstr;\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n _python2js_ucs4.sig = "eii";\n function _python2js_add_to_cache(cache, pyparent, jsparent) {\n try {\n cache.set(pyparent, jsparent);\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n _python2js_add_to_cache.sig = "ieie";\n function _python2js_cache_lookup(cache, pyparent) {\n return cache.get(pyparent) || Module.error;\n }\n _python2js_cache_lookup.sig = "eei";\n function _JsObject_Set_js(obj, key, value2) {\n try {\n if (key in obj) {\n return -2;\n }\n obj[key] = value2;\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n _JsObject_Set_js.sig = "ieee";\n function _JsArray_PushEntry_helper(array, key, value2) {\n try {\n array.push([key, value2]);\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n _JsArray_PushEntry_helper.sig = "ieee";\n function _JsArray_PostProcess_helper(jscontext, array) {\n try {\n return jscontext.dict_converter(array);\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n _JsArray_PostProcess_helper.sig = "eee";\n function python2js__default_converter_js(jscontext, object) {\n try {\n let proxy2 = Module.pyproxy_new(object);\n try {\n return jscontext.default_converter(proxy2, jscontext.converter, jscontext.cacheConversion);\n } finally {\n proxy2.destroy();\n }\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n python2js__default_converter_js.sig = "eei";\n function python2js__eager_converter_js(jscontext, object) {\n try {\n if (jscontext.eager_visited.has(object)) {\n return Module.novalue;\n }\n jscontext.eager_visited.add(object);\n const proxy2 = Module.pyproxy_new(object);\n try {\n return jscontext.eager_converter(proxy2, jscontext.converter, jscontext.cacheConversion);\n } finally {\n proxy2.destroy();\n }\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n python2js__eager_converter_js.sig = "eei";\n function python2js_custom__create_jscontext(context, cache, dict_converter, default_converter, eager_converter) {\n try {\n const jscontext = {};\n if (dict_converter) {\n jscontext.dict_converter = dict_converter;\n }\n if (default_converter) {\n jscontext.default_converter = default_converter;\n jscontext.cacheConversion = function(input, output) {\n if (!API.isPyProxy(input)) {\n throw new TypeError("The first argument to cacheConversion must be a PyProxy.");\n }\n const input_ptr = Module.PyProxy_getPtr(input);\n cache.set(input_ptr, output);\n };\n }\n if (eager_converter) {\n jscontext.eager_converter = eager_converter;\n jscontext.eager_visited = /* @__PURE__ */ new Set();\n }\n if (default_converter || eager_converter) {\n jscontext.converter = function(x2) {\n if (!API.isPyProxy(x2)) {\n return x2;\n }\n const ptr2 = Module.PyProxy_getPtr(x2);\n let res;\n try {\n res = __python2js(context, ptr2);\n } catch (e) {\n API.fatal_error(e);\n }\n if (res === Module.error) {\n _pythonexc2js();\n }\n return res;\n };\n }\n return jscontext;\n } catch (e) {\n Module.handle_js_error(e);\n return Module.error;\n }\n errNoRet();\n }\n python2js_custom__create_jscontext.sig = "eieeee";\n function destroy_proxies_js(proxies_id) {\n try {\n for (const proxy2 of proxies_id) {\n proxy2.destroy();\n }\n } catch (e) {\n Module.handle_js_error(e);\n return -1;\n }\n return 0;\n }\n destroy_proxies_js.sig = "ie";\n function pyodide_js_init() {\n "use strict";\n (() => {\n var Qr = Object.create;\n var tt = Object.defineProperty;\n var Xr = Object.getOwnPropertyDescriptor;\n var en = Object.getOwnPropertyNames;\n var tn = Object.getPrototypeOf, rn = Object.prototype.hasOwnProperty;\n var a = (t, e) => tt(t, "name", { value: e, configurable: true }), A2 = ((t) => typeof require < "u" ? require : typeof Proxy < "u" ? new Proxy(t, { get: (e, r) => (typeof require < "u" ? require : e)[r] }) : t)(function(t) {\n if (typeof require < "u") return require.apply(this, arguments);\n throw Error(\'Dynamic require of "\' + t + \'" is not supported\');\n });\n var nn = (t, e, r, n) => {\n if (e && typeof e == "object" || typeof e == "function") for (let o2 of en(e)) !rn.call(t, o2) && o2 !== r && tt(t, o2, { get: () => e[o2], enumerable: !(n = Xr(e, o2)) || n.enumerable });\n return t;\n };\n var M2 = (t, e, r) => (r = t != null ? Qr(tn(t)) : {}, nn(e || !t || !t.__esModule ? tt(r, "default", { value: t, enumerable: true }) : r, t));\n function on(t) {\n return !isNaN(parseFloat(t)) && isFinite(t);\n }\n a(on, "_isNumber");\n function j2(t) {\n return t.charAt(0).toUpperCase() + t.substring(1);\n }\n a(j2, "_capitalize");\n function rt(t) {\n return function() {\n return this[t];\n };\n }\n a(rt, "_getter");\n var V2 = ["isConstructor", "isEval", "isNative", "isToplevel"], J2 = ["columnNumber", "lineNumber"], q2 = ["fileName", "functionName", "source"], an = ["args"], sn = ["evalOrigin"], he2 = V2.concat(J2, q2, an, sn);\n function T2(t) {\n if (t) for (var e = 0; e < he2.length; e++) t[he2[e]] !== void 0 && this["set" + j2(he2[e])](t[he2[e]]);\n }\n a(T2, "StackFrame");\n T2.prototype = { getArgs: a(function() {\n return this.args;\n }, "getArgs"), setArgs: a(function(t) {\n if (Object.prototype.toString.call(t) !== "[object Array]") throw new TypeError("Args must be an Array");\n this.args = t;\n }, "setArgs"), getEvalOrigin: a(function() {\n return this.evalOrigin;\n }, "getEvalOrigin"), setEvalOrigin: a(function(t) {\n if (t instanceof T2) this.evalOrigin = t;\n else if (t instanceof Object) this.evalOrigin = new T2(t);\n else throw new TypeError("Eval Origin must be an Object or StackFrame");\n }, "setEvalOrigin"), toString: a(function() {\n var t = this.getFileName() || "", e = this.getLineNumber() || "", r = this.getColumnNumber() || "", n = this.getFunctionName() || "";\n return this.getIsEval() ? t ? "[eval] (" + t + ":" + e + ":" + r + ")" : "[eval]:" + e + ":" + r : n ? n + " (" + t + ":" + e + ":" + r + ")" : t + ":" + e + ":" + r;\n }, "toString") };\n T2.fromString = a(function(e) {\n var r = e.indexOf("("), n = e.lastIndexOf(")"), o2 = e.substring(0, r), i2 = e.substring(r + 1, n).split(","), s2 = e.substring(n + 1);\n if (s2.indexOf("@") === 0) var l = /@(.+?)(?::(\\d+))?(?::(\\d+))?$/.exec(s2, ""), u = l[1], d = l[2], p2 = l[3];\n return new T2({ functionName: o2, args: i2 || void 0, fileName: u, lineNumber: d || void 0, columnNumber: p2 || void 0 });\n }, "StackFrame$$fromString");\n for ($2 = 0; $2 < V2.length; $2++) T2.prototype["get" + j2(V2[$2])] = rt(V2[$2]), T2.prototype["set" + j2(V2[$2])] = /* @__PURE__ */ (function(t) {\n return function(e) {\n this[t] = !!e;\n };\n })(V2[$2]);\n var $2;\n for (W2 = 0; W2 < J2.length; W2++) T2.prototype["get" + j2(J2[W2])] = rt(J2[W2]), T2.prototype["set" + j2(J2[W2])] = /* @__PURE__ */ (function(t) {\n return function(e) {\n if (!on(e)) throw new TypeError(t + " must be a Number");\n this[t] = Number(e);\n };\n })(J2[W2]);\n var W2;\n for (H2 = 0; H2 < q2.length; H2++) T2.prototype["get" + j2(q2[H2])] = rt(q2[H2]), T2.prototype["set" + j2(q2[H2])] = /* @__PURE__ */ (function(t) {\n return function(e) {\n this[t] = String(e);\n };\n })(q2[H2]);\n var H2, be2 = T2;\n function ln() {\n var t = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m, e = /^(eval@)?(\\[native code])?$/;\n return { parse: a(function(n) {\n if (n.stack && n.stack.match(t)) return this.parseV8OrIE(n);\n if (n.stack) return this.parseFFOrSafari(n);\n throw new Error("Cannot parse given Error object");\n }, "ErrorStackParser$$parse"), extractLocation: a(function(n) {\n if (n.indexOf(":") === -1) return [n];\n var o2 = /(.+?)(?::(\\d+))?(?::(\\d+))?$/, i2 = o2.exec(n.replace(/[()]/g, ""));\n return [i2[1], i2[2] || void 0, i2[3] || void 0];\n }, "ErrorStackParser$$extractLocation"), parseV8OrIE: a(function(n) {\n var o2 = n.stack.split(`\n`).filter(function(i2) {\n return !!i2.match(t);\n }, this);\n return o2.map(function(i2) {\n i2.indexOf("(eval ") > -1 && (i2 = i2.replace(/eval code/g, "eval").replace(/(\\(eval at [^()]*)|(,.*$)/g, ""));\n var s2 = i2.replace(/^\\s+/, "").replace(/\\(eval code/g, "(").replace(/^.*?\\s+/, ""), l = s2.match(/ (\\(.+\\)$)/);\n s2 = l ? s2.replace(l[0], "") : s2;\n var u = this.extractLocation(l ? l[1] : s2), d = l && s2 || void 0, p2 = ["eval", "<anonymous>"].indexOf(u[0]) > -1 ? void 0 : u[0];\n return new be2({ functionName: d, fileName: p2, lineNumber: u[1], columnNumber: u[2], source: i2 });\n }, this);\n }, "ErrorStackParser$$parseV8OrIE"), parseFFOrSafari: a(function(n) {\n var o2 = n.stack.split(`\n`).filter(function(i2) {\n return !i2.match(e);\n }, this);\n return o2.map(function(i2) {\n if (i2.indexOf(" > eval") > -1 && (i2 = i2.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, ":$1")), i2.indexOf("@") === -1 && i2.indexOf(":") === -1) return new be2({ functionName: i2 });\n var s2 = /((.*".+"[^@]*)?[^@]*)(?:@)/, l = i2.match(s2), u = l && l[1] ? l[1] : void 0, d = this.extractLocation(i2.replace(s2, ""));\n return new be2({ functionName: u, fileName: d[0], lineNumber: d[1], columnNumber: d[2], source: i2 });\n }, this);\n }, "ErrorStackParser$$parseFFOrSafari") };\n }\n a(ln, "ErrorStackParser");\n var cn = new ln();\n var nt = cn;\n function jt(t) {\n if (typeof t == "string") t = new Error(t);\n else if (t && typeof t == "object" && t.name === "ExitStatus") {\n let e = t.status;\n t = new te2(t.message), t.status = e;\n } else if (typeof t != "object" || t === null || typeof t.stack != "string" || typeof t.message != "string") {\n let e = API.getTypeTag(t), r = `A value of type ${typeof t} with tag ${e} was thrown as an error!`;\n try {\n r += `\nString interpolation of the thrown value gives """${t}""".`;\n } catch {\n r += `\nString interpolation of the thrown value fails.`;\n }\n try {\n r += `\nThe thrown value\'s toString method returns """${t.toString()}""".`;\n } catch {\n r += `\nThe thrown value\'s toString method fails.`;\n }\n t = new Error(r);\n }\n return t;\n }\n a(jt, "ensureCaughtObjectIsError");\n var ot = class extends Error {\n static {\n a(this, "CppException");\n }\n constructor(e, r, n) {\n let o2 = Module.getCppExceptionThrownObjectFromWebAssemblyException(n);\n r || (r = `The exception is an object of type ${e} at address ${o2} which does not inherit from std::exception`), super(r), this.ty = e;\n }\n get name() {\n return `${this.constructor.name} ${this.ty}`;\n }\n }, un = WebAssembly.Exception, dn = a((t) => t instanceof un, "isWasmException");\n function zt(t) {\n let [e, r] = Module.getExceptionMessage(t);\n return new ot(e, r, t);\n }\n a(zt, "convertCppException");\n Tests.convertCppException = zt;\n var Wt = false;\n API.fatal_error = function(t) {\n if (t && t.pyodide_fatal_error) return;\n if (Wt) {\n console.error("Recursive call to fatal_error. Inner error was:"), console.error(t);\n return;\n }\n if (t instanceof re2) throw t;\n typeof t == "number" || dn(t) ? t = zt(t) : t = jt(t), t.pyodide_fatal_error = true, Wt = true;\n let e = t instanceof te2;\n e || (console.error("Pyodide has suffered a fatal error. Please report this to the Pyodide maintainers."), console.error("The cause of the fatal error was:"), API.inTestHoist ? (console.error(t.toString()), console.error(t.stack)) : console.error(t));\n try {\n e || _dump_traceback();\n let n = `Pyodide already ${e ? "exited" : "fatally failed"} and can no longer be used.`;\n for (let o2 of Reflect.ownKeys(API.public_api)) typeof o2 == "string" && o2.startsWith("_") || o2 === "version" || Object.defineProperty(API.public_api, o2, { enumerable: true, configurable: true, get: a(() => {\n throw new Error(n);\n }, "get") });\n API.on_fatal && API.on_fatal(t);\n } catch (r) {\n console.error("Another error occurred while handling the fatal error:"), console.error(r);\n }\n throw t;\n };\n API.maybe_fatal_error = function(t) {\n API._skip_unwind_fatal_error && t === "unwind" || API.fatal_error(t);\n };\n var at = [];\n API.capture_stderr = function() {\n at = [], Module.FS.createDevice("/dev", "capture_stderr", null, (t) => at.push(t)), Module.FS.closeStream(2), Module.FS.open("/dev/capture_stderr", 1);\n };\n API.restore_stderr = function() {\n return Module.FS.closeStream(2), Module.FS.unlink("/dev/capture_stderr"), Module.FS.open("/dev/stderr", 1), UTF8ArrayToString(new Uint8Array(at));\n };\n API.fatal_loading_error = function(...t) {\n let e = t.join(" ");\n if (_PyErr_Occurred()) {\n API.capture_stderr(), _PyErr_Print();\n let r = API.restore_stderr();\n e += `\n` + r;\n }\n throw new Pe2(e);\n };\n function it(t) {\n if (!t) return false;\n let e = t.fileName || "";\n if (e.includes("wasm-function")) return true;\n if (!e.includes("pyodide.asm.mjs")) return false;\n let r = t.functionName || "";\n return r.startsWith("Object.") && (r = r.slice(7)), API.public_api && r in API.public_api && r !== "PythonError" ? (t.functionName = r, false) : true;\n }\n a(it, "isPyodideFrame");\n function Ht(t) {\n return it(t) && t.functionName === "new_error";\n }\n a(Ht, "isErrorStart");\n Module.handle_js_error = function(t) {\n if (t && t.pyodide_fatal_error) throw t;\n if (t instanceof R2) return;\n let e = false;\n t instanceof z2 && (e = _restore_sys_last_exception(t.__error_address));\n let r, n;\n try {\n r = nt.parse(t);\n } catch {\n n = true;\n }\n if (n && (t = jt(t)), !e) {\n let o2 = _JsProxy_create(t);\n _set_error(o2), _Py_DecRef(o2);\n }\n if (!n) {\n if (Ht(r[0]) || Ht(r[1])) for (; it(r[0]); ) r.shift();\n for (let o2 of r) {\n if (it(o2)) break;\n let i2 = stringToNewUTF8(o2.functionName || "???"), s2 = stringToNewUTF8(o2.fileName || "???.js");\n __PyTraceback_Add(i2, s2, o2.lineNumber), _free(i2), _free(s2);\n }\n }\n };\n var z2 = class extends Error {\n static {\n a(this, "PythonError");\n }\n constructor(e, r, n) {\n let o2 = Error.stackTraceLimit;\n Error.stackTraceLimit = 1 / 0, super(r), Error.stackTraceLimit = o2, this.type = e, this.__error_address = n;\n }\n };\n API.PythonError = z2;\n var R2 = class extends Error {\n static {\n a(this, "_PropagatePythonError");\n }\n constructor() {\n super("If you are seeing this message, an internal Pyodide error has occurred. Please report it to the Pyodide maintainers.");\n }\n };\n Module._PropagatePythonError = R2;\n function yn(t) {\n Object.defineProperty(t.prototype, "name", { value: t.name });\n }\n a(yn, "setName");\n var Pe2 = class extends Error {\n static {\n a(this, "FatalPyodideError");\n }\n }, te2 = class extends Error {\n static {\n a(this, "Exit");\n }\n }, re2 = class extends Error {\n static {\n a(this, "NoGilError");\n }\n };\n [R2, Pe2, te2, z2, re2].forEach(yn);\n API.NoGilError = re2;\n API.errorConstructors = new Map([EvalError, RangeError, ReferenceError, SyntaxError, TypeError, URIError, globalThis.DOMException, globalThis.AssertionError, globalThis.SystemError].filter((t) => t).map((t) => [t.name, t]));\n API.deserializeError = function(t, e, r) {\n let n = API.errorConstructors.get(t) || Error, o2 = new n(e);\n return API.errorConstructors.has(t) || (o2.name = t), o2.message = e, o2.stack = r, o2;\n };\n function pn(t) {\n let e = 0, r = t.length, n = new Uint32Array(r), o2 = 0;\n for (let l = 0; l < r; l++) {\n let u = t.charCodeAt(l), d;\n if (u >= 55296 && u <= 56319) {\n let p2 = t.charCodeAt(l + 1);\n p2 >= 56320 && p2 <= 57343 ? (d = (u - 55296) * 1024 + (p2 - 56320) + 65536, l++) : d = u;\n } else d = u;\n n[o2++] = d, e = d > e ? d : e;\n }\n let i2 = _PyUnicode_New(o2, e);\n if (i2 === 0) throw new R2();\n let s2 = _PyUnicode_Data(i2);\n if (e > 65535) for (let l = 0; l < o2; l++) HEAPU32[(s2 >>> 2) + l >>> 0] = n[l];\n else if (e > 255) for (let l = 0; l < o2; l++) HEAPU16[(s2 >>> 1) + l >>> 0] = n[l];\n else for (let l = 0; l < o2; l++) HEAPU8[(s2 >>> 0) + l >>> 0] = n[l];\n return i2;\n }\n a(pn, "js2python_string");\n function fn(t) {\n let e = t, r = 0;\n for (t < 0 && (t = -t), t <<= BigInt(1); t; ) r++, t >>= BigInt(32);\n let n = stackSave(), o2 = stackAlloc(r * 4);\n t = e;\n for (let l = 0; l < r; l++) HEAPU32[(o2 >>> 2) + l >>> 0] = Number(t & BigInt(4294967295)), t >>= BigInt(32);\n let i2 = __PyLong_FromByteArray(o2, r * 4, true, true);\n stackRestore(n);\n let s2 = __js2python_bigint(i2);\n return _Py_DecRef(i2), s2;\n }\n a(fn, "js2python_bigint");\n function ne2(t) {\n let e = mn(t);\n if (e === 0) throw new R2();\n return e;\n }\n a(ne2, "js2python_convertImmutable");\n Module.js2python_convertImmutable = ne2;\n function mn(t) {\n let e = typeof t;\n if (e === "string") return pn(t);\n if (e === "number") return Number.isSafeInteger(t) ? _PyLong_FromDouble(t) : _PyFloat_FromDouble(t);\n if (e === "bigint") return fn(t);\n if (t === void 0) return __js2python_none();\n if (t === null) return __js2python_null();\n if (t === true) return __js2python_true();\n if (t === false) return __js2python_false();\n if (API.isPyProxy(t)) {\n let { props: r, shared: n } = Module.PyProxy_getAttrs(t);\n return r.roundtrip ? _JsProxy_create(t) : __js2python_pyproxy(n.ptr);\n }\n }\n a(mn, "js2python_convertImmutableInner");\n function gn(t, e) {\n let r = _PyList_New(t.length);\n if (r === 0) return 0;\n let n = 0;\n try {\n e.cache.set(t, r);\n for (let o2 = 0; o2 < t.length; o2++) {\n if (n = Se2(t[o2], e), _Py_IncRef(n), _PyList_SetItem(r, o2, n) === -1) throw new R2();\n _Py_DecRef(n), n = 0;\n }\n } catch (o2) {\n throw _Py_DecRef(n), _Py_DecRef(r), o2;\n }\n return r;\n }\n a(gn, "js2python_convertList");\n function Gt(t, e, r) {\n let n = _PyDict_New();\n if (n === 0) return 0;\n let o2 = 0, i2 = 0;\n try {\n r.cache.set(t, n);\n for (let [s2, l] of e) {\n if (o2 = ne2(s2), o2 === void 0) {\n let u = s2.constructor && s2.constructor.name || typeof s2;\n throw new Error(`Cannot use key of type ${u} as a key to a Python dict`);\n }\n if (i2 = Se2(l, r), _PyDict_SetItem(n, o2, i2) === -1) throw new R2();\n _Py_DecRef(o2), o2 = 0, _Py_DecRef(i2), i2 = 0;\n }\n } catch (s2) {\n throw _Py_DecRef(o2), _Py_DecRef(i2), _Py_DecRef(n), s2;\n }\n return n;\n }\n a(Gt, "js2python_convertMap");\n function _n(t, e) {\n let r = _PySet_New(0);\n if (r === 0) return 0;\n let n = 0;\n try {\n e.cache.set(t, r);\n for (let o2 of t) {\n if (n = ne2(o2), n === void 0) {\n let s2 = o2.constructor && o2.constructor.name || typeof o2;\n throw new Error(`Cannot use key of type ${s2} as a key to a Python set`);\n }\n if (_PySet_Add(r, n) === -1) throw new R2();\n _Py_DecRef(n), n = 0;\n }\n } catch (o2) {\n throw _Py_DecRef(n), _Py_DecRef(r), o2;\n }\n return r;\n }\n a(_n, "js2python_convertSet");\n function Kt(t, e) {\n if (t.has(1) && t.has(true)) throw new Error(`Cannot faithfully convert ${e} into Python since it contains both 1 and true as keys.`);\n if (t.has(0) && t.has(false)) throw new Error(`Cannot faithfully convert ${e} into Python since it contains both 0 and false as keys.`);\n }\n a(Kt, "checkBoolIntCollision");\n function hn(t, e) {\n let r = getTypeTag(t);\n if (Array.isArray(t) || t === "[object HTMLCollection]" || t === "[object NodeList]") return gn(t, e);\n if (r === "[object Map]" || t instanceof Map) return Kt(t, "Map"), Gt(t, t.entries(), e);\n if (r === "[object Set]" || t instanceof Set) return Kt(t, "Set"), _n(t, e);\n if (r === "[object Object]" && (t.constructor === void 0 || t.constructor.name === "Object")) return Gt(t, Object.entries(t), e);\n if (r === "[object ArrayBuffer]" || ArrayBuffer.isView(t)) {\n let [n, o2] = Module.get_buffer_datatype(t);\n return _JsBuffer_CopyIntoMemoryView(t, t.byteLength, n, o2);\n }\n }\n a(hn, "js2python_convertOther");\n function Se2(t, e) {\n let r = ne2(t);\n if (r !== void 0) return r;\n if (e.depth === 0) return _JsProxy_create(t);\n if (r = e.cache.get(t), r !== void 0) return _Py_IncRef(r), r;\n e.depth--;\n try {\n if (r = hn(t, e), r !== void 0) return r;\n if (!e.defaultConverter) return _JsProxy_create(t);\n let n = e.defaultConverter(t, e.converter, e.cacheConversion);\n return r = ne2(n), API.isPyProxy(n) && Module.pyproxy_destroy(n, "", false), r !== void 0 ? r : _JsProxy_create(n);\n } finally {\n e.depth++;\n }\n }\n a(Se2, "js2python_convert_with_context");\n function bn(t, { depth: e, defaultConverter: r }) {\n let n = { cache: /* @__PURE__ */ new Map(), depth: e, defaultConverter: r, converter: a((o2) => Module.pyproxy_new(Se2(o2, n)), "converter"), cacheConversion(o2, i2) {\n if (API.isPyProxy(i2)) n.cache.set(o2, Module.PyProxy_getPtr(i2));\n else throw new Error("Second argument should be a PyProxy!");\n } };\n return Se2(t, n);\n }\n a(bn, "js2python_convert");\n Module.js2python_convert = bn;\n Module.processBufferFormatString = function(t, e = "") {\n if (t.length > 2) throw new Error(`Expected format string to have length <= 2, got \'${t}\'.` + e);\n let r = t.slice(-1), n = t.slice(0, -1), o2;\n switch (n) {\n case "!":\n case ">":\n o2 = true;\n break;\n case "<":\n case "@":\n case "=":\n case "":\n o2 = false;\n break;\n default:\n throw new Error(`Unrecognized alignment character ${n}.` + e);\n }\n let i2;\n switch (r) {\n case "b":\n i2 = Int8Array;\n break;\n case "s":\n case "p":\n case "c":\n case "B":\n case "?":\n i2 = Uint8Array;\n break;\n case "h":\n i2 = Int16Array;\n break;\n case "H":\n i2 = Uint16Array;\n break;\n case "i":\n case "l":\n case "n":\n i2 = Int32Array;\n break;\n case "I":\n case "L":\n case "N":\n case "P":\n i2 = Uint32Array;\n break;\n case "q":\n if (globalThis.BigInt64Array === void 0) throw new Error("BigInt64Array is not supported on this browser." + e);\n i2 = BigInt64Array;\n break;\n case "Q":\n if (globalThis.BigUint64Array === void 0) throw new Error("BigUint64Array is not supported on this browser." + e);\n i2 = BigUint64Array;\n break;\n case "f":\n i2 = Float32Array;\n break;\n case "d":\n i2 = Float64Array;\n break;\n case "e":\n throw new Error("Javascript has no Float16 support.");\n default:\n throw new Error(`Unrecognized format character \'${r}\'.` + e);\n }\n return [i2, o2];\n };\n Module.python2js_buffer_1d_contiguous = function(t, e, r) {\n let n = e * r;\n return HEAP8.slice(t, t + n).buffer;\n };\n Module.python2js_buffer_1d_noncontiguous = function(t, e, r, n, o2) {\n let i2 = o2 * n, s2 = new Uint8Array(i2);\n for (let l = 0; l < n; ++l) {\n let u = t + l * e;\n r >= 0 && (u = HEAPU32[(u >>> 2) + 0 >>> 0] + r), s2.set(HEAP8.subarray(u >>> 0, u + o2 >>> 0), l * o2);\n }\n return s2.buffer;\n };\n Module._python2js_buffer_recursive = function(t, e, r) {\n let { shape: n, strides: o2, ndim: i2, converter: s2, itemsize: l, suboffsets: u } = r, d = HEAPU32[(n >>> 2) + e >>> 0], p2 = HEAP32[(o2 >>> 2) + e >>> 0], v2 = -1;\n if (i2 === 0) return s2(Module.python2js_buffer_1d_contiguous(t, l, 1));\n if (u !== 0 && (v2 = HEAP32[(u >>> 2) + e >>> 0]), e === i2 - 1) {\n let g;\n return p2 === l && v2 < 0 ? g = Module.python2js_buffer_1d_contiguous(t, p2, d) : g = Module.python2js_buffer_1d_noncontiguous(t, p2, v2, d, l), s2(g);\n }\n let P2 = [];\n for (let g = 0; g < d; ++g) {\n let k2 = t + g * p2;\n v2 >= 0 && (curptr = HEAPU32[(curptr >>> 2) + 0 >>> 0] + v2), P2.push(Module._python2js_buffer_recursive(k2, e + 1, r));\n }\n return P2;\n };\n Module.get_converter = function(t, e) {\n let r = UTF8ToString(t), [n, o2] = Module.processBufferFormatString(r);\n switch (r.slice(-1)) {\n case "s":\n let d = new TextDecoder("utf8", { ignoreBOM: true });\n return (p2) => d.decode(p2);\n case "?":\n return (p2) => Array.from(new Uint8Array(p2), (v2) => !!v2);\n }\n if (!o2) return (d) => new n(d);\n let s2, l;\n switch (e) {\n case 2:\n s2 = "getUint16", l = "setUint16";\n break;\n case 4:\n s2 = "getUint32", l = "setUint32";\n break;\n case 8:\n s2 = "getFloat64", l = "setFloat64";\n break;\n default:\n throw new Error(`Unexpected size ${e}`);\n }\n function u(d) {\n let p2 = new DataView(d), v2 = p2[s2].bind(p2), P2 = p2[l].bind(p2);\n for (let g = 0; g < p2.byteLength; g += e) P2(g, v2(g, true), false);\n return d;\n }\n return a(u, "swapFunc"), (d) => new n(u(d));\n };\n function Pn(t) {\n try {\n return t instanceof S2;\n } catch {\n return false;\n }\n }\n a(Pn, "isPyProxy");\n API.isPyProxy = Pn;\n globalThis.FinalizationRegistry ? Module.finalizationRegistry = new FinalizationRegistry(({ ptr: t, cache: e }) => {\n e && (e.leaked = true, er(e));\n try {\n _check_gil();\n let r = validSuspender.value;\n validSuspender.value = false, _Py_DecRef(t), validSuspender.value = r;\n } catch (r) {\n API.fatal_error(r);\n }\n }) : Module.finalizationRegistry = { register() {\n }, unregister() {\n } };\n var st = /* @__PURE__ */ new Map();\n Module.pyproxy_alloc_map = st;\n var Pt, St;\n Module.enable_pyproxy_allocation_tracing = function() {\n Pt = a(function(t) {\n st.set(t, Error().stack);\n }, "trace_pyproxy_alloc"), St = a(function(t) {\n st.delete(t);\n }, "trace_pyproxy_dealloc");\n };\n Module.disable_pyproxy_allocation_tracing = function() {\n Pt = a(function(t) {\n }, "trace_pyproxy_alloc"), St = a(function(t) {\n }, "trace_pyproxy_dealloc");\n };\n Module.disable_pyproxy_allocation_tracing();\n var Zt = /* @__PURE__ */ Symbol("pyproxy.attrs");\n function Sn(t, e) {\n _check_gil();\n let r = validSuspender.value;\n validSuspender.value = false;\n try {\n return _pyproxy_getflags(t, e);\n } finally {\n validSuspender.value = r;\n }\n }\n a(Sn, "pyproxy_getflags");\n function ae2(t, { flags: e, cache: r, props: n, shared: o2, gcRegister: i2, jsonAdaptor: s2 } = {}) {\n i2 === void 0 && (i2 = true);\n let l = e !== void 0 ? e : Sn(t, !!s2);\n l === -1 && _pythonexc2js();\n let u = l & 8192, d = l & 32768, p2 = l & 1 << 17, v2 = Module.getPyProxyClass(l), P2;\n l & 256 ? (P2 = a(function() {\n }, "target"), Object.setPrototypeOf(P2, v2.prototype), delete P2.length, delete P2.name, P2.prototype = void 0) : P2 = Object.create(v2.prototype);\n let g = !!o2;\n o2 || (r || (r = { map: /* @__PURE__ */ new Map(), json_adaptor_map: /* @__PURE__ */ new Map(), refcnt: 0 }), r.refcnt++, o2 = { ptr: t, cache: r, flags: l, promise: void 0, destroyed_msg: void 0, gcRegistered: false }, _Py_IncRef(t)), n = { isBound: !!n?.isBound, captureThis: !!n?.captureThis, boundArgs: n?.boundArgs ?? [], boundThis: n?.boundThis, roundtrip: !!n?.roundtrip };\n let k2;\n d ? k2 = C2 : u ? k2 = Dn : p2 ? k2 = Rn : k2 = E2;\n let B2 = new Proxy(P2, k2);\n !g && i2 && Qt(o2), g || Pt(B2);\n let N2 = { shared: o2, props: n };\n return P2[Zt] = N2, B2;\n }\n a(ae2, "pyproxy_new");\n Module.pyproxy_new = ae2;\n function Qt(t) {\n let { ptr: e, cache: r } = t, n = { ptr: e, cache: r };\n t.gcRegistered = true, Module.finalizationRegistry.register(t, n, t);\n }\n a(Qt, "gc_register_proxy");\n Module.gc_register_proxy = Qt;\n function He(t) {\n return t[Zt];\n }\n a(He, "_getAttrsQuiet");\n Module.PyProxy_getAttrsQuiet = He;\n function F2(t) {\n let e = He(t);\n if (!e.shared.ptr) throw new Error(e.shared.destroyed_msg);\n return e;\n }\n a(F2, "_getAttrs");\n Module.PyProxy_getAttrs = F2;\n function _2(t) {\n return F2(t).shared.ptr;\n }\n a(_2, "_getPtr");\n function w2(t) {\n return Object.getPrototypeOf(t).$$flags;\n }\n a(w2, "_getFlags");\n function Xt(t) {\n return !!(w2(t) & 98304);\n }\n a(Xt, "isJsonAdaptor");\n function Vt(t, e, r) {\n let { captureThis: n, boundArgs: o2, boundThis: i2, isBound: s2 } = F2(t).props;\n return n ? s2 ? [i2].concat(o2, r) : [e].concat(r) : s2 ? o2.concat(r) : r;\n }\n a(Vt, "_adjustArgs");\n var Jt = /* @__PURE__ */ new Map();\n Module.getPyProxyClass = function(t) {\n let e = [[1, lt], [2, Y2], [4, G2], [8, U2], [16, ut], [32, yt], [2048, pt], [512, dt2], [1024, ft], [4096, mt], [64, ht], [128, bt], [256, Be], [8192, gt], [16384, _t]], r = Jt.get(t);\n if (r) return r;\n let n = {};\n for (let [l, u] of e) t & l && Object.assign(n, Object.getOwnPropertyDescriptors(u.prototype));\n (t & 8192 || t & 2) && Object.assign(n, Object.getOwnPropertyDescriptors(ct.prototype)), n.constructor = Object.getOwnPropertyDescriptor(S2.prototype, "constructor"), Object.assign(n, Object.getOwnPropertyDescriptors({ $$flags: t }));\n let o2 = t & 256 ? nr : rr, i2 = Object.create(o2, n);\n function s2() {\n }\n return a(s2, "NewPyProxyClass"), s2.prototype = i2, Jt.set(t, s2), s2;\n };\n Module.PyProxy_getPtr = _2;\n var qt = "This borrowed attribute proxy was automatically destroyed in the process of destroying the proxy it was borrowed from. Try using the \'copy\' method.";\n function er(t) {\n if (t && (t.refcnt--, !t.leaked && t.refcnt === 0)) {\n for (let e of t.map.values()) Module.pyproxy_destroy(e, qt, true);\n for (let e of t.json_adaptor_map.values()) Module.pyproxy_destroy(e, qt, true);\n }\n }\n a(er, "pyproxy_decref_cache");\n function vn(t, e) {\n if (e = e || "Object has already been destroyed", API.debug_ffi) {\n let r = t.type, n;\n try {\n n = t.toString();\n } catch (o2) {\n if (o2.pyodide_fatal_error) throw o2;\n }\n e += `\nThe object was of type "${r}" and `, n ? e += `had repr "${n}"` : e += "an error was raised when trying to generate its repr";\n } else e += "\\nFor more information about the cause of this error, use `pyodide.setDebug(true)`";\n return e;\n }\n a(vn, "generateDestroyedMessage");\n Module.pyproxy_destroy = function(t, e, r) {\n let { shared: n, props: o2 } = He(t);\n if (!n.ptr || !r && o2.roundtrip) return;\n n.destroyed_msg = vn(t, e);\n let i2 = n.ptr;\n n.ptr = 0, n.gcRegistered && Module.finalizationRegistry.unregister(n), er(n.cache);\n try {\n _check_gil();\n let s2 = validSuspender.value;\n validSuspender.value = false, _Py_DecRef(i2), St(t), validSuspender.value = s2;\n } catch (s2) {\n API.fatal_error(s2);\n }\n };\n function xe(t, e, r) {\n let n = e.length, o2 = Object.keys(r), i2 = Object.values(r), s2 = o2.length;\n e.push(...i2);\n let l;\n try {\n _check_gil();\n let u = validSuspender.value;\n validSuspender.value = false, l = __pyproxy_apply(t, e, n, o2, s2), validSuspender.value = u;\n } catch (u) {\n API.maybe_fatal_error(u);\n return;\n }\n if (l === Module.error && _pythonexc2js(), l && l.type === "coroutine" && l._ensure_future) {\n _check_gil();\n let u = validSuspender.value;\n validSuspender.value = false;\n let d = __iscoroutinefunction(t);\n validSuspender.value = u, d && l._ensure_future();\n }\n return l;\n }\n a(xe, "callPyObjectKwargs");\n async function we2(t, e, r) {\n if (!Module.jspiSupported) throw new Error("WebAssembly stack switching not supported in this JavaScript runtime");\n let n = e.length, o2 = Object.keys(r), i2 = Object.values(r), s2 = o2.length;\n e.push(...i2), _Py_IncRef(t), await new Promise((d) => API.scheduleCallback(d, 0));\n let l, u = _malloc(4);\n try {\n enterTask(), _check_gil();\n let d = validSuspender.value;\n validSuspender.value = false, l = await Module.promisingApply(t, e, n, o2, s2, u), validSuspender.value = d;\n } catch (d) {\n API.fatal_error(d);\n }\n try {\n if (l = l[0], l === Module.error && (_PyErr_SetRaisedException(HEAPU32[u / 4 >>> 0]), _pythonexc2js()), l && l.type === "coroutine" && l._ensure_future) {\n _check_gil();\n let d = validSuspender.value;\n validSuspender.value = false;\n let p2 = __iscoroutinefunction(t);\n validSuspender.value = d, p2 && l._ensure_future();\n }\n return l;\n } finally {\n _free(u), _Py_DecRef(t);\n }\n }\n a(we2, "callPyObjectKwargsPromising");\n Module.callPyObjectMaybePromising = async function(t, e) {\n return Module.jspiSupported ? await we2(t, e, {}) : xe(t, e, {});\n };\n Module.callPyObject = function(t, e) {\n return xe(t, e, {});\n };\n var tr = Symbol.dispose ?? /* @__PURE__ */ Symbol("dispose"), S2 = class t {\n static {\n a(this, "PyProxy");\n }\n static [Symbol.hasInstance](e) {\n return [t, or].some((r) => Function.prototype[Symbol.hasInstance].call(r, e));\n }\n constructor() {\n throw new TypeError("PyProxy is not a constructor");\n }\n get [Symbol.toStringTag]() {\n return "PyProxy";\n }\n get type() {\n let e = _2(this);\n return __pyproxy_type(e);\n }\n toString() {\n let e = _2(this), r;\n try {\n _check_gil();\n let n = validSuspender.value;\n validSuspender.value = false, r = __pyproxy_repr(e), validSuspender.value = n;\n } catch (n) {\n API.fatal_error(n);\n }\n return r === Module.error && _pythonexc2js(), r;\n }\n destroy(e = {}) {\n e = Object.assign({ message: "", destroyRoundtrip: true }, e);\n let { message: r, destroyRoundtrip: n } = e;\n Module.pyproxy_destroy(this, r, n);\n }\n [tr]() {\n this.destroy();\n }\n copy() {\n let e = F2(this);\n return ae2(e.shared.ptr, { flags: w2(this), cache: e.shared.cache, props: e.props });\n }\n toJs({ depth: e = -1, pyproxies: r = void 0, create_pyproxies: n = true, dict_converter: o2 = void 0, default_converter: i2 = void 0, eager_converter: s2 = void 0 } = {}) {\n let l = _2(this), u, d;\n n ? r ? d = r : d = [] : d = Module.error;\n try {\n _check_gil();\n let p2 = validSuspender.value;\n validSuspender.value = false, u = _python2js_custom(l, e, d, o2 ?? Module.error, i2 ?? Module.error, s2 ?? Module.error), validSuspender.value = p2;\n } catch (p2) {\n API.fatal_error(p2);\n }\n return u === Module.error && _pythonexc2js(), u;\n }\n }, rr = S2.prototype;\n Tests.Function = Function;\n var nr = Object.create(Function.prototype, Object.getOwnPropertyDescriptors(rr));\n function or() {\n }\n a(or, "PyProxyFunction");\n or.prototype = nr;\n var Ae2 = class extends S2 {\n static {\n a(this, "PyProxyWithLength");\n }\n static [Symbol.hasInstance](e) {\n return API.isPyProxy(e) && !!(w2(e) & 1);\n }\n }, lt = class {\n static {\n a(this, "PyLengthMethods");\n }\n get length() {\n let e = _2(this), r;\n try {\n _check_gil();\n let n = validSuspender.value;\n validSuspender.value = false, r = _PyObject_Size(e), validSuspender.value = n;\n } catch (n) {\n API.fatal_error(n);\n }\n return r === -1 && _pythonexc2js(), r;\n }\n }, Ie2 = class extends S2 {\n static {\n a(this, "PyProxyWithGet");\n }\n static [Symbol.hasInstance](e) {\n return API.isPyProxy(e) && !!(w2(e) & 2);\n }\n }, ct = class {\n static {\n a(this, "PyAsJsonAdaptorMethods");\n }\n asJsJson() {\n let { shared: e, props: r } = F2(this), n = w2(this);\n return n & 8192 ? n |= 65536 : n |= 32768, ae2(e.ptr, { shared: e, flags: n, props: r });\n }\n }, Y2 = class {\n static {\n a(this, "PyGetItemMethods");\n }\n get(e) {\n let { shared: r } = F2(this), n;\n try {\n _check_gil();\n let o2 = validSuspender.value;\n validSuspender.value = false, n = __pyproxy_getitem(r.ptr, e, r.cache.json_adaptor_map, Xt(this)), validSuspender.value = o2;\n } catch (o2) {\n API.fatal_error(o2);\n }\n if (n === Module.error) if (_PyErr_Occurred()) _pythonexc2js();\n else return;\n return n;\n }\n asJsJson() {\n throw new Error("Should not happen");\n }\n }, Ee2 = class extends S2 {\n static {\n a(this, "PyProxyWithSet");\n }\n static [Symbol.hasInstance](e) {\n return API.isPyProxy(e) && !!(w2(e) & 4);\n }\n }, G2 = class {\n static {\n a(this, "PySetItemMethods");\n }\n set(e, r) {\n let n = _2(this), o2;\n try {\n _check_gil();\n let i2 = validSuspender.value;\n validSuspender.value = false, o2 = __pyproxy_setitem(n, e, r), validSuspender.value = i2;\n } catch (i2) {\n API.fatal_error(i2);\n }\n o2 === -1 && _pythonexc2js();\n }\n delete(e) {\n let r = _2(this), n;\n try {\n _check_gil();\n let o2 = validSuspender.value;\n validSuspender.value = false, n = __pyproxy_delitem(r, e), validSuspender.value = o2;\n } catch (o2) {\n API.fatal_error(o2);\n }\n n === -1 && _pythonexc2js();\n }\n }, ke2 = class extends S2 {\n static {\n a(this, "PyProxyWithHas");\n }\n static [Symbol.hasInstance](e) {\n return API.isPyProxy(e) && !!(w2(e) & 8);\n }\n }, U2 = class {\n static {\n a(this, "PyContainsMethods");\n }\n has(e) {\n let r = _2(this), n;\n try {\n _check_gil();\n let o2 = validSuspender.value;\n validSuspender.value = false, n = __pyproxy_contains(r, e), validSuspender.value = o2;\n } catch (o2) {\n API.fatal_error(o2);\n }\n return n === -1 && _pythonexc2js(), n === 1;\n }\n };\n function* wn(t, e, r, n) {\n let o2 = [];\n try {\n for (; ; ) {\n _check_gil();\n let i2 = validSuspender.value;\n validSuspender.value = false;\n let s2 = __pyproxy_iter_next(t, r, n);\n if (validSuspender.value = i2, s2 === Module.error) break;\n yield s2, !n && API.isPyProxy(s2) && o2.push(s2);\n }\n } catch (i2) {\n API.fatal_error(i2);\n } finally {\n Module.finalizationRegistry.unregister(e), _Py_DecRef(t);\n }\n try {\n o2.forEach((i2) => Module.pyproxy_destroy(i2, "This borrowed proxy was automatically destroyed when an iterator was exhausted."));\n } catch {\n }\n _PyErr_Occurred() && _pythonexc2js();\n }\n a(wn, "iter_helper");\n var Ne2 = class extends S2 {\n static {\n a(this, "PyIterable");\n }\n static [Symbol.hasInstance](e) {\n return API.isPyProxy(e) && !!(w2(e) & 48);\n }\n }, ut = class {\n static {\n a(this, "PyIterableMethods");\n }\n [Symbol.iterator]() {\n let { shared: e } = F2(this), r = {}, n;\n try {\n _check_gil();\n let i2 = validSuspender.value;\n validSuspender.value = false, n = _PyObject_GetIter(e.ptr), validSuspender.value = i2;\n } catch (i2) {\n API.fatal_error(i2);\n }\n n === 0 && _pythonexc2js();\n let o2 = wn(n, r, e.cache.json_adaptor_map, Xt(this));\n return Module.finalizationRegistry.register(o2, { ptr: n }, r), o2;\n }\n };\n async function* xn(t, e) {\n try {\n for (; ; ) {\n let r;\n try {\n _check_gil();\n let n = validSuspender.value;\n if (validSuspender.value = false, r = __pyproxy_aiter_next(t), validSuspender.value = n, r === Module.error) break;\n } catch (n) {\n API.fatal_error(n);\n }\n try {\n yield await r;\n } catch (n) {\n if (n && typeof n == "object" && n.type === "StopAsyncIteration") return;\n throw n;\n } finally {\n r.destroy();\n }\n }\n } finally {\n Module.finalizationRegistry.unregister(e), _Py_DecRef(t);\n }\n _PyErr_Occurred() && _pythonexc2js();\n }\n a(xn, "aiter_helper");\n var Oe2 = class extends S2 {\n static {\n a(this, "PyAsyncIterable");\n }\n static [Symbol.hasInstance](e) {\n return API.isPyProxy(e) && !!(w2(e) & 1536);\n }\n }, dt2 = class {\n static {\n a(this, "PyAsyncIterableMethods");\n }\n [Symbol.asyncIterator]() {\n let e = _2(this), r = {}, n;\n try {\n _check_gil();\n let i2 = validSuspender.value;\n validSuspender.value = false, n = _PyObject_GetAIter(e), validSuspender.value = i2;\n } catch (i2) {\n API.fatal_error(i2);\n }\n n === 0 && _pythonexc2js();\n let o2 = xn(n, r);\n return Module.finalizationRegistry.register(o2, { ptr: n }, r), o2;\n }\n }, Te = class extends S2 {\n static {\n a(this, "PyIterator");\n }\n static [Symbol.hasInstance](e) {\n return API.isPyProxy(e) && !!(w2(e) & 32);\n }\n }, yt = class {\n static {\n a(this, "PyIteratorMethods");\n }\n [Symbol.iterator]() {\n return this;\n }\n next(e = void 0) {\n let r, n;\n try {\n _check_gil();\n let o2 = validSuspender.value;\n validSuspender.value = false, r = __pyproxyGen_Send(_2(this), e), validSuspender.value = o2;\n } catch (o2) {\n API.fatal_error(o2);\n }\n return r === Module.error && _pythonexc2js(), r;\n }\n }, De = class extends S2 {\n static {\n a(this, "PyGenerator");\n }\n static [Symbol.hasInstance](e) {\n return API.isPyProxy(e) && !!(w2(e) & 2048);\n }\n }, pt = class {\n static {\n a(this, "PyGeneratorMethods");\n }\n throw(e) {\n let r;\n try {\n _check_gil();\n let n = validSuspender.value;\n validSuspender.value = false, r = __pyproxyGen_throw(_2(this), e), validSuspender.value = n;\n } catch (n) {\n API.fatal_error(n);\n }\n return r === Module.error && _pythonexc2js(), r;\n }\n return(e) {\n let r;\n try {\n _check_gil();\n let n = validSuspender.value;\n validSuspender.value = false, r = __pyproxyGen_return(_2(this), e), validSuspender.value = n;\n } catch (n) {\n API.fatal_error(n);\n }\n return r === Module.error && _pythonexc2js(), r;\n }\n }, Me = class extends S2 {\n static {\n a(this, "PyAsyncIterator");\n }\n static [Symbol.hasInstance](e) {\n return API.isPyProxy(e) && !!(w2(e) & 1024);\n }\n }, ft = class {\n static {\n a(this, "PyAsyncIteratorMethods");\n }\n [Symbol.asyncIterator]() {\n return this;\n }\n async next(e = void 0) {\n let r;\n try {\n _check_gil();\n let o2 = validSuspender.value;\n validSuspender.value = false, r = __pyproxyGen_asend(_2(this), e), validSuspender.value = o2;\n } catch (o2) {\n API.fatal_error(o2);\n }\n r === Module.error && _pythonexc2js();\n let n;\n try {\n n = await r;\n } catch (o2) {\n if (o2 && typeof o2 == "object" && o2.type === "StopAsyncIteration") return { done: true, value: n };\n throw o2;\n } finally {\n r.destroy();\n }\n return { done: false, value: n };\n }\n }, Re2 = class extends S2 {\n static {\n a(this, "PyAsyncGenerator");\n }\n static [Symbol.hasInstance](e) {\n return API.isPyProxy(e) && !!(w2(e) & 4096);\n }\n }, mt = class {\n static {\n a(this, "PyAsyncGeneratorMethods");\n }\n async throw(e) {\n let r;\n try {\n _check_gil();\n let o2 = validSuspender.value;\n validSuspender.value = false, r = __pyproxyGen_athrow(_2(this), e), validSuspender.value = o2;\n } catch (o2) {\n API.fatal_error(o2);\n }\n r === Module.error && _pythonexc2js();\n let n;\n try {\n n = await r;\n } catch (o2) {\n if (o2 && typeof o2 == "object") {\n if (o2.type === "StopAsyncIteration") return { done: true, value: n };\n if (o2.type === "GeneratorExit") return { done: true, value: n };\n }\n throw o2;\n } finally {\n r.destroy();\n }\n return { done: false, value: n };\n }\n async return(e) {\n let r;\n try {\n _check_gil();\n let o2 = validSuspender.value;\n validSuspender.value = false, r = __pyproxyGen_areturn(_2(this)), validSuspender.value = o2;\n } catch (o2) {\n API.fatal_error(o2);\n }\n r === Module.error && _pythonexc2js();\n let n;\n try {\n n = await r;\n } catch (o2) {\n if (o2 && typeof o2 == "object") {\n if (o2.type === "StopAsyncIteration") return { done: true, value: n };\n if (o2.type === "GeneratorExit") return { done: true, value: e };\n }\n throw o2;\n } finally {\n r.destroy();\n }\n return { done: false, value: n };\n }\n }, Fe2 = class extends S2 {\n static {\n a(this, "PySequence");\n }\n static [Symbol.hasInstance](e) {\n return API.isPyProxy(e) && !!(w2(e) & 8192);\n }\n };\n function An(t, e) {\n let r = t.toString(), n = e.toString();\n return r === n ? 0 : r < n ? -1 : 1;\n }\n a(An, "defaultCompareFunc");\n var gt = class {\n static {\n a(this, "PySequenceMethods");\n }\n get [Symbol.isConcatSpreadable]() {\n return true;\n }\n join(e) {\n return Array.prototype.join.call(this, e);\n }\n slice(e, r) {\n return Array.prototype.slice.call(this, e, r);\n }\n lastIndexOf(e, r) {\n return r === void 0 && (r = this.length), Array.prototype.lastIndexOf.call(this, e, r);\n }\n indexOf(e, r) {\n return Array.prototype.indexOf.call(this, e, r);\n }\n forEach(e, r) {\n Array.prototype.forEach.call(this, e, r);\n }\n map(e, r) {\n return Array.prototype.map.call(this, e, r);\n }\n filter(e, r) {\n return Array.prototype.filter.call(this, e, r);\n }\n some(e, r) {\n return Array.prototype.some.call(this, e, r);\n }\n every(e, r) {\n return Array.prototype.every.call(this, e, r);\n }\n reduce(...e) {\n return Array.prototype.reduce.apply(this, e);\n }\n reduceRight(...e) {\n return Array.prototype.reduceRight.apply(this, e);\n }\n at(e) {\n return Array.prototype.at.call(this, e);\n }\n concat(...e) {\n return Array.prototype.concat.apply(this, e);\n }\n includes(e) {\n return this.has(e);\n }\n entries() {\n return Array.prototype.entries.call(this);\n }\n keys() {\n return Array.prototype.keys.call(this);\n }\n values() {\n return Array.prototype.values.call(this);\n }\n find(e, r) {\n return Array.prototype.find.call(this, e, r);\n }\n findIndex(e, r) {\n return Array.prototype.findIndex.call(this, e, r);\n }\n toJSON() {\n return Array.from(this);\n }\n asJsJson() {\n throw new Error("Should not happen");\n }\n }, Le = class extends S2 {\n static {\n a(this, "PyMutableSequence");\n }\n static [Symbol.hasInstance](e) {\n return API.isPyProxy(e) && !!(w2(e) & 8192);\n }\n }, _t = class {\n static {\n a(this, "PyMutableSequenceMethods");\n }\n reverse() {\n return this.$reverse(), this;\n }\n sort(e) {\n let r = API.public_api.pyimport("functools"), n = r.cmp_to_key, o2;\n e ? o2 = e : o2 = An;\n function i2(l, u) {\n return l === void 0 && u === void 0 ? 0 : l === void 0 ? 1 : u === void 0 ? -1 : o2(l, u);\n }\n a(i2, "wrapper");\n let s2;\n try {\n s2 = n(i2), this.$sort.callKwargs({ key: s2 });\n } finally {\n s2?.destroy(), n.destroy(), r.destroy();\n }\n return this;\n }\n splice(e, r, ...n) {\n return r === void 0 && (r = 1 << 30), On(this, e, e + r, n);\n }\n push(...e) {\n for (let r of e) this.append(r);\n return this.length;\n }\n pop() {\n return Yt(this, false);\n }\n shift() {\n return Yt(this, true);\n }\n unshift(...e) {\n return e.forEach((r, n) => {\n this.insert(n, r);\n }), this.length;\n }\n copyWithin(...e) {\n return Array.prototype.copyWithin.apply(this, e), this;\n }\n fill(...e) {\n return Array.prototype.fill.apply(this, e), this;\n }\n };\n function In(t, e) {\n let r = _2(t), n;\n try {\n _check_gil();\n let o2 = validSuspender.value;\n validSuspender.value = false, n = __pyproxy_hasattr(r, e), validSuspender.value = o2;\n } catch (o2) {\n API.fatal_error(o2);\n }\n return n === -1 && _pythonexc2js(), n !== 0;\n }\n a(In, "python_hasattr");\n function En(t, e) {\n let { shared: r } = F2(t), n = r.cache.map, o2;\n try {\n _check_gil();\n let i2 = validSuspender.value;\n validSuspender.value = false, o2 = __pyproxy_getattr(r.ptr, e, n), validSuspender.value = i2;\n } catch (i2) {\n API.fatal_error(i2);\n }\n if (o2 === Module.error) {\n _PyErr_Occurred() && _pythonexc2js();\n return;\n }\n return o2;\n }\n a(En, "python_getattr");\n function kn(t, e, r) {\n let n = _2(t), o2;\n try {\n _check_gil();\n let i2 = validSuspender.value;\n validSuspender.value = false, o2 = __pyproxy_setattr(n, e, r), validSuspender.value = i2;\n } catch (i2) {\n API.fatal_error(i2);\n }\n o2 === -1 && _pythonexc2js();\n }\n a(kn, "python_setattr");\n function Nn(t, e) {\n let r = _2(t), n;\n try {\n _check_gil();\n let o2 = validSuspender.value;\n validSuspender.value = false, n = __pyproxy_delattr(r, e), validSuspender.value = o2;\n } catch (o2) {\n API.fatal_error(o2);\n }\n n === -1 && _pythonexc2js();\n }\n a(Nn, "python_delattr");\n function On(t, e, r, n) {\n let o2 = _2(t), i2;\n try {\n _check_gil();\n let s2 = validSuspender.value;\n validSuspender.value = false, i2 = __pyproxy_slice_assign(o2, e, r, n), validSuspender.value = s2;\n } catch (s2) {\n API.fatal_error(s2);\n }\n return i2 === Module.error && _pythonexc2js(), i2;\n }\n a(On, "python_slice_assign");\n function Yt(t, e) {\n let r = _2(t), n;\n try {\n _check_gil();\n let o2 = validSuspender.value;\n validSuspender.value = false, n = __pyproxy_pop(r, e), validSuspender.value = o2;\n } catch (o2) {\n API.fatal_error(o2);\n }\n return n === Module.error && _pythonexc2js(), n;\n }\n a(Yt, "python_pop");\n var Tn = /* @__PURE__ */ new Set(["name", "length", "caller", "arguments"]);\n function ve2(t, e, r) {\n return t instanceof Function ? e in t && !(Tn.has(e) || r && e === "prototype") : e in t;\n }\n a(ve2, "filteredHasKey");\n var E2 = { isExtensible() {\n return true;\n }, has(t, e) {\n return ve2(t, e, false) ? true : typeof e == "symbol" ? false : (e.startsWith("$") && (e = e.slice(1)), In(t, e));\n }, get(t, e) {\n return typeof e == "symbol" || ve2(t, e, true) ? Reflect.get(t, e) : (e.startsWith("$") && (e = e.slice(1)), En(t, e));\n }, set(t, e, r) {\n let n = Object.getOwnPropertyDescriptor(t, e);\n return n && !n.writable && !n.set ? false : typeof e == "symbol" || ve2(t, e, true) ? Reflect.set(t, e, r) : (e.startsWith("$") && (e = e.slice(1)), kn(t, e, r), true);\n }, deleteProperty(t, e) {\n let r = Object.getOwnPropertyDescriptor(t, e);\n return r && !r.configurable ? false : typeof e == "symbol" || ve2(t, e, true) ? Reflect.deleteProperty(t, e) : (e.startsWith("$") && (e = e.slice(1)), Nn(t, e), true);\n }, ownKeys(t) {\n let e = _2(t), r;\n try {\n _check_gil();\n let n = validSuspender.value;\n validSuspender.value = false, r = __pyproxy_ownKeys(e), validSuspender.value = n;\n } catch (n) {\n API.fatal_error(n);\n }\n return r === Module.error && _pythonexc2js(), r.push(...Reflect.ownKeys(t)), r;\n }, apply(t, e, r) {\n return t.apply(e, r);\n } };\n function oe2(t) {\n return t && typeof t == "object" && t.constructor && t.constructor.name === "PythonError";\n }\n a(oe2, "isPythonError");\n var Dn = { isExtensible() {\n return true;\n }, has(t, e) {\n return typeof e == "string" && /^[0-9]+$/.test(e) ? Number(e) < t.length : E2.has(t, e);\n }, get(t, e) {\n if (e === "length") return t.length;\n if (typeof e == "string" && /^[0-9]+$/.test(e)) try {\n return Y2.prototype.get.call(t, Number(e));\n } catch (r) {\n if (oe2(r) && r.type == "IndexError") return;\n throw r;\n }\n return E2.get(t, e);\n }, set(t, e, r) {\n if (typeof e == "string" && /^[0-9]+$/.test(e)) try {\n return G2.prototype.set.call(t, Number(e), r), true;\n } catch (n) {\n if (oe2(n) && n.type == "IndexError") return false;\n throw n;\n }\n return E2.set(t, e, r);\n }, deleteProperty(t, e) {\n if (typeof e == "string" && /^[0-9]+$/.test(e)) try {\n return G2.prototype.delete.call(t, Number(e)), true;\n } catch (r) {\n if (oe2(r) && r.type == "IndexError") return false;\n throw r;\n }\n return E2.deleteProperty(t, e);\n }, ownKeys(t) {\n let e = E2.ownKeys(t);\n return e.push(...Array.from({ length: t.length }, (r, n) => n.toString())), e.push("length"), e;\n } }, Mn = /* @__PURE__ */ new Set(["copy", "constructor", "$$flags", "toString", "destroy"]), C2 = { isExtensible() {\n return true;\n }, has(t, e) {\n return U2.prototype.has.call(t, e) ? true : typeof e == "string" && /^[0-9]+$/.test(e) ? U2.prototype.has.call(t, Number(e)) : false;\n }, get(t, e) {\n if (typeof e == "symbol" || Mn.has(e)) return Reflect.get(...arguments);\n let r = Y2.prototype.get.call(t, e);\n return r !== void 0 || U2.prototype.has.call(t, e) ? r : typeof e == "string" && /^[0-9]+$/.test(e) ? Y2.prototype.get.call(t, Number(e)) : Reflect.get(...arguments);\n }, set(t, e, r) {\n if (typeof e == "symbol") return false;\n !U2.prototype.has.call(t, e) && typeof e == "string" && /^[0-9]+$/.test(e) && (e = Number(e));\n try {\n return G2.prototype.set.call(t, e, r), true;\n } catch (n) {\n if (oe2(n) && n.type === "KeyError") return false;\n throw n;\n }\n }, deleteProperty(t, e) {\n if (typeof e == "symbol") return false;\n !U2.prototype.has.call(t, e) && typeof e == "string" && /^[0-9]+$/.test(e) && (e = Number(e));\n try {\n return G2.prototype.delete.call(t, e), true;\n } catch (r) {\n if (oe2(r) && r.type === "KeyError") return false;\n throw r;\n }\n }, getOwnPropertyDescriptor(t, e) {\n return C2.has(t, e) ? { configurable: true, enumerable: true, value: C2.get(t, e), writable: true } : void 0;\n }, ownKeys(t) {\n let e = /* @__PURE__ */ new Set();\n return ar(t, e), Array.from(e);\n } };\n function ar(t, e) {\n let r = E2.get(t, "keys")();\n for (let n of r) typeof n == "string" ? e.add(n) : typeof n == "number" && e.add(n.toString());\n r.destroy();\n }\n a(ar, "dictOwnKeysHelper");\n var Rn = { isExtensible() {\n return true;\n }, has(t, e) {\n return E2.has(t, e) ? true : C2.has(t, e);\n }, get(t, e) {\n let r = E2.get(t, e);\n return r !== void 0 || E2.has(t, e) ? r : C2.get(t, e);\n }, set(t, e, r) {\n return E2.has(t, e) ? E2.set(t, e, r) : C2.set(t, e, r);\n }, deleteProperty(t, e) {\n return E2.has(t, e) ? E2.deleteProperty(t, e) : C2.deleteProperty(t, e);\n }, getOwnPropertyDescriptor(t, e) {\n return Reflect.getOwnPropertyDescriptor(t, e) ?? C2.getOwnPropertyDescriptor(t, e);\n }, ownKeys(t) {\n let e = new Set(E2.ownKeys(t));\n return ar(t, e), Array.from(e);\n } }, Ue = class extends S2 {\n static {\n a(this, "PyAwaitable");\n }\n static [Symbol.hasInstance](e) {\n return API.isPyProxy(e) && !!(w2(e) & 64);\n }\n }, ht = class {\n static {\n a(this, "PyAwaitableMethods");\n }\n _ensure_future() {\n let { shared: e } = He(this);\n if (e.promise) return e.promise;\n let r = e.ptr;\n r || F2(this);\n let n, o2, i2 = new Promise((l, u) => {\n n = l, o2 = u;\n }), s2;\n try {\n _check_gil();\n let l = validSuspender.value;\n validSuspender.value = false, s2 = __pyproxy_ensure_future(r, n, o2), validSuspender.value = l;\n } catch (l) {\n API.fatal_error(l);\n }\n return s2 === -1 && _pythonexc2js(), e.promise = i2, this.destroy(), i2;\n }\n then(e, r) {\n return this._ensure_future().then(e, r);\n }\n catch(e) {\n return this._ensure_future().catch(e);\n }\n finally(e) {\n return this._ensure_future().finally(e);\n }\n }, Ce = class extends S2 {\n static {\n a(this, "PyCallable");\n }\n static [Symbol.hasInstance](e) {\n return API.isPyProxy(e) && !!(w2(e) & 256);\n }\n }, Be = class {\n static {\n a(this, "PyCallableMethods");\n }\n apply(e, r) {\n return r = function(...n) {\n return n;\n }.apply(void 0, r), r = Vt(this, e, r), Module.callPyObject(_2(this), r);\n }\n call(e, ...r) {\n return r = Vt(this, e, r), Module.callPyObject(_2(this), r);\n }\n callWithOptions({ relaxed: e, kwargs: r, promising: n }, ...o2) {\n let i2 = {};\n if (r) {\n if (o2.length === 0) throw new TypeError("callWithOptions with \'kwargs: true\' requires at least one argument (the key word argument object)");\n if (i2 = o2.pop(), i2.constructor !== void 0 && i2.constructor.name !== "Object") throw new TypeError("kwargs argument is not an object");\n }\n let s2 = e ? API.pyodide_code.relaxed_call : this;\n return e && o2.unshift(this), (n ? we2 : xe)(_2(s2), o2, i2);\n }\n callKwargs(...e) {\n if (e.length === 0) throw new TypeError("callKwargs requires at least one argument (the key word argument object)");\n let r = e.pop();\n if (r.constructor !== void 0 && r.constructor.name !== "Object") throw new TypeError("kwargs argument is not an object");\n return xe(_2(this), e, r);\n }\n callRelaxed(...e) {\n return API.pyodide_code.relaxed_call(this, ...e);\n }\n callKwargsRelaxed(...e) {\n return API.pyodide_code.relaxed_call.callKwargs(this, ...e);\n }\n callPromising(...e) {\n return we2(_2(this), e, {});\n }\n callPromisingKwargs(...e) {\n if (e.length === 0) throw new TypeError("callKwargs requires at least one argument (the key word argument object)");\n let r = e.pop();\n if (r.constructor !== void 0 && r.constructor.name !== "Object") throw new TypeError("kwargs argument is not an object");\n return we2(_2(this), e, r);\n }\n bind(e, ...r) {\n let { shared: n, props: o2 } = F2(this), { boundArgs: i2, boundThis: s2, isBound: l } = o2, u = e;\n l && (u = s2);\n let d = i2.concat(r);\n return o2 = Object.assign({}, o2, { boundArgs: d, isBound: true, boundThis: u }), ae2(n.ptr, { shared: n, flags: w2(this), props: o2 });\n }\n captureThis() {\n let { props: e, shared: r } = F2(this);\n return e = Object.assign({}, e, { captureThis: true }), ae2(r.ptr, { shared: r, flags: w2(this), props: e });\n }\n };\n Be.prototype.prototype = Function.prototype;\n var Fn = /* @__PURE__ */ new Map([["i8", Int8Array], ["u8", Uint8Array], ["u8clamped", Uint8ClampedArray], ["i16", Int16Array], ["u16", Uint16Array], ["i32", Int32Array], ["u32", Uint32Array], ["i32", Int32Array], ["u32", Uint32Array], ["i64", globalThis.BigInt64Array], ["u64", globalThis.BigUint64Array], ["f32", Float32Array], ["f64", Float64Array], ["dataview", DataView]]), $e = class extends S2 {\n static {\n a(this, "PyBuffer");\n }\n static [Symbol.hasInstance](e) {\n return API.isPyProxy(e) && !!(w2(e) & 128);\n }\n }, bt = class {\n static {\n a(this, "PyBufferMethods");\n }\n getBuffer(e) {\n let r;\n if (e && (r = Fn.get(e), r === void 0)) throw new Error(`Unknown type ${e}`);\n let n = _2(this), o2;\n try {\n _check_gil();\n let O2 = validSuspender.value;\n validSuspender.value = false, o2 = __pyproxy_get_buffer(n), validSuspender.value = O2;\n } catch (O2) {\n API.fatal_error(O2);\n }\n o2 === Module.error && _pythonexc2js();\n let { start_ptr: i2, smallest_ptr: s2, largest_ptr: l, readonly: u, format: d, itemsize: p2, shape: v2, strides: P2, view: g, c_contiguous: k2, f_contiguous: B2 } = o2, N2 = false;\n try {\n let O2 = false;\n r === void 0 && ([r, O2] = Module.processBufferFormatString(d, " In this case, you can pass an explicit type argument."));\n let L2 = parseInt(r.name.replace(/[^0-9]/g, "")) / 8 || 1;\n if (O2 && L2 > 1) throw new Error("JavaScript has no native support for big endian buffers. In this case, you can pass an explicit type argument. For instance, `getBuffer(\'dataview\')` will return a `DataView`which has native support for reading big endian data. Alternatively, toJs will automatically convert the buffer to little endian.");\n let I2 = l - s2;\n if (I2 !== 0 && (i2 % L2 !== 0 || s2 % L2 !== 0 || l % L2 !== 0)) throw new Error(`Buffer does not have valid alignment for a ${r.name}`);\n let c = I2 / L2, y = (i2 - s2) / L2, f2;\n I2 === 0 ? f2 = new r() : f2 = new r(HEAPU32.buffer, s2, c);\n for (let b2 of P2.keys()) P2[b2] /= L2;\n return N2 = true, Object.create(ie2.prototype, Object.getOwnPropertyDescriptors({ offset: y, readonly: u, format: d, itemsize: p2, ndim: v2.length, nbytes: I2, shape: v2, strides: P2, data: f2, c_contiguous: k2, f_contiguous: B2, _view_ptr: g, _released: false }));\n } finally {\n if (!N2) try {\n _check_gil();\n let O2 = validSuspender.value;\n validSuspender.value = false, _PyBuffer_Release(g), _PyMem_Free(g), validSuspender.value = O2;\n } catch (O2) {\n API.fatal_error(O2);\n }\n }\n }\n }, We = class extends S2 {\n static {\n a(this, "PyDict");\n }\n static [Symbol.hasInstance](e) {\n return API.isPyProxy(e) && e.type === "dict";\n }\n }, ie2 = class {\n static {\n a(this, "PyBufferView");\n }\n constructor() {\n throw new TypeError("PyBufferView is not a constructor");\n }\n release() {\n if (!this._released) {\n try {\n _check_gil();\n let e = validSuspender.value;\n validSuspender.value = false, _PyBuffer_Release(this._view_ptr), _PyMem_Free(this._view_ptr), validSuspender.value = e;\n } catch (e) {\n API.fatal_error(e);\n }\n this._released = true, this.data = Module.error;\n }\n }\n [tr]() {\n this.release();\n }\n };\n var ir = { PyProxy: S2, PyProxyWithLength: Ae2, PyProxyWithGet: Ie2, PyProxyWithSet: Ee2, PyProxyWithHas: ke2, PyDict: We, PyIterable: Ne2, PyAsyncIterable: Oe2, PyIterator: Te, PyAsyncIterator: Me, PyGenerator: De, PyAsyncGenerator: Re2, PyAwaitable: Ue, PyCallable: Ce, PyBuffer: $e, PyBufferView: ie2, PythonError: z2, PySequence: Fe2, PyMutableSequence: Le };\n function sr(t) {\n t.id !== "canvas" && console.warn("If you are using canvas element for SDL library, it should have id \'canvas\' to work properly."), Module.canvas = t;\n }\n a(sr, "setCanvas2D");\n function lr() {\n return Module.canvas;\n }\n a(lr, "getCanvas2D");\n function Ln(t) {\n sr(t);\n }\n a(Ln, "setCanvas3D");\n function Un() {\n return lr();\n }\n a(Un, "getCanvas3D");\n var cr = { setCanvas2D: sr, getCanvas2D: lr, setCanvas3D: Ln, getCanvas3D: Un };\n var ur = /* @__PURE__ */ new Map([["INSTALLER", "pyodide.unpackArchive"]]);\n function Cn() {\n if (typeof API < "u" && API !== globalThis.API) return API.runtimeEnv;\n let t = typeof Bun < "u", e = typeof Deno < "u", r = typeof process == "object" && typeof process.versions == "object" && typeof process.versions.node == "string" && !process.browser, n = typeof navigator == "object" && typeof navigator.userAgent == "string" && navigator.userAgent.indexOf("Chrome") === -1 && navigator.userAgent.indexOf("Safari") > -1, o2 = typeof read == "function" && typeof load == "function", i2 = typeof navigator == "object" && navigator.userAgent?.includes("Cloudflare-Workers");\n return Bn({ IN_BUN: t, IN_DENO: e, IN_NODE: r, IN_SAFARI: n, IN_SHELL: o2, IN_WORKERD: i2 });\n }\n a(Cn, "getGlobalRuntimeEnv");\n var h = Cn();\n function Bn(t) {\n let e = t.IN_NODE && typeof module < "u" && module.exports && typeof A2 == "function" && typeof __dirname == "string", r = t.IN_NODE && !e, n = !t.IN_NODE && !t.IN_DENO && !t.IN_BUN, o2 = n && typeof window < "u" && typeof window.document < "u" && typeof document.createElement == "function" && "sessionStorage" in window && typeof globalThis.importScripts != "function", i2 = n && typeof globalThis.WorkerGlobalScope < "u" && typeof globalThis.self < "u" && globalThis.self instanceof globalThis.WorkerGlobalScope;\n if (i2 && $n()) throw new Error("Classic web workers are not supported");\n let s2 = { ...t, IN_BROWSER: n, IN_BROWSER_MAIN_THREAD: o2, IN_BROWSER_WEB_WORKER: i2, IN_NODE_COMMONJS: e, IN_NODE_ESM: r };\n if (!(s2.IN_BROWSER_MAIN_THREAD || s2.IN_BROWSER_WEB_WORKER || s2.IN_NODE || s2.IN_SHELL || s2.IN_WORKERD)) throw new Error(`Cannot determine runtime environment: ${JSON.stringify(s2)}`);\n return s2;\n }\n a(Bn, "calculateDerivedFlags");\n function $n() {\n try {\n return globalThis.importScripts("data:text/javascript,"), true;\n } catch {\n return false;\n }\n }\n a($n, "isClassicWorker");\n function se2() {\n let t = a(() => {\n }, "_resolve"), e = a(() => {\n }, "_reject"), r = new Promise((n, o2) => {\n t = n, e = o2;\n });\n return r.resolve = t, r.reject = e, r;\n }\n a(se2, "createResolvable");\n function je() {\n let t = Promise.resolve();\n async function e() {\n let r = t, n;\n return t = new Promise((o2) => n = o2), await r, n;\n }\n return a(e, "acquireLock"), e;\n }\n a(je, "createLock");\n var Wn = /[-_.]+/g;\n function dr(t) {\n return t.replace(Wn, "-").toLowerCase();\n }\n a(dr, "canonicalizePackageName");\n var Hn = /^[A-Za-z0-9]([A-Za-z0-9._-]*[A-Za-z0-9])?$/;\n function yr(t) {\n return Hn.test(t);\n }\n a(yr, "isValidPackageName");\n var jn = /^.*?([^\\/]*)\\.whl$/;\n function pr(t) {\n let e = jn.exec(t);\n if (e) {\n let r = e[1].toLowerCase().split("-");\n return { name: r[0], version: r[1], fileName: r.join("-") + ".whl" };\n }\n }\n a(pr, "uriToPackageData");\n function fr(t) {\n return btoa(t.match(/\\w{2}/g).map(function(e) {\n return String.fromCharCode(parseInt(e, 16));\n }).join(""));\n }\n a(fr, "base16ToBase64");\n var gr, vt, zn, Ge, Z2;\n async function _r() {\n if (!h.IN_NODE || (gr = (await import("node:url")).default, Ge = await import("node:fs"), Z2 = await import("node:fs/promises"), zn = (await import("node:vm")).default, vt = await import("node:path"), br = vt.sep, typeof A2 < "u")) return;\n let t = Ge, e = await import("node:crypto"), r = await import("ws"), n = await import("node:child_process"), o2 = { fs: t, crypto: e, ws: r, child_process: n };\n globalThis.require = function(i2) {\n return o2[i2];\n };\n }\n a(_r, "initNodeModules");\n function hr(t) {\n return t.includes("://") || t.startsWith("/");\n }\n a(hr, "isAbsolute");\n function Gn(t, e) {\n return vt.resolve(e || ".", t);\n }\n a(Gn, "node_resolvePath");\n function Kn(t, e) {\n return e === void 0 && (e = location), new URL(t, e).toString();\n }\n a(Kn, "browser_resolvePath");\n var le2;\n h.IN_NODE ? le2 = Gn : h.IN_SHELL ? le2 = a((t) => t, "resolvePath") : le2 = Kn;\n var br;\n h.IN_NODE || (br = "/");\n function Vn(t, e) {\n return t.startsWith("file://") && (t = t.slice(7)), t.includes("://") ? { response: fetch(t) } : { binary: Z2.readFile(t).then((r) => new Uint8Array(r.buffer, r.byteOffset, r.byteLength)) };\n }\n a(Vn, "node_getBinaryResponse");\n function Jn(t, e) {\n if (t.startsWith("file://") && (t = t.slice(7)), t.includes("://")) throw new Error("Shell cannot fetch urls");\n return { binary: Promise.resolve(new Uint8Array(readbuffer(t))) };\n }\n a(Jn, "shell_getBinaryResponse");\n function qn(t, e) {\n let r = new URL(t, location);\n return { response: fetch(r, e ? { integrity: e } : {}) };\n }\n a(qn, "browser_getBinaryResponse");\n var ze;\n h.IN_NODE ? ze = Vn : h.IN_SHELL ? ze = Jn : ze = qn;\n async function ce2(t, e) {\n let { response: r, binary: n } = ze(t, e);\n if (n) return n;\n let o2 = await r;\n if (!o2.ok) throw new Error(`Failed to load \'${t}\': request failed.`);\n return new Uint8Array(await o2.arrayBuffer());\n }\n a(ce2, "loadBinaryFile");\n var mr;\n h.IN_NODE ? mr = Yn : mr = a(async (t) => await import(t), "loadScript");\n async function Yn(t) {\n return t.startsWith("file://") && (t = t.slice(7)), t.includes("://") ? await import(t) : await import(gr.pathToFileURL(t).href);\n }\n a(Yn, "nodeLoadScript");\n async function Pr(t) {\n if (h.IN_NODE && t) try {\n await Z2.stat(t);\n } catch {\n await Z2.mkdir(t, { recursive: true });\n }\n }\n a(Pr, "ensureDirNode");\n var ue2 = class {\n constructor(e, r) {\n this._lock = je();\n this.#t = e, this.#e = r;\n }\n static {\n a(this, "DynlibLoader");\n }\n #t;\n #e;\n async loadDynlib(e) {\n let r = await this._lock();\n try {\n let n = this.#e.stackSave(), o2 = this.#e.stringToUTF8OnStack(e);\n try {\n let i2 = this.#e._emscripten_dlopen_promise(o2, 2);\n this.#e.stackRestore(n);\n let s2 = this.#e.getPromise(i2);\n this.#e.promiseMap.free(i2), await s2;\n } catch (i2) {\n let s2 = this.getDLError();\n throw new Error(`Failed to load dynamic library ${e}: ${s2 ?? i2}`);\n }\n } catch (n) {\n throw n && n.message && n.message.includes("need to see wasm magic number") ? new Error(`Failed to load dynamic library ${e} $. We probably just tried to load a linux .so file or something.`) : n;\n } finally {\n r();\n }\n }\n getDLError() {\n let e = this.#e._dlerror();\n return e === 0 ? void 0 : this.#e.UTF8ToString(e, 512).trim();\n }\n async loadDynlibsFromPackage(e, r) {\n for (let n of r) await this.loadDynlib(n);\n }\n };\n if (typeof API < "u" && typeof Module < "u") {\n let t = new ue2(API, Module);\n API.loadDynlib = t.loadDynlib.bind(t);\n }\n var de2 = class {\n static {\n a(this, "Installer");\n }\n #t;\n #e;\n constructor(e, r) {\n this.#t = e, this.#e = new ue2(e, r);\n }\n async install(e, r, n, o2) {\n let i2 = this.#t.package_loader.unpack_buffer.callKwargs({ buffer: e, filename: r, extract_dir: n, metadata: o2, calculate_dynlibs: true });\n await this.#e.loadDynlibsFromPackage({ file_name: r }, i2);\n }\n }, Sr;\n if (typeof API < "u" && typeof Module < "u") {\n let t = new de2(API, Module);\n Sr = t.install.bind(t), API.install = Sr;\n }\n function Zn(t, e, r) {\n t();\n let n;\n try {\n n = r();\n } catch (o2) {\n throw e(), o2;\n }\n return n instanceof Promise ? n.finally(() => e()) : (e(), n);\n }\n a(Zn, "withContext");\n function vr(t, e) {\n return function(r) {\n return function(...n) {\n return Zn(t, e, () => r.apply(this, n));\n };\n };\n }\n a(vr, "createContextWrapper");\n async function Qn(t) {\n await _r();\n let e = await t, r = typeof e == "string" ? JSON.parse(e) : e;\n if (!r.packages) throw new Error("Loaded pyodide lock file does not contain the expected key \'packages\'.");\n if (r.info.abi_version !== API.abiVersion) throw new Error(`Lock file ABI version doesn\'t match Pyodide ABI version.\n lockfile version: ${r.info.abi_version}\n pyodide version: ${API.abiVersion}`);\n API.lockfile = r, API.lockfile_info = r.info, API.lockfile_packages = r.packages, API.lockfile_unvendored_stdlibs_and_test = [], API._import_name_to_package_name = /* @__PURE__ */ new Map();\n for (let i2 of Object.keys(API.lockfile_packages)) {\n let s2 = API.lockfile_packages[i2];\n for (let l of s2.imports) API._import_name_to_package_name.set(l, i2);\n }\n let n = API.config.packages;\n await pe2(n, { messageCallback() {\n } }), await API.bootstrapFinalizedPromise, API.flushPackageManagerBuffers(), API._pyodide._importhook.register_module_not_found_hook(API._import_name_to_package_name), API.package_loader.init_loaded_packages();\n }\n a(Qn, "initializePackageIndex");\n var Xn = "default channel", eo = "pyodide.loadPackage", wt = class {\n constructor(e, r) {\n this.cdnURL = "";\n this.loadedPackages = {};\n this._lock = je();\n this.streamReady = false;\n this.stdoutBuffer = [];\n this.stderrBuffer = [];\n this.defaultChannel = Xn;\n this.#t = e, this.#e = r, this.#r = new de2(e, r), h.IN_NODE ? (this.installBaseUrl = this.#t.config.packageCacheDir ?? this.#t.config.packageBaseUrl, this.cdnURL = this.#t.config.cdnUrl) : this.installBaseUrl = this.#t.config.packageBaseUrl, this.stdout = (n) => {\n if (!this.streamReady) {\n this.stdoutBuffer.push(n);\n return;\n }\n let o2 = this.#e.stackSave();\n try {\n let i2 = this.#e.stringToUTF8OnStack(n);\n this.#e._print_stdout(i2);\n } finally {\n this.#e.stackRestore(o2);\n }\n }, this.stderr = (n) => {\n if (!this.streamReady) {\n this.stderrBuffer.push(n);\n return;\n }\n let o2 = this.#e.stackSave();\n try {\n let i2 = this.#e.stringToUTF8OnStack(n);\n this.#e._print_stderr(i2);\n } finally {\n this.#e.stackRestore(o2);\n }\n };\n }\n static {\n a(this, "PackageManager");\n }\n #t;\n #e;\n #r;\n async loadPackage(e, r = { checkIntegrity: true }) {\n return this.setCallbacks(r.messageCallback, r.errorCallback)(this.loadPackageInner.bind(this))(e, r);\n }\n async loadPackageInner(e, r = { checkIntegrity: true }) {\n let n = /* @__PURE__ */ new Set(), o2 = ro(e), i2 = this.recursiveDependencies(o2);\n for (let [d, { name: p2, normalizedName: v2, channel: P2 }] of i2) {\n let g = this.getLoadedPackageChannel(p2);\n g && (i2.delete(v2), g === P2 || P2 === this.defaultChannel ? this.logStdout(`${p2} already loaded from ${g}`) : this.logStderr(`URI mismatch, attempting to load package ${p2} from ${P2} while it is already loaded from ${g}. To override a dependency, load the custom package first.`));\n }\n if (i2.size === 0) return this.logStdout("No new packages to load"), [];\n let s2 = Array.from(i2.values(), ({ name: d }) => d).sort().join(", "), l = /* @__PURE__ */ new Map(), u = await this._lock();\n try {\n this.logStdout(`Loading ${s2}`);\n for (let [d, p2] of i2) {\n if (this.getLoadedPackageChannel(p2.name)) {\n i2.delete(p2.normalizedName);\n continue;\n }\n p2.installPromise = this.downloadAndInstall(p2, i2, n, l, r.checkIntegrity);\n }\n if (await Promise.all(Array.from(i2.values(), ({ installPromise: d }) => d)), n.size > 0) {\n let d = Array.from(n, (p2) => p2.name).sort().join(", ");\n this.logStdout(`Loaded ${d}`);\n }\n if (l.size > 0) {\n let d = Array.from(l.keys()).sort().join(", ");\n this.logStdout(`Failed to load ${d}`);\n for (let [p2, v2] of l) this.logStderr(`The following error occurred while loading ${p2}:`), this.logStderr(v2.message);\n }\n return await this.#t.bootstrapFinalizedPromise, this.#t.importlib.invalidate_caches(), Array.from(n, to);\n } finally {\n u();\n }\n }\n addPackageToLoad(e, r) {\n if (!yr(e)) throw new Error(`\'${e}\' is not a valid package name or URL. loadPackage() takes an exact package name or a wheel URL, and micropip.install() handles requirement specifiers such as version constraints or extras.`);\n let n = dr(e);\n if (r.has(n)) return;\n let o2 = this.#t.lockfile_packages[n];\n if (!o2) throw new Error(`No known package with name \'${e}\'`);\n if (r.set(n, { name: o2.name, normalizedName: n, channel: this.defaultChannel, depends: o2.depends, installPromise: void 0, done: se2(), packageData: o2 }), !this.getLoadedPackageChannel(o2.name)) for (let i2 of o2.depends) this.addPackageToLoad(i2, r);\n }\n recursiveDependencies(e) {\n let r = /* @__PURE__ */ new Map();\n for (let n of e) {\n let o2 = pr(n);\n if (o2 === void 0) {\n this.addPackageToLoad(n, r);\n continue;\n }\n let { name: i2, version: s2, fileName: l } = o2, u = n;\n if (r.has(i2) && r.get(i2).channel !== u) {\n this.logStderr(`Loading same package ${i2} from ${u} and ${r.get(i2).channel}`);\n continue;\n }\n r.set(i2, { name: i2, normalizedName: i2, channel: u, depends: [], installPromise: void 0, done: se2(), packageData: { name: i2, version: s2, file_name: l, install_dir: "site", sha256: "", package_type: "package", imports: [], depends: [] } });\n }\n return r;\n }\n async downloadPackage(e, r = true) {\n await Pr(this.installBaseUrl);\n let n, o2, i2;\n if (e.channel === this.defaultChannel) {\n if (!(e.normalizedName in this.#t.lockfile_packages)) throw new Error(`Internal error: no entry for package named ${name}`);\n let l = this.#t.lockfile_packages[e.normalizedName];\n if (n = l.file_name, !hr(n) && !this.installBaseUrl) throw new Error(`Lock file file_name for package "${e.name}" is relative path "${n}" but no packageBaseUrl provided to loadPyodide.`);\n o2 = le2(n, this.installBaseUrl), i2 = "sha256-" + fr(l.sha256);\n } else o2 = e.channel, i2 = void 0;\n r || (i2 = void 0);\n try {\n return await ce2(o2, i2);\n } catch (l) {\n if (!h.IN_NODE || e.channel !== this.defaultChannel || !n || n.startsWith("/")) throw l;\n }\n this.logStdout(`Didn\'t find package ${n} locally, attempting to load from ${this.cdnURL}`);\n let s2 = await ce2(this.cdnURL + n);\n return this.logStdout(`Package ${n} loaded from ${this.cdnURL}, caching the wheel in node_modules for future use.`), await Z2.writeFile(o2, s2), s2;\n }\n async installPackage(e, r) {\n let n = this.#t.lockfile_packages[e.normalizedName];\n n || (n = e.packageData);\n let o2 = n.file_name, i2 = this.#t.package_loader.get_install_dir(n.install_dir);\n await this.#r.install(r, o2, i2, /* @__PURE__ */ new Map([["INSTALLER", eo], ["PYODIDE_SOURCE", e.channel === this.defaultChannel ? "pyodide" : e.channel]]));\n }\n async downloadAndInstall(e, r, n, o2, i2 = true) {\n if (ye[e.name] === void 0) try {\n let s2 = await this.downloadPackage(e, i2), l = e.depends.map((u) => r.has(u) ? r.get(u).done : Promise.resolve());\n await this.#t.bootstrapFinalizedPromise, await Promise.all(l), await this.installPackage(e, s2), n.add(e.packageData), ye[e.name] = e.channel;\n } catch (s2) {\n o2.set(e.name, s2);\n } finally {\n e.done.resolve();\n }\n }\n flushBuffers() {\n this.streamReady = true;\n for (let e of this.stdoutBuffer) this.stdout(e);\n for (let e of this.stderrBuffer) this.stderr(e);\n this.stdoutBuffer = [], this.stderrBuffer = [];\n }\n getLoadedPackageChannel(e) {\n let r = this.loadedPackages[e];\n return r === void 0 ? null : r;\n }\n setCallbacks(e, r) {\n let n = this.stdout, o2 = this.stderr;\n return vr(() => {\n this.stdout = e || n, this.stderr = r || o2;\n }, () => {\n this.stdout = n, this.stderr = o2;\n });\n }\n logStdout(e) {\n this.stdout(e);\n }\n logStderr(e) {\n this.stderr(e);\n }\n };\n function to({ name: t, version: e, file_name: r, package_type: n }) {\n return { name: t, version: e, fileName: r, packageType: n };\n }\n a(to, "filterPackageData");\n function ro(t) {\n return typeof t.toJs == "function" && (t = t.toJs()), Array.isArray(t) || (t = [t]), t;\n }\n a(ro, "toStringArray");\n var pe2, ye;\n if (typeof API < "u" && typeof Module < "u") {\n let t = new wt(API, Module);\n pe2 = t.loadPackage.bind(t), ye = t.loadedPackages, API.flushPackageManagerBuffers = t.flushBuffers.bind(t), API.lockFilePromise && (API.packageIndexReady = Qn(API.lockFilePromise)), API.packageManager = t;\n }\n var wr = "314.0.7";\n var Tt = h.IN_NODE ? A2("node:fs") : void 0, Ir = h.IN_NODE ? A2("node:tty") : void 0;\n function Er(t) {\n try {\n Tt.fsyncSync(t);\n } catch (e) {\n if (e?.code === "EINVAL" || (t === 0 || t === 1 || t === 2) && (e?.code === "ENOTSUP" || e?.code === "EBADF" || e?.code === "EPERM")) return;\n throw e;\n }\n }\n a(Er, "nodeFsync");\n var kr = false, Ve = {}, D2 = {};\n function At(t) {\n Ve[D2.stdin] = t;\n }\n a(At, "_setStdinOps");\n function no(t) {\n Ve[D2.stdout] = t;\n }\n a(no, "_setStdoutOps");\n function oo(t) {\n Ve[D2.stderr] = t;\n }\n a(oo, "_setStderrOps");\n function ao(t) {\n return t && typeof t == "object" && "errno" in t;\n }\n a(ao, "isErrnoError");\n var io = new Int32Array(new WebAssembly.Memory({ shared: true, initial: 1, maximum: 1 }).buffer);\n function so(t) {\n try {\n return Atomics.wait(io, 0, 0, t), true;\n } catch {\n return false;\n }\n }\n a(so, "syncSleep");\n function lo(t) {\n for (; ; ) try {\n return t();\n } catch (e) {\n if (e && e.code === "EAGAIN" && so(100)) continue;\n throw e;\n }\n }\n a(lo, "handleEAGAIN");\n function xr(t, e, r) {\n let n;\n try {\n n = lo(e);\n } catch (o2) {\n throw o2 && o2.code && Module.ERRNO_CODES[o2.code] ? new FS.ErrnoError(Module.ERRNO_CODES[o2.code]) : ao(o2) ? o2 : (console.error(`Error thrown in ${r}:`), console.error(o2), new FS.ErrnoError(29));\n }\n if (n === void 0) throw console.warn(`${r} returned undefined; a correct implementation must return a number`), new FS.ErrnoError(29);\n return n !== 0 && (t.node.timestamp = Date.now()), n;\n }\n a(xr, "readWriteHelper");\n var Ar = a((t, e, r) => API.typedArrayAsUint8Array(t).subarray(e, e + r), "prepareBuffer"), co = { ioctl_tiocgwinsz(t) {\n let { rows: e = 24, columns: r = 80 } = t.devops.getTerminalSize?.() ?? {};\n return [e, r];\n } }, xt = { open: a(function(t) {\n let e = Ve[t.node.rdev];\n if (!e) throw new FS.ErrnoError(43);\n t.devops = e, t.tty = t.devops.isatty ? { ops: co, devops: e } : void 0, t.seekable = false;\n }, "open"), close: a(function(t) {\n t.stream_ops.fsync(t);\n }, "close"), fsync: a(function(t) {\n let e = t.devops;\n e.fsync && e.fsync();\n }, "fsync"), read: a(function(t, e, r, n, o2) {\n return e = Ar(e, r, n), xr(t, () => t.devops.read(e), "read");\n }, "read"), write: a(function(t, e, r, n, o2) {\n return e = Ar(e, r, n), xr(t, () => t.devops.write(e), "write");\n }, "write") };\n function Je() {\n kr && (FS.closeStream(0), FS.closeStream(1), FS.closeStream(2), FS.open("/dev/stdin", 0), FS.open("/dev/stdout", 1), FS.open("/dev/stderr", 1));\n }\n a(Je, "refreshStreams");\n API.initializeStreams = function(t, e, r) {\n let n = FS.createDevice.major++;\n D2.stdin = FS.makedev(n, 0), D2.stdout = FS.makedev(n, 1), D2.stderr = FS.makedev(n, 2), FS.registerDevice(D2.stdin, xt), FS.registerDevice(D2.stdout, xt), FS.registerDevice(D2.stderr, xt), FS.unlink("/dev/stdin"), FS.unlink("/dev/stdout"), FS.unlink("/dev/stderr"), FS.mkdev("/dev/stdin", D2.stdin), FS.mkdev("/dev/stdout", D2.stdout), FS.mkdev("/dev/stderr", D2.stderr), fe2({ stdin: t }), Dt({ batched: e }), Mt({ batched: r }), kr = true, Je();\n };\n function uo() {\n h.IN_NODE ? fe2(new Et(process.stdin)) : fe2({ stdin: a(() => prompt(), "stdin") });\n }\n a(uo, "setDefaultStdin");\n function yo() {\n At(new It()), Je();\n }\n a(yo, "setStdinError");\n function fe2(t = {}) {\n let { stdin: e, error: r, isatty: n, autoEOF: o2, read: i2 } = t, s2 = +!!e + +!!r + +!!i2;\n if (s2 > 1) throw new TypeError("At most one of stdin, read, and error must be provided.");\n if (!e && o2 !== void 0) throw new TypeError("The \'autoEOF\' option can only be used with the \'stdin\' option");\n if (s2 === 0) {\n uo();\n return;\n }\n r && yo(), e && (o2 = o2 === void 0 ? true : o2, At(new kt(e.bind(t), !!n, o2))), i2 && At(t), Je();\n }\n a(fe2, "setStdin");\n function Nr(t, e, r) {\n let n = t, { raw: o2, isatty: i2, batched: s2, write: l } = n;\n if (!o2 && !l && i2) throw new TypeError("Cannot set \'isatty\' to true unless \'raw\' or \'write\' is provided");\n let u = +!!o2 + +!!s2 + +!!l;\n if (u > 1) throw new TypeError("At most one of \'raw\', \'batched\', and \'write\' must be passed");\n u === 0 && (n = r(), { raw: o2, isatty: i2, batched: s2, write: l } = n), o2 && e(new Nt(n)), s2 && e(new Ot(s2.bind(n))), l && e(n), Je();\n }\n a(Nr, "_setStdwrite");\n function po() {\n return h.IN_NODE ? new Ke(process.stdout) : { batched: a((t) => console.log(t), "batched") };\n }\n a(po, "_getStdoutDefaults");\n function fo() {\n return h.IN_NODE ? new Ke(process.stderr) : { batched: a((t) => console.warn(t), "batched") };\n }\n a(fo, "_getStderrDefaults");\n function Dt(t) {\n Nr(t ?? {}, no, po);\n }\n a(Dt, "setStdout");\n function Mt(t) {\n Nr(t ?? {}, oo, fo);\n }\n a(Mt, "setStderr");\n var mo = globalThis.TextEncoder ?? function() {\n }, go = new mo(), It = class {\n static {\n a(this, "ErrorReader");\n }\n read(e) {\n throw new FS.ErrnoError(29);\n }\n }, Et = class {\n static {\n a(this, "NodeReader");\n }\n constructor(e) {\n this.stream = e, this.isatty = Ir.isatty(e.fd);\n }\n read(e) {\n try {\n return Tt.readSync(this.stream.fd, e);\n } catch (r) {\n if (r.toString().includes("EOF")) return 0;\n throw r;\n }\n }\n fsync() {\n Er(this.stream.fd);\n }\n }, kt = class {\n static {\n a(this, "LegacyReader");\n }\n constructor(e, r, n) {\n this.infunc = e, this.isatty = r, this.autoEOF = n, this.index = 0, this.saved = void 0, this.insertEOF = false;\n }\n _getInput() {\n if (this.saved) return this.saved;\n let e = this.infunc();\n if (typeof e == "number") return e;\n if (e != null) {\n if (ArrayBuffer.isView(e)) {\n if (e.BYTES_PER_ELEMENT !== 1) throw console.warn(`Expected BYTES_PER_ELEMENT to be 1, infunc gave ${e.constructor}`), new FS.ErrnoError(29);\n return e;\n }\n if (typeof e == "string") return e.endsWith(`\n`) || (e += `\n`), e;\n if (Object.prototype.toString.call(e) === "[object ArrayBuffer]") return new Uint8Array(e);\n throw console.warn("Expected result to be undefined, null, string, array buffer, or array buffer view"), new FS.ErrnoError(29);\n }\n }\n read(e) {\n if (this.insertEOF) return this.insertEOF = false, 0;\n let r = 0;\n for (; ; ) {\n let n = this._getInput();\n if (typeof n == "number") {\n e[0] = n, e = e.subarray(1), r++;\n continue;\n }\n let o2;\n if (n && n.length > 0) if (typeof n == "string") {\n let { read: i2, written: s2 } = go.encodeInto(n, e);\n this.saved = n.slice(i2), r += s2, o2 = e[s2 - 1], e = e.subarray(s2);\n } else {\n let i2;\n n.length > e.length ? (e.set(n.subarray(0, e.length)), this.saved = n.subarray(e.length), i2 = e.length) : (e.set(n), this.saved = void 0, i2 = n.length), r += i2, o2 = e[i2 - 1], e = e.subarray(i2);\n }\n if (!(n && n.length > 0) || this.autoEOF || e.length === 0) return this.insertEOF = r > 0 && this.autoEOF && o2 !== 10, r;\n }\n }\n fsync() {\n }\n }, Nt = class {\n static {\n a(this, "CharacterCodeWriter");\n }\n constructor(e) {\n this.options = e, this.isatty = !!e.isatty;\n }\n write(e) {\n for (let r of e) this.options.raw(r);\n return e.length;\n }\n getTerminalSize() {\n return this.options.getTerminalSize?.();\n }\n }, Ot = class {\n constructor(e) {\n this.isatty = false;\n this.out = e, this.output = [];\n }\n static {\n a(this, "StringWriter");\n }\n write(e) {\n for (let r of e) r === 10 ? (this.out(UTF8ArrayToString(new Uint8Array(this.output))), this.output = []) : r !== 0 && this.output.push(r);\n return e.length;\n }\n fsync() {\n this.output && this.output.length > 0 && (this.out(UTF8ArrayToString(new Uint8Array(this.output))), this.output = []);\n }\n }, Ke = class {\n static {\n a(this, "NodeWriter");\n }\n constructor(e) {\n this.stream = e, this.isatty = Ir.isatty(e.fd);\n }\n write(e) {\n return Tt.writeSync(this.stream.fd, e);\n }\n fsync() {\n Er(this.stream.fd);\n }\n getTerminalSize() {\n return this.stream;\n }\n };\n var Rt = "sched$" + Math.random().toString(36).slice(2) + "$", X = {}, Or = 0, Q2 = null, Ft = [];\n function _o() {\n if (!h.IN_BROWSER_MAIN_THREAD) return;\n let t = a((e) => {\n if (typeof e.data == "string" && e.data.indexOf(Rt) === 0) {\n let r = +e.data.slice(Rt.length), n = X[r];\n if (!n) return;\n try {\n n();\n } finally {\n delete X[r];\n }\n }\n }, "onGlobalMessage");\n globalThis.addEventListener("message", t, false);\n }\n a(_o, "installPostMessageHandler");\n _o();\n function ho() {\n Q2 || h.IN_SAFARI || h.IN_DENO || h.IN_NODE || typeof globalThis.MessageChannel == "function" && (Q2 = new MessageChannel(), Q2.port1.onmessage = () => {\n let t = Ft.length;\n for (let e = 0; e < t; e++) {\n let r = Ft.shift(), n = X[r];\n if (n) try {\n n();\n } finally {\n delete X[r];\n }\n }\n }, Q2.port1.start?.());\n }\n a(ho, "ensureSharedChannel");\n ho();\n function bo(t) {\n if (h.IN_NODE) setImmediate(t);\n else if (Q2) {\n let e = Or++;\n X[e] = t, Ft.push(e), Q2.port2.postMessage(0);\n } else if (h.IN_BROWSER_MAIN_THREAD && typeof globalThis.postMessage == "function") {\n let e = Or++;\n X[e] = t, globalThis.postMessage(Rt + e, "*");\n } else setTimeout(t, 0);\n }\n a(bo, "scheduleCallbackImmediate");\n function me3(t, e = 0) {\n e <= 2 ? bo(t) : setTimeout(t, e);\n }\n a(me3, "scheduleCallback");\n function Tr(t) {\n return new Promise((e) => me3(e, t));\n }\n a(Tr, "sleep");\n var { get: Po, getOwnPropertyDescriptor: So, ownKeys: vo } = Reflect, wo = a((t) => ({ value: t, enumerable: true, writable: true, configurable: true }), "getPropertyDescriptor"), Mr = /* @__PURE__ */ Symbol(), Dr = "prototype", xo = { deleteProperty: a((t, e) => t.has(e) ? t.delete(e) : delete t[e], "deleteProperty"), get(t, e, r) {\n if (e === Mr) return t;\n let n = t[e];\n return typeof n == "function" && e !== "constructor" && (n = n.bind(t)), n ||= t.get(e), n;\n }, getOwnPropertyDescriptor(t, e) {\n if (t.has(e)) return wo(t.get(e));\n if (e in t) return So(t, e);\n }, has: a((t, e) => t.has(e) || e in t, "has"), ownKeys: a((t) => [...t.keys(), ...vo(t)].filter((e) => ["string", "symbol"].includes(typeof e)), "ownKeys"), set: a((t, e, r) => (t.set(e, r), true), "set") }, Ao = new Proxy(class extends Map {\n static {\n a(this, "LiteralMap");\n }\n constructor(...e) {\n return new Proxy(super(...e), xo);\n }\n }, { get(t, e, ...r) {\n return e !== Dr && e in t[Dr] ? (n, ...o2) => {\n let i2 = n[Mr], s2 = i2[e];\n return typeof s2 == "function" && (s2 = s2.apply(i2, o2)), s2 === i2 ? n : s2;\n } : Po(t, e, ...r);\n } }), Rr = Ao;\n var qe = new FinalizationRegistry((t) => void t());\n function Io(t) {\n let e = new AbortController();\n for (let l of t) if (l.aborted) return e.abort(l.reason), e.signal;\n let r = new WeakRef(e), n = [], o2 = t.length;\n t.forEach((l) => {\n let u = new WeakRef(l);\n function d() {\n r.deref()?.abort(u.deref()?.reason);\n }\n a(d, "abort"), l.addEventListener("abort", d), n.push([u, d]), qe.register(l, () => !--o2 && i2(), l);\n });\n function i2() {\n n.forEach(([l, u]) => {\n let d = l.deref();\n d && (d.removeEventListener("abort", u), qe.unregister(d));\n let p2 = r.deref();\n p2 && (qe.unregister(p2.signal), delete p2.signal.__controller);\n });\n }\n a(i2, "clear");\n let { signal: s2 } = e;\n return qe.register(s2, i2, s2), s2.addEventListener("abort", i2), s2.__controller = e, s2;\n }\n a(Io, "abortSignalAny");\n var Fr = Io;\n API.getExpectedKeys = function() {\n return [null, API.config.jsglobals, API.public_api, API, me3, API, {}];\n };\n var Br = /* @__PURE__ */ Symbol("getAccessorList"), Lr = /* @__PURE__ */ Symbol("getObject");\n function Ye(t, e = []) {\n return new Proxy(t, { get(r, n, o2) {\n if (n === Br) return e;\n if (n === Lr) return r;\n let i2 = Reflect.get(...arguments), s2 = Reflect.getOwnPropertyDescriptor(r, n);\n return s2 && s2.writable === false && !s2.configurable || s2 && s2.set && !s2.get || !["object", "function"].includes(typeof i2) ? i2 : Ye(i2, [...e, n]);\n }, apply(r, n, o2) {\n return n = n?.[Lr] ?? n, Reflect.apply(r, n, o2);\n }, getPrototypeOf() {\n return Ye(Reflect.getPrototypeOf(...arguments), [...e, "[getProtoTypeOf]"]);\n } });\n }\n a(Ye, "makeGlobalsProxy");\n var $r = 1886286592, Ze = 48;\n function Eo(t, e) {\n if (e.length !== 8) throw new Error("Expected 256 bit buffer");\n for (let r = 0; r < 32; r++) e[r] = parseInt(t.slice(r * 8, (r + 1) * 8), 16);\n }\n a(Eo, "encodeBuildId");\n function ko(t) {\n if (t.length !== 8) throw new Error("Expected 256 bit buffer");\n return Array.from(t, (e) => e.toString(16).padStart(8, "0")).join("");\n }\n a(ko, "decodeBuildId");\n function Ur(t, e, r) {\n if (e === r) return;\n if (typeof r == "function" && typeof e != "function") throw console.warn(r, e), new Error(`Expected function at index ${t}`);\n let n = false;\n try {\n n = JSON.stringify(e) === JSON.stringify(r);\n } catch (o2) {\n console.warn(o2);\n }\n if (!n) throw console.warn(r, e), new Error(`Unexpected hiwire entry at index ${t}`);\n }\n a(Ur, "checkEntry");\n var ge2 = 6;\n API.serializeHiwireState = function(t, e) {\n e || (e = Ur);\n let r = [], n = API.getExpectedKeys();\n for (let s2 = 0; s2 < n.length; s2++) {\n let l;\n try {\n l = Module.__hiwire_get(s2);\n } catch {\n throw new Error(`Failed to get value at index ${s2}`);\n }\n Ur(s2, l, n[s2]);\n }\n for (let s2 = n.length; ; s2++) {\n let l;\n try {\n l = Module.__hiwire_get(s2);\n } catch {\n break;\n }\n if (!["object", "function"].includes(typeof l)) throw new Error(`Unexpected object of type ${typeof l} at index ${s2}`);\n if (l === null) {\n r.push(l);\n continue;\n }\n let u;\n try {\n u = l[Br];\n } catch {\n }\n if (u) {\n r.push({ path: u });\n continue;\n }\n if (l === API) {\n r.push({ API: true });\n continue;\n }\n if (l === API.abortSignalAny) {\n r.push({ abortSignalAny: true });\n continue;\n }\n if (t) {\n let d = t(l);\n try {\n JSON.stringify(d);\n } catch {\n throw console.warn(`Serializer returned result that cannot be JSON.stringify\'d at index ${s2}.`), console.warn(" Input: ", l), console.warn(" Output:", d), new Error(`Serializer returned result that cannot be JSON.stringify\'d at index ${s2}.`);\n }\n r.push({ serialized: d });\n continue;\n }\n throw new Error(`Can\'t serialize object at index ${s2}`);\n }\n let o2 = [];\n if (Module.__hiwire_immortal_get(ge2)?.noValueMarker !== 1) throw new Error(`Internal error: expected js_no_value object at index ${ge2}`);\n for (let s2 = ge2 + 1; ; s2++) {\n let l;\n try {\n l = Module.__hiwire_immortal_get(s2);\n } catch {\n break;\n }\n if (typeof l != "string") throw new Error("Expected a string");\n o2.push(l);\n }\n return { hiwireKeys: r, immortalKeys: o2 };\n };\n API.makeSnapshot = function(t) {\n if (!API.config._makeSnapshot) throw new Error("makeSnapshot only works if you passed the makeSnapshot option to loadPyodide");\n let e = API.serializeHiwireState(t), r = JSON.stringify(e), n = Ze + 2 * r.length;\n n = Math.ceil(n / 16) * 16;\n let o2 = new Uint8Array(n + Module.HEAP8.length), i2 = new TextEncoder(), { written: s2 } = i2.encodeInto(r, o2.subarray(Ze)), l = new Uint32Array(o2.buffer);\n return l[0] = $r, l[1] = n, l[2] = s2, l[3] = 0, Eo(API.config.BUILD_ID, l.subarray(4, 12)), o2.subarray(n).set(Module.HEAP8), o2;\n };\n API.restoreSnapshot = function(t) {\n let e = new Uint32Array(t.buffer, t.byteOffset, t.byteLength / 4);\n if (e[0] !== $r) throw new Error("Snapshot has invalid magic number");\n let r = e[1], n = e[2], o2 = ko(e.subarray(4, 12));\n if (o2 !== API.config.BUILD_ID) throw new Error(`Snapshot build id mismatch\nexpected: ${API.config.BUILD_ID}\ngot : ${o2}\n`);\n let i2 = t.subarray(Ze, Ze + n);\n t = t.subarray(r);\n let s2 = new TextDecoder().decode(i2), l = JSON.parse(s2);\n return Module.HEAP8.set(t), l;\n };\n function Wr() {\n if (Module._jslib_init(), Module.__hiwire_immortal_get(ge2)?.noValueMarker !== 1) throw new Error(`Internal error: expected js_no_value object at index ${ge2}`);\n Module._init_pyodide_proxy(), Module.runtimeKeepalivePush();\n }\n a(Wr, "syncUpSnapshotLoad1");\n function Cr(t, e) {\n if (Module.__hiwire_set(t, e) < 0) throw new Error("table set failed");\n }\n a(Cr, "tableSet");\n function Hr(t, e, r) {\n let n = API.getExpectedKeys();\n n.forEach((o2, i2) => Cr(i2, o2)), e.hiwireKeys.forEach((o2, i2) => {\n let s2;\n if (!o2) s2 = o2;\n else if ("path" in o2) s2 = o2.path.reduce((l, u) => l[u], t) || null;\n else if ("abortSignalAny" in o2) s2 = API.abortSignalAny;\n else if ("API" in o2) s2 = API;\n else {\n if (!r) throw new Error("You must pass an appropriate deserializer as _snapshotDeserializer");\n s2 = r(o2.serialized);\n }\n Cr(n.length + i2, s2);\n }), e.immortalKeys.forEach((o2) => Module.__hiwire_immortal_add(o2));\n }\n a(Hr, "syncUpSnapshotLoad2");\n async function jr(t, e) {\n return new Promise((r, n) => {\n t.FS.syncfs(e, (o2) => {\n o2 ? n(o2) : r();\n });\n });\n }\n a(jr, "syncfs");\n async function zr(t) {\n return await jr(t, false);\n }\n a(zr, "syncLocalToRemote");\n async function Gr(t) {\n return await jr(t, true);\n }\n a(Gr, "syncRemoteToLocal");\n function No(t) {\n return typeof t == "object" && t !== null && Object.hasOwn(t, "hostname") && Object.hasOwn(t, "port");\n }\n a(No, "isSocketAddress");\n var Qe = null, Lt = null, Ut = null;\n async function Kr() {\n if (Qe) return;\n let [t, e, r] = await Promise.all([import("node:net"), import("node:tls"), import("node:stream")]);\n Qe = t, Lt = e, Ut = a((n) => r.Duplex.toWeb(n), "_duplexToWeb");\n }\n a(Kr, "init");\n function Oo() {\n if (!Qe) throw new Error("wintercg-sockets: call init() first");\n return Qe;\n }\n a(Oo, "getNet");\n function To() {\n if (!Lt) throw new Error("wintercg-sockets: call init() first");\n return Lt;\n }\n a(To, "getTls");\n function Do() {\n if (!Ut) throw new Error("wintercg-sockets: call init() first");\n return Ut;\n }\n a(Do, "getDuplexToWeb");\n var _e2 = class extends TypeError {\n static {\n a(this, "SocketError");\n }\n constructor(e) {\n super(`SocketError: ${e}`);\n }\n };\n function Vr(t, e) {\n if (typeof t == "string") {\n let r = new URL(`https://${t}`);\n t = { hostname: r.hostname, port: parseInt(r.port === "" ? "443" : r.port) };\n }\n return new Ct(t, e);\n }\n a(Vr, "connect");\n var Ct = class t {\n constructor(e, r) {\n this.startTlsCalled = false;\n let n = Oo(), o2 = To(), i2 = Do();\n if (this.secureTransport = r?.secureTransport ?? "off", this.allowHalfOpen = r?.allowHalfOpen ?? true, this.openedIsResolved = false, this.opened = new Promise((u, d) => {\n this.openedResolve = (p2) => {\n this.openedIsResolved = true, u(p2);\n }, this.openedReject = (...p2) => {\n this.openedIsResolved = true, d(...p2);\n };\n }), this.closed = new Promise((u, d) => {\n this.closedResolve = (...p2) => {\n u(...p2);\n }, this.closedReject = (...p2) => {\n d(...p2);\n };\n }), No(e)) {\n let u = { host: e.hostname, port: e.port, allowHalfOpen: this.allowHalfOpen };\n this.secureTransport === "on" ? this._socket = o2.connect(u) : this._socket = n.connect(u);\n } else this._socket = new o2.TLSSocket(e);\n this._socket instanceof o2.TLSSocket ? this._socket.on("secureConnect", () => {\n this.openedResolve({ remoteAddress: this._socket.remoteAddress, localAddress: this._socket.localAddress });\n }) : this._socket.on("connect", () => {\n this.openedResolve({ remoteAddress: this._socket.remoteAddress, localAddress: this._socket.localAddress });\n }), this._socket.on("close", (u) => {\n u || this.closedResolve();\n }), this._socket.on("error", (u) => {\n let d = new _e2(u instanceof Error ? u.message : u);\n this.openedIsResolved || this.openedReject(d), this.closedReject(d);\n });\n let { readable: s2, writable: l } = i2(this._socket);\n this.readable = s2, this.writable = l;\n }\n static {\n a(this, "Socket");\n }\n close() {\n return this._socket.end(() => {\n this.closedResolve();\n }), this.closed;\n }\n startTls() {\n if (this.secureTransport !== "starttls") throw new _e2("secureTransport must be set to \'starttls\'");\n if (this.startTlsCalled) throw new _e2("can only call startTls once");\n return this.startTlsCalled = true, new t(this._socket, { secureTransport: "on" });\n }\n };\n async function Jr(t) {\n t || (await Kr(), t = Vr);\n let e = Module, r = e.FS, n = e.API, o2 = 16895, i2 = 0, s2 = 1, l = 2, u = 0, d = 4, p2 = 6, v2 = 8;\n function P2(c) {\n let y = c.reader;\n if (c.readPending || c.eof || !y) return;\n c.readPending = true;\n let f2 = (async () => {\n try {\n let m;\n try {\n m = await y.read();\n } catch {\n c.reader === y && (c.eof = true, g(c));\n return;\n }\n if (c.reader !== y) return;\n if (m.done) {\n c.eof = true, g(c);\n return;\n }\n c.recvBuffer.push(m.value), c.recvBufferBytes += m.value.length, g(c);\n } finally {\n c.readPending = false;\n }\n })();\n c.readSettled = f2, f2.finally(() => {\n c.readSettled === f2 && (c.readSettled = null);\n });\n }\n a(P2, "startRead");\n function g(c) {\n c.dataAvailable && (c.dataAvailable.resolve(), c.dataAvailable = null);\n }\n a(g, "notifyDataAvailable");\n function k2(c) {\n return c.recvBufferBytes > 0 || c.eof || !c.reader ? Promise.resolve() : (c.dataAvailable ??= se2(), P2(c), c.dataAvailable);\n }\n a(k2, "waitForData");\n function B2(c, y) {\n if (c.recvBufferBytes === 0) return new Uint8Array(0);\n if (c.recvBuffer.length === 1 && c.recvBuffer[0].length <= y) {\n let b2 = c.recvBuffer.shift();\n return c.recvBufferBytes = 0, b2;\n }\n let f2 = new Uint8Array(Math.min(y, c.recvBufferBytes)), m = 0;\n for (; m < f2.length && c.recvBuffer.length > 0; ) {\n let b2 = c.recvBuffer[0], x2 = f2.length - m;\n b2.length <= x2 ? (f2.set(b2, m), m += b2.length, c.recvBuffer.shift()) : (f2.set(b2.subarray(0, x2), m), c.recvBuffer[0] = b2.subarray(x2), m += x2);\n }\n return c.recvBufferBytes -= f2.length, f2;\n }\n a(B2, "drainBuffer");\n let N2 = { poll(c) {\n let y = 0;\n return (c.recvBufferBytes > 0 || c.eof) && (y |= 65), c.connected && c.writer && (y |= 4), c.closed && (y |= 16), y;\n }, async pollAsync(c, y, f2) {\n let m = a(() => N2.poll(c) & (y | 8 | 16), "getRequestedEvents"), b2 = m();\n return b2 || f2 === 0 ? b2 : (f2 < 0 ? await k2(c) : await Promise.race([k2(c), Tr(f2)]), m());\n }, ioctl(c, y) {\n return y === 21531 ? c.recvBufferBytes : -28;\n }, fcntl64(c, y, f2) {\n return y === 3 ? c.stream.flags : y === 4 ? (c.stream.flags = e.HEAP32[f2 / 4], 0) : -28;\n }, close(c) {\n return c.closed = true, g(c), c.wcgSocket && (c.reader = null, c.writer = null, c.wcgSocket.close().catch(() => {\n }), c.wcgSocket = null), c.recvBuffer = [], c.recvBufferBytes = 0, c.connected = false, c.connecting = false, 0;\n }, async connectAsync(c, y, f2, m) {\n if (c.wcgSocket) return -30;\n c.connecting = true;\n let b2 = Module.DNS.lookup_addr(y) ?? y;\n c.daddr = b2, c.dport = f2;\n let x2 = t({ hostname: b2, port: f2 }, { secureTransport: m?.secureTransport ?? "starttls", allowHalfOpen: false });\n c.wcgSocket = x2;\n try {\n return await x2.opened, c.connected = true, c.connecting = false, c.reader = x2.readable.getReader(), c.writer = x2.writable.getWriter(), x2.closed.then(() => {\n c.closed = true;\n }, () => {\n c.closed = true;\n }), 0;\n } catch {\n return c.error = 14, c.connecting = false, -c.error;\n }\n }, async sendmsgAsync(c, y) {\n if (!c.writer) return -53;\n try {\n return await c.writer.write(y), y.length;\n } catch (f2) {\n let m = f2 instanceof Error ? f2.message : String(f2);\n return m.includes("EPIPE") || m.includes("ECONNRESET") ? -64 : -29;\n }\n }, async recvmsgAsync(c, y) {\n let f2 = a(() => {\n let b2 = B2(c, y);\n return b2.length > 0 ? b2 : c.eof ? 0 : null;\n }, "tryDrain"), m = f2();\n if (m !== null) return m;\n if (c.stream.flags & 2048) return P2(c), f2() ?? -6;\n for (; c.recvBufferBytes === 0 && !c.eof && c.reader; ) await k2(c);\n return f2() ?? -6;\n }, shutdown(c, y) {\n return y !== i2 && y !== s2 && y !== l ? -28 : ((y === i2 || y === l) && c.reader && (c.reader = null, c.recvBuffer = [], c.recvBufferBytes = 0, c.eof = true, g(c)), (y === s2 || y === l) && c.writer && (c.writer = null), c.reader === null && c.writer === null && c.wcgSocket && (c.wcgSocket.close().catch(() => {\n }), c.wcgSocket = null, c.connected = false, c.closed = true), 0);\n }, async startTls(c) {\n if (!c.wcgSocket) return -53;\n for (; c.readPending && c.readSettled; ) await c.readSettled;\n c.reader && (c.reader.releaseLock(), c.reader = null), c.writer && (c.writer.releaseLock(), c.writer = null);\n let y = c.wcgSocket.startTls();\n return c.wcgSocket = y, c.reader = y.readable.getReader(), c.writer = y.writable.getWriter(), c.recvBuffer = [], c.recvBufferBytes = 0, c.eof = false, y.closed.then(() => {\n c.closed = true;\n }, () => {\n c.closed = true;\n }), P2(c), 0;\n }, bind(c, y, f2) {\n throw new r.ErrnoError(138);\n }, listen(c, y) {\n throw new r.ErrnoError(138);\n }, accept(c) {\n throw new r.ErrnoError(138);\n } }, O2 = { poll(c) {\n let y = c.node.sock;\n return N2.poll(y);\n }, ioctl(c, y) {\n let f2 = c.node.sock;\n return N2.ioctl(f2, y);\n }, write() {\n throw new r.ErrnoError(138);\n }, close(c) {\n let y = c.node.sock;\n N2.close(y);\n } }, L2 = 0, I2 = { root: null, mount() {\n return r.createNode(null, "/", o2, 0);\n }, createSocket(c, y, f2) {\n if (c !== 2) throw new r.ErrnoError(5);\n if (y &= -526337, y !== 1) throw y === 2 ? new r.ErrnoError(138) : new r.ErrnoError(28);\n if (f2 && f2 !== 6) throw new r.ErrnoError(66);\n let m = { family: c, type: y, protocol: f2, error: null, wcgSocket: null, reader: null, writer: null, recvBuffer: [], recvBufferBytes: 0, eof: false, dataAvailable: null, readPending: false, readSettled: null, connected: false, connecting: false, closed: false, sock_ops: N2 }, b2 = `socket[${L2++}]`, x2 = r.createNode(I2.root, b2, 49152, 0);\n x2.sock = m;\n let K2 = r.createStream({ path: b2, node: x2, flags: 2, seekable: false, stream_ops: O2 });\n return m.stream = K2, m;\n }, getSocket(c) {\n let y = r.getStream(c);\n return !y || !r.isSocket(y.node.mode) ? null : y.node.sock;\n }, async pollAsync(c, y, f2) {\n let m = 0, b2 = [];\n for (let x2 = 0; x2 < y; x2++) {\n let K2 = c + v2 * x2, Zr = e.HEAP32[K2 + u >> 2], $t = e.HEAP16[K2 + d >> 1], Xe = a((et) => {\n et &= $t | 8 | 16, e.HEAP16[K2 + p2 >> 1] = et, et && m++;\n }, "setRevents"), ee2 = I2.getSocket(Zr);\n ee2 ? f2 === 0 ? Xe(ee2.sock_ops.poll(ee2)) : b2.push(ee2.sock_ops.pollAsync(ee2, $t, f2).then(Xe)) : Xe(32);\n }\n return await Promise.all(b2), m;\n } };\n n._nodeSock = { async connect(c, y, f2) {\n let m = I2.getSocket(c);\n if (!m) throw new r.ErrnoError(8);\n let b2 = await N2.connectAsync(m, y, f2);\n if (b2 < 0) throw new r.ErrnoError(-b2);\n }, async recv(c, y) {\n let f2 = I2.getSocket(c);\n if (!f2) throw new r.ErrnoError(8);\n for (; f2.recvBufferBytes === 0 && !f2.eof && f2.reader; ) await k2(f2);\n return B2(f2, y);\n }, async send(c, y) {\n let f2 = I2.getSocket(c);\n if (!f2) throw new r.ErrnoError(8);\n let m;\n return y instanceof Uint8Array ? m = y : y.toJs ? m = y.toJs() : m = new Uint8Array(y), await N2.sendmsgAsync(f2, m);\n }, async startTls(c) {\n let y = I2.getSocket(c);\n return y ? await N2.startTls(y) : -8;\n } }, e.FS.filesystems.NODESOCKFS = I2, I2.root = e.FS.mount(I2, {}, null), e.SOCKFS.createSocket = I2.createSocket, e.SOCKFS.pollAsync = I2.pollAsync;\n }\n a(Jr, "initializeNodeSockFS");\n API.loadBinaryFile = ce2;\n API.rawRun = a(function(e) {\n let r = Module.stringToNewUTF8(e);\n Module.API.capture_stderr();\n let n = _PyRun_SimpleString(r);\n _free(r);\n let o2 = Module.API.restore_stderr().trim();\n return [n, o2];\n }, "rawRun");\n API.runPythonInternal = function(t) {\n return API._pyodide._base.eval_code(t, API.runPythonInternal_dict);\n };\n API.setPyProxyToStringMethod = function(t) {\n Module.HEAP8[Module._compat_to_string_repr] = +t;\n };\n API.setCompatToJsLiteralMap = function(t) {\n Module.HEAP8[Module._compat_dict_to_literalmap] = +t;\n };\n API.setCompatNullToNone = function(t) {\n Module.HEAP8[Module._compat_null_to_none] = +t;\n };\n API.saveState = () => API.pyodide_py._state.save_state();\n API.restoreState = (t) => API.pyodide_py._state.restore_state(t);\n API.scheduleCallback = me3;\n API.initializeNodeSockFS = Jr;\n typeof AbortSignal < "u" && AbortSignal.any ? API.abortSignalAny = AbortSignal.any : API.abortSignalAny = Fr;\n API.LiteralMap = Rr;\n function qr(t) {\n Module.FS.mkdirTree(t);\n let { node: e } = Module.FS.lookupPath(t, { follow_mount: false });\n if (Module.FS.isMountpoint(e)) throw new Error(`path \'${t}\' is already a file system mount point`);\n if (!Module.FS.isDir(e.mode)) throw new Error(`path \'${t}\' points to a file not a directory`);\n for (let r in e.contents) throw new Error(`directory \'${t}\' is not empty`);\n }\n a(qr, "ensureMountPathExists");\n var Bt = class {\n static {\n a(this, "PyodideAPI_");\n }\n static {\n this.version = wr;\n }\n static {\n this.loadPackage = pe2;\n }\n static {\n this.loadedPackages = ye;\n }\n static {\n this.ffi = ir;\n }\n static {\n this.setStdin = fe2;\n }\n static {\n this.setStdout = Dt;\n }\n static {\n this.setStderr = Mt;\n }\n static {\n this.globals = {};\n }\n static {\n this.FS = {};\n }\n static {\n this.PATH = {};\n }\n static {\n this.canvas = cr;\n }\n static {\n this.ERRNO_CODES = {};\n }\n static {\n this.pyodide_py = {};\n }\n static async loadPackagesFromImports(e, r = { checkIntegrity: true }) {\n let n = API.pyodide_code.find_imports(e), o2;\n try {\n o2 = n.toJs();\n } finally {\n n.destroy();\n }\n if (o2.length === 0) return [];\n let i2 = API._import_name_to_package_name, s2 = /* @__PURE__ */ new Set();\n for (let l of o2) i2.has(l) && s2.add(i2.get(l));\n return s2.size ? await pe2(Array.from(s2), r) : [];\n }\n static runPython(e, r = {}) {\n return r.globals || (r.globals = API.globals), API.pyodide_code.eval_code.callKwargs(e, r);\n }\n static async runPythonAsync(e, r = {}) {\n return r.globals || (r.globals = API.globals), await API.pyodide_code.eval_code_async.callKwargs(e, r);\n }\n static registerJsModule(e, r) {\n API.pyodide_ffi.register_js_module(e, r);\n }\n static unregisterJsModule(e) {\n API.pyodide_ffi.unregister_js_module(e);\n }\n static toPy(e, { depth: r, defaultConverter: n } = { depth: -1 }) {\n switch (typeof e) {\n case "string":\n case "number":\n case "boolean":\n case "bigint":\n case "undefined":\n return e;\n }\n if (!e || API.isPyProxy(e)) return e;\n let o2 = 0, i2 = 0;\n try {\n o2 = Module.js2python_convert(e, { depth: r, defaultConverter: n });\n } catch (s2) {\n throw s2 instanceof Module._PropagatePythonError && _pythonexc2js(), s2;\n }\n try {\n if (_JsProxy_Check(o2)) return e;\n i2 = _python2js(o2), i2 === null && _pythonexc2js();\n } finally {\n _Py_DecRef(o2);\n }\n return i2;\n }\n static pyimport(e) {\n return API.pyodide_base.pyimport_impl(e);\n }\n static unpackArchive(e, r, n = {}) {\n if (!ArrayBuffer.isView(e) && API.getTypeTag(e) !== "[object ArrayBuffer]") throw new TypeError("Expected argument \'buffer\' to be an ArrayBuffer or an ArrayBuffer view");\n API.typedArrayAsUint8Array(e);\n let o2 = n.extractDir;\n API.package_loader.unpack_buffer.callKwargs({ buffer: e, format: r, extract_dir: o2, metadata: ur });\n }\n static async mountNativeFS(e, r) {\n if (r.constructor.name !== "FileSystemDirectoryHandle") throw new TypeError("Expected argument \'fileSystemHandle\' to be a FileSystemDirectoryHandle");\n return qr(e), Module.FS.mount(Module.FS.filesystems.NATIVEFS_ASYNC, { fileSystemHandle: r }, e), await Gr(Module), { syncfs: a(async () => await zr(Module), "syncfs") };\n }\n static mountNodeFS(e, r) {\n if (!h.IN_NODE) throw new Error("mountNodeFS only works in Node");\n qr(e);\n let n;\n try {\n n = Ge.lstatSync(r);\n } catch {\n throw new Error(`hostPath \'${r}\' does not exist`);\n }\n if (!n.isDirectory()) throw new Error(`hostPath \'${r}\' is not a directory`);\n Module.FS.mount(Module.FS.filesystems.NODEFS, { root: r }, e);\n }\n static async useNodeSockFS(e) {\n if (!h.IN_NODE) throw new Error("useNodeSockFS only works in Node");\n await API.initializeNodeSockFS(e?.connect);\n }\n static registerComlink(e) {\n API._Comlink = e;\n }\n static setInterruptBuffer(e) {\n Module.HEAP8[Module._Py_EMSCRIPTEN_SIGNAL_HANDLING] = +!!e, Module.Py_EmscriptenSignalBuffer = e;\n }\n static checkInterrupt() {\n if (_PyGILState_Check()) {\n __PyErr_CheckSignals() && _pythonexc2js();\n return;\n } else {\n let e = Module.Py_EmscriptenSignalBuffer;\n if (e && e[0] === 2) throw new Module.FS.ErrnoError(27);\n }\n }\n static setDebug(e) {\n let r = !!API.debug_ffi;\n return API.debug_ffi = e, r;\n }\n static makeMemorySnapshot({ serializer: e } = {}) {\n if (!API.config._makeSnapshot) throw new Error("Can only use pyodide.makeMemorySnapshot if the _makeSnapshot option is passed to loadPyodide");\n return API.makeSnapshot(e);\n }\n static get lockfile() {\n return API.lockfile;\n }\n static get lockfileBaseUrl() {\n return API.config.packageCacheDir ?? API.config.packageBaseUrl;\n }\n };\n function Mo() {\n let t = Object.getOwnPropertyDescriptors(Bt);\n delete t.prototype;\n let e = Object.create({}, t);\n return API.public_api = e, e.FS = Module.FS, e.PATH = Module.PATH, e.ERRNO_CODES = Module.ERRNO_CODES, e._module = Module, e._api = API, e;\n }\n a(Mo, "makePublicAPI");\n function Ro(t, e) {\n return new Proxy(t, { get(r, n) {\n return n === "get" ? (o2) => {\n let i2 = r.get(o2);\n return i2 === void 0 && (i2 = e.get(o2)), i2;\n } : n === "has" ? (o2) => r.has(o2) || e.has(o2) : Reflect.get(r, n);\n } });\n }\n a(Ro, "wrapPythonGlobals");\n var Yr;\n API.bootstrapFinalizedPromise = new Promise((t) => Yr = t);\n API.finalizeBootstrap = function(t, e) {\n t && Wr();\n let [r, n] = API.rawRun("import _pyodide_core");\n r && API.fatal_loading_error(`Failed to import _pyodide_core\n`, n), API.runPythonInternal_dict = API._pyodide._base.eval_code("{}"), API.importlib = API.runPythonInternal("import importlib; importlib");\n let o2 = API.importlib.import_module;\n API.sys = o2("sys"), API.os = o2("os");\n let i2 = API.runPythonInternal("import __main__; __main__.__dict__"), s2 = API.runPythonInternal("import builtins; builtins.__dict__");\n API.globals = Ro(i2, s2);\n let l = API._pyodide._importhook, u = Mo();\n API.config._makeSnapshot && (API.config.jsglobals = Ye(API.config.jsglobals));\n let d = API.config.jsglobals;\n return t ? Hr(d, t, e) : (l.register_js_finder(), l.register_js_module("js", d), l.register_js_module("pyodide_js", u), l.register_windows_finder()), API.pyodide_py = o2("pyodide"), API.pyodide_code = o2("pyodide.code"), API.pyodide_ffi = o2("pyodide.ffi"), API.package_loader = o2("pyodide._package_loader"), API.pyodide_base = o2("_pyodide._base"), API.sitepackages = API.package_loader.SITE_PACKAGES.__str__(), API.dsodir = API.package_loader.DSO_DIR.__str__(), API.defaultLdLibraryPath = [API.dsodir, API.sitepackages], API.os.environ.__setitem__("LD_LIBRARY_PATH", API.defaultLdLibraryPath.join(":")), u.pyodide_py = API.pyodide_py, u.globals = API.globals, Yr(), u;\n };\n })();\n }\n var StackSwitching = (() => {\n var __defProp = Object.defineProperty;\n var __getOwnPropDesc = Object.getOwnPropertyDescriptor;\n var __getOwnPropNames = Object.getOwnPropertyNames;\n var __hasOwnProp = Object.prototype.hasOwnProperty;\n var __export = (target, all) => {\n for (var name2 in all) __defProp(target, name2, { get: all[name2], enumerable: true });\n };\n var __copyProps = (to, from, except, desc) => {\n if (from && typeof from === "object" || typeof from === "function") {\n for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n };\n var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);\n var stack_switching_exports = {};\n __export(stack_switching_exports, { StackState: () => StackState2, createPromising: () => createPromising2, enterTask: () => enterTask2, jspiSupported: () => jspiSupported2, newJspiSupported: () => newJspiSupported2, oldJspiSupported: () => oldJspiSupported2, promisingApply: () => promisingApply2, promisingRunMain: () => promisingRunMain2, suspenderGlobal: () => suspenderGlobal2, validSuspender: () => validSuspender2 });\n var suspenderGlobal2 = { value: null };\n var validSuspender2 = { value: false };\n var promisingApplyHandler;\n function promisingApply2(...args2) {\n validSuspender2.value = true;\n Module.stackStop = stackSave();\n return promisingApplyHandler(...args2);\n }\n var promisingRunMainHandler;\n function promisingRunMain2(...args2) {\n validSuspender2.value = true;\n Module.stackStop = stackSave();\n return promisingRunMainHandler(...args2);\n }\n function createPromising2(wasm_func) {\n if (Module.newJspiSupported) {\n const promisingFunc = WebAssembly.promising(wasm_func);\n async function wrapper(...args2) {\n const orig = validSuspender2.value;\n validSuspender2.value = true;\n try {\n return await promisingFunc(null, ...args2);\n } finally {\n validSuspender2.value = orig;\n }\n }\n return wrapper;\n }\n const { parameters } = wasmFunctionType(wasm_func);\n parameters.shift();\n return new WebAssembly.Function({ parameters, results: ["externref"] }, wasm_func, { promising: "first" });\n }\n function initSuspenders() {\n promisingApplyHandler = createPromising2(wasmExports._pyproxy_apply_promising);\n if (wasmExports.run_main_promising) {\n promisingRunMainHandler = createPromising2(wasmExports.run_main_promising);\n }\n }\n var stackStates = [];\n var taskSizeTotal = 500;\n var taskSizeCount = 1;\n function setStackPosition(stackPosition) {\n evictStackUpTo(stackPosition);\n stackRestore(stackPosition);\n }\n var stackTop;\n function enterTask2() {\n if (stackTop === void 0) {\n stackTop = stackSave();\n return;\n }\n const threshold = taskSizeTotal / taskSizeCount * 0.8;\n let lastStop = stackStates.at(-1)?.stop;\n for (let idx = stackStates.length - 2; idx >= -1; idx--) {\n const state = idx >= 0 ? stackStates[idx] : { start: stackTop, stop: stackTop };\n if (state.start - lastStop > threshold) {\n setStackPosition(state.start);\n return;\n }\n lastStop = state.stop;\n }\n const bottomUsed = stackStates.at(-1)?.start ?? stackTop;\n if (bottomUsed > stackSave()) {\n setStackPosition(bottomUsed);\n return;\n }\n }\n function evictStackUpTo(stop2, self2) {\n let total = 0;\n if (self2) {\n const idx = stackStates.lastIndexOf(self2);\n if (idx !== -1) {\n stackStates.splice(idx, 1);\n }\n }\n while (stackStates.length > 0 && stackStates.at(-1).stop <= stop2) {\n total += stackStates.pop()._save();\n }\n const last = stackStates.at(-1);\n if (last) {\n total += last._save_up_to(stop2);\n }\n return total;\n }\n var StackState2 = class {\n constructor() {\n this.start = stackSave();\n this.stop = Module.stackStop;\n this._copy = new Uint8Array(0);\n taskSizeTotal += this.stop - this.start;\n taskSizeCount++;\n if (this.start !== this.stop) {\n stackStates.push(this);\n }\n }\n restore() {\n let total = evictStackUpTo(this.stop, this);\n if (this._copy.length !== 0) {\n Module.HEAP8.set(this._copy, this.start);\n total += this._copy.length;\n this._copy = new Uint8Array(0);\n }\n Module.stackStop = this.stop;\n stackRestore(this.start);\n return total;\n }\n _save_up_to(stop2) {\n let sz1 = this._copy.length;\n let sz2 = stop2 - this.start;\n if (sz2 <= sz1) {\n return 0;\n }\n const new_segment = HEAP8.subarray(this.start + sz1 >>> 0, this.start + sz2 >>> 0);\n const c = new Uint8Array(sz2);\n c.set(this._copy);\n c.set(new_segment, sz1);\n this._copy = c;\n return sz2;\n }\n _save() {\n return this._save_up_to(this.stop);\n }\n };\n var canConstructWasm = true;\n try {\n new WebAssembly.Module(new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0]));\n } catch (e) {\n canConstructWasm = false;\n }\n var newJspiSupported2 = canConstructWasm && "Suspending" in WebAssembly;\n var oldJspiSupported2 = canConstructWasm && "Suspender" in WebAssembly;\n var jspiSupported2 = newJspiSupported2 || oldJspiSupported2;\n Module.newJspiSupported = newJspiSupported2;\n Module.oldJspiSupported = oldJspiSupported2;\n Module.jspiSupported = jspiSupported2;\n if (jspiSupported2) {\n Module.preRun.push(initSuspenders);\n }\n return __toCommonJS(stack_switching_exports);\n })();\n const { StackState, createPromising, enterTask, jspiSupported, newJspiSupported, oldJspiSupported, promisingApply, promisingRunMain, suspenderGlobal, validSuspender } = StackSwitching;\n Object.assign(Module, StackSwitching);\n const API = Module.API;\n const Hiwire = {};\n const Tests = {};\n API.tests = Tests;\n API.version = "314.0.7";\n API.abiVersion = "2026_0";\n Module.hiwire = Hiwire;\n function getTypeTag(x2) {\n try {\n return Object.prototype.toString.call(x2);\n } catch (e) {\n return "";\n }\n }\n API.getTypeTag = getTypeTag;\n function hasProperty(obj, prop) {\n try {\n while (obj) {\n if (Object.hasOwn(obj, prop)) {\n return true;\n }\n obj = Object.getPrototypeOf(obj);\n }\n } catch (e) {\n }\n return false;\n }\n function hasMethod(obj, prop) {\n try {\n return typeof obj[prop] === "function";\n } catch (e) {\n return false;\n }\n }\n const pyproxyIsAlive = (px) => !!Module.PyProxy_getAttrsQuiet(px).shared.ptr;\n API.pyproxyIsAlive = pyproxyIsAlive;\n const errNoRet = () => {\n throw new Error("Assertion error: control reached end of function without return");\n };\n function isPromise(obj) {\n try {\n return typeof obj?.then === "function";\n } catch (e) {\n return false;\n }\n }\n API.isPromise = isPromise;\n function bufferAsUint8Array(arg2) {\n if (ArrayBuffer.isView(arg2)) {\n return new Uint8Array(arg2.buffer, arg2.byteOffset, arg2.byteLength);\n } else {\n return new Uint8Array(arg2);\n }\n }\n API.typedArrayAsUint8Array = bufferAsUint8Array;\n Module.iterObject = function* (object) {\n for (let k2 in object) {\n if (Object.hasOwn(object, k2)) {\n yield k2;\n }\n }\n };\n function wasmFunctionType(wasm_func) {\n if (!WebAssembly.Function) {\n throw new Error("No type reflection");\n }\n if (WebAssembly.Function.type) {\n return WebAssembly.Function.type(wasm_func);\n }\n return wasm_func.type();\n }\n const pythonReservedWords = /* @__PURE__ */ new Set(["False", "await", "else", "import", "pass", "None", "break", "except", "in", "raise", "True", "class", "finally", "is", "return", "and", "continue", "for", "lambda", "try", "as", "def", "from", "nonlocal", "while", "assert", "del", "global", "not", "with", "async", "elif", "if", "or", "yield"]);\n function isReservedWord(word) {\n return pythonReservedWords.has(word);\n }\n function normalizeReservedWords(word) {\n const noTrailing_ = word.replace(/_*$/, "");\n if (!isReservedWord(noTrailing_)) {\n return word;\n }\n if (noTrailing_ !== word) {\n return word.slice(0, -1);\n }\n return word;\n }\n pyodide_js_init();\n pyodide_js_init.sig = "v";\n function set_suspender(suspender) {\n suspenderGlobal.value = suspender;\n }\n set_suspender.sig = "ve";\n function get_suspender() {\n return suspenderGlobal.value;\n }\n get_suspender.sig = "e";\n function syncifyHandler(x2, y) {\n return Module.error;\n }\n async function inner(x2, y) {\n try {\n return await (x2 ?? y);\n } catch (e) {\n if (e && e.pyodide_fatal_error) {\n throw e;\n }\n Module.syncify_error = e;\n return Module.error;\n }\n }\n if (newJspiSupported) {\n syncifyHandler = new WebAssembly.Suspending(inner);\n } else if (oldJspiSupported) {\n syncifyHandler = new WebAssembly.Function({ parameters: ["externref", "externref"], results: ["externref"] }, inner, { suspending: "first" });\n }\n syncifyHandler.sig = "eee";\n function JsvPromise_Syncify_handleError() {\n if (!Module.syncify_error) {\n return;\n }\n Module.handle_js_error(Module.syncify_error);\n delete Module.syncify_error;\n }\n JsvPromise_Syncify_handleError.sig = "v";\n function saveState() {\n if (!validSuspender.value) {\n return Module.error;\n }\n const threadState = _captureThreadState();\n if (threadState === 0) {\n return Module.error;\n }\n const stackState = new StackState();\n return { threadState, stackState, suspender: suspenderGlobal.value };\n }\n saveState.sig = "e";\n function restoreState(state) {\n state.stackState.restore();\n _restoreThreadState(state.threadState);\n suspenderGlobal.value = state.suspender;\n validSuspender.value = true;\n }\n restoreState.sig = "ve";\n function _maybe_connect_async(fd, addr2, addrlen) {\n var sock = Module.SOCKFS.getSocket(fd);\n if (!sock?.sock_ops?.connectAsync) return null;\n var info2 = Module.getSocketAddress(addr2, addrlen);\n return sock.sock_ops.connectAsync(sock, info2.addr, info2.port);\n }\n _maybe_connect_async.sig = "eiii";\n function _maybe_recvfrom_async(fd, buf, len) {\n var sock = Module.SOCKFS.getSocket(fd);\n if (!sock?.sock_ops?.recvmsgAsync) return null;\n return (async function() {\n var result = await sock.sock_ops.recvmsgAsync(sock, len);\n if (typeof result === "number") return result;\n Module.HEAPU8.set(result, buf);\n return result.length;\n })();\n }\n _maybe_recvfrom_async.sig = "eiii";\n function _maybe_sendto_async(fd, message, length) {\n var sock = Module.SOCKFS.getSocket(fd);\n if (!sock?.sock_ops?.sendmsgAsync) return null;\n var data2 = Module.HEAPU8.slice(message, message + length);\n return sock.sock_ops.sendmsgAsync(sock, data2);\n }\n _maybe_sendto_async.sig = "eiii";\n function _try_fcntl64(fd, cmd, arg2, result) {\n var sock = Module.SOCKFS.getSocket(fd);\n if (!sock?.sock_ops?.fcntl64) return false;\n Module.HEAP32[result >> 2] = sock.sock_ops.fcntl64(sock, cmd, arg2);\n if (Module.HEAP32[result >> 2] < 0) return false;\n return true;\n }\n _try_fcntl64.sig = "iiiii";\n function _maybe_poll_async(fds, nfds, timeout) {\n if (!Module.SOCKFS.pollAsync) {\n return null;\n }\n for (var i2 = 0; i2 < nfds; i2++) {\n var pollfd = fds + 8 * i2;\n var fd = Module.HEAP32[pollfd >> 2];\n var stream = Module.FS.getStream(fd);\n if (!stream) {\n continue;\n }\n var sock = Module.SOCKFS.getSocket(fd);\n if (!sock?.sock_ops?.pollAsync) {\n return null;\n }\n }\n return Module.SOCKFS.pollAsync(fds, nfds, timeout);\n }\n _maybe_poll_async.sig = "eiii";\n function _try_shutdown(fd, how, result) {\n var sock = Module.SOCKFS.getSocket(fd);\n if (!sock?.sock_ops?.shutdown) return false;\n Module.HEAP32[result >> 2] = sock.sock_ops.shutdown(sock, how);\n return true;\n }\n _try_shutdown.sig = "iiii";\n function _Py_emscripten_runtime() {\n var info2;\n if (typeof navigator == "object") {\n info2 = navigator.userAgent;\n } else if (typeof process == "object") {\n info2 = "Node.js ".concat(process.version);\n } else {\n info2 = "UNKNOWN";\n }\n var len = lengthBytesUTF8(info2) + 1;\n var res = _malloc(len);\n if (res) stringToUTF8(info2, res, len);\n return res;\n }\n _Py_emscripten_runtime.sig = "i";\n function _Py_CheckEmscriptenSignals_Helper() {\n if (!Module.Py_EmscriptenSignalBuffer) {\n return 0;\n }\n try {\n let result = Module.Py_EmscriptenSignalBuffer[0];\n Module.Py_EmscriptenSignalBuffer[0] = 0;\n return result;\n } catch (e) {\n return 0;\n }\n }\n _Py_CheckEmscriptenSignals_Helper.sig = "i";\n function _PyEM_TrampolineCall_JS(func2, arg1, arg2, arg3) {\n return wasmTable.get(func2)(arg1, arg2, arg3);\n }\n function getPyEMTrampolinePtr() {\n let isIOS = globalThis.navigator && (/iPad|iPhone|iPod/.test(navigator.userAgent) || navigator.platform === "MacIntel" && typeof navigator.maxTouchPoints !== "undefined" && navigator.maxTouchPoints > 1);\n if (isIOS) {\n return 0;\n }\n let trampolineModule;\n try {\n trampolineModule = getWasmTrampolineModule();\n } catch (e) {\n return 0;\n }\n const trampolineInstance = new WebAssembly.Instance(trampolineModule, { env: { __indirect_function_table: wasmTable, memory: wasmMemory } });\n return addFunction(trampolineInstance.exports.trampoline_call);\n }\n addOnPreRun(function setEmscriptenTrampoline() {\n const ptr2 = getPyEMTrampolinePtr();\n const offset = HEAP32[__PyEM_EMSCRIPTEN_TRAMPOLINE_OFFSET / 4 >>> 0];\n HEAP32[(__PyRuntime + offset) / 4 >>> 0] = ptr2;\n });\n _PyEM_TrampolineCall_JS.sig = "iiiii";\n function getWasmTrampolineModule() {\n return new WebAssembly.Module(hexStringToUTF8Array("0061736d0100000001200560037f7f7f017f60027f7f017f60017f017f6000017f60057f7f7f7f7f017f02310203656e76066d656d6f727902000103656e76195f5f696e6469726563745f66756e6374696f6e5f7461626c6501700001030201040713010f7472616d706f6c696e655f63616c6c00000a60015e002000410136020020012500fb1400044020022003200420011100000f0b20012500fb140104402002200320011101000f0b20012500fb14020440200220011102000f0b20012500fb1403044020011103000f0b2000410036020041000b00780970726f647563657273010c70726f6365737365642d62790105636c616e675832332e302e30676974202868747470733a2f6769746875622e636f6d2f6c6c766d2f6c6c766d2d70726f6a6563742065353932376665636638613663653839653161346561633562383238653764343236373634353261290098010f7461726765745f6665617475726573092b0f6d757461626c652d676c6f62616c732b136e6f6e7472617070696e672d6670746f696e742b0b62756c6b2d6d656d6f72792b087369676e2d6578742b0f7265666572656e63652d74797065732b0a6d756c746976616c75652b0267632b0f62756c6b2d6d656d6f72792d6f70742b1663616c6c2d696e6469726563742d6f7665726c6f6e67"));\n }\n function hexStringToUTF8Array(hex) {\n const bytes = [];\n for (let i2 = 0; i2 < hex.length; i2 += 2) {\n bytes.push(parseInt(hex.substr(i2, 2), 16));\n }\n return new Uint8Array(bytes);\n }\n function __syscall_getuid32_js() {\n if (ENVIRONMENT_IS_NODE) {\n return process.getuid();\n }\n return 0;\n }\n __syscall_getuid32_js.sig = "i";\n function __syscall_umask_js(mask) {\n if (ENVIRONMENT_IS_NODE) {\n try {\n return process.umask(mask);\n } catch (e) {\n return 0;\n }\n }\n return 0;\n }\n __syscall_umask_js.sig = "ii";\n function emscripten_set_up_async_input_device_js() {\n let idx = 0;\n const encoder = new TextEncoder();\n const bufs = [encoder.encode("ab\\n"), encoder.encode("fi\\n"), encoder.encode("xy\\n")];\n function sleep(t) {\n return new Promise((res) => setTimeout(res, t));\n }\n FS.createAsyncInputDevice("/dev", "blah", async () => {\n await sleep(5);\n return bufs[idx++ % 3];\n });\n return !!WebAssembly.promising;\n }\n emscripten_set_up_async_input_device_js.sig = "i";\n function emscripten_log_impl_js(arg2) {\n console.warn(UTF8ToString(arg2));\n }\n emscripten_log_impl_js.sig = "vi";\n function unbox_small_structs(type_ptr) {\n var type_id = HEAPU16[(type_ptr + 6 >> 1) + 0 >>> 0];\n while (type_id === 13) {\n var elements = HEAPU32[(type_ptr + 8 >> 2) + 0 >>> 0];\n var first_element = HEAPU32[(elements >> 2) + 0 >>> 0];\n if (first_element === 0) {\n type_id = 0;\n break;\n } else if (HEAPU32[(elements >> 2) + 1 >>> 0] === 0) {\n type_ptr = first_element;\n type_id = HEAPU16[(first_element + 6 >> 1) + 0 >>> 0];\n } else {\n break;\n }\n }\n return [type_ptr, type_id];\n }\n function ffi_call_js(cif, fn, rvalue, avalue) {\n var abi = HEAPU32[(cif >> 2) + 0 >>> 0];\n var nargs = HEAPU32[(cif >> 2) + 1 >>> 0];\n var nfixedargs = HEAPU32[(cif >> 2) + 6 >>> 0];\n var arg_types_ptr = HEAPU32[(cif >> 2) + 2 >>> 0];\n var rtype_unboxed = unbox_small_structs(HEAPU32[(cif >> 2) + 3 >>> 0]);\n var rtype_ptr = rtype_unboxed[0];\n var rtype_id = rtype_unboxed[1];\n var orig_stack_ptr = stackSave();\n var cur_stack_ptr = orig_stack_ptr;\n var args2 = [];\n var ret_by_arg = false;\n if (rtype_id === 15) {\n throw new Error("complex ret marshalling nyi");\n }\n if (rtype_id < 0 || rtype_id > 15) {\n throw new Error("Unexpected rtype " + rtype_id);\n }\n if (rtype_id === 4 || rtype_id === 13) {\n args2.push(rvalue);\n ret_by_arg = true;\n }\n for (var i2 = 0; i2 < nfixedargs; i2++) {\n var arg_ptr = HEAPU32[(avalue >> 2) + i2 >>> 0];\n var arg_unboxed = unbox_small_structs(HEAPU32[(arg_types_ptr >> 2) + i2 >>> 0]);\n var arg_type_ptr = arg_unboxed[0];\n var arg_type_id = arg_unboxed[1];\n switch (arg_type_id) {\n case 1:\n case 10:\n case 9:\n case 14:\n args2.push(HEAPU32[(arg_ptr >> 2) + 0 >>> 0]);\n break;\n case 2:\n args2.push(HEAPF32[(arg_ptr >> 2) + 0 >>> 0]);\n break;\n case 3:\n args2.push(HEAPF64[(arg_ptr >> 3) + 0 >>> 0]);\n break;\n case 5:\n args2.push(HEAPU8[arg_ptr + 0 >>> 0]);\n break;\n case 6:\n args2.push(HEAP8[arg_ptr + 0 >>> 0]);\n break;\n case 7:\n args2.push(HEAPU16[(arg_ptr >> 1) + 0 >>> 0]);\n break;\n case 8:\n args2.push(HEAP16[(arg_ptr >> 1) + 0 >>> 0]);\n break;\n case 11:\n case 12:\n args2.push(HEAPU64[(arg_ptr >> 3) + 0 >>> 0]);\n break;\n case 4:\n args2.push(HEAPU64[(arg_ptr >> 3) + 0 >>> 0]);\n args2.push(HEAPU64[(arg_ptr >> 3) + 1 >>> 0]);\n break;\n case 13:\n var size = HEAPU32[(arg_type_ptr >> 2) + 0 >>> 0];\n var align = HEAPU16[(arg_type_ptr + 4 >> 1) + 0 >>> 0];\n cur_stack_ptr -= size, cur_stack_ptr &= ~(align - 1);\n HEAP8.subarray(cur_stack_ptr >>> 0, cur_stack_ptr + size >>> 0).set(HEAP8.subarray(arg_ptr >>> 0, arg_ptr + size >>> 0));\n args2.push(cur_stack_ptr);\n break;\n case 15:\n throw new Error("complex marshalling nyi");\n default:\n throw new Error("Unexpected type " + arg_type_id);\n }\n }\n if (nfixedargs != nargs) {\n var struct_arg_info = [];\n for (var i2 = nargs - 1; i2 >= nfixedargs; i2--) {\n var arg_ptr = HEAPU32[(avalue >> 2) + i2 >>> 0];\n var arg_unboxed = unbox_small_structs(HEAPU32[(arg_types_ptr >> 2) + i2 >>> 0]);\n var arg_type_ptr = arg_unboxed[0];\n var arg_type_id = arg_unboxed[1];\n switch (arg_type_id) {\n case 5:\n case 6:\n cur_stack_ptr -= 1, cur_stack_ptr &= ~(1 - 1);\n HEAPU8[cur_stack_ptr + 0 >>> 0] = HEAPU8[arg_ptr + 0 >>> 0];\n break;\n case 7:\n case 8:\n cur_stack_ptr -= 2, cur_stack_ptr &= ~(2 - 1);\n HEAPU16[(cur_stack_ptr >> 1) + 0 >>> 0] = HEAPU16[(arg_ptr >> 1) + 0 >>> 0];\n break;\n case 1:\n case 9:\n case 10:\n case 14:\n case 2:\n cur_stack_ptr -= 4, cur_stack_ptr &= ~(4 - 1);\n HEAPU32[(cur_stack_ptr >> 2) + 0 >>> 0] = HEAPU32[(arg_ptr >> 2) + 0 >>> 0];\n break;\n case 3:\n case 11:\n case 12:\n cur_stack_ptr -= 8, cur_stack_ptr &= ~(8 - 1);\n HEAPU32[(cur_stack_ptr >> 2) + 0 >>> 0] = HEAPU32[(arg_ptr >> 2) + 0 >>> 0];\n HEAPU32[(cur_stack_ptr >> 2) + 1 >>> 0] = HEAPU32[(arg_ptr >> 2) + 1 >>> 0];\n break;\n case 4:\n cur_stack_ptr -= 16, cur_stack_ptr &= ~(8 - 1);\n HEAPU32[(cur_stack_ptr >> 2) + 0 >>> 0] = HEAPU32[(arg_ptr >> 2) + 0 >>> 0];\n HEAPU32[(cur_stack_ptr >> 2) + 1 >>> 0] = HEAPU32[(arg_ptr >> 2) + 1 >>> 0];\n HEAPU32[(cur_stack_ptr >> 2) + 2 >>> 0] = HEAPU32[(arg_ptr >> 2) + 2 >>> 0];\n HEAPU32[(cur_stack_ptr >> 2) + 3 >>> 0] = HEAPU32[(arg_ptr >> 2) + 3 >>> 0];\n break;\n case 13:\n cur_stack_ptr -= 4, cur_stack_ptr &= ~(4 - 1);\n struct_arg_info.push([cur_stack_ptr, arg_ptr, HEAPU32[(arg_type_ptr >> 2) + 0 >>> 0], HEAPU16[(arg_type_ptr + 4 >> 1) + 0 >>> 0]]);\n break;\n case 15:\n throw new Error("complex arg marshalling nyi");\n default:\n throw new Error("Unexpected argtype " + arg_type_id);\n }\n }\n args2.push(cur_stack_ptr);\n for (var i2 = 0; i2 < struct_arg_info.length; i2++) {\n var struct_info = struct_arg_info[i2];\n var arg_target = struct_info[0];\n var arg_ptr = struct_info[1];\n var size = struct_info[2];\n var align = struct_info[3];\n cur_stack_ptr -= size, cur_stack_ptr &= ~(align - 1);\n HEAP8.subarray(cur_stack_ptr >>> 0, cur_stack_ptr + size >>> 0).set(HEAP8.subarray(arg_ptr >>> 0, arg_ptr + size >>> 0));\n HEAPU32[(arg_target >> 2) + 0 >>> 0] = cur_stack_ptr;\n }\n }\n stackRestore(cur_stack_ptr);\n stackAlloc(0);\n var result = (0, getWasmTableEntry(fn).apply(null, args2));\n stackRestore(orig_stack_ptr);\n if (ret_by_arg) {\n return;\n }\n switch (rtype_id) {\n case 0:\n break;\n case 1:\n case 9:\n case 10:\n case 14:\n HEAPU32[(rvalue >> 2) + 0 >>> 0] = result;\n break;\n case 2:\n HEAPF32[(rvalue >> 2) + 0 >>> 0] = result;\n break;\n case 3:\n HEAPF64[(rvalue >> 3) + 0 >>> 0] = result;\n break;\n case 5:\n case 6:\n HEAPU8[rvalue + 0 >>> 0] = result;\n break;\n case 7:\n case 8:\n HEAPU16[(rvalue >> 1) + 0 >>> 0] = result;\n break;\n case 11:\n case 12:\n HEAPU64[(rvalue >> 3) + 0 >>> 0] = result;\n break;\n case 15:\n throw new Error("complex ret marshalling nyi");\n default:\n throw new Error("Unexpected rtype " + rtype_id);\n }\n }\n ffi_call_js.sig = "viiii";\n function ffi_closure_alloc_js(size, code) {\n var closure = _malloc(size);\n var index = getEmptyTableSlot();\n HEAPU32[(code >> 2) + 0 >>> 0] = index;\n HEAPU32[(closure >> 2) + 0 >>> 0] = index;\n return closure;\n }\n ffi_closure_alloc_js.sig = "iii";\n function ffi_closure_free_js(closure) {\n var index = HEAPU32[(closure >> 2) + 0 >>> 0];\n freeTableIndexes.push(index);\n _free(closure);\n }\n ffi_closure_free_js.sig = "vi";\n function ffi_prep_closure_loc_js(closure, cif, fun, user_data, codeloc) {\n var abi = HEAPU32[(cif >> 2) + 0 >>> 0];\n var nargs = HEAPU32[(cif >> 2) + 1 >>> 0];\n var nfixedargs = HEAPU32[(cif >> 2) + 6 >>> 0];\n var arg_types_ptr = HEAPU32[(cif >> 2) + 2 >>> 0];\n var rtype_unboxed = unbox_small_structs(HEAPU32[(cif >> 2) + 3 >>> 0]);\n var rtype_ptr = rtype_unboxed[0];\n var rtype_id = rtype_unboxed[1];\n var sig2;\n var ret_by_arg = false;\n switch (rtype_id) {\n case 0:\n sig2 = "v";\n break;\n case 13:\n case 4:\n sig2 = "vi";\n ret_by_arg = true;\n break;\n case 1:\n case 5:\n case 6:\n case 7:\n case 8:\n case 9:\n case 10:\n case 14:\n sig2 = "i";\n break;\n case 2:\n sig2 = "f";\n break;\n case 3:\n sig2 = "d";\n break;\n case 11:\n case 12:\n sig2 = "j";\n break;\n case 15:\n throw new Error("complex ret marshalling nyi");\n default:\n throw new Error("Unexpected rtype " + rtype_id);\n }\n var unboxed_arg_type_id_list = [];\n var unboxed_arg_type_info_list = [];\n for (var i2 = 0; i2 < nargs; i2++) {\n var arg_unboxed = unbox_small_structs(HEAPU32[(arg_types_ptr >> 2) + i2 >>> 0]);\n var arg_type_ptr = arg_unboxed[0];\n var arg_type_id = arg_unboxed[1];\n unboxed_arg_type_id_list.push(arg_type_id);\n unboxed_arg_type_info_list.push([HEAPU32[(arg_type_ptr >> 2) + 0 >>> 0], HEAPU16[(arg_type_ptr + 4 >> 1) + 0 >>> 0]]);\n }\n for (var i2 = 0; i2 < nfixedargs; i2++) {\n switch (unboxed_arg_type_id_list[i2]) {\n case 1:\n case 5:\n case 6:\n case 7:\n case 8:\n case 9:\n case 10:\n case 14:\n case 13:\n sig2 += "i";\n break;\n case 2:\n sig2 += "f";\n break;\n case 3:\n sig2 += "d";\n break;\n case 4:\n sig2 += "jj";\n break;\n case 11:\n case 12:\n sig2 += "j";\n break;\n case 15:\n throw new Error("complex marshalling nyi");\n default:\n throw new Error("Unexpected argtype " + arg_type_id);\n }\n }\n if (nfixedargs < nargs) {\n sig2 += "i";\n }\n 0;\n function trampoline() {\n var args2 = Array.prototype.slice.call(arguments);\n var size = 0;\n var orig_stack_ptr = stackSave();\n var cur_ptr = orig_stack_ptr;\n var ret_ptr;\n var jsarg_idx = 0;\n if (ret_by_arg) {\n ret_ptr = args2[jsarg_idx++];\n } else {\n cur_ptr -= 8, cur_ptr &= ~(8 - 1);\n ret_ptr = cur_ptr;\n }\n cur_ptr -= 4 * nargs;\n var args_ptr = cur_ptr;\n var carg_idx = 0;\n for (; carg_idx < nfixedargs; carg_idx++) {\n var cur_arg = args2[jsarg_idx++];\n var arg_type_info = unboxed_arg_type_info_list[carg_idx];\n var arg_size = arg_type_info[0];\n var arg_align = arg_type_info[1];\n var arg_type_id2 = unboxed_arg_type_id_list[carg_idx];\n switch (arg_type_id2) {\n case 5:\n case 6:\n cur_ptr -= 1, cur_ptr &= ~(4 - 1);\n HEAPU32[(args_ptr >> 2) + carg_idx >>> 0] = cur_ptr;\n HEAPU8[cur_ptr + 0 >>> 0] = cur_arg;\n break;\n case 7:\n case 8:\n cur_ptr -= 2, cur_ptr &= ~(4 - 1);\n HEAPU32[(args_ptr >> 2) + carg_idx >>> 0] = cur_ptr;\n HEAPU16[(cur_ptr >> 1) + 0 >>> 0] = cur_arg;\n break;\n case 1:\n case 9:\n case 10:\n case 14:\n cur_ptr -= 4, cur_ptr &= ~(4 - 1);\n HEAPU32[(args_ptr >> 2) + carg_idx >>> 0] = cur_ptr;\n HEAPU32[(cur_ptr >> 2) + 0 >>> 0] = cur_arg;\n break;\n case 13:\n cur_ptr -= arg_size, cur_ptr &= ~(arg_align - 1);\n HEAP8.subarray(cur_ptr >>> 0, cur_ptr + arg_size >>> 0).set(HEAP8.subarray(cur_arg >>> 0, cur_arg + arg_size >>> 0));\n HEAPU32[(args_ptr >> 2) + carg_idx >>> 0] = cur_ptr;\n break;\n case 2:\n cur_ptr -= 4, cur_ptr &= ~(4 - 1);\n HEAPU32[(args_ptr >> 2) + carg_idx >>> 0] = cur_ptr;\n HEAPF32[(cur_ptr >> 2) + 0 >>> 0] = cur_arg;\n break;\n case 3:\n cur_ptr -= 8, cur_ptr &= ~(8 - 1);\n HEAPU32[(args_ptr >> 2) + carg_idx >>> 0] = cur_ptr;\n HEAPF64[(cur_ptr >> 3) + 0 >>> 0] = cur_arg;\n break;\n case 11:\n case 12:\n cur_ptr -= 8, cur_ptr &= ~(8 - 1);\n HEAPU32[(args_ptr >> 2) + carg_idx >>> 0] = cur_ptr;\n HEAPU64[(cur_ptr >> 3) + 0 >>> 0] = cur_arg;\n break;\n case 4:\n cur_ptr -= 16, cur_ptr &= ~(8 - 1);\n HEAPU32[(args_ptr >> 2) + carg_idx >>> 0] = cur_ptr;\n HEAPU64[(cur_ptr >> 3) + 0 >>> 0] = cur_arg;\n cur_arg = args2[jsarg_idx++];\n HEAPU64[(cur_ptr >> 3) + 1 >>> 0] = cur_arg;\n break;\n }\n }\n var varargs = args2[args2.length - 1];\n for (; carg_idx < nargs; carg_idx++) {\n var arg_type_id2 = unboxed_arg_type_id_list[carg_idx];\n var arg_type_info = unboxed_arg_type_info_list[carg_idx];\n var arg_size = arg_type_info[0];\n var arg_align = arg_type_info[1];\n if (arg_type_id2 === 13) {\n var struct_ptr = HEAPU32[(varargs >> 2) + 0 >>> 0];\n cur_ptr -= arg_size, cur_ptr &= ~(arg_align - 1);\n HEAP8.subarray(cur_ptr >>> 0, cur_ptr + arg_size >>> 0).set(HEAP8.subarray(struct_ptr >>> 0, struct_ptr + arg_size >>> 0));\n HEAPU32[(args_ptr >> 2) + carg_idx >>> 0] = cur_ptr;\n } else {\n HEAPU32[(args_ptr >> 2) + carg_idx >>> 0] = varargs;\n }\n varargs += 4;\n }\n stackRestore(cur_ptr);\n stackAlloc(0);\n 0;\n getWasmTableEntry(HEAPU32[(closure >> 2) + 2 >>> 0])(HEAPU32[(closure >> 2) + 1 >>> 0], ret_ptr, args_ptr, HEAPU32[(closure >> 2) + 3 >>> 0]);\n stackRestore(orig_stack_ptr);\n if (!ret_by_arg) {\n switch (sig2[0]) {\n case "i":\n return HEAPU32[(ret_ptr >> 2) + 0 >>> 0];\n case "j":\n return HEAPU64[(ret_ptr >> 3) + 0 >>> 0];\n case "d":\n return HEAPF64[(ret_ptr >> 3) + 0 >>> 0];\n case "f":\n return HEAPF32[(ret_ptr >> 2) + 0 >>> 0];\n }\n }\n }\n try {\n var wasm_trampoline = convertJsFunctionToWasm(trampoline, sig2);\n } catch (e) {\n return 1;\n }\n setWasmTableEntry(codeloc, wasm_trampoline);\n HEAPU32[(closure >> 2) + 1 >>> 0] = cif;\n HEAPU32[(closure >> 2) + 2 >>> 0] = fun;\n HEAPU32[(closure >> 2) + 3 >>> 0] = user_data;\n return 0;\n }\n ffi_prep_closure_loc_js.sig = "iiiiii";\n function __hiwire_deduplicate_new() {\n return /* @__PURE__ */ new Map();\n }\n __hiwire_deduplicate_new.sig = "e";\n function __hiwire_deduplicate_get(map, value2) {\n return map.get(value2);\n }\n __hiwire_deduplicate_get.sig = "iee";\n function __hiwire_deduplicate_set(map, value2, ref) {\n map.set(value2, ref);\n }\n __hiwire_deduplicate_set.sig = "veei";\n function __hiwire_deduplicate_delete(map, value2) {\n map.delete(value2);\n }\n __hiwire_deduplicate_delete.sig = "vee";\n var _set_method_docstring, _PyObject_GetAttrString, __PyUnicode_FromId, _PyObject_VectorcallMethod, _PyUnicode_AsUTF8AndSize, _malloc, __Py_Dealloc, _PyErr_Format, _add_methods_and_set_docstrings, _PyModule_AddFunctions, _docstring_init, _PyImport_ImportModule, _dump_traceback, _fileno, _PyGILState_GetThisThreadState, _set_error, _PyErr_SetObject, _restore_sys_last_exception, _PySys_GetObject, _PyErr_SetRaisedException, _wrap_exception, _PyErr_GetRaisedException, _hiwire_get, _PyErr_GivenExceptionMatches, _PyErr_Print, __PyObject_GetAttrId, _PyUnicode_AsUTF8, _PySys_WriteStderr, _PyErr_DisplayException, _JsvString_FromId, _pythonexc2js, _trigger_fatal_error, _raw_call, _JsProxy_Val, _error_handling_init, _hiwire_invalid_ref, _init_pyodide_proxy, _python2js, _PyInit__pyodide_core, _PyErr_Occurred, __PyErr_FormatFromCause, _PyModule_Create2, _PyImport_GetModuleDict, _PyDict_SetItemString, _jslib_init, _python2js_init, _jsproxy_init, _jsproxy_call_init, _pyproxy_init, _jsbind_init, _pyodide_export, _PyUnicode_Data, __js2python_none, __js2python_null, __js2python_true, __js2python_false, __js2python_pyproxy, __js2python_bigint, _PyObject_CallOneArg, _js2python_immutable, _js2python, _JsProxy_getflags, _PyLong_AsLong, _JsProxy_is_py_json, _js2python_as_py_json, _JsProxy_create_with_type, _JsProxy_bind_sig, _JsRef_toVal, _PyErr_SetString, _JsProxy_create_with_this, _JsProxy_bind_class, _clear_method_call_singleton, _hiwire_decref, _JsProxy_GetMethod, __PyObject_GenericGetAttrWithDict, _strcmp, _PyObject_CallMethodObjArgs, _PyArg_ParseTuple, _Js2PyConverter_convert, _hiwire_new, _hiwire_incref, _JsProxy_GetAttr, _handle_next_result, _free, _JsProxy_create_objmap, _JsProxy_am_send, _python2js_track_proxies, _JsvObject_CallMethodId_OneArg, _JsProxy_IterNext, __PyGen_SetStopIterationValue, _JsGenerator_send, _PyErr_SetNone, _JsException_js_error_getter, _process_throw_args, _PyErr_NormalizeException, _PyException_GetTraceback, _PyException_SetTraceback, _PyErr_Restore, _PyErr_ExceptionMatches, _PyErr_Clear, _JsvObject_CallMethodId_NoArgs, _PyErr_Fetch, __agen_handle_result_js_c, __agen_handle_result, _JsArray_sq_item, _JsArray_sq_ass_item, _JsTypedArray_sq_ass_item, _JsMap_update, _wrap_promise, _PyTuple_GetItem, _JsvObject_CallMethodId, _JsModule_GetAll, _PyType_IsSubtype, _JsProxy_Check, _JsBuffer_CopyIntoMemoryView, _PyMem_Malloc, _PyMemoryView_FromObject, _JsBuffer_cinit, _hiwire_new_deduplicate, _JsRef_new, _PyTuple_Pack, _PyLong_FromLong, _PyDict_GetItemWithError, _PyObject_SelfIter, _PyVectorcall_Call, _PyErr_NoMemory, _PyType_FromSpecWithBases, _PyObject_SetAttr, _PyMem_Free, _PyDict_SetItem, _JsProxy_create, _JsProxy_init_docstrings, _run_sync_not_supported, _run_sync, _py_is_awaitable, _JsvPromise_Syncify, _can_run_sync, _PyDict_New, _PyObject_SetAttrString, _PyModule_AddObject, _PyType_Ready, _JsMethod_Vectorcall_impl, _JsvObject_CallMethodId_TwoArgs, _PyObject_Repr, _PyIndex_Check, _PyNumber_AsSsize_t, _PySlice_Unpack, _PySlice_AdjustIndices, _PySequence_Fast, _PyArg_ParseTupleAndKeywords, _PySet_New, __PySet_Update, _PyUnicode_FromString, _PySet_Discard, _PyList_New, _PyList_Extend, _PyList_Sort, __PyArg_ParseStack, __PyArg_CheckPositional, _PyObject_GetIter, _PyObject_RichCompareBool, _PyErr_WarnEx, __PyArg_ParseStackAndKeywords, _hiwire_pop, _puts, _PyObject_GenericSetAttr, _Py_HashBuffer, _JsMethod_Construct_impl, _PyNumber_Index, _PyLong_AsSsize_t, _PyLong_FromSsize_t, _PyObject_GetItem, _PyObject_DelItem, _PyObject_SetItem, _PyObject_GetBuffer, _PyBuffer_Release, _PyBytes_FromStringAndSize, _PyObject_Vectorcall, _Py_EnterRecursiveCall, _Py_LeaveRecursiveCall, _Py2JsConverter_convert, _PyUnicode_Equal, _PyObject_GC_UnTrack, _PyUnicode_FromFormat, _PyType_GenericNew, _PyObject_IsInstance, _python2js_inner, _python2js_custom, _check_gil, _PyGILState_Check, _PyGen_GetCode, _pyproxy_getflags, _PyObject_HasAttr, _PyObject_IsSubclass, __pyproxy_repr, _PyObject_Str, __pyproxy_type, __pyproxy_hasattr, _python2js_json_adaptor, __pyproxy_getattr, __PyObject_GetMethod, __pyproxy_setattr, __pyproxy_delattr, _PyObject_DelAttr, __pyproxy_getitem, __pyproxy_setitem, __pyproxy_delitem, __pyproxy_slice_assign, _PySequence_Size, _PySequence_GetSlice, _PySequence_SetSlice, _python2js_with_depth, __pyproxy_pop, __pyproxy_contains, _PySequence_Contains, __pyproxy_ownKeys, _PyObject_Dir, _PyList_Size, _PyList_GetItem, __pyproxy_apply, _PyTuple_New, __pyproxy_apply_promising, _enter_promising_task, _exit_promising_task, __iscoroutinefunction, __pyproxy_iter_next, _PyIter_Next, __pyproxyGen_Send, _PyIter_Send, __pyproxyGen_return, __PyGen_FetchStopIterationValue, __pyproxyGen_throw, __pyproxyGen_asend, __pyproxyGen_areturn, __pyproxyGen_athrow, __pyproxy_aiter_next, _FutureDoneCallback_call_resolve, _FutureDoneCallback_call_reject, _FutureDoneCallback_call, _PyArg_UnpackTuple, __pyproxy_ensure_future, __pyproxy_get_buffer, _PyBuffer_FillContiguousStrides, _PyBuffer_IsContiguous, _create_promise_handles_result_helper, __python2js_buffer, _Jsv_GetError, _jslib_init_buffers, _JsRef_pop, _JsrString_FromId, _hiwire_intern, __python2js, _PySequence_GetItem, _PyObject_CheckBuffer, _PyLong_AsLongAndOverflow, _python2js__default_converter, _python2js__eager_converter, __PyLong_NumBits, __PyLong_AsByteArray, _PyFloat_AsDouble, _pystate_threadstate_new, _PyThreadState_New, _pystate_threadstate_swap, _PyThreadState_Swap, _PyContext_CopyCurrent, _PyThreadState_GetDict, _PyThreadState_Get, _PyObject_CallMethod, _PyEval_SetProfile, _PyEval_SetTrace, _PyThreadState_Clear, _PyThreadState_Delete, _captureThreadState, _restoreThreadState, _syscall_syncify, _PyGILState_Ensure, _PyGILState_Release, _print_stdout, _fiprintf, _print_stderr, ___wrap___syscall_connect, ___wrap___syscall_recvfrom, ___wrap___syscall_sendto, ___wrap___syscall_fcntl64, ___wrap___syscall_poll, ___wrap___syscall_shutdown, ___syscall_setsockopt, _main, _PyImport_AppendInittab, _PyPreConfig_InitPythonConfig, _Py_PreInitializeFromBytesArgs, _PyStatus_Exception, _PyConfig_InitPythonConfig, _PyConfig_SetBytesArgv, _PyConfig_SetBytesString, _Py_InitializeFromConfig, _PyConfig_Clear, _Py_ExitStatusException, _run_main, _run_main_promising, _Py_GetBuildInfo, _PyOS_snprintf, __PyToken_OneChar, __PyToken_TwoChars, __PyToken_ThreeChars, _strlen, _PyUnicode_DecodeUTF8, __PyArena_Malloc, _strncpy, _PyMem_Realloc, _PyMem_Calloc, _strncmp, __PyArena_AddPyObject, _PyBytes_AsString, _PyImport_ImportModuleAttrString, _PyUnicode_InternFromString, __PyType_Name, __PyUnicode_EqualToASCIIString, __PyUnicode_InternImmortal, _PyBytes_AsStringAndSize, _strchr, _PyUnicode_Decode, _Py_BuildValue, _PyUnicode_CompareWithASCIIString, ___errno_location, _PyOS_strtoul, _PyLong_FromString, _PyOS_strtol, _PyOS_string_to_double, _PyComplex_FromCComplex, _PyFloat_FromDouble, _PyUnicode_FromFormatV, __PyErr_ProgramDecodedTextObject, _Py_GetConstant, _PyBytes_Concat, _PyUnicodeWriter_Create, _PyUnicodeWriter_WriteStr, _PyUnicodeWriter_Discard, _PyUnicodeWriter_Finish, _strpbrk, __PyUnicode_IsWhitespace, _PyUnicode_Substring, __Py_ReachedRecursionLimitWithMargin, _PyUnicode_DecodeUTF8Stateful, _siprintf, __PyUnicode_DecodeUnicodeEscapeInternal2, __PyErr_BadInternalCall, __PyBytes_DecodeEscape2, _PyBytes_Size, _PyErr_WarnExplicitObject, _PySys_Audit, _memchr, __Py_FatalErrorFunc, __PyUnicode_ScanIdentifier, _PyUnicode_AsUTF8String, __PyUnicode_IsPrintable, _PyOS_Readline, _strcpy, _PyObject_CallNoArgs, __Py_UniversalNewlineFgetsWithSize, _fopencookie, _fclose, _getc, _ungetc, _ftell, _lseek, _PyErr_SetFromErrnoWithFilename, _PyObject_CallFunction, _PyObject_GetAttr, __PyObject_MakeTpCall, __Py_CheckFunctionResult, _read, _strcspn, _fflush, _fputs, _PyMem_RawFree, _PyEval_RestoreThread, _PyEval_SaveThread, _PyMem_RawRealloc, __PyInterpreterState_Main, _clearerr, _fgets, _feof, _PyErr_CheckSignals, _PyMutex_Lock, _isatty, _PyMutex_Unlock, _PyObject_Type, __PyErr_SetString, _PyObject_Size, _PyMapping_Size, _PyObject_Length, _PyObject_LengthHint, __PyErr_ExceptionMatches, __PyErr_Clear, __PyObject_LookupSpecial, _Py_GenericAlias, _PyObject_GetOptionalAttr, __PyNumber_Index, __PyErr_Format, _PyMapping_GetOptionalItem, _PyDict_GetItemRef, _PySequence_SetItem, _PySequence_DelItem, _PyObject_DelItemString, _PyObject_CheckReadBuffer, _PyObject_AsCharBuffer, _PyObject_AsReadBuffer, _PyObject_AsWriteBuffer, _PyBuffer_GetPointer, _PyBuffer_SizeFromFormat, _PyObject_CallFunctionObjArgs, _PyBuffer_FromContiguous, _PyObject_CopyData, _PyBuffer_FillInfo, __PyBuffer_ReleaseInInterpreter, __PyBuffer_ReleaseInInterpreterAndRawFree, _PyObject_Format, _PyNumber_Check, _PyNumber_Or, _PyNumber_Xor, _PyNumber_And, _PyNumber_Lshift, _PyNumber_Rshift, _PyNumber_Subtract, _PyNumber_Divmod, _PyNumber_Add, _PyNumber_Multiply, _PyNumber_MatrixMultiply, _PyNumber_FloorDivide, _PyNumber_TrueDivide, _PyNumber_Remainder, _PyNumber_Power, _PyNumber_InPlaceOr, _PyNumber_InPlaceXor, _PyNumber_InPlaceAnd, _PyNumber_InPlaceLshift, _PyNumber_InPlaceRshift, _PyNumber_InPlaceSubtract, _PyNumber_InPlaceMatrixMultiply, _PyNumber_InPlaceFloorDivide, _PyNumber_InPlaceTrueDivide, _PyNumber_InPlaceRemainder, _PyNumber_InPlaceAdd, _PyNumber_InPlaceMultiply, _PyNumber_InPlacePower, _PyNumber_Negative, _PyNumber_Positive, _PyNumber_Invert, _PyNumber_Absolute, _PyErr_WarnFormat, __PyLong_Copy, _PyNumber_Long, _PyLong_FromUnicodeObject, _PyNumber_Float, _PyLong_AsDouble, _PyFloat_FromString, _PyNumber_ToBase, __PyLong_Format, _PySequence_Check, _PySequence_Length, _PySequence_Concat, _PySequence_Repeat, _PySequence_InPlaceConcat, _PySequence_InPlaceRepeat, __PySlice_FromIndices, _PySequence_DelSlice, _PySequence_Tuple, _PyList_AsTuple, __PyList_AppendTakeRefListResize, __PyList_AsTupleAndClear, __PyTuple_FromArraySteal, _PySeqIter_New, _PySequence_List, __PyList_Extend, _PySequence_Count, _PySequence_In, _PySequence_Index, _PyMapping_Check, _PyMapping_Length, _PyMapping_GetItemString, _PyMapping_GetOptionalItemString, _PyMapping_SetItemString, _PyMapping_HasKeyStringWithError, _PyMapping_HasKeyWithError, _PyMapping_HasKeyString, _PyErr_FormatUnraisable, _PyMapping_HasKey, _PyMapping_Keys, _PyDict_Keys, _PyMapping_Items, _PyDict_Items, _PyMapping_Values, _PyDict_Values, __Py_CheckRecursiveCall, _PyObject_IsTrue, _PyIter_Check, _PyObject_GetAIter, _PyAIter_Check, _PyIter_NextItem, _PyBool_FromLong, __Py_SetImmortal, __PyArg_NoKeywords, _memrchr, _memcmp, _PyByteArray_FromObject, _PyByteArray_FromStringAndSize, __PyObject_New, _PyByteArray_Size, _PyByteArray_AsString, _PyByteArray_Resize, _PyByteArray_Concat, _PyUnicode_FromStringAndSize, __Py_GetConfig, __PyObject_GC_New, __PyArg_UnpackKeywords, __PyArg_BadArgument, _PyUnicode_AsEncodedString, _PyBuffer_ToContiguous, _PyObject_GC_Del, __PyBytes_Repeat, __PyObject_GetState, _PyUnicode_DecodeLatin1, _PyLong_AsInt, _PyLong_FromSize_t, __PyEval_SliceIndex, _PyUnicode_GetDefaultEncoding, _PyUnicode_FromEncodedObject, _PyList_Append, _PyList_Reverse, __PyEval_GetBuiltin, _PyObject_GenericGetAttr, _PyType_GenericAlloc, _PyObject_Free, _PyObject_Malloc, __Py_NewReference, _PyObject_Calloc, _PyBytes_FromString, _PyBytes_FromFormatV, __PyBytesWriter_Resize, __PyBytesWriter_Finish, __PyBytesWriter_Init, __PyBytesWriter_Alloc, __PyBytesWriter_WriteBytes, __PyBytes_Resize, __PyBytesWriter_Dealloc, _PyBytes_FromFormat, _PyObject_ASCII, _PyOS_double_to_string, __PyBytesWriter_Prepare, _PyBytes_DecodeEscape, __PyBytes_Find, __PyBytes_ReverseFind, _PyBytes_Repr, _PyUnicode_New, _PyBytes_Join, _PyBytes_FromObject, _PyErr_BadArgument, _PyObject_Realloc, __Py_NewReferenceNoTotal, _PyBytes_ConcatAndDel, _PyVectorcall_Function, __PyTuple_FromArray, __PyDict_FromItems, _PyDict_Next, _PyObject_VectorcallDict, _PyModule_GetNameObject, _PyCallable_Check, __PyStack_AsDict, _PyObject_Call, _PyCFunction_Call, _PyEval_CallObjectWithKeywords, _PyObject_CallObject, _PyEval_CallFunction, __PyObject_CallFunction_SizeT, _PyEval_CallMethod, __PyObject_CallMethod, __PyObject_CallMethodId, __PyObject_CallMethod_SizeT, _PyVectorcall_NARGS, _PyCapsule_New, _PyCapsule_IsValid, _PyCapsule_GetPointer, _PyCapsule_GetName, _PyCapsule_GetDestructor, _PyCapsule_GetContext, _PyCapsule_SetPointer, _PyCapsule_SetName, _PyCapsule_SetDestructor, _PyCapsule_SetContext, __PyCapsule_SetTraverse, _PyCapsule_Import, _PyCell_New, _PyCell_Get, _PyCell_Set, _PyObject_RichCompare, _PyMethod_Function, _PyMethod_Self, _PyMethod_New, _PyObject_ClearWeakRefs, _PyObject_GenericHash, _PyObject_Hash, __PyType_GetDict, __PyType_LookupRef, _PyInstanceMethod_New, _PyInstanceMethod_Function, _PyCode_AddWatcher, _PyCode_ClearWatcher, __PyObject_NewVar, __PyUnicode_InternMortal, _PyUnstable_Code_NewWithPosOnlyArgs, _PyUnicode_Compare, __PyTuple_Resize, _PyUnstable_Code_New, _PyCode_NewEmpty, _PyUnicode_DecodeFSDefault, __PyCode_CheckLineNumber, _PyCode_Addr2Line, _PyCode_Addr2Location, _PyUnstable_Code_GetExtra, _PyUnstable_Code_SetExtra, _PyCode_GetVarnames, _PyCode_GetCellvars, _PyCode_GetFreevars, __PyCode_GetVarCounts, __PyCode_SetUnboundVarCounts, _PySet_Contains, _PySet_Add, _PyDict_Contains, __PyCode_CheckNoInternalState, __PyCode_CheckNoExternalState, __PyCode_VerifyStateless, __PyCode_CheckPureFunction, __PyCode_ReturnsOnlyNone, _PyTuple_Size, _PyCode_GetCode, __PyCode_ConstantKey, _PyComplex_AsCComplex, __PySet_NextEntry, _PyFrozenSet_New, _PySlice_New, _PyLong_FromVoidPtr, __PyUnicode_Copy, __Py_c_sum, __Py_cr_sum, __Py_c_diff, __Py_cr_diff, __Py_rc_diff, __Py_c_neg, __Py_c_prod, __Py_cr_prod, __Py_c_quot, __Py_cr_quot, __Py_rc_quot, __Py_c_pow, _atan2, _hypot, _pow, _log, _exp, _sin, _cos, __Py_c_abs, _PyComplex_FromDoubles, _PyComplex_RealAsDouble, _PyComplex_ImagAsDouble, __Py_HashDouble, __PyUnicode_TransformDecimalAndSpaceToASCII, __PyUnicodeWriter_Init, __PyUnicodeWriter_Dealloc, __PyUnicodeWriter_Finish, _PyCMethod_New, _PyMember_GetOne, _PyMember_SetOne, _PyTuple_GetSlice, _PyWrapper_New, _PyDescr_NewMethod, __PyObject_FunctionStr, _PyDescr_NewClassMethod, _PyDescr_NewMember, _PyDescr_NewGetSet, _PyDescr_NewWrapper, _PyDescr_IsData, _PyDictProxy_New, _Py_HashPointer, _PyType_GetQualName, _PyException_GetCause, _PyException_SetCause, _PyException_GetContext, _PyException_SetContext, _PyException_GetArgs, _PyException_SetArgs, _PyExceptionClass_Name, _PyUnstable_Exc_PrepReraiseStar, _PyUnicodeEncodeError_GetEncoding, _PyUnicodeDecodeError_GetEncoding, _PyUnicodeEncodeError_GetObject, _PyUnicodeDecodeError_GetObject, _PyUnicodeTranslateError_GetObject, _PyUnicodeEncodeError_GetStart, _PyUnicodeDecodeError_GetStart, _PyUnicodeTranslateError_GetStart, _PyUnicodeEncodeError_SetStart, _PyUnicodeDecodeError_SetStart, _PyUnicodeTranslateError_SetStart, _PyUnicodeEncodeError_GetEnd, _PyUnicodeDecodeError_GetEnd, _PyUnicodeTranslateError_GetEnd, _PyUnicodeEncodeError_SetEnd, _PyUnicodeDecodeError_SetEnd, _PyUnicodeTranslateError_SetEnd, _PyUnicodeEncodeError_GetReason, _PyUnicodeDecodeError_GetReason, _PyUnicodeTranslateError_GetReason, _PyUnicodeEncodeError_SetReason, _PyUnicodeDecodeError_SetReason, _PyUnicodeTranslateError_SetReason, _PyUnicodeDecodeError_Create, __PyErr_SetRaisedException, _PyModule_GetDict, _PyErr_NewException, _PyDict_Copy, _PyUnicode_ReadChar, _PyObject_GenericGetDict, _PyObject_GenericSetDict, _PyObject_HasAttrWithError, _PyList_SetSlice, _PyUnicodeWriter_WriteChar, _PyUnicodeWriter_WriteASCII, _PyObject_GC_Track, __Py_union_type_or, __PyEval_NoToolsForUnwind, __PyGen_yf, _PyObject_CallFinalizerFromDealloc, __Py_MakeCoro, __PyObject_GC_NewVar, _PyUnstable_InterpreterFrame_GetLine, _PyGen_NewWithQualName, _PyGen_New, __PyCoro_GetAwaitableIter, _PyCoro_New, _PyAsyncGen_New, __PyEval_EvalFrameDefault, _PyFile_FromFd, _PyFile_GetLine, _PyFile_WriteObject, _PyFile_WriteString, _PyObject_AsFileDescriptor, __PyLong_FileDescriptor_Converter, _flockfile, _getc_unlocked, _funlockfile, _Py_UniversalNewlineFgets, _PyFile_NewStdPrinter, _PyFile_SetOpenCodeHook, _Py_IsInitialized, _PyFile_OpenCodeObject, _PyFile_OpenCode, __PyUnicode_AsUTF8String, __Py_write, _PyFloat_GetMax, _PyFloat_GetMin, _PyFloat_GetInfo, _PyStructSequence_New, _PyStructSequence_SetItem, __PyFloat_ExactDealloc, _PyLong_GetSign, _frexp, _modf, _PyLong_FromDouble, __PyLong_Lshift, _PyFloat_Pack2, _ldexp, _PyFloat_Pack4, _PyFloat_Pack8, _PyFloat_Unpack2, _PyFloat_Unpack4, _PyFloat_Unpack8, _fmod, _PyErr_SetFromErrno, _round, _strtol, _Py_ReprEnter, _PyDict_Update, _Py_ReprLeave, _PyDict_Size, _PyFrame_GetLineNumber, _PyFrame_New, _PyFrame_GetVar, __PyUnicode_Equal, _PyFrame_GetVarString, _PyFrame_FastToLocalsWithError, _PyFrame_FastToLocals, _PyFrame_LocalsToFast, __PyFrame_IsEntryFrame, _PyFrame_GetCode, _PyFrame_GetBack, _PyFrame_GetLocals, _PyFrame_GetGlobals, _PyFrame_GetBuiltins, _PyFrame_GetLasti, _PyFrame_GetGenerator, __PyErr_SetKeyError, _PyDict_DelItem, _PyDict_Pop, _PyCompile_OpcodeStackEffect, _PyFunction_AddWatcher, _PyFunction_ClearWatcher, _PyFunction_NewWithQualName, __PyFunction_SetVersion, _PyFunction_New, _PyFunction_GetCode, _PyFunction_GetGlobals, _PyFunction_GetModule, _PyFunction_GetDefaults, _PyFunction_SetDefaults, __PyEval_StopTheWorld, __PyEval_StartTheWorld, _PyFunction_SetVectorcall, _PyFunction_GetKwDefaults, _PyFunction_SetKwDefaults, _PyFunction_GetClosure, _PyFunction_SetClosure, _PyFunction_GetAnnotations, _PyFunction_SetAnnotations, __PyFunction_VerifyStateless, _PyClassMethod_New, _PyStaticMethod_New, __PyInterpolation_Build, _PyCallIter_New, _PyList_GetItemRef, _PyList_SetItem, _PyList_Insert, _PyList_GetSlice, __PySet_NextEntryRef, _PyList_Clear, __PyList_FromStackRefStealOnSuccess, __PyList_SliceSubscript, _PyUnicodeWriter_WriteRepr, __PyEval_SliceIndexNotNone, _PyObject_HashNotImplemented, __PyLong_New, __PyLong_FromDigits, _PyLong_FromUnsignedLong, _PyLong_FromUnsignedLongLong, _PyLong_AsUnsignedLong, _PyLong_AsSize_t, _PyLong_AsUnsignedLongMask, _PyLong_IsPositive, _PyLong_IsNegative, _PyLong_IsZero, __PyLong_Sign, __PyLong_FromByteArray, _PyLong_AsNativeBytes, _PyLong_FromNativeBytes, _PyLong_FromUnsignedNativeBytes, _PyLong_AsVoidPtr, _PyLong_FromLongLong, _PyLong_AsLongLong, _PyLong_AsUnsignedLongLong, _PyLong_AsUnsignedLongLongMask, _PyLong_AsLongLongAndOverflow, __PyLong_UnsignedShort_Converter, __PyLong_UnsignedInt_Converter, __PyLong_UnsignedLong_Converter, __PyLong_UnsignedLongLong_Converter, __PyLong_Size_t_Converter, __PyLong_UInt8_Converter, __PyLong_UInt16_Converter, __PyLong_UInt32_Converter, __PyLong_UInt64_Converter, __PyUnicodeWriter_PrepareInternal, __PyUnicodeWriter_WriteStr, __PyLong_Frexp, __PyLong_ExactDealloc, __PyLong_Add, __PyLong_Subtract, __PyLong_Multiply, __PyLong_Rshift, __PyLong_GCD, __PyLong_DivmodNear, _PyLong_GetInfo, _PyUnstable_Long_IsCompact, _PyUnstable_Long_CompactValue, _PyLong_FromInt32, _PyLong_FromUInt32, _PyLong_FromInt64, _PyLong_FromUInt64, _PyLong_AsInt32, _PyLong_AsInt64, _PyLong_AsUInt32, _PyLong_AsUInt64, _PyLong_GetNativeLayout, _PyLong_Export, _PyLong_FreeExport, _PyLongWriter_Create, _PyLongWriter_Discard, _PyLongWriter_Finish, _PyObject_Bytes, __PyObject_AssertFailed, __PyDict_NewPresized, _PyDict_GetItem, __PyErr_GetRaisedException, __PyDict_GetItem_KnownHash, __PyDict_GetItemRef_KnownHash_LockHeld, __PyDict_GetItemStringWithError, __PyDict_LoadGlobal, __PyDict_LoadGlobalStackRef, _PyEval_GetBuiltins, __PyDict_SetItem_Take2, __PyDict_SetItem_KnownHash_LockHeld, __PyDict_SetItem_KnownHash, __PyDict_DelItem_KnownHash, __PyDict_DelItemIf, _PyDict_Clear, _PyDict_PopString, __PyDict_Pop, _PyDict_MergeFromSeq2, __PyErr_FormatNote, _PyDict_Merge, __PyDict_MergeEx, _PyDict_SetDefaultRef, _PyDict_SetDefault, __PyDict_SizeOf, _PyDict_ContainsString, _PyDict_GetItemString, _PyDict_GetItemStringRef, _PyDict_DelItemString, _PyInterpreterState_Get, _PyObject_VisitManagedDict, __PyObject_SetManagedDict, _PyObject_ClearManagedDict, _PyDict_Watch, _PyDict_Unwatch, _PyDict_AddWatcher, _PyDict_ClearWatcher, __PyDict_SendEvent, _PyArg_ValidateKeywordArguments, _PyODict_New, _PyODict_SetItem, _PyODict_DelItem, __PyErr_ChainExceptions1, _PyMemoryView_FromMemory, _PyMemoryView_FromBuffer, _PyMemoryView_GetContiguous, _PyUnicode_AsASCIIString, _PyCFunction_New, _PyCFunction_NewEx, _PyCFunction_GetFunction, _PyCFunction_GetSelf, _PyCFunction_GetFlags, _PyModuleDef_Init, _PyModule_NewObject, _PyModule_New, _PyModule_SetDocString, _PyModule_FromDefAndSpec2, _PyModule_ExecDef, _PyModule_GetName, _PyModule_GetFilenameObject, _PyModule_GetFilename, _PyModule_GetDef, _PyModule_GetState, _PyUnicode_AsWideChar, _wcsrchr, _wcscmp, __PySys_GetOptionalAttrString, _PySys_FormatStderr, _PyUnicode_Join, __PyNamespace_New, __PyArg_NoPositional, __PyUnicode_CheckConsistency, __PyObject_IsFreed, _fwrite, _fputc, __PyObject_Dump, _Py_IncRef, _Py_DecRef, __Py_IncRef, __Py_DecRef, _PyObject_Init, _PyObject_InitVar, _PyObject_CallFinalizer, _PyObject_Print, _ferror, __Py_BreakPoint, _PyUnicode_DecodeASCII, _PyObject_HasAttrStringWithError, _PyObject_GetOptionalAttrString, _PyObject_HasAttrString, _PyObject_DelAttrString, __PyObject_GetDictPtr, __PyObject_GenericSetAttrWithDict, _PyObject_Not, _PyObject_IS_GC, __Py_SetImmortalUntracked, _PyUnstable_Object_EnableDeferredRefcount, _PyUnstable_Object_IsUniqueReferencedTemporary, _PyUnstable_TryIncRef, _PyUnstable_EnableTryIncRef, __Py_ResurrectReference, __Py_ForgetReference, __PyTrash_thread_deposit_object, __PyTrash_thread_destroy_chain, _PyObject_GET_WEAKREFS_LISTPTR, _Py_NewRef, _Py_XNewRef, _Py_Is, _Py_IsNone, _Py_IsTrue, _Py_IsFalse, __Py_SetRefcnt, _PyRefTracer_SetTracer, _PyRefTracer_GetTracer, _Py_GetConstantBorrowed, _Py_TYPE, _Py_REFCNT, _PyUnstable_IsImmortal, _PyUnstable_Object_IsUniquelyReferenced, _sleep, _abort, _getenv, _sbrk, _clock_gettime, _vsnprintf, _atexit, _strstr, _snprintf, _calloc, _realloc, _wcslen, __PyMem_GetCurrentAllocatorName, _PyMem_SetupDebugHooks, _PyMem_GetAllocator, _PyMem_SetAllocator, _PyObject_GetArenaAllocator, _PyObject_SetArenaAllocator, _PyMem_RawMalloc, _PyMem_RawCalloc, __PyMem_Strdup, __PyMutex_LockTimed, _PyPickleBuffer_FromObject, _PyPickleBuffer_GetBuffer, _PyPickleBuffer_Release, __PySlice_GetLongIndices, __PySet_AddTakeRef, __PySet_Contains, _PySet_Size, _PySet_Clear, _PySet_Pop, _PySlice_GetIndices, _PySlice_GetIndicesEx, _PyStructSequence_GetItem, _PyStructSequence_InitType2, _PyStructSequence_InitType, __PyStructSequence_NewType, _PyUnicodeWriter_WriteUTF8, _PyStructSequence_NewType, _PyUnicode_Concat, __PyTemplate_Build, _PyTuple_SetItem, __PyTuple_FromStackRefStealOnSuccess, __PyObject_GC_Resize, __PyStaticType_GetBuiltins, _PyType_GetDict, _strrchr, _PyType_ClearCache, _PyType_AddWatcher, _PyType_ClearWatcher, _PyType_Watch, _PyType_Unwatch, _PyType_Modified, __PyType_SetVersion, _PyUnstable_Type_AssignVersionTag, _PyType_GetFullyQualifiedName, __PyType_NewManagedObject, __PyObject_LookupSpecialMethod, __PyObject_MaybeCallSpecialNoArgs, __PyObject_MaybeCallSpecialOneArg, _PyType_GetFlags, _PyType_SUPPORTS_WEAKREFS, _PyType_FromMetaclass, _PyType_FromModuleAndSpec, _PyType_FromSpec, _PyType_GetName, _PyType_GetModuleName, _PyType_GetSlot, _PyType_GetModule, _PyType_GetModuleState, _PyType_GetModuleByDef, _PyType_GetBaseByToken, _PyObject_GetTypeData, _PyType_GetTypeDataSize, _PyObject_GetItemData, __PyType_Lookup, _PyUnicode_IsIdentifier, _PyEval_GetGlobals, __PyStaticType_InitForExtension, __PyType_GetSlotWrapperNames, _PyType_Freeze, __PySuper_Lookup, _PyWeakref_NewRef, _PyImport_GetModule, _PyImport_Import, __Py_hashtable_len, __Py_GetErrorHandler, _PyUnicode_CopyCharacters, _PyUnicode_Resize, _PyUnicode_FromWideChar, _PyUnicodeWriter_WriteWideChar, _PyUnicodeWriter_WriteUCS4, _PyUnicode_FromKindAndData, _PyUnicode_AsUCS4, _PyUnicode_AsUCS4Copy, __PyUnicodeWriter_WriteASCIIString, _PyUnicode_Fill, _PyUnicodeWriter_Format, _PyUnicode_AsWideCharString, _PyUnicode_FromOrdinal, _PyUnicode_FromObject, _PyCodec_LookupError, _PyUnicode_DecodeUTF16Stateful, _PyUnicode_DecodeUTF32Stateful, _PyUnicode_DecodeUTF16, _PyUnicode_DecodeUTF32, _PyUnicode_AsDecodedObject, _PyCodec_Decode, _PyUnicode_AsDecodedUnicode, _PyUnicode_AsEncodedObject, _PyCodec_Encode, _PyUnicode_EncodeLocale, __Py_EncodeLocaleEx, _PyCodec_StrictErrors, _PyUnicode_EncodeFSDefault, __PyUnicode_EncodeUTF16, __PyUnicode_EncodeUTF32, _PyUnicode_AsEncodedUnicode, _PyUnicode_DecodeLocaleAndSize, __Py_DecodeLocaleEx, _PyUnicode_DecodeLocale, _PyUnicode_DecodeFSDefaultAndSize, _PyUnicode_FSConverter, _PyOS_FSPath, _PyUnicode_FSDecoder, _wmemchr, __PyUnicode_AsUTF8NoNUL, _PyUnicode_GetSize, _PyUnicode_GetLength, _PyUnicode_WriteChar, _PyUnicode_DecodeUTF7, _PyUnicode_DecodeUTF7Stateful, _PyUnicode_AsUTF32String, _PyUnicode_AsUTF16String, _PyUnicode_DecodeUnicodeEscape, _PyUnicode_AsUnicodeEscapeString, _PyUnicode_DecodeRawUnicodeEscape, _PyUnicode_AsRawUnicodeEscapeString, _PyUnicode_AsLatin1String, __PyUnicodeWriter_PrepareKindInternal, _PyUnicode_DecodeCharmap, _PyUnicode_BuildEncodingMap, _PyUnicode_AsCharmapString, _PyUnicode_Translate, __PyUnicode_ToDecimalDigit, _PyUnicode_Count, _PyUnicode_Find, _PyUnicode_FindChar, _PyUnicode_Tailmatch, __PyUnicode_JoinArray, _PyUnicode_Splitlines, __PyUnicode_IsLinebreak, _wmemcmp, _PyUnicode_EqualToUTF8, _PyUnicode_EqualToUTF8AndSize, _PyUnicode_RichCompare, _PyUnicode_Contains, _PyUnicode_Append, _PyUnicode_AppendAndDel, _PyUnicode_Replace, _PyUnicode_Split, _PyUnicode_Partition, _PyUnicode_RPartition, _PyUnicode_RSplit, __PyUnicodeWriter_WriteChar, __PyUnicodeWriter_WriteSubstring, _PyUnicodeWriter_WriteSubstring, _PyUnicodeWriter_DecodeUTF8Stateful, __PyUnicodeWriter_WriteLatin1String, _PyUnicode_Format, __PyUnicode_ExactDealloc, __Py_hashtable_new_full, __Py_hashtable_get, __Py_hashtable_set, __PyUnicode_InternInPlace, _PyUnicode_InternInPlace, _PyUnicode_InternImmortal, __Py_hashtable_destroy, _PyInit__string, _PyUnicode_KIND, _PyUnicode_DATA, __PyUnicode_IsLowercase, __PyUnicode_IsUppercase, __PyUnicode_IsTitlecase, __PyUnicode_IsDecimalDigit, __PyUnicode_IsDigit, __PyUnicode_IsNumeric, __PyUnicode_IsAlpha, __PyUnicode_ToNumeric, __PyUnicode_ToTitlecase, __PyUnicode_ToDigit, __PyUnicode_ToUppercase, __PyUnicode_ToLowercase, __PyWeakref_ClearRef, _PyWeakref_NewProxy, _PyWeakref_IsDead, _PyWeakref_GetRef, _PyWeakref_GetObject, _PyUnstable_Object_ClearWeakRefsNoCallbacks, __PyWeakref_IsDead, _PyInit__contextvars, _PyModule_AddType, _PyContextVar_New, _PyErr_ResourceWarning, __PyRecursiveMutex_Lock, _PyContextVar_Get, _PyErr_WarnExplicit, _PyErr_WarnExplicitFormat, __Py_IsInterpreterFinalizing, __PyWarnings_Init, _PyThreadState_GetFrame, __PySys_GetOptionalAttr, __Py_DisplaySourceLine, _PyModule_AddObjectRef, _PyInit__ast, __PyOnceFlag_CallOnceSlow, _PyModule_AddIntConstant, _PyInit__tokenize, _PyErr_SyntaxLocationObject, _PyImport_ImportModuleLevelObject, __PySys_GetRequiredAttrString, _PyEval_MergeCompilerFlags, __PyArena_New, __PyArena_Free, __PyAST_Compile, _Py_CompileStringObject, _PyEval_EvalCode, _PyRun_StringFlags, _PyEval_EvalCodeEx, __PySys_GetRequiredAttr, _Py_GetRecursionLimit, _Py_SetRecursionLimit, _emscripten_stack_get_base, _emscripten_stack_get_end, __Py_InitializeRecursionLimits, _PyUnstable_ThreadState_SetStackProtection, _PyUnstable_ThreadState_ResetStackProtection, __PyEval_MatchKeys, __PyEval_MatchClass, __PyEvalFramePushAndInit, _PyEval_EvalFrame, _PyEval_EvalFrameEx, __PyObjectArray_FromStackRefArray, __PyObjectArray_Free, __PyEval_FrameClearAndPop, _PyTraceBack_Here, __PyEval_MonitorRaise, __Py_HandlePending, __Py_Check_ArgsIterable, __PyEval_CheckExceptStarTypeValid, __PyEval_ExceptionGroupMatch, _PyErr_SetHandledException, __PyEval_FormatExcCheckArg, __PyEval_FormatKwargsError, __PyEval_GetANext, __PyEval_GetAwaitable, __PyEval_ImportFrom, __PyEval_ImportName, __PyEval_FormatExcUnbound, __PyEval_LoadGlobalStackRef, __PyEval_LoadName, __PyEval_SpecialMethodCanSuggest, __PyThreadState_PopFrame, __PyEval_UnpackIterableStackRef, __PyEval_CheckExceptTypeValid, _PyThreadState_EnterTracing, _PyThreadState_LeaveTracing, __PyEval_SetProfile, _PyEval_SetProfileAllThreads, _PyEval_SetTraceAllThreads, _PyEval_GetFrame, _PyEval_GetLocals, __PyInterpreterState_IsRunningMain, _PyImport_ImportModuleLevel, _PyEval_GetFrameLocals, _PyEval_GetFrameGlobals, _PyEval_GetFrameBuiltins, _PyEval_GetFuncName, _PyEval_GetFuncDesc, __PyEval_FormatAwaitableError, _PyUnstable_Eval_RequestCodeExtraIndex, _PyCodec_Register, _PyCodec_Unregister, _PyCodec_KnownEncoding, _PyCodec_Encoder, _PyCodec_Decoder, _PyCodec_IncrementalEncoder, _PyCodec_IncrementalDecoder, _PyCodec_StreamReader, _PyCodec_StreamWriter, _PyCodec_RegisterError, _PyCodec_IgnoreErrors, _PyCodec_ReplaceErrors, _PyCodec_XMLCharRefReplaceErrors, _PyCodec_BackslashReplaceErrors, _PyCodec_NameReplaceErrors, _PyStatus_NoMemory, _PyStatus_Error, _PyStatus_Ok, __PyCompile_CleanDoc, __PyInstructionSequence_New, __PyCompile_CodeGen, __PyCompile_Assemble, _PyCode_Optimize, __PyContext_NewHamtForTests, _PyContext_New, _PyContext_Copy, _PyContext_AddWatcher, _PyContext_ClearWatcher, _PyContext_Enter, _PyContext_Exit, _PyContextVar_Set, _PyContextVar_Reset, __PyCriticalSection_BeginSlow, __PyCriticalSection2_BeginSlow, __PyCriticalSection_SuspendAll, __PyCriticalSection_Resume, _PyCriticalSection_Begin, _PyCriticalSection_BeginMutex, _PyCriticalSection_End, _PyCriticalSection2_Begin, _PyCriticalSection2_BeginMutex, _PyCriticalSection2_End, __PyEval_AddPendingCall, __PyXIData_GetNotShareableErrorType, __PyXIData_SetNotShareableError, __PyXIData_FormatNotShareableError, __PyXI_UnwrapNotShareableError, __PyXI_InitFailure, __PyXIData_Lookup, __PyXIData_RegisterClass, __PyXIData_UnregisterClass, __PyBytes_GetData, __PyBytes_FromData, __PyBytes_FromXIData, __PyBytes_GetXIData, _PyInterpreterState_GetID, __PyBytes_GetXIDataWrapped, __PyCode_FromXIData, __PyMarshal_ReadObjectFromXIData, _PyMarshal_ReadObjectFromString, __PyCode_GetXIData, __PyMarshal_GetXIData, _PyMarshal_WriteObjectToString, __PyFunction_FromXIData, __PyFunction_GetXIData, __PyXIData_New, __PyXIData_Free, __PyXIData_Clear, __PyXIData_Init, __PyXIData_InitWithSize, __PyObject_CheckXIData, __PyObject_GetXIDataNoFallback, __PyObject_GetXIData, __PyPickle_GetXIData, __PyPickle_LoadFromXIData, _PyInterpreterState_GetDict, __PyImport_SetModule, __PyCode_GetScriptXIData, _Py_CompileStringExFlags, __PyCode_GetPureScriptXIData, __PyXIData_NewObject, __PyXIData_Release, __PyInterpreterState_LookUpID, __PyXIData_ReleaseAndRawFree, __PyXI_NewExcInfo, __PyXI_FreeExcInfo, __PyXI_FormatExcInfo, __PyXI_ExcInfoAsObject, __PyXI_NewFailure, __PyXI_FreeFailure, __PyXI_GetFailureCode, __PyXI_InitFailureUTF8, __PyXI_NewSession, __PyXI_FreeSession, __PyXI_Enter, __PyThreadState_NewBound, __PyInterpreterState_SetRunningMain, __PyInterpreterState_SetNotRunningMain, __PyErr_SetInterpreterAlreadyRunning, __PyXI_Exit, __PyXI_ClearResult, __PyXI_GetMainNamespace, __PyXI_Preserve, __PyXI_GetPreserved, _PyErr_PrintEx, __PyXI_NewInterpreter, _Py_NewInterpreterFromConfig, __PyErr_SetFromPyStatus, _PyThreadState_GetInterpreter, __PyXI_EndInterpreter, __PyInterpreterState_IsReady, _PyInterpreterState_Delete, _Py_EndInterpreter, __PyErr_SetLocaleString, _PyErr_GetHandledException, _PyErr_GetExcInfo, _PyErr_SetExcInfo, _PyErr_SetFromErrnoWithFilenameObject, _PyErr_SetFromErrnoWithFilenameObjects, _strerror, _PyErr_SetImportErrorSubclass, _PyErr_SetImportError, _PyErr_BadInternalCall, __PyErr_FormatV, _PyErr_FormatV, _PyErr_NewExceptionWithDoc, _PyTraceBack_Print, _PyErr_WriteUnraisable, _PyErr_SyntaxLocation, _PyErr_SyntaxLocationEx, _PyErr_RangedSyntaxLocationObject, _PyErr_ProgramTextObject, _PyErr_ProgramText, _Py_fopen, _PyCompile_OpcodeStackEffectWithJump, __PyCompile_OptimizeCfg, _PyUnstable_InterpreterFrame_GetCode, _PyUnstable_InterpreterFrame_GetLasti, _Py_FrozenMain, _Py_GETENV, _Py_GetVersion, _Py_GetCopyright, _PyImport_ImportFrozenModule, _PyRun_AnyFileExFlags, _Py_FinalizeEx, _PyGC_Enable, _PyGC_Disable, _PyGC_IsEnabled, _PyTime_PerfCounterRaw, _PyTime_AsSecondsDouble, _PyGC_Collect, _PyUnstable_Object_GC_NewWithExtraData, _PyObject_GC_IsTracked, _PyObject_GC_IsFinalized, _PyUnstable_GC_VisitObjects, _PyInterpreterState_ThreadHead, _PyThreadState_Next, _PyArg_Parse, __PyArg_Parse_SizeT, __PyArg_ParseTuple_SizeT, _PyArg_VaParse, __PyArg_VaParse_SizeT, __PyArg_ParseTupleAndKeywords_SizeT, _PyArg_VaParseTupleAndKeywords, __PyArg_VaParseTupleAndKeywords_SizeT, __PyArg_ParseTupleAndKeywordsFast, _Py_GetCompiler, _Py_GetPlatform, _PyEval_ThreadsInitialized, _PyThread_init_thread, _pthread_cond_destroy, _pthread_mutex_destroy, _PyEval_InitThreads, _PyEval_AcquireLock, _pthread_mutex_lock, _pthread_cond_timedwait, _pthread_mutex_unlock, _pthread_cond_signal, _PyEval_ReleaseLock, _pthread_cond_wait, _PyEval_AcquireThread, _PyEval_ReleaseThread, _Py_AddPendingCall, __PyEval_MakePendingCalls, _Py_MakePendingCalls, _pthread_mutex_init, __Py_hashtable_hash_ptr, __Py_hashtable_compare_direct, __Py_hashtable_size, __Py_hashtable_steal, __Py_hashtable_foreach, __Py_hashtable_new, __Py_hashtable_clear, __PyRecursiveMutex_Unlock, _PyThread_get_thread_ident_ex, _PyImport_AddModuleRef, _PyImport_AddModuleObject, _PyImport_AddModule, _PyState_FindModule, __PyState_AddModule, _PyState_AddModule, _PyState_RemoveModule, __PyImport_ClearExtension, _PyImport_ExtendInittab, _PyImport_GetMagicNumber, _PyImport_GetMagicTag, _PyImport_ExecCodeModule, _PyImport_ExecCodeModuleObject, _PyImport_ExecCodeModuleWithPathnames, _PyImport_ExecCodeModuleEx, _PyImport_ImportFrozenModuleObject, _PyImport_GetImporter, _PyImport_ImportModuleNoBlock, __PyTime_AsMicroseconds, _PyImport_ReloadModule, _PyImport_ImportModuleAttr, _PyInit__imp, __PyRecursiveMutex_IsLockedByCurrentThread, _PyModule_Add, _PyStatus_Exit, _PyStatus_IsError, _PyStatus_IsExit, _PyWideStringList_Insert, _PyWideStringList_Append, _Py_GetArgcArgv, __PyConfig_InitCompatConfig, _PyConfig_InitIsolatedConfig, _PyConfig_SetString, _Py_DecodeLocale, __PyConfig_AsDict, __PyConfig_FromDict, _wcschr, _setvbuf, _PyConfig_SetArgv, _PyConfig_SetWideStringList, _putchar, _iprintf, _wcstok, _strtoul, _wcstol, _setlocale, _PyConfig_Read, __Py_GetConfigsAsDict, _PyInitConfig_Create, _PyPreConfig_InitIsolatedConfig, _PyInitConfig_Free, _PyInitConfig_GetError, _strdup, _PyInitConfig_GetExitCode, _PyInitConfig_HasOption, _PyInitConfig_GetInt, _PyInitConfig_GetStr, _PyInitConfig_GetStrList, _PyInitConfig_FreeStrList, _PyInitConfig_SetInt, _PyInitConfig_SetStr, _PyInitConfig_SetStrList, _PyInitConfig_AddModule, _Py_InitializeFromInitConfig, _Py_PreInitializeFromArgs, _PyConfig_Get, _PyConfig_GetInt, _PyConfig_Names, _PyConfig_Set, _PySys_SetObject, __PyInterpreterConfig_AsDict, __PyInterpreterConfig_InitFromDict, __PyInterpreterConfig_UpdateFromDict, __PyInterpreterConfig_InitFromState, _PyMonitoring_EnterScope, _PyMonitoring_ExitScope, __PyMonitoring_FirePyStartEvent, __PyMonitoring_FirePyResumeEvent, __PyMonitoring_FirePyReturnEvent, __PyMonitoring_FirePyYieldEvent, __PyMonitoring_FireCallEvent, __PyMonitoring_FireLineEvent, __PyMonitoring_FireJumpEvent, __PyMonitoring_FireBranchEvent, __PyMonitoring_FireBranchRightEvent, __PyMonitoring_FireBranchLeftEvent, __PyMonitoring_FireCReturnEvent, __PyMonitoring_FirePyThrowEvent, __PyMonitoring_FireRaiseEvent, __PyMonitoring_FireCRaiseEvent, __PyMonitoring_FireReraiseEvent, __PyMonitoring_FireExceptionHandledEvent, __PyMonitoring_FirePyUnwindEvent, __PyMonitoring_FireStopIterationEvent, __PyCompile_GetUnaryIntrinsicName, __PyCompile_GetBinaryIntrinsicName, _PyTime_MonotonicRaw, __PyParkingLot_Park, __PyDeadline_Get, __PyParkingLot_Unpark, __PySemaphore_Init, __PySemaphore_Wait, __PySemaphore_Destroy, __PySemaphore_Wakeup, __PyEvent_IsSet, __PyEvent_Notify, __PyParkingLot_UnparkAll, _PyEvent_Wait, _PyEvent_WaitTimed, __PyRWMutex_RLock, __PyRWMutex_RUnlock, __PyRWMutex_Lock, __PyRWMutex_Unlock, __PySeqLock_LockWrite, _sched_yield, __PySeqLock_AbandonWrite, __PySeqLock_UnlockWrite, __PySeqLock_BeginRead, __PySeqLock_EndRead, __PySeqLock_AfterFork, _PyMutex_IsLocked, _PyMarshal_WriteLongToFile, _PyMarshal_WriteObjectToFile, _PyMarshal_ReadShortFromFile, _PyMarshal_ReadLongFromFile, _PyMarshal_ReadLastObjectFromFile, __Py_fstat_noraise, _fread, _PyMarshal_ReadObjectFromFile, _PyMarshal_Init, __Py_convert_optional_to_ssize_t, __Py_BuildValue_SizeT, _Py_VaBuildValue, __Py_VaBuildValue_SizeT, _PyModule_AddStringConstant, _Py_PACK_FULL_VERSION, _Py_PACK_VERSION, _PyOS_vsnprintf, _pthread_cond_init, _PyTime_TimeRaw, __PyTime_AsTimespec_clamp, __PyParkingLot_AfterFork, __PyPathConfig_ClearGlobal, _wcscpy, _Py_SetPath, _Py_SetPythonHome, _Py_SetProgramName, _Py_GetPath, _Py_GetPrefix, _Py_GetExecPrefix, _Py_GetProgramFullPath, _Py_GetPythonHome, _Py_GetProgramName, _wcsncpy, _wcsncmp, __PyPreConfig_InitCompatConfig, __Py_SetLocaleFromEnv, _PyHash_GetFuncDef, _Py_IsFinalizing, _nl_langinfo, _setenv, _Py_PreInitialize, _Py_InitializeEx, _Py_FatalError, _Py_Initialize, __PyThreadState_New, _Py_Finalize, __PyInterpreterState_New, _Py_NewInterpreter, __Py_write_noraise, _vfprintf, __Py_FatalRefcountErrorFunc, _Py_AtExit, _Py_Exit, _Py_FdIsInteractive, _PyOS_getsig, _signal, _PyOS_setsig, _siginterrupt, __Py_IsValidFD, _PyOS_mystrnicmp, __PyThreadState_GetCurrent, _PyThread_tss_create, _PyThread_tss_is_created, _PyThread_tss_delete, _PyThread_get_thread_ident, _PyThread_tss_get, _PyThread_tss_set, _PyInterpreterState_New, _PyInterpreterState_Clear, __PyInterpreterState_GetWhence, __PyInterpreterState_ObjectToID, __PyInterpreterState_GetIDObject, __PyInterpreterState_IDIncref, __PyInterpreterState_IDDecref, __PyInterpreterState_RequiresIDRef, __PyInterpreterState_RequireIDRef, __PyInterpreterState_LookUpIDObject, __PyThreadState_Prealloc, __PyThreadState_Init, _PyThreadState_DeleteCurrent, __PyThreadState_GetDict, _PyThreadState_GetID, _PyThreadState_SetAsyncExc, _PyThreadState_GetUnchecked, _PyInterpreterState_Head, _PyInterpreterState_Main, _PyInterpreterState_Next, __PyThread_CurrentFrames, __PyInterpreterState_GetEvalFrameFunc, __PyInterpreterState_SetEvalFrameFunc, _rewind, _PyRun_InteractiveLoopFlags, _PyRun_InteractiveOneObject, _PyRun_InteractiveOneFlags, _PyRun_SimpleFileExFlags, _PyRun_SimpleStringFlags, _PyErr_Display, _PyRun_FileExFlags, _PyRun_AnyFile, _PyRun_AnyFileEx, _PyRun_AnyFileFlags, _PyRun_File, _PyRun_FileEx, _PyRun_FileFlags, _PyRun_SimpleFile, _PyRun_SimpleFileEx, _PyRun_String, _PyRun_SimpleString, _Py_CompileString, _Py_CompileStringFlags, _PyRun_InteractiveOne, _PyRun_InteractiveLoop, __PyLong_AsTime_t, __PyLong_FromTime_t, __PyTime_ObjectToTime_t, __PyTime_ObjectToTimespec, __PyTime_ObjectToTimeval, __PyTime_FromSeconds, __PyTime_FromLong, __PyTime_FromSecondsObject, __PyTime_FromMillisecondsObject, __PyTime_AsLong, __PyTime_AsMilliseconds, __PyTime_AsTimeval, __PyTime_AsTimeval_clamp, __PyTime_AsTimevalTime_t, __PyTime_AsTimespec, _PyTime_Time, _clock_getres, _PyTime_Monotonic, __PyTime_MonotonicWithInfo, _PyTime_PerfCounter, __PyTime_localtime, _localtime_r, __PyTime_gmtime, _gmtime_r, __PyDeadline_Init, _getentropy, __Py_open, _close, __Py_fstat, __Py_open_noraise, __PyOS_URandomNonblock, _PySys_AuditTuple, _PySys_AddAuditHook, __PySys_GetSizeOf, _PyUnstable_PerfMapState_Init, _getpid, _open, _fdopen, _PyThread_allocate_lock, _PyUnstable_WritePerfMapEntry, _PyThread_acquire_lock, _PyThread_release_lock, _PyUnstable_PerfMapState_Fini, _PyThread_free_lock, _PyUnstable_CopyPerfMapFile, _fopen, _PySys_ResetWarnOptions, _PySys_AddWarnOptionUnicode, _PySys_AddWarnOption, _PySys_HasWarnOptions, _PySys_AddXOption, _PySys_GetXOptions, _PyThread_GetInfo, _PySys_SetPath, _PySys_SetArgvEx, _PySys_SetArgv, _PySys_WriteStdout, _PySys_FormatStdout, _access, _pthread_condattr_init, _pthread_condattr_setclock, _PyThread_start_joinable_thread, _pthread_attr_init, _pthread_attr_setstacksize, _pthread_attr_destroy, _pthread_create, _PyThread_start_new_thread, _pthread_detach, _PyThread_join_thread, _pthread_join, _PyThread_detach_thread, _pthread_self, _PyThread_exit_thread, _PyThread_acquire_lock_timed, _pthread_mutex_trylock, _PyThread_create_key, _pthread_key_create, _pthread_key_delete, _PyThread_delete_key, _PyThread_delete_key_value, _pthread_setspecific, _PyThread_set_key_value, _PyThread_get_key_value, _pthread_getspecific, _PyThread_ReInitTLS, _PyThread_get_stacksize, _PyThread_set_stacksize, _PyThread_ParseTimeoutArg, _PyThread_acquire_lock_timed_with_retries, _PyThread_tss_alloc, _PyThread_tss_free, _confstr, __PyTraceback_Add, __Py_DumpStack, __Py_InitDumpStack, _PyTraceMalloc_Track, _PyTraceMalloc_Untrack, __PyTraceMalloc_GetTraceback, _PyOS_mystricmp, __Py_strhex, __Py_strhex_bytes_with_sep, _localeconv, _mbstowcs, _mbrtowc, _Py_EncodeLocale, _fstat, _stat, __Py_stat, _fcntl, __Py_set_inheritable, _ioctl, __Py_set_inheritable_async_safe, _wcstombs, _Py_fclose, _write, _readlink, _realpath, _getcwd, __Py_normpath, __Py_dup, __Py_closerange, _sysconf, __Py_UTF8_Edit_Cost, _PyUnstable_PerfTrampoline_CompileCode, _PyUnstable_PerfTrampoline_SetPersistAfterFork, _dlopen, _dlerror, _dlsym, _PyErr_SetInterruptEx, _PyInit__ctypes, _PyInit__posixsubprocess, _PyInit__bz2, _PyInit_zlib, _PyInit__hmac, _PyInit__sqlite3, _PyInit__lzma, _PyInit__zstd, _PyInit_array, _PyInit__asyncio, _PyInit__bisect, _PyInit__csv, _PyInit__heapq, _PyInit__json, _PyInit__lsprof, _PyInit__pickle, _PyInit__queue, _PyInit__random, _PyInit__remote_debugging, _PyInit__struct, _PyInit__zoneinfo, _PyInit_math, _PyInit_cmath, _PyInit__statistics, _PyInit__decimal, _PyInit_binascii, _PyInit__md5, _PyInit__sha1, _PyInit__sha2, _PyInit__sha3, _PyInit__blake2, _PyInit_pyexpat, _PyInit__elementtree, _PyInit__codecs_cn, _PyInit__codecs_hk, _PyInit__codecs_iso2022, _PyInit__codecs_jp, _PyInit__codecs_kr, _PyInit__codecs_tw, _PyInit__multibytecodec, _PyInit_unicodedata, _PyInit_fcntl, _PyInit_mmap, _PyInit_select, _PyInit__socket, _PyInit_termios, _PyInit_xxsubtype, _PyInit__xxtestfuzz, _PyInit__testbuffer, _PyInit__testinternalcapi, _PyInit__testcapi, _PyInit__testlimitedcapi, _PyInit__testclinic, _PyInit__testclinic_limited, _PyInit_atexit, _PyInit_faulthandler, _PyInit_posix, _PyInit__signal, _PyInit__tracemalloc, _PyInit__suggestions, _PyInit__datetime, _PyInit__codecs, _PyInit__collections, _PyInit_errno, _PyInit__io, _PyInit_itertools, _PyInit__sre, _PyInit__sysconfig, _PyInit__thread, _PyInit_time, _PyInit__types, _PyInit__typing, _PyInit__weakref, _PyInit__abc, _PyInit__functools, _PyInit__locale, _PyInit__opcode, _PyInit__operator, _PyInit__stat, _PyInit__symtable, _PyInit_gc, _Py_RunMain, _perror, _kill, _Py_Main, _Py_BytesMain, _ffi_closure_alloc, _ffi_closure_free, _memmove, _memset, _strcat, _ffi_prep_cif, _ffi_prep_closure_loc, _ffi_prep_cif_var, _ffi_call, _dlclose, ___extenddftf2, ___trunctfdf2, __Py_Gid_Converter, __Py_Uid_Converter, _PyOS_BeforeFork, _PyOS_AfterFork_Parent, _fork, _PyOS_AfterFork_Child, __exit, _dup, _dup2, _chdir, _umask, __Py_RestoreSignals, _setsid, _setpgid, _setregid, _setreuid, _execve, _execv, _opendir, _dirfd, _readdir, _closedir, _BZ2_bzCompressEnd, _BZ2_bzCompressInit, _BZ2_bzCompress, _BZ2_bzDecompressEnd, _BZ2_bzDecompressInit, _BZ2_bzDecompress, _adler32, _deflateInit2_, _deflateEnd, _deflate, _deflateSetDictionary, _crc32, _inflateInit2_, _inflateEnd, _inflate, _inflateSetDictionary, _zlibVersion, _deflateCopy, _inflateCopy, _sqlite3_blob_close, _sqlite3_blob_bytes, _sqlite3_blob_read, _sqlite3_blob_write, _sqlite3_trace_v2, _sqlite3_progress_handler, _sqlite3_set_authorizer, _sqlite3_open_v2, _sqlite3_busy_timeout, _sqlite3_close, _sqlite3_get_autocommit, _sqlite3_prepare_v2, _sqlite3_step, _sqlite3_finalize, _sqlite3_close_v2, _sqlite3_backup_init, _sqlite3_backup_step, _sqlite3_backup_remaining, _sqlite3_backup_pagecount, _sqlite3_sleep, _sqlite3_backup_finish, _sqlite3_limit, _sqlite3_create_function_v2, _sqlite3_create_collation_v2, _sqlite3_interrupt, _sqlite3_serialize, _sqlite3_free, _sqlite3_malloc64, _sqlite3_deserialize, _sqlite3_libversion_number, _sqlite3_create_window_function, _sqlite3_db_config, _sqlite3_user_data, _sqlite3_aggregate_context, _sqlite3_result_error_nomem, _sqlite3_result_error_toobig, _sqlite3_result_error, _sqlite3_value_type, _sqlite3_value_double, _sqlite3_context_db_handle, _sqlite3_value_text, _sqlite3_errcode, _sqlite3_value_bytes, _sqlite3_value_blob, _sqlite3_value_int64, _sqlite3_result_null, _sqlite3_result_int64, _sqlite3_result_double, _sqlite3_result_text, _sqlite3_result_blob, _sqlite3_expanded_sql, _sqlite3_db_handle, _sqlite3_blob_open, _sqlite3_total_changes, _sqlite3_stricmp, _sqlite3_reset, _sqlite3_stmt_readonly, _sqlite3_stmt_busy, _sqlite3_bind_parameter_count, _sqlite3_bind_parameter_name, _sqlite3_column_count, _sqlite3_column_name, _sqlite3_column_decltype, _sqlite3_changes, _sqlite3_last_insert_rowid, _sqlite3_bind_null, _sqlite3_bind_int64, _sqlite3_bind_double, _sqlite3_bind_text, _sqlite3_bind_blob, _sqlite3_data_count, _sqlite3_column_blob, _sqlite3_column_bytes, _sqlite3_column_type, _sqlite3_column_double, _sqlite3_column_text, _sqlite3_column_int64, _sqlite3_exec, _sqlite3_complete, _sqlite3_initialize, _sqlite3_errstr, _sqlite3_libversion, _sqlite3_threadsafe, _sqlite3_extended_errcode, _sqlite3_errmsg, _lzma_check_is_supported, _lzma_properties_size, _lzma_properties_encode, _lzma_properties_decode, _lzma_lzma_preset, _lzma_end, _lzma_code, _lzma_easy_encoder, _lzma_stream_encoder, _lzma_alone_encoder, _lzma_raw_encoder, _lzma_auto_decoder, _lzma_stream_decoder, _lzma_alone_decoder, _lzma_get_check, _lzma_raw_decoder, _ZSTD_getErrorName, _ZSTD_cParam_getBounds, _ZSTD_dParam_getBounds, _ZSTD_isError, _ZDICT_trainFromBuffer, _ZDICT_isError, _ZDICT_finalizeDictionary, _ZSTD_findFrameCompressedSize, _ZSTD_getFrameContentSize, _ZSTD_getDictID_fromFrame, _ZSTD_versionNumber, _ZSTD_versionString, _ZSTD_defaultCLevel, _ZSTD_DStreamOutSize, _ZSTD_createCDict, _ZSTD_freeCDict, _ZSTD_createCCtx, _ZSTD_minCLevel, _ZSTD_maxCLevel, _ZSTD_CCtx_setParameter, _ZSTD_CCtx_refCDict, _ZSTD_CCtx_loadDictionary, _ZSTD_CCtx_refPrefix, _ZSTD_freeCCtx, _ZSTD_compressStream2, _ZSTD_CCtx_reset, _ZSTD_CCtx_setPledgedSrcSize, _ZSTD_compressBound, _ZSTD_createDCtx, _ZSTD_createDDict, _ZSTD_DCtx_refDDict, _ZSTD_DCtx_loadDictionary, _ZSTD_DCtx_refPrefix, _ZSTD_DCtx_setParameter, _ZSTD_freeDCtx, _ZSTD_decompressStream, _ZSTD_DCtx_reset, _ZSTD_getDictID_fromDict, _ZSTD_freeDDict, _getpagesize, _acos, _acosh, _asin, _asinh, _atan, _atanh, _cbrt, _copysign, _cosh, _erf, _erfc, _exp2, _expm1, _fabs, _fma, _log10, _log2, _sinh, _sqrt, _tan, _tanh, _nextafter, _log1p, _strncat, _flock, _mmap, _munmap, _msync, _madvise, _ftruncate, _mremap, _select, _poll, _inet_ntop, _gethostbyname, _gethostbyaddr, _gethostname, _getservbyname, _ntohs, _htons, _getservbyport, _ntohl, _htonl, _inet_aton, _inet_ntoa, _inet_pton, _gai_strerror, _freeaddrinfo, _if_nameindex, _if_freenameindex, _if_nametoindex, _if_indextoname, ___h_errno_location, _hstrerror, _getsockname, _socket, _getsockopt, _bind, _getpeername, _listen, _setsockopt, _shutdown, _accept4, _accept, _connect, _recv, _recvfrom, _send, _sendto, _recvmsg, _sendmsg, _tcgetattr, _cfgetispeed, _cfgetospeed, _cfsetispeed, _cfsetospeed, _tcsetattr, _tcsendbreak, _tcdrain, _tcflush, _tcflow, _clock, __Py_Get_Getpath_CodeObject, _usleep, _raise, __pthread_cleanup_push, _PyUnstable_AtExit, _PyInit__testcapi_datetime, _getrlimit, _setrlimit, _sigfillset, _pthread_sigmask, _PyOS_AfterFork, __PyLong_FromGid, _sigemptyset, _sigaddset, _ttyname_r, _fchdir, _fchmod, _fchmodat, _chmod, _fchown, _fchownat, _chown, _chroot, _ctermid, _fdopendir, _rewinddir, _mkdirat, _mkdir, _getpriority, _readlinkat, _unlinkat, _rmdir, _symlink, _system, _uname, _futimesat, _futimens, _times, _fexecve, _posix_openpt, _grantpt, _unlockpt, _ptsname_r, _login_tty, _getgid, _getpgrp, _getppid, _getuid, _getlogin_r, _killpg, _setuid, _setgid, _getpgid, _setpgrp, _wait, _wait3, _wait4, _waitid, _waitpid, _getsid, _tcgetpgrp, _tcsetpgrp, _openat, _dup3, _lockf, _readv, _pread, _writev, _pwrite, _pipe, _truncate, _posix_fadvise, _unsetenv, _fsync, _sync, _fdatasync, _fstatvfs, _statvfs, _fpathconf, _pathconf, _getloadavg, _lstat, _fstatat, _renameat, _rename, _unlink, _utimes, _PySignal_SetWakeupFd, __PyErr_CheckSignals, _PyErr_SetInterrupt, _PyOS_InterruptOccurred, __PyOS_IsMainThread, _getitimer, _strsignal, _pause, _sigpending, _sigwait, _sigwaitinfo, _sigtimedwait, _sigismember, ___libc_current_sigrtmin, ___libc_current_sigrtmax, _strftime, _isalnum, _tolower, _toupper, _clock_settime, _pthread_getcpuclockid, _clock_nanosleep, _time, _mktime, _wcsftime, _wcscoll, _wcsxfrm, _gettext, _dgettext, _dcgettext, _textdomain, _bindtextdomain, _bind_textdomain_codeset, _gettimeofday, ___small_fprintf, _ffi_prep_closure, _ffi_get_struct_offsets, _ffi_java_raw_size, _ffi_java_raw_to_ptrarray, _ffi_java_ptrarray_to_raw, _ffi_java_raw_call, _ffi_prep_java_raw_closure_loc, _ffi_prep_java_raw_closure, _ffi_tramp_is_supported, _ffi_tramp_alloc, _ffi_tramp_set_parms, _ffi_tramp_get_addr, _ffi_tramp_free, __hiwire_immortal_add, __hiwire_immortal_get, __hiwire_get, __hiwire_set, _hiwire_num_refs, __hiwire_slot_info, __hiwire_delete, __hiwire_immortal_table_init, _lzma_version_number, _lzma_version_string, _lzma_get_progress, _lzma_memusage, _lzma_memlimit_get, _lzma_memlimit_set, _lzma_block_compressed_size, _lzma_block_unpadded_size, _lzma_check_size, _lzma_block_total_size, _lzma_filters_copy, _lzma_physmem, _lzma_index_init, _lzma_index_end, _lzma_index_memusage, _lzma_index_memused, _lzma_index_block_count, _lzma_index_stream_count, _lzma_index_size, _lzma_vli_size, _lzma_index_total_size, _lzma_index_stream_size, _lzma_index_file_size, _lzma_index_uncompressed_size, _lzma_index_checks, _lzma_index_stream_flags, _lzma_stream_flags_compare, _lzma_index_stream_padding, _lzma_index_append, _lzma_index_cat, _lzma_index_dup, _lzma_index_iter_init, _lzma_index_iter_rewind, _lzma_index_iter_next, _lzma_index_iter_locate, _lzma_block_buffer_bound, _lzma_block_buffer_encode, _lzma_block_uncomp_encode, _lzma_block_header_size, _lzma_block_header_encode, _lzma_block_encoder, _lzma_filter_flags_size, _lzma_vli_encode, _lzma_filter_flags_encode, _lzma_crc32, _lzma_easy_buffer_encode, _lzma_stream_buffer_encode, _lzma_easy_encoder_memusage, _lzma_raw_encoder_memusage, _lzma_raw_buffer_encode, _lzma_filter_encoder_is_supported, _lzma_filters_update, _lzma_index_encoder, _lzma_index_buffer_encode, _lzma_stream_buffer_bound, _lzma_stream_header_encode, _lzma_stream_footer_encode, _lzma_cputhreads, _lzma_stream_encoder_mt, _lzma_stream_encoder_mt_memusage, _pthread_condattr_destroy, _lzma_block_buffer_decode, _lzma_block_decoder, _lzma_block_header_decode, _lzma_vli_decode, _lzma_filter_flags_decode, _lzma_easy_decoder_memusage, _lzma_raw_decoder_memusage, _lzma_raw_buffer_decode, _lzma_filter_decoder_is_supported, _lzma_index_decoder, _lzma_index_buffer_decode, _lzma_index_hash_init, _lzma_index_hash_end, _lzma_index_hash_size, _lzma_index_hash_append, _lzma_index_hash_decode, _lzma_stream_buffer_decode, _lzma_stream_header_decode, _lzma_stream_footer_decode, _lzma_crc64, _lzma_mf_is_supported, _lzma_mode_is_supported, _sqlite3_status64, _sqlite3_log, _sqlite3_status, _sqlite3_db_status, _sqlite3_msize, _sqlite3_vfs_find, _sqlite3_config, _sqlite3_os_init, _sqlite3_vfs_register, _sqlite3_vfs_unregister, _sqlite3_release_memory, _sqlite3_memory_alarm, _sqlite3_soft_heap_limit64, _sqlite3_memory_used, _sqlite3_soft_heap_limit, _sqlite3_hard_heap_limit64, _sqlite3_memory_highwater, _sqlite3_malloc, _sqlite3_realloc, _sqlite3_realloc64, _sqlite3_str_vappendf, _sqlite3_str_append, ___multf3, ___addtf3, ___gttf2, ___getf2, ___divtf3, ___lttf2, _sqlite3_str_appendf, _sqlite3_str_appendchar, _sqlite3_str_reset, ___fixtfsi, ___floatsitf, ___subtf3, _sqlite3_str_appendall, _sqlite3_str_finish, _sqlite3_str_errcode, _sqlite3_str_length, _sqlite3_str_value, _sqlite3_str_new, _sqlite3_vmprintf, _sqlite3_mprintf, _sqlite3_vsnprintf, _sqlite3_snprintf, _sqlite3_randomness, _sqlite3_strnicmp, _sqlite3_uri_parameter, _sqlite3_uri_boolean, _sqlite3_os_end, _sqlite3_column_int, _sqlite3_file_control, _sqlite3_database_file_object, _sqlite3_enable_shared_cache, _sqlite3_expired, _sqlite3_clear_bindings, _sqlite3_value_bytes16, _sqlite3_value_int, _sqlite3_value_subtype, _sqlite3_value_pointer, _sqlite3_value_text16, _sqlite3_value_text16be, _sqlite3_value_text16le, _sqlite3_value_nochange, _sqlite3_value_frombind, _sqlite3_value_dup, _sqlite3_value_free, _sqlite3_result_blob64, _sqlite3_result_error16, _sqlite3_result_int, _sqlite3_result_pointer, _sqlite3_result_subtype, _sqlite3_result_text64, _sqlite3_result_text16, _sqlite3_result_text16be, _sqlite3_result_text16le, _sqlite3_result_value, _sqlite3_result_zeroblob, _sqlite3_result_zeroblob64, _sqlite3_result_error_code, _sqlite3_vtab_nochange, _sqlite3_vtab_in_first, _sqlite3_vtab_in_next, _sqlite3_get_auxdata, _sqlite3_set_auxdata, _sqlite3_aggregate_count, _sqlite3_column_bytes16, _sqlite3_column_value, _sqlite3_column_text16, _sqlite3_column_name16, _sqlite3_column_decltype16, _sqlite3_bind_blob64, _sqlite3_bind_int, _sqlite3_bind_pointer, _sqlite3_bind_text64, _sqlite3_bind_text16, _sqlite3_bind_value, _sqlite3_bind_zeroblob, _sqlite3_bind_zeroblob64, _sqlite3_bind_parameter_index, _sqlite3_transfer_bindings, _sqlite3_stmt_isexplain, _sqlite3_next_stmt, _sqlite3_stmt_status, _sqlite3_sql, _sqlite3_value_numeric_type, _sqlite3_blob_reopen, _sqlite3_strglob, _sqlite3_strlike, _sqlite3_load_extension, _sqlite3_enable_load_extension, _sqlite3_auto_extension, _sqlite3_cancel_auto_extension, _sqlite3_reset_auto_extension, _sqlite3_prepare, _sqlite3_prepare_v3, _sqlite3_prepare16, _sqlite3_prepare16_v2, _sqlite3_prepare16_v3, _sqlite3_get_table, _sqlite3_free_table, _sqlite3_create_module, _sqlite3_create_module_v2, _sqlite3_drop_modules, _sqlite3_declare_vtab, _sqlite3_vtab_on_conflict, _sqlite3_vtab_config, _sqlite3_vtab_collation, _sqlite3_vtab_in, _sqlite3_vtab_rhs_value, _sqlite3_vtab_distinct, _sqlite3_keyword_name, _sqlite3_keyword_count, _sqlite3_keyword_check, _sqlite3_complete16, _sqlite3_shutdown, _sqlite3_db_mutex, _sqlite3_db_release_memory, _sqlite3_db_cacheflush, _sqlite3_set_last_insert_rowid, _sqlite3_changes64, _sqlite3_total_changes64, _sqlite3_txn_state, _sqlite3_busy_handler, _sqlite3_create_function, _sqlite3_create_function16, _sqlite3_overload_function, _sqlite3_trace, _sqlite3_profile, _sqlite3_commit_hook, _sqlite3_update_hook, _sqlite3_rollback_hook, _sqlite3_autovacuum_pages, _sqlite3_wal_autocheckpoint, _sqlite3_wal_hook, _sqlite3_wal_checkpoint_v2, _sqlite3_wal_checkpoint, _sqlite3_error_offset, _sqlite3_errmsg16, _sqlite3_system_errno, _sqlite3_open, _sqlite3_free_filename, _sqlite3_open16, _sqlite3_create_collation, _sqlite3_create_collation16, _sqlite3_collation_needed, _sqlite3_collation_needed16, _sqlite3_global_recover, _sqlite3_thread_cleanup, _sqlite3_table_column_metadata, _sqlite3_extended_result_codes, _sqlite3_test_control, _sqlite3_create_filename, _sqlite3_uri_key, _sqlite3_uri_int64, _sqlite3_filename_database, _sqlite3_filename_journal, _sqlite3_filename_wal, _sqlite3_db_name, _sqlite3_db_filename, _sqlite3_db_readonly, _sqlite3_compileoption_used, _sqlite3_compileoption_get, _sqlite3_rtree_geometry_callback, _sqlite3_rtree_query_callback, _sqlite3_sourceid, ___floatditf, _qsort, _posix_fallocate, _geteuid, _trunc, _FSE_versionNumber, _FSE_isError, _FSE_getErrorName, _ERR_getErrorString, _HUF_isError, _HUF_getErrorName, _FSE_readNCount_bmi2, _FSE_readNCount, _HUF_readStats, _HUF_readStats_wksp, _FSE_decompress_wksp_bmi2, _FSE_buildDTable_wksp, _POOL_create, _POOL_create_advanced, _POOL_free, _POOL_joinJobs, _POOL_resize, _POOL_add, _POOL_tryAdd, _POOL_sizeof, _ZSTD_XXH_versionNumber, _ZSTD_XXH32, _ZSTD_XXH32_createState, _ZSTD_XXH32_freeState, _ZSTD_XXH32_copyState, _ZSTD_XXH32_reset, _ZSTD_XXH32_update, _ZSTD_XXH32_digest, _ZSTD_XXH32_canonicalFromHash, _ZSTD_XXH32_hashFromCanonical, _ZSTD_XXH64, _ZSTD_XXH64_createState, _ZSTD_XXH64_freeState, _ZSTD_XXH64_copyState, _ZSTD_XXH64_reset, _ZSTD_XXH64_update, _ZSTD_XXH64_digest, _ZSTD_XXH64_canonicalFromHash, _ZSTD_XXH64_hashFromCanonical, _ZSTD_getErrorCode, _ZSTD_getErrorString, _FSE_buildCTable_wksp, _FSE_NCountWriteBound, _FSE_writeNCount, _FSE_optimalTableLog_internal, _FSE_optimalTableLog, _FSE_normalizeCount, _FSE_buildCTable_rle, _FSE_compress_usingCTable, _FSE_compressBound, _HIST_isError, _HIST_add, _HIST_count_simple, _HIST_countFast_wksp, _HIST_count_wksp, _HIST_countFast, _HIST_count, _HUF_readCTableHeader, _HUF_writeCTable_wksp, _HUF_readCTable, _HUF_getNbBitsFromCTable, _HUF_buildCTable_wksp, _HUF_estimateCompressedSize, _HUF_validateCTable, _HUF_compressBound, _HUF_compress1X_usingCTable, _HUF_compress4X_usingCTable, _HUF_cardinality, _HUF_minTableLog, _HUF_optimalTableLog, _HUF_compress1X_repeat, _HUF_compress4X_repeat, _ZSTD_createCCtx_advanced, _ZSTD_initStaticCCtx, _ZSTD_sizeof_CCtx, _ZSTD_sizeof_CStream, _ZSTD_getSeqStore, _ZSTD_createCCtxParams, _ZSTD_freeCCtxParams, _ZSTD_CCtxParams_reset, _ZSTD_CCtxParams_init, _ZSTD_CCtxParams_init_advanced, _ZSTD_checkCParams, _ZSTD_CCtxParams_setParameter, _ZSTD_CCtx_getParameter, _ZSTD_CCtxParams_getParameter, _ZSTD_CCtx_setParametersUsingCCtxParams, _ZSTD_CCtx_setCParams, _ZSTD_CCtx_setFParams, _ZSTD_CCtx_setParams, _ZSTD_CCtx_loadDictionary_advanced, _ZSTD_CCtx_loadDictionary_byReference, _ZSTD_CCtx_refThreadPool, _ZSTD_CCtx_refPrefix_advanced, _ZSTD_cycleLog, _ZSTD_adjustCParams, _ZSTD_getCParamsFromCCtxParams, _ZSTD_estimateCCtxSize_usingCCtxParams, _ZSTD_ldm_getTableSize, _ZSTD_ldm_getMaxNbSeq, _ZSTD_estimateCCtxSize_usingCParams, _ZSTD_ldm_adjustParameters, _ZSTD_estimateCCtxSize, _ZSTD_estimateCStreamSize_usingCCtxParams, _ZSTD_estimateCStreamSize_usingCParams, _ZSTD_estimateCStreamSize, _ZSTD_getFrameProgression, _ZSTD_toFlushNow, _ZSTD_reset_compressedBlockState, _ZSTD_invalidateRepCodes, _ZSTD_copyCCtx, _ZSTD_seqToCodes, _ZSTD_selectBlockCompressor, _ZSTD_resetSeqStore, _ZSTD_sequenceBound, _ZSTD_generateSequences, _ZSTD_compress2, _ZSTD_mergeBlockDelimiters, _ZSTD_buildBlockEntropyStats, _ZSTD_writeSkippableFrame, _ZSTD_writeLastEmptyBlock, _ZSTD_referenceExternalSequences, _ZSTD_compressContinue_public, _ZSTD_splitBlock, _ZSTD_compressSuperBlock, _ZSTD_compressContinue, _ZSTD_getBlockSize, _ZSTD_compressBlock_deprecated, _ZSTD_compressBlock, _ZSTD_loadCEntropy, _ZSTD_compressBegin_advanced_internal, _ZSTD_compressBegin_advanced, _ZSTD_compressBegin_usingDict, _ZSTD_compressBegin, _ZSTD_CCtx_trace, _ZSTD_compressEnd_public, _ZSTD_compressEnd, _ZSTD_compress_advanced, _ZSTD_compress_advanced_internal, _ZSTD_compress_usingDict, _ZSTD_compressCCtx, _ZSTD_compress, _ZSTD_estimateCDictSize_advanced, _ZSTD_estimateCDictSize, _ZSTD_sizeof_CDict, _ZSTD_createCDict_advanced, _ZSTD_createCDict_advanced2, _ZSTD_createCDict_byReference, _ZSTD_initStaticCDict, _ZSTD_getCParamsFromCDict, _ZSTD_getDictID_fromCDict, _ZSTD_compressBegin_usingCDict_advanced, _ZSTD_compressBegin_usingCDict_deprecated, _ZSTD_compressBegin_usingCDict, _ZSTD_compress_usingCDict_advanced, _ZSTD_compress_usingCDict, _ZSTD_createCStream, _ZSTD_createCStream_advanced, _ZSTD_initStaticCStream, _ZSTD_freeCStream, _ZSTD_CStreamInSize, _ZSTD_CStreamOutSize, _ZSTD_resetCStream, _ZSTD_initCStream_internal, _ZSTD_initCStream_usingCDict_advanced, _ZSTD_initCStream_usingCDict, _ZSTD_initCStream_advanced, _ZSTD_initCStream_usingDict, _ZSTD_initCStream_srcSize, _ZSTD_initCStream, _ZSTD_compressStream, _ZSTD_compressStream2_simpleArgs, _ZSTD_compressSequences, _ZSTD_convertBlockSequences, _ZSTD_get1BlockSummary, _ZSTD_compressSequencesAndLiterals, _ZSTD_flushStream, _ZSTD_endStream, _ZSTD_getCParams, _ZSTD_getParams, _ZSTD_registerSequenceProducer, _ZSTD_CCtxParams_registerSequenceProducer, _ZSTD_selectEncodingType, _ZSTD_buildCTable, _ZSTD_ldm_skipRawSeqStoreBytes, _ZSTD_ldm_skipSequences, _ZSTD_ldm_blockCompress, _ZSTD_ldm_generateSequences, _ZSTD_crossEntropyCost, _ZSTD_fseBitCost, _ZSTD_compressLiterals, _ZSTD_encodeSequences, _ZSTD_ldm_fillHashTable, _ZSTD_fillHashTable, _ZSTD_fillDoubleHashTable, _ZSTD_dedicatedDictSearch_lazy_loadDictionary, _ZSTD_row_update, _ZSTD_insertAndFindFirstIndex, _ZSTD_updateTree, _ZSTD_compressBlock_fast, _ZSTD_compressBlock_doubleFast, _ZSTD_compressBlock_greedy, _ZSTD_compressBlock_lazy, _ZSTD_compressBlock_lazy2, _ZSTD_compressBlock_btlazy2, _ZSTD_compressBlock_btopt, _ZSTD_compressBlock_btultra, _ZSTD_compressBlock_btultra2, _ZSTD_compressBlock_fast_extDict, _ZSTD_compressBlock_doubleFast_extDict, _ZSTD_compressBlock_greedy_extDict, _ZSTD_compressBlock_lazy_extDict, _ZSTD_compressBlock_lazy2_extDict, _ZSTD_compressBlock_btlazy2_extDict, _ZSTD_compressBlock_btopt_extDict, _ZSTD_compressBlock_btultra_extDict, _ZSTD_compressBlock_fast_dictMatchState, _ZSTD_compressBlock_doubleFast_dictMatchState, _ZSTD_compressBlock_greedy_dictMatchState, _ZSTD_compressBlock_lazy_dictMatchState, _ZSTD_compressBlock_lazy2_dictMatchState, _ZSTD_compressBlock_btlazy2_dictMatchState, _ZSTD_compressBlock_btopt_dictMatchState, _ZSTD_compressBlock_btultra_dictMatchState, _ZSTD_compressBlock_greedy_dedicatedDictSearch, _ZSTD_compressBlock_lazy_dedicatedDictSearch, _ZSTD_compressBlock_lazy2_dedicatedDictSearch, _ZSTD_compressBlock_greedy_row, _ZSTD_compressBlock_lazy_row, _ZSTD_compressBlock_lazy2_row, _ZSTD_compressBlock_greedy_extDict_row, _ZSTD_compressBlock_lazy_extDict_row, _ZSTD_compressBlock_lazy2_extDict_row, _ZSTD_compressBlock_greedy_dictMatchState_row, _ZSTD_compressBlock_lazy_dictMatchState_row, _ZSTD_compressBlock_lazy2_dictMatchState_row, _ZSTD_compressBlock_greedy_dedicatedDictSearch_row, _ZSTD_compressBlock_lazy_dedicatedDictSearch_row, _ZSTD_compressBlock_lazy2_dedicatedDictSearch_row, _ZSTD_noCompressLiterals, _ZSTD_compressRleLiteralsBlock, _ZSTDMT_createCCtx_advanced, _ZSTDMT_freeCCtx, _ZSTDMT_sizeof_CCtx, _ZSTDMT_updateCParams_whileCompressing, _ZSTDMT_getFrameProgression, _ZSTDMT_toFlushNow, _ZSTDMT_initCStream_internal, _ZSTDMT_nextInputSizeHint, _ZSTDMT_compressStream_generic, _HUF_readDTableX1_wksp, _HUF_readDTableX2_wksp, _HUF_decompress1X2_DCtx_wksp, _HUF_selectDecoder, _HUF_decompress1X_DCtx_wksp, _HUF_decompress1X1_DCtx_wksp, _HUF_decompress1X_usingDTable, _HUF_decompress4X_usingDTable, _HUF_decompress4X_hufOnly_wksp, _ZSTD_DDict_dictContent, _ZSTD_DDict_dictSize, _ZSTD_copyDDictParameters, _ZSTD_createDDict_advanced, _ZSTD_loadDEntropy, _ZSTD_createDDict_byReference, _ZSTD_initStaticDDict, _ZSTD_estimateDDictSize, _ZSTD_sizeof_DDict, _ZSTD_getDictID_fromDDict, _ZSTD_sizeof_DCtx, _ZSTD_estimateDCtxSize, _ZSTD_initStaticDCtx, _ZSTD_createDCtx_advanced, _ZSTD_copyDCtx, _ZSTD_isFrame, _ZSTD_isSkippableFrame, _ZSTD_frameHeaderSize, _ZSTD_getFrameHeader_advanced, _ZSTD_getFrameHeader, _ZSTD_readSkippableFrame, _ZSTD_findDecompressedSize, _ZSTD_getDecompressedSize, _ZSTD_decompressBound, _ZSTD_getcBlockSize, _ZSTD_decompressionMargin, _ZSTD_insertBlock, _ZSTD_checkContinuity, _ZSTD_decompress_usingDict, _ZSTD_decompressBegin_usingDDict, _ZSTD_decompressBegin_usingDict, _ZSTD_decompressBlock_internal, _ZSTD_decompressDCtx, _ZSTD_decompress_usingDDict, _ZSTD_decompress, _ZSTD_nextSrcSizeToDecompress, _ZSTD_nextInputType, _ZSTD_decompressContinue, _ZSTD_buildFSETable, _ZSTD_decompressBegin, _ZSTD_createDStream, _ZSTD_initStaticDStream, _ZSTD_createDStream_advanced, _ZSTD_freeDStream, _ZSTD_DStreamInSize, _ZSTD_DCtx_loadDictionary_advanced, _ZSTD_DCtx_loadDictionary_byReference, _ZSTD_DCtx_refPrefix_advanced, _ZSTD_initDStream_usingDict, _ZSTD_initDStream, _ZSTD_initDStream_usingDDict, _ZSTD_resetDStream, _ZSTD_DCtx_setMaxWindowSize, _ZSTD_DCtx_setFormat, _ZSTD_DCtx_getParameter, _ZSTD_sizeof_DStream, _ZSTD_decodingBufferSize_min, _ZSTD_estimateDStreamSize, _ZSTD_estimateDStreamSize_fromFrame, _ZSTD_decompressStream_simpleArgs, _ZSTD_decodeLiteralsBlock_wrapper, _ZSTD_decodeSeqHeaders, _ZSTD_decompressBlock_deprecated, _ZSTD_decompressBlock, _COVER_sum, _COVER_warnOnSmallCorpus, _COVER_computeEpochs, _ZDICT_trainFromBuffer_cover, _COVER_checkTotalCompressedSize, _COVER_best_init, _COVER_best_wait, _COVER_best_destroy, _COVER_best_start, _COVER_best_finish, _COVER_dictSelectionError, _COVER_dictSelectionIsError, _COVER_dictSelectionFree, _COVER_selectDict, _ZDICT_optimizeTrainFromBuffer_cover, _divsufsort, _divbwt, _ZDICT_trainFromBuffer_fastCover, _ZDICT_optimizeTrainFromBuffer_fastCover, _ZDICT_getErrorName, _ZDICT_getDictID, _ZDICT_getDictHeaderSize, _ZDICT_trainFromBuffer_legacy, _ZDICT_addEntropyTablesFromBuffer, _emscripten_GetProcAddress, _emscripten_webgl1_get_proc_address, __webgl1_match_ext_proc_address_without_suffix, _emscripten_webgl2_get_proc_address, __webgl2_match_ext_proc_address_without_suffix, _emscripten_webgl_get_proc_address, _SDL_GL_GetProcAddress, _eglGetProcAddress, _glfwGetProcAddress, _emscripten_webgl_init_context_attributes, _emscripten_is_main_runtime_thread, _BZ2_blockSort, _BZ2_bz__AssertH__fail, _BZ2_bzlibVersion, _BZ2_compressBlock, _BZ2_indexIntoF, _BZ2_decompress, _BZ2_bzWriteOpen, _BZ2_bzWrite, _BZ2_bzWriteClose, _BZ2_bzWriteClose64, _BZ2_bzReadOpen, _BZ2_bzReadClose, _BZ2_bzRead, _fgetc, _BZ2_bzReadGetUnused, _BZ2_bzBuffToBuffCompress, _BZ2_bzBuffToBuffDecompress, _BZ2_bzopen, _BZ2_bzdopen, _BZ2_bzread, _BZ2_bzwrite, _BZ2_bzflush, _BZ2_bzclose, _BZ2_bzerror, _BZ2_bsInitWrite, _BZ2_hbMakeCodeLengths, _BZ2_hbAssignCodes, _BZ2_hbCreateDecodeTables, _adler32_z, _adler32_combine, _adler32_combine64, _compress2, _deflateInit_, _compress, _compressBound, _get_crc_table, _crc32_z, _crc32_combine64, _crc32_combine, _crc32_combine_gen64, _crc32_combine_gen, _crc32_combine_op, _zcalloc, _zcfree, _deflateReset, _deflateResetKeep, _deflateGetDictionary, __tr_init, _deflateSetHeader, _deflatePending, _deflatePrime, __tr_flush_bits, _deflateParams, __tr_align, __tr_stored_block, _deflateTune, _deflateBound, __tr_flush_block, _gzclose, _gzclose_r, _gzclose_w, _gzopen, _gzopen64, _gzdopen, _gzbuffer, _gzrewind, _gzseek64, _gz_error, _gzseek, _gztell64, _gztell, _gzoffset64, _gzoffset, _gzeof, _gzerror, _gzclearerr, _gz_intmax, _gzread, _gzfread, _gzgetc, _gzgetc_, _gzungetc, _inflateReset, _gzgets, _gzdirect, _gzwrite, _gzfwrite, _gzputc, _gzputs, _gzvprintf, _gzprintf, _gzflush, _gzsetparams, _inflateBackInit_, _inflateBack, _inflate_table, _inflate_fast, _inflateBackEnd, _inflateResetKeep, _inflateReset2, _inflateInit_, _inflatePrime, _inflateGetDictionary, _inflateGetHeader, _inflateSync, _inflateSyncPoint, _inflateUndermine, _inflateValidate, _inflateMark, _inflateCodesUsed, __tr_tally, _uncompress2, _uncompress, _zlibCompileFlags, _zError, _getdate, _stime, _clock_getcpuclockid, _getpwnam, _getpwuid, _getpwnam_r, _getpwuid_r, _setpwent, _endpwent, _getpwent, _getgrnam, _getgrgid, _getgrnam_r, _getgrgid_r, _getgrent, _endgrent, _setgrent, _vfork, _posix_spawn, _popen, _pclose, _setgroups, _sigaltstack, ___syscall_uname, ___syscall_setpgid, ___syscall_sync, ___syscall_getsid, ___syscall_getpgid, ___syscall_getpid, ___syscall_getppid, ___syscall_linkat, ___syscall_getgroups32, ___syscall_setsid, ___syscall_getrusage, ___syscall_getpriority, ___syscall_setpriority, ___syscall_setdomainname, ___syscall_getgid32, ___syscall_geteuid32, ___syscall_getegid32, ___syscall_getresuid32, ___syscall_getresgid32, ___syscall_pause, ___syscall_madvise, ___syscall_mlock, ___syscall_munlock, ___syscall_mprotect, ___syscall_mremap, ___syscall_mlockall, ___syscall_munlockall, ___syscall_prlimit64, ___syscall_acct, ___syscall_mincore, ___syscall_pipe2, ___syscall_pselect6, ___syscall_ppoll, ___syscall_recvmmsg, ___syscall_sendmmsg, ___syscall_shutdown, ___syscall_socketpair, ___syscall_wait4, __Exit, _cosf, _sinf, _expf, ___ctype_b_loc, ___ctype_get_mb_cur_max, ___get_tp, ___ctype_tolower_loc, ___ctype_toupper_loc, ___emscripten_environ_constructor, _emscripten_builtin_malloc, ___flt_rounds, _fegetround, ___fmodeflags, ___fpclassify, ___fpclassifyf, ___fpclassifyl, ___mo_lookup, ___month_to_secs, ___overflow, _scalbn, _floor, ___fixtfdi, ___signbit, ___signbitf, ___signbitl, _memcpy, ___stack_chk_fail, ___wasi_syscall_ret, ___synccall, _fabsl, ___year_to_secs, ___lock, ___unlock, _tzset, ___uflow, ___fxstat, ___fxstatat, ___lxstat, ___xstat, ___xmknod, _mknod, ___xmknodat, _mknodat, _a64l, _l64a, _abs, _acct, _acosf, _sqrtf, _acoshf, _log1pf, _logf, _acoshl, _acosl, ___eqtf2, ___netf2, _sqrtl, _alarm, _setitimer, _aligned_alloc, _posix_memalign, _alphasort, _strcoll, _asctime, ___nl_langinfo_l, _asctime_r, _asinf, _fabsf, _asinhf, _asinhl, _asinl, _asprintf, _vasprintf, _at_quick_exit, _atan2f, _atanf, _atan2l, _atanl, _atanhf, _atanhl, _log1pl, ___funcs_on_exit, ____cxa_finalize, ____cxa_atexit, ___libc_calloc, ___atexit, ___cxa_atexit, ___cxa_finalize, _atof, _strtod, _atoi, _atol, _atoll, _basename, ___xpg_basename, _bcmp, _bcopy, _strcasecmp, _bsearch, _btowc, _bzero, _c16rtomb, _wcrtomb, _c32rtomb, _cabs, _cabsf, _hypotf, _cabsl, _hypotl, _cacos, _casin, _cacosf, _casinf, _cacosh, _cacoshf, _cacoshl, _cacosl, _casinl, _call_once, _carg, _cargf, _cargl, _csqrt, _clog, _csqrtf, _clogf, _casinh, _casinhf, _casinhl, _csqrtl, _clogl, _catan, _catanf, _catanh, _catanhf, _catanhl, _catanl, _logl, ___trunctfsf2, ___extendsftf2, _catclose, _catgets, _catopen, _cbrtf, _cbrtl, _ccos, _ccosh, _ccosf, _ccoshf, _coshf, _sinhf, _copysignf, _ccoshl, _ccosl, _ceil, _ceilf, _ceill, _cexp, _cexpf, _cexpl, _cfmakeraw, _cfsetspeed, _cimag, _cimagf, _cimagl, _clearenv, _clearerr_unlocked, ___wasi_timestamp_to_timespec, _emscripten_thread_sleep, _cnd_broadcast, _cnd_destroy, _cnd_init, _cnd_signal, _cnd_timedwait, _cnd_wait, _conj, _conjf, _conjl, _copysignl, _expm1f, _coshl, _cosl, _cpow, ___muldc3, _cpowf, ___mulsc3, _cpowl, ___unordtf2, ___multc3, _cproj, _cprojf, _cprojl, _creal, _crealf, _creall, _creat, _crypt, ___crypt_blowfish, ___crypt_des, ___crypt_md5, _strnlen, ___crypt_sha256, ___crypt_sha512, _crypt_r, _sprintf, _csin, _csinh, _csinf, _csinhf, _csinhl, _csinl, _ctan, _ctanh, _ctanf, _ctanhf, _tanf, _ctanhl, _ctanl, _ctime, _localtime, _ctime_r, _dcngettext, ___gettextdomain, _dngettext, _difftime, _dirname, _div, _dladdr, ___libc_free, ___libc_malloc, ___dl_seterr, _dn_comp, _dn_expand, _dn_skipname, _dprintf, _vdprintf, _erand48, _drand48, ___wasi_fd_is_valid, ___duplocale, _duplocale, _new_dlevent, __emscripten_find_dylib, _strspn, _pthread_setcancelstate, _emscripten_dlopen, _emscripten_dlopen_promise, _ecvt, _emscripten_console_logf, _emscripten_console_errorf, _emscripten_console_warnf, _emscripten_console_tracef, _emscripten_outf, _emscripten_errf, _emscripten_log, _emscripten_fiber_init, _emscripten_fiber_init_from_current_context, _emscripten_get_heap_size, __emscripten_memcpy_bulkmem, _emscripten_builtin_memcpy, ___memset, _emscripten_builtin_memset, __emscripten_memset_bulkmem, ___syscall_munmap, _emscripten_builtin_free, ___syscall_msync, ___syscall_mmap2, _emscripten_builtin_memalign, _emscripten_scan_stack, _emscripten_stack_get_current, _dysize, __emscripten_yield, __emscripten_check_timers, _setkey, _encrypt, _sethostent, _gethostent, _getnetent, _endhostent, _setnetent, _endnetent, _erff, _erfcf, _erfl, _erfcl, _vwarn, _fprintf, _vwarnx, _putc, _verr, _verrx, _warn, _warnx, _err, _errx, _ether_aton_r, _ether_aton, _ether_ntoa_r, _ether_ntoa, _ether_line, _ether_ntohost, _ether_hostton, _euidaccess, _faccessat, _eaccess, _execl, _execle, _execlp, _execvp, _execvpe, _exp10, _pow10, _exp10f, _modff, _exp2f, _pow10f, _exp10l, _modfl, _exp2l, _powl, _pow10l, ___letf2, _scalbnl, _expl, _explicit_bzero, _expm1l, __flushlbf, ___fsetlocking, ___fwriting, ___freading, ___freadable, ___fwritable, ___flbf, ___fbufsize, ___fpending, ___fpurge, _fpurge, ___freadahead, ___freadptr, ___freadptrinc, ___fseterr, _fcvt, _fdim, _fdimf, _fdiml, _fegetexceptflag, _fetestexcept, _feholdexcept, _fegetenv, _feclearexcept, _feraiseexcept, ___fesetround, _fesetenv, _feof_unlocked, __IO_feof_unlocked, _ferror_unlocked, __IO_ferror_unlocked, _fesetexceptflag, _fesetround, _feupdateenv, _fflush_unlocked, _ffs, _ffsl, _ffsll, _emscripten_futex_wake, _fgetln, _getline, _fgetpos, _fgets_unlocked, ___fgetwc_unlocked, _fwide, _mbtowc, _fgetwc, _fgetwc_unlocked, _getwc_unlocked, _fgetws, _fgetws_unlocked, _fileno_unlocked, _finite, _finitef, ___floatunsitf, _fmodl, _ftrylockfile, _floorf, _floorl, _fmaf, _fmal, _frexpl, _nextafterl, _ilogbl, _fmax, _fmaxf, _fmaxl, _fmemopen, _fmin, _fminf, _fminl, _fmodf, _fmtmsg, _fnmatch, _towupper, _towlower, _wctype, _iswctype, _forkpty, _openpty, _pipe2, _vfiprintf, ___small_vfprintf, _fputs_unlocked, ___fputwc_unlocked, _wctomb, _fputwc, _fputwc_unlocked, _putwc_unlocked, _fputws, _wcsrtombs, _fputws_unlocked, _fread_unlocked, _freelocale, ___freelocale, _freopen, _frexpf, _fscanf, _vfscanf, ___isoc99_fscanf, _fseek, _fseeko, _fsetpos, _ftello, _ftime, _utimensat, _fwprintf, _vfwprintf, _fwrite_unlocked, _fwscanf, _vfwscanf, ___isoc99_fwscanf, _gcvt, _get_current_dir_name, __IO_getc, _fgetc_unlocked, __IO_getc_unlocked, _getchar, _getchar_unlocked, _getdelim, ___getdelim, _getdents, _getdomainname, _getegid, _getgroups, _gethostid, _freeifaddrs, _getifaddrs, ___getitimer, _getlogin, _getopt, ___posix_getopt, _getopt_long, _getopt_long_only, _mblen, _getresgid, _getresuid, _getrusage, _gets, _getservbyname_r, _getservbyport_r, _getsubopt, _gettid, _getw, _getwc, _getwchar, _getwchar_unlocked, _glob, _globfree, _gmtime, _herror, _hcreate, _hdestroy, _hsearch, _hcreate_r, _hdestroy_r, _hsearch_r, _iconv_open, _iconv, _iconv_close, _ilogb, _ilogbf, _imaxabs, _imaxdiv, _index, _inet_addr, _inet_network, _inet_makeaddr, _inet_lnaof, _inet_netof, _insque, _remque, ___intscan, ___multi3, ___isalnum_l, _isalnum_l, _isalpha, ___isalpha_l, _isalpha_l, _isascii, _isblank, ___isblank_l, _isblank_l, _iscntrl, ___iscntrl_l, _iscntrl_l, _isdigit, ___isdigit_l, _isdigit_l, _isgraph, ___isgraph_l, _isgraph_l, _islower, ___islower_l, _islower_l, _isprint, ___isprint_l, _isprint_l, _ispunct, ___ispunct_l, _ispunct_l, _issetugid, _isspace, ___isspace_l, _isspace_l, _isupper, ___isupper_l, _isupper_l, _iswalnum, _iswalpha, ___iswalnum_l, _iswalnum_l, ___iswalpha_l, _iswalpha_l, _iswblank, ___iswblank_l, _iswblank_l, _iswcntrl, ___iswcntrl_l, _iswcntrl_l, _iswgraph, _iswlower, _iswprint, _iswpunct, _iswspace, _iswupper, _iswxdigit, ___iswctype_l, ___wctype_l, _iswctype_l, _wctype_l, _iswdigit, ___iswdigit_l, _iswdigit_l, ___iswgraph_l, _iswgraph_l, ___iswlower_l, _iswlower_l, ___iswprint_l, _iswprint_l, ___iswpunct_l, _iswpunct_l, ___iswspace_l, _iswspace_l, ___iswupper_l, _iswupper_l, ___iswxdigit_l, _iswxdigit_l, _isxdigit, ___isxdigit_l, _isxdigit_l, _j0, _y0, _j0f, _y0f, _j1, _y1, _j1f, _y1f, _jn, _yn, _jnf, _ynf, _labs, ___nl_langinfo, _nl_langinfo_l, _lchmod, _lchown, _lcong48, _ldexpf, _scalbnf, _ldexpl, _ldiv, _get_nprocs_conf, _get_nprocs, _get_phys_pages, _get_avphys_pages, _lgamma, _lgamma_r, _lgammaf, _lgammaf_r, ___lgammal_r, _lgammal, _lgammal_r, _emscripten_has_threading_support, _emscripten_num_logical_cores, _emscripten_futex_wait, _emscripten_main_thread_process_queued_calls, _emscripten_current_thread_process_queued_calls, _pthread_mutex_consistent, _pthread_barrier_init, _pthread_barrier_destroy, _pthread_barrier_wait, _pthread_cond_broadcast, _pthread_atfork, _pthread_cancel, _pthread_testcancel, ___pthread_detach, _pthread_equal, _pthread_mutexattr_init, _pthread_mutexattr_setprotocol, _pthread_mutexattr_settype, _pthread_mutexattr_destroy, _pthread_mutexattr_setpshared, _pthread_condattr_setpshared, _pthread_setcanceltype, _pthread_rwlock_init, _pthread_rwlock_destroy, _pthread_rwlock_rdlock, _pthread_rwlock_tryrdlock, _pthread_rwlock_timedrdlock, _pthread_rwlock_wrlock, _pthread_rwlock_trywrlock, _pthread_rwlock_timedwrlock, _pthread_rwlock_unlock, _pthread_rwlockattr_init, _pthread_rwlockattr_destroy, _pthread_rwlockattr_setpshared, _pthread_spin_init, _pthread_spin_destroy, _pthread_spin_lock, _pthread_spin_trylock, _pthread_spin_unlock, _sem_init, _sem_post, _sem_wait, _sem_trywait, _sem_destroy, _pthread_mutex_timedlock, _emscripten_builtin_pthread_create, _emscripten_builtin_pthread_join, _pthread_once, _emscripten_builtin_pthread_exit, _pthread_exit, _emscripten_builtin_pthread_detach, _thrd_detach, _link, _linkat, _llabs, _lldiv, _llrint, _rint, _llrintf, _rintf, _llrintl, _rintl, _llround, _llroundf, _roundf, _llroundl, _roundl, _log10f, _log10l, _log2f, _log2l, _logb, _logbf, _logbl, _strtoull, _nrand48, _lrand48, _lrint, _lrintf, _lrintl, _lround, _lroundf, _lroundl, _lsearch, _lfind, _mbrlen, _mbrtoc16, _mbrtoc32, _mbsinit, _mbsnrtowcs, _mbsrtowcs, _memccpy, _memmem, _mempcpy, _mincore, _mkdtemp, _mkfifo, _mkfifoat, _mkostemp, _mkostemps, _mkstemp, _mkstemps, _mktemp, _timegm, _mlock, _mlockall, _emscripten_builtin_mmap, _setmntent, _endmntent, _getmntent_r, _sscanf, _getmntent, _addmntent, _hasmntopt, _mprotect, _jrand48, _mrand48, _mtx_destroy, _mtx_init, _mtx_lock, _mtx_timedlock, _mtx_trylock, _mtx_unlock, _munlock, _munlockall, _emscripten_builtin_munmap, _nan, _nanf, _nanl, _nanosleep, _nearbyint, _nearbyintf, _nearbyintl, _getnetbyaddr, _getnetbyname, ___newlocale, _newlocale, _nextafterf, _nexttoward, _nexttowardf, _nexttowardl, _nftw, _nice, _setpriority, _ns_get16, _ns_get32, _ns_put16, _ns_put32, _ns_skiprr, _ns_initparse, _ns_name_uncompress, _ns_parserr, _open_memstream, _open_wmemstream, _posix_close, _posix_madvise, _posix_spawn_file_actions_addchdir_np, _posix_spawn_file_actions_addclose, _posix_spawn_file_actions_adddup2, _posix_spawn_file_actions_addfchdir_np, _posix_spawn_file_actions_addopen, _posix_spawn_file_actions_destroy, _posix_spawn_file_actions_init, _posix_spawnattr_destroy, _posix_spawnattr_getflags, _posix_spawnattr_getpgroup, _posix_spawnattr_getsigdefault, _posix_spawnattr_getsigmask, _posix_spawnattr_init, _posix_spawnattr_getschedparam, _posix_spawnattr_setschedparam, _posix_spawnattr_getschedpolicy, _posix_spawnattr_setschedpolicy, _posix_spawnattr_setflags, _posix_spawnattr_setpgroup, _posix_spawnattr_setsigdefault, _posix_spawnattr_setsigmask, _powf, _ppoll, _preadv, _printf, ___small_printf, _em_proxying_queue_create, _em_proxying_queue_destroy, _emscripten_proxy_get_system_queue, _emscripten_proxy_execute_queue, _emscripten_proxy_finish, _emscripten_proxy_async, _emscripten_proxy_sync, _emscripten_proxy_sync_with_ctx, _pselect, _pthread_attr_getdetachstate, _pthread_attr_getguardsize, _pthread_attr_getinheritsched, _pthread_attr_getschedparam, _pthread_attr_getschedpolicy, _pthread_attr_getscope, _pthread_attr_getstack, _pthread_attr_getstacksize, _pthread_barrierattr_getpshared, _pthread_condattr_getclock, _pthread_condattr_getpshared, _pthread_mutexattr_getprotocol, _pthread_mutexattr_getpshared, _pthread_mutexattr_getrobust, _pthread_mutexattr_gettype, _pthread_rwlockattr_getpshared, _pthread_attr_setdetachstate, _pthread_attr_setguardsize, _pthread_attr_setinheritsched, _pthread_attr_setschedparam, _pthread_attr_setschedpolicy, _pthread_attr_setscope, _pthread_attr_setstack, __pthread_cleanup_pop, _pthread_getattr_np, _pthread_getconcurrency, _pthread_getschedparam, _thrd_current, _emscripten_main_runtime_thread_id, _pthread_setconcurrency, _pthread_setschedprio, ___sig_is_blocked, _sigorset, _sigandset, _sigdelset, _ptsname, __IO_putc, _putc_unlocked, _fputc_unlocked, __IO_putc_unlocked, _putchar_unlocked, _putenv, _putw, _putwc, _putwchar, _putwchar_unlocked, _pwritev, _qsort_r, _quick_exit, _action_abort, _action_terminate, _srand, _rand, _rand_r, _srandom, _initstate, _setstate, _random, _readdir_r, _reallocarray, _recvmmsg, _regcomp, _regfree, _regerror, _regexec, _remainder, _remquo, _drem, _remainderf, _remquof, _dremf, _remainderl, _remquol, _remove, _res_init, _res_mkquery, ___res_msend, _res_send, ___res_state, _rindex, _scalb, _scalbf, _scalbln, _scalblnf, _scalblnl, _scandir, _scanf, _vscanf, ___isoc99_scanf, _secure_getenv, _seed48, _seekdir, _sendmmsg, _endservent, _setservent, _getservent, _setbuf, _setbuffer, _setdomainname, _setegid, _seteuid, __emscripten_timeout, _setlinebuf, _setresgid, _setresuid, _shm_open, _shm_unlink, _sigaction, _sigisemptyset, _bsd_signal, ___sysv_signal, _significand, _significandf, _sigprocmask, _sincos, _sincosf, _sincosl, _sinhl, _sinl, _sockatmark, _vsprintf, _vsiprintf, ___small_sprintf, ___small_vsprintf, _srand48, _vsscanf, ___isoc99_sscanf, _statfs, _fstatfs, _statx, _stpcpy, _stpncpy, ___strcasecmp_l, _strcasecmp_l, _strcasestr, _strncasecmp, _strchrnul, ___strcoll_l, _strcoll_l, ___strerror_l, _strerror_l, _strerror_r, ___xpg_strerror_r, _strfmon_l, _strfmon, _strftime_l, _strlcat, _strlcpy, _strlwr, ___strncasecmp_l, _strncasecmp_l, _strndup, _strsep, _strtof, _strtold, _strtof_l, _strtod_l, _strtold_l, ___strtof_l, ___strtod_l, ___strtold_l, _strtok, _strtok_r, _strtoll, _strtoimax, _strtoumax, ___strtol_internal, ___strtoul_internal, ___strtoll_internal, ___strtoull_internal, ___strtoimax_internal, ___strtoumax_internal, _strtoull_l, _strtoll_l, _strtoul_l, _strtol_l, _strupr, _strverscmp, ___strxfrm_l, _strxfrm, _strxfrm_l, _swab, _swprintf, _vswprintf, _swscanf, _vswscanf, ___isoc99_swscanf, _symlinkat, _setlogmask, _closelog, _openlog, _syslog, _vsyslog, _tanhf, _tanhl, _tanl, _tcgetsid, _tcgetwinsize, _tcsetwinsize, _tdelete, _tdestroy, _telldir, _tempnam, _ngettext, _tfind, _tgamma, _tgammaf, _tgammal, _thrd_create, _thrd_exit, _thrd_join, _thrd_sleep, _thrd_yield, _emscripten_set_thread_name, _timespec_get, _tmpfile, _tmpnam, _toascii, ___tolower_l, _tolower_l, ___toupper_l, _toupper_l, ___towupper_l, ___towlower_l, _towupper_l, _towlower_l, _truncf, _truncl, _tsearch, _tss_create, _tss_delete, _tss_set, _ttyname, _twalk, _ualarm, _ungetwc, ___uselocale, _uselocale, _utime, _versionsort, ___vfprintf_internal, ___isoc99_vfscanf, _wcsnlen, ___isoc99_vfwscanf, _vprintf, ___isoc99_vscanf, _vsniprintf, ___small_vsnprintf, ___isoc99_vsscanf, ___isoc99_vswscanf, _vwprintf, _vwscanf, ___isoc99_vwscanf, _wcpcpy, _wcpncpy, _wcscasecmp, _wcsncasecmp, _wcscasecmp_l, _wcscat, ___wcscoll_l, _wcscoll_l, _wcscspn, _wcsdup, _wmemcpy, ___wcsftime_l, _wcstoul, _wcsftime_l, _wcsncasecmp_l, _wcsncat, _wmemset, _wcsnrtombs, _wcspbrk, _wcsspn, _wcsstr, _wcstof, _wcstod, _wcstold, _wcstoull, _wcstoll, _wcstoimax, _wcstoumax, _wcswcs, _wcswidth, _wcwidth, ___wcsxfrm_l, _wcsxfrm_l, _wctob, _wctrans, _towctrans, ___wctrans_l, ___towctrans_l, _wctrans_l, _towctrans_l, _wmemmove, _wprintf, _wscanf, ___isoc99_wscanf, ___libc_realloc, _realloc_in_place, _memalign, _valloc, _pvalloc, _mallinfo, _mallopt, _malloc_trim, _malloc_usable_size, _malloc_footprint, _malloc_max_footprint, _malloc_footprint_limit, _malloc_set_footprint_limit, _independent_calloc, _independent_comalloc, _bulk_free, _emscripten_builtin_realloc, _emscripten_builtin_calloc, _emscripten_get_sbrk_ptr, __sbrk64, _brk, ___trap, ___absvdi2, ___absvsi2, ___absvti2, ___adddf3, ___fe_getround, ___fe_raise_inexact, ___addsf3, ___ashlti3, ___lshrti3, ___addvdi3, ___addvsi3, ___addvti3, ___ashldi3, ___ashrdi3, ___ashrti3, ___atomic_is_lock_free, ___atomic_load, ___atomic_store, ___atomic_compare_exchange, ___atomic_exchange, ___atomic_load_1, ___atomic_load_2, ___atomic_load_4, ___atomic_load_8, ___atomic_load_16, ___atomic_store_1, ___atomic_store_2, ___atomic_store_4, ___atomic_store_8, ___atomic_store_16, ___atomic_exchange_1, ___atomic_exchange_2, ___atomic_exchange_4, ___atomic_exchange_8, ___atomic_exchange_16, ___atomic_compare_exchange_1, ___atomic_compare_exchange_2, ___atomic_compare_exchange_4, ___atomic_compare_exchange_8, ___atomic_compare_exchange_16, ___atomic_fetch_add_1, ___atomic_fetch_add_2, ___atomic_fetch_add_4, ___atomic_fetch_add_8, ___atomic_fetch_add_16, ___atomic_fetch_sub_1, ___atomic_fetch_sub_2, ___atomic_fetch_sub_4, ___atomic_fetch_sub_8, ___atomic_fetch_sub_16, ___atomic_fetch_and_1, ___atomic_fetch_and_2, ___atomic_fetch_and_4, ___atomic_fetch_and_8, ___atomic_fetch_and_16, ___atomic_fetch_or_1, ___atomic_fetch_or_2, ___atomic_fetch_or_4, ___atomic_fetch_or_8, ___atomic_fetch_or_16, ___atomic_fetch_xor_1, ___atomic_fetch_xor_2, ___atomic_fetch_xor_4, ___atomic_fetch_xor_8, ___atomic_fetch_xor_16, ___atomic_fetch_nand_1, ___atomic_fetch_nand_2, ___atomic_fetch_nand_4, ___atomic_fetch_nand_8, ___atomic_fetch_nand_16, _atomic_flag_clear, _atomic_flag_clear_explicit, _atomic_flag_test_and_set, _atomic_flag_test_and_set_explicit, _atomic_signal_fence, _atomic_thread_fence, ___bswapdi2, ___bswapsi2, ___clear_cache, ___clzdi2, ___clzsi2, ___clzti2, ___cmpdi2, ___cmpti2, ___ledf2, ___gedf2, ___unorddf2, ___eqdf2, ___ltdf2, ___nedf2, ___gtdf2, ___lesf2, ___gesf2, ___unordsf2, ___eqsf2, ___ltsf2, ___nesf2, ___gtsf2, ___ctzdi2, ___ctzsi2, ___ctzti2, ___divdc3, ___divdf3, ___divdi3, ___udivmoddi4, ___divmoddi4, ___divmodsi4, ___udivmodsi4, ___divmodti4, ___udivmodti4, ___divsc3, ___divsf3, ___divsi3, ___divtc3, ___divti3, _setThrew, ___wasm_setjmp, ___wasm_setjmp_test, ___wasm_longjmp, __emscripten_tempret_set, __emscripten_tempret_get, ___get_temp_ret, ___set_temp_ret, _getTempRet0, _setTempRet0, ___emutls_get_address, ___enable_execute_stack, ___extendhfdf2, ___extendhfsf2, ___gnu_h2f_ieee, ___extendsfdf2, ___ffsdi2, ___ffssi2, ___ffsti2, ___fixdfdi, ___fixunsdfdi, ___fixdfsi, ___fixdfti, ___fixsfdi, ___fixunssfdi, ___fixsfsi, ___fixsfti, ___fixtfti, ___fixunsdfsi, ___fixunsdfti, ___fixunssfsi, ___fixunssfti, ___fixunstfdi, ___fixunstfsi, ___fixunstfti, ___floatdidf, ___floatdisf, ___floatsidf, ___floatsisf, ___floattidf, ___floattisf, ___floattitf, ___floatundidf, ___floatundisf, ___floatunditf, ___floatunsidf, ___floatunsisf, ___floatuntidf, ___floatuntisf, ___floatuntitf, ___lshrdi3, ___moddi3, ___modsi3, ___modti3, ___muldf3, ___muldi3, ___mulodi4, ___mulosi4, ___muloti4, ___udivti3, ___mulsf3, ___mulvdi3, ___mulvsi3, ___mulvti3, ___negdf2, ___negdi2, ___negsf2, ___negti2, ___negvdi2, ___negvsi2, ___negvti2, ___paritydi2, ___paritysi2, ___parityti2, ___popcountdi2, ___popcountsi2, ___popcountti2, ___powidf2, ___powisf2, ___powitf2, _emscripten_stack_init, _emscripten_stack_set_limits, _emscripten_stack_get_free, __emscripten_stack_restore, __emscripten_stack_alloc, ___subdf3, ___subsf3, ___subvdi3, ___subvsi3, ___subvti3, ___truncdfhf2, ___truncdfsf2, ___truncsfhf2, ___gnu_f2h_ieee, ___ucmpdi2, ___ucmpti2, ___udivdi3, ___udivsi3, ___umoddi3, ___umodsi3, ___umodti3, ___cxa_begin_catch, ___cxa_rethrow, ___cxa_end_catch, ___cxa_allocate_exception, ___cxa_free_exception, ___cxa_throw, ___cxa_pure_virtual, ___cxa_uncaught_exceptions, ___cxa_decrement_exception_refcount, ___cxa_increment_exception_refcount, ___cxa_current_primary_exception, ___cxa_rethrow_primary_exception, ___cxa_init_primary_exception, ___dynamic_cast, ___cxa_bad_cast, ___cxa_bad_typeid, ___cxa_throw_bad_array_new_length, ___cxa_get_globals_fast, ___cxa_demangle, ___cxa_allocate_dependent_exception, ___cxa_free_dependent_exception, ___cxa_get_globals, __Unwind_RaiseException, ___cxa_get_exception_ptr, __Unwind_DeleteException, ___cxa_call_terminate, ___cxa_current_exception_type, ___cxa_uncaught_exception, ___thrown_object_from_unwind_exception, ___get_exception_message, ___get_exception_terminate_message, ___cxa_guard_acquire, ___cxa_guard_release, ___cxa_guard_abort, ___gxx_personality_wasm0, __Unwind_GetLanguageSpecificData, __Unwind_GetIP, __Unwind_GetRegionStart, __Unwind_SetGR, __Unwind_SetIP, ___cxa_call_unexpected, ___cxa_thread_atexit, ___cxa_deleted_virtual, __Unwind_CallPersonality, _gethostbyaddr_r, _gethostbyname2, _gethostbyname2_r, _gethostbyname_r, _socketpair, memory, ___stack_pointer, _py_docstring_mod, _PyExc_AttributeError, _stdout, _Jsr_error, _PyExc_ModuleNotFoundError, __Py_NoneStruct, _internal_error, _conversion_error, __indirect_function_table, _PyExc_ImportError, _pyodide_export_, _pystate_keepalive_, _pystate_keepalive, _compat_null_to_none, _py_jsnull, __Py_TrueStruct, __Py_FalseStruct, _py_JsBigInt, _Jsr_undefined, _jsbind, _PyExc_TypeError, _PyExc_StopIteration, _PyTraceBack_Type, _PyExc_GeneratorExit, _PyExc_StopAsyncIteration, _PyExc_RuntimeError, _PyExc_IndexError, _PyExc_Exception, _PyExc_BaseException, _methods, _PyExc_SystemError, _PyExc_KeyError, _PySlice_Type, _PyLong_Type, _PyBool_Type, _PyExc_ValueError, _PyExc_NotImplementedError, _PyBaseObject_Type, _PyExc_OverflowError, _PyList_Type, _PyTuple_Type, _PyExc_RuntimeWarning, __Py_NotImplementedStruct, _default_signature, _no_default, _PyCoro_Type, _PyGen_Type, _PyDict_Type, _compat_to_string_repr, _PyMethod_Type, _PyFunction_Type, _py_buffer_len_offset, _py_buffer_shape_offset, _Jsr_true, _Jsr_false, _Jsr_novalue, _PySet_Type, _PyFloat_Type, _compat_dict_to_literalmap, __PyRuntime, _stderr, __PyParser_TokenNames, _PyExc_SyntaxError, __PyExc_IncompleteInputError, _PyExc_LookupError, _PyExc_UnicodeDecodeError, _PyExc_IndentationError, _PyExc_KeyboardInterrupt, _PyExc_TabError, _PyExc_UnicodeError, _stdin, _PyExc_MemoryError, _PyComplex_Type, _PyUnicode_Type, _PyBytes_Type, __Py_EllipsisObject, __Py_ctype_table, _PyExc_DeprecationWarning, _PyExc_SyntaxWarning, __Py_ctype_tolower, _PyExc_OSError, __PyOS_ReadlineTState, _PyOS_InputHook, _PyOS_ReadlineFunctionPointer, _PyType_Type, _PyExc_BufferError, _PyByteArray_Type, __PyByteArray_empty_string, __PyUnion_Type, __Py_ctype_toupper, _Py_hexdigits, _PyExc_BytesWarning, _PyByteArrayIter_Type, __PyLong_DigitValue, _PyBytesIter_Type, _PyModule_Type, _PyCapsule_Type, _PyCell_Type, _PyInstanceMethod_Type, _PyCode_Type, _PyFrozenSet_Type, _PyExc_ZeroDivisionError, _PyMethodDescr_Type, _PyClassMethodDescr_Type, _PyMemberDescr_Type, _PyGetSetDescr_Type, _PyWrapperDescr_Type, _PyDictProxy_Type, _PyProperty_Type, _PyReversed_Type, _PyEnum_Type, _PyExc_BaseExceptionGroup, _PyExc_UnicodeTranslateError, _PyExc_BlockingIOError, _PyExc_BrokenPipeError, _PyExc_ChildProcessError, _PyExc_ConnectionAbortedError, _PyExc_ConnectionRefusedError, _PyExc_ConnectionResetError, _PyExc_FileExistsError, _PyExc_FileNotFoundError, _PyExc_IsADirectoryError, _PyExc_NotADirectoryError, _PyExc_InterruptedError, _PyExc_PermissionError, _PyExc_ProcessLookupError, _PyExc_TimeoutError, _PyExc_EnvironmentError, _PyExc_IOError, _PyExc_SystemExit, _PyExc_ConnectionError, _PyExc_EOFError, _PyExc_RecursionError, _PyExc_PythonFinalizationError, _PyExc_NameError, _PyExc_UnboundLocalError, _PyExc_UnicodeEncodeError, _PyExc_AssertionError, _PyExc_ArithmeticError, _PyExc_FloatingPointError, _PyExc_ReferenceError, _PyExc_Warning, _PyExc_UserWarning, _PyExc_PendingDeprecationWarning, _PyExc_FutureWarning, _PyExc_ImportWarning, _PyExc_UnicodeWarning, _PyExc_EncodingWarning, _PyExc_ResourceWarning, _Py_GenericAliasType, _PyAsyncGen_Type, __PyAsyncGenASend_Type, _PyStdPrinter_Type, __Py_SwappedOp, _PyFrameLocalsProxy_Type, _PyFrame_Type, _PyClassMethod_Type, _PyStaticMethod_Type, _PySeqIter_Type, _PyCallIter_Type, _PyDictKeys_Type, _PyDictValues_Type, _PyDictItems_Type, _PyListIter_Type, _PyListRevIter_Type, _PyDictIterKey_Type, _PyDictRevIterKey_Type, _PyDictRevIterValue_Type, _PyDictIterItem_Type, _PyDictIterValue_Type, _PyDictRevIterItem_Type, _PyODict_Type, _PyODictIter_Type, _PyODictKeys_Type, _PyODictValues_Type, _PyODictItems_Type, _PyMemoryView_Type, _PyCMethod_Type, _PyCFunction_Type, _PyModuleDef_Type, __PyNone_Type, __PyNotImplemented_Type, _PyContextToken_Type, _PyContextVar_Type, _PyContext_Type, _PyEllipsis_Type, _PyFilter_Type, _PyLongRangeIter_Type, _PyMap_Type, _PyPickleBuffer_Type, _PyRangeIter_Type, _PyRange_Type, _PySetIter_Type, _PySuper_Type, _PyTupleIter_Type, _PyUnicodeIter_Type, _PyZip_Type, __PyWeakref_CallableProxyType, __PyWeakref_ProxyType, __PyWeakref_RefType, __PySet_Dummy, _PyStructSequence_UnnamedField, __Py_ascii_whitespace, __Py_InitCleanup, __PyEval_BinaryOps, __PyIntrinsics_UnaryFunctions, __PyIntrinsics_BinaryFunctions, __PyEval_ConversionFuncs, __Py_SpecialMethods, __Py_emscripten_signal_clock, _Py_EMSCRIPTEN_SIGNAL_HANDLING, __Py_FunctionAttributeOffsets, _PyExc_InterpreterError, _PyExc_InterpreterNotFoundError, _PyUnstable_ExecutableKinds, _Py_Version, _PyImport_Inittab, __PyImport_FrozenBootstrap, _PyImport_FrozenModules, __PyImport_FrozenStdlib, __PyImport_FrozenTest, _Py_IgnoreEnvironmentFlag, _Py_IsolatedFlag, _Py_BytesWarningFlag, _Py_InspectFlag, _Py_InteractiveFlag, _Py_OptimizeFlag, _Py_DebugFlag, _Py_VerboseFlag, _Py_QuietFlag, _Py_FrozenFlag, _Py_UnbufferedStdioFlag, _Py_NoSiteFlag, _Py_DontWriteBytecodeFlag, _Py_NoUserSiteDirectory, _Py_HashRandomizationFlag, _Py_FileSystemDefaultEncoding, _Py_HasFileSystemDefaultEncoding, _Py_FileSystemDefaultEncodeErrors, _Py_UTF8Mode, __Py_HashSecret, _PY_TIMEOUT_MAX, __Py_emscripten_signal_in_memory, __PyEM_EMSCRIPTEN_TRAMPOLINE_OFFSET, _ffi_type_pointer, _ffi_type_void, _ffi_type_sint32, _ffi_type_uint64, _ffi_type_sint64, _ffi_type_uint32, _ffi_type_uint16, _ffi_type_sint16, _ffi_type_uint8, _ffi_type_sint8, _ffi_type_double, _ffi_type_longdouble, _ffi_type_float, _environ, __deduplicate_map, _sqlite3_version, _sqlite3_data_directory, _sqlite3_temp_directory, _sqlite3one, _g_debuglevel, _g_ZSTD_threading_useless_symbol, _BZ2_crc32Table, _BZ2_rNums, _z_errmsg, __length_code, __dist_code, _deflate_copyright, _inflate_copyright, ___environ, ____environ, __environ, ___stack_chk_guard, ___tzname, _daylight, _timezone, ___timezone, ___daylight, _tzname, ___progname, ___optreset, _optind, ___optpos, _optarg, _optopt, _opterr, _optreset, _h_errno, ___signgam, __ns_flagdata, ___progname_full, _program_invocation_short_name, _program_invocation_name, ___stack_low, ___stack_high, ___sig_pending, ___sig_actions, _signgam, ___heap_base, ___c_longjmp, ___THREW__, ___threwValue, ___cpp_exception, ___cxa_unexpected_handler, ___cxa_terminate_handler, ___cxa_new_handler, ___wasm_lpad_context, _in6addr_any, _in6addr_loopback, wasmTable, wasmMemory;\n function assignWasmExports(wasmExports2) {\n _set_method_docstring = Module["_set_method_docstring"] = wasmExports2["set_method_docstring"];\n _PyObject_GetAttrString = Module["_PyObject_GetAttrString"] = wasmExports2["PyObject_GetAttrString"];\n __PyUnicode_FromId = Module["__PyUnicode_FromId"] = wasmExports2["_PyUnicode_FromId"];\n _PyObject_VectorcallMethod = Module["_PyObject_VectorcallMethod"] = wasmExports2["PyObject_VectorcallMethod"];\n _PyUnicode_AsUTF8AndSize = Module["_PyUnicode_AsUTF8AndSize"] = wasmExports2["PyUnicode_AsUTF8AndSize"];\n _malloc = Module["_malloc"] = wasmExports2["malloc"];\n __Py_Dealloc = Module["__Py_Dealloc"] = wasmExports2["_Py_Dealloc"];\n _PyErr_Format = Module["_PyErr_Format"] = wasmExports2["PyErr_Format"];\n _add_methods_and_set_docstrings = Module["_add_methods_and_set_docstrings"] = wasmExports2["add_methods_and_set_docstrings"];\n _PyModule_AddFunctions = Module["_PyModule_AddFunctions"] = wasmExports2["PyModule_AddFunctions"];\n _docstring_init = Module["_docstring_init"] = wasmExports2["docstring_init"];\n _PyImport_ImportModule = Module["_PyImport_ImportModule"] = wasmExports2["PyImport_ImportModule"];\n _dump_traceback = Module["_dump_traceback"] = wasmExports2["dump_traceback"];\n _fileno = Module["_fileno"] = wasmExports2["fileno"];\n _PyGILState_GetThisThreadState = Module["_PyGILState_GetThisThreadState"] = wasmExports2["PyGILState_GetThisThreadState"];\n _set_error = Module["_set_error"] = wasmExports2["set_error"];\n _PyErr_SetObject = Module["_PyErr_SetObject"] = wasmExports2["PyErr_SetObject"];\n _restore_sys_last_exception = Module["_restore_sys_last_exception"] = wasmExports2["restore_sys_last_exception"];\n _PySys_GetObject = Module["_PySys_GetObject"] = wasmExports2["PySys_GetObject"];\n _PyErr_SetRaisedException = Module["_PyErr_SetRaisedException"] = wasmExports2["PyErr_SetRaisedException"];\n _wrap_exception = Module["_wrap_exception"] = wasmExports2["wrap_exception"];\n _PyErr_GetRaisedException = Module["_PyErr_GetRaisedException"] = wasmExports2["PyErr_GetRaisedException"];\n _hiwire_get = Module["_hiwire_get"] = wasmExports2["hiwire_get"];\n _PyErr_GivenExceptionMatches = Module["_PyErr_GivenExceptionMatches"] = wasmExports2["PyErr_GivenExceptionMatches"];\n _PyErr_Print = Module["_PyErr_Print"] = wasmExports2["PyErr_Print"];\n __PyObject_GetAttrId = Module["__PyObject_GetAttrId"] = wasmExports2["_PyObject_GetAttrId"];\n _PyUnicode_AsUTF8 = Module["_PyUnicode_AsUTF8"] = wasmExports2["PyUnicode_AsUTF8"];\n _PySys_WriteStderr = Module["_PySys_WriteStderr"] = wasmExports2["PySys_WriteStderr"];\n _PyErr_DisplayException = Module["_PyErr_DisplayException"] = wasmExports2["PyErr_DisplayException"];\n _JsvString_FromId = Module["_JsvString_FromId"] = wasmExports2["JsvString_FromId"];\n _pythonexc2js = Module["_pythonexc2js"] = wasmExports2["pythonexc2js"];\n _trigger_fatal_error = Module["_trigger_fatal_error"] = wasmExports2["trigger_fatal_error"];\n _raw_call = Module["_raw_call"] = wasmExports2["raw_call"];\n _JsProxy_Val = Module["_JsProxy_Val"] = wasmExports2["JsProxy_Val"];\n _error_handling_init = Module["_error_handling_init"] = wasmExports2["error_handling_init"];\n _hiwire_invalid_ref = Module["_hiwire_invalid_ref"] = wasmExports2["hiwire_invalid_ref"];\n _init_pyodide_proxy = Module["_init_pyodide_proxy"] = wasmExports2["init_pyodide_proxy"];\n _python2js = Module["_python2js"] = wasmExports2["python2js"];\n _PyInit__pyodide_core = Module["_PyInit__pyodide_core"] = wasmExports2["PyInit__pyodide_core"];\n _PyErr_Occurred = Module["_PyErr_Occurred"] = wasmExports2["PyErr_Occurred"];\n __PyErr_FormatFromCause = Module["__PyErr_FormatFromCause"] = wasmExports2["_PyErr_FormatFromCause"];\n _PyModule_Create2 = Module["_PyModule_Create2"] = wasmExports2["PyModule_Create2"];\n _PyImport_GetModuleDict = Module["_PyImport_GetModuleDict"] = wasmExports2["PyImport_GetModuleDict"];\n _PyDict_SetItemString = Module["_PyDict_SetItemString"] = wasmExports2["PyDict_SetItemString"];\n _jslib_init = Module["_jslib_init"] = wasmExports2["jslib_init"];\n _python2js_init = Module["_python2js_init"] = wasmExports2["python2js_init"];\n _jsproxy_init = Module["_jsproxy_init"] = wasmExports2["jsproxy_init"];\n _jsproxy_call_init = Module["_jsproxy_call_init"] = wasmExports2["jsproxy_call_init"];\n _pyproxy_init = Module["_pyproxy_init"] = wasmExports2["pyproxy_init"];\n _jsbind_init = Module["_jsbind_init"] = wasmExports2["jsbind_init"];\n _pyodide_export = Module["_pyodide_export"] = wasmExports2["pyodide_export"];\n _PyUnicode_Data = Module["_PyUnicode_Data"] = wasmExports2["PyUnicode_Data"];\n __js2python_none = Module["__js2python_none"] = wasmExports2["_js2python_none"];\n __js2python_null = Module["__js2python_null"] = wasmExports2["_js2python_null"];\n __js2python_true = Module["__js2python_true"] = wasmExports2["_js2python_true"];\n __js2python_false = Module["__js2python_false"] = wasmExports2["_js2python_false"];\n __js2python_pyproxy = Module["__js2python_pyproxy"] = wasmExports2["_js2python_pyproxy"];\n __js2python_bigint = Module["__js2python_bigint"] = wasmExports2["_js2python_bigint"];\n _PyObject_CallOneArg = Module["_PyObject_CallOneArg"] = wasmExports2["PyObject_CallOneArg"];\n _js2python_immutable = Module["_js2python_immutable"] = wasmExports2["js2python_immutable"];\n _js2python = Module["_js2python"] = wasmExports2["js2python"];\n _JsProxy_getflags = Module["_JsProxy_getflags"] = wasmExports2["JsProxy_getflags"];\n _PyLong_AsLong = Module["_PyLong_AsLong"] = wasmExports2["PyLong_AsLong"];\n _JsProxy_is_py_json = Module["_JsProxy_is_py_json"] = wasmExports2["JsProxy_is_py_json"];\n _js2python_as_py_json = Module["_js2python_as_py_json"] = wasmExports2["js2python_as_py_json"];\n _JsProxy_create_with_type = Module["_JsProxy_create_with_type"] = wasmExports2["JsProxy_create_with_type"];\n _JsProxy_bind_sig = Module["_JsProxy_bind_sig"] = wasmExports2["JsProxy_bind_sig"];\n _JsRef_toVal = Module["_JsRef_toVal"] = wasmExports2["JsRef_toVal"];\n _PyErr_SetString = Module["_PyErr_SetString"] = wasmExports2["PyErr_SetString"];\n _JsProxy_create_with_this = Module["_JsProxy_create_with_this"] = wasmExports2["JsProxy_create_with_this"];\n _JsProxy_bind_class = Module["_JsProxy_bind_class"] = wasmExports2["JsProxy_bind_class"];\n _clear_method_call_singleton = Module["_clear_method_call_singleton"] = wasmExports2["clear_method_call_singleton"];\n _hiwire_decref = Module["_hiwire_decref"] = wasmExports2["hiwire_decref"];\n _JsProxy_GetMethod = Module["_JsProxy_GetMethod"] = wasmExports2["JsProxy_GetMethod"];\n __PyObject_GenericGetAttrWithDict = Module["__PyObject_GenericGetAttrWithDict"] = wasmExports2["_PyObject_GenericGetAttrWithDict"];\n _strcmp = Module["_strcmp"] = wasmExports2["strcmp"];\n _PyObject_CallMethodObjArgs = Module["_PyObject_CallMethodObjArgs"] = wasmExports2["PyObject_CallMethodObjArgs"];\n _PyArg_ParseTuple = Module["_PyArg_ParseTuple"] = wasmExports2["PyArg_ParseTuple"];\n _Js2PyConverter_convert = Module["_Js2PyConverter_convert"] = wasmExports2["Js2PyConverter_convert"];\n _hiwire_new = Module["_hiwire_new"] = wasmExports2["hiwire_new"];\n _hiwire_incref = Module["_hiwire_incref"] = wasmExports2["hiwire_incref"];\n _JsProxy_GetAttr = Module["_JsProxy_GetAttr"] = wasmExports2["JsProxy_GetAttr"];\n _handle_next_result = Module["_handle_next_result"] = wasmExports2["handle_next_result"];\n _free = Module["_free"] = wasmExports2["free"];\n _JsProxy_create_objmap = Module["_JsProxy_create_objmap"] = wasmExports2["JsProxy_create_objmap"];\n _JsProxy_am_send = Module["_JsProxy_am_send"] = wasmExports2["JsProxy_am_send"];\n _python2js_track_proxies = Module["_python2js_track_proxies"] = wasmExports2["python2js_track_proxies"];\n _JsvObject_CallMethodId_OneArg = Module["_JsvObject_CallMethodId_OneArg"] = wasmExports2["JsvObject_CallMethodId_OneArg"];\n _JsProxy_IterNext = Module["_JsProxy_IterNext"] = wasmExports2["JsProxy_IterNext"];\n __PyGen_SetStopIterationValue = Module["__PyGen_SetStopIterationValue"] = wasmExports2["_PyGen_SetStopIterationValue"];\n _JsGenerator_send = Module["_JsGenerator_send"] = wasmExports2["JsGenerator_send"];\n _PyErr_SetNone = Module["_PyErr_SetNone"] = wasmExports2["PyErr_SetNone"];\n _JsException_js_error_getter = Module["_JsException_js_error_getter"] = wasmExports2["JsException_js_error_getter"];\n _process_throw_args = Module["_process_throw_args"] = wasmExports2["process_throw_args"];\n _PyErr_NormalizeException = Module["_PyErr_NormalizeException"] = wasmExports2["PyErr_NormalizeException"];\n _PyException_GetTraceback = Module["_PyException_GetTraceback"] = wasmExports2["PyException_GetTraceback"];\n _PyException_SetTraceback = Module["_PyException_SetTraceback"] = wasmExports2["PyException_SetTraceback"];\n _PyErr_Restore = Module["_PyErr_Restore"] = wasmExports2["PyErr_Restore"];\n _PyErr_ExceptionMatches = Module["_PyErr_ExceptionMatches"] = wasmExports2["PyErr_ExceptionMatches"];\n _PyErr_Clear = Module["_PyErr_Clear"] = wasmExports2["PyErr_Clear"];\n _JsvObject_CallMethodId_NoArgs = Module["_JsvObject_CallMethodId_NoArgs"] = wasmExports2["JsvObject_CallMethodId_NoArgs"];\n _PyErr_Fetch = Module["_PyErr_Fetch"] = wasmExports2["PyErr_Fetch"];\n __agen_handle_result_js_c = Module["__agen_handle_result_js_c"] = wasmExports2["_agen_handle_result_js_c"];\n __agen_handle_result = Module["__agen_handle_result"] = wasmExports2["_agen_handle_result"];\n _JsArray_sq_item = Module["_JsArray_sq_item"] = wasmExports2["JsArray_sq_item"];\n _JsArray_sq_ass_item = Module["_JsArray_sq_ass_item"] = wasmExports2["JsArray_sq_ass_item"];\n _JsTypedArray_sq_ass_item = Module["_JsTypedArray_sq_ass_item"] = wasmExports2["JsTypedArray_sq_ass_item"];\n _JsMap_update = Module["_JsMap_update"] = wasmExports2["JsMap_update"];\n _wrap_promise = Module["_wrap_promise"] = wasmExports2["wrap_promise"];\n _PyTuple_GetItem = Module["_PyTuple_GetItem"] = wasmExports2["PyTuple_GetItem"];\n _JsvObject_CallMethodId = Module["_JsvObject_CallMethodId"] = wasmExports2["JsvObject_CallMethodId"];\n _JsModule_GetAll = Module["_JsModule_GetAll"] = wasmExports2["JsModule_GetAll"];\n _PyType_IsSubtype = Module["_PyType_IsSubtype"] = wasmExports2["PyType_IsSubtype"];\n _JsProxy_Check = Module["_JsProxy_Check"] = wasmExports2["JsProxy_Check"];\n _JsBuffer_CopyIntoMemoryView = Module["_JsBuffer_CopyIntoMemoryView"] = wasmExports2["JsBuffer_CopyIntoMemoryView"];\n _PyMem_Malloc = Module["_PyMem_Malloc"] = wasmExports2["PyMem_Malloc"];\n _PyMemoryView_FromObject = Module["_PyMemoryView_FromObject"] = wasmExports2["PyMemoryView_FromObject"];\n _JsBuffer_cinit = Module["_JsBuffer_cinit"] = wasmExports2["JsBuffer_cinit"];\n _hiwire_new_deduplicate = Module["_hiwire_new_deduplicate"] = wasmExports2["hiwire_new_deduplicate"];\n _JsRef_new = Module["_JsRef_new"] = wasmExports2["JsRef_new"];\n _PyTuple_Pack = Module["_PyTuple_Pack"] = wasmExports2["PyTuple_Pack"];\n _PyLong_FromLong = Module["_PyLong_FromLong"] = wasmExports2["PyLong_FromLong"];\n _PyDict_GetItemWithError = Module["_PyDict_GetItemWithError"] = wasmExports2["PyDict_GetItemWithError"];\n _PyObject_SelfIter = Module["_PyObject_SelfIter"] = wasmExports2["PyObject_SelfIter"];\n _PyVectorcall_Call = Module["_PyVectorcall_Call"] = wasmExports2["PyVectorcall_Call"];\n _PyErr_NoMemory = Module["_PyErr_NoMemory"] = wasmExports2["PyErr_NoMemory"];\n _PyType_FromSpecWithBases = Module["_PyType_FromSpecWithBases"] = wasmExports2["PyType_FromSpecWithBases"];\n _PyObject_SetAttr = Module["_PyObject_SetAttr"] = wasmExports2["PyObject_SetAttr"];\n _PyMem_Free = Module["_PyMem_Free"] = wasmExports2["PyMem_Free"];\n _PyDict_SetItem = Module["_PyDict_SetItem"] = wasmExports2["PyDict_SetItem"];\n _JsProxy_create = Module["_JsProxy_create"] = wasmExports2["JsProxy_create"];\n _JsProxy_init_docstrings = Module["_JsProxy_init_docstrings"] = wasmExports2["JsProxy_init_docstrings"];\n _run_sync_not_supported = Module["_run_sync_not_supported"] = wasmExports2["run_sync_not_supported"];\n _run_sync = Module["_run_sync"] = wasmExports2["run_sync"];\n _py_is_awaitable = Module["_py_is_awaitable"] = wasmExports2["py_is_awaitable"];\n _JsvPromise_Syncify = Module["_JsvPromise_Syncify"] = wasmExports2["JsvPromise_Syncify"];\n _can_run_sync = Module["_can_run_sync"] = wasmExports2["can_run_sync"];\n _PyDict_New = Module["_PyDict_New"] = wasmExports2["PyDict_New"];\n _PyObject_SetAttrString = Module["_PyObject_SetAttrString"] = wasmExports2["PyObject_SetAttrString"];\n _PyModule_AddObject = Module["_PyModule_AddObject"] = wasmExports2["PyModule_AddObject"];\n _PyType_Ready = Module["_PyType_Ready"] = wasmExports2["PyType_Ready"];\n _JsMethod_Vectorcall_impl = Module["_JsMethod_Vectorcall_impl"] = wasmExports2["JsMethod_Vectorcall_impl"];\n _JsvObject_CallMethodId_TwoArgs = Module["_JsvObject_CallMethodId_TwoArgs"] = wasmExports2["JsvObject_CallMethodId_TwoArgs"];\n _PyObject_Repr = Module["_PyObject_Repr"] = wasmExports2["PyObject_Repr"];\n _PyIndex_Check = Module["_PyIndex_Check"] = wasmExports2["PyIndex_Check"];\n _PyNumber_AsSsize_t = Module["_PyNumber_AsSsize_t"] = wasmExports2["PyNumber_AsSsize_t"];\n _PySlice_Unpack = Module["_PySlice_Unpack"] = wasmExports2["PySlice_Unpack"];\n _PySlice_AdjustIndices = Module["_PySlice_AdjustIndices"] = wasmExports2["PySlice_AdjustIndices"];\n _PySequence_Fast = Module["_PySequence_Fast"] = wasmExports2["PySequence_Fast"];\n _PyArg_ParseTupleAndKeywords = Module["_PyArg_ParseTupleAndKeywords"] = wasmExports2["PyArg_ParseTupleAndKeywords"];\n _PySet_New = Module["_PySet_New"] = wasmExports2["PySet_New"];\n __PySet_Update = Module["__PySet_Update"] = wasmExports2["_PySet_Update"];\n _PyUnicode_FromString = Module["_PyUnicode_FromString"] = wasmExports2["PyUnicode_FromString"];\n _PySet_Discard = Module["_PySet_Discard"] = wasmExports2["PySet_Discard"];\n _PyList_New = Module["_PyList_New"] = wasmExports2["PyList_New"];\n _PyList_Extend = Module["_PyList_Extend"] = wasmExports2["PyList_Extend"];\n _PyList_Sort = Module["_PyList_Sort"] = wasmExports2["PyList_Sort"];\n __PyArg_ParseStack = Module["__PyArg_ParseStack"] = wasmExports2["_PyArg_ParseStack"];\n __PyArg_CheckPositional = Module["__PyArg_CheckPositional"] = wasmExports2["_PyArg_CheckPositional"];\n _PyObject_GetIter = Module["_PyObject_GetIter"] = wasmExports2["PyObject_GetIter"];\n _PyObject_RichCompareBool = Module["_PyObject_RichCompareBool"] = wasmExports2["PyObject_RichCompareBool"];\n _PyErr_WarnEx = Module["_PyErr_WarnEx"] = wasmExports2["PyErr_WarnEx"];\n __PyArg_ParseStackAndKeywords = Module["__PyArg_ParseStackAndKeywords"] = wasmExports2["_PyArg_ParseStackAndKeywords"];\n _hiwire_pop = Module["_hiwire_pop"] = wasmExports2["hiwire_pop"];\n _puts = Module["_puts"] = wasmExports2["puts"];\n _PyObject_GenericSetAttr = Module["_PyObject_GenericSetAttr"] = wasmExports2["PyObject_GenericSetAttr"];\n _Py_HashBuffer = Module["_Py_HashBuffer"] = wasmExports2["Py_HashBuffer"];\n _JsMethod_Construct_impl = Module["_JsMethod_Construct_impl"] = wasmExports2["JsMethod_Construct_impl"];\n _PyNumber_Index = Module["_PyNumber_Index"] = wasmExports2["PyNumber_Index"];\n _PyLong_AsSsize_t = Module["_PyLong_AsSsize_t"] = wasmExports2["PyLong_AsSsize_t"];\n _PyLong_FromSsize_t = Module["_PyLong_FromSsize_t"] = wasmExports2["PyLong_FromSsize_t"];\n _PyObject_GetItem = Module["_PyObject_GetItem"] = wasmExports2["PyObject_GetItem"];\n _PyObject_DelItem = Module["_PyObject_DelItem"] = wasmExports2["PyObject_DelItem"];\n _PyObject_SetItem = Module["_PyObject_SetItem"] = wasmExports2["PyObject_SetItem"];\n _PyObject_GetBuffer = Module["_PyObject_GetBuffer"] = wasmExports2["PyObject_GetBuffer"];\n _PyBuffer_Release = Module["_PyBuffer_Release"] = wasmExports2["PyBuffer_Release"];\n _PyBytes_FromStringAndSize = Module["_PyBytes_FromStringAndSize"] = wasmExports2["PyBytes_FromStringAndSize"];\n _PyObject_Vectorcall = Module["_PyObject_Vectorcall"] = wasmExports2["PyObject_Vectorcall"];\n _Py_EnterRecursiveCall = Module["_Py_EnterRecursiveCall"] = wasmExports2["Py_EnterRecursiveCall"];\n _Py_LeaveRecursiveCall = Module["_Py_LeaveRecursiveCall"] = wasmExports2["Py_LeaveRecursiveCall"];\n _Py2JsConverter_convert = Module["_Py2JsConverter_convert"] = wasmExports2["Py2JsConverter_convert"];\n _PyUnicode_Equal = Module["_PyUnicode_Equal"] = wasmExports2["PyUnicode_Equal"];\n _PyObject_GC_UnTrack = Module["_PyObject_GC_UnTrack"] = wasmExports2["PyObject_GC_UnTrack"];\n _PyUnicode_FromFormat = Module["_PyUnicode_FromFormat"] = wasmExports2["PyUnicode_FromFormat"];\n _PyType_GenericNew = Module["_PyType_GenericNew"] = wasmExports2["PyType_GenericNew"];\n _PyObject_IsInstance = Module["_PyObject_IsInstance"] = wasmExports2["PyObject_IsInstance"];\n _python2js_inner = Module["_python2js_inner"] = wasmExports2["python2js_inner"];\n _python2js_custom = Module["_python2js_custom"] = wasmExports2["python2js_custom"];\n _check_gil = Module["_check_gil"] = wasmExports2["check_gil"];\n _PyGILState_Check = Module["_PyGILState_Check"] = wasmExports2["PyGILState_Check"];\n _PyGen_GetCode = Module["_PyGen_GetCode"] = wasmExports2["PyGen_GetCode"];\n _pyproxy_getflags = Module["_pyproxy_getflags"] = wasmExports2["pyproxy_getflags"];\n _PyObject_HasAttr = Module["_PyObject_HasAttr"] = wasmExports2["PyObject_HasAttr"];\n _PyObject_IsSubclass = Module["_PyObject_IsSubclass"] = wasmExports2["PyObject_IsSubclass"];\n __pyproxy_repr = Module["__pyproxy_repr"] = wasmExports2["_pyproxy_repr"];\n _PyObject_Str = Module["_PyObject_Str"] = wasmExports2["PyObject_Str"];\n __pyproxy_type = Module["__pyproxy_type"] = wasmExports2["_pyproxy_type"];\n __pyproxy_hasattr = Module["__pyproxy_hasattr"] = wasmExports2["_pyproxy_hasattr"];\n _python2js_json_adaptor = Module["_python2js_json_adaptor"] = wasmExports2["python2js_json_adaptor"];\n __pyproxy_getattr = Module["__pyproxy_getattr"] = wasmExports2["_pyproxy_getattr"];\n __PyObject_GetMethod = Module["__PyObject_GetMethod"] = wasmExports2["_PyObject_GetMethod"];\n __pyproxy_setattr = Module["__pyproxy_setattr"] = wasmExports2["_pyproxy_setattr"];\n __pyproxy_delattr = Module["__pyproxy_delattr"] = wasmExports2["_pyproxy_delattr"];\n _PyObject_DelAttr = Module["_PyObject_DelAttr"] = wasmExports2["PyObject_DelAttr"];\n __pyproxy_getitem = Module["__pyproxy_getitem"] = wasmExports2["_pyproxy_getitem"];\n __pyproxy_setitem = Module["__pyproxy_setitem"] = wasmExports2["_pyproxy_setitem"];\n __pyproxy_delitem = Module["__pyproxy_delitem"] = wasmExports2["_pyproxy_delitem"];\n __pyproxy_slice_assign = Module["__pyproxy_slice_assign"] = wasmExports2["_pyproxy_slice_assign"];\n _PySequence_Size = Module["_PySequence_Size"] = wasmExports2["PySequence_Size"];\n _PySequence_GetSlice = Module["_PySequence_GetSlice"] = wasmExports2["PySequence_GetSlice"];\n _PySequence_SetSlice = Module["_PySequence_SetSlice"] = wasmExports2["PySequence_SetSlice"];\n _python2js_with_depth = Module["_python2js_with_depth"] = wasmExports2["python2js_with_depth"];\n __pyproxy_pop = Module["__pyproxy_pop"] = wasmExports2["_pyproxy_pop"];\n __pyproxy_contains = Module["__pyproxy_contains"] = wasmExports2["_pyproxy_contains"];\n _PySequence_Contains = Module["_PySequence_Contains"] = wasmExports2["PySequence_Contains"];\n __pyproxy_ownKeys = Module["__pyproxy_ownKeys"] = wasmExports2["_pyproxy_ownKeys"];\n _PyObject_Dir = Module["_PyObject_Dir"] = wasmExports2["PyObject_Dir"];\n _PyList_Size = Module["_PyList_Size"] = wasmExports2["PyList_Size"];\n _PyList_GetItem = Module["_PyList_GetItem"] = wasmExports2["PyList_GetItem"];\n __pyproxy_apply = Module["__pyproxy_apply"] = wasmExports2["_pyproxy_apply"];\n _PyTuple_New = Module["_PyTuple_New"] = wasmExports2["PyTuple_New"];\n __pyproxy_apply_promising = Module["__pyproxy_apply_promising"] = wasmExports2["_pyproxy_apply_promising"];\n _enter_promising_task = Module["_enter_promising_task"] = wasmExports2["enter_promising_task"];\n _exit_promising_task = Module["_exit_promising_task"] = wasmExports2["exit_promising_task"];\n __iscoroutinefunction = Module["__iscoroutinefunction"] = wasmExports2["_iscoroutinefunction"];\n __pyproxy_iter_next = Module["__pyproxy_iter_next"] = wasmExports2["_pyproxy_iter_next"];\n _PyIter_Next = Module["_PyIter_Next"] = wasmExports2["PyIter_Next"];\n __pyproxyGen_Send = Module["__pyproxyGen_Send"] = wasmExports2["_pyproxyGen_Send"];\n _PyIter_Send = Module["_PyIter_Send"] = wasmExports2["PyIter_Send"];\n __pyproxyGen_return = Module["__pyproxyGen_return"] = wasmExports2["_pyproxyGen_return"];\n __PyGen_FetchStopIterationValue = Module["__PyGen_FetchStopIterationValue"] = wasmExports2["_PyGen_FetchStopIterationValue"];\n __pyproxyGen_throw = Module["__pyproxyGen_throw"] = wasmExports2["_pyproxyGen_throw"];\n __pyproxyGen_asend = Module["__pyproxyGen_asend"] = wasmExports2["_pyproxyGen_asend"];\n __pyproxyGen_areturn = Module["__pyproxyGen_areturn"] = wasmExports2["_pyproxyGen_areturn"];\n __pyproxyGen_athrow = Module["__pyproxyGen_athrow"] = wasmExports2["_pyproxyGen_athrow"];\n __pyproxy_aiter_next = Module["__pyproxy_aiter_next"] = wasmExports2["_pyproxy_aiter_next"];\n _FutureDoneCallback_call_resolve = Module["_FutureDoneCallback_call_resolve"] = wasmExports2["FutureDoneCallback_call_resolve"];\n _FutureDoneCallback_call_reject = Module["_FutureDoneCallback_call_reject"] = wasmExports2["FutureDoneCallback_call_reject"];\n _FutureDoneCallback_call = Module["_FutureDoneCallback_call"] = wasmExports2["FutureDoneCallback_call"];\n _PyArg_UnpackTuple = Module["_PyArg_UnpackTuple"] = wasmExports2["PyArg_UnpackTuple"];\n __pyproxy_ensure_future = Module["__pyproxy_ensure_future"] = wasmExports2["_pyproxy_ensure_future"];\n __pyproxy_get_buffer = Module["__pyproxy_get_buffer"] = wasmExports2["_pyproxy_get_buffer"];\n _PyBuffer_FillContiguousStrides = Module["_PyBuffer_FillContiguousStrides"] = wasmExports2["PyBuffer_FillContiguousStrides"];\n _PyBuffer_IsContiguous = Module["_PyBuffer_IsContiguous"] = wasmExports2["PyBuffer_IsContiguous"];\n _create_promise_handles_result_helper = Module["_create_promise_handles_result_helper"] = wasmExports2["create_promise_handles_result_helper"];\n __python2js_buffer = Module["__python2js_buffer"] = wasmExports2["_python2js_buffer"];\n _Jsv_GetError = Module["_Jsv_GetError"] = wasmExports2["Jsv_GetError"];\n _jslib_init_buffers = Module["_jslib_init_buffers"] = wasmExports2["jslib_init_buffers"];\n _JsRef_pop = Module["_JsRef_pop"] = wasmExports2["JsRef_pop"];\n _JsrString_FromId = Module["_JsrString_FromId"] = wasmExports2["JsrString_FromId"];\n _hiwire_intern = Module["_hiwire_intern"] = wasmExports2["hiwire_intern"];\n __python2js = Module["__python2js"] = wasmExports2["_python2js"];\n _PySequence_GetItem = Module["_PySequence_GetItem"] = wasmExports2["PySequence_GetItem"];\n _PyObject_CheckBuffer = Module["_PyObject_CheckBuffer"] = wasmExports2["PyObject_CheckBuffer"];\n _PyLong_AsLongAndOverflow = Module["_PyLong_AsLongAndOverflow"] = wasmExports2["PyLong_AsLongAndOverflow"];\n _python2js__default_converter = Module["_python2js__default_converter"] = wasmExports2["python2js__default_converter"];\n _python2js__eager_converter = Module["_python2js__eager_converter"] = wasmExports2["python2js__eager_converter"];\n __PyLong_NumBits = Module["__PyLong_NumBits"] = wasmExports2["_PyLong_NumBits"];\n __PyLong_AsByteArray = Module["__PyLong_AsByteArray"] = wasmExports2["_PyLong_AsByteArray"];\n _PyFloat_AsDouble = Module["_PyFloat_AsDouble"] = wasmExports2["PyFloat_AsDouble"];\n _pystate_threadstate_new = Module["_pystate_threadstate_new"] = wasmExports2["pystate_threadstate_new"];\n _PyThreadState_New = Module["_PyThreadState_New"] = wasmExports2["PyThreadState_New"];\n _pystate_threadstate_swap = Module["_pystate_threadstate_swap"] = wasmExports2["pystate_threadstate_swap"];\n _PyThreadState_Swap = Module["_PyThreadState_Swap"] = wasmExports2["PyThreadState_Swap"];\n _PyContext_CopyCurrent = Module["_PyContext_CopyCurrent"] = wasmExports2["PyContext_CopyCurrent"];\n _PyThreadState_GetDict = Module["_PyThreadState_GetDict"] = wasmExports2["PyThreadState_GetDict"];\n _PyThreadState_Get = Module["_PyThreadState_Get"] = wasmExports2["PyThreadState_Get"];\n _PyObject_CallMethod = Module["_PyObject_CallMethod"] = wasmExports2["PyObject_CallMethod"];\n _PyEval_SetProfile = Module["_PyEval_SetProfile"] = wasmExports2["PyEval_SetProfile"];\n _PyEval_SetTrace = Module["_PyEval_SetTrace"] = wasmExports2["PyEval_SetTrace"];\n _PyThreadState_Clear = Module["_PyThreadState_Clear"] = wasmExports2["PyThreadState_Clear"];\n _PyThreadState_Delete = Module["_PyThreadState_Delete"] = wasmExports2["PyThreadState_Delete"];\n _captureThreadState = Module["_captureThreadState"] = wasmExports2["captureThreadState"];\n _restoreThreadState = Module["_restoreThreadState"] = wasmExports2["restoreThreadState"];\n _syscall_syncify = Module["_syscall_syncify"] = wasmExports2["syscall_syncify"];\n _PyGILState_Ensure = Module["_PyGILState_Ensure"] = wasmExports2["PyGILState_Ensure"];\n _PyGILState_Release = Module["_PyGILState_Release"] = wasmExports2["PyGILState_Release"];\n _print_stdout = Module["_print_stdout"] = wasmExports2["print_stdout"];\n _fiprintf = Module["_fiprintf"] = wasmExports2["fiprintf"];\n _print_stderr = Module["_print_stderr"] = wasmExports2["print_stderr"];\n ___wrap___syscall_connect = Module["___wrap___syscall_connect"] = wasmExports2["__wrap___syscall_connect"];\n ___wrap___syscall_recvfrom = Module["___wrap___syscall_recvfrom"] = wasmExports2["__wrap___syscall_recvfrom"];\n ___wrap___syscall_sendto = Module["___wrap___syscall_sendto"] = wasmExports2["__wrap___syscall_sendto"];\n ___wrap___syscall_fcntl64 = Module["___wrap___syscall_fcntl64"] = wasmExports2["__wrap___syscall_fcntl64"];\n ___wrap___syscall_poll = Module["___wrap___syscall_poll"] = wasmExports2["__wrap___syscall_poll"];\n ___wrap___syscall_shutdown = Module["___wrap___syscall_shutdown"] = wasmExports2["__wrap___syscall_shutdown"];\n ___syscall_setsockopt = Module["___syscall_setsockopt"] = wasmExports2["__syscall_setsockopt"];\n _main = Module["_main"] = wasmExports2["__main_argc_argv"];\n _PyImport_AppendInittab = Module["_PyImport_AppendInittab"] = wasmExports2["PyImport_AppendInittab"];\n _PyPreConfig_InitPythonConfig = Module["_PyPreConfig_InitPythonConfig"] = wasmExports2["PyPreConfig_InitPythonConfig"];\n _Py_PreInitializeFromBytesArgs = Module["_Py_PreInitializeFromBytesArgs"] = wasmExports2["Py_PreInitializeFromBytesArgs"];\n _PyStatus_Exception = Module["_PyStatus_Exception"] = wasmExports2["PyStatus_Exception"];\n _PyConfig_InitPythonConfig = Module["_PyConfig_InitPythonConfig"] = wasmExports2["PyConfig_InitPythonConfig"];\n _PyConfig_SetBytesArgv = Module["_PyConfig_SetBytesArgv"] = wasmExports2["PyConfig_SetBytesArgv"];\n _PyConfig_SetBytesString = Module["_PyConfig_SetBytesString"] = wasmExports2["PyConfig_SetBytesString"];\n _Py_InitializeFromConfig = Module["_Py_InitializeFromConfig"] = wasmExports2["Py_InitializeFromConfig"];\n _PyConfig_Clear = Module["_PyConfig_Clear"] = wasmExports2["PyConfig_Clear"];\n _Py_ExitStatusException = Module["_Py_ExitStatusException"] = wasmExports2["Py_ExitStatusException"];\n _run_main = Module["_run_main"] = wasmExports2["run_main"];\n _run_main_promising = Module["_run_main_promising"] = wasmExports2["run_main_promising"];\n _Py_GetBuildInfo = Module["_Py_GetBuildInfo"] = wasmExports2["Py_GetBuildInfo"];\n _PyOS_snprintf = Module["_PyOS_snprintf"] = wasmExports2["PyOS_snprintf"];\n __PyToken_OneChar = Module["__PyToken_OneChar"] = wasmExports2["_PyToken_OneChar"];\n __PyToken_TwoChars = Module["__PyToken_TwoChars"] = wasmExports2["_PyToken_TwoChars"];\n __PyToken_ThreeChars = Module["__PyToken_ThreeChars"] = wasmExports2["_PyToken_ThreeChars"];\n _strlen = Module["_strlen"] = wasmExports2["strlen"];\n _PyUnicode_DecodeUTF8 = Module["_PyUnicode_DecodeUTF8"] = wasmExports2["PyUnicode_DecodeUTF8"];\n __PyArena_Malloc = Module["__PyArena_Malloc"] = wasmExports2["_PyArena_Malloc"];\n _strncpy = Module["_strncpy"] = wasmExports2["strncpy"];\n _PyMem_Realloc = Module["_PyMem_Realloc"] = wasmExports2["PyMem_Realloc"];\n _PyMem_Calloc = Module["_PyMem_Calloc"] = wasmExports2["PyMem_Calloc"];\n _strncmp = Module["_strncmp"] = wasmExports2["strncmp"];\n __PyArena_AddPyObject = Module["__PyArena_AddPyObject"] = wasmExports2["_PyArena_AddPyObject"];\n _PyBytes_AsString = Module["_PyBytes_AsString"] = wasmExports2["PyBytes_AsString"];\n _PyImport_ImportModuleAttrString = Module["_PyImport_ImportModuleAttrString"] = wasmExports2["PyImport_ImportModuleAttrString"];\n _PyUnicode_InternFromString = Module["_PyUnicode_InternFromString"] = wasmExports2["PyUnicode_InternFromString"];\n __PyType_Name = Module["__PyType_Name"] = wasmExports2["_PyType_Name"];\n __PyUnicode_EqualToASCIIString = Module["__PyUnicode_EqualToASCIIString"] = wasmExports2["_PyUnicode_EqualToASCIIString"];\n __PyUnicode_InternImmortal = Module["__PyUnicode_InternImmortal"] = wasmExports2["_PyUnicode_InternImmortal"];\n _PyBytes_AsStringAndSize = Module["_PyBytes_AsStringAndSize"] = wasmExports2["PyBytes_AsStringAndSize"];\n _strchr = Module["_strchr"] = wasmExports2["strchr"];\n _PyUnicode_Decode = Module["_PyUnicode_Decode"] = wasmExports2["PyUnicode_Decode"];\n _Py_BuildValue = Module["_Py_BuildValue"] = wasmExports2["Py_BuildValue"];\n _PyUnicode_CompareWithASCIIString = Module["_PyUnicode_CompareWithASCIIString"] = wasmExports2["PyUnicode_CompareWithASCIIString"];\n ___errno_location = Module["___errno_location"] = wasmExports2["__errno_location"];\n _PyOS_strtoul = Module["_PyOS_strtoul"] = wasmExports2["PyOS_strtoul"];\n _PyLong_FromString = Module["_PyLong_FromString"] = wasmExports2["PyLong_FromString"];\n _PyOS_strtol = Module["_PyOS_strtol"] = wasmExports2["PyOS_strtol"];\n _PyOS_string_to_double = Module["_PyOS_string_to_double"] = wasmExports2["PyOS_string_to_double"];\n _PyComplex_FromCComplex = Module["_PyComplex_FromCComplex"] = wasmExports2["PyComplex_FromCComplex"];\n _PyFloat_FromDouble = Module["_PyFloat_FromDouble"] = wasmExports2["PyFloat_FromDouble"];\n _PyUnicode_FromFormatV = Module["_PyUnicode_FromFormatV"] = wasmExports2["PyUnicode_FromFormatV"];\n __PyErr_ProgramDecodedTextObject = Module["__PyErr_ProgramDecodedTextObject"] = wasmExports2["_PyErr_ProgramDecodedTextObject"];\n _Py_GetConstant = Module["_Py_GetConstant"] = wasmExports2["Py_GetConstant"];\n _PyBytes_Concat = Module["_PyBytes_Concat"] = wasmExports2["PyBytes_Concat"];\n _PyUnicodeWriter_Create = Module["_PyUnicodeWriter_Create"] = wasmExports2["PyUnicodeWriter_Create"];\n _PyUnicodeWriter_WriteStr = Module["_PyUnicodeWriter_WriteStr"] = wasmExports2["PyUnicodeWriter_WriteStr"];\n _PyUnicodeWriter_Discard = Module["_PyUnicodeWriter_Discard"] = wasmExports2["PyUnicodeWriter_Discard"];\n _PyUnicodeWriter_Finish = Module["_PyUnicodeWriter_Finish"] = wasmExports2["PyUnicodeWriter_Finish"];\n _strpbrk = Module["_strpbrk"] = wasmExports2["strpbrk"];\n __PyUnicode_IsWhitespace = Module["__PyUnicode_IsWhitespace"] = wasmExports2["_PyUnicode_IsWhitespace"];\n _PyUnicode_Substring = Module["_PyUnicode_Substring"] = wasmExports2["PyUnicode_Substring"];\n __Py_ReachedRecursionLimitWithMargin = Module["__Py_ReachedRecursionLimitWithMargin"] = wasmExports2["_Py_ReachedRecursionLimitWithMargin"];\n _PyUnicode_DecodeUTF8Stateful = Module["_PyUnicode_DecodeUTF8Stateful"] = wasmExports2["PyUnicode_DecodeUTF8Stateful"];\n _siprintf = Module["_siprintf"] = wasmExports2["siprintf"];\n __PyUnicode_DecodeUnicodeEscapeInternal2 = Module["__PyUnicode_DecodeUnicodeEscapeInternal2"] = wasmExports2["_PyUnicode_DecodeUnicodeEscapeInternal2"];\n __PyErr_BadInternalCall = Module["__PyErr_BadInternalCall"] = wasmExports2["_PyErr_BadInternalCall"];\n __PyBytes_DecodeEscape2 = Module["__PyBytes_DecodeEscape2"] = wasmExports2["_PyBytes_DecodeEscape2"];\n _PyBytes_Size = Module["_PyBytes_Size"] = wasmExports2["PyBytes_Size"];\n _PyErr_WarnExplicitObject = Module["_PyErr_WarnExplicitObject"] = wasmExports2["PyErr_WarnExplicitObject"];\n _PySys_Audit = Module["_PySys_Audit"] = wasmExports2["PySys_Audit"];\n _memchr = Module["_memchr"] = wasmExports2["memchr"];\n __Py_FatalErrorFunc = Module["__Py_FatalErrorFunc"] = wasmExports2["_Py_FatalErrorFunc"];\n __PyUnicode_ScanIdentifier = Module["__PyUnicode_ScanIdentifier"] = wasmExports2["_PyUnicode_ScanIdentifier"];\n _PyUnicode_AsUTF8String = Module["_PyUnicode_AsUTF8String"] = wasmExports2["PyUnicode_AsUTF8String"];\n __PyUnicode_IsPrintable = Module["__PyUnicode_IsPrintable"] = wasmExports2["_PyUnicode_IsPrintable"];\n _PyOS_Readline = Module["_PyOS_Readline"] = wasmExports2["PyOS_Readline"];\n _strcpy = Module["_strcpy"] = wasmExports2["strcpy"];\n _PyObject_CallNoArgs = Module["_PyObject_CallNoArgs"] = wasmExports2["PyObject_CallNoArgs"];\n __Py_UniversalNewlineFgetsWithSize = Module["__Py_UniversalNewlineFgetsWithSize"] = wasmExports2["_Py_UniversalNewlineFgetsWithSize"];\n _fopencookie = Module["_fopencookie"] = wasmExports2["fopencookie"];\n _fclose = Module["_fclose"] = wasmExports2["fclose"];\n _getc = Module["_getc"] = wasmExports2["getc"];\n _ungetc = Module["_ungetc"] = wasmExports2["ungetc"];\n _ftell = Module["_ftell"] = wasmExports2["ftell"];\n _lseek = Module["_lseek"] = wasmExports2["lseek"];\n _PyErr_SetFromErrnoWithFilename = Module["_PyErr_SetFromErrnoWithFilename"] = wasmExports2["PyErr_SetFromErrnoWithFilename"];\n _PyObject_CallFunction = Module["_PyObject_CallFunction"] = wasmExports2["PyObject_CallFunction"];\n _PyObject_GetAttr = Module["_PyObject_GetAttr"] = wasmExports2["PyObject_GetAttr"];\n __PyObject_MakeTpCall = Module["__PyObject_MakeTpCall"] = wasmExports2["_PyObject_MakeTpCall"];\n __Py_CheckFunctionResult = Module["__Py_CheckFunctionResult"] = wasmExports2["_Py_CheckFunctionResult"];\n _read = Module["_read"] = wasmExports2["read"];\n _strcspn = Module["_strcspn"] = wasmExports2["strcspn"];\n _fflush = Module["_fflush"] = wasmExports2["fflush"];\n _fputs = Module["_fputs"] = wasmExports2["fputs"];\n _PyMem_RawFree = Module["_PyMem_RawFree"] = wasmExports2["PyMem_RawFree"];\n _PyEval_RestoreThread = Module["_PyEval_RestoreThread"] = wasmExports2["PyEval_RestoreThread"];\n _PyEval_SaveThread = Module["_PyEval_SaveThread"] = wasmExports2["PyEval_SaveThread"];\n _PyMem_RawRealloc = Module["_PyMem_RawRealloc"] = wasmExports2["PyMem_RawRealloc"];\n __PyInterpreterState_Main = Module["__PyInterpreterState_Main"] = wasmExports2["_PyInterpreterState_Main"];\n _clearerr = Module["_clearerr"] = wasmExports2["clearerr"];\n _fgets = Module["_fgets"] = wasmExports2["fgets"];\n _feof = Module["_feof"] = wasmExports2["feof"];\n _PyErr_CheckSignals = Module["_PyErr_CheckSignals"] = wasmExports2["PyErr_CheckSignals"];\n _PyMutex_Lock = Module["_PyMutex_Lock"] = wasmExports2["PyMutex_Lock"];\n _isatty = Module["_isatty"] = wasmExports2["isatty"];\n _PyMutex_Unlock = Module["_PyMutex_Unlock"] = wasmExports2["PyMutex_Unlock"];\n _PyObject_Type = Module["_PyObject_Type"] = wasmExports2["PyObject_Type"];\n __PyErr_SetString = Module["__PyErr_SetString"] = wasmExports2["_PyErr_SetString"];\n _PyObject_Size = Module["_PyObject_Size"] = wasmExports2["PyObject_Size"];\n _PyMapping_Size = Module["_PyMapping_Size"] = wasmExports2["PyMapping_Size"];\n _PyObject_Length = Module["_PyObject_Length"] = wasmExports2["PyObject_Length"];\n _PyObject_LengthHint = Module["_PyObject_LengthHint"] = wasmExports2["PyObject_LengthHint"];\n __PyErr_ExceptionMatches = Module["__PyErr_ExceptionMatches"] = wasmExports2["_PyErr_ExceptionMatches"];\n __PyErr_Clear = Module["__PyErr_Clear"] = wasmExports2["_PyErr_Clear"];\n __PyObject_LookupSpecial = Module["__PyObject_LookupSpecial"] = wasmExports2["_PyObject_LookupSpecial"];\n _Py_GenericAlias = Module["_Py_GenericAlias"] = wasmExports2["Py_GenericAlias"];\n _PyObject_GetOptionalAttr = Module["_PyObject_GetOptionalAttr"] = wasmExports2["PyObject_GetOptionalAttr"];\n __PyNumber_Index = Module["__PyNumber_Index"] = wasmExports2["_PyNumber_Index"];\n __PyErr_Format = Module["__PyErr_Format"] = wasmExports2["_PyErr_Format"];\n _PyMapping_GetOptionalItem = Module["_PyMapping_GetOptionalItem"] = wasmExports2["PyMapping_GetOptionalItem"];\n _PyDict_GetItemRef = Module["_PyDict_GetItemRef"] = wasmExports2["PyDict_GetItemRef"];\n _PySequence_SetItem = Module["_PySequence_SetItem"] = wasmExports2["PySequence_SetItem"];\n _PySequence_DelItem = Module["_PySequence_DelItem"] = wasmExports2["PySequence_DelItem"];\n _PyObject_DelItemString = Module["_PyObject_DelItemString"] = wasmExports2["PyObject_DelItemString"];\n _PyObject_CheckReadBuffer = Module["_PyObject_CheckReadBuffer"] = wasmExports2["PyObject_CheckReadBuffer"];\n _PyObject_AsCharBuffer = Module["_PyObject_AsCharBuffer"] = wasmExports2["PyObject_AsCharBuffer"];\n _PyObject_AsReadBuffer = Module["_PyObject_AsReadBuffer"] = wasmExports2["PyObject_AsReadBuffer"];\n _PyObject_AsWriteBuffer = Module["_PyObject_AsWriteBuffer"] = wasmExports2["PyObject_AsWriteBuffer"];\n _PyBuffer_GetPointer = Module["_PyBuffer_GetPointer"] = wasmExports2["PyBuffer_GetPointer"];\n _PyBuffer_SizeFromFormat = Module["_PyBuffer_SizeFromFormat"] = wasmExports2["PyBuffer_SizeFromFormat"];\n _PyObject_CallFunctionObjArgs = Module["_PyObject_CallFunctionObjArgs"] = wasmExports2["PyObject_CallFunctionObjArgs"];\n _PyBuffer_FromContiguous = Module["_PyBuffer_FromContiguous"] = wasmExports2["PyBuffer_FromContiguous"];\n _PyObject_CopyData = Module["_PyObject_CopyData"] = wasmExports2["PyObject_CopyData"];\n _PyBuffer_FillInfo = Module["_PyBuffer_FillInfo"] = wasmExports2["PyBuffer_FillInfo"];\n __PyBuffer_ReleaseInInterpreter = Module["__PyBuffer_ReleaseInInterpreter"] = wasmExports2["_PyBuffer_ReleaseInInterpreter"];\n __PyBuffer_ReleaseInInterpreterAndRawFree = Module["__PyBuffer_ReleaseInInterpreterAndRawFree"] = wasmExports2["_PyBuffer_ReleaseInInterpreterAndRawFree"];\n _PyObject_Format = Module["_PyObject_Format"] = wasmExports2["PyObject_Format"];\n _PyNumber_Check = Module["_PyNumber_Check"] = wasmExports2["PyNumber_Check"];\n _PyNumber_Or = Module["_PyNumber_Or"] = wasmExports2["PyNumber_Or"];\n _PyNumber_Xor = Module["_PyNumber_Xor"] = wasmExports2["PyNumber_Xor"];\n _PyNumber_And = Module["_PyNumber_And"] = wasmExports2["PyNumber_And"];\n _PyNumber_Lshift = Module["_PyNumber_Lshift"] = wasmExports2["PyNumber_Lshift"];\n _PyNumber_Rshift = Module["_PyNumber_Rshift"] = wasmExports2["PyNumber_Rshift"];\n _PyNumber_Subtract = Module["_PyNumber_Subtract"] = wasmExports2["PyNumber_Subtract"];\n _PyNumber_Divmod = Module["_PyNumber_Divmod"] = wasmExports2["PyNumber_Divmod"];\n _PyNumber_Add = Module["_PyNumber_Add"] = wasmExports2["PyNumber_Add"];\n _PyNumber_Multiply = Module["_PyNumber_Multiply"] = wasmExports2["PyNumber_Multiply"];\n _PyNumber_MatrixMultiply = Module["_PyNumber_MatrixMultiply"] = wasmExports2["PyNumber_MatrixMultiply"];\n _PyNumber_FloorDivide = Module["_PyNumber_FloorDivide"] = wasmExports2["PyNumber_FloorDivide"];\n _PyNumber_TrueDivide = Module["_PyNumber_TrueDivide"] = wasmExports2["PyNumber_TrueDivide"];\n _PyNumber_Remainder = Module["_PyNumber_Remainder"] = wasmExports2["PyNumber_Remainder"];\n _PyNumber_Power = Module["_PyNumber_Power"] = wasmExports2["PyNumber_Power"];\n _PyNumber_InPlaceOr = Module["_PyNumber_InPlaceOr"] = wasmExports2["PyNumber_InPlaceOr"];\n _PyNumber_InPlaceXor = Module["_PyNumber_InPlaceXor"] = wasmExports2["PyNumber_InPlaceXor"];\n _PyNumber_InPlaceAnd = Module["_PyNumber_InPlaceAnd"] = wasmExports2["PyNumber_InPlaceAnd"];\n _PyNumber_InPlaceLshift = Module["_PyNumber_InPlaceLshift"] = wasmExports2["PyNumber_InPlaceLshift"];\n _PyNumber_InPlaceRshift = Module["_PyNumber_InPlaceRshift"] = wasmExports2["PyNumber_InPlaceRshift"];\n _PyNumber_InPlaceSubtract = Module["_PyNumber_InPlaceSubtract"] = wasmExports2["PyNumber_InPlaceSubtract"];\n _PyNumber_InPlaceMatrixMultiply = Module["_PyNumber_InPlaceMatrixMultiply"] = wasmExports2["PyNumber_InPlaceMatrixMultiply"];\n _PyNumber_InPlaceFloorDivide = Module["_PyNumber_InPlaceFloorDivide"] = wasmExports2["PyNumber_InPlaceFloorDivide"];\n _PyNumber_InPlaceTrueDivide = Module["_PyNumber_InPlaceTrueDivide"] = wasmExports2["PyNumber_InPlaceTrueDivide"];\n _PyNumber_InPlaceRemainder = Module["_PyNumber_InPlaceRemainder"] = wasmExports2["PyNumber_InPlaceRemainder"];\n _PyNumber_InPlaceAdd = Module["_PyNumber_InPlaceAdd"] = wasmExports2["PyNumber_InPlaceAdd"];\n _PyNumber_InPlaceMultiply = Module["_PyNumber_InPlaceMultiply"] = wasmExports2["PyNumber_InPlaceMultiply"];\n _PyNumber_InPlacePower = Module["_PyNumber_InPlacePower"] = wasmExports2["PyNumber_InPlacePower"];\n _PyNumber_Negative = Module["_PyNumber_Negative"] = wasmExports2["PyNumber_Negative"];\n _PyNumber_Positive = Module["_PyNumber_Positive"] = wasmExports2["PyNumber_Positive"];\n _PyNumber_Invert = Module["_PyNumber_Invert"] = wasmExports2["PyNumber_Invert"];\n _PyNumber_Absolute = Module["_PyNumber_Absolute"] = wasmExports2["PyNumber_Absolute"];\n _PyErr_WarnFormat = Module["_PyErr_WarnFormat"] = wasmExports2["PyErr_WarnFormat"];\n __PyLong_Copy = Module["__PyLong_Copy"] = wasmExports2["_PyLong_Copy"];\n _PyNumber_Long = Module["_PyNumber_Long"] = wasmExports2["PyNumber_Long"];\n _PyLong_FromUnicodeObject = Module["_PyLong_FromUnicodeObject"] = wasmExports2["PyLong_FromUnicodeObject"];\n _PyNumber_Float = Module["_PyNumber_Float"] = wasmExports2["PyNumber_Float"];\n _PyLong_AsDouble = Module["_PyLong_AsDouble"] = wasmExports2["PyLong_AsDouble"];\n _PyFloat_FromString = Module["_PyFloat_FromString"] = wasmExports2["PyFloat_FromString"];\n _PyNumber_ToBase = Module["_PyNumber_ToBase"] = wasmExports2["PyNumber_ToBase"];\n __PyLong_Format = Module["__PyLong_Format"] = wasmExports2["_PyLong_Format"];\n _PySequence_Check = Module["_PySequence_Check"] = wasmExports2["PySequence_Check"];\n _PySequence_Length = Module["_PySequence_Length"] = wasmExports2["PySequence_Length"];\n _PySequence_Concat = Module["_PySequence_Concat"] = wasmExports2["PySequence_Concat"];\n _PySequence_Repeat = Module["_PySequence_Repeat"] = wasmExports2["PySequence_Repeat"];\n _PySequence_InPlaceConcat = Module["_PySequence_InPlaceConcat"] = wasmExports2["PySequence_InPlaceConcat"];\n _PySequence_InPlaceRepeat = Module["_PySequence_InPlaceRepeat"] = wasmExports2["PySequence_InPlaceRepeat"];\n __PySlice_FromIndices = Module["__PySlice_FromIndices"] = wasmExports2["_PySlice_FromIndices"];\n _PySequence_DelSlice = Module["_PySequence_DelSlice"] = wasmExports2["PySequence_DelSlice"];\n _PySequence_Tuple = Module["_PySequence_Tuple"] = wasmExports2["PySequence_Tuple"];\n _PyList_AsTuple = Module["_PyList_AsTuple"] = wasmExports2["PyList_AsTuple"];\n __PyList_AppendTakeRefListResize = Module["__PyList_AppendTakeRefListResize"] = wasmExports2["_PyList_AppendTakeRefListResize"];\n __PyList_AsTupleAndClear = Module["__PyList_AsTupleAndClear"] = wasmExports2["_PyList_AsTupleAndClear"];\n __PyTuple_FromArraySteal = Module["__PyTuple_FromArraySteal"] = wasmExports2["_PyTuple_FromArraySteal"];\n _PySeqIter_New = Module["_PySeqIter_New"] = wasmExports2["PySeqIter_New"];\n _PySequence_List = Module["_PySequence_List"] = wasmExports2["PySequence_List"];\n __PyList_Extend = Module["__PyList_Extend"] = wasmExports2["_PyList_Extend"];\n _PySequence_Count = Module["_PySequence_Count"] = wasmExports2["PySequence_Count"];\n _PySequence_In = Module["_PySequence_In"] = wasmExports2["PySequence_In"];\n _PySequence_Index = Module["_PySequence_Index"] = wasmExports2["PySequence_Index"];\n _PyMapping_Check = Module["_PyMapping_Check"] = wasmExports2["PyMapping_Check"];\n _PyMapping_Length = Module["_PyMapping_Length"] = wasmExports2["PyMapping_Length"];\n _PyMapping_GetItemString = Module["_PyMapping_GetItemString"] = wasmExports2["PyMapping_GetItemString"];\n _PyMapping_GetOptionalItemString = Module["_PyMapping_GetOptionalItemString"] = wasmExports2["PyMapping_GetOptionalItemString"];\n _PyMapping_SetItemString = Module["_PyMapping_SetItemString"] = wasmExports2["PyMapping_SetItemString"];\n _PyMapping_HasKeyStringWithError = Module["_PyMapping_HasKeyStringWithError"] = wasmExports2["PyMapping_HasKeyStringWithError"];\n _PyMapping_HasKeyWithError = Module["_PyMapping_HasKeyWithError"] = wasmExports2["PyMapping_HasKeyWithError"];\n _PyMapping_HasKeyString = Module["_PyMapping_HasKeyString"] = wasmExports2["PyMapping_HasKeyString"];\n _PyErr_FormatUnraisable = Module["_PyErr_FormatUnraisable"] = wasmExports2["PyErr_FormatUnraisable"];\n _PyMapping_HasKey = Module["_PyMapping_HasKey"] = wasmExports2["PyMapping_HasKey"];\n _PyMapping_Keys = Module["_PyMapping_Keys"] = wasmExports2["PyMapping_Keys"];\n _PyDict_Keys = Module["_PyDict_Keys"] = wasmExports2["PyDict_Keys"];\n _PyMapping_Items = Module["_PyMapping_Items"] = wasmExports2["PyMapping_Items"];\n _PyDict_Items = Module["_PyDict_Items"] = wasmExports2["PyDict_Items"];\n _PyMapping_Values = Module["_PyMapping_Values"] = wasmExports2["PyMapping_Values"];\n _PyDict_Values = Module["_PyDict_Values"] = wasmExports2["PyDict_Values"];\n __Py_CheckRecursiveCall = Module["__Py_CheckRecursiveCall"] = wasmExports2["_Py_CheckRecursiveCall"];\n _PyObject_IsTrue = Module["_PyObject_IsTrue"] = wasmExports2["PyObject_IsTrue"];\n _PyIter_Check = Module["_PyIter_Check"] = wasmExports2["PyIter_Check"];\n _PyObject_GetAIter = Module["_PyObject_GetAIter"] = wasmExports2["PyObject_GetAIter"];\n _PyAIter_Check = Module["_PyAIter_Check"] = wasmExports2["PyAIter_Check"];\n _PyIter_NextItem = Module["_PyIter_NextItem"] = wasmExports2["PyIter_NextItem"];\n _PyBool_FromLong = Module["_PyBool_FromLong"] = wasmExports2["PyBool_FromLong"];\n __Py_SetImmortal = Module["__Py_SetImmortal"] = wasmExports2["_Py_SetImmortal"];\n __PyArg_NoKeywords = Module["__PyArg_NoKeywords"] = wasmExports2["_PyArg_NoKeywords"];\n _memrchr = Module["_memrchr"] = wasmExports2["memrchr"];\n _memcmp = Module["_memcmp"] = wasmExports2["memcmp"];\n _PyByteArray_FromObject = Module["_PyByteArray_FromObject"] = wasmExports2["PyByteArray_FromObject"];\n _PyByteArray_FromStringAndSize = Module["_PyByteArray_FromStringAndSize"] = wasmExports2["PyByteArray_FromStringAndSize"];\n __PyObject_New = Module["__PyObject_New"] = wasmExports2["_PyObject_New"];\n _PyByteArray_Size = Module["_PyByteArray_Size"] = wasmExports2["PyByteArray_Size"];\n _PyByteArray_AsString = Module["_PyByteArray_AsString"] = wasmExports2["PyByteArray_AsString"];\n _PyByteArray_Resize = Module["_PyByteArray_Resize"] = wasmExports2["PyByteArray_Resize"];\n _PyByteArray_Concat = Module["_PyByteArray_Concat"] = wasmExports2["PyByteArray_Concat"];\n _PyUnicode_FromStringAndSize = Module["_PyUnicode_FromStringAndSize"] = wasmExports2["PyUnicode_FromStringAndSize"];\n __Py_GetConfig = Module["__Py_GetConfig"] = wasmExports2["_Py_GetConfig"];\n __PyObject_GC_New = Module["__PyObject_GC_New"] = wasmExports2["_PyObject_GC_New"];\n __PyArg_UnpackKeywords = Module["__PyArg_UnpackKeywords"] = wasmExports2["_PyArg_UnpackKeywords"];\n __PyArg_BadArgument = Module["__PyArg_BadArgument"] = wasmExports2["_PyArg_BadArgument"];\n _PyUnicode_AsEncodedString = Module["_PyUnicode_AsEncodedString"] = wasmExports2["PyUnicode_AsEncodedString"];\n _PyBuffer_ToContiguous = Module["_PyBuffer_ToContiguous"] = wasmExports2["PyBuffer_ToContiguous"];\n _PyObject_GC_Del = Module["_PyObject_GC_Del"] = wasmExports2["PyObject_GC_Del"];\n __PyBytes_Repeat = Module["__PyBytes_Repeat"] = wasmExports2["_PyBytes_Repeat"];\n __PyObject_GetState = Module["__PyObject_GetState"] = wasmExports2["_PyObject_GetState"];\n _PyUnicode_DecodeLatin1 = Module["_PyUnicode_DecodeLatin1"] = wasmExports2["PyUnicode_DecodeLatin1"];\n _PyLong_AsInt = Module["_PyLong_AsInt"] = wasmExports2["PyLong_AsInt"];\n _PyLong_FromSize_t = Module["_PyLong_FromSize_t"] = wasmExports2["PyLong_FromSize_t"];\n __PyEval_SliceIndex = Module["__PyEval_SliceIndex"] = wasmExports2["_PyEval_SliceIndex"];\n _PyUnicode_GetDefaultEncoding = Module["_PyUnicode_GetDefaultEncoding"] = wasmExports2["PyUnicode_GetDefaultEncoding"];\n _PyUnicode_FromEncodedObject = Module["_PyUnicode_FromEncodedObject"] = wasmExports2["PyUnicode_FromEncodedObject"];\n _PyList_Append = Module["_PyList_Append"] = wasmExports2["PyList_Append"];\n _PyList_Reverse = Module["_PyList_Reverse"] = wasmExports2["PyList_Reverse"];\n __PyEval_GetBuiltin = Module["__PyEval_GetBuiltin"] = wasmExports2["_PyEval_GetBuiltin"];\n _PyObject_GenericGetAttr = Module["_PyObject_GenericGetAttr"] = wasmExports2["PyObject_GenericGetAttr"];\n _PyType_GenericAlloc = Module["_PyType_GenericAlloc"] = wasmExports2["PyType_GenericAlloc"];\n _PyObject_Free = Module["_PyObject_Free"] = wasmExports2["PyObject_Free"];\n _PyObject_Malloc = Module["_PyObject_Malloc"] = wasmExports2["PyObject_Malloc"];\n __Py_NewReference = Module["__Py_NewReference"] = wasmExports2["_Py_NewReference"];\n _PyObject_Calloc = Module["_PyObject_Calloc"] = wasmExports2["PyObject_Calloc"];\n _PyBytes_FromString = Module["_PyBytes_FromString"] = wasmExports2["PyBytes_FromString"];\n _PyBytes_FromFormatV = Module["_PyBytes_FromFormatV"] = wasmExports2["PyBytes_FromFormatV"];\n __PyBytesWriter_Resize = Module["__PyBytesWriter_Resize"] = wasmExports2["_PyBytesWriter_Resize"];\n __PyBytesWriter_Finish = Module["__PyBytesWriter_Finish"] = wasmExports2["_PyBytesWriter_Finish"];\n __PyBytesWriter_Init = Module["__PyBytesWriter_Init"] = wasmExports2["_PyBytesWriter_Init"];\n __PyBytesWriter_Alloc = Module["__PyBytesWriter_Alloc"] = wasmExports2["_PyBytesWriter_Alloc"];\n __PyBytesWriter_WriteBytes = Module["__PyBytesWriter_WriteBytes"] = wasmExports2["_PyBytesWriter_WriteBytes"];\n __PyBytes_Resize = Module["__PyBytes_Resize"] = wasmExports2["_PyBytes_Resize"];\n __PyBytesWriter_Dealloc = Module["__PyBytesWriter_Dealloc"] = wasmExports2["_PyBytesWriter_Dealloc"];\n _PyBytes_FromFormat = Module["_PyBytes_FromFormat"] = wasmExports2["PyBytes_FromFormat"];\n _PyObject_ASCII = Module["_PyObject_ASCII"] = wasmExports2["PyObject_ASCII"];\n _PyOS_double_to_string = Module["_PyOS_double_to_string"] = wasmExports2["PyOS_double_to_string"];\n __PyBytesWriter_Prepare = Module["__PyBytesWriter_Prepare"] = wasmExports2["_PyBytesWriter_Prepare"];\n _PyBytes_DecodeEscape = Module["_PyBytes_DecodeEscape"] = wasmExports2["PyBytes_DecodeEscape"];\n __PyBytes_Find = Module["__PyBytes_Find"] = wasmExports2["_PyBytes_Find"];\n __PyBytes_ReverseFind = Module["__PyBytes_ReverseFind"] = wasmExports2["_PyBytes_ReverseFind"];\n _PyBytes_Repr = Module["_PyBytes_Repr"] = wasmExports2["PyBytes_Repr"];\n _PyUnicode_New = Module["_PyUnicode_New"] = wasmExports2["PyUnicode_New"];\n _PyBytes_Join = Module["_PyBytes_Join"] = wasmExports2["PyBytes_Join"];\n _PyBytes_FromObject = Module["_PyBytes_FromObject"] = wasmExports2["PyBytes_FromObject"];\n _PyErr_BadArgument = Module["_PyErr_BadArgument"] = wasmExports2["PyErr_BadArgument"];\n _PyObject_Realloc = Module["_PyObject_Realloc"] = wasmExports2["PyObject_Realloc"];\n __Py_NewReferenceNoTotal = Module["__Py_NewReferenceNoTotal"] = wasmExports2["_Py_NewReferenceNoTotal"];\n _PyBytes_ConcatAndDel = Module["_PyBytes_ConcatAndDel"] = wasmExports2["PyBytes_ConcatAndDel"];\n _PyVectorcall_Function = Module["_PyVectorcall_Function"] = wasmExports2["PyVectorcall_Function"];\n __PyTuple_FromArray = Module["__PyTuple_FromArray"] = wasmExports2["_PyTuple_FromArray"];\n __PyDict_FromItems = Module["__PyDict_FromItems"] = wasmExports2["_PyDict_FromItems"];\n _PyDict_Next = Module["_PyDict_Next"] = wasmExports2["PyDict_Next"];\n _PyObject_VectorcallDict = Module["_PyObject_VectorcallDict"] = wasmExports2["PyObject_VectorcallDict"];\n _PyModule_GetNameObject = Module["_PyModule_GetNameObject"] = wasmExports2["PyModule_GetNameObject"];\n _PyCallable_Check = Module["_PyCallable_Check"] = wasmExports2["PyCallable_Check"];\n __PyStack_AsDict = Module["__PyStack_AsDict"] = wasmExports2["_PyStack_AsDict"];\n _PyObject_Call = Module["_PyObject_Call"] = wasmExports2["PyObject_Call"];\n _PyCFunction_Call = Module["_PyCFunction_Call"] = wasmExports2["PyCFunction_Call"];\n _PyEval_CallObjectWithKeywords = Module["_PyEval_CallObjectWithKeywords"] = wasmExports2["PyEval_CallObjectWithKeywords"];\n _PyObject_CallObject = Module["_PyObject_CallObject"] = wasmExports2["PyObject_CallObject"];\n _PyEval_CallFunction = Module["_PyEval_CallFunction"] = wasmExports2["PyEval_CallFunction"];\n __PyObject_CallFunction_SizeT = Module["__PyObject_CallFunction_SizeT"] = wasmExports2["_PyObject_CallFunction_SizeT"];\n _PyEval_CallMethod = Module["_PyEval_CallMethod"] = wasmExports2["PyEval_CallMethod"];\n __PyObject_CallMethod = Module["__PyObject_CallMethod"] = wasmExports2["_PyObject_CallMethod"];\n __PyObject_CallMethodId = Module["__PyObject_CallMethodId"] = wasmExports2["_PyObject_CallMethodId"];\n __PyObject_CallMethod_SizeT = Module["__PyObject_CallMethod_SizeT"] = wasmExports2["_PyObject_CallMethod_SizeT"];\n _PyVectorcall_NARGS = Module["_PyVectorcall_NARGS"] = wasmExports2["PyVectorcall_NARGS"];\n _PyCapsule_New = Module["_PyCapsule_New"] = wasmExports2["PyCapsule_New"];\n _PyCapsule_IsValid = Module["_PyCapsule_IsValid"] = wasmExports2["PyCapsule_IsValid"];\n _PyCapsule_GetPointer = Module["_PyCapsule_GetPointer"] = wasmExports2["PyCapsule_GetPointer"];\n _PyCapsule_GetName = Module["_PyCapsule_GetName"] = wasmExports2["PyCapsule_GetName"];\n _PyCapsule_GetDestructor = Module["_PyCapsule_GetDestructor"] = wasmExports2["PyCapsule_GetDestructor"];\n _PyCapsule_GetContext = Module["_PyCapsule_GetContext"] = wasmExports2["PyCapsule_GetContext"];\n _PyCapsule_SetPointer = Module["_PyCapsule_SetPointer"] = wasmExports2["PyCapsule_SetPointer"];\n _PyCapsule_SetName = Module["_PyCapsule_SetName"] = wasmExports2["PyCapsule_SetName"];\n _PyCapsule_SetDestructor = Module["_PyCapsule_SetDestructor"] = wasmExports2["PyCapsule_SetDestructor"];\n _PyCapsule_SetContext = Module["_PyCapsule_SetContext"] = wasmExports2["PyCapsule_SetContext"];\n __PyCapsule_SetTraverse = Module["__PyCapsule_SetTraverse"] = wasmExports2["_PyCapsule_SetTraverse"];\n _PyCapsule_Import = Module["_PyCapsule_Import"] = wasmExports2["PyCapsule_Import"];\n _PyCell_New = Module["_PyCell_New"] = wasmExports2["PyCell_New"];\n _PyCell_Get = Module["_PyCell_Get"] = wasmExports2["PyCell_Get"];\n _PyCell_Set = Module["_PyCell_Set"] = wasmExports2["PyCell_Set"];\n _PyObject_RichCompare = Module["_PyObject_RichCompare"] = wasmExports2["PyObject_RichCompare"];\n _PyMethod_Function = Module["_PyMethod_Function"] = wasmExports2["PyMethod_Function"];\n _PyMethod_Self = Module["_PyMethod_Self"] = wasmExports2["PyMethod_Self"];\n _PyMethod_New = Module["_PyMethod_New"] = wasmExports2["PyMethod_New"];\n _PyObject_ClearWeakRefs = Module["_PyObject_ClearWeakRefs"] = wasmExports2["PyObject_ClearWeakRefs"];\n _PyObject_GenericHash = Module["_PyObject_GenericHash"] = wasmExports2["PyObject_GenericHash"];\n _PyObject_Hash = Module["_PyObject_Hash"] = wasmExports2["PyObject_Hash"];\n __PyType_GetDict = Module["__PyType_GetDict"] = wasmExports2["_PyType_GetDict"];\n __PyType_LookupRef = Module["__PyType_LookupRef"] = wasmExports2["_PyType_LookupRef"];\n _PyInstanceMethod_New = Module["_PyInstanceMethod_New"] = wasmExports2["PyInstanceMethod_New"];\n _PyInstanceMethod_Function = Module["_PyInstanceMethod_Function"] = wasmExports2["PyInstanceMethod_Function"];\n _PyCode_AddWatcher = Module["_PyCode_AddWatcher"] = wasmExports2["PyCode_AddWatcher"];\n _PyCode_ClearWatcher = Module["_PyCode_ClearWatcher"] = wasmExports2["PyCode_ClearWatcher"];\n __PyObject_NewVar = Module["__PyObject_NewVar"] = wasmExports2["_PyObject_NewVar"];\n __PyUnicode_InternMortal = Module["__PyUnicode_InternMortal"] = wasmExports2["_PyUnicode_InternMortal"];\n _PyUnstable_Code_NewWithPosOnlyArgs = Module["_PyUnstable_Code_NewWithPosOnlyArgs"] = wasmExports2["PyUnstable_Code_NewWithPosOnlyArgs"];\n _PyUnicode_Compare = Module["_PyUnicode_Compare"] = wasmExports2["PyUnicode_Compare"];\n __PyTuple_Resize = Module["__PyTuple_Resize"] = wasmExports2["_PyTuple_Resize"];\n _PyUnstable_Code_New = Module["_PyUnstable_Code_New"] = wasmExports2["PyUnstable_Code_New"];\n _PyCode_NewEmpty = Module["_PyCode_NewEmpty"] = wasmExports2["PyCode_NewEmpty"];\n _PyUnicode_DecodeFSDefault = Module["_PyUnicode_DecodeFSDefault"] = wasmExports2["PyUnicode_DecodeFSDefault"];\n __PyCode_CheckLineNumber = Module["__PyCode_CheckLineNumber"] = wasmExports2["_PyCode_CheckLineNumber"];\n _PyCode_Addr2Line = Module["_PyCode_Addr2Line"] = wasmExports2["PyCode_Addr2Line"];\n _PyCode_Addr2Location = Module["_PyCode_Addr2Location"] = wasmExports2["PyCode_Addr2Location"];\n _PyUnstable_Code_GetExtra = Module["_PyUnstable_Code_GetExtra"] = wasmExports2["PyUnstable_Code_GetExtra"];\n _PyUnstable_Code_SetExtra = Module["_PyUnstable_Code_SetExtra"] = wasmExports2["PyUnstable_Code_SetExtra"];\n _PyCode_GetVarnames = Module["_PyCode_GetVarnames"] = wasmExports2["PyCode_GetVarnames"];\n _PyCode_GetCellvars = Module["_PyCode_GetCellvars"] = wasmExports2["PyCode_GetCellvars"];\n _PyCode_GetFreevars = Module["_PyCode_GetFreevars"] = wasmExports2["PyCode_GetFreevars"];\n __PyCode_GetVarCounts = Module["__PyCode_GetVarCounts"] = wasmExports2["_PyCode_GetVarCounts"];\n __PyCode_SetUnboundVarCounts = Module["__PyCode_SetUnboundVarCounts"] = wasmExports2["_PyCode_SetUnboundVarCounts"];\n _PySet_Contains = Module["_PySet_Contains"] = wasmExports2["PySet_Contains"];\n _PySet_Add = Module["_PySet_Add"] = wasmExports2["PySet_Add"];\n _PyDict_Contains = Module["_PyDict_Contains"] = wasmExports2["PyDict_Contains"];\n __PyCode_CheckNoInternalState = Module["__PyCode_CheckNoInternalState"] = wasmExports2["_PyCode_CheckNoInternalState"];\n __PyCode_CheckNoExternalState = Module["__PyCode_CheckNoExternalState"] = wasmExports2["_PyCode_CheckNoExternalState"];\n __PyCode_VerifyStateless = Module["__PyCode_VerifyStateless"] = wasmExports2["_PyCode_VerifyStateless"];\n __PyCode_CheckPureFunction = Module["__PyCode_CheckPureFunction"] = wasmExports2["_PyCode_CheckPureFunction"];\n __PyCode_ReturnsOnlyNone = Module["__PyCode_ReturnsOnlyNone"] = wasmExports2["_PyCode_ReturnsOnlyNone"];\n _PyTuple_Size = Module["_PyTuple_Size"] = wasmExports2["PyTuple_Size"];\n _PyCode_GetCode = Module["_PyCode_GetCode"] = wasmExports2["PyCode_GetCode"];\n __PyCode_ConstantKey = Module["__PyCode_ConstantKey"] = wasmExports2["_PyCode_ConstantKey"];\n _PyComplex_AsCComplex = Module["_PyComplex_AsCComplex"] = wasmExports2["PyComplex_AsCComplex"];\n __PySet_NextEntry = Module["__PySet_NextEntry"] = wasmExports2["_PySet_NextEntry"];\n _PyFrozenSet_New = Module["_PyFrozenSet_New"] = wasmExports2["PyFrozenSet_New"];\n _PySlice_New = Module["_PySlice_New"] = wasmExports2["PySlice_New"];\n _PyLong_FromVoidPtr = Module["_PyLong_FromVoidPtr"] = wasmExports2["PyLong_FromVoidPtr"];\n __PyUnicode_Copy = Module["__PyUnicode_Copy"] = wasmExports2["_PyUnicode_Copy"];\n __Py_c_sum = Module["__Py_c_sum"] = wasmExports2["_Py_c_sum"];\n __Py_cr_sum = Module["__Py_cr_sum"] = wasmExports2["_Py_cr_sum"];\n __Py_c_diff = Module["__Py_c_diff"] = wasmExports2["_Py_c_diff"];\n __Py_cr_diff = Module["__Py_cr_diff"] = wasmExports2["_Py_cr_diff"];\n __Py_rc_diff = Module["__Py_rc_diff"] = wasmExports2["_Py_rc_diff"];\n __Py_c_neg = Module["__Py_c_neg"] = wasmExports2["_Py_c_neg"];\n __Py_c_prod = Module["__Py_c_prod"] = wasmExports2["_Py_c_prod"];\n __Py_cr_prod = Module["__Py_cr_prod"] = wasmExports2["_Py_cr_prod"];\n __Py_c_quot = Module["__Py_c_quot"] = wasmExports2["_Py_c_quot"];\n __Py_cr_quot = Module["__Py_cr_quot"] = wasmExports2["_Py_cr_quot"];\n __Py_rc_quot = Module["__Py_rc_quot"] = wasmExports2["_Py_rc_quot"];\n __Py_c_pow = Module["__Py_c_pow"] = wasmExports2["_Py_c_pow"];\n _atan2 = Module["_atan2"] = wasmExports2["atan2"];\n _hypot = Module["_hypot"] = wasmExports2["hypot"];\n _pow = Module["_pow"] = wasmExports2["pow"];\n _log = Module["_log"] = wasmExports2["log"];\n _exp = Module["_exp"] = wasmExports2["exp"];\n _sin = Module["_sin"] = wasmExports2["sin"];\n _cos = Module["_cos"] = wasmExports2["cos"];\n __Py_c_abs = Module["__Py_c_abs"] = wasmExports2["_Py_c_abs"];\n _PyComplex_FromDoubles = Module["_PyComplex_FromDoubles"] = wasmExports2["PyComplex_FromDoubles"];\n _PyComplex_RealAsDouble = Module["_PyComplex_RealAsDouble"] = wasmExports2["PyComplex_RealAsDouble"];\n _PyComplex_ImagAsDouble = Module["_PyComplex_ImagAsDouble"] = wasmExports2["PyComplex_ImagAsDouble"];\n __Py_HashDouble = Module["__Py_HashDouble"] = wasmExports2["_Py_HashDouble"];\n __PyUnicode_TransformDecimalAndSpaceToASCII = Module["__PyUnicode_TransformDecimalAndSpaceToASCII"] = wasmExports2["_PyUnicode_TransformDecimalAndSpaceToASCII"];\n __PyUnicodeWriter_Init = Module["__PyUnicodeWriter_Init"] = wasmExports2["_PyUnicodeWriter_Init"];\n __PyUnicodeWriter_Dealloc = Module["__PyUnicodeWriter_Dealloc"] = wasmExports2["_PyUnicodeWriter_Dealloc"];\n __PyUnicodeWriter_Finish = Module["__PyUnicodeWriter_Finish"] = wasmExports2["_PyUnicodeWriter_Finish"];\n _PyCMethod_New = Module["_PyCMethod_New"] = wasmExports2["PyCMethod_New"];\n _PyMember_GetOne = Module["_PyMember_GetOne"] = wasmExports2["PyMember_GetOne"];\n _PyMember_SetOne = Module["_PyMember_SetOne"] = wasmExports2["PyMember_SetOne"];\n _PyTuple_GetSlice = Module["_PyTuple_GetSlice"] = wasmExports2["PyTuple_GetSlice"];\n _PyWrapper_New = Module["_PyWrapper_New"] = wasmExports2["PyWrapper_New"];\n _PyDescr_NewMethod = Module["_PyDescr_NewMethod"] = wasmExports2["PyDescr_NewMethod"];\n __PyObject_FunctionStr = Module["__PyObject_FunctionStr"] = wasmExports2["_PyObject_FunctionStr"];\n _PyDescr_NewClassMethod = Module["_PyDescr_NewClassMethod"] = wasmExports2["PyDescr_NewClassMethod"];\n _PyDescr_NewMember = Module["_PyDescr_NewMember"] = wasmExports2["PyDescr_NewMember"];\n _PyDescr_NewGetSet = Module["_PyDescr_NewGetSet"] = wasmExports2["PyDescr_NewGetSet"];\n _PyDescr_NewWrapper = Module["_PyDescr_NewWrapper"] = wasmExports2["PyDescr_NewWrapper"];\n _PyDescr_IsData = Module["_PyDescr_IsData"] = wasmExports2["PyDescr_IsData"];\n _PyDictProxy_New = Module["_PyDictProxy_New"] = wasmExports2["PyDictProxy_New"];\n _Py_HashPointer = Module["_Py_HashPointer"] = wasmExports2["Py_HashPointer"];\n _PyType_GetQualName = Module["_PyType_GetQualName"] = wasmExports2["PyType_GetQualName"];\n _PyException_GetCause = Module["_PyException_GetCause"] = wasmExports2["PyException_GetCause"];\n _PyException_SetCause = Module["_PyException_SetCause"] = wasmExports2["PyException_SetCause"];\n _PyException_GetContext = Module["_PyException_GetContext"] = wasmExports2["PyException_GetContext"];\n _PyException_SetContext = Module["_PyException_SetContext"] = wasmExports2["PyException_SetContext"];\n _PyException_GetArgs = Module["_PyException_GetArgs"] = wasmExports2["PyException_GetArgs"];\n _PyException_SetArgs = Module["_PyException_SetArgs"] = wasmExports2["PyException_SetArgs"];\n _PyExceptionClass_Name = Module["_PyExceptionClass_Name"] = wasmExports2["PyExceptionClass_Name"];\n _PyUnstable_Exc_PrepReraiseStar = Module["_PyUnstable_Exc_PrepReraiseStar"] = wasmExports2["PyUnstable_Exc_PrepReraiseStar"];\n _PyUnicodeEncodeError_GetEncoding = Module["_PyUnicodeEncodeError_GetEncoding"] = wasmExports2["PyUnicodeEncodeError_GetEncoding"];\n _PyUnicodeDecodeError_GetEncoding = Module["_PyUnicodeDecodeError_GetEncoding"] = wasmExports2["PyUnicodeDecodeError_GetEncoding"];\n _PyUnicodeEncodeError_GetObject = Module["_PyUnicodeEncodeError_GetObject"] = wasmExports2["PyUnicodeEncodeError_GetObject"];\n _PyUnicodeDecodeError_GetObject = Module["_PyUnicodeDecodeError_GetObject"] = wasmExports2["PyUnicodeDecodeError_GetObject"];\n _PyUnicodeTranslateError_GetObject = Module["_PyUnicodeTranslateError_GetObject"] = wasmExports2["PyUnicodeTranslateError_GetObject"];\n _PyUnicodeEncodeError_GetStart = Module["_PyUnicodeEncodeError_GetStart"] = wasmExports2["PyUnicodeEncodeError_GetStart"];\n _PyUnicodeDecodeError_GetStart = Module["_PyUnicodeDecodeError_GetStart"] = wasmExports2["PyUnicodeDecodeError_GetStart"];\n _PyUnicodeTranslateError_GetStart = Module["_PyUnicodeTranslateError_GetStart"] = wasmExports2["PyUnicodeTranslateError_GetStart"];\n _PyUnicodeEncodeError_SetStart = Module["_PyUnicodeEncodeError_SetStart"] = wasmExports2["PyUnicodeEncodeError_SetStart"];\n _PyUnicodeDecodeError_SetStart = Module["_PyUnicodeDecodeError_SetStart"] = wasmExports2["PyUnicodeDecodeError_SetStart"];\n _PyUnicodeTranslateError_SetStart = Module["_PyUnicodeTranslateError_SetStart"] = wasmExports2["PyUnicodeTranslateError_SetStart"];\n _PyUnicodeEncodeError_GetEnd = Module["_PyUnicodeEncodeError_GetEnd"] = wasmExports2["PyUnicodeEncodeError_GetEnd"];\n _PyUnicodeDecodeError_GetEnd = Module["_PyUnicodeDecodeError_GetEnd"] = wasmExports2["PyUnicodeDecodeError_GetEnd"];\n _PyUnicodeTranslateError_GetEnd = Module["_PyUnicodeTranslateError_GetEnd"] = wasmExports2["PyUnicodeTranslateError_GetEnd"];\n _PyUnicodeEncodeError_SetEnd = Module["_PyUnicodeEncodeError_SetEnd"] = wasmExports2["PyUnicodeEncodeError_SetEnd"];\n _PyUnicodeDecodeError_SetEnd = Module["_PyUnicodeDecodeError_SetEnd"] = wasmExports2["PyUnicodeDecodeError_SetEnd"];\n _PyUnicodeTranslateError_SetEnd = Module["_PyUnicodeTranslateError_SetEnd"] = wasmExports2["PyUnicodeTranslateError_SetEnd"];\n _PyUnicodeEncodeError_GetReason = Module["_PyUnicodeEncodeError_GetReason"] = wasmExports2["PyUnicodeEncodeError_GetReason"];\n _PyUnicodeDecodeError_GetReason = Module["_PyUnicodeDecodeError_GetReason"] = wasmExports2["PyUnicodeDecodeError_GetReason"];\n _PyUnicodeTranslateError_GetReason = Module["_PyUnicodeTranslateError_GetReason"] = wasmExports2["PyUnicodeTranslateError_GetReason"];\n _PyUnicodeEncodeError_SetReason = Module["_PyUnicodeEncodeError_SetReason"] = wasmExports2["PyUnicodeEncodeError_SetReason"];\n _PyUnicodeDecodeError_SetReason = Module["_PyUnicodeDecodeError_SetReason"] = wasmExports2["PyUnicodeDecodeError_SetReason"];\n _PyUnicodeTranslateError_SetReason = Module["_PyUnicodeTranslateError_SetReason"] = wasmExports2["PyUnicodeTranslateError_SetReason"];\n _PyUnicodeDecodeError_Create = Module["_PyUnicodeDecodeError_Create"] = wasmExports2["PyUnicodeDecodeError_Create"];\n __PyErr_SetRaisedException = Module["__PyErr_SetRaisedException"] = wasmExports2["_PyErr_SetRaisedException"];\n _PyModule_GetDict = Module["_PyModule_GetDict"] = wasmExports2["PyModule_GetDict"];\n _PyErr_NewException = Module["_PyErr_NewException"] = wasmExports2["PyErr_NewException"];\n _PyDict_Copy = Module["_PyDict_Copy"] = wasmExports2["PyDict_Copy"];\n _PyUnicode_ReadChar = Module["_PyUnicode_ReadChar"] = wasmExports2["PyUnicode_ReadChar"];\n _PyObject_GenericGetDict = Module["_PyObject_GenericGetDict"] = wasmExports2["PyObject_GenericGetDict"];\n _PyObject_GenericSetDict = Module["_PyObject_GenericSetDict"] = wasmExports2["PyObject_GenericSetDict"];\n _PyObject_HasAttrWithError = Module["_PyObject_HasAttrWithError"] = wasmExports2["PyObject_HasAttrWithError"];\n _PyList_SetSlice = Module["_PyList_SetSlice"] = wasmExports2["PyList_SetSlice"];\n _PyUnicodeWriter_WriteChar = Module["_PyUnicodeWriter_WriteChar"] = wasmExports2["PyUnicodeWriter_WriteChar"];\n _PyUnicodeWriter_WriteASCII = Module["_PyUnicodeWriter_WriteASCII"] = wasmExports2["PyUnicodeWriter_WriteASCII"];\n _PyObject_GC_Track = Module["_PyObject_GC_Track"] = wasmExports2["PyObject_GC_Track"];\n __Py_union_type_or = Module["__Py_union_type_or"] = wasmExports2["_Py_union_type_or"];\n __PyEval_NoToolsForUnwind = Module["__PyEval_NoToolsForUnwind"] = wasmExports2["_PyEval_NoToolsForUnwind"];\n __PyGen_yf = Module["__PyGen_yf"] = wasmExports2["_PyGen_yf"];\n _PyObject_CallFinalizerFromDealloc = Module["_PyObject_CallFinalizerFromDealloc"] = wasmExports2["PyObject_CallFinalizerFromDealloc"];\n __Py_MakeCoro = Module["__Py_MakeCoro"] = wasmExports2["_Py_MakeCoro"];\n __PyObject_GC_NewVar = Module["__PyObject_GC_NewVar"] = wasmExports2["_PyObject_GC_NewVar"];\n _PyUnstable_InterpreterFrame_GetLine = Module["_PyUnstable_InterpreterFrame_GetLine"] = wasmExports2["PyUnstable_InterpreterFrame_GetLine"];\n _PyGen_NewWithQualName = Module["_PyGen_NewWithQualName"] = wasmExports2["PyGen_NewWithQualName"];\n _PyGen_New = Module["_PyGen_New"] = wasmExports2["PyGen_New"];\n __PyCoro_GetAwaitableIter = Module["__PyCoro_GetAwaitableIter"] = wasmExports2["_PyCoro_GetAwaitableIter"];\n _PyCoro_New = Module["_PyCoro_New"] = wasmExports2["PyCoro_New"];\n _PyAsyncGen_New = Module["_PyAsyncGen_New"] = wasmExports2["PyAsyncGen_New"];\n __PyEval_EvalFrameDefault = Module["__PyEval_EvalFrameDefault"] = wasmExports2["_PyEval_EvalFrameDefault"];\n _PyFile_FromFd = Module["_PyFile_FromFd"] = wasmExports2["PyFile_FromFd"];\n _PyFile_GetLine = Module["_PyFile_GetLine"] = wasmExports2["PyFile_GetLine"];\n _PyFile_WriteObject = Module["_PyFile_WriteObject"] = wasmExports2["PyFile_WriteObject"];\n _PyFile_WriteString = Module["_PyFile_WriteString"] = wasmExports2["PyFile_WriteString"];\n _PyObject_AsFileDescriptor = Module["_PyObject_AsFileDescriptor"] = wasmExports2["PyObject_AsFileDescriptor"];\n __PyLong_FileDescriptor_Converter = Module["__PyLong_FileDescriptor_Converter"] = wasmExports2["_PyLong_FileDescriptor_Converter"];\n _flockfile = Module["_flockfile"] = wasmExports2["flockfile"];\n _getc_unlocked = Module["_getc_unlocked"] = wasmExports2["getc_unlocked"];\n _funlockfile = Module["_funlockfile"] = wasmExports2["funlockfile"];\n _Py_UniversalNewlineFgets = Module["_Py_UniversalNewlineFgets"] = wasmExports2["Py_UniversalNewlineFgets"];\n _PyFile_NewStdPrinter = Module["_PyFile_NewStdPrinter"] = wasmExports2["PyFile_NewStdPrinter"];\n _PyFile_SetOpenCodeHook = Module["_PyFile_SetOpenCodeHook"] = wasmExports2["PyFile_SetOpenCodeHook"];\n _Py_IsInitialized = Module["_Py_IsInitialized"] = wasmExports2["Py_IsInitialized"];\n _PyFile_OpenCodeObject = Module["_PyFile_OpenCodeObject"] = wasmExports2["PyFile_OpenCodeObject"];\n _PyFile_OpenCode = Module["_PyFile_OpenCode"] = wasmExports2["PyFile_OpenCode"];\n __PyUnicode_AsUTF8String = Module["__PyUnicode_AsUTF8String"] = wasmExports2["_PyUnicode_AsUTF8String"];\n __Py_write = Module["__Py_write"] = wasmExports2["_Py_write"];\n _PyFloat_GetMax = Module["_PyFloat_GetMax"] = wasmExports2["PyFloat_GetMax"];\n _PyFloat_GetMin = Module["_PyFloat_GetMin"] = wasmExports2["PyFloat_GetMin"];\n _PyFloat_GetInfo = Module["_PyFloat_GetInfo"] = wasmExports2["PyFloat_GetInfo"];\n _PyStructSequence_New = Module["_PyStructSequence_New"] = wasmExports2["PyStructSequence_New"];\n _PyStructSequence_SetItem = Module["_PyStructSequence_SetItem"] = wasmExports2["PyStructSequence_SetItem"];\n __PyFloat_ExactDealloc = Module["__PyFloat_ExactDealloc"] = wasmExports2["_PyFloat_ExactDealloc"];\n _PyLong_GetSign = Module["_PyLong_GetSign"] = wasmExports2["PyLong_GetSign"];\n _frexp = Module["_frexp"] = wasmExports2["frexp"];\n _modf = Module["_modf"] = wasmExports2["modf"];\n _PyLong_FromDouble = Module["_PyLong_FromDouble"] = wasmExports2["PyLong_FromDouble"];\n __PyLong_Lshift = Module["__PyLong_Lshift"] = wasmExports2["_PyLong_Lshift"];\n _PyFloat_Pack2 = Module["_PyFloat_Pack2"] = wasmExports2["PyFloat_Pack2"];\n _ldexp = Module["_ldexp"] = wasmExports2["ldexp"];\n _PyFloat_Pack4 = Module["_PyFloat_Pack4"] = wasmExports2["PyFloat_Pack4"];\n _PyFloat_Pack8 = Module["_PyFloat_Pack8"] = wasmExports2["PyFloat_Pack8"];\n _PyFloat_Unpack2 = Module["_PyFloat_Unpack2"] = wasmExports2["PyFloat_Unpack2"];\n _PyFloat_Unpack4 = Module["_PyFloat_Unpack4"] = wasmExports2["PyFloat_Unpack4"];\n _PyFloat_Unpack8 = Module["_PyFloat_Unpack8"] = wasmExports2["PyFloat_Unpack8"];\n _fmod = Module["_fmod"] = wasmExports2["fmod"];\n _PyErr_SetFromErrno = Module["_PyErr_SetFromErrno"] = wasmExports2["PyErr_SetFromErrno"];\n _round = Module["_round"] = wasmExports2["round"];\n _strtol = Module["_strtol"] = wasmExports2["strtol"];\n _Py_ReprEnter = Module["_Py_ReprEnter"] = wasmExports2["Py_ReprEnter"];\n _PyDict_Update = Module["_PyDict_Update"] = wasmExports2["PyDict_Update"];\n _Py_ReprLeave = Module["_Py_ReprLeave"] = wasmExports2["Py_ReprLeave"];\n _PyDict_Size = Module["_PyDict_Size"] = wasmExports2["PyDict_Size"];\n _PyFrame_GetLineNumber = Module["_PyFrame_GetLineNumber"] = wasmExports2["PyFrame_GetLineNumber"];\n _PyFrame_New = Module["_PyFrame_New"] = wasmExports2["PyFrame_New"];\n _PyFrame_GetVar = Module["_PyFrame_GetVar"] = wasmExports2["PyFrame_GetVar"];\n __PyUnicode_Equal = Module["__PyUnicode_Equal"] = wasmExports2["_PyUnicode_Equal"];\n _PyFrame_GetVarString = Module["_PyFrame_GetVarString"] = wasmExports2["PyFrame_GetVarString"];\n _PyFrame_FastToLocalsWithError = Module["_PyFrame_FastToLocalsWithError"] = wasmExports2["PyFrame_FastToLocalsWithError"];\n _PyFrame_FastToLocals = Module["_PyFrame_FastToLocals"] = wasmExports2["PyFrame_FastToLocals"];\n _PyFrame_LocalsToFast = Module["_PyFrame_LocalsToFast"] = wasmExports2["PyFrame_LocalsToFast"];\n __PyFrame_IsEntryFrame = Module["__PyFrame_IsEntryFrame"] = wasmExports2["_PyFrame_IsEntryFrame"];\n _PyFrame_GetCode = Module["_PyFrame_GetCode"] = wasmExports2["PyFrame_GetCode"];\n _PyFrame_GetBack = Module["_PyFrame_GetBack"] = wasmExports2["PyFrame_GetBack"];\n _PyFrame_GetLocals = Module["_PyFrame_GetLocals"] = wasmExports2["PyFrame_GetLocals"];\n _PyFrame_GetGlobals = Module["_PyFrame_GetGlobals"] = wasmExports2["PyFrame_GetGlobals"];\n _PyFrame_GetBuiltins = Module["_PyFrame_GetBuiltins"] = wasmExports2["PyFrame_GetBuiltins"];\n _PyFrame_GetLasti = Module["_PyFrame_GetLasti"] = wasmExports2["PyFrame_GetLasti"];\n _PyFrame_GetGenerator = Module["_PyFrame_GetGenerator"] = wasmExports2["PyFrame_GetGenerator"];\n __PyErr_SetKeyError = Module["__PyErr_SetKeyError"] = wasmExports2["_PyErr_SetKeyError"];\n _PyDict_DelItem = Module["_PyDict_DelItem"] = wasmExports2["PyDict_DelItem"];\n _PyDict_Pop = Module["_PyDict_Pop"] = wasmExports2["PyDict_Pop"];\n _PyCompile_OpcodeStackEffect = Module["_PyCompile_OpcodeStackEffect"] = wasmExports2["PyCompile_OpcodeStackEffect"];\n _PyFunction_AddWatcher = Module["_PyFunction_AddWatcher"] = wasmExports2["PyFunction_AddWatcher"];\n _PyFunction_ClearWatcher = Module["_PyFunction_ClearWatcher"] = wasmExports2["PyFunction_ClearWatcher"];\n _PyFunction_NewWithQualName = Module["_PyFunction_NewWithQualName"] = wasmExports2["PyFunction_NewWithQualName"];\n __PyFunction_SetVersion = Module["__PyFunction_SetVersion"] = wasmExports2["_PyFunction_SetVersion"];\n _PyFunction_New = Module["_PyFunction_New"] = wasmExports2["PyFunction_New"];\n _PyFunction_GetCode = Module["_PyFunction_GetCode"] = wasmExports2["PyFunction_GetCode"];\n _PyFunction_GetGlobals = Module["_PyFunction_GetGlobals"] = wasmExports2["PyFunction_GetGlobals"];\n _PyFunction_GetModule = Module["_PyFunction_GetModule"] = wasmExports2["PyFunction_GetModule"];\n _PyFunction_GetDefaults = Module["_PyFunction_GetDefaults"] = wasmExports2["PyFunction_GetDefaults"];\n _PyFunction_SetDefaults = Module["_PyFunction_SetDefaults"] = wasmExports2["PyFunction_SetDefaults"];\n __PyEval_StopTheWorld = Module["__PyEval_StopTheWorld"] = wasmExports2["_PyEval_StopTheWorld"];\n __PyEval_StartTheWorld = Module["__PyEval_StartTheWorld"] = wasmExports2["_PyEval_StartTheWorld"];\n _PyFunction_SetVectorcall = Module["_PyFunction_SetVectorcall"] = wasmExports2["PyFunction_SetVectorcall"];\n _PyFunction_GetKwDefaults = Module["_PyFunction_GetKwDefaults"] = wasmExports2["PyFunction_GetKwDefaults"];\n _PyFunction_SetKwDefaults = Module["_PyFunction_SetKwDefaults"] = wasmExports2["PyFunction_SetKwDefaults"];\n _PyFunction_GetClosure = Module["_PyFunction_GetClosure"] = wasmExports2["PyFunction_GetClosure"];\n _PyFunction_SetClosure = Module["_PyFunction_SetClosure"] = wasmExports2["PyFunction_SetClosure"];\n _PyFunction_GetAnnotations = Module["_PyFunction_GetAnnotations"] = wasmExports2["PyFunction_GetAnnotations"];\n _PyFunction_SetAnnotations = Module["_PyFunction_SetAnnotations"] = wasmExports2["PyFunction_SetAnnotations"];\n __PyFunction_VerifyStateless = Module["__PyFunction_VerifyStateless"] = wasmExports2["_PyFunction_VerifyStateless"];\n _PyClassMethod_New = Module["_PyClassMethod_New"] = wasmExports2["PyClassMethod_New"];\n _PyStaticMethod_New = Module["_PyStaticMethod_New"] = wasmExports2["PyStaticMethod_New"];\n __PyInterpolation_Build = Module["__PyInterpolation_Build"] = wasmExports2["_PyInterpolation_Build"];\n _PyCallIter_New = Module["_PyCallIter_New"] = wasmExports2["PyCallIter_New"];\n _PyList_GetItemRef = Module["_PyList_GetItemRef"] = wasmExports2["PyList_GetItemRef"];\n _PyList_SetItem = Module["_PyList_SetItem"] = wasmExports2["PyList_SetItem"];\n _PyList_Insert = Module["_PyList_Insert"] = wasmExports2["PyList_Insert"];\n _PyList_GetSlice = Module["_PyList_GetSlice"] = wasmExports2["PyList_GetSlice"];\n __PySet_NextEntryRef = Module["__PySet_NextEntryRef"] = wasmExports2["_PySet_NextEntryRef"];\n _PyList_Clear = Module["_PyList_Clear"] = wasmExports2["PyList_Clear"];\n __PyList_FromStackRefStealOnSuccess = Module["__PyList_FromStackRefStealOnSuccess"] = wasmExports2["_PyList_FromStackRefStealOnSuccess"];\n __PyList_SliceSubscript = Module["__PyList_SliceSubscript"] = wasmExports2["_PyList_SliceSubscript"];\n _PyUnicodeWriter_WriteRepr = Module["_PyUnicodeWriter_WriteRepr"] = wasmExports2["PyUnicodeWriter_WriteRepr"];\n __PyEval_SliceIndexNotNone = Module["__PyEval_SliceIndexNotNone"] = wasmExports2["_PyEval_SliceIndexNotNone"];\n _PyObject_HashNotImplemented = Module["_PyObject_HashNotImplemented"] = wasmExports2["PyObject_HashNotImplemented"];\n __PyLong_New = Module["__PyLong_New"] = wasmExports2["_PyLong_New"];\n __PyLong_FromDigits = Module["__PyLong_FromDigits"] = wasmExports2["_PyLong_FromDigits"];\n _PyLong_FromUnsignedLong = Module["_PyLong_FromUnsignedLong"] = wasmExports2["PyLong_FromUnsignedLong"];\n _PyLong_FromUnsignedLongLong = Module["_PyLong_FromUnsignedLongLong"] = wasmExports2["PyLong_FromUnsignedLongLong"];\n _PyLong_AsUnsignedLong = Module["_PyLong_AsUnsignedLong"] = wasmExports2["PyLong_AsUnsignedLong"];\n _PyLong_AsSize_t = Module["_PyLong_AsSize_t"] = wasmExports2["PyLong_AsSize_t"];\n _PyLong_AsUnsignedLongMask = Module["_PyLong_AsUnsignedLongMask"] = wasmExports2["PyLong_AsUnsignedLongMask"];\n _PyLong_IsPositive = Module["_PyLong_IsPositive"] = wasmExports2["PyLong_IsPositive"];\n _PyLong_IsNegative = Module["_PyLong_IsNegative"] = wasmExports2["PyLong_IsNegative"];\n _PyLong_IsZero = Module["_PyLong_IsZero"] = wasmExports2["PyLong_IsZero"];\n __PyLong_Sign = Module["__PyLong_Sign"] = wasmExports2["_PyLong_Sign"];\n __PyLong_FromByteArray = Module["__PyLong_FromByteArray"] = wasmExports2["_PyLong_FromByteArray"];\n _PyLong_AsNativeBytes = Module["_PyLong_AsNativeBytes"] = wasmExports2["PyLong_AsNativeBytes"];\n _PyLong_FromNativeBytes = Module["_PyLong_FromNativeBytes"] = wasmExports2["PyLong_FromNativeBytes"];\n _PyLong_FromUnsignedNativeBytes = Module["_PyLong_FromUnsignedNativeBytes"] = wasmExports2["PyLong_FromUnsignedNativeBytes"];\n _PyLong_AsVoidPtr = Module["_PyLong_AsVoidPtr"] = wasmExports2["PyLong_AsVoidPtr"];\n _PyLong_FromLongLong = Module["_PyLong_FromLongLong"] = wasmExports2["PyLong_FromLongLong"];\n _PyLong_AsLongLong = Module["_PyLong_AsLongLong"] = wasmExports2["PyLong_AsLongLong"];\n _PyLong_AsUnsignedLongLong = Module["_PyLong_AsUnsignedLongLong"] = wasmExports2["PyLong_AsUnsignedLongLong"];\n _PyLong_AsUnsignedLongLongMask = Module["_PyLong_AsUnsignedLongLongMask"] = wasmExports2["PyLong_AsUnsignedLongLongMask"];\n _PyLong_AsLongLongAndOverflow = Module["_PyLong_AsLongLongAndOverflow"] = wasmExports2["PyLong_AsLongLongAndOverflow"];\n __PyLong_UnsignedShort_Converter = Module["__PyLong_UnsignedShort_Converter"] = wasmExports2["_PyLong_UnsignedShort_Converter"];\n __PyLong_UnsignedInt_Converter = Module["__PyLong_UnsignedInt_Converter"] = wasmExports2["_PyLong_UnsignedInt_Converter"];\n __PyLong_UnsignedLong_Converter = Module["__PyLong_UnsignedLong_Converter"] = wasmExports2["_PyLong_UnsignedLong_Converter"];\n __PyLong_UnsignedLongLong_Converter = Module["__PyLong_UnsignedLongLong_Converter"] = wasmExports2["_PyLong_UnsignedLongLong_Converter"];\n __PyLong_Size_t_Converter = Module["__PyLong_Size_t_Converter"] = wasmExports2["_PyLong_Size_t_Converter"];\n __PyLong_UInt8_Converter = Module["__PyLong_UInt8_Converter"] = wasmExports2["_PyLong_UInt8_Converter"];\n __PyLong_UInt16_Converter = Module["__PyLong_UInt16_Converter"] = wasmExports2["_PyLong_UInt16_Converter"];\n __PyLong_UInt32_Converter = Module["__PyLong_UInt32_Converter"] = wasmExports2["_PyLong_UInt32_Converter"];\n __PyLong_UInt64_Converter = Module["__PyLong_UInt64_Converter"] = wasmExports2["_PyLong_UInt64_Converter"];\n __PyUnicodeWriter_PrepareInternal = Module["__PyUnicodeWriter_PrepareInternal"] = wasmExports2["_PyUnicodeWriter_PrepareInternal"];\n __PyUnicodeWriter_WriteStr = Module["__PyUnicodeWriter_WriteStr"] = wasmExports2["_PyUnicodeWriter_WriteStr"];\n __PyLong_Frexp = Module["__PyLong_Frexp"] = wasmExports2["_PyLong_Frexp"];\n __PyLong_ExactDealloc = Module["__PyLong_ExactDealloc"] = wasmExports2["_PyLong_ExactDealloc"];\n __PyLong_Add = Module["__PyLong_Add"] = wasmExports2["_PyLong_Add"];\n __PyLong_Subtract = Module["__PyLong_Subtract"] = wasmExports2["_PyLong_Subtract"];\n __PyLong_Multiply = Module["__PyLong_Multiply"] = wasmExports2["_PyLong_Multiply"];\n __PyLong_Rshift = Module["__PyLong_Rshift"] = wasmExports2["_PyLong_Rshift"];\n __PyLong_GCD = Module["__PyLong_GCD"] = wasmExports2["_PyLong_GCD"];\n __PyLong_DivmodNear = Module["__PyLong_DivmodNear"] = wasmExports2["_PyLong_DivmodNear"];\n _PyLong_GetInfo = Module["_PyLong_GetInfo"] = wasmExports2["PyLong_GetInfo"];\n _PyUnstable_Long_IsCompact = Module["_PyUnstable_Long_IsCompact"] = wasmExports2["PyUnstable_Long_IsCompact"];\n _PyUnstable_Long_CompactValue = Module["_PyUnstable_Long_CompactValue"] = wasmExports2["PyUnstable_Long_CompactValue"];\n _PyLong_FromInt32 = Module["_PyLong_FromInt32"] = wasmExports2["PyLong_FromInt32"];\n _PyLong_FromUInt32 = Module["_PyLong_FromUInt32"] = wasmExports2["PyLong_FromUInt32"];\n _PyLong_FromInt64 = Module["_PyLong_FromInt64"] = wasmExports2["PyLong_FromInt64"];\n _PyLong_FromUInt64 = Module["_PyLong_FromUInt64"] = wasmExports2["PyLong_FromUInt64"];\n _PyLong_AsInt32 = Module["_PyLong_AsInt32"] = wasmExports2["PyLong_AsInt32"];\n _PyLong_AsInt64 = Module["_PyLong_AsInt64"] = wasmExports2["PyLong_AsInt64"];\n _PyLong_AsUInt32 = Module["_PyLong_AsUInt32"] = wasmExports2["PyLong_AsUInt32"];\n _PyLong_AsUInt64 = Module["_PyLong_AsUInt64"] = wasmExports2["PyLong_AsUInt64"];\n _PyLong_GetNativeLayout = Module["_PyLong_GetNativeLayout"] = wasmExports2["PyLong_GetNativeLayout"];\n _PyLong_Export = Module["_PyLong_Export"] = wasmExports2["PyLong_Export"];\n _PyLong_FreeExport = Module["_PyLong_FreeExport"] = wasmExports2["PyLong_FreeExport"];\n _PyLongWriter_Create = Module["_PyLongWriter_Create"] = wasmExports2["PyLongWriter_Create"];\n _PyLongWriter_Discard = Module["_PyLongWriter_Discard"] = wasmExports2["PyLongWriter_Discard"];\n _PyLongWriter_Finish = Module["_PyLongWriter_Finish"] = wasmExports2["PyLongWriter_Finish"];\n _PyObject_Bytes = Module["_PyObject_Bytes"] = wasmExports2["PyObject_Bytes"];\n __PyObject_AssertFailed = Module["__PyObject_AssertFailed"] = wasmExports2["_PyObject_AssertFailed"];\n __PyDict_NewPresized = Module["__PyDict_NewPresized"] = wasmExports2["_PyDict_NewPresized"];\n _PyDict_GetItem = Module["_PyDict_GetItem"] = wasmExports2["PyDict_GetItem"];\n __PyErr_GetRaisedException = Module["__PyErr_GetRaisedException"] = wasmExports2["_PyErr_GetRaisedException"];\n __PyDict_GetItem_KnownHash = Module["__PyDict_GetItem_KnownHash"] = wasmExports2["_PyDict_GetItem_KnownHash"];\n __PyDict_GetItemRef_KnownHash_LockHeld = Module["__PyDict_GetItemRef_KnownHash_LockHeld"] = wasmExports2["_PyDict_GetItemRef_KnownHash_LockHeld"];\n __PyDict_GetItemStringWithError = Module["__PyDict_GetItemStringWithError"] = wasmExports2["_PyDict_GetItemStringWithError"];\n __PyDict_LoadGlobal = Module["__PyDict_LoadGlobal"] = wasmExports2["_PyDict_LoadGlobal"];\n __PyDict_LoadGlobalStackRef = Module["__PyDict_LoadGlobalStackRef"] = wasmExports2["_PyDict_LoadGlobalStackRef"];\n _PyEval_GetBuiltins = Module["_PyEval_GetBuiltins"] = wasmExports2["PyEval_GetBuiltins"];\n __PyDict_SetItem_Take2 = Module["__PyDict_SetItem_Take2"] = wasmExports2["_PyDict_SetItem_Take2"];\n __PyDict_SetItem_KnownHash_LockHeld = Module["__PyDict_SetItem_KnownHash_LockHeld"] = wasmExports2["_PyDict_SetItem_KnownHash_LockHeld"];\n __PyDict_SetItem_KnownHash = Module["__PyDict_SetItem_KnownHash"] = wasmExports2["_PyDict_SetItem_KnownHash"];\n __PyDict_DelItem_KnownHash = Module["__PyDict_DelItem_KnownHash"] = wasmExports2["_PyDict_DelItem_KnownHash"];\n __PyDict_DelItemIf = Module["__PyDict_DelItemIf"] = wasmExports2["_PyDict_DelItemIf"];\n _PyDict_Clear = Module["_PyDict_Clear"] = wasmExports2["PyDict_Clear"];\n _PyDict_PopString = Module["_PyDict_PopString"] = wasmExports2["PyDict_PopString"];\n __PyDict_Pop = Module["__PyDict_Pop"] = wasmExports2["_PyDict_Pop"];\n _PyDict_MergeFromSeq2 = Module["_PyDict_MergeFromSeq2"] = wasmExports2["PyDict_MergeFromSeq2"];\n __PyErr_FormatNote = Module["__PyErr_FormatNote"] = wasmExports2["_PyErr_FormatNote"];\n _PyDict_Merge = Module["_PyDict_Merge"] = wasmExports2["PyDict_Merge"];\n __PyDict_MergeEx = Module["__PyDict_MergeEx"] = wasmExports2["_PyDict_MergeEx"];\n _PyDict_SetDefaultRef = Module["_PyDict_SetDefaultRef"] = wasmExports2["PyDict_SetDefaultRef"];\n _PyDict_SetDefault = Module["_PyDict_SetDefault"] = wasmExports2["PyDict_SetDefault"];\n __PyDict_SizeOf = Module["__PyDict_SizeOf"] = wasmExports2["_PyDict_SizeOf"];\n _PyDict_ContainsString = Module["_PyDict_ContainsString"] = wasmExports2["PyDict_ContainsString"];\n _PyDict_GetItemString = Module["_PyDict_GetItemString"] = wasmExports2["PyDict_GetItemString"];\n _PyDict_GetItemStringRef = Module["_PyDict_GetItemStringRef"] = wasmExports2["PyDict_GetItemStringRef"];\n _PyDict_DelItemString = Module["_PyDict_DelItemString"] = wasmExports2["PyDict_DelItemString"];\n _PyInterpreterState_Get = Module["_PyInterpreterState_Get"] = wasmExports2["PyInterpreterState_Get"];\n _PyObject_VisitManagedDict = Module["_PyObject_VisitManagedDict"] = wasmExports2["PyObject_VisitManagedDict"];\n __PyObject_SetManagedDict = Module["__PyObject_SetManagedDict"] = wasmExports2["_PyObject_SetManagedDict"];\n _PyObject_ClearManagedDict = Module["_PyObject_ClearManagedDict"] = wasmExports2["PyObject_ClearManagedDict"];\n _PyDict_Watch = Module["_PyDict_Watch"] = wasmExports2["PyDict_Watch"];\n _PyDict_Unwatch = Module["_PyDict_Unwatch"] = wasmExports2["PyDict_Unwatch"];\n _PyDict_AddWatcher = Module["_PyDict_AddWatcher"] = wasmExports2["PyDict_AddWatcher"];\n _PyDict_ClearWatcher = Module["_PyDict_ClearWatcher"] = wasmExports2["PyDict_ClearWatcher"];\n __PyDict_SendEvent = Module["__PyDict_SendEvent"] = wasmExports2["_PyDict_SendEvent"];\n _PyArg_ValidateKeywordArguments = Module["_PyArg_ValidateKeywordArguments"] = wasmExports2["PyArg_ValidateKeywordArguments"];\n _PyODict_New = Module["_PyODict_New"] = wasmExports2["PyODict_New"];\n _PyODict_SetItem = Module["_PyODict_SetItem"] = wasmExports2["PyODict_SetItem"];\n _PyODict_DelItem = Module["_PyODict_DelItem"] = wasmExports2["PyODict_DelItem"];\n __PyErr_ChainExceptions1 = Module["__PyErr_ChainExceptions1"] = wasmExports2["_PyErr_ChainExceptions1"];\n _PyMemoryView_FromMemory = Module["_PyMemoryView_FromMemory"] = wasmExports2["PyMemoryView_FromMemory"];\n _PyMemoryView_FromBuffer = Module["_PyMemoryView_FromBuffer"] = wasmExports2["PyMemoryView_FromBuffer"];\n _PyMemoryView_GetContiguous = Module["_PyMemoryView_GetContiguous"] = wasmExports2["PyMemoryView_GetContiguous"];\n _PyUnicode_AsASCIIString = Module["_PyUnicode_AsASCIIString"] = wasmExports2["PyUnicode_AsASCIIString"];\n _PyCFunction_New = Module["_PyCFunction_New"] = wasmExports2["PyCFunction_New"];\n _PyCFunction_NewEx = Module["_PyCFunction_NewEx"] = wasmExports2["PyCFunction_NewEx"];\n _PyCFunction_GetFunction = Module["_PyCFunction_GetFunction"] = wasmExports2["PyCFunction_GetFunction"];\n _PyCFunction_GetSelf = Module["_PyCFunction_GetSelf"] = wasmExports2["PyCFunction_GetSelf"];\n _PyCFunction_GetFlags = Module["_PyCFunction_GetFlags"] = wasmExports2["PyCFunction_GetFlags"];\n _PyModuleDef_Init = Module["_PyModuleDef_Init"] = wasmExports2["PyModuleDef_Init"];\n _PyModule_NewObject = Module["_PyModule_NewObject"] = wasmExports2["PyModule_NewObject"];\n _PyModule_New = Module["_PyModule_New"] = wasmExports2["PyModule_New"];\n _PyModule_SetDocString = Module["_PyModule_SetDocString"] = wasmExports2["PyModule_SetDocString"];\n _PyModule_FromDefAndSpec2 = Module["_PyModule_FromDefAndSpec2"] = wasmExports2["PyModule_FromDefAndSpec2"];\n _PyModule_ExecDef = Module["_PyModule_ExecDef"] = wasmExports2["PyModule_ExecDef"];\n _PyModule_GetName = Module["_PyModule_GetName"] = wasmExports2["PyModule_GetName"];\n _PyModule_GetFilenameObject = Module["_PyModule_GetFilenameObject"] = wasmExports2["PyModule_GetFilenameObject"];\n _PyModule_GetFilename = Module["_PyModule_GetFilename"] = wasmExports2["PyModule_GetFilename"];\n _PyModule_GetDef = Module["_PyModule_GetDef"] = wasmExports2["PyModule_GetDef"];\n _PyModule_GetState = Module["_PyModule_GetState"] = wasmExports2["PyModule_GetState"];\n _PyUnicode_AsWideChar = Module["_PyUnicode_AsWideChar"] = wasmExports2["PyUnicode_AsWideChar"];\n _wcsrchr = Module["_wcsrchr"] = wasmExports2["wcsrchr"];\n _wcscmp = Module["_wcscmp"] = wasmExports2["wcscmp"];\n __PySys_GetOptionalAttrString = Module["__PySys_GetOptionalAttrString"] = wasmExports2["_PySys_GetOptionalAttrString"];\n _PySys_FormatStderr = Module["_PySys_FormatStderr"] = wasmExports2["PySys_FormatStderr"];\n _PyUnicode_Join = Module["_PyUnicode_Join"] = wasmExports2["PyUnicode_Join"];\n __PyNamespace_New = Module["__PyNamespace_New"] = wasmExports2["_PyNamespace_New"];\n __PyArg_NoPositional = Module["__PyArg_NoPositional"] = wasmExports2["_PyArg_NoPositional"];\n __PyUnicode_CheckConsistency = Module["__PyUnicode_CheckConsistency"] = wasmExports2["_PyUnicode_CheckConsistency"];\n __PyObject_IsFreed = Module["__PyObject_IsFreed"] = wasmExports2["_PyObject_IsFreed"];\n _fwrite = Module["_fwrite"] = wasmExports2["fwrite"];\n _fputc = Module["_fputc"] = wasmExports2["fputc"];\n __PyObject_Dump = Module["__PyObject_Dump"] = wasmExports2["_PyObject_Dump"];\n _Py_IncRef = Module["_Py_IncRef"] = wasmExports2["Py_IncRef"];\n _Py_DecRef = Module["_Py_DecRef"] = wasmExports2["Py_DecRef"];\n __Py_IncRef = Module["__Py_IncRef"] = wasmExports2["_Py_IncRef"];\n __Py_DecRef = Module["__Py_DecRef"] = wasmExports2["_Py_DecRef"];\n _PyObject_Init = Module["_PyObject_Init"] = wasmExports2["PyObject_Init"];\n _PyObject_InitVar = Module["_PyObject_InitVar"] = wasmExports2["PyObject_InitVar"];\n _PyObject_CallFinalizer = Module["_PyObject_CallFinalizer"] = wasmExports2["PyObject_CallFinalizer"];\n _PyObject_Print = Module["_PyObject_Print"] = wasmExports2["PyObject_Print"];\n _ferror = Module["_ferror"] = wasmExports2["ferror"];\n __Py_BreakPoint = Module["__Py_BreakPoint"] = wasmExports2["_Py_BreakPoint"];\n _PyUnicode_DecodeASCII = Module["_PyUnicode_DecodeASCII"] = wasmExports2["PyUnicode_DecodeASCII"];\n _PyObject_HasAttrStringWithError = Module["_PyObject_HasAttrStringWithError"] = wasmExports2["PyObject_HasAttrStringWithError"];\n _PyObject_GetOptionalAttrString = Module["_PyObject_GetOptionalAttrString"] = wasmExports2["PyObject_GetOptionalAttrString"];\n _PyObject_HasAttrString = Module["_PyObject_HasAttrString"] = wasmExports2["PyObject_HasAttrString"];\n _PyObject_DelAttrString = Module["_PyObject_DelAttrString"] = wasmExports2["PyObject_DelAttrString"];\n __PyObject_GetDictPtr = Module["__PyObject_GetDictPtr"] = wasmExports2["_PyObject_GetDictPtr"];\n __PyObject_GenericSetAttrWithDict = Module["__PyObject_GenericSetAttrWithDict"] = wasmExports2["_PyObject_GenericSetAttrWithDict"];\n _PyObject_Not = Module["_PyObject_Not"] = wasmExports2["PyObject_Not"];\n _PyObject_IS_GC = Module["_PyObject_IS_GC"] = wasmExports2["PyObject_IS_GC"];\n __Py_SetImmortalUntracked = Module["__Py_SetImmortalUntracked"] = wasmExports2["_Py_SetImmortalUntracked"];\n _PyUnstable_Object_EnableDeferredRefcount = Module["_PyUnstable_Object_EnableDeferredRefcount"] = wasmExports2["PyUnstable_Object_EnableDeferredRefcount"];\n _PyUnstable_Object_IsUniqueReferencedTemporary = Module["_PyUnstable_Object_IsUniqueReferencedTemporary"] = wasmExports2["PyUnstable_Object_IsUniqueReferencedTemporary"];\n _PyUnstable_TryIncRef = Module["_PyUnstable_TryIncRef"] = wasmExports2["PyUnstable_TryIncRef"];\n _PyUnstable_EnableTryIncRef = Module["_PyUnstable_EnableTryIncRef"] = wasmExports2["PyUnstable_EnableTryIncRef"];\n __Py_ResurrectReference = Module["__Py_ResurrectReference"] = wasmExports2["_Py_ResurrectReference"];\n __Py_ForgetReference = Module["__Py_ForgetReference"] = wasmExports2["_Py_ForgetReference"];\n __PyTrash_thread_deposit_object = Module["__PyTrash_thread_deposit_object"] = wasmExports2["_PyTrash_thread_deposit_object"];\n __PyTrash_thread_destroy_chain = Module["__PyTrash_thread_destroy_chain"] = wasmExports2["_PyTrash_thread_destroy_chain"];\n _PyObject_GET_WEAKREFS_LISTPTR = Module["_PyObject_GET_WEAKREFS_LISTPTR"] = wasmExports2["PyObject_GET_WEAKREFS_LISTPTR"];\n _Py_NewRef = Module["_Py_NewRef"] = wasmExports2["Py_NewRef"];\n _Py_XNewRef = Module["_Py_XNewRef"] = wasmExports2["Py_XNewRef"];\n _Py_Is = Module["_Py_Is"] = wasmExports2["Py_Is"];\n _Py_IsNone = Module["_Py_IsNone"] = wasmExports2["Py_IsNone"];\n _Py_IsTrue = Module["_Py_IsTrue"] = wasmExports2["Py_IsTrue"];\n _Py_IsFalse = Module["_Py_IsFalse"] = wasmExports2["Py_IsFalse"];\n __Py_SetRefcnt = Module["__Py_SetRefcnt"] = wasmExports2["_Py_SetRefcnt"];\n _PyRefTracer_SetTracer = Module["_PyRefTracer_SetTracer"] = wasmExports2["PyRefTracer_SetTracer"];\n _PyRefTracer_GetTracer = Module["_PyRefTracer_GetTracer"] = wasmExports2["PyRefTracer_GetTracer"];\n _Py_GetConstantBorrowed = Module["_Py_GetConstantBorrowed"] = wasmExports2["Py_GetConstantBorrowed"];\n _Py_TYPE = Module["_Py_TYPE"] = wasmExports2["Py_TYPE"];\n _Py_REFCNT = Module["_Py_REFCNT"] = wasmExports2["Py_REFCNT"];\n _PyUnstable_IsImmortal = Module["_PyUnstable_IsImmortal"] = wasmExports2["PyUnstable_IsImmortal"];\n _PyUnstable_Object_IsUniquelyReferenced = Module["_PyUnstable_Object_IsUniquelyReferenced"] = wasmExports2["PyUnstable_Object_IsUniquelyReferenced"];\n _sleep = Module["_sleep"] = wasmExports2["sleep"];\n _abort = Module["_abort"] = wasmExports2["abort"];\n _getenv = Module["_getenv"] = wasmExports2["getenv"];\n _sbrk = Module["_sbrk"] = wasmExports2["sbrk"];\n _clock_gettime = Module["_clock_gettime"] = wasmExports2["clock_gettime"];\n _vsnprintf = Module["_vsnprintf"] = wasmExports2["vsnprintf"];\n _atexit = Module["_atexit"] = wasmExports2["atexit"];\n _strstr = Module["_strstr"] = wasmExports2["strstr"];\n _snprintf = Module["_snprintf"] = wasmExports2["snprintf"];\n _calloc = Module["_calloc"] = wasmExports2["calloc"];\n _realloc = Module["_realloc"] = wasmExports2["realloc"];\n _wcslen = Module["_wcslen"] = wasmExports2["wcslen"];\n __PyMem_GetCurrentAllocatorName = Module["__PyMem_GetCurrentAllocatorName"] = wasmExports2["_PyMem_GetCurrentAllocatorName"];\n _PyMem_SetupDebugHooks = Module["_PyMem_SetupDebugHooks"] = wasmExports2["PyMem_SetupDebugHooks"];\n _PyMem_GetAllocator = Module["_PyMem_GetAllocator"] = wasmExports2["PyMem_GetAllocator"];\n _PyMem_SetAllocator = Module["_PyMem_SetAllocator"] = wasmExports2["PyMem_SetAllocator"];\n _PyObject_GetArenaAllocator = Module["_PyObject_GetArenaAllocator"] = wasmExports2["PyObject_GetArenaAllocator"];\n _PyObject_SetArenaAllocator = Module["_PyObject_SetArenaAllocator"] = wasmExports2["PyObject_SetArenaAllocator"];\n _PyMem_RawMalloc = Module["_PyMem_RawMalloc"] = wasmExports2["PyMem_RawMalloc"];\n _PyMem_RawCalloc = Module["_PyMem_RawCalloc"] = wasmExports2["PyMem_RawCalloc"];\n __PyMem_Strdup = Module["__PyMem_Strdup"] = wasmExports2["_PyMem_Strdup"];\n __PyMutex_LockTimed = Module["__PyMutex_LockTimed"] = wasmExports2["_PyMutex_LockTimed"];\n _PyPickleBuffer_FromObject = Module["_PyPickleBuffer_FromObject"] = wasmExports2["PyPickleBuffer_FromObject"];\n _PyPickleBuffer_GetBuffer = Module["_PyPickleBuffer_GetBuffer"] = wasmExports2["PyPickleBuffer_GetBuffer"];\n _PyPickleBuffer_Release = Module["_PyPickleBuffer_Release"] = wasmExports2["PyPickleBuffer_Release"];\n __PySlice_GetLongIndices = Module["__PySlice_GetLongIndices"] = wasmExports2["_PySlice_GetLongIndices"];\n __PySet_AddTakeRef = Module["__PySet_AddTakeRef"] = wasmExports2["_PySet_AddTakeRef"];\n __PySet_Contains = Module["__PySet_Contains"] = wasmExports2["_PySet_Contains"];\n _PySet_Size = Module["_PySet_Size"] = wasmExports2["PySet_Size"];\n _PySet_Clear = Module["_PySet_Clear"] = wasmExports2["PySet_Clear"];\n _PySet_Pop = Module["_PySet_Pop"] = wasmExports2["PySet_Pop"];\n _PySlice_GetIndices = Module["_PySlice_GetIndices"] = wasmExports2["PySlice_GetIndices"];\n _PySlice_GetIndicesEx = Module["_PySlice_GetIndicesEx"] = wasmExports2["PySlice_GetIndicesEx"];\n _PyStructSequence_GetItem = Module["_PyStructSequence_GetItem"] = wasmExports2["PyStructSequence_GetItem"];\n _PyStructSequence_InitType2 = Module["_PyStructSequence_InitType2"] = wasmExports2["PyStructSequence_InitType2"];\n _PyStructSequence_InitType = Module["_PyStructSequence_InitType"] = wasmExports2["PyStructSequence_InitType"];\n __PyStructSequence_NewType = Module["__PyStructSequence_NewType"] = wasmExports2["_PyStructSequence_NewType"];\n _PyUnicodeWriter_WriteUTF8 = Module["_PyUnicodeWriter_WriteUTF8"] = wasmExports2["PyUnicodeWriter_WriteUTF8"];\n _PyStructSequence_NewType = Module["_PyStructSequence_NewType"] = wasmExports2["PyStructSequence_NewType"];\n _PyUnicode_Concat = Module["_PyUnicode_Concat"] = wasmExports2["PyUnicode_Concat"];\n __PyTemplate_Build = Module["__PyTemplate_Build"] = wasmExports2["_PyTemplate_Build"];\n _PyTuple_SetItem = Module["_PyTuple_SetItem"] = wasmExports2["PyTuple_SetItem"];\n __PyTuple_FromStackRefStealOnSuccess = Module["__PyTuple_FromStackRefStealOnSuccess"] = wasmExports2["_PyTuple_FromStackRefStealOnSuccess"];\n __PyObject_GC_Resize = Module["__PyObject_GC_Resize"] = wasmExports2["_PyObject_GC_Resize"];\n __PyStaticType_GetBuiltins = Module["__PyStaticType_GetBuiltins"] = wasmExports2["_PyStaticType_GetBuiltins"];\n _PyType_GetDict = Module["_PyType_GetDict"] = wasmExports2["PyType_GetDict"];\n _strrchr = Module["_strrchr"] = wasmExports2["strrchr"];\n _PyType_ClearCache = Module["_PyType_ClearCache"] = wasmExports2["PyType_ClearCache"];\n _PyType_AddWatcher = Module["_PyType_AddWatcher"] = wasmExports2["PyType_AddWatcher"];\n _PyType_ClearWatcher = Module["_PyType_ClearWatcher"] = wasmExports2["PyType_ClearWatcher"];\n _PyType_Watch = Module["_PyType_Watch"] = wasmExports2["PyType_Watch"];\n _PyType_Unwatch = Module["_PyType_Unwatch"] = wasmExports2["PyType_Unwatch"];\n _PyType_Modified = Module["_PyType_Modified"] = wasmExports2["PyType_Modified"];\n __PyType_SetVersion = Module["__PyType_SetVersion"] = wasmExports2["_PyType_SetVersion"];\n _PyUnstable_Type_AssignVersionTag = Module["_PyUnstable_Type_AssignVersionTag"] = wasmExports2["PyUnstable_Type_AssignVersionTag"];\n _PyType_GetFullyQualifiedName = Module["_PyType_GetFullyQualifiedName"] = wasmExports2["PyType_GetFullyQualifiedName"];\n __PyType_NewManagedObject = Module["__PyType_NewManagedObject"] = wasmExports2["_PyType_NewManagedObject"];\n __PyObject_LookupSpecialMethod = Module["__PyObject_LookupSpecialMethod"] = wasmExports2["_PyObject_LookupSpecialMethod"];\n __PyObject_MaybeCallSpecialNoArgs = Module["__PyObject_MaybeCallSpecialNoArgs"] = wasmExports2["_PyObject_MaybeCallSpecialNoArgs"];\n __PyObject_MaybeCallSpecialOneArg = Module["__PyObject_MaybeCallSpecialOneArg"] = wasmExports2["_PyObject_MaybeCallSpecialOneArg"];\n _PyType_GetFlags = Module["_PyType_GetFlags"] = wasmExports2["PyType_GetFlags"];\n _PyType_SUPPORTS_WEAKREFS = Module["_PyType_SUPPORTS_WEAKREFS"] = wasmExports2["PyType_SUPPORTS_WEAKREFS"];\n _PyType_FromMetaclass = Module["_PyType_FromMetaclass"] = wasmExports2["PyType_FromMetaclass"];\n _PyType_FromModuleAndSpec = Module["_PyType_FromModuleAndSpec"] = wasmExports2["PyType_FromModuleAndSpec"];\n _PyType_FromSpec = Module["_PyType_FromSpec"] = wasmExports2["PyType_FromSpec"];\n _PyType_GetName = Module["_PyType_GetName"] = wasmExports2["PyType_GetName"];\n _PyType_GetModuleName = Module["_PyType_GetModuleName"] = wasmExports2["PyType_GetModuleName"];\n _PyType_GetSlot = Module["_PyType_GetSlot"] = wasmExports2["PyType_GetSlot"];\n _PyType_GetModule = Module["_PyType_GetModule"] = wasmExports2["PyType_GetModule"];\n _PyType_GetModuleState = Module["_PyType_GetModuleState"] = wasmExports2["PyType_GetModuleState"];\n _PyType_GetModuleByDef = Module["_PyType_GetModuleByDef"] = wasmExports2["PyType_GetModuleByDef"];\n _PyType_GetBaseByToken = Module["_PyType_GetBaseByToken"] = wasmExports2["PyType_GetBaseByToken"];\n _PyObject_GetTypeData = Module["_PyObject_GetTypeData"] = wasmExports2["PyObject_GetTypeData"];\n _PyType_GetTypeDataSize = Module["_PyType_GetTypeDataSize"] = wasmExports2["PyType_GetTypeDataSize"];\n _PyObject_GetItemData = Module["_PyObject_GetItemData"] = wasmExports2["PyObject_GetItemData"];\n __PyType_Lookup = Module["__PyType_Lookup"] = wasmExports2["_PyType_Lookup"];\n _PyUnicode_IsIdentifier = Module["_PyUnicode_IsIdentifier"] = wasmExports2["PyUnicode_IsIdentifier"];\n _PyEval_GetGlobals = Module["_PyEval_GetGlobals"] = wasmExports2["PyEval_GetGlobals"];\n __PyStaticType_InitForExtension = Module["__PyStaticType_InitForExtension"] = wasmExports2["_PyStaticType_InitForExtension"];\n __PyType_GetSlotWrapperNames = Module["__PyType_GetSlotWrapperNames"] = wasmExports2["_PyType_GetSlotWrapperNames"];\n _PyType_Freeze = Module["_PyType_Freeze"] = wasmExports2["PyType_Freeze"];\n __PySuper_Lookup = Module["__PySuper_Lookup"] = wasmExports2["_PySuper_Lookup"];\n _PyWeakref_NewRef = Module["_PyWeakref_NewRef"] = wasmExports2["PyWeakref_NewRef"];\n _PyImport_GetModule = Module["_PyImport_GetModule"] = wasmExports2["PyImport_GetModule"];\n _PyImport_Import = Module["_PyImport_Import"] = wasmExports2["PyImport_Import"];\n __Py_hashtable_len = Module["__Py_hashtable_len"] = wasmExports2["_Py_hashtable_len"];\n __Py_GetErrorHandler = Module["__Py_GetErrorHandler"] = wasmExports2["_Py_GetErrorHandler"];\n _PyUnicode_CopyCharacters = Module["_PyUnicode_CopyCharacters"] = wasmExports2["PyUnicode_CopyCharacters"];\n _PyUnicode_Resize = Module["_PyUnicode_Resize"] = wasmExports2["PyUnicode_Resize"];\n _PyUnicode_FromWideChar = Module["_PyUnicode_FromWideChar"] = wasmExports2["PyUnicode_FromWideChar"];\n _PyUnicodeWriter_WriteWideChar = Module["_PyUnicodeWriter_WriteWideChar"] = wasmExports2["PyUnicodeWriter_WriteWideChar"];\n _PyUnicodeWriter_WriteUCS4 = Module["_PyUnicodeWriter_WriteUCS4"] = wasmExports2["PyUnicodeWriter_WriteUCS4"];\n _PyUnicode_FromKindAndData = Module["_PyUnicode_FromKindAndData"] = wasmExports2["PyUnicode_FromKindAndData"];\n _PyUnicode_AsUCS4 = Module["_PyUnicode_AsUCS4"] = wasmExports2["PyUnicode_AsUCS4"];\n _PyUnicode_AsUCS4Copy = Module["_PyUnicode_AsUCS4Copy"] = wasmExports2["PyUnicode_AsUCS4Copy"];\n __PyUnicodeWriter_WriteASCIIString = Module["__PyUnicodeWriter_WriteASCIIString"] = wasmExports2["_PyUnicodeWriter_WriteASCIIString"];\n _PyUnicode_Fill = Module["_PyUnicode_Fill"] = wasmExports2["PyUnicode_Fill"];\n _PyUnicodeWriter_Format = Module["_PyUnicodeWriter_Format"] = wasmExports2["PyUnicodeWriter_Format"];\n _PyUnicode_AsWideCharString = Module["_PyUnicode_AsWideCharString"] = wasmExports2["PyUnicode_AsWideCharString"];\n _PyUnicode_FromOrdinal = Module["_PyUnicode_FromOrdinal"] = wasmExports2["PyUnicode_FromOrdinal"];\n _PyUnicode_FromObject = Module["_PyUnicode_FromObject"] = wasmExports2["PyUnicode_FromObject"];\n _PyCodec_LookupError = Module["_PyCodec_LookupError"] = wasmExports2["PyCodec_LookupError"];\n _PyUnicode_DecodeUTF16Stateful = Module["_PyUnicode_DecodeUTF16Stateful"] = wasmExports2["PyUnicode_DecodeUTF16Stateful"];\n _PyUnicode_DecodeUTF32Stateful = Module["_PyUnicode_DecodeUTF32Stateful"] = wasmExports2["PyUnicode_DecodeUTF32Stateful"];\n _PyUnicode_DecodeUTF16 = Module["_PyUnicode_DecodeUTF16"] = wasmExports2["PyUnicode_DecodeUTF16"];\n _PyUnicode_DecodeUTF32 = Module["_PyUnicode_DecodeUTF32"] = wasmExports2["PyUnicode_DecodeUTF32"];\n _PyUnicode_AsDecodedObject = Module["_PyUnicode_AsDecodedObject"] = wasmExports2["PyUnicode_AsDecodedObject"];\n _PyCodec_Decode = Module["_PyCodec_Decode"] = wasmExports2["PyCodec_Decode"];\n _PyUnicode_AsDecodedUnicode = Module["_PyUnicode_AsDecodedUnicode"] = wasmExports2["PyUnicode_AsDecodedUnicode"];\n _PyUnicode_AsEncodedObject = Module["_PyUnicode_AsEncodedObject"] = wasmExports2["PyUnicode_AsEncodedObject"];\n _PyCodec_Encode = Module["_PyCodec_Encode"] = wasmExports2["PyCodec_Encode"];\n _PyUnicode_EncodeLocale = Module["_PyUnicode_EncodeLocale"] = wasmExports2["PyUnicode_EncodeLocale"];\n __Py_EncodeLocaleEx = Module["__Py_EncodeLocaleEx"] = wasmExports2["_Py_EncodeLocaleEx"];\n _PyCodec_StrictErrors = Module["_PyCodec_StrictErrors"] = wasmExports2["PyCodec_StrictErrors"];\n _PyUnicode_EncodeFSDefault = Module["_PyUnicode_EncodeFSDefault"] = wasmExports2["PyUnicode_EncodeFSDefault"];\n __PyUnicode_EncodeUTF16 = Module["__PyUnicode_EncodeUTF16"] = wasmExports2["_PyUnicode_EncodeUTF16"];\n __PyUnicode_EncodeUTF32 = Module["__PyUnicode_EncodeUTF32"] = wasmExports2["_PyUnicode_EncodeUTF32"];\n _PyUnicode_AsEncodedUnicode = Module["_PyUnicode_AsEncodedUnicode"] = wasmExports2["PyUnicode_AsEncodedUnicode"];\n _PyUnicode_DecodeLocaleAndSize = Module["_PyUnicode_DecodeLocaleAndSize"] = wasmExports2["PyUnicode_DecodeLocaleAndSize"];\n __Py_DecodeLocaleEx = Module["__Py_DecodeLocaleEx"] = wasmExports2["_Py_DecodeLocaleEx"];\n _PyUnicode_DecodeLocale = Module["_PyUnicode_DecodeLocale"] = wasmExports2["PyUnicode_DecodeLocale"];\n _PyUnicode_DecodeFSDefaultAndSize = Module["_PyUnicode_DecodeFSDefaultAndSize"] = wasmExports2["PyUnicode_DecodeFSDefaultAndSize"];\n _PyUnicode_FSConverter = Module["_PyUnicode_FSConverter"] = wasmExports2["PyUnicode_FSConverter"];\n _PyOS_FSPath = Module["_PyOS_FSPath"] = wasmExports2["PyOS_FSPath"];\n _PyUnicode_FSDecoder = Module["_PyUnicode_FSDecoder"] = wasmExports2["PyUnicode_FSDecoder"];\n _wmemchr = Module["_wmemchr"] = wasmExports2["wmemchr"];\n __PyUnicode_AsUTF8NoNUL = Module["__PyUnicode_AsUTF8NoNUL"] = wasmExports2["_PyUnicode_AsUTF8NoNUL"];\n _PyUnicode_GetSize = Module["_PyUnicode_GetSize"] = wasmExports2["PyUnicode_GetSize"];\n _PyUnicode_GetLength = Module["_PyUnicode_GetLength"] = wasmExports2["PyUnicode_GetLength"];\n _PyUnicode_WriteChar = Module["_PyUnicode_WriteChar"] = wasmExports2["PyUnicode_WriteChar"];\n _PyUnicode_DecodeUTF7 = Module["_PyUnicode_DecodeUTF7"] = wasmExports2["PyUnicode_DecodeUTF7"];\n _PyUnicode_DecodeUTF7Stateful = Module["_PyUnicode_DecodeUTF7Stateful"] = wasmExports2["PyUnicode_DecodeUTF7Stateful"];\n _PyUnicode_AsUTF32String = Module["_PyUnicode_AsUTF32String"] = wasmExports2["PyUnicode_AsUTF32String"];\n _PyUnicode_AsUTF16String = Module["_PyUnicode_AsUTF16String"] = wasmExports2["PyUnicode_AsUTF16String"];\n _PyUnicode_DecodeUnicodeEscape = Module["_PyUnicode_DecodeUnicodeEscape"] = wasmExports2["PyUnicode_DecodeUnicodeEscape"];\n _PyUnicode_AsUnicodeEscapeString = Module["_PyUnicode_AsUnicodeEscapeString"] = wasmExports2["PyUnicode_AsUnicodeEscapeString"];\n _PyUnicode_DecodeRawUnicodeEscape = Module["_PyUnicode_DecodeRawUnicodeEscape"] = wasmExports2["PyUnicode_DecodeRawUnicodeEscape"];\n _PyUnicode_AsRawUnicodeEscapeString = Module["_PyUnicode_AsRawUnicodeEscapeString"] = wasmExports2["PyUnicode_AsRawUnicodeEscapeString"];\n _PyUnicode_AsLatin1String = Module["_PyUnicode_AsLatin1String"] = wasmExports2["PyUnicode_AsLatin1String"];\n __PyUnicodeWriter_PrepareKindInternal = Module["__PyUnicodeWriter_PrepareKindInternal"] = wasmExports2["_PyUnicodeWriter_PrepareKindInternal"];\n _PyUnicode_DecodeCharmap = Module["_PyUnicode_DecodeCharmap"] = wasmExports2["PyUnicode_DecodeCharmap"];\n _PyUnicode_BuildEncodingMap = Module["_PyUnicode_BuildEncodingMap"] = wasmExports2["PyUnicode_BuildEncodingMap"];\n _PyUnicode_AsCharmapString = Module["_PyUnicode_AsCharmapString"] = wasmExports2["PyUnicode_AsCharmapString"];\n _PyUnicode_Translate = Module["_PyUnicode_Translate"] = wasmExports2["PyUnicode_Translate"];\n __PyUnicode_ToDecimalDigit = Module["__PyUnicode_ToDecimalDigit"] = wasmExports2["_PyUnicode_ToDecimalDigit"];\n _PyUnicode_Count = Module["_PyUnicode_Count"] = wasmExports2["PyUnicode_Count"];\n _PyUnicode_Find = Module["_PyUnicode_Find"] = wasmExports2["PyUnicode_Find"];\n _PyUnicode_FindChar = Module["_PyUnicode_FindChar"] = wasmExports2["PyUnicode_FindChar"];\n _PyUnicode_Tailmatch = Module["_PyUnicode_Tailmatch"] = wasmExports2["PyUnicode_Tailmatch"];\n __PyUnicode_JoinArray = Module["__PyUnicode_JoinArray"] = wasmExports2["_PyUnicode_JoinArray"];\n _PyUnicode_Splitlines = Module["_PyUnicode_Splitlines"] = wasmExports2["PyUnicode_Splitlines"];\n __PyUnicode_IsLinebreak = Module["__PyUnicode_IsLinebreak"] = wasmExports2["_PyUnicode_IsLinebreak"];\n _wmemcmp = Module["_wmemcmp"] = wasmExports2["wmemcmp"];\n _PyUnicode_EqualToUTF8 = Module["_PyUnicode_EqualToUTF8"] = wasmExports2["PyUnicode_EqualToUTF8"];\n _PyUnicode_EqualToUTF8AndSize = Module["_PyUnicode_EqualToUTF8AndSize"] = wasmExports2["PyUnicode_EqualToUTF8AndSize"];\n _PyUnicode_RichCompare = Module["_PyUnicode_RichCompare"] = wasmExports2["PyUnicode_RichCompare"];\n _PyUnicode_Contains = Module["_PyUnicode_Contains"] = wasmExports2["PyUnicode_Contains"];\n _PyUnicode_Append = Module["_PyUnicode_Append"] = wasmExports2["PyUnicode_Append"];\n _PyUnicode_AppendAndDel = Module["_PyUnicode_AppendAndDel"] = wasmExports2["PyUnicode_AppendAndDel"];\n _PyUnicode_Replace = Module["_PyUnicode_Replace"] = wasmExports2["PyUnicode_Replace"];\n _PyUnicode_Split = Module["_PyUnicode_Split"] = wasmExports2["PyUnicode_Split"];\n _PyUnicode_Partition = Module["_PyUnicode_Partition"] = wasmExports2["PyUnicode_Partition"];\n _PyUnicode_RPartition = Module["_PyUnicode_RPartition"] = wasmExports2["PyUnicode_RPartition"];\n _PyUnicode_RSplit = Module["_PyUnicode_RSplit"] = wasmExports2["PyUnicode_RSplit"];\n __PyUnicodeWriter_WriteChar = Module["__PyUnicodeWriter_WriteChar"] = wasmExports2["_PyUnicodeWriter_WriteChar"];\n __PyUnicodeWriter_WriteSubstring = Module["__PyUnicodeWriter_WriteSubstring"] = wasmExports2["_PyUnicodeWriter_WriteSubstring"];\n _PyUnicodeWriter_WriteSubstring = Module["_PyUnicodeWriter_WriteSubstring"] = wasmExports2["PyUnicodeWriter_WriteSubstring"];\n _PyUnicodeWriter_DecodeUTF8Stateful = Module["_PyUnicodeWriter_DecodeUTF8Stateful"] = wasmExports2["PyUnicodeWriter_DecodeUTF8Stateful"];\n __PyUnicodeWriter_WriteLatin1String = Module["__PyUnicodeWriter_WriteLatin1String"] = wasmExports2["_PyUnicodeWriter_WriteLatin1String"];\n _PyUnicode_Format = Module["_PyUnicode_Format"] = wasmExports2["PyUnicode_Format"];\n __PyUnicode_ExactDealloc = Module["__PyUnicode_ExactDealloc"] = wasmExports2["_PyUnicode_ExactDealloc"];\n __Py_hashtable_new_full = Module["__Py_hashtable_new_full"] = wasmExports2["_Py_hashtable_new_full"];\n __Py_hashtable_get = Module["__Py_hashtable_get"] = wasmExports2["_Py_hashtable_get"];\n __Py_hashtable_set = Module["__Py_hashtable_set"] = wasmExports2["_Py_hashtable_set"];\n __PyUnicode_InternInPlace = Module["__PyUnicode_InternInPlace"] = wasmExports2["_PyUnicode_InternInPlace"];\n _PyUnicode_InternInPlace = Module["_PyUnicode_InternInPlace"] = wasmExports2["PyUnicode_InternInPlace"];\n _PyUnicode_InternImmortal = Module["_PyUnicode_InternImmortal"] = wasmExports2["PyUnicode_InternImmortal"];\n __Py_hashtable_destroy = Module["__Py_hashtable_destroy"] = wasmExports2["_Py_hashtable_destroy"];\n _PyInit__string = Module["_PyInit__string"] = wasmExports2["PyInit__string"];\n _PyUnicode_KIND = Module["_PyUnicode_KIND"] = wasmExports2["PyUnicode_KIND"];\n _PyUnicode_DATA = Module["_PyUnicode_DATA"] = wasmExports2["PyUnicode_DATA"];\n __PyUnicode_IsLowercase = Module["__PyUnicode_IsLowercase"] = wasmExports2["_PyUnicode_IsLowercase"];\n __PyUnicode_IsUppercase = Module["__PyUnicode_IsUppercase"] = wasmExports2["_PyUnicode_IsUppercase"];\n __PyUnicode_IsTitlecase = Module["__PyUnicode_IsTitlecase"] = wasmExports2["_PyUnicode_IsTitlecase"];\n __PyUnicode_IsDecimalDigit = Module["__PyUnicode_IsDecimalDigit"] = wasmExports2["_PyUnicode_IsDecimalDigit"];\n __PyUnicode_IsDigit = Module["__PyUnicode_IsDigit"] = wasmExports2["_PyUnicode_IsDigit"];\n __PyUnicode_IsNumeric = Module["__PyUnicode_IsNumeric"] = wasmExports2["_PyUnicode_IsNumeric"];\n __PyUnicode_IsAlpha = Module["__PyUnicode_IsAlpha"] = wasmExports2["_PyUnicode_IsAlpha"];\n __PyUnicode_ToNumeric = Module["__PyUnicode_ToNumeric"] = wasmExports2["_PyUnicode_ToNumeric"];\n __PyUnicode_ToTitlecase = Module["__PyUnicode_ToTitlecase"] = wasmExports2["_PyUnicode_ToTitlecase"];\n __PyUnicode_ToDigit = Module["__PyUnicode_ToDigit"] = wasmExports2["_PyUnicode_ToDigit"];\n __PyUnicode_ToUppercase = Module["__PyUnicode_ToUppercase"] = wasmExports2["_PyUnicode_ToUppercase"];\n __PyUnicode_ToLowercase = Module["__PyUnicode_ToLowercase"] = wasmExports2["_PyUnicode_ToLowercase"];\n __PyWeakref_ClearRef = Module["__PyWeakref_ClearRef"] = wasmExports2["_PyWeakref_ClearRef"];\n _PyWeakref_NewProxy = Module["_PyWeakref_NewProxy"] = wasmExports2["PyWeakref_NewProxy"];\n _PyWeakref_IsDead = Module["_PyWeakref_IsDead"] = wasmExports2["PyWeakref_IsDead"];\n _PyWeakref_GetRef = Module["_PyWeakref_GetRef"] = wasmExports2["PyWeakref_GetRef"];\n _PyWeakref_GetObject = Module["_PyWeakref_GetObject"] = wasmExports2["PyWeakref_GetObject"];\n _PyUnstable_Object_ClearWeakRefsNoCallbacks = Module["_PyUnstable_Object_ClearWeakRefsNoCallbacks"] = wasmExports2["PyUnstable_Object_ClearWeakRefsNoCallbacks"];\n __PyWeakref_IsDead = Module["__PyWeakref_IsDead"] = wasmExports2["_PyWeakref_IsDead"];\n _PyInit__contextvars = Module["_PyInit__contextvars"] = wasmExports2["PyInit__contextvars"];\n _PyModule_AddType = Module["_PyModule_AddType"] = wasmExports2["PyModule_AddType"];\n _PyContextVar_New = Module["_PyContextVar_New"] = wasmExports2["PyContextVar_New"];\n _PyErr_ResourceWarning = Module["_PyErr_ResourceWarning"] = wasmExports2["PyErr_ResourceWarning"];\n __PyRecursiveMutex_Lock = Module["__PyRecursiveMutex_Lock"] = wasmExports2["_PyRecursiveMutex_Lock"];\n _PyContextVar_Get = Module["_PyContextVar_Get"] = wasmExports2["PyContextVar_Get"];\n _PyErr_WarnExplicit = Module["_PyErr_WarnExplicit"] = wasmExports2["PyErr_WarnExplicit"];\n _PyErr_WarnExplicitFormat = Module["_PyErr_WarnExplicitFormat"] = wasmExports2["PyErr_WarnExplicitFormat"];\n __Py_IsInterpreterFinalizing = Module["__Py_IsInterpreterFinalizing"] = wasmExports2["_Py_IsInterpreterFinalizing"];\n __PyWarnings_Init = Module["__PyWarnings_Init"] = wasmExports2["_PyWarnings_Init"];\n _PyThreadState_GetFrame = Module["_PyThreadState_GetFrame"] = wasmExports2["PyThreadState_GetFrame"];\n __PySys_GetOptionalAttr = Module["__PySys_GetOptionalAttr"] = wasmExports2["_PySys_GetOptionalAttr"];\n __Py_DisplaySourceLine = Module["__Py_DisplaySourceLine"] = wasmExports2["_Py_DisplaySourceLine"];\n _PyModule_AddObjectRef = Module["_PyModule_AddObjectRef"] = wasmExports2["PyModule_AddObjectRef"];\n _PyInit__ast = Module["_PyInit__ast"] = wasmExports2["PyInit__ast"];\n __PyOnceFlag_CallOnceSlow = Module["__PyOnceFlag_CallOnceSlow"] = wasmExports2["_PyOnceFlag_CallOnceSlow"];\n _PyModule_AddIntConstant = Module["_PyModule_AddIntConstant"] = wasmExports2["PyModule_AddIntConstant"];\n _PyInit__tokenize = Module["_PyInit__tokenize"] = wasmExports2["PyInit__tokenize"];\n _PyErr_SyntaxLocationObject = Module["_PyErr_SyntaxLocationObject"] = wasmExports2["PyErr_SyntaxLocationObject"];\n _PyImport_ImportModuleLevelObject = Module["_PyImport_ImportModuleLevelObject"] = wasmExports2["PyImport_ImportModuleLevelObject"];\n __PySys_GetRequiredAttrString = Module["__PySys_GetRequiredAttrString"] = wasmExports2["_PySys_GetRequiredAttrString"];\n _PyEval_MergeCompilerFlags = Module["_PyEval_MergeCompilerFlags"] = wasmExports2["PyEval_MergeCompilerFlags"];\n __PyArena_New = Module["__PyArena_New"] = wasmExports2["_PyArena_New"];\n __PyArena_Free = Module["__PyArena_Free"] = wasmExports2["_PyArena_Free"];\n __PyAST_Compile = Module["__PyAST_Compile"] = wasmExports2["_PyAST_Compile"];\n _Py_CompileStringObject = Module["_Py_CompileStringObject"] = wasmExports2["Py_CompileStringObject"];\n _PyEval_EvalCode = Module["_PyEval_EvalCode"] = wasmExports2["PyEval_EvalCode"];\n _PyRun_StringFlags = Module["_PyRun_StringFlags"] = wasmExports2["PyRun_StringFlags"];\n _PyEval_EvalCodeEx = Module["_PyEval_EvalCodeEx"] = wasmExports2["PyEval_EvalCodeEx"];\n __PySys_GetRequiredAttr = Module["__PySys_GetRequiredAttr"] = wasmExports2["_PySys_GetRequiredAttr"];\n _Py_GetRecursionLimit = Module["_Py_GetRecursionLimit"] = wasmExports2["Py_GetRecursionLimit"];\n _Py_SetRecursionLimit = Module["_Py_SetRecursionLimit"] = wasmExports2["Py_SetRecursionLimit"];\n _emscripten_stack_get_base = Module["_emscripten_stack_get_base"] = wasmExports2["emscripten_stack_get_base"];\n _emscripten_stack_get_end = Module["_emscripten_stack_get_end"] = wasmExports2["emscripten_stack_get_end"];\n __Py_InitializeRecursionLimits = Module["__Py_InitializeRecursionLimits"] = wasmExports2["_Py_InitializeRecursionLimits"];\n _PyUnstable_ThreadState_SetStackProtection = Module["_PyUnstable_ThreadState_SetStackProtection"] = wasmExports2["PyUnstable_ThreadState_SetStackProtection"];\n _PyUnstable_ThreadState_ResetStackProtection = Module["_PyUnstable_ThreadState_ResetStackProtection"] = wasmExports2["PyUnstable_ThreadState_ResetStackProtection"];\n __PyEval_MatchKeys = Module["__PyEval_MatchKeys"] = wasmExports2["_PyEval_MatchKeys"];\n __PyEval_MatchClass = Module["__PyEval_MatchClass"] = wasmExports2["_PyEval_MatchClass"];\n __PyEvalFramePushAndInit = Module["__PyEvalFramePushAndInit"] = wasmExports2["_PyEvalFramePushAndInit"];\n _PyEval_EvalFrame = Module["_PyEval_EvalFrame"] = wasmExports2["PyEval_EvalFrame"];\n _PyEval_EvalFrameEx = Module["_PyEval_EvalFrameEx"] = wasmExports2["PyEval_EvalFrameEx"];\n __PyObjectArray_FromStackRefArray = Module["__PyObjectArray_FromStackRefArray"] = wasmExports2["_PyObjectArray_FromStackRefArray"];\n __PyObjectArray_Free = Module["__PyObjectArray_Free"] = wasmExports2["_PyObjectArray_Free"];\n __PyEval_FrameClearAndPop = Module["__PyEval_FrameClearAndPop"] = wasmExports2["_PyEval_FrameClearAndPop"];\n _PyTraceBack_Here = Module["_PyTraceBack_Here"] = wasmExports2["PyTraceBack_Here"];\n __PyEval_MonitorRaise = Module["__PyEval_MonitorRaise"] = wasmExports2["_PyEval_MonitorRaise"];\n __Py_HandlePending = Module["__Py_HandlePending"] = wasmExports2["_Py_HandlePending"];\n __Py_Check_ArgsIterable = Module["__Py_Check_ArgsIterable"] = wasmExports2["_Py_Check_ArgsIterable"];\n __PyEval_CheckExceptStarTypeValid = Module["__PyEval_CheckExceptStarTypeValid"] = wasmExports2["_PyEval_CheckExceptStarTypeValid"];\n __PyEval_ExceptionGroupMatch = Module["__PyEval_ExceptionGroupMatch"] = wasmExports2["_PyEval_ExceptionGroupMatch"];\n _PyErr_SetHandledException = Module["_PyErr_SetHandledException"] = wasmExports2["PyErr_SetHandledException"];\n __PyEval_FormatExcCheckArg = Module["__PyEval_FormatExcCheckArg"] = wasmExports2["_PyEval_FormatExcCheckArg"];\n __PyEval_FormatKwargsError = Module["__PyEval_FormatKwargsError"] = wasmExports2["_PyEval_FormatKwargsError"];\n __PyEval_GetANext = Module["__PyEval_GetANext"] = wasmExports2["_PyEval_GetANext"];\n __PyEval_GetAwaitable = Module["__PyEval_GetAwaitable"] = wasmExports2["_PyEval_GetAwaitable"];\n __PyEval_ImportFrom = Module["__PyEval_ImportFrom"] = wasmExports2["_PyEval_ImportFrom"];\n __PyEval_ImportName = Module["__PyEval_ImportName"] = wasmExports2["_PyEval_ImportName"];\n __PyEval_FormatExcUnbound = Module["__PyEval_FormatExcUnbound"] = wasmExports2["_PyEval_FormatExcUnbound"];\n __PyEval_LoadGlobalStackRef = Module["__PyEval_LoadGlobalStackRef"] = wasmExports2["_PyEval_LoadGlobalStackRef"];\n __PyEval_LoadName = Module["__PyEval_LoadName"] = wasmExports2["_PyEval_LoadName"];\n __PyEval_SpecialMethodCanSuggest = Module["__PyEval_SpecialMethodCanSuggest"] = wasmExports2["_PyEval_SpecialMethodCanSuggest"];\n __PyThreadState_PopFrame = Module["__PyThreadState_PopFrame"] = wasmExports2["_PyThreadState_PopFrame"];\n __PyEval_UnpackIterableStackRef = Module["__PyEval_UnpackIterableStackRef"] = wasmExports2["_PyEval_UnpackIterableStackRef"];\n __PyEval_CheckExceptTypeValid = Module["__PyEval_CheckExceptTypeValid"] = wasmExports2["_PyEval_CheckExceptTypeValid"];\n _PyThreadState_EnterTracing = Module["_PyThreadState_EnterTracing"] = wasmExports2["PyThreadState_EnterTracing"];\n _PyThreadState_LeaveTracing = Module["_PyThreadState_LeaveTracing"] = wasmExports2["PyThreadState_LeaveTracing"];\n __PyEval_SetProfile = Module["__PyEval_SetProfile"] = wasmExports2["_PyEval_SetProfile"];\n _PyEval_SetProfileAllThreads = Module["_PyEval_SetProfileAllThreads"] = wasmExports2["PyEval_SetProfileAllThreads"];\n _PyEval_SetTraceAllThreads = Module["_PyEval_SetTraceAllThreads"] = wasmExports2["PyEval_SetTraceAllThreads"];\n _PyEval_GetFrame = Module["_PyEval_GetFrame"] = wasmExports2["PyEval_GetFrame"];\n _PyEval_GetLocals = Module["_PyEval_GetLocals"] = wasmExports2["PyEval_GetLocals"];\n __PyInterpreterState_IsRunningMain = Module["__PyInterpreterState_IsRunningMain"] = wasmExports2["_PyInterpreterState_IsRunningMain"];\n _PyImport_ImportModuleLevel = Module["_PyImport_ImportModuleLevel"] = wasmExports2["PyImport_ImportModuleLevel"];\n _PyEval_GetFrameLocals = Module["_PyEval_GetFrameLocals"] = wasmExports2["PyEval_GetFrameLocals"];\n _PyEval_GetFrameGlobals = Module["_PyEval_GetFrameGlobals"] = wasmExports2["PyEval_GetFrameGlobals"];\n _PyEval_GetFrameBuiltins = Module["_PyEval_GetFrameBuiltins"] = wasmExports2["PyEval_GetFrameBuiltins"];\n _PyEval_GetFuncName = Module["_PyEval_GetFuncName"] = wasmExports2["PyEval_GetFuncName"];\n _PyEval_GetFuncDesc = Module["_PyEval_GetFuncDesc"] = wasmExports2["PyEval_GetFuncDesc"];\n __PyEval_FormatAwaitableError = Module["__PyEval_FormatAwaitableError"] = wasmExports2["_PyEval_FormatAwaitableError"];\n _PyUnstable_Eval_RequestCodeExtraIndex = Module["_PyUnstable_Eval_RequestCodeExtraIndex"] = wasmExports2["PyUnstable_Eval_RequestCodeExtraIndex"];\n _PyCodec_Register = Module["_PyCodec_Register"] = wasmExports2["PyCodec_Register"];\n _PyCodec_Unregister = Module["_PyCodec_Unregister"] = wasmExports2["PyCodec_Unregister"];\n _PyCodec_KnownEncoding = Module["_PyCodec_KnownEncoding"] = wasmExports2["PyCodec_KnownEncoding"];\n _PyCodec_Encoder = Module["_PyCodec_Encoder"] = wasmExports2["PyCodec_Encoder"];\n _PyCodec_Decoder = Module["_PyCodec_Decoder"] = wasmExports2["PyCodec_Decoder"];\n _PyCodec_IncrementalEncoder = Module["_PyCodec_IncrementalEncoder"] = wasmExports2["PyCodec_IncrementalEncoder"];\n _PyCodec_IncrementalDecoder = Module["_PyCodec_IncrementalDecoder"] = wasmExports2["PyCodec_IncrementalDecoder"];\n _PyCodec_StreamReader = Module["_PyCodec_StreamReader"] = wasmExports2["PyCodec_StreamReader"];\n _PyCodec_StreamWriter = Module["_PyCodec_StreamWriter"] = wasmExports2["PyCodec_StreamWriter"];\n _PyCodec_RegisterError = Module["_PyCodec_RegisterError"] = wasmExports2["PyCodec_RegisterError"];\n _PyCodec_IgnoreErrors = Module["_PyCodec_IgnoreErrors"] = wasmExports2["PyCodec_IgnoreErrors"];\n _PyCodec_ReplaceErrors = Module["_PyCodec_ReplaceErrors"] = wasmExports2["PyCodec_ReplaceErrors"];\n _PyCodec_XMLCharRefReplaceErrors = Module["_PyCodec_XMLCharRefReplaceErrors"] = wasmExports2["PyCodec_XMLCharRefReplaceErrors"];\n _PyCodec_BackslashReplaceErrors = Module["_PyCodec_BackslashReplaceErrors"] = wasmExports2["PyCodec_BackslashReplaceErrors"];\n _PyCodec_NameReplaceErrors = Module["_PyCodec_NameReplaceErrors"] = wasmExports2["PyCodec_NameReplaceErrors"];\n _PyStatus_NoMemory = Module["_PyStatus_NoMemory"] = wasmExports2["PyStatus_NoMemory"];\n _PyStatus_Error = Module["_PyStatus_Error"] = wasmExports2["PyStatus_Error"];\n _PyStatus_Ok = Module["_PyStatus_Ok"] = wasmExports2["PyStatus_Ok"];\n __PyCompile_CleanDoc = Module["__PyCompile_CleanDoc"] = wasmExports2["_PyCompile_CleanDoc"];\n __PyInstructionSequence_New = Module["__PyInstructionSequence_New"] = wasmExports2["_PyInstructionSequence_New"];\n __PyCompile_CodeGen = Module["__PyCompile_CodeGen"] = wasmExports2["_PyCompile_CodeGen"];\n __PyCompile_Assemble = Module["__PyCompile_Assemble"] = wasmExports2["_PyCompile_Assemble"];\n _PyCode_Optimize = Module["_PyCode_Optimize"] = wasmExports2["PyCode_Optimize"];\n __PyContext_NewHamtForTests = Module["__PyContext_NewHamtForTests"] = wasmExports2["_PyContext_NewHamtForTests"];\n _PyContext_New = Module["_PyContext_New"] = wasmExports2["PyContext_New"];\n _PyContext_Copy = Module["_PyContext_Copy"] = wasmExports2["PyContext_Copy"];\n _PyContext_AddWatcher = Module["_PyContext_AddWatcher"] = wasmExports2["PyContext_AddWatcher"];\n _PyContext_ClearWatcher = Module["_PyContext_ClearWatcher"] = wasmExports2["PyContext_ClearWatcher"];\n _PyContext_Enter = Module["_PyContext_Enter"] = wasmExports2["PyContext_Enter"];\n _PyContext_Exit = Module["_PyContext_Exit"] = wasmExports2["PyContext_Exit"];\n _PyContextVar_Set = Module["_PyContextVar_Set"] = wasmExports2["PyContextVar_Set"];\n _PyContextVar_Reset = Module["_PyContextVar_Reset"] = wasmExports2["PyContextVar_Reset"];\n __PyCriticalSection_BeginSlow = Module["__PyCriticalSection_BeginSlow"] = wasmExports2["_PyCriticalSection_BeginSlow"];\n __PyCriticalSection2_BeginSlow = Module["__PyCriticalSection2_BeginSlow"] = wasmExports2["_PyCriticalSection2_BeginSlow"];\n __PyCriticalSection_SuspendAll = Module["__PyCriticalSection_SuspendAll"] = wasmExports2["_PyCriticalSection_SuspendAll"];\n __PyCriticalSection_Resume = Module["__PyCriticalSection_Resume"] = wasmExports2["_PyCriticalSection_Resume"];\n _PyCriticalSection_Begin = Module["_PyCriticalSection_Begin"] = wasmExports2["PyCriticalSection_Begin"];\n _PyCriticalSection_BeginMutex = Module["_PyCriticalSection_BeginMutex"] = wasmExports2["PyCriticalSection_BeginMutex"];\n _PyCriticalSection_End = Module["_PyCriticalSection_End"] = wasmExports2["PyCriticalSection_End"];\n _PyCriticalSection2_Begin = Module["_PyCriticalSection2_Begin"] = wasmExports2["PyCriticalSection2_Begin"];\n _PyCriticalSection2_BeginMutex = Module["_PyCriticalSection2_BeginMutex"] = wasmExports2["PyCriticalSection2_BeginMutex"];\n _PyCriticalSection2_End = Module["_PyCriticalSection2_End"] = wasmExports2["PyCriticalSection2_End"];\n __PyEval_AddPendingCall = Module["__PyEval_AddPendingCall"] = wasmExports2["_PyEval_AddPendingCall"];\n __PyXIData_GetNotShareableErrorType = Module["__PyXIData_GetNotShareableErrorType"] = wasmExports2["_PyXIData_GetNotShareableErrorType"];\n __PyXIData_SetNotShareableError = Module["__PyXIData_SetNotShareableError"] = wasmExports2["_PyXIData_SetNotShareableError"];\n __PyXIData_FormatNotShareableError = Module["__PyXIData_FormatNotShareableError"] = wasmExports2["_PyXIData_FormatNotShareableError"];\n __PyXI_UnwrapNotShareableError = Module["__PyXI_UnwrapNotShareableError"] = wasmExports2["_PyXI_UnwrapNotShareableError"];\n __PyXI_InitFailure = Module["__PyXI_InitFailure"] = wasmExports2["_PyXI_InitFailure"];\n __PyXIData_Lookup = Module["__PyXIData_Lookup"] = wasmExports2["_PyXIData_Lookup"];\n __PyXIData_RegisterClass = Module["__PyXIData_RegisterClass"] = wasmExports2["_PyXIData_RegisterClass"];\n __PyXIData_UnregisterClass = Module["__PyXIData_UnregisterClass"] = wasmExports2["_PyXIData_UnregisterClass"];\n __PyBytes_GetData = Module["__PyBytes_GetData"] = wasmExports2["_PyBytes_GetData"];\n __PyBytes_FromData = Module["__PyBytes_FromData"] = wasmExports2["_PyBytes_FromData"];\n __PyBytes_FromXIData = Module["__PyBytes_FromXIData"] = wasmExports2["_PyBytes_FromXIData"];\n __PyBytes_GetXIData = Module["__PyBytes_GetXIData"] = wasmExports2["_PyBytes_GetXIData"];\n _PyInterpreterState_GetID = Module["_PyInterpreterState_GetID"] = wasmExports2["PyInterpreterState_GetID"];\n __PyBytes_GetXIDataWrapped = Module["__PyBytes_GetXIDataWrapped"] = wasmExports2["_PyBytes_GetXIDataWrapped"];\n __PyCode_FromXIData = Module["__PyCode_FromXIData"] = wasmExports2["_PyCode_FromXIData"];\n __PyMarshal_ReadObjectFromXIData = Module["__PyMarshal_ReadObjectFromXIData"] = wasmExports2["_PyMarshal_ReadObjectFromXIData"];\n _PyMarshal_ReadObjectFromString = Module["_PyMarshal_ReadObjectFromString"] = wasmExports2["PyMarshal_ReadObjectFromString"];\n __PyCode_GetXIData = Module["__PyCode_GetXIData"] = wasmExports2["_PyCode_GetXIData"];\n __PyMarshal_GetXIData = Module["__PyMarshal_GetXIData"] = wasmExports2["_PyMarshal_GetXIData"];\n _PyMarshal_WriteObjectToString = Module["_PyMarshal_WriteObjectToString"] = wasmExports2["PyMarshal_WriteObjectToString"];\n __PyFunction_FromXIData = Module["__PyFunction_FromXIData"] = wasmExports2["_PyFunction_FromXIData"];\n __PyFunction_GetXIData = Module["__PyFunction_GetXIData"] = wasmExports2["_PyFunction_GetXIData"];\n __PyXIData_New = Module["__PyXIData_New"] = wasmExports2["_PyXIData_New"];\n __PyXIData_Free = Module["__PyXIData_Free"] = wasmExports2["_PyXIData_Free"];\n __PyXIData_Clear = Module["__PyXIData_Clear"] = wasmExports2["_PyXIData_Clear"];\n __PyXIData_Init = Module["__PyXIData_Init"] = wasmExports2["_PyXIData_Init"];\n __PyXIData_InitWithSize = Module["__PyXIData_InitWithSize"] = wasmExports2["_PyXIData_InitWithSize"];\n __PyObject_CheckXIData = Module["__PyObject_CheckXIData"] = wasmExports2["_PyObject_CheckXIData"];\n __PyObject_GetXIDataNoFallback = Module["__PyObject_GetXIDataNoFallback"] = wasmExports2["_PyObject_GetXIDataNoFallback"];\n __PyObject_GetXIData = Module["__PyObject_GetXIData"] = wasmExports2["_PyObject_GetXIData"];\n __PyPickle_GetXIData = Module["__PyPickle_GetXIData"] = wasmExports2["_PyPickle_GetXIData"];\n __PyPickle_LoadFromXIData = Module["__PyPickle_LoadFromXIData"] = wasmExports2["_PyPickle_LoadFromXIData"];\n _PyInterpreterState_GetDict = Module["_PyInterpreterState_GetDict"] = wasmExports2["PyInterpreterState_GetDict"];\n __PyImport_SetModule = Module["__PyImport_SetModule"] = wasmExports2["_PyImport_SetModule"];\n __PyCode_GetScriptXIData = Module["__PyCode_GetScriptXIData"] = wasmExports2["_PyCode_GetScriptXIData"];\n _Py_CompileStringExFlags = Module["_Py_CompileStringExFlags"] = wasmExports2["Py_CompileStringExFlags"];\n __PyCode_GetPureScriptXIData = Module["__PyCode_GetPureScriptXIData"] = wasmExports2["_PyCode_GetPureScriptXIData"];\n __PyXIData_NewObject = Module["__PyXIData_NewObject"] = wasmExports2["_PyXIData_NewObject"];\n __PyXIData_Release = Module["__PyXIData_Release"] = wasmExports2["_PyXIData_Release"];\n __PyInterpreterState_LookUpID = Module["__PyInterpreterState_LookUpID"] = wasmExports2["_PyInterpreterState_LookUpID"];\n __PyXIData_ReleaseAndRawFree = Module["__PyXIData_ReleaseAndRawFree"] = wasmExports2["_PyXIData_ReleaseAndRawFree"];\n __PyXI_NewExcInfo = Module["__PyXI_NewExcInfo"] = wasmExports2["_PyXI_NewExcInfo"];\n __PyXI_FreeExcInfo = Module["__PyXI_FreeExcInfo"] = wasmExports2["_PyXI_FreeExcInfo"];\n __PyXI_FormatExcInfo = Module["__PyXI_FormatExcInfo"] = wasmExports2["_PyXI_FormatExcInfo"];\n __PyXI_ExcInfoAsObject = Module["__PyXI_ExcInfoAsObject"] = wasmExports2["_PyXI_ExcInfoAsObject"];\n __PyXI_NewFailure = Module["__PyXI_NewFailure"] = wasmExports2["_PyXI_NewFailure"];\n __PyXI_FreeFailure = Module["__PyXI_FreeFailure"] = wasmExports2["_PyXI_FreeFailure"];\n __PyXI_GetFailureCode = Module["__PyXI_GetFailureCode"] = wasmExports2["_PyXI_GetFailureCode"];\n __PyXI_InitFailureUTF8 = Module["__PyXI_InitFailureUTF8"] = wasmExports2["_PyXI_InitFailureUTF8"];\n __PyXI_NewSession = Module["__PyXI_NewSession"] = wasmExports2["_PyXI_NewSession"];\n __PyXI_FreeSession = Module["__PyXI_FreeSession"] = wasmExports2["_PyXI_FreeSession"];\n __PyXI_Enter = Module["__PyXI_Enter"] = wasmExports2["_PyXI_Enter"];\n __PyThreadState_NewBound = Module["__PyThreadState_NewBound"] = wasmExports2["_PyThreadState_NewBound"];\n __PyInterpreterState_SetRunningMain = Module["__PyInterpreterState_SetRunningMain"] = wasmExports2["_PyInterpreterState_SetRunningMain"];\n __PyInterpreterState_SetNotRunningMain = Module["__PyInterpreterState_SetNotRunningMain"] = wasmExports2["_PyInterpreterState_SetNotRunningMain"];\n __PyErr_SetInterpreterAlreadyRunning = Module["__PyErr_SetInterpreterAlreadyRunning"] = wasmExports2["_PyErr_SetInterpreterAlreadyRunning"];\n __PyXI_Exit = Module["__PyXI_Exit"] = wasmExports2["_PyXI_Exit"];\n __PyXI_ClearResult = Module["__PyXI_ClearResult"] = wasmExports2["_PyXI_ClearResult"];\n __PyXI_GetMainNamespace = Module["__PyXI_GetMainNamespace"] = wasmExports2["_PyXI_GetMainNamespace"];\n __PyXI_Preserve = Module["__PyXI_Preserve"] = wasmExports2["_PyXI_Preserve"];\n __PyXI_GetPreserved = Module["__PyXI_GetPreserved"] = wasmExports2["_PyXI_GetPreserved"];\n _PyErr_PrintEx = Module["_PyErr_PrintEx"] = wasmExports2["PyErr_PrintEx"];\n __PyXI_NewInterpreter = Module["__PyXI_NewInterpreter"] = wasmExports2["_PyXI_NewInterpreter"];\n _Py_NewInterpreterFromConfig = Module["_Py_NewInterpreterFromConfig"] = wasmExports2["Py_NewInterpreterFromConfig"];\n __PyErr_SetFromPyStatus = Module["__PyErr_SetFromPyStatus"] = wasmExports2["_PyErr_SetFromPyStatus"];\n _PyThreadState_GetInterpreter = Module["_PyThreadState_GetInterpreter"] = wasmExports2["PyThreadState_GetInterpreter"];\n __PyXI_EndInterpreter = Module["__PyXI_EndInterpreter"] = wasmExports2["_PyXI_EndInterpreter"];\n __PyInterpreterState_IsReady = Module["__PyInterpreterState_IsReady"] = wasmExports2["_PyInterpreterState_IsReady"];\n _PyInterpreterState_Delete = Module["_PyInterpreterState_Delete"] = wasmExports2["PyInterpreterState_Delete"];\n _Py_EndInterpreter = Module["_Py_EndInterpreter"] = wasmExports2["Py_EndInterpreter"];\n __PyErr_SetLocaleString = Module["__PyErr_SetLocaleString"] = wasmExports2["_PyErr_SetLocaleString"];\n _PyErr_GetHandledException = Module["_PyErr_GetHandledException"] = wasmExports2["PyErr_GetHandledException"];\n _PyErr_GetExcInfo = Module["_PyErr_GetExcInfo"] = wasmExports2["PyErr_GetExcInfo"];\n _PyErr_SetExcInfo = Module["_PyErr_SetExcInfo"] = wasmExports2["PyErr_SetExcInfo"];\n _PyErr_SetFromErrnoWithFilenameObject = Module["_PyErr_SetFromErrnoWithFilenameObject"] = wasmExports2["PyErr_SetFromErrnoWithFilenameObject"];\n _PyErr_SetFromErrnoWithFilenameObjects = Module["_PyErr_SetFromErrnoWithFilenameObjects"] = wasmExports2["PyErr_SetFromErrnoWithFilenameObjects"];\n _strerror = Module["_strerror"] = wasmExports2["strerror"];\n _PyErr_SetImportErrorSubclass = Module["_PyErr_SetImportErrorSubclass"] = wasmExports2["PyErr_SetImportErrorSubclass"];\n _PyErr_SetImportError = Module["_PyErr_SetImportError"] = wasmExports2["PyErr_SetImportError"];\n _PyErr_BadInternalCall = Module["_PyErr_BadInternalCall"] = wasmExports2["PyErr_BadInternalCall"];\n __PyErr_FormatV = Module["__PyErr_FormatV"] = wasmExports2["_PyErr_FormatV"];\n _PyErr_FormatV = Module["_PyErr_FormatV"] = wasmExports2["PyErr_FormatV"];\n _PyErr_NewExceptionWithDoc = Module["_PyErr_NewExceptionWithDoc"] = wasmExports2["PyErr_NewExceptionWithDoc"];\n _PyTraceBack_Print = Module["_PyTraceBack_Print"] = wasmExports2["PyTraceBack_Print"];\n _PyErr_WriteUnraisable = Module["_PyErr_WriteUnraisable"] = wasmExports2["PyErr_WriteUnraisable"];\n _PyErr_SyntaxLocation = Module["_PyErr_SyntaxLocation"] = wasmExports2["PyErr_SyntaxLocation"];\n _PyErr_SyntaxLocationEx = Module["_PyErr_SyntaxLocationEx"] = wasmExports2["PyErr_SyntaxLocationEx"];\n _PyErr_RangedSyntaxLocationObject = Module["_PyErr_RangedSyntaxLocationObject"] = wasmExports2["PyErr_RangedSyntaxLocationObject"];\n _PyErr_ProgramTextObject = Module["_PyErr_ProgramTextObject"] = wasmExports2["PyErr_ProgramTextObject"];\n _PyErr_ProgramText = Module["_PyErr_ProgramText"] = wasmExports2["PyErr_ProgramText"];\n _Py_fopen = Module["_Py_fopen"] = wasmExports2["Py_fopen"];\n _PyCompile_OpcodeStackEffectWithJump = Module["_PyCompile_OpcodeStackEffectWithJump"] = wasmExports2["PyCompile_OpcodeStackEffectWithJump"];\n __PyCompile_OptimizeCfg = Module["__PyCompile_OptimizeCfg"] = wasmExports2["_PyCompile_OptimizeCfg"];\n _PyUnstable_InterpreterFrame_GetCode = Module["_PyUnstable_InterpreterFrame_GetCode"] = wasmExports2["PyUnstable_InterpreterFrame_GetCode"];\n _PyUnstable_InterpreterFrame_GetLasti = Module["_PyUnstable_InterpreterFrame_GetLasti"] = wasmExports2["PyUnstable_InterpreterFrame_GetLasti"];\n _Py_FrozenMain = Module["_Py_FrozenMain"] = wasmExports2["Py_FrozenMain"];\n _Py_GETENV = Module["_Py_GETENV"] = wasmExports2["Py_GETENV"];\n _Py_GetVersion = Module["_Py_GetVersion"] = wasmExports2["Py_GetVersion"];\n _Py_GetCopyright = Module["_Py_GetCopyright"] = wasmExports2["Py_GetCopyright"];\n _PyImport_ImportFrozenModule = Module["_PyImport_ImportFrozenModule"] = wasmExports2["PyImport_ImportFrozenModule"];\n _PyRun_AnyFileExFlags = Module["_PyRun_AnyFileExFlags"] = wasmExports2["PyRun_AnyFileExFlags"];\n _Py_FinalizeEx = Module["_Py_FinalizeEx"] = wasmExports2["Py_FinalizeEx"];\n _PyGC_Enable = Module["_PyGC_Enable"] = wasmExports2["PyGC_Enable"];\n _PyGC_Disable = Module["_PyGC_Disable"] = wasmExports2["PyGC_Disable"];\n _PyGC_IsEnabled = Module["_PyGC_IsEnabled"] = wasmExports2["PyGC_IsEnabled"];\n _PyTime_PerfCounterRaw = Module["_PyTime_PerfCounterRaw"] = wasmExports2["PyTime_PerfCounterRaw"];\n _PyTime_AsSecondsDouble = Module["_PyTime_AsSecondsDouble"] = wasmExports2["PyTime_AsSecondsDouble"];\n _PyGC_Collect = Module["_PyGC_Collect"] = wasmExports2["PyGC_Collect"];\n _PyUnstable_Object_GC_NewWithExtraData = Module["_PyUnstable_Object_GC_NewWithExtraData"] = wasmExports2["PyUnstable_Object_GC_NewWithExtraData"];\n _PyObject_GC_IsTracked = Module["_PyObject_GC_IsTracked"] = wasmExports2["PyObject_GC_IsTracked"];\n _PyObject_GC_IsFinalized = Module["_PyObject_GC_IsFinalized"] = wasmExports2["PyObject_GC_IsFinalized"];\n _PyUnstable_GC_VisitObjects = Module["_PyUnstable_GC_VisitObjects"] = wasmExports2["PyUnstable_GC_VisitObjects"];\n _PyInterpreterState_ThreadHead = Module["_PyInterpreterState_ThreadHead"] = wasmExports2["PyInterpreterState_ThreadHead"];\n _PyThreadState_Next = Module["_PyThreadState_Next"] = wasmExports2["PyThreadState_Next"];\n _PyArg_Parse = Module["_PyArg_Parse"] = wasmExports2["PyArg_Parse"];\n __PyArg_Parse_SizeT = Module["__PyArg_Parse_SizeT"] = wasmExports2["_PyArg_Parse_SizeT"];\n __PyArg_ParseTuple_SizeT = Module["__PyArg_ParseTuple_SizeT"] = wasmExports2["_PyArg_ParseTuple_SizeT"];\n _PyArg_VaParse = Module["_PyArg_VaParse"] = wasmExports2["PyArg_VaParse"];\n __PyArg_VaParse_SizeT = Module["__PyArg_VaParse_SizeT"] = wasmExports2["_PyArg_VaParse_SizeT"];\n __PyArg_ParseTupleAndKeywords_SizeT = Module["__PyArg_ParseTupleAndKeywords_SizeT"] = wasmExports2["_PyArg_ParseTupleAndKeywords_SizeT"];\n _PyArg_VaParseTupleAndKeywords = Module["_PyArg_VaParseTupleAndKeywords"] = wasmExports2["PyArg_VaParseTupleAndKeywords"];\n __PyArg_VaParseTupleAndKeywords_SizeT = Module["__PyArg_VaParseTupleAndKeywords_SizeT"] = wasmExports2["_PyArg_VaParseTupleAndKeywords_SizeT"];\n __PyArg_ParseTupleAndKeywordsFast = Module["__PyArg_ParseTupleAndKeywordsFast"] = wasmExports2["_PyArg_ParseTupleAndKeywordsFast"];\n _Py_GetCompiler = Module["_Py_GetCompiler"] = wasmExports2["Py_GetCompiler"];\n _Py_GetPlatform = Module["_Py_GetPlatform"] = wasmExports2["Py_GetPlatform"];\n _PyEval_ThreadsInitialized = Module["_PyEval_ThreadsInitialized"] = wasmExports2["PyEval_ThreadsInitialized"];\n _PyThread_init_thread = Module["_PyThread_init_thread"] = wasmExports2["PyThread_init_thread"];\n _pthread_cond_destroy = Module["_pthread_cond_destroy"] = wasmExports2["pthread_cond_destroy"];\n _pthread_mutex_destroy = Module["_pthread_mutex_destroy"] = wasmExports2["pthread_mutex_destroy"];\n _PyEval_InitThreads = Module["_PyEval_InitThreads"] = wasmExports2["PyEval_InitThreads"];\n _PyEval_AcquireLock = Module["_PyEval_AcquireLock"] = wasmExports2["PyEval_AcquireLock"];\n _pthread_mutex_lock = Module["_pthread_mutex_lock"] = wasmExports2["pthread_mutex_lock"];\n _pthread_cond_timedwait = Module["_pthread_cond_timedwait"] = wasmExports2["pthread_cond_timedwait"];\n _pthread_mutex_unlock = Module["_pthread_mutex_unlock"] = wasmExports2["pthread_mutex_unlock"];\n _pthread_cond_signal = Module["_pthread_cond_signal"] = wasmExports2["pthread_cond_signal"];\n _PyEval_ReleaseLock = Module["_PyEval_ReleaseLock"] = wasmExports2["PyEval_ReleaseLock"];\n _pthread_cond_wait = Module["_pthread_cond_wait"] = wasmExports2["pthread_cond_wait"];\n _PyEval_AcquireThread = Module["_PyEval_AcquireThread"] = wasmExports2["PyEval_AcquireThread"];\n _PyEval_ReleaseThread = Module["_PyEval_ReleaseThread"] = wasmExports2["PyEval_ReleaseThread"];\n _Py_AddPendingCall = Module["_Py_AddPendingCall"] = wasmExports2["Py_AddPendingCall"];\n __PyEval_MakePendingCalls = Module["__PyEval_MakePendingCalls"] = wasmExports2["_PyEval_MakePendingCalls"];\n _Py_MakePendingCalls = Module["_Py_MakePendingCalls"] = wasmExports2["Py_MakePendingCalls"];\n _pthread_mutex_init = Module["_pthread_mutex_init"] = wasmExports2["pthread_mutex_init"];\n __Py_hashtable_hash_ptr = Module["__Py_hashtable_hash_ptr"] = wasmExports2["_Py_hashtable_hash_ptr"];\n __Py_hashtable_compare_direct = Module["__Py_hashtable_compare_direct"] = wasmExports2["_Py_hashtable_compare_direct"];\n __Py_hashtable_size = Module["__Py_hashtable_size"] = wasmExports2["_Py_hashtable_size"];\n __Py_hashtable_steal = Module["__Py_hashtable_steal"] = wasmExports2["_Py_hashtable_steal"];\n __Py_hashtable_foreach = Module["__Py_hashtable_foreach"] = wasmExports2["_Py_hashtable_foreach"];\n __Py_hashtable_new = Module["__Py_hashtable_new"] = wasmExports2["_Py_hashtable_new"];\n __Py_hashtable_clear = Module["__Py_hashtable_clear"] = wasmExports2["_Py_hashtable_clear"];\n __PyRecursiveMutex_Unlock = Module["__PyRecursiveMutex_Unlock"] = wasmExports2["_PyRecursiveMutex_Unlock"];\n _PyThread_get_thread_ident_ex = Module["_PyThread_get_thread_ident_ex"] = wasmExports2["PyThread_get_thread_ident_ex"];\n _PyImport_AddModuleRef = Module["_PyImport_AddModuleRef"] = wasmExports2["PyImport_AddModuleRef"];\n _PyImport_AddModuleObject = Module["_PyImport_AddModuleObject"] = wasmExports2["PyImport_AddModuleObject"];\n _PyImport_AddModule = Module["_PyImport_AddModule"] = wasmExports2["PyImport_AddModule"];\n _PyState_FindModule = Module["_PyState_FindModule"] = wasmExports2["PyState_FindModule"];\n __PyState_AddModule = Module["__PyState_AddModule"] = wasmExports2["_PyState_AddModule"];\n _PyState_AddModule = Module["_PyState_AddModule"] = wasmExports2["PyState_AddModule"];\n _PyState_RemoveModule = Module["_PyState_RemoveModule"] = wasmExports2["PyState_RemoveModule"];\n __PyImport_ClearExtension = Module["__PyImport_ClearExtension"] = wasmExports2["_PyImport_ClearExtension"];\n _PyImport_ExtendInittab = Module["_PyImport_ExtendInittab"] = wasmExports2["PyImport_ExtendInittab"];\n _PyImport_GetMagicNumber = Module["_PyImport_GetMagicNumber"] = wasmExports2["PyImport_GetMagicNumber"];\n _PyImport_GetMagicTag = Module["_PyImport_GetMagicTag"] = wasmExports2["PyImport_GetMagicTag"];\n _PyImport_ExecCodeModule = Module["_PyImport_ExecCodeModule"] = wasmExports2["PyImport_ExecCodeModule"];\n _PyImport_ExecCodeModuleObject = Module["_PyImport_ExecCodeModuleObject"] = wasmExports2["PyImport_ExecCodeModuleObject"];\n _PyImport_ExecCodeModuleWithPathnames = Module["_PyImport_ExecCodeModuleWithPathnames"] = wasmExports2["PyImport_ExecCodeModuleWithPathnames"];\n _PyImport_ExecCodeModuleEx = Module["_PyImport_ExecCodeModuleEx"] = wasmExports2["PyImport_ExecCodeModuleEx"];\n _PyImport_ImportFrozenModuleObject = Module["_PyImport_ImportFrozenModuleObject"] = wasmExports2["PyImport_ImportFrozenModuleObject"];\n _PyImport_GetImporter = Module["_PyImport_GetImporter"] = wasmExports2["PyImport_GetImporter"];\n _PyImport_ImportModuleNoBlock = Module["_PyImport_ImportModuleNoBlock"] = wasmExports2["PyImport_ImportModuleNoBlock"];\n __PyTime_AsMicroseconds = Module["__PyTime_AsMicroseconds"] = wasmExports2["_PyTime_AsMicroseconds"];\n _PyImport_ReloadModule = Module["_PyImport_ReloadModule"] = wasmExports2["PyImport_ReloadModule"];\n _PyImport_ImportModuleAttr = Module["_PyImport_ImportModuleAttr"] = wasmExports2["PyImport_ImportModuleAttr"];\n _PyInit__imp = Module["_PyInit__imp"] = wasmExports2["PyInit__imp"];\n __PyRecursiveMutex_IsLockedByCurrentThread = Module["__PyRecursiveMutex_IsLockedByCurrentThread"] = wasmExports2["_PyRecursiveMutex_IsLockedByCurrentThread"];\n _PyModule_Add = Module["_PyModule_Add"] = wasmExports2["PyModule_Add"];\n _PyStatus_Exit = Module["_PyStatus_Exit"] = wasmExports2["PyStatus_Exit"];\n _PyStatus_IsError = Module["_PyStatus_IsError"] = wasmExports2["PyStatus_IsError"];\n _PyStatus_IsExit = Module["_PyStatus_IsExit"] = wasmExports2["PyStatus_IsExit"];\n _PyWideStringList_Insert = Module["_PyWideStringList_Insert"] = wasmExports2["PyWideStringList_Insert"];\n _PyWideStringList_Append = Module["_PyWideStringList_Append"] = wasmExports2["PyWideStringList_Append"];\n _Py_GetArgcArgv = Module["_Py_GetArgcArgv"] = wasmExports2["Py_GetArgcArgv"];\n __PyConfig_InitCompatConfig = Module["__PyConfig_InitCompatConfig"] = wasmExports2["_PyConfig_InitCompatConfig"];\n _PyConfig_InitIsolatedConfig = Module["_PyConfig_InitIsolatedConfig"] = wasmExports2["PyConfig_InitIsolatedConfig"];\n _PyConfig_SetString = Module["_PyConfig_SetString"] = wasmExports2["PyConfig_SetString"];\n _Py_DecodeLocale = Module["_Py_DecodeLocale"] = wasmExports2["Py_DecodeLocale"];\n __PyConfig_AsDict = Module["__PyConfig_AsDict"] = wasmExports2["_PyConfig_AsDict"];\n __PyConfig_FromDict = Module["__PyConfig_FromDict"] = wasmExports2["_PyConfig_FromDict"];\n _wcschr = Module["_wcschr"] = wasmExports2["wcschr"];\n _setvbuf = Module["_setvbuf"] = wasmExports2["setvbuf"];\n _PyConfig_SetArgv = Module["_PyConfig_SetArgv"] = wasmExports2["PyConfig_SetArgv"];\n _PyConfig_SetWideStringList = Module["_PyConfig_SetWideStringList"] = wasmExports2["PyConfig_SetWideStringList"];\n _putchar = Module["_putchar"] = wasmExports2["putchar"];\n _iprintf = Module["_iprintf"] = wasmExports2["iprintf"];\n _wcstok = Module["_wcstok"] = wasmExports2["wcstok"];\n _strtoul = Module["_strtoul"] = wasmExports2["strtoul"];\n _wcstol = Module["_wcstol"] = wasmExports2["wcstol"];\n _setlocale = Module["_setlocale"] = wasmExports2["setlocale"];\n _PyConfig_Read = Module["_PyConfig_Read"] = wasmExports2["PyConfig_Read"];\n __Py_GetConfigsAsDict = Module["__Py_GetConfigsAsDict"] = wasmExports2["_Py_GetConfigsAsDict"];\n _PyInitConfig_Create = Module["_PyInitConfig_Create"] = wasmExports2["PyInitConfig_Create"];\n _PyPreConfig_InitIsolatedConfig = Module["_PyPreConfig_InitIsolatedConfig"] = wasmExports2["PyPreConfig_InitIsolatedConfig"];\n _PyInitConfig_Free = Module["_PyInitConfig_Free"] = wasmExports2["PyInitConfig_Free"];\n _PyInitConfig_GetError = Module["_PyInitConfig_GetError"] = wasmExports2["PyInitConfig_GetError"];\n _strdup = Module["_strdup"] = wasmExports2["strdup"];\n _PyInitConfig_GetExitCode = Module["_PyInitConfig_GetExitCode"] = wasmExports2["PyInitConfig_GetExitCode"];\n _PyInitConfig_HasOption = Module["_PyInitConfig_HasOption"] = wasmExports2["PyInitConfig_HasOption"];\n _PyInitConfig_GetInt = Module["_PyInitConfig_GetInt"] = wasmExports2["PyInitConfig_GetInt"];\n _PyInitConfig_GetStr = Module["_PyInitConfig_GetStr"] = wasmExports2["PyInitConfig_GetStr"];\n _PyInitConfig_GetStrList = Module["_PyInitConfig_GetStrList"] = wasmExports2["PyInitConfig_GetStrList"];\n _PyInitConfig_FreeStrList = Module["_PyInitConfig_FreeStrList"] = wasmExports2["PyInitConfig_FreeStrList"];\n _PyInitConfig_SetInt = Module["_PyInitConfig_SetInt"] = wasmExports2["PyInitConfig_SetInt"];\n _PyInitConfig_SetStr = Module["_PyInitConfig_SetStr"] = wasmExports2["PyInitConfig_SetStr"];\n _PyInitConfig_SetStrList = Module["_PyInitConfig_SetStrList"] = wasmExports2["PyInitConfig_SetStrList"];\n _PyInitConfig_AddModule = Module["_PyInitConfig_AddModule"] = wasmExports2["PyInitConfig_AddModule"];\n _Py_InitializeFromInitConfig = Module["_Py_InitializeFromInitConfig"] = wasmExports2["Py_InitializeFromInitConfig"];\n _Py_PreInitializeFromArgs = Module["_Py_PreInitializeFromArgs"] = wasmExports2["Py_PreInitializeFromArgs"];\n _PyConfig_Get = Module["_PyConfig_Get"] = wasmExports2["PyConfig_Get"];\n _PyConfig_GetInt = Module["_PyConfig_GetInt"] = wasmExports2["PyConfig_GetInt"];\n _PyConfig_Names = Module["_PyConfig_Names"] = wasmExports2["PyConfig_Names"];\n _PyConfig_Set = Module["_PyConfig_Set"] = wasmExports2["PyConfig_Set"];\n _PySys_SetObject = Module["_PySys_SetObject"] = wasmExports2["PySys_SetObject"];\n __PyInterpreterConfig_AsDict = Module["__PyInterpreterConfig_AsDict"] = wasmExports2["_PyInterpreterConfig_AsDict"];\n __PyInterpreterConfig_InitFromDict = Module["__PyInterpreterConfig_InitFromDict"] = wasmExports2["_PyInterpreterConfig_InitFromDict"];\n __PyInterpreterConfig_UpdateFromDict = Module["__PyInterpreterConfig_UpdateFromDict"] = wasmExports2["_PyInterpreterConfig_UpdateFromDict"];\n __PyInterpreterConfig_InitFromState = Module["__PyInterpreterConfig_InitFromState"] = wasmExports2["_PyInterpreterConfig_InitFromState"];\n _PyMonitoring_EnterScope = Module["_PyMonitoring_EnterScope"] = wasmExports2["PyMonitoring_EnterScope"];\n _PyMonitoring_ExitScope = Module["_PyMonitoring_ExitScope"] = wasmExports2["PyMonitoring_ExitScope"];\n __PyMonitoring_FirePyStartEvent = Module["__PyMonitoring_FirePyStartEvent"] = wasmExports2["_PyMonitoring_FirePyStartEvent"];\n __PyMonitoring_FirePyResumeEvent = Module["__PyMonitoring_FirePyResumeEvent"] = wasmExports2["_PyMonitoring_FirePyResumeEvent"];\n __PyMonitoring_FirePyReturnEvent = Module["__PyMonitoring_FirePyReturnEvent"] = wasmExports2["_PyMonitoring_FirePyReturnEvent"];\n __PyMonitoring_FirePyYieldEvent = Module["__PyMonitoring_FirePyYieldEvent"] = wasmExports2["_PyMonitoring_FirePyYieldEvent"];\n __PyMonitoring_FireCallEvent = Module["__PyMonitoring_FireCallEvent"] = wasmExports2["_PyMonitoring_FireCallEvent"];\n __PyMonitoring_FireLineEvent = Module["__PyMonitoring_FireLineEvent"] = wasmExports2["_PyMonitoring_FireLineEvent"];\n __PyMonitoring_FireJumpEvent = Module["__PyMonitoring_FireJumpEvent"] = wasmExports2["_PyMonitoring_FireJumpEvent"];\n __PyMonitoring_FireBranchEvent = Module["__PyMonitoring_FireBranchEvent"] = wasmExports2["_PyMonitoring_FireBranchEvent"];\n __PyMonitoring_FireBranchRightEvent = Module["__PyMonitoring_FireBranchRightEvent"] = wasmExports2["_PyMonitoring_FireBranchRightEvent"];\n __PyMonitoring_FireBranchLeftEvent = Module["__PyMonitoring_FireBranchLeftEvent"] = wasmExports2["_PyMonitoring_FireBranchLeftEvent"];\n __PyMonitoring_FireCReturnEvent = Module["__PyMonitoring_FireCReturnEvent"] = wasmExports2["_PyMonitoring_FireCReturnEvent"];\n __PyMonitoring_FirePyThrowEvent = Module["__PyMonitoring_FirePyThrowEvent"] = wasmExports2["_PyMonitoring_FirePyThrowEvent"];\n __PyMonitoring_FireRaiseEvent = Module["__PyMonitoring_FireRaiseEvent"] = wasmExports2["_PyMonitoring_FireRaiseEvent"];\n __PyMonitoring_FireCRaiseEvent = Module["__PyMonitoring_FireCRaiseEvent"] = wasmExports2["_PyMonitoring_FireCRaiseEvent"];\n __PyMonitoring_FireReraiseEvent = Module["__PyMonitoring_FireReraiseEvent"] = wasmExports2["_PyMonitoring_FireReraiseEvent"];\n __PyMonitoring_FireExceptionHandledEvent = Module["__PyMonitoring_FireExceptionHandledEvent"] = wasmExports2["_PyMonitoring_FireExceptionHandledEvent"];\n __PyMonitoring_FirePyUnwindEvent = Module["__PyMonitoring_FirePyUnwindEvent"] = wasmExports2["_PyMonitoring_FirePyUnwindEvent"];\n __PyMonitoring_FireStopIterationEvent = Module["__PyMonitoring_FireStopIterationEvent"] = wasmExports2["_PyMonitoring_FireStopIterationEvent"];\n __PyCompile_GetUnaryIntrinsicName = Module["__PyCompile_GetUnaryIntrinsicName"] = wasmExports2["_PyCompile_GetUnaryIntrinsicName"];\n __PyCompile_GetBinaryIntrinsicName = Module["__PyCompile_GetBinaryIntrinsicName"] = wasmExports2["_PyCompile_GetBinaryIntrinsicName"];\n _PyTime_MonotonicRaw = Module["_PyTime_MonotonicRaw"] = wasmExports2["PyTime_MonotonicRaw"];\n __PyParkingLot_Park = Module["__PyParkingLot_Park"] = wasmExports2["_PyParkingLot_Park"];\n __PyDeadline_Get = Module["__PyDeadline_Get"] = wasmExports2["_PyDeadline_Get"];\n __PyParkingLot_Unpark = Module["__PyParkingLot_Unpark"] = wasmExports2["_PyParkingLot_Unpark"];\n __PySemaphore_Init = Module["__PySemaphore_Init"] = wasmExports2["_PySemaphore_Init"];\n __PySemaphore_Wait = Module["__PySemaphore_Wait"] = wasmExports2["_PySemaphore_Wait"];\n __PySemaphore_Destroy = Module["__PySemaphore_Destroy"] = wasmExports2["_PySemaphore_Destroy"];\n __PySemaphore_Wakeup = Module["__PySemaphore_Wakeup"] = wasmExports2["_PySemaphore_Wakeup"];\n __PyEvent_IsSet = Module["__PyEvent_IsSet"] = wasmExports2["_PyEvent_IsSet"];\n __PyEvent_Notify = Module["__PyEvent_Notify"] = wasmExports2["_PyEvent_Notify"];\n __PyParkingLot_UnparkAll = Module["__PyParkingLot_UnparkAll"] = wasmExports2["_PyParkingLot_UnparkAll"];\n _PyEvent_Wait = Module["_PyEvent_Wait"] = wasmExports2["PyEvent_Wait"];\n _PyEvent_WaitTimed = Module["_PyEvent_WaitTimed"] = wasmExports2["PyEvent_WaitTimed"];\n __PyRWMutex_RLock = Module["__PyRWMutex_RLock"] = wasmExports2["_PyRWMutex_RLock"];\n __PyRWMutex_RUnlock = Module["__PyRWMutex_RUnlock"] = wasmExports2["_PyRWMutex_RUnlock"];\n __PyRWMutex_Lock = Module["__PyRWMutex_Lock"] = wasmExports2["_PyRWMutex_Lock"];\n __PyRWMutex_Unlock = Module["__PyRWMutex_Unlock"] = wasmExports2["_PyRWMutex_Unlock"];\n __PySeqLock_LockWrite = Module["__PySeqLock_LockWrite"] = wasmExports2["_PySeqLock_LockWrite"];\n _sched_yield = Module["_sched_yield"] = wasmExports2["sched_yield"];\n __PySeqLock_AbandonWrite = Module["__PySeqLock_AbandonWrite"] = wasmExports2["_PySeqLock_AbandonWrite"];\n __PySeqLock_UnlockWrite = Module["__PySeqLock_UnlockWrite"] = wasmExports2["_PySeqLock_UnlockWrite"];\n __PySeqLock_BeginRead = Module["__PySeqLock_BeginRead"] = wasmExports2["_PySeqLock_BeginRead"];\n __PySeqLock_EndRead = Module["__PySeqLock_EndRead"] = wasmExports2["_PySeqLock_EndRead"];\n __PySeqLock_AfterFork = Module["__PySeqLock_AfterFork"] = wasmExports2["_PySeqLock_AfterFork"];\n _PyMutex_IsLocked = Module["_PyMutex_IsLocked"] = wasmExports2["PyMutex_IsLocked"];\n _PyMarshal_WriteLongToFile = Module["_PyMarshal_WriteLongToFile"] = wasmExports2["PyMarshal_WriteLongToFile"];\n _PyMarshal_WriteObjectToFile = Module["_PyMarshal_WriteObjectToFile"] = wasmExports2["PyMarshal_WriteObjectToFile"];\n _PyMarshal_ReadShortFromFile = Module["_PyMarshal_ReadShortFromFile"] = wasmExports2["PyMarshal_ReadShortFromFile"];\n _PyMarshal_ReadLongFromFile = Module["_PyMarshal_ReadLongFromFile"] = wasmExports2["PyMarshal_ReadLongFromFile"];\n _PyMarshal_ReadLastObjectFromFile = Module["_PyMarshal_ReadLastObjectFromFile"] = wasmExports2["PyMarshal_ReadLastObjectFromFile"];\n __Py_fstat_noraise = Module["__Py_fstat_noraise"] = wasmExports2["_Py_fstat_noraise"];\n _fread = Module["_fread"] = wasmExports2["fread"];\n _PyMarshal_ReadObjectFromFile = Module["_PyMarshal_ReadObjectFromFile"] = wasmExports2["PyMarshal_ReadObjectFromFile"];\n _PyMarshal_Init = Module["_PyMarshal_Init"] = wasmExports2["PyMarshal_Init"];\n __Py_convert_optional_to_ssize_t = Module["__Py_convert_optional_to_ssize_t"] = wasmExports2["_Py_convert_optional_to_ssize_t"];\n __Py_BuildValue_SizeT = Module["__Py_BuildValue_SizeT"] = wasmExports2["_Py_BuildValue_SizeT"];\n _Py_VaBuildValue = Module["_Py_VaBuildValue"] = wasmExports2["Py_VaBuildValue"];\n __Py_VaBuildValue_SizeT = Module["__Py_VaBuildValue_SizeT"] = wasmExports2["_Py_VaBuildValue_SizeT"];\n _PyModule_AddStringConstant = Module["_PyModule_AddStringConstant"] = wasmExports2["PyModule_AddStringConstant"];\n _Py_PACK_FULL_VERSION = Module["_Py_PACK_FULL_VERSION"] = wasmExports2["Py_PACK_FULL_VERSION"];\n _Py_PACK_VERSION = Module["_Py_PACK_VERSION"] = wasmExports2["Py_PACK_VERSION"];\n _PyOS_vsnprintf = Module["_PyOS_vsnprintf"] = wasmExports2["PyOS_vsnprintf"];\n _pthread_cond_init = Module["_pthread_cond_init"] = wasmExports2["pthread_cond_init"];\n _PyTime_TimeRaw = Module["_PyTime_TimeRaw"] = wasmExports2["PyTime_TimeRaw"];\n __PyTime_AsTimespec_clamp = Module["__PyTime_AsTimespec_clamp"] = wasmExports2["_PyTime_AsTimespec_clamp"];\n __PyParkingLot_AfterFork = Module["__PyParkingLot_AfterFork"] = wasmExports2["_PyParkingLot_AfterFork"];\n __PyPathConfig_ClearGlobal = Module["__PyPathConfig_ClearGlobal"] = wasmExports2["_PyPathConfig_ClearGlobal"];\n _wcscpy = Module["_wcscpy"] = wasmExports2["wcscpy"];\n _Py_SetPath = Module["_Py_SetPath"] = wasmExports2["Py_SetPath"];\n _Py_SetPythonHome = Module["_Py_SetPythonHome"] = wasmExports2["Py_SetPythonHome"];\n _Py_SetProgramName = Module["_Py_SetProgramName"] = wasmExports2["Py_SetProgramName"];\n _Py_GetPath = Module["_Py_GetPath"] = wasmExports2["Py_GetPath"];\n _Py_GetPrefix = Module["_Py_GetPrefix"] = wasmExports2["Py_GetPrefix"];\n _Py_GetExecPrefix = Module["_Py_GetExecPrefix"] = wasmExports2["Py_GetExecPrefix"];\n _Py_GetProgramFullPath = Module["_Py_GetProgramFullPath"] = wasmExports2["Py_GetProgramFullPath"];\n _Py_GetPythonHome = Module["_Py_GetPythonHome"] = wasmExports2["Py_GetPythonHome"];\n _Py_GetProgramName = Module["_Py_GetProgramName"] = wasmExports2["Py_GetProgramName"];\n _wcsncpy = Module["_wcsncpy"] = wasmExports2["wcsncpy"];\n _wcsncmp = Module["_wcsncmp"] = wasmExports2["wcsncmp"];\n __PyPreConfig_InitCompatConfig = Module["__PyPreConfig_InitCompatConfig"] = wasmExports2["_PyPreConfig_InitCompatConfig"];\n __Py_SetLocaleFromEnv = Module["__Py_SetLocaleFromEnv"] = wasmExports2["_Py_SetLocaleFromEnv"];\n _PyHash_GetFuncDef = Module["_PyHash_GetFuncDef"] = wasmExports2["PyHash_GetFuncDef"];\n _Py_IsFinalizing = Module["_Py_IsFinalizing"] = wasmExports2["Py_IsFinalizing"];\n _nl_langinfo = Module["_nl_langinfo"] = wasmExports2["nl_langinfo"];\n _setenv = Module["_setenv"] = wasmExports2["setenv"];\n _Py_PreInitialize = Module["_Py_PreInitialize"] = wasmExports2["Py_PreInitialize"];\n _Py_InitializeEx = Module["_Py_InitializeEx"] = wasmExports2["Py_InitializeEx"];\n _Py_FatalError = Module["_Py_FatalError"] = wasmExports2["Py_FatalError"];\n _Py_Initialize = Module["_Py_Initialize"] = wasmExports2["Py_Initialize"];\n __PyThreadState_New = Module["__PyThreadState_New"] = wasmExports2["_PyThreadState_New"];\n _Py_Finalize = Module["_Py_Finalize"] = wasmExports2["Py_Finalize"];\n __PyInterpreterState_New = Module["__PyInterpreterState_New"] = wasmExports2["_PyInterpreterState_New"];\n _Py_NewInterpreter = Module["_Py_NewInterpreter"] = wasmExports2["Py_NewInterpreter"];\n __Py_write_noraise = Module["__Py_write_noraise"] = wasmExports2["_Py_write_noraise"];\n _vfprintf = Module["_vfprintf"] = wasmExports2["vfprintf"];\n __Py_FatalRefcountErrorFunc = Module["__Py_FatalRefcountErrorFunc"] = wasmExports2["_Py_FatalRefcountErrorFunc"];\n _Py_AtExit = Module["_Py_AtExit"] = wasmExports2["Py_AtExit"];\n _Py_Exit = Module["_Py_Exit"] = wasmExports2["Py_Exit"];\n _Py_FdIsInteractive = Module["_Py_FdIsInteractive"] = wasmExports2["Py_FdIsInteractive"];\n _PyOS_getsig = Module["_PyOS_getsig"] = wasmExports2["PyOS_getsig"];\n _signal = Module["_signal"] = wasmExports2["signal"];\n _PyOS_setsig = Module["_PyOS_setsig"] = wasmExports2["PyOS_setsig"];\n _siginterrupt = Module["_siginterrupt"] = wasmExports2["siginterrupt"];\n __Py_IsValidFD = Module["__Py_IsValidFD"] = wasmExports2["_Py_IsValidFD"];\n _PyOS_mystrnicmp = Module["_PyOS_mystrnicmp"] = wasmExports2["PyOS_mystrnicmp"];\n __PyThreadState_GetCurrent = Module["__PyThreadState_GetCurrent"] = wasmExports2["_PyThreadState_GetCurrent"];\n _PyThread_tss_create = Module["_PyThread_tss_create"] = wasmExports2["PyThread_tss_create"];\n _PyThread_tss_is_created = Module["_PyThread_tss_is_created"] = wasmExports2["PyThread_tss_is_created"];\n _PyThread_tss_delete = Module["_PyThread_tss_delete"] = wasmExports2["PyThread_tss_delete"];\n _PyThread_get_thread_ident = Module["_PyThread_get_thread_ident"] = wasmExports2["PyThread_get_thread_ident"];\n _PyThread_tss_get = Module["_PyThread_tss_get"] = wasmExports2["PyThread_tss_get"];\n _PyThread_tss_set = Module["_PyThread_tss_set"] = wasmExports2["PyThread_tss_set"];\n _PyInterpreterState_New = Module["_PyInterpreterState_New"] = wasmExports2["PyInterpreterState_New"];\n _PyInterpreterState_Clear = Module["_PyInterpreterState_Clear"] = wasmExports2["PyInterpreterState_Clear"];\n __PyInterpreterState_GetWhence = Module["__PyInterpreterState_GetWhence"] = wasmExports2["_PyInterpreterState_GetWhence"];\n __PyInterpreterState_ObjectToID = Module["__PyInterpreterState_ObjectToID"] = wasmExports2["_PyInterpreterState_ObjectToID"];\n __PyInterpreterState_GetIDObject = Module["__PyInterpreterState_GetIDObject"] = wasmExports2["_PyInterpreterState_GetIDObject"];\n __PyInterpreterState_IDIncref = Module["__PyInterpreterState_IDIncref"] = wasmExports2["_PyInterpreterState_IDIncref"];\n __PyInterpreterState_IDDecref = Module["__PyInterpreterState_IDDecref"] = wasmExports2["_PyInterpreterState_IDDecref"];\n __PyInterpreterState_RequiresIDRef = Module["__PyInterpreterState_RequiresIDRef"] = wasmExports2["_PyInterpreterState_RequiresIDRef"];\n __PyInterpreterState_RequireIDRef = Module["__PyInterpreterState_RequireIDRef"] = wasmExports2["_PyInterpreterState_RequireIDRef"];\n __PyInterpreterState_LookUpIDObject = Module["__PyInterpreterState_LookUpIDObject"] = wasmExports2["_PyInterpreterState_LookUpIDObject"];\n __PyThreadState_Prealloc = Module["__PyThreadState_Prealloc"] = wasmExports2["_PyThreadState_Prealloc"];\n __PyThreadState_Init = Module["__PyThreadState_Init"] = wasmExports2["_PyThreadState_Init"];\n _PyThreadState_DeleteCurrent = Module["_PyThreadState_DeleteCurrent"] = wasmExports2["PyThreadState_DeleteCurrent"];\n __PyThreadState_GetDict = Module["__PyThreadState_GetDict"] = wasmExports2["_PyThreadState_GetDict"];\n _PyThreadState_GetID = Module["_PyThreadState_GetID"] = wasmExports2["PyThreadState_GetID"];\n _PyThreadState_SetAsyncExc = Module["_PyThreadState_SetAsyncExc"] = wasmExports2["PyThreadState_SetAsyncExc"];\n _PyThreadState_GetUnchecked = Module["_PyThreadState_GetUnchecked"] = wasmExports2["PyThreadState_GetUnchecked"];\n _PyInterpreterState_Head = Module["_PyInterpreterState_Head"] = wasmExports2["PyInterpreterState_Head"];\n _PyInterpreterState_Main = Module["_PyInterpreterState_Main"] = wasmExports2["PyInterpreterState_Main"];\n _PyInterpreterState_Next = Module["_PyInterpreterState_Next"] = wasmExports2["PyInterpreterState_Next"];\n __PyThread_CurrentFrames = Module["__PyThread_CurrentFrames"] = wasmExports2["_PyThread_CurrentFrames"];\n __PyInterpreterState_GetEvalFrameFunc = Module["__PyInterpreterState_GetEvalFrameFunc"] = wasmExports2["_PyInterpreterState_GetEvalFrameFunc"];\n __PyInterpreterState_SetEvalFrameFunc = Module["__PyInterpreterState_SetEvalFrameFunc"] = wasmExports2["_PyInterpreterState_SetEvalFrameFunc"];\n _rewind = Module["_rewind"] = wasmExports2["rewind"];\n _PyRun_InteractiveLoopFlags = Module["_PyRun_InteractiveLoopFlags"] = wasmExports2["PyRun_InteractiveLoopFlags"];\n _PyRun_InteractiveOneObject = Module["_PyRun_InteractiveOneObject"] = wasmExports2["PyRun_InteractiveOneObject"];\n _PyRun_InteractiveOneFlags = Module["_PyRun_InteractiveOneFlags"] = wasmExports2["PyRun_InteractiveOneFlags"];\n _PyRun_SimpleFileExFlags = Module["_PyRun_SimpleFileExFlags"] = wasmExports2["PyRun_SimpleFileExFlags"];\n _PyRun_SimpleStringFlags = Module["_PyRun_SimpleStringFlags"] = wasmExports2["PyRun_SimpleStringFlags"];\n _PyErr_Display = Module["_PyErr_Display"] = wasmExports2["PyErr_Display"];\n _PyRun_FileExFlags = Module["_PyRun_FileExFlags"] = wasmExports2["PyRun_FileExFlags"];\n _PyRun_AnyFile = Module["_PyRun_AnyFile"] = wasmExports2["PyRun_AnyFile"];\n _PyRun_AnyFileEx = Module["_PyRun_AnyFileEx"] = wasmExports2["PyRun_AnyFileEx"];\n _PyRun_AnyFileFlags = Module["_PyRun_AnyFileFlags"] = wasmExports2["PyRun_AnyFileFlags"];\n _PyRun_File = Module["_PyRun_File"] = wasmExports2["PyRun_File"];\n _PyRun_FileEx = Module["_PyRun_FileEx"] = wasmExports2["PyRun_FileEx"];\n _PyRun_FileFlags = Module["_PyRun_FileFlags"] = wasmExports2["PyRun_FileFlags"];\n _PyRun_SimpleFile = Module["_PyRun_SimpleFile"] = wasmExports2["PyRun_SimpleFile"];\n _PyRun_SimpleFileEx = Module["_PyRun_SimpleFileEx"] = wasmExports2["PyRun_SimpleFileEx"];\n _PyRun_String = Module["_PyRun_String"] = wasmExports2["PyRun_String"];\n _PyRun_SimpleString = Module["_PyRun_SimpleString"] = wasmExports2["PyRun_SimpleString"];\n _Py_CompileString = Module["_Py_CompileString"] = wasmExports2["Py_CompileString"];\n _Py_CompileStringFlags = Module["_Py_CompileStringFlags"] = wasmExports2["Py_CompileStringFlags"];\n _PyRun_InteractiveOne = Module["_PyRun_InteractiveOne"] = wasmExports2["PyRun_InteractiveOne"];\n _PyRun_InteractiveLoop = Module["_PyRun_InteractiveLoop"] = wasmExports2["PyRun_InteractiveLoop"];\n __PyLong_AsTime_t = Module["__PyLong_AsTime_t"] = wasmExports2["_PyLong_AsTime_t"];\n __PyLong_FromTime_t = Module["__PyLong_FromTime_t"] = wasmExports2["_PyLong_FromTime_t"];\n __PyTime_ObjectToTime_t = Module["__PyTime_ObjectToTime_t"] = wasmExports2["_PyTime_ObjectToTime_t"];\n __PyTime_ObjectToTimespec = Module["__PyTime_ObjectToTimespec"] = wasmExports2["_PyTime_ObjectToTimespec"];\n __PyTime_ObjectToTimeval = Module["__PyTime_ObjectToTimeval"] = wasmExports2["_PyTime_ObjectToTimeval"];\n __PyTime_FromSeconds = Module["__PyTime_FromSeconds"] = wasmExports2["_PyTime_FromSeconds"];\n __PyTime_FromLong = Module["__PyTime_FromLong"] = wasmExports2["_PyTime_FromLong"];\n __PyTime_FromSecondsObject = Module["__PyTime_FromSecondsObject"] = wasmExports2["_PyTime_FromSecondsObject"];\n __PyTime_FromMillisecondsObject = Module["__PyTime_FromMillisecondsObject"] = wasmExports2["_PyTime_FromMillisecondsObject"];\n __PyTime_AsLong = Module["__PyTime_AsLong"] = wasmExports2["_PyTime_AsLong"];\n __PyTime_AsMilliseconds = Module["__PyTime_AsMilliseconds"] = wasmExports2["_PyTime_AsMilliseconds"];\n __PyTime_AsTimeval = Module["__PyTime_AsTimeval"] = wasmExports2["_PyTime_AsTimeval"];\n __PyTime_AsTimeval_clamp = Module["__PyTime_AsTimeval_clamp"] = wasmExports2["_PyTime_AsTimeval_clamp"];\n __PyTime_AsTimevalTime_t = Module["__PyTime_AsTimevalTime_t"] = wasmExports2["_PyTime_AsTimevalTime_t"];\n __PyTime_AsTimespec = Module["__PyTime_AsTimespec"] = wasmExports2["_PyTime_AsTimespec"];\n _PyTime_Time = Module["_PyTime_Time"] = wasmExports2["PyTime_Time"];\n _clock_getres = Module["_clock_getres"] = wasmExports2["clock_getres"];\n _PyTime_Monotonic = Module["_PyTime_Monotonic"] = wasmExports2["PyTime_Monotonic"];\n __PyTime_MonotonicWithInfo = Module["__PyTime_MonotonicWithInfo"] = wasmExports2["_PyTime_MonotonicWithInfo"];\n _PyTime_PerfCounter = Module["_PyTime_PerfCounter"] = wasmExports2["PyTime_PerfCounter"];\n __PyTime_localtime = Module["__PyTime_localtime"] = wasmExports2["_PyTime_localtime"];\n _localtime_r = Module["_localtime_r"] = wasmExports2["localtime_r"];\n __PyTime_gmtime = Module["__PyTime_gmtime"] = wasmExports2["_PyTime_gmtime"];\n _gmtime_r = Module["_gmtime_r"] = wasmExports2["gmtime_r"];\n __PyDeadline_Init = Module["__PyDeadline_Init"] = wasmExports2["_PyDeadline_Init"];\n _getentropy = Module["_getentropy"] = wasmExports2["getentropy"];\n __Py_open = Module["__Py_open"] = wasmExports2["_Py_open"];\n _close = Module["_close"] = wasmExports2["close"];\n __Py_fstat = Module["__Py_fstat"] = wasmExports2["_Py_fstat"];\n __Py_open_noraise = Module["__Py_open_noraise"] = wasmExports2["_Py_open_noraise"];\n __PyOS_URandomNonblock = Module["__PyOS_URandomNonblock"] = wasmExports2["_PyOS_URandomNonblock"];\n _PySys_AuditTuple = Module["_PySys_AuditTuple"] = wasmExports2["PySys_AuditTuple"];\n _PySys_AddAuditHook = Module["_PySys_AddAuditHook"] = wasmExports2["PySys_AddAuditHook"];\n __PySys_GetSizeOf = Module["__PySys_GetSizeOf"] = wasmExports2["_PySys_GetSizeOf"];\n _PyUnstable_PerfMapState_Init = Module["_PyUnstable_PerfMapState_Init"] = wasmExports2["PyUnstable_PerfMapState_Init"];\n _getpid = Module["_getpid"] = wasmExports2["getpid"];\n _open = Module["_open"] = wasmExports2["open"];\n _fdopen = Module["_fdopen"] = wasmExports2["fdopen"];\n _PyThread_allocate_lock = Module["_PyThread_allocate_lock"] = wasmExports2["PyThread_allocate_lock"];\n _PyUnstable_WritePerfMapEntry = Module["_PyUnstable_WritePerfMapEntry"] = wasmExports2["PyUnstable_WritePerfMapEntry"];\n _PyThread_acquire_lock = Module["_PyThread_acquire_lock"] = wasmExports2["PyThread_acquire_lock"];\n _PyThread_release_lock = Module["_PyThread_release_lock"] = wasmExports2["PyThread_release_lock"];\n _PyUnstable_PerfMapState_Fini = Module["_PyUnstable_PerfMapState_Fini"] = wasmExports2["PyUnstable_PerfMapState_Fini"];\n _PyThread_free_lock = Module["_PyThread_free_lock"] = wasmExports2["PyThread_free_lock"];\n _PyUnstable_CopyPerfMapFile = Module["_PyUnstable_CopyPerfMapFile"] = wasmExports2["PyUnstable_CopyPerfMapFile"];\n _fopen = Module["_fopen"] = wasmExports2["fopen"];\n _PySys_ResetWarnOptions = Module["_PySys_ResetWarnOptions"] = wasmExports2["PySys_ResetWarnOptions"];\n _PySys_AddWarnOptionUnicode = Module["_PySys_AddWarnOptionUnicode"] = wasmExports2["PySys_AddWarnOptionUnicode"];\n _PySys_AddWarnOption = Module["_PySys_AddWarnOption"] = wasmExports2["PySys_AddWarnOption"];\n _PySys_HasWarnOptions = Module["_PySys_HasWarnOptions"] = wasmExports2["PySys_HasWarnOptions"];\n _PySys_AddXOption = Module["_PySys_AddXOption"] = wasmExports2["PySys_AddXOption"];\n _PySys_GetXOptions = Module["_PySys_GetXOptions"] = wasmExports2["PySys_GetXOptions"];\n _PyThread_GetInfo = Module["_PyThread_GetInfo"] = wasmExports2["PyThread_GetInfo"];\n _PySys_SetPath = Module["_PySys_SetPath"] = wasmExports2["PySys_SetPath"];\n _PySys_SetArgvEx = Module["_PySys_SetArgvEx"] = wasmExports2["PySys_SetArgvEx"];\n _PySys_SetArgv = Module["_PySys_SetArgv"] = wasmExports2["PySys_SetArgv"];\n _PySys_WriteStdout = Module["_PySys_WriteStdout"] = wasmExports2["PySys_WriteStdout"];\n _PySys_FormatStdout = Module["_PySys_FormatStdout"] = wasmExports2["PySys_FormatStdout"];\n _access = Module["_access"] = wasmExports2["access"];\n _pthread_condattr_init = Module["_pthread_condattr_init"] = wasmExports2["pthread_condattr_init"];\n _pthread_condattr_setclock = Module["_pthread_condattr_setclock"] = wasmExports2["pthread_condattr_setclock"];\n _PyThread_start_joinable_thread = Module["_PyThread_start_joinable_thread"] = wasmExports2["PyThread_start_joinable_thread"];\n _pthread_attr_init = Module["_pthread_attr_init"] = wasmExports2["pthread_attr_init"];\n _pthread_attr_setstacksize = Module["_pthread_attr_setstacksize"] = wasmExports2["pthread_attr_setstacksize"];\n _pthread_attr_destroy = Module["_pthread_attr_destroy"] = wasmExports2["pthread_attr_destroy"];\n _pthread_create = Module["_pthread_create"] = wasmExports2["pthread_create"];\n _PyThread_start_new_thread = Module["_PyThread_start_new_thread"] = wasmExports2["PyThread_start_new_thread"];\n _pthread_detach = Module["_pthread_detach"] = wasmExports2["pthread_detach"];\n _PyThread_join_thread = Module["_PyThread_join_thread"] = wasmExports2["PyThread_join_thread"];\n _pthread_join = Module["_pthread_join"] = wasmExports2["pthread_join"];\n _PyThread_detach_thread = Module["_PyThread_detach_thread"] = wasmExports2["PyThread_detach_thread"];\n _pthread_self = Module["_pthread_self"] = wasmExports2["pthread_self"];\n _PyThread_exit_thread = Module["_PyThread_exit_thread"] = wasmExports2["PyThread_exit_thread"];\n _PyThread_acquire_lock_timed = Module["_PyThread_acquire_lock_timed"] = wasmExports2["PyThread_acquire_lock_timed"];\n _pthread_mutex_trylock = Module["_pthread_mutex_trylock"] = wasmExports2["pthread_mutex_trylock"];\n _PyThread_create_key = Module["_PyThread_create_key"] = wasmExports2["PyThread_create_key"];\n _pthread_key_create = Module["_pthread_key_create"] = wasmExports2["pthread_key_create"];\n _pthread_key_delete = Module["_pthread_key_delete"] = wasmExports2["pthread_key_delete"];\n _PyThread_delete_key = Module["_PyThread_delete_key"] = wasmExports2["PyThread_delete_key"];\n _PyThread_delete_key_value = Module["_PyThread_delete_key_value"] = wasmExports2["PyThread_delete_key_value"];\n _pthread_setspecific = Module["_pthread_setspecific"] = wasmExports2["pthread_setspecific"];\n _PyThread_set_key_value = Module["_PyThread_set_key_value"] = wasmExports2["PyThread_set_key_value"];\n _PyThread_get_key_value = Module["_PyThread_get_key_value"] = wasmExports2["PyThread_get_key_value"];\n _pthread_getspecific = Module["_pthread_getspecific"] = wasmExports2["pthread_getspecific"];\n _PyThread_ReInitTLS = Module["_PyThread_ReInitTLS"] = wasmExports2["PyThread_ReInitTLS"];\n _PyThread_get_stacksize = Module["_PyThread_get_stacksize"] = wasmExports2["PyThread_get_stacksize"];\n _PyThread_set_stacksize = Module["_PyThread_set_stacksize"] = wasmExports2["PyThread_set_stacksize"];\n _PyThread_ParseTimeoutArg = Module["_PyThread_ParseTimeoutArg"] = wasmExports2["PyThread_ParseTimeoutArg"];\n _PyThread_acquire_lock_timed_with_retries = Module["_PyThread_acquire_lock_timed_with_retries"] = wasmExports2["PyThread_acquire_lock_timed_with_retries"];\n _PyThread_tss_alloc = Module["_PyThread_tss_alloc"] = wasmExports2["PyThread_tss_alloc"];\n _PyThread_tss_free = Module["_PyThread_tss_free"] = wasmExports2["PyThread_tss_free"];\n _confstr = Module["_confstr"] = wasmExports2["confstr"];\n __PyTraceback_Add = Module["__PyTraceback_Add"] = wasmExports2["_PyTraceback_Add"];\n __Py_DumpStack = Module["__Py_DumpStack"] = wasmExports2["_Py_DumpStack"];\n __Py_InitDumpStack = Module["__Py_InitDumpStack"] = wasmExports2["_Py_InitDumpStack"];\n _PyTraceMalloc_Track = Module["_PyTraceMalloc_Track"] = wasmExports2["PyTraceMalloc_Track"];\n _PyTraceMalloc_Untrack = Module["_PyTraceMalloc_Untrack"] = wasmExports2["PyTraceMalloc_Untrack"];\n __PyTraceMalloc_GetTraceback = Module["__PyTraceMalloc_GetTraceback"] = wasmExports2["_PyTraceMalloc_GetTraceback"];\n _PyOS_mystricmp = Module["_PyOS_mystricmp"] = wasmExports2["PyOS_mystricmp"];\n __Py_strhex = Module["__Py_strhex"] = wasmExports2["_Py_strhex"];\n __Py_strhex_bytes_with_sep = Module["__Py_strhex_bytes_with_sep"] = wasmExports2["_Py_strhex_bytes_with_sep"];\n _localeconv = Module["_localeconv"] = wasmExports2["localeconv"];\n _mbstowcs = Module["_mbstowcs"] = wasmExports2["mbstowcs"];\n _mbrtowc = Module["_mbrtowc"] = wasmExports2["mbrtowc"];\n _Py_EncodeLocale = Module["_Py_EncodeLocale"] = wasmExports2["Py_EncodeLocale"];\n _fstat = Module["_fstat"] = wasmExports2["fstat"];\n _stat = Module["_stat"] = wasmExports2["stat"];\n __Py_stat = Module["__Py_stat"] = wasmExports2["_Py_stat"];\n _fcntl = Module["_fcntl"] = wasmExports2["fcntl"];\n __Py_set_inheritable = Module["__Py_set_inheritable"] = wasmExports2["_Py_set_inheritable"];\n _ioctl = Module["_ioctl"] = wasmExports2["ioctl"];\n __Py_set_inheritable_async_safe = Module["__Py_set_inheritable_async_safe"] = wasmExports2["_Py_set_inheritable_async_safe"];\n _wcstombs = Module["_wcstombs"] = wasmExports2["wcstombs"];\n _Py_fclose = Module["_Py_fclose"] = wasmExports2["Py_fclose"];\n _write = Module["_write"] = wasmExports2["write"];\n _readlink = Module["_readlink"] = wasmExports2["readlink"];\n _realpath = Module["_realpath"] = wasmExports2["realpath"];\n _getcwd = Module["_getcwd"] = wasmExports2["getcwd"];\n __Py_normpath = Module["__Py_normpath"] = wasmExports2["_Py_normpath"];\n __Py_dup = Module["__Py_dup"] = wasmExports2["_Py_dup"];\n __Py_closerange = Module["__Py_closerange"] = wasmExports2["_Py_closerange"];\n _sysconf = Module["_sysconf"] = wasmExports2["sysconf"];\n __Py_UTF8_Edit_Cost = Module["__Py_UTF8_Edit_Cost"] = wasmExports2["_Py_UTF8_Edit_Cost"];\n _PyUnstable_PerfTrampoline_CompileCode = Module["_PyUnstable_PerfTrampoline_CompileCode"] = wasmExports2["PyUnstable_PerfTrampoline_CompileCode"];\n _PyUnstable_PerfTrampoline_SetPersistAfterFork = Module["_PyUnstable_PerfTrampoline_SetPersistAfterFork"] = wasmExports2["PyUnstable_PerfTrampoline_SetPersistAfterFork"];\n _dlopen = Module["_dlopen"] = wasmExports2["dlopen"];\n _dlerror = Module["_dlerror"] = wasmExports2["dlerror"];\n _dlsym = Module["_dlsym"] = wasmExports2["dlsym"];\n _PyErr_SetInterruptEx = Module["_PyErr_SetInterruptEx"] = wasmExports2["PyErr_SetInterruptEx"];\n _PyInit__ctypes = Module["_PyInit__ctypes"] = wasmExports2["PyInit__ctypes"];\n _PyInit__posixsubprocess = Module["_PyInit__posixsubprocess"] = wasmExports2["PyInit__posixsubprocess"];\n _PyInit__bz2 = Module["_PyInit__bz2"] = wasmExports2["PyInit__bz2"];\n _PyInit_zlib = Module["_PyInit_zlib"] = wasmExports2["PyInit_zlib"];\n _PyInit__hmac = Module["_PyInit__hmac"] = wasmExports2["PyInit__hmac"];\n _PyInit__sqlite3 = Module["_PyInit__sqlite3"] = wasmExports2["PyInit__sqlite3"];\n _PyInit__lzma = Module["_PyInit__lzma"] = wasmExports2["PyInit__lzma"];\n _PyInit__zstd = Module["_PyInit__zstd"] = wasmExports2["PyInit__zstd"];\n _PyInit_array = Module["_PyInit_array"] = wasmExports2["PyInit_array"];\n _PyInit__asyncio = Module["_PyInit__asyncio"] = wasmExports2["PyInit__asyncio"];\n _PyInit__bisect = Module["_PyInit__bisect"] = wasmExports2["PyInit__bisect"];\n _PyInit__csv = Module["_PyInit__csv"] = wasmExports2["PyInit__csv"];\n _PyInit__heapq = Module["_PyInit__heapq"] = wasmExports2["PyInit__heapq"];\n _PyInit__json = Module["_PyInit__json"] = wasmExports2["PyInit__json"];\n _PyInit__lsprof = Module["_PyInit__lsprof"] = wasmExports2["PyInit__lsprof"];\n _PyInit__pickle = Module["_PyInit__pickle"] = wasmExports2["PyInit__pickle"];\n _PyInit__queue = Module["_PyInit__queue"] = wasmExports2["PyInit__queue"];\n _PyInit__random = Module["_PyInit__random"] = wasmExports2["PyInit__random"];\n _PyInit__remote_debugging = Module["_PyInit__remote_debugging"] = wasmExports2["PyInit__remote_debugging"];\n _PyInit__struct = Module["_PyInit__struct"] = wasmExports2["PyInit__struct"];\n _PyInit__zoneinfo = Module["_PyInit__zoneinfo"] = wasmExports2["PyInit__zoneinfo"];\n _PyInit_math = Module["_PyInit_math"] = wasmExports2["PyInit_math"];\n _PyInit_cmath = Module["_PyInit_cmath"] = wasmExports2["PyInit_cmath"];\n _PyInit__statistics = Module["_PyInit__statistics"] = wasmExports2["PyInit__statistics"];\n _PyInit__decimal = Module["_PyInit__decimal"] = wasmExports2["PyInit__decimal"];\n _PyInit_binascii = Module["_PyInit_binascii"] = wasmExports2["PyInit_binascii"];\n _PyInit__md5 = Module["_PyInit__md5"] = wasmExports2["PyInit__md5"];\n _PyInit__sha1 = Module["_PyInit__sha1"] = wasmExports2["PyInit__sha1"];\n _PyInit__sha2 = Module["_PyInit__sha2"] = wasmExports2["PyInit__sha2"];\n _PyInit__sha3 = Module["_PyInit__sha3"] = wasmExports2["PyInit__sha3"];\n _PyInit__blake2 = Module["_PyInit__blake2"] = wasmExports2["PyInit__blake2"];\n _PyInit_pyexpat = Module["_PyInit_pyexpat"] = wasmExports2["PyInit_pyexpat"];\n _PyInit__elementtree = Module["_PyInit__elementtree"] = wasmExports2["PyInit__elementtree"];\n _PyInit__codecs_cn = Module["_PyInit__codecs_cn"] = wasmExports2["PyInit__codecs_cn"];\n _PyInit__codecs_hk = Module["_PyInit__codecs_hk"] = wasmExports2["PyInit__codecs_hk"];\n _PyInit__codecs_iso2022 = Module["_PyInit__codecs_iso2022"] = wasmExports2["PyInit__codecs_iso2022"];\n _PyInit__codecs_jp = Module["_PyInit__codecs_jp"] = wasmExports2["PyInit__codecs_jp"];\n _PyInit__codecs_kr = Module["_PyInit__codecs_kr"] = wasmExports2["PyInit__codecs_kr"];\n _PyInit__codecs_tw = Module["_PyInit__codecs_tw"] = wasmExports2["PyInit__codecs_tw"];\n _PyInit__multibytecodec = Module["_PyInit__multibytecodec"] = wasmExports2["PyInit__multibytecodec"];\n _PyInit_unicodedata = Module["_PyInit_unicodedata"] = wasmExports2["PyInit_unicodedata"];\n _PyInit_fcntl = Module["_PyInit_fcntl"] = wasmExports2["PyInit_fcntl"];\n _PyInit_mmap = Module["_PyInit_mmap"] = wasmExports2["PyInit_mmap"];\n _PyInit_select = Module["_PyInit_select"] = wasmExports2["PyInit_select"];\n _PyInit__socket = Module["_PyInit__socket"] = wasmExports2["PyInit__socket"];\n _PyInit_termios = Module["_PyInit_termios"] = wasmExports2["PyInit_termios"];\n _PyInit_xxsubtype = Module["_PyInit_xxsubtype"] = wasmExports2["PyInit_xxsubtype"];\n _PyInit__xxtestfuzz = Module["_PyInit__xxtestfuzz"] = wasmExports2["PyInit__xxtestfuzz"];\n _PyInit__testbuffer = Module["_PyInit__testbuffer"] = wasmExports2["PyInit__testbuffer"];\n _PyInit__testinternalcapi = Module["_PyInit__testinternalcapi"] = wasmExports2["PyInit__testinternalcapi"];\n _PyInit__testcapi = Module["_PyInit__testcapi"] = wasmExports2["PyInit__testcapi"];\n _PyInit__testlimitedcapi = Module["_PyInit__testlimitedcapi"] = wasmExports2["PyInit__testlimitedcapi"];\n _PyInit__testclinic = Module["_PyInit__testclinic"] = wasmExports2["PyInit__testclinic"];\n _PyInit__testclinic_limited = Module["_PyInit__testclinic_limited"] = wasmExports2["PyInit__testclinic_limited"];\n _PyInit_atexit = Module["_PyInit_atexit"] = wasmExports2["PyInit_atexit"];\n _PyInit_faulthandler = Module["_PyInit_faulthandler"] = wasmExports2["PyInit_faulthandler"];\n _PyInit_posix = Module["_PyInit_posix"] = wasmExports2["PyInit_posix"];\n _PyInit__signal = Module["_PyInit__signal"] = wasmExports2["PyInit__signal"];\n _PyInit__tracemalloc = Module["_PyInit__tracemalloc"] = wasmExports2["PyInit__tracemalloc"];\n _PyInit__suggestions = Module["_PyInit__suggestions"] = wasmExports2["PyInit__suggestions"];\n _PyInit__datetime = Module["_PyInit__datetime"] = wasmExports2["PyInit__datetime"];\n _PyInit__codecs = Module["_PyInit__codecs"] = wasmExports2["PyInit__codecs"];\n _PyInit__collections = Module["_PyInit__collections"] = wasmExports2["PyInit__collections"];\n _PyInit_errno = Module["_PyInit_errno"] = wasmExports2["PyInit_errno"];\n _PyInit__io = Module["_PyInit__io"] = wasmExports2["PyInit__io"];\n _PyInit_itertools = Module["_PyInit_itertools"] = wasmExports2["PyInit_itertools"];\n _PyInit__sre = Module["_PyInit__sre"] = wasmExports2["PyInit__sre"];\n _PyInit__sysconfig = Module["_PyInit__sysconfig"] = wasmExports2["PyInit__sysconfig"];\n _PyInit__thread = Module["_PyInit__thread"] = wasmExports2["PyInit__thread"];\n _PyInit_time = Module["_PyInit_time"] = wasmExports2["PyInit_time"];\n _PyInit__types = Module["_PyInit__types"] = wasmExports2["PyInit__types"];\n _PyInit__typing = Module["_PyInit__typing"] = wasmExports2["PyInit__typing"];\n _PyInit__weakref = Module["_PyInit__weakref"] = wasmExports2["PyInit__weakref"];\n _PyInit__abc = Module["_PyInit__abc"] = wasmExports2["PyInit__abc"];\n _PyInit__functools = Module["_PyInit__functools"] = wasmExports2["PyInit__functools"];\n _PyInit__locale = Module["_PyInit__locale"] = wasmExports2["PyInit__locale"];\n _PyInit__opcode = Module["_PyInit__opcode"] = wasmExports2["PyInit__opcode"];\n _PyInit__operator = Module["_PyInit__operator"] = wasmExports2["PyInit__operator"];\n _PyInit__stat = Module["_PyInit__stat"] = wasmExports2["PyInit__stat"];\n _PyInit__symtable = Module["_PyInit__symtable"] = wasmExports2["PyInit__symtable"];\n _PyInit_gc = Module["_PyInit_gc"] = wasmExports2["PyInit_gc"];\n _Py_RunMain = Module["_Py_RunMain"] = wasmExports2["Py_RunMain"];\n _perror = Module["_perror"] = wasmExports2["perror"];\n _kill = Module["_kill"] = wasmExports2["kill"];\n _Py_Main = Module["_Py_Main"] = wasmExports2["Py_Main"];\n _Py_BytesMain = Module["_Py_BytesMain"] = wasmExports2["Py_BytesMain"];\n _ffi_closure_alloc = Module["_ffi_closure_alloc"] = wasmExports2["ffi_closure_alloc"];\n _ffi_closure_free = Module["_ffi_closure_free"] = wasmExports2["ffi_closure_free"];\n _memmove = Module["_memmove"] = wasmExports2["memmove"];\n _memset = Module["_memset"] = wasmExports2["memset"];\n _strcat = Module["_strcat"] = wasmExports2["strcat"];\n _ffi_prep_cif = Module["_ffi_prep_cif"] = wasmExports2["ffi_prep_cif"];\n _ffi_prep_closure_loc = Module["_ffi_prep_closure_loc"] = wasmExports2["ffi_prep_closure_loc"];\n _ffi_prep_cif_var = Module["_ffi_prep_cif_var"] = wasmExports2["ffi_prep_cif_var"];\n _ffi_call = Module["_ffi_call"] = wasmExports2["ffi_call"];\n _dlclose = Module["_dlclose"] = wasmExports2["dlclose"];\n ___extenddftf2 = Module["___extenddftf2"] = wasmExports2["__extenddftf2"];\n ___trunctfdf2 = Module["___trunctfdf2"] = wasmExports2["__trunctfdf2"];\n __Py_Gid_Converter = Module["__Py_Gid_Converter"] = wasmExports2["_Py_Gid_Converter"];\n __Py_Uid_Converter = Module["__Py_Uid_Converter"] = wasmExports2["_Py_Uid_Converter"];\n _PyOS_BeforeFork = Module["_PyOS_BeforeFork"] = wasmExports2["PyOS_BeforeFork"];\n _PyOS_AfterFork_Parent = Module["_PyOS_AfterFork_Parent"] = wasmExports2["PyOS_AfterFork_Parent"];\n _fork = Module["_fork"] = wasmExports2["fork"];\n _PyOS_AfterFork_Child = Module["_PyOS_AfterFork_Child"] = wasmExports2["PyOS_AfterFork_Child"];\n __exit = Module["__exit"] = wasmExports2["_exit"];\n _dup = Module["_dup"] = wasmExports2["dup"];\n _dup2 = Module["_dup2"] = wasmExports2["dup2"];\n _chdir = Module["_chdir"] = wasmExports2["chdir"];\n _umask = Module["_umask"] = wasmExports2["umask"];\n __Py_RestoreSignals = Module["__Py_RestoreSignals"] = wasmExports2["_Py_RestoreSignals"];\n _setsid = Module["_setsid"] = wasmExports2["setsid"];\n _setpgid = Module["_setpgid"] = wasmExports2["setpgid"];\n _setregid = Module["_setregid"] = wasmExports2["setregid"];\n _setreuid = Module["_setreuid"] = wasmExports2["setreuid"];\n _execve = Module["_execve"] = wasmExports2["execve"];\n _execv = Module["_execv"] = wasmExports2["execv"];\n _opendir = Module["_opendir"] = wasmExports2["opendir"];\n _dirfd = Module["_dirfd"] = wasmExports2["dirfd"];\n _readdir = Module["_readdir"] = wasmExports2["readdir"];\n _closedir = Module["_closedir"] = wasmExports2["closedir"];\n _BZ2_bzCompressEnd = Module["_BZ2_bzCompressEnd"] = wasmExports2["BZ2_bzCompressEnd"];\n _BZ2_bzCompressInit = Module["_BZ2_bzCompressInit"] = wasmExports2["BZ2_bzCompressInit"];\n _BZ2_bzCompress = Module["_BZ2_bzCompress"] = wasmExports2["BZ2_bzCompress"];\n _BZ2_bzDecompressEnd = Module["_BZ2_bzDecompressEnd"] = wasmExports2["BZ2_bzDecompressEnd"];\n _BZ2_bzDecompressInit = Module["_BZ2_bzDecompressInit"] = wasmExports2["BZ2_bzDecompressInit"];\n _BZ2_bzDecompress = Module["_BZ2_bzDecompress"] = wasmExports2["BZ2_bzDecompress"];\n _adler32 = Module["_adler32"] = wasmExports2["adler32"];\n _deflateInit2_ = Module["_deflateInit2_"] = wasmExports2["deflateInit2_"];\n _deflateEnd = Module["_deflateEnd"] = wasmExports2["deflateEnd"];\n _deflate = Module["_deflate"] = wasmExports2["deflate"];\n _deflateSetDictionary = Module["_deflateSetDictionary"] = wasmExports2["deflateSetDictionary"];\n _crc32 = Module["_crc32"] = wasmExports2["crc32"];\n _inflateInit2_ = Module["_inflateInit2_"] = wasmExports2["inflateInit2_"];\n _inflateEnd = Module["_inflateEnd"] = wasmExports2["inflateEnd"];\n _inflate = Module["_inflate"] = wasmExports2["inflate"];\n _inflateSetDictionary = Module["_inflateSetDictionary"] = wasmExports2["inflateSetDictionary"];\n _zlibVersion = Module["_zlibVersion"] = wasmExports2["zlibVersion"];\n _deflateCopy = Module["_deflateCopy"] = wasmExports2["deflateCopy"];\n _inflateCopy = Module["_inflateCopy"] = wasmExports2["inflateCopy"];\n _sqlite3_blob_close = Module["_sqlite3_blob_close"] = wasmExports2["sqlite3_blob_close"];\n _sqlite3_blob_bytes = Module["_sqlite3_blob_bytes"] = wasmExports2["sqlite3_blob_bytes"];\n _sqlite3_blob_read = Module["_sqlite3_blob_read"] = wasmExports2["sqlite3_blob_read"];\n _sqlite3_blob_write = Module["_sqlite3_blob_write"] = wasmExports2["sqlite3_blob_write"];\n _sqlite3_trace_v2 = Module["_sqlite3_trace_v2"] = wasmExports2["sqlite3_trace_v2"];\n _sqlite3_progress_handler = Module["_sqlite3_progress_handler"] = wasmExports2["sqlite3_progress_handler"];\n _sqlite3_set_authorizer = Module["_sqlite3_set_authorizer"] = wasmExports2["sqlite3_set_authorizer"];\n _sqlite3_open_v2 = Module["_sqlite3_open_v2"] = wasmExports2["sqlite3_open_v2"];\n _sqlite3_busy_timeout = Module["_sqlite3_busy_timeout"] = wasmExports2["sqlite3_busy_timeout"];\n _sqlite3_close = Module["_sqlite3_close"] = wasmExports2["sqlite3_close"];\n _sqlite3_get_autocommit = Module["_sqlite3_get_autocommit"] = wasmExports2["sqlite3_get_autocommit"];\n _sqlite3_prepare_v2 = Module["_sqlite3_prepare_v2"] = wasmExports2["sqlite3_prepare_v2"];\n _sqlite3_step = Module["_sqlite3_step"] = wasmExports2["sqlite3_step"];\n _sqlite3_finalize = Module["_sqlite3_finalize"] = wasmExports2["sqlite3_finalize"];\n _sqlite3_close_v2 = Module["_sqlite3_close_v2"] = wasmExports2["sqlite3_close_v2"];\n _sqlite3_backup_init = Module["_sqlite3_backup_init"] = wasmExports2["sqlite3_backup_init"];\n _sqlite3_backup_step = Module["_sqlite3_backup_step"] = wasmExports2["sqlite3_backup_step"];\n _sqlite3_backup_remaining = Module["_sqlite3_backup_remaining"] = wasmExports2["sqlite3_backup_remaining"];\n _sqlite3_backup_pagecount = Module["_sqlite3_backup_pagecount"] = wasmExports2["sqlite3_backup_pagecount"];\n _sqlite3_sleep = Module["_sqlite3_sleep"] = wasmExports2["sqlite3_sleep"];\n _sqlite3_backup_finish = Module["_sqlite3_backup_finish"] = wasmExports2["sqlite3_backup_finish"];\n _sqlite3_limit = Module["_sqlite3_limit"] = wasmExports2["sqlite3_limit"];\n _sqlite3_create_function_v2 = Module["_sqlite3_create_function_v2"] = wasmExports2["sqlite3_create_function_v2"];\n _sqlite3_create_collation_v2 = Module["_sqlite3_create_collation_v2"] = wasmExports2["sqlite3_create_collation_v2"];\n _sqlite3_interrupt = Module["_sqlite3_interrupt"] = wasmExports2["sqlite3_interrupt"];\n _sqlite3_serialize = Module["_sqlite3_serialize"] = wasmExports2["sqlite3_serialize"];\n _sqlite3_free = Module["_sqlite3_free"] = wasmExports2["sqlite3_free"];\n _sqlite3_malloc64 = Module["_sqlite3_malloc64"] = wasmExports2["sqlite3_malloc64"];\n _sqlite3_deserialize = Module["_sqlite3_deserialize"] = wasmExports2["sqlite3_deserialize"];\n _sqlite3_libversion_number = Module["_sqlite3_libversion_number"] = wasmExports2["sqlite3_libversion_number"];\n _sqlite3_create_window_function = Module["_sqlite3_create_window_function"] = wasmExports2["sqlite3_create_window_function"];\n _sqlite3_db_config = Module["_sqlite3_db_config"] = wasmExports2["sqlite3_db_config"];\n _sqlite3_user_data = Module["_sqlite3_user_data"] = wasmExports2["sqlite3_user_data"];\n _sqlite3_aggregate_context = Module["_sqlite3_aggregate_context"] = wasmExports2["sqlite3_aggregate_context"];\n _sqlite3_result_error_nomem = Module["_sqlite3_result_error_nomem"] = wasmExports2["sqlite3_result_error_nomem"];\n _sqlite3_result_error_toobig = Module["_sqlite3_result_error_toobig"] = wasmExports2["sqlite3_result_error_toobig"];\n _sqlite3_result_error = Module["_sqlite3_result_error"] = wasmExports2["sqlite3_result_error"];\n _sqlite3_value_type = Module["_sqlite3_value_type"] = wasmExports2["sqlite3_value_type"];\n _sqlite3_value_double = Module["_sqlite3_value_double"] = wasmExports2["sqlite3_value_double"];\n _sqlite3_context_db_handle = Module["_sqlite3_context_db_handle"] = wasmExports2["sqlite3_context_db_handle"];\n _sqlite3_value_text = Module["_sqlite3_value_text"] = wasmExports2["sqlite3_value_text"];\n _sqlite3_errcode = Module["_sqlite3_errcode"] = wasmExports2["sqlite3_errcode"];\n _sqlite3_value_bytes = Module["_sqlite3_value_bytes"] = wasmExports2["sqlite3_value_bytes"];\n _sqlite3_value_blob = Module["_sqlite3_value_blob"] = wasmExports2["sqlite3_value_blob"];\n _sqlite3_value_int64 = Module["_sqlite3_value_int64"] = wasmExports2["sqlite3_value_int64"];\n _sqlite3_result_null = Module["_sqlite3_result_null"] = wasmExports2["sqlite3_result_null"];\n _sqlite3_result_int64 = Module["_sqlite3_result_int64"] = wasmExports2["sqlite3_result_int64"];\n _sqlite3_result_double = Module["_sqlite3_result_double"] = wasmExports2["sqlite3_result_double"];\n _sqlite3_result_text = Module["_sqlite3_result_text"] = wasmExports2["sqlite3_result_text"];\n _sqlite3_result_blob = Module["_sqlite3_result_blob"] = wasmExports2["sqlite3_result_blob"];\n _sqlite3_expanded_sql = Module["_sqlite3_expanded_sql"] = wasmExports2["sqlite3_expanded_sql"];\n _sqlite3_db_handle = Module["_sqlite3_db_handle"] = wasmExports2["sqlite3_db_handle"];\n _sqlite3_blob_open = Module["_sqlite3_blob_open"] = wasmExports2["sqlite3_blob_open"];\n _sqlite3_total_changes = Module["_sqlite3_total_changes"] = wasmExports2["sqlite3_total_changes"];\n _sqlite3_stricmp = Module["_sqlite3_stricmp"] = wasmExports2["sqlite3_stricmp"];\n _sqlite3_reset = Module["_sqlite3_reset"] = wasmExports2["sqlite3_reset"];\n _sqlite3_stmt_readonly = Module["_sqlite3_stmt_readonly"] = wasmExports2["sqlite3_stmt_readonly"];\n _sqlite3_stmt_busy = Module["_sqlite3_stmt_busy"] = wasmExports2["sqlite3_stmt_busy"];\n _sqlite3_bind_parameter_count = Module["_sqlite3_bind_parameter_count"] = wasmExports2["sqlite3_bind_parameter_count"];\n _sqlite3_bind_parameter_name = Module["_sqlite3_bind_parameter_name"] = wasmExports2["sqlite3_bind_parameter_name"];\n _sqlite3_column_count = Module["_sqlite3_column_count"] = wasmExports2["sqlite3_column_count"];\n _sqlite3_column_name = Module["_sqlite3_column_name"] = wasmExports2["sqlite3_column_name"];\n _sqlite3_column_decltype = Module["_sqlite3_column_decltype"] = wasmExports2["sqlite3_column_decltype"];\n _sqlite3_changes = Module["_sqlite3_changes"] = wasmExports2["sqlite3_changes"];\n _sqlite3_last_insert_rowid = Module["_sqlite3_last_insert_rowid"] = wasmExports2["sqlite3_last_insert_rowid"];\n _sqlite3_bind_null = Module["_sqlite3_bind_null"] = wasmExports2["sqlite3_bind_null"];\n _sqlite3_bind_int64 = Module["_sqlite3_bind_int64"] = wasmExports2["sqlite3_bind_int64"];\n _sqlite3_bind_double = Module["_sqlite3_bind_double"] = wasmExports2["sqlite3_bind_double"];\n _sqlite3_bind_text = Module["_sqlite3_bind_text"] = wasmExports2["sqlite3_bind_text"];\n _sqlite3_bind_blob = Module["_sqlite3_bind_blob"] = wasmExports2["sqlite3_bind_blob"];\n _sqlite3_data_count = Module["_sqlite3_data_count"] = wasmExports2["sqlite3_data_count"];\n _sqlite3_column_blob = Module["_sqlite3_column_blob"] = wasmExports2["sqlite3_column_blob"];\n _sqlite3_column_bytes = Module["_sqlite3_column_bytes"] = wasmExports2["sqlite3_column_bytes"];\n _sqlite3_column_type = Module["_sqlite3_column_type"] = wasmExports2["sqlite3_column_type"];\n _sqlite3_column_double = Module["_sqlite3_column_double"] = wasmExports2["sqlite3_column_double"];\n _sqlite3_column_text = Module["_sqlite3_column_text"] = wasmExports2["sqlite3_column_text"];\n _sqlite3_column_int64 = Module["_sqlite3_column_int64"] = wasmExports2["sqlite3_column_int64"];\n _sqlite3_exec = Module["_sqlite3_exec"] = wasmExports2["sqlite3_exec"];\n _sqlite3_complete = Module["_sqlite3_complete"] = wasmExports2["sqlite3_complete"];\n _sqlite3_initialize = Module["_sqlite3_initialize"] = wasmExports2["sqlite3_initialize"];\n _sqlite3_errstr = Module["_sqlite3_errstr"] = wasmExports2["sqlite3_errstr"];\n _sqlite3_libversion = Module["_sqlite3_libversion"] = wasmExports2["sqlite3_libversion"];\n _sqlite3_threadsafe = Module["_sqlite3_threadsafe"] = wasmExports2["sqlite3_threadsafe"];\n _sqlite3_extended_errcode = Module["_sqlite3_extended_errcode"] = wasmExports2["sqlite3_extended_errcode"];\n _sqlite3_errmsg = Module["_sqlite3_errmsg"] = wasmExports2["sqlite3_errmsg"];\n _lzma_check_is_supported = Module["_lzma_check_is_supported"] = wasmExports2["lzma_check_is_supported"];\n _lzma_properties_size = Module["_lzma_properties_size"] = wasmExports2["lzma_properties_size"];\n _lzma_properties_encode = Module["_lzma_properties_encode"] = wasmExports2["lzma_properties_encode"];\n _lzma_properties_decode = Module["_lzma_properties_decode"] = wasmExports2["lzma_properties_decode"];\n _lzma_lzma_preset = Module["_lzma_lzma_preset"] = wasmExports2["lzma_lzma_preset"];\n _lzma_end = Module["_lzma_end"] = wasmExports2["lzma_end"];\n _lzma_code = Module["_lzma_code"] = wasmExports2["lzma_code"];\n _lzma_easy_encoder = Module["_lzma_easy_encoder"] = wasmExports2["lzma_easy_encoder"];\n _lzma_stream_encoder = Module["_lzma_stream_encoder"] = wasmExports2["lzma_stream_encoder"];\n _lzma_alone_encoder = Module["_lzma_alone_encoder"] = wasmExports2["lzma_alone_encoder"];\n _lzma_raw_encoder = Module["_lzma_raw_encoder"] = wasmExports2["lzma_raw_encoder"];\n _lzma_auto_decoder = Module["_lzma_auto_decoder"] = wasmExports2["lzma_auto_decoder"];\n _lzma_stream_decoder = Module["_lzma_stream_decoder"] = wasmExports2["lzma_stream_decoder"];\n _lzma_alone_decoder = Module["_lzma_alone_decoder"] = wasmExports2["lzma_alone_decoder"];\n _lzma_get_check = Module["_lzma_get_check"] = wasmExports2["lzma_get_check"];\n _lzma_raw_decoder = Module["_lzma_raw_decoder"] = wasmExports2["lzma_raw_decoder"];\n _ZSTD_getErrorName = Module["_ZSTD_getErrorName"] = wasmExports2["ZSTD_getErrorName"];\n _ZSTD_cParam_getBounds = Module["_ZSTD_cParam_getBounds"] = wasmExports2["ZSTD_cParam_getBounds"];\n _ZSTD_dParam_getBounds = Module["_ZSTD_dParam_getBounds"] = wasmExports2["ZSTD_dParam_getBounds"];\n _ZSTD_isError = Module["_ZSTD_isError"] = wasmExports2["ZSTD_isError"];\n _ZDICT_trainFromBuffer = Module["_ZDICT_trainFromBuffer"] = wasmExports2["ZDICT_trainFromBuffer"];\n _ZDICT_isError = Module["_ZDICT_isError"] = wasmExports2["ZDICT_isError"];\n _ZDICT_finalizeDictionary = Module["_ZDICT_finalizeDictionary"] = wasmExports2["ZDICT_finalizeDictionary"];\n _ZSTD_findFrameCompressedSize = Module["_ZSTD_findFrameCompressedSize"] = wasmExports2["ZSTD_findFrameCompressedSize"];\n _ZSTD_getFrameContentSize = Module["_ZSTD_getFrameContentSize"] = wasmExports2["ZSTD_getFrameContentSize"];\n _ZSTD_getDictID_fromFrame = Module["_ZSTD_getDictID_fromFrame"] = wasmExports2["ZSTD_getDictID_fromFrame"];\n _ZSTD_versionNumber = Module["_ZSTD_versionNumber"] = wasmExports2["ZSTD_versionNumber"];\n _ZSTD_versionString = Module["_ZSTD_versionString"] = wasmExports2["ZSTD_versionString"];\n _ZSTD_defaultCLevel = Module["_ZSTD_defaultCLevel"] = wasmExports2["ZSTD_defaultCLevel"];\n _ZSTD_DStreamOutSize = Module["_ZSTD_DStreamOutSize"] = wasmExports2["ZSTD_DStreamOutSize"];\n _ZSTD_createCDict = Module["_ZSTD_createCDict"] = wasmExports2["ZSTD_createCDict"];\n _ZSTD_freeCDict = Module["_ZSTD_freeCDict"] = wasmExports2["ZSTD_freeCDict"];\n _ZSTD_createCCtx = Module["_ZSTD_createCCtx"] = wasmExports2["ZSTD_createCCtx"];\n _ZSTD_minCLevel = Module["_ZSTD_minCLevel"] = wasmExports2["ZSTD_minCLevel"];\n _ZSTD_maxCLevel = Module["_ZSTD_maxCLevel"] = wasmExports2["ZSTD_maxCLevel"];\n _ZSTD_CCtx_setParameter = Module["_ZSTD_CCtx_setParameter"] = wasmExports2["ZSTD_CCtx_setParameter"];\n _ZSTD_CCtx_refCDict = Module["_ZSTD_CCtx_refCDict"] = wasmExports2["ZSTD_CCtx_refCDict"];\n _ZSTD_CCtx_loadDictionary = Module["_ZSTD_CCtx_loadDictionary"] = wasmExports2["ZSTD_CCtx_loadDictionary"];\n _ZSTD_CCtx_refPrefix = Module["_ZSTD_CCtx_refPrefix"] = wasmExports2["ZSTD_CCtx_refPrefix"];\n _ZSTD_freeCCtx = Module["_ZSTD_freeCCtx"] = wasmExports2["ZSTD_freeCCtx"];\n _ZSTD_compressStream2 = Module["_ZSTD_compressStream2"] = wasmExports2["ZSTD_compressStream2"];\n _ZSTD_CCtx_reset = Module["_ZSTD_CCtx_reset"] = wasmExports2["ZSTD_CCtx_reset"];\n _ZSTD_CCtx_setPledgedSrcSize = Module["_ZSTD_CCtx_setPledgedSrcSize"] = wasmExports2["ZSTD_CCtx_setPledgedSrcSize"];\n _ZSTD_compressBound = Module["_ZSTD_compressBound"] = wasmExports2["ZSTD_compressBound"];\n _ZSTD_createDCtx = Module["_ZSTD_createDCtx"] = wasmExports2["ZSTD_createDCtx"];\n _ZSTD_createDDict = Module["_ZSTD_createDDict"] = wasmExports2["ZSTD_createDDict"];\n _ZSTD_DCtx_refDDict = Module["_ZSTD_DCtx_refDDict"] = wasmExports2["ZSTD_DCtx_refDDict"];\n _ZSTD_DCtx_loadDictionary = Module["_ZSTD_DCtx_loadDictionary"] = wasmExports2["ZSTD_DCtx_loadDictionary"];\n _ZSTD_DCtx_refPrefix = Module["_ZSTD_DCtx_refPrefix"] = wasmExports2["ZSTD_DCtx_refPrefix"];\n _ZSTD_DCtx_setParameter = Module["_ZSTD_DCtx_setParameter"] = wasmExports2["ZSTD_DCtx_setParameter"];\n _ZSTD_freeDCtx = Module["_ZSTD_freeDCtx"] = wasmExports2["ZSTD_freeDCtx"];\n _ZSTD_decompressStream = Module["_ZSTD_decompressStream"] = wasmExports2["ZSTD_decompressStream"];\n _ZSTD_DCtx_reset = Module["_ZSTD_DCtx_reset"] = wasmExports2["ZSTD_DCtx_reset"];\n _ZSTD_getDictID_fromDict = Module["_ZSTD_getDictID_fromDict"] = wasmExports2["ZSTD_getDictID_fromDict"];\n _ZSTD_freeDDict = Module["_ZSTD_freeDDict"] = wasmExports2["ZSTD_freeDDict"];\n _getpagesize = Module["_getpagesize"] = wasmExports2["getpagesize"];\n _acos = Module["_acos"] = wasmExports2["acos"];\n _acosh = Module["_acosh"] = wasmExports2["acosh"];\n _asin = Module["_asin"] = wasmExports2["asin"];\n _asinh = Module["_asinh"] = wasmExports2["asinh"];\n _atan = Module["_atan"] = wasmExports2["atan"];\n _atanh = Module["_atanh"] = wasmExports2["atanh"];\n _cbrt = Module["_cbrt"] = wasmExports2["cbrt"];\n _copysign = Module["_copysign"] = wasmExports2["copysign"];\n _cosh = Module["_cosh"] = wasmExports2["cosh"];\n _erf = Module["_erf"] = wasmExports2["erf"];\n _erfc = Module["_erfc"] = wasmExports2["erfc"];\n _exp2 = Module["_exp2"] = wasmExports2["exp2"];\n _expm1 = Module["_expm1"] = wasmExports2["expm1"];\n _fabs = Module["_fabs"] = wasmExports2["fabs"];\n _fma = Module["_fma"] = wasmExports2["fma"];\n _log10 = Module["_log10"] = wasmExports2["log10"];\n _log2 = Module["_log2"] = wasmExports2["log2"];\n _sinh = Module["_sinh"] = wasmExports2["sinh"];\n _sqrt = Module["_sqrt"] = wasmExports2["sqrt"];\n _tan = Module["_tan"] = wasmExports2["tan"];\n _tanh = Module["_tanh"] = wasmExports2["tanh"];\n _nextafter = Module["_nextafter"] = wasmExports2["nextafter"];\n _log1p = Module["_log1p"] = wasmExports2["log1p"];\n _strncat = Module["_strncat"] = wasmExports2["strncat"];\n _flock = Module["_flock"] = wasmExports2["flock"];\n _mmap = Module["_mmap"] = wasmExports2["mmap"];\n _munmap = Module["_munmap"] = wasmExports2["munmap"];\n _msync = Module["_msync"] = wasmExports2["msync"];\n _madvise = Module["_madvise"] = wasmExports2["madvise"];\n _ftruncate = Module["_ftruncate"] = wasmExports2["ftruncate"];\n _mremap = Module["_mremap"] = wasmExports2["mremap"];\n _select = Module["_select"] = wasmExports2["select"];\n _poll = Module["_poll"] = wasmExports2["poll"];\n _inet_ntop = Module["_inet_ntop"] = wasmExports2["inet_ntop"];\n _gethostbyname = Module["_gethostbyname"] = wasmExports2["gethostbyname"];\n _gethostbyaddr = Module["_gethostbyaddr"] = wasmExports2["gethostbyaddr"];\n _gethostname = Module["_gethostname"] = wasmExports2["gethostname"];\n _getservbyname = Module["_getservbyname"] = wasmExports2["getservbyname"];\n _ntohs = Module["_ntohs"] = wasmExports2["ntohs"];\n _htons = Module["_htons"] = wasmExports2["htons"];\n _getservbyport = Module["_getservbyport"] = wasmExports2["getservbyport"];\n _ntohl = Module["_ntohl"] = wasmExports2["ntohl"];\n _htonl = Module["_htonl"] = wasmExports2["htonl"];\n _inet_aton = Module["_inet_aton"] = wasmExports2["inet_aton"];\n _inet_ntoa = Module["_inet_ntoa"] = wasmExports2["inet_ntoa"];\n _inet_pton = Module["_inet_pton"] = wasmExports2["inet_pton"];\n _gai_strerror = Module["_gai_strerror"] = wasmExports2["gai_strerror"];\n _freeaddrinfo = Module["_freeaddrinfo"] = wasmExports2["freeaddrinfo"];\n _if_nameindex = Module["_if_nameindex"] = wasmExports2["if_nameindex"];\n _if_freenameindex = Module["_if_freenameindex"] = wasmExports2["if_freenameindex"];\n _if_nametoindex = Module["_if_nametoindex"] = wasmExports2["if_nametoindex"];\n _if_indextoname = Module["_if_indextoname"] = wasmExports2["if_indextoname"];\n ___h_errno_location = Module["___h_errno_location"] = wasmExports2["__h_errno_location"];\n _hstrerror = Module["_hstrerror"] = wasmExports2["hstrerror"];\n _getsockname = Module["_getsockname"] = wasmExports2["getsockname"];\n _socket = Module["_socket"] = wasmExports2["socket"];\n _getsockopt = Module["_getsockopt"] = wasmExports2["getsockopt"];\n _bind = Module["_bind"] = wasmExports2["bind"];\n _getpeername = Module["_getpeername"] = wasmExports2["getpeername"];\n _listen = Module["_listen"] = wasmExports2["listen"];\n _setsockopt = Module["_setsockopt"] = wasmExports2["setsockopt"];\n _shutdown = Module["_shutdown"] = wasmExports2["shutdown"];\n _accept4 = Module["_accept4"] = wasmExports2["accept4"];\n _accept = Module["_accept"] = wasmExports2["accept"];\n _connect = Module["_connect"] = wasmExports2["connect"];\n _recv = Module["_recv"] = wasmExports2["recv"];\n _recvfrom = Module["_recvfrom"] = wasmExports2["recvfrom"];\n _send = Module["_send"] = wasmExports2["send"];\n _sendto = Module["_sendto"] = wasmExports2["sendto"];\n _recvmsg = Module["_recvmsg"] = wasmExports2["recvmsg"];\n _sendmsg = Module["_sendmsg"] = wasmExports2["sendmsg"];\n _tcgetattr = Module["_tcgetattr"] = wasmExports2["tcgetattr"];\n _cfgetispeed = Module["_cfgetispeed"] = wasmExports2["cfgetispeed"];\n _cfgetospeed = Module["_cfgetospeed"] = wasmExports2["cfgetospeed"];\n _cfsetispeed = Module["_cfsetispeed"] = wasmExports2["cfsetispeed"];\n _cfsetospeed = Module["_cfsetospeed"] = wasmExports2["cfsetospeed"];\n _tcsetattr = Module["_tcsetattr"] = wasmExports2["tcsetattr"];\n _tcsendbreak = Module["_tcsendbreak"] = wasmExports2["tcsendbreak"];\n _tcdrain = Module["_tcdrain"] = wasmExports2["tcdrain"];\n _tcflush = Module["_tcflush"] = wasmExports2["tcflush"];\n _tcflow = Module["_tcflow"] = wasmExports2["tcflow"];\n _clock = Module["_clock"] = wasmExports2["clock"];\n __Py_Get_Getpath_CodeObject = Module["__Py_Get_Getpath_CodeObject"] = wasmExports2["_Py_Get_Getpath_CodeObject"];\n _usleep = Module["_usleep"] = wasmExports2["usleep"];\n _raise = Module["_raise"] = wasmExports2["raise"];\n __pthread_cleanup_push = Module["__pthread_cleanup_push"] = wasmExports2["_pthread_cleanup_push"];\n _PyUnstable_AtExit = Module["_PyUnstable_AtExit"] = wasmExports2["PyUnstable_AtExit"];\n _PyInit__testcapi_datetime = Module["_PyInit__testcapi_datetime"] = wasmExports2["PyInit__testcapi_datetime"];\n _getrlimit = Module["_getrlimit"] = wasmExports2["getrlimit"];\n _setrlimit = Module["_setrlimit"] = wasmExports2["setrlimit"];\n _sigfillset = Module["_sigfillset"] = wasmExports2["sigfillset"];\n _pthread_sigmask = Module["_pthread_sigmask"] = wasmExports2["pthread_sigmask"];\n _PyOS_AfterFork = Module["_PyOS_AfterFork"] = wasmExports2["PyOS_AfterFork"];\n __PyLong_FromGid = Module["__PyLong_FromGid"] = wasmExports2["_PyLong_FromGid"];\n _sigemptyset = Module["_sigemptyset"] = wasmExports2["sigemptyset"];\n _sigaddset = Module["_sigaddset"] = wasmExports2["sigaddset"];\n _ttyname_r = Module["_ttyname_r"] = wasmExports2["ttyname_r"];\n _fchdir = Module["_fchdir"] = wasmExports2["fchdir"];\n _fchmod = Module["_fchmod"] = wasmExports2["fchmod"];\n _fchmodat = Module["_fchmodat"] = wasmExports2["fchmodat"];\n _chmod = Module["_chmod"] = wasmExports2["chmod"];\n _fchown = Module["_fchown"] = wasmExports2["fchown"];\n _fchownat = Module["_fchownat"] = wasmExports2["fchownat"];\n _chown = Module["_chown"] = wasmExports2["chown"];\n _chroot = Module["_chroot"] = wasmExports2["chroot"];\n _ctermid = Module["_ctermid"] = wasmExports2["ctermid"];\n _fdopendir = Module["_fdopendir"] = wasmExports2["fdopendir"];\n _rewinddir = Module["_rewinddir"] = wasmExports2["rewinddir"];\n _mkdirat = Module["_mkdirat"] = wasmExports2["mkdirat"];\n _mkdir = Module["_mkdir"] = wasmExports2["mkdir"];\n _getpriority = Module["_getpriority"] = wasmExports2["getpriority"];\n _readlinkat = Module["_readlinkat"] = wasmExports2["readlinkat"];\n _unlinkat = Module["_unlinkat"] = wasmExports2["unlinkat"];\n _rmdir = Module["_rmdir"] = wasmExports2["rmdir"];\n _symlink = Module["_symlink"] = wasmExports2["symlink"];\n _system = Module["_system"] = wasmExports2["system"];\n _uname = Module["_uname"] = wasmExports2["uname"];\n _futimesat = Module["_futimesat"] = wasmExports2["futimesat"];\n _futimens = Module["_futimens"] = wasmExports2["futimens"];\n _times = Module["_times"] = wasmExports2["times"];\n _fexecve = Module["_fexecve"] = wasmExports2["fexecve"];\n _posix_openpt = Module["_posix_openpt"] = wasmExports2["posix_openpt"];\n _grantpt = Module["_grantpt"] = wasmExports2["grantpt"];\n _unlockpt = Module["_unlockpt"] = wasmExports2["unlockpt"];\n _ptsname_r = Module["_ptsname_r"] = wasmExports2["ptsname_r"];\n _login_tty = Module["_login_tty"] = wasmExports2["login_tty"];\n _getgid = Module["_getgid"] = wasmExports2["getgid"];\n _getpgrp = Module["_getpgrp"] = wasmExports2["getpgrp"];\n _getppid = Module["_getppid"] = wasmExports2["getppid"];\n _getuid = Module["_getuid"] = wasmExports2["getuid"];\n _getlogin_r = Module["_getlogin_r"] = wasmExports2["getlogin_r"];\n _killpg = Module["_killpg"] = wasmExports2["killpg"];\n _setuid = Module["_setuid"] = wasmExports2["setuid"];\n _setgid = Module["_setgid"] = wasmExports2["setgid"];\n _getpgid = Module["_getpgid"] = wasmExports2["getpgid"];\n _setpgrp = Module["_setpgrp"] = wasmExports2["setpgrp"];\n _wait = Module["_wait"] = wasmExports2["wait"];\n _wait3 = Module["_wait3"] = wasmExports2["wait3"];\n _wait4 = Module["_wait4"] = wasmExports2["wait4"];\n _waitid = Module["_waitid"] = wasmExports2["waitid"];\n _waitpid = Module["_waitpid"] = wasmExports2["waitpid"];\n _getsid = Module["_getsid"] = wasmExports2["getsid"];\n _tcgetpgrp = Module["_tcgetpgrp"] = wasmExports2["tcgetpgrp"];\n _tcsetpgrp = Module["_tcsetpgrp"] = wasmExports2["tcsetpgrp"];\n _openat = Module["_openat"] = wasmExports2["openat"];\n _dup3 = Module["_dup3"] = wasmExports2["dup3"];\n _lockf = Module["_lockf"] = wasmExports2["lockf"];\n _readv = Module["_readv"] = wasmExports2["readv"];\n _pread = Module["_pread"] = wasmExports2["pread"];\n _writev = Module["_writev"] = wasmExports2["writev"];\n _pwrite = Module["_pwrite"] = wasmExports2["pwrite"];\n _pipe = Module["_pipe"] = wasmExports2["pipe"];\n _truncate = Module["_truncate"] = wasmExports2["truncate"];\n _posix_fadvise = Module["_posix_fadvise"] = wasmExports2["posix_fadvise"];\n _unsetenv = Module["_unsetenv"] = wasmExports2["unsetenv"];\n _fsync = Module["_fsync"] = wasmExports2["fsync"];\n _sync = Module["_sync"] = wasmExports2["sync"];\n _fdatasync = Module["_fdatasync"] = wasmExports2["fdatasync"];\n _fstatvfs = Module["_fstatvfs"] = wasmExports2["fstatvfs"];\n _statvfs = Module["_statvfs"] = wasmExports2["statvfs"];\n _fpathconf = Module["_fpathconf"] = wasmExports2["fpathconf"];\n _pathconf = Module["_pathconf"] = wasmExports2["pathconf"];\n _getloadavg = Module["_getloadavg"] = wasmExports2["getloadavg"];\n _lstat = Module["_lstat"] = wasmExports2["lstat"];\n _fstatat = Module["_fstatat"] = wasmExports2["fstatat"];\n _renameat = Module["_renameat"] = wasmExports2["renameat"];\n _rename = Module["_rename"] = wasmExports2["rename"];\n _unlink = Module["_unlink"] = wasmExports2["unlink"];\n _utimes = Module["_utimes"] = wasmExports2["utimes"];\n _PySignal_SetWakeupFd = Module["_PySignal_SetWakeupFd"] = wasmExports2["PySignal_SetWakeupFd"];\n __PyErr_CheckSignals = Module["__PyErr_CheckSignals"] = wasmExports2["_PyErr_CheckSignals"];\n _PyErr_SetInterrupt = Module["_PyErr_SetInterrupt"] = wasmExports2["PyErr_SetInterrupt"];\n _PyOS_InterruptOccurred = Module["_PyOS_InterruptOccurred"] = wasmExports2["PyOS_InterruptOccurred"];\n __PyOS_IsMainThread = Module["__PyOS_IsMainThread"] = wasmExports2["_PyOS_IsMainThread"];\n _getitimer = Module["_getitimer"] = wasmExports2["getitimer"];\n _strsignal = Module["_strsignal"] = wasmExports2["strsignal"];\n _pause = Module["_pause"] = wasmExports2["pause"];\n _sigpending = Module["_sigpending"] = wasmExports2["sigpending"];\n _sigwait = Module["_sigwait"] = wasmExports2["sigwait"];\n _sigwaitinfo = Module["_sigwaitinfo"] = wasmExports2["sigwaitinfo"];\n _sigtimedwait = Module["_sigtimedwait"] = wasmExports2["sigtimedwait"];\n _sigismember = Module["_sigismember"] = wasmExports2["sigismember"];\n ___libc_current_sigrtmin = Module["___libc_current_sigrtmin"] = wasmExports2["__libc_current_sigrtmin"];\n ___libc_current_sigrtmax = Module["___libc_current_sigrtmax"] = wasmExports2["__libc_current_sigrtmax"];\n _strftime = Module["_strftime"] = wasmExports2["strftime"];\n _isalnum = Module["_isalnum"] = wasmExports2["isalnum"];\n _tolower = Module["_tolower"] = wasmExports2["tolower"];\n _toupper = Module["_toupper"] = wasmExports2["toupper"];\n _clock_settime = Module["_clock_settime"] = wasmExports2["clock_settime"];\n _pthread_getcpuclockid = Module["_pthread_getcpuclockid"] = wasmExports2["pthread_getcpuclockid"];\n _clock_nanosleep = Module["_clock_nanosleep"] = wasmExports2["clock_nanosleep"];\n _time = Module["_time"] = wasmExports2["time"];\n _mktime = Module["_mktime"] = wasmExports2["mktime"];\n _wcsftime = Module["_wcsftime"] = wasmExports2["wcsftime"];\n _wcscoll = Module["_wcscoll"] = wasmExports2["wcscoll"];\n _wcsxfrm = Module["_wcsxfrm"] = wasmExports2["wcsxfrm"];\n _gettext = Module["_gettext"] = wasmExports2["gettext"];\n _dgettext = Module["_dgettext"] = wasmExports2["dgettext"];\n _dcgettext = Module["_dcgettext"] = wasmExports2["dcgettext"];\n _textdomain = Module["_textdomain"] = wasmExports2["textdomain"];\n _bindtextdomain = Module["_bindtextdomain"] = wasmExports2["bindtextdomain"];\n _bind_textdomain_codeset = Module["_bind_textdomain_codeset"] = wasmExports2["bind_textdomain_codeset"];\n _gettimeofday = Module["_gettimeofday"] = wasmExports2["gettimeofday"];\n ___small_fprintf = Module["___small_fprintf"] = wasmExports2["__small_fprintf"];\n _ffi_prep_closure = Module["_ffi_prep_closure"] = wasmExports2["ffi_prep_closure"];\n _ffi_get_struct_offsets = Module["_ffi_get_struct_offsets"] = wasmExports2["ffi_get_struct_offsets"];\n _ffi_java_raw_size = Module["_ffi_java_raw_size"] = wasmExports2["ffi_java_raw_size"];\n _ffi_java_raw_to_ptrarray = Module["_ffi_java_raw_to_ptrarray"] = wasmExports2["ffi_java_raw_to_ptrarray"];\n _ffi_java_ptrarray_to_raw = Module["_ffi_java_ptrarray_to_raw"] = wasmExports2["ffi_java_ptrarray_to_raw"];\n _ffi_java_raw_call = Module["_ffi_java_raw_call"] = wasmExports2["ffi_java_raw_call"];\n _ffi_prep_java_raw_closure_loc = Module["_ffi_prep_java_raw_closure_loc"] = wasmExports2["ffi_prep_java_raw_closure_loc"];\n _ffi_prep_java_raw_closure = Module["_ffi_prep_java_raw_closure"] = wasmExports2["ffi_prep_java_raw_closure"];\n _ffi_tramp_is_supported = Module["_ffi_tramp_is_supported"] = wasmExports2["ffi_tramp_is_supported"];\n _ffi_tramp_alloc = Module["_ffi_tramp_alloc"] = wasmExports2["ffi_tramp_alloc"];\n _ffi_tramp_set_parms = Module["_ffi_tramp_set_parms"] = wasmExports2["ffi_tramp_set_parms"];\n _ffi_tramp_get_addr = Module["_ffi_tramp_get_addr"] = wasmExports2["ffi_tramp_get_addr"];\n _ffi_tramp_free = Module["_ffi_tramp_free"] = wasmExports2["ffi_tramp_free"];\n __hiwire_immortal_add = Module["__hiwire_immortal_add"] = wasmExports2["_hiwire_immortal_add"];\n __hiwire_immortal_get = Module["__hiwire_immortal_get"] = wasmExports2["_hiwire_immortal_get"];\n __hiwire_get = Module["__hiwire_get"] = wasmExports2["_hiwire_get"];\n __hiwire_set = Module["__hiwire_set"] = wasmExports2["_hiwire_set"];\n _hiwire_num_refs = Module["_hiwire_num_refs"] = wasmExports2["hiwire_num_refs"];\n __hiwire_slot_info = Module["__hiwire_slot_info"] = wasmExports2["_hiwire_slot_info"];\n __hiwire_delete = Module["__hiwire_delete"] = wasmExports2["_hiwire_delete"];\n __hiwire_immortal_table_init = Module["__hiwire_immortal_table_init"] = wasmExports2["_hiwire_immortal_table_init"];\n _lzma_version_number = Module["_lzma_version_number"] = wasmExports2["lzma_version_number"];\n _lzma_version_string = Module["_lzma_version_string"] = wasmExports2["lzma_version_string"];\n _lzma_get_progress = Module["_lzma_get_progress"] = wasmExports2["lzma_get_progress"];\n _lzma_memusage = Module["_lzma_memusage"] = wasmExports2["lzma_memusage"];\n _lzma_memlimit_get = Module["_lzma_memlimit_get"] = wasmExports2["lzma_memlimit_get"];\n _lzma_memlimit_set = Module["_lzma_memlimit_set"] = wasmExports2["lzma_memlimit_set"];\n _lzma_block_compressed_size = Module["_lzma_block_compressed_size"] = wasmExports2["lzma_block_compressed_size"];\n _lzma_block_unpadded_size = Module["_lzma_block_unpadded_size"] = wasmExports2["lzma_block_unpadded_size"];\n _lzma_check_size = Module["_lzma_check_size"] = wasmExports2["lzma_check_size"];\n _lzma_block_total_size = Module["_lzma_block_total_size"] = wasmExports2["lzma_block_total_size"];\n _lzma_filters_copy = Module["_lzma_filters_copy"] = wasmExports2["lzma_filters_copy"];\n _lzma_physmem = Module["_lzma_physmem"] = wasmExports2["lzma_physmem"];\n _lzma_index_init = Module["_lzma_index_init"] = wasmExports2["lzma_index_init"];\n _lzma_index_end = Module["_lzma_index_end"] = wasmExports2["lzma_index_end"];\n _lzma_index_memusage = Module["_lzma_index_memusage"] = wasmExports2["lzma_index_memusage"];\n _lzma_index_memused = Module["_lzma_index_memused"] = wasmExports2["lzma_index_memused"];\n _lzma_index_block_count = Module["_lzma_index_block_count"] = wasmExports2["lzma_index_block_count"];\n _lzma_index_stream_count = Module["_lzma_index_stream_count"] = wasmExports2["lzma_index_stream_count"];\n _lzma_index_size = Module["_lzma_index_size"] = wasmExports2["lzma_index_size"];\n _lzma_vli_size = Module["_lzma_vli_size"] = wasmExports2["lzma_vli_size"];\n _lzma_index_total_size = Module["_lzma_index_total_size"] = wasmExports2["lzma_index_total_size"];\n _lzma_index_stream_size = Module["_lzma_index_stream_size"] = wasmExports2["lzma_index_stream_size"];\n _lzma_index_file_size = Module["_lzma_index_file_size"] = wasmExports2["lzma_index_file_size"];\n _lzma_index_uncompressed_size = Module["_lzma_index_uncompressed_size"] = wasmExports2["lzma_index_uncompressed_size"];\n _lzma_index_checks = Module["_lzma_index_checks"] = wasmExports2["lzma_index_checks"];\n _lzma_index_stream_flags = Module["_lzma_index_stream_flags"] = wasmExports2["lzma_index_stream_flags"];\n _lzma_stream_flags_compare = Module["_lzma_stream_flags_compare"] = wasmExports2["lzma_stream_flags_compare"];\n _lzma_index_stream_padding = Module["_lzma_index_stream_padding"] = wasmExports2["lzma_index_stream_padding"];\n _lzma_index_append = Module["_lzma_index_append"] = wasmExports2["lzma_index_append"];\n _lzma_index_cat = Module["_lzma_index_cat"] = wasmExports2["lzma_index_cat"];\n _lzma_index_dup = Module["_lzma_index_dup"] = wasmExports2["lzma_index_dup"];\n _lzma_index_iter_init = Module["_lzma_index_iter_init"] = wasmExports2["lzma_index_iter_init"];\n _lzma_index_iter_rewind = Module["_lzma_index_iter_rewind"] = wasmExports2["lzma_index_iter_rewind"];\n _lzma_index_iter_next = Module["_lzma_index_iter_next"] = wasmExports2["lzma_index_iter_next"];\n _lzma_index_iter_locate = Module["_lzma_index_iter_locate"] = wasmExports2["lzma_index_iter_locate"];\n _lzma_block_buffer_bound = Module["_lzma_block_buffer_bound"] = wasmExports2["lzma_block_buffer_bound"];\n _lzma_block_buffer_encode = Module["_lzma_block_buffer_encode"] = wasmExports2["lzma_block_buffer_encode"];\n _lzma_block_uncomp_encode = Module["_lzma_block_uncomp_encode"] = wasmExports2["lzma_block_uncomp_encode"];\n _lzma_block_header_size = Module["_lzma_block_header_size"] = wasmExports2["lzma_block_header_size"];\n _lzma_block_header_encode = Module["_lzma_block_header_encode"] = wasmExports2["lzma_block_header_encode"];\n _lzma_block_encoder = Module["_lzma_block_encoder"] = wasmExports2["lzma_block_encoder"];\n _lzma_filter_flags_size = Module["_lzma_filter_flags_size"] = wasmExports2["lzma_filter_flags_size"];\n _lzma_vli_encode = Module["_lzma_vli_encode"] = wasmExports2["lzma_vli_encode"];\n _lzma_filter_flags_encode = Module["_lzma_filter_flags_encode"] = wasmExports2["lzma_filter_flags_encode"];\n _lzma_crc32 = Module["_lzma_crc32"] = wasmExports2["lzma_crc32"];\n _lzma_easy_buffer_encode = Module["_lzma_easy_buffer_encode"] = wasmExports2["lzma_easy_buffer_encode"];\n _lzma_stream_buffer_encode = Module["_lzma_stream_buffer_encode"] = wasmExports2["lzma_stream_buffer_encode"];\n _lzma_easy_encoder_memusage = Module["_lzma_easy_encoder_memusage"] = wasmExports2["lzma_easy_encoder_memusage"];\n _lzma_raw_encoder_memusage = Module["_lzma_raw_encoder_memusage"] = wasmExports2["lzma_raw_encoder_memusage"];\n _lzma_raw_buffer_encode = Module["_lzma_raw_buffer_encode"] = wasmExports2["lzma_raw_buffer_encode"];\n _lzma_filter_encoder_is_supported = Module["_lzma_filter_encoder_is_supported"] = wasmExports2["lzma_filter_encoder_is_supported"];\n _lzma_filters_update = Module["_lzma_filters_update"] = wasmExports2["lzma_filters_update"];\n _lzma_index_encoder = Module["_lzma_index_encoder"] = wasmExports2["lzma_index_encoder"];\n _lzma_index_buffer_encode = Module["_lzma_index_buffer_encode"] = wasmExports2["lzma_index_buffer_encode"];\n _lzma_stream_buffer_bound = Module["_lzma_stream_buffer_bound"] = wasmExports2["lzma_stream_buffer_bound"];\n _lzma_stream_header_encode = Module["_lzma_stream_header_encode"] = wasmExports2["lzma_stream_header_encode"];\n _lzma_stream_footer_encode = Module["_lzma_stream_footer_encode"] = wasmExports2["lzma_stream_footer_encode"];\n _lzma_cputhreads = Module["_lzma_cputhreads"] = wasmExports2["lzma_cputhreads"];\n _lzma_stream_encoder_mt = Module["_lzma_stream_encoder_mt"] = wasmExports2["lzma_stream_encoder_mt"];\n _lzma_stream_encoder_mt_memusage = Module["_lzma_stream_encoder_mt_memusage"] = wasmExports2["lzma_stream_encoder_mt_memusage"];\n _pthread_condattr_destroy = Module["_pthread_condattr_destroy"] = wasmExports2["pthread_condattr_destroy"];\n _lzma_block_buffer_decode = Module["_lzma_block_buffer_decode"] = wasmExports2["lzma_block_buffer_decode"];\n _lzma_block_decoder = Module["_lzma_block_decoder"] = wasmExports2["lzma_block_decoder"];\n _lzma_block_header_decode = Module["_lzma_block_header_decode"] = wasmExports2["lzma_block_header_decode"];\n _lzma_vli_decode = Module["_lzma_vli_decode"] = wasmExports2["lzma_vli_decode"];\n _lzma_filter_flags_decode = Module["_lzma_filter_flags_decode"] = wasmExports2["lzma_filter_flags_decode"];\n _lzma_easy_decoder_memusage = Module["_lzma_easy_decoder_memusage"] = wasmExports2["lzma_easy_decoder_memusage"];\n _lzma_raw_decoder_memusage = Module["_lzma_raw_decoder_memusage"] = wasmExports2["lzma_raw_decoder_memusage"];\n _lzma_raw_buffer_decode = Module["_lzma_raw_buffer_decode"] = wasmExports2["lzma_raw_buffer_decode"];\n _lzma_filter_decoder_is_supported = Module["_lzma_filter_decoder_is_supported"] = wasmExports2["lzma_filter_decoder_is_supported"];\n _lzma_index_decoder = Module["_lzma_index_decoder"] = wasmExports2["lzma_index_decoder"];\n _lzma_index_buffer_decode = Module["_lzma_index_buffer_decode"] = wasmExports2["lzma_index_buffer_decode"];\n _lzma_index_hash_init = Module["_lzma_index_hash_init"] = wasmExports2["lzma_index_hash_init"];\n _lzma_index_hash_end = Module["_lzma_index_hash_end"] = wasmExports2["lzma_index_hash_end"];\n _lzma_index_hash_size = Module["_lzma_index_hash_size"] = wasmExports2["lzma_index_hash_size"];\n _lzma_index_hash_append = Module["_lzma_index_hash_append"] = wasmExports2["lzma_index_hash_append"];\n _lzma_index_hash_decode = Module["_lzma_index_hash_decode"] = wasmExports2["lzma_index_hash_decode"];\n _lzma_stream_buffer_decode = Module["_lzma_stream_buffer_decode"] = wasmExports2["lzma_stream_buffer_decode"];\n _lzma_stream_header_decode = Module["_lzma_stream_header_decode"] = wasmExports2["lzma_stream_header_decode"];\n _lzma_stream_footer_decode = Module["_lzma_stream_footer_decode"] = wasmExports2["lzma_stream_footer_decode"];\n _lzma_crc64 = Module["_lzma_crc64"] = wasmExports2["lzma_crc64"];\n _lzma_mf_is_supported = Module["_lzma_mf_is_supported"] = wasmExports2["lzma_mf_is_supported"];\n _lzma_mode_is_supported = Module["_lzma_mode_is_supported"] = wasmExports2["lzma_mode_is_supported"];\n _sqlite3_status64 = Module["_sqlite3_status64"] = wasmExports2["sqlite3_status64"];\n _sqlite3_log = Module["_sqlite3_log"] = wasmExports2["sqlite3_log"];\n _sqlite3_status = Module["_sqlite3_status"] = wasmExports2["sqlite3_status"];\n _sqlite3_db_status = Module["_sqlite3_db_status"] = wasmExports2["sqlite3_db_status"];\n _sqlite3_msize = Module["_sqlite3_msize"] = wasmExports2["sqlite3_msize"];\n _sqlite3_vfs_find = Module["_sqlite3_vfs_find"] = wasmExports2["sqlite3_vfs_find"];\n _sqlite3_config = Module["_sqlite3_config"] = wasmExports2["sqlite3_config"];\n _sqlite3_os_init = Module["_sqlite3_os_init"] = wasmExports2["sqlite3_os_init"];\n _sqlite3_vfs_register = Module["_sqlite3_vfs_register"] = wasmExports2["sqlite3_vfs_register"];\n _sqlite3_vfs_unregister = Module["_sqlite3_vfs_unregister"] = wasmExports2["sqlite3_vfs_unregister"];\n _sqlite3_release_memory = Module["_sqlite3_release_memory"] = wasmExports2["sqlite3_release_memory"];\n _sqlite3_memory_alarm = Module["_sqlite3_memory_alarm"] = wasmExports2["sqlite3_memory_alarm"];\n _sqlite3_soft_heap_limit64 = Module["_sqlite3_soft_heap_limit64"] = wasmExports2["sqlite3_soft_heap_limit64"];\n _sqlite3_memory_used = Module["_sqlite3_memory_used"] = wasmExports2["sqlite3_memory_used"];\n _sqlite3_soft_heap_limit = Module["_sqlite3_soft_heap_limit"] = wasmExports2["sqlite3_soft_heap_limit"];\n _sqlite3_hard_heap_limit64 = Module["_sqlite3_hard_heap_limit64"] = wasmExports2["sqlite3_hard_heap_limit64"];\n _sqlite3_memory_highwater = Module["_sqlite3_memory_highwater"] = wasmExports2["sqlite3_memory_highwater"];\n _sqlite3_malloc = Module["_sqlite3_malloc"] = wasmExports2["sqlite3_malloc"];\n _sqlite3_realloc = Module["_sqlite3_realloc"] = wasmExports2["sqlite3_realloc"];\n _sqlite3_realloc64 = Module["_sqlite3_realloc64"] = wasmExports2["sqlite3_realloc64"];\n _sqlite3_str_vappendf = Module["_sqlite3_str_vappendf"] = wasmExports2["sqlite3_str_vappendf"];\n _sqlite3_str_append = Module["_sqlite3_str_append"] = wasmExports2["sqlite3_str_append"];\n ___multf3 = Module["___multf3"] = wasmExports2["__multf3"];\n ___addtf3 = Module["___addtf3"] = wasmExports2["__addtf3"];\n ___gttf2 = Module["___gttf2"] = wasmExports2["__gttf2"];\n ___getf2 = Module["___getf2"] = wasmExports2["__getf2"];\n ___divtf3 = Module["___divtf3"] = wasmExports2["__divtf3"];\n ___lttf2 = Module["___lttf2"] = wasmExports2["__lttf2"];\n _sqlite3_str_appendf = Module["_sqlite3_str_appendf"] = wasmExports2["sqlite3_str_appendf"];\n _sqlite3_str_appendchar = Module["_sqlite3_str_appendchar"] = wasmExports2["sqlite3_str_appendchar"];\n _sqlite3_str_reset = Module["_sqlite3_str_reset"] = wasmExports2["sqlite3_str_reset"];\n ___fixtfsi = Module["___fixtfsi"] = wasmExports2["__fixtfsi"];\n ___floatsitf = Module["___floatsitf"] = wasmExports2["__floatsitf"];\n ___subtf3 = Module["___subtf3"] = wasmExports2["__subtf3"];\n _sqlite3_str_appendall = Module["_sqlite3_str_appendall"] = wasmExports2["sqlite3_str_appendall"];\n _sqlite3_str_finish = Module["_sqlite3_str_finish"] = wasmExports2["sqlite3_str_finish"];\n _sqlite3_str_errcode = Module["_sqlite3_str_errcode"] = wasmExports2["sqlite3_str_errcode"];\n _sqlite3_str_length = Module["_sqlite3_str_length"] = wasmExports2["sqlite3_str_length"];\n _sqlite3_str_value = Module["_sqlite3_str_value"] = wasmExports2["sqlite3_str_value"];\n _sqlite3_str_new = Module["_sqlite3_str_new"] = wasmExports2["sqlite3_str_new"];\n _sqlite3_vmprintf = Module["_sqlite3_vmprintf"] = wasmExports2["sqlite3_vmprintf"];\n _sqlite3_mprintf = Module["_sqlite3_mprintf"] = wasmExports2["sqlite3_mprintf"];\n _sqlite3_vsnprintf = Module["_sqlite3_vsnprintf"] = wasmExports2["sqlite3_vsnprintf"];\n _sqlite3_snprintf = Module["_sqlite3_snprintf"] = wasmExports2["sqlite3_snprintf"];\n _sqlite3_randomness = Module["_sqlite3_randomness"] = wasmExports2["sqlite3_randomness"];\n _sqlite3_strnicmp = Module["_sqlite3_strnicmp"] = wasmExports2["sqlite3_strnicmp"];\n _sqlite3_uri_parameter = Module["_sqlite3_uri_parameter"] = wasmExports2["sqlite3_uri_parameter"];\n _sqlite3_uri_boolean = Module["_sqlite3_uri_boolean"] = wasmExports2["sqlite3_uri_boolean"];\n _sqlite3_os_end = Module["_sqlite3_os_end"] = wasmExports2["sqlite3_os_end"];\n _sqlite3_column_int = Module["_sqlite3_column_int"] = wasmExports2["sqlite3_column_int"];\n _sqlite3_file_control = Module["_sqlite3_file_control"] = wasmExports2["sqlite3_file_control"];\n _sqlite3_database_file_object = Module["_sqlite3_database_file_object"] = wasmExports2["sqlite3_database_file_object"];\n _sqlite3_enable_shared_cache = Module["_sqlite3_enable_shared_cache"] = wasmExports2["sqlite3_enable_shared_cache"];\n _sqlite3_expired = Module["_sqlite3_expired"] = wasmExports2["sqlite3_expired"];\n _sqlite3_clear_bindings = Module["_sqlite3_clear_bindings"] = wasmExports2["sqlite3_clear_bindings"];\n _sqlite3_value_bytes16 = Module["_sqlite3_value_bytes16"] = wasmExports2["sqlite3_value_bytes16"];\n _sqlite3_value_int = Module["_sqlite3_value_int"] = wasmExports2["sqlite3_value_int"];\n _sqlite3_value_subtype = Module["_sqlite3_value_subtype"] = wasmExports2["sqlite3_value_subtype"];\n _sqlite3_value_pointer = Module["_sqlite3_value_pointer"] = wasmExports2["sqlite3_value_pointer"];\n _sqlite3_value_text16 = Module["_sqlite3_value_text16"] = wasmExports2["sqlite3_value_text16"];\n _sqlite3_value_text16be = Module["_sqlite3_value_text16be"] = wasmExports2["sqlite3_value_text16be"];\n _sqlite3_value_text16le = Module["_sqlite3_value_text16le"] = wasmExports2["sqlite3_value_text16le"];\n _sqlite3_value_nochange = Module["_sqlite3_value_nochange"] = wasmExports2["sqlite3_value_nochange"];\n _sqlite3_value_frombind = Module["_sqlite3_value_frombind"] = wasmExports2["sqlite3_value_frombind"];\n _sqlite3_value_dup = Module["_sqlite3_value_dup"] = wasmExports2["sqlite3_value_dup"];\n _sqlite3_value_free = Module["_sqlite3_value_free"] = wasmExports2["sqlite3_value_free"];\n _sqlite3_result_blob64 = Module["_sqlite3_result_blob64"] = wasmExports2["sqlite3_result_blob64"];\n _sqlite3_result_error16 = Module["_sqlite3_result_error16"] = wasmExports2["sqlite3_result_error16"];\n _sqlite3_result_int = Module["_sqlite3_result_int"] = wasmExports2["sqlite3_result_int"];\n _sqlite3_result_pointer = Module["_sqlite3_result_pointer"] = wasmExports2["sqlite3_result_pointer"];\n _sqlite3_result_subtype = Module["_sqlite3_result_subtype"] = wasmExports2["sqlite3_result_subtype"];\n _sqlite3_result_text64 = Module["_sqlite3_result_text64"] = wasmExports2["sqlite3_result_text64"];\n _sqlite3_result_text16 = Module["_sqlite3_result_text16"] = wasmExports2["sqlite3_result_text16"];\n _sqlite3_result_text16be = Module["_sqlite3_result_text16be"] = wasmExports2["sqlite3_result_text16be"];\n _sqlite3_result_text16le = Module["_sqlite3_result_text16le"] = wasmExports2["sqlite3_result_text16le"];\n _sqlite3_result_value = Module["_sqlite3_result_value"] = wasmExports2["sqlite3_result_value"];\n _sqlite3_result_zeroblob = Module["_sqlite3_result_zeroblob"] = wasmExports2["sqlite3_result_zeroblob"];\n _sqlite3_result_zeroblob64 = Module["_sqlite3_result_zeroblob64"] = wasmExports2["sqlite3_result_zeroblob64"];\n _sqlite3_result_error_code = Module["_sqlite3_result_error_code"] = wasmExports2["sqlite3_result_error_code"];\n _sqlite3_vtab_nochange = Module["_sqlite3_vtab_nochange"] = wasmExports2["sqlite3_vtab_nochange"];\n _sqlite3_vtab_in_first = Module["_sqlite3_vtab_in_first"] = wasmExports2["sqlite3_vtab_in_first"];\n _sqlite3_vtab_in_next = Module["_sqlite3_vtab_in_next"] = wasmExports2["sqlite3_vtab_in_next"];\n _sqlite3_get_auxdata = Module["_sqlite3_get_auxdata"] = wasmExports2["sqlite3_get_auxdata"];\n _sqlite3_set_auxdata = Module["_sqlite3_set_auxdata"] = wasmExports2["sqlite3_set_auxdata"];\n _sqlite3_aggregate_count = Module["_sqlite3_aggregate_count"] = wasmExports2["sqlite3_aggregate_count"];\n _sqlite3_column_bytes16 = Module["_sqlite3_column_bytes16"] = wasmExports2["sqlite3_column_bytes16"];\n _sqlite3_column_value = Module["_sqlite3_column_value"] = wasmExports2["sqlite3_column_value"];\n _sqlite3_column_text16 = Module["_sqlite3_column_text16"] = wasmExports2["sqlite3_column_text16"];\n _sqlite3_column_name16 = Module["_sqlite3_column_name16"] = wasmExports2["sqlite3_column_name16"];\n _sqlite3_column_decltype16 = Module["_sqlite3_column_decltype16"] = wasmExports2["sqlite3_column_decltype16"];\n _sqlite3_bind_blob64 = Module["_sqlite3_bind_blob64"] = wasmExports2["sqlite3_bind_blob64"];\n _sqlite3_bind_int = Module["_sqlite3_bind_int"] = wasmExports2["sqlite3_bind_int"];\n _sqlite3_bind_pointer = Module["_sqlite3_bind_pointer"] = wasmExports2["sqlite3_bind_pointer"];\n _sqlite3_bind_text64 = Module["_sqlite3_bind_text64"] = wasmExports2["sqlite3_bind_text64"];\n _sqlite3_bind_text16 = Module["_sqlite3_bind_text16"] = wasmExports2["sqlite3_bind_text16"];\n _sqlite3_bind_value = Module["_sqlite3_bind_value"] = wasmExports2["sqlite3_bind_value"];\n _sqlite3_bind_zeroblob = Module["_sqlite3_bind_zeroblob"] = wasmExports2["sqlite3_bind_zeroblob"];\n _sqlite3_bind_zeroblob64 = Module["_sqlite3_bind_zeroblob64"] = wasmExports2["sqlite3_bind_zeroblob64"];\n _sqlite3_bind_parameter_index = Module["_sqlite3_bind_parameter_index"] = wasmExports2["sqlite3_bind_parameter_index"];\n _sqlite3_transfer_bindings = Module["_sqlite3_transfer_bindings"] = wasmExports2["sqlite3_transfer_bindings"];\n _sqlite3_stmt_isexplain = Module["_sqlite3_stmt_isexplain"] = wasmExports2["sqlite3_stmt_isexplain"];\n _sqlite3_next_stmt = Module["_sqlite3_next_stmt"] = wasmExports2["sqlite3_next_stmt"];\n _sqlite3_stmt_status = Module["_sqlite3_stmt_status"] = wasmExports2["sqlite3_stmt_status"];\n _sqlite3_sql = Module["_sqlite3_sql"] = wasmExports2["sqlite3_sql"];\n _sqlite3_value_numeric_type = Module["_sqlite3_value_numeric_type"] = wasmExports2["sqlite3_value_numeric_type"];\n _sqlite3_blob_reopen = Module["_sqlite3_blob_reopen"] = wasmExports2["sqlite3_blob_reopen"];\n _sqlite3_strglob = Module["_sqlite3_strglob"] = wasmExports2["sqlite3_strglob"];\n _sqlite3_strlike = Module["_sqlite3_strlike"] = wasmExports2["sqlite3_strlike"];\n _sqlite3_load_extension = Module["_sqlite3_load_extension"] = wasmExports2["sqlite3_load_extension"];\n _sqlite3_enable_load_extension = Module["_sqlite3_enable_load_extension"] = wasmExports2["sqlite3_enable_load_extension"];\n _sqlite3_auto_extension = Module["_sqlite3_auto_extension"] = wasmExports2["sqlite3_auto_extension"];\n _sqlite3_cancel_auto_extension = Module["_sqlite3_cancel_auto_extension"] = wasmExports2["sqlite3_cancel_auto_extension"];\n _sqlite3_reset_auto_extension = Module["_sqlite3_reset_auto_extension"] = wasmExports2["sqlite3_reset_auto_extension"];\n _sqlite3_prepare = Module["_sqlite3_prepare"] = wasmExports2["sqlite3_prepare"];\n _sqlite3_prepare_v3 = Module["_sqlite3_prepare_v3"] = wasmExports2["sqlite3_prepare_v3"];\n _sqlite3_prepare16 = Module["_sqlite3_prepare16"] = wasmExports2["sqlite3_prepare16"];\n _sqlite3_prepare16_v2 = Module["_sqlite3_prepare16_v2"] = wasmExports2["sqlite3_prepare16_v2"];\n _sqlite3_prepare16_v3 = Module["_sqlite3_prepare16_v3"] = wasmExports2["sqlite3_prepare16_v3"];\n _sqlite3_get_table = Module["_sqlite3_get_table"] = wasmExports2["sqlite3_get_table"];\n _sqlite3_free_table = Module["_sqlite3_free_table"] = wasmExports2["sqlite3_free_table"];\n _sqlite3_create_module = Module["_sqlite3_create_module"] = wasmExports2["sqlite3_create_module"];\n _sqlite3_create_module_v2 = Module["_sqlite3_create_module_v2"] = wasmExports2["sqlite3_create_module_v2"];\n _sqlite3_drop_modules = Module["_sqlite3_drop_modules"] = wasmExports2["sqlite3_drop_modules"];\n _sqlite3_declare_vtab = Module["_sqlite3_declare_vtab"] = wasmExports2["sqlite3_declare_vtab"];\n _sqlite3_vtab_on_conflict = Module["_sqlite3_vtab_on_conflict"] = wasmExports2["sqlite3_vtab_on_conflict"];\n _sqlite3_vtab_config = Module["_sqlite3_vtab_config"] = wasmExports2["sqlite3_vtab_config"];\n _sqlite3_vtab_collation = Module["_sqlite3_vtab_collation"] = wasmExports2["sqlite3_vtab_collation"];\n _sqlite3_vtab_in = Module["_sqlite3_vtab_in"] = wasmExports2["sqlite3_vtab_in"];\n _sqlite3_vtab_rhs_value = Module["_sqlite3_vtab_rhs_value"] = wasmExports2["sqlite3_vtab_rhs_value"];\n _sqlite3_vtab_distinct = Module["_sqlite3_vtab_distinct"] = wasmExports2["sqlite3_vtab_distinct"];\n _sqlite3_keyword_name = Module["_sqlite3_keyword_name"] = wasmExports2["sqlite3_keyword_name"];\n _sqlite3_keyword_count = Module["_sqlite3_keyword_count"] = wasmExports2["sqlite3_keyword_count"];\n _sqlite3_keyword_check = Module["_sqlite3_keyword_check"] = wasmExports2["sqlite3_keyword_check"];\n _sqlite3_complete16 = Module["_sqlite3_complete16"] = wasmExports2["sqlite3_complete16"];\n _sqlite3_shutdown = Module["_sqlite3_shutdown"] = wasmExports2["sqlite3_shutdown"];\n _sqlite3_db_mutex = Module["_sqlite3_db_mutex"] = wasmExports2["sqlite3_db_mutex"];\n _sqlite3_db_release_memory = Module["_sqlite3_db_release_memory"] = wasmExports2["sqlite3_db_release_memory"];\n _sqlite3_db_cacheflush = Module["_sqlite3_db_cacheflush"] = wasmExports2["sqlite3_db_cacheflush"];\n _sqlite3_set_last_insert_rowid = Module["_sqlite3_set_last_insert_rowid"] = wasmExports2["sqlite3_set_last_insert_rowid"];\n _sqlite3_changes64 = Module["_sqlite3_changes64"] = wasmExports2["sqlite3_changes64"];\n _sqlite3_total_changes64 = Module["_sqlite3_total_changes64"] = wasmExports2["sqlite3_total_changes64"];\n _sqlite3_txn_state = Module["_sqlite3_txn_state"] = wasmExports2["sqlite3_txn_state"];\n _sqlite3_busy_handler = Module["_sqlite3_busy_handler"] = wasmExports2["sqlite3_busy_handler"];\n _sqlite3_create_function = Module["_sqlite3_create_function"] = wasmExports2["sqlite3_create_function"];\n _sqlite3_create_function16 = Module["_sqlite3_create_function16"] = wasmExports2["sqlite3_create_function16"];\n _sqlite3_overload_function = Module["_sqlite3_overload_function"] = wasmExports2["sqlite3_overload_function"];\n _sqlite3_trace = Module["_sqlite3_trace"] = wasmExports2["sqlite3_trace"];\n _sqlite3_profile = Module["_sqlite3_profile"] = wasmExports2["sqlite3_profile"];\n _sqlite3_commit_hook = Module["_sqlite3_commit_hook"] = wasmExports2["sqlite3_commit_hook"];\n _sqlite3_update_hook = Module["_sqlite3_update_hook"] = wasmExports2["sqlite3_update_hook"];\n _sqlite3_rollback_hook = Module["_sqlite3_rollback_hook"] = wasmExports2["sqlite3_rollback_hook"];\n _sqlite3_autovacuum_pages = Module["_sqlite3_autovacuum_pages"] = wasmExports2["sqlite3_autovacuum_pages"];\n _sqlite3_wal_autocheckpoint = Module["_sqlite3_wal_autocheckpoint"] = wasmExports2["sqlite3_wal_autocheckpoint"];\n _sqlite3_wal_hook = Module["_sqlite3_wal_hook"] = wasmExports2["sqlite3_wal_hook"];\n _sqlite3_wal_checkpoint_v2 = Module["_sqlite3_wal_checkpoint_v2"] = wasmExports2["sqlite3_wal_checkpoint_v2"];\n _sqlite3_wal_checkpoint = Module["_sqlite3_wal_checkpoint"] = wasmExports2["sqlite3_wal_checkpoint"];\n _sqlite3_error_offset = Module["_sqlite3_error_offset"] = wasmExports2["sqlite3_error_offset"];\n _sqlite3_errmsg16 = Module["_sqlite3_errmsg16"] = wasmExports2["sqlite3_errmsg16"];\n _sqlite3_system_errno = Module["_sqlite3_system_errno"] = wasmExports2["sqlite3_system_errno"];\n _sqlite3_open = Module["_sqlite3_open"] = wasmExports2["sqlite3_open"];\n _sqlite3_free_filename = Module["_sqlite3_free_filename"] = wasmExports2["sqlite3_free_filename"];\n _sqlite3_open16 = Module["_sqlite3_open16"] = wasmExports2["sqlite3_open16"];\n _sqlite3_create_collation = Module["_sqlite3_create_collation"] = wasmExports2["sqlite3_create_collation"];\n _sqlite3_create_collation16 = Module["_sqlite3_create_collation16"] = wasmExports2["sqlite3_create_collation16"];\n _sqlite3_collation_needed = Module["_sqlite3_collation_needed"] = wasmExports2["sqlite3_collation_needed"];\n _sqlite3_collation_needed16 = Module["_sqlite3_collation_needed16"] = wasmExports2["sqlite3_collation_needed16"];\n _sqlite3_global_recover = Module["_sqlite3_global_recover"] = wasmExports2["sqlite3_global_recover"];\n _sqlite3_thread_cleanup = Module["_sqlite3_thread_cleanup"] = wasmExports2["sqlite3_thread_cleanup"];\n _sqlite3_table_column_metadata = Module["_sqlite3_table_column_metadata"] = wasmExports2["sqlite3_table_column_metadata"];\n _sqlite3_extended_result_codes = Module["_sqlite3_extended_result_codes"] = wasmExports2["sqlite3_extended_result_codes"];\n _sqlite3_test_control = Module["_sqlite3_test_control"] = wasmExports2["sqlite3_test_control"];\n _sqlite3_create_filename = Module["_sqlite3_create_filename"] = wasmExports2["sqlite3_create_filename"];\n _sqlite3_uri_key = Module["_sqlite3_uri_key"] = wasmExports2["sqlite3_uri_key"];\n _sqlite3_uri_int64 = Module["_sqlite3_uri_int64"] = wasmExports2["sqlite3_uri_int64"];\n _sqlite3_filename_database = Module["_sqlite3_filename_database"] = wasmExports2["sqlite3_filename_database"];\n _sqlite3_filename_journal = Module["_sqlite3_filename_journal"] = wasmExports2["sqlite3_filename_journal"];\n _sqlite3_filename_wal = Module["_sqlite3_filename_wal"] = wasmExports2["sqlite3_filename_wal"];\n _sqlite3_db_name = Module["_sqlite3_db_name"] = wasmExports2["sqlite3_db_name"];\n _sqlite3_db_filename = Module["_sqlite3_db_filename"] = wasmExports2["sqlite3_db_filename"];\n _sqlite3_db_readonly = Module["_sqlite3_db_readonly"] = wasmExports2["sqlite3_db_readonly"];\n _sqlite3_compileoption_used = Module["_sqlite3_compileoption_used"] = wasmExports2["sqlite3_compileoption_used"];\n _sqlite3_compileoption_get = Module["_sqlite3_compileoption_get"] = wasmExports2["sqlite3_compileoption_get"];\n _sqlite3_rtree_geometry_callback = Module["_sqlite3_rtree_geometry_callback"] = wasmExports2["sqlite3_rtree_geometry_callback"];\n _sqlite3_rtree_query_callback = Module["_sqlite3_rtree_query_callback"] = wasmExports2["sqlite3_rtree_query_callback"];\n _sqlite3_sourceid = Module["_sqlite3_sourceid"] = wasmExports2["sqlite3_sourceid"];\n ___floatditf = Module["___floatditf"] = wasmExports2["__floatditf"];\n _qsort = Module["_qsort"] = wasmExports2["qsort"];\n _posix_fallocate = Module["_posix_fallocate"] = wasmExports2["posix_fallocate"];\n _geteuid = Module["_geteuid"] = wasmExports2["geteuid"];\n _trunc = Module["_trunc"] = wasmExports2["trunc"];\n _FSE_versionNumber = Module["_FSE_versionNumber"] = wasmExports2["FSE_versionNumber"];\n _FSE_isError = Module["_FSE_isError"] = wasmExports2["FSE_isError"];\n _FSE_getErrorName = Module["_FSE_getErrorName"] = wasmExports2["FSE_getErrorName"];\n _ERR_getErrorString = Module["_ERR_getErrorString"] = wasmExports2["ERR_getErrorString"];\n _HUF_isError = Module["_HUF_isError"] = wasmExports2["HUF_isError"];\n _HUF_getErrorName = Module["_HUF_getErrorName"] = wasmExports2["HUF_getErrorName"];\n _FSE_readNCount_bmi2 = Module["_FSE_readNCount_bmi2"] = wasmExports2["FSE_readNCount_bmi2"];\n _FSE_readNCount = Module["_FSE_readNCount"] = wasmExports2["FSE_readNCount"];\n _HUF_readStats = Module["_HUF_readStats"] = wasmExports2["HUF_readStats"];\n _HUF_readStats_wksp = Module["_HUF_readStats_wksp"] = wasmExports2["HUF_readStats_wksp"];\n _FSE_decompress_wksp_bmi2 = Module["_FSE_decompress_wksp_bmi2"] = wasmExports2["FSE_decompress_wksp_bmi2"];\n _FSE_buildDTable_wksp = Module["_FSE_buildDTable_wksp"] = wasmExports2["FSE_buildDTable_wksp"];\n _POOL_create = Module["_POOL_create"] = wasmExports2["POOL_create"];\n _POOL_create_advanced = Module["_POOL_create_advanced"] = wasmExports2["POOL_create_advanced"];\n _POOL_free = Module["_POOL_free"] = wasmExports2["POOL_free"];\n _POOL_joinJobs = Module["_POOL_joinJobs"] = wasmExports2["POOL_joinJobs"];\n _POOL_resize = Module["_POOL_resize"] = wasmExports2["POOL_resize"];\n _POOL_add = Module["_POOL_add"] = wasmExports2["POOL_add"];\n _POOL_tryAdd = Module["_POOL_tryAdd"] = wasmExports2["POOL_tryAdd"];\n _POOL_sizeof = Module["_POOL_sizeof"] = wasmExports2["POOL_sizeof"];\n _ZSTD_XXH_versionNumber = Module["_ZSTD_XXH_versionNumber"] = wasmExports2["ZSTD_XXH_versionNumber"];\n _ZSTD_XXH32 = Module["_ZSTD_XXH32"] = wasmExports2["ZSTD_XXH32"];\n _ZSTD_XXH32_createState = Module["_ZSTD_XXH32_createState"] = wasmExports2["ZSTD_XXH32_createState"];\n _ZSTD_XXH32_freeState = Module["_ZSTD_XXH32_freeState"] = wasmExports2["ZSTD_XXH32_freeState"];\n _ZSTD_XXH32_copyState = Module["_ZSTD_XXH32_copyState"] = wasmExports2["ZSTD_XXH32_copyState"];\n _ZSTD_XXH32_reset = Module["_ZSTD_XXH32_reset"] = wasmExports2["ZSTD_XXH32_reset"];\n _ZSTD_XXH32_update = Module["_ZSTD_XXH32_update"] = wasmExports2["ZSTD_XXH32_update"];\n _ZSTD_XXH32_digest = Module["_ZSTD_XXH32_digest"] = wasmExports2["ZSTD_XXH32_digest"];\n _ZSTD_XXH32_canonicalFromHash = Module["_ZSTD_XXH32_canonicalFromHash"] = wasmExports2["ZSTD_XXH32_canonicalFromHash"];\n _ZSTD_XXH32_hashFromCanonical = Module["_ZSTD_XXH32_hashFromCanonical"] = wasmExports2["ZSTD_XXH32_hashFromCanonical"];\n _ZSTD_XXH64 = Module["_ZSTD_XXH64"] = wasmExports2["ZSTD_XXH64"];\n _ZSTD_XXH64_createState = Module["_ZSTD_XXH64_createState"] = wasmExports2["ZSTD_XXH64_createState"];\n _ZSTD_XXH64_freeState = Module["_ZSTD_XXH64_freeState"] = wasmExports2["ZSTD_XXH64_freeState"];\n _ZSTD_XXH64_copyState = Module["_ZSTD_XXH64_copyState"] = wasmExports2["ZSTD_XXH64_copyState"];\n _ZSTD_XXH64_reset = Module["_ZSTD_XXH64_reset"] = wasmExports2["ZSTD_XXH64_reset"];\n _ZSTD_XXH64_update = Module["_ZSTD_XXH64_update"] = wasmExports2["ZSTD_XXH64_update"];\n _ZSTD_XXH64_digest = Module["_ZSTD_XXH64_digest"] = wasmExports2["ZSTD_XXH64_digest"];\n _ZSTD_XXH64_canonicalFromHash = Module["_ZSTD_XXH64_canonicalFromHash"] = wasmExports2["ZSTD_XXH64_canonicalFromHash"];\n _ZSTD_XXH64_hashFromCanonical = Module["_ZSTD_XXH64_hashFromCanonical"] = wasmExports2["ZSTD_XXH64_hashFromCanonical"];\n _ZSTD_getErrorCode = Module["_ZSTD_getErrorCode"] = wasmExports2["ZSTD_getErrorCode"];\n _ZSTD_getErrorString = Module["_ZSTD_getErrorString"] = wasmExports2["ZSTD_getErrorString"];\n _FSE_buildCTable_wksp = Module["_FSE_buildCTable_wksp"] = wasmExports2["FSE_buildCTable_wksp"];\n _FSE_NCountWriteBound = Module["_FSE_NCountWriteBound"] = wasmExports2["FSE_NCountWriteBound"];\n _FSE_writeNCount = Module["_FSE_writeNCount"] = wasmExports2["FSE_writeNCount"];\n _FSE_optimalTableLog_internal = Module["_FSE_optimalTableLog_internal"] = wasmExports2["FSE_optimalTableLog_internal"];\n _FSE_optimalTableLog = Module["_FSE_optimalTableLog"] = wasmExports2["FSE_optimalTableLog"];\n _FSE_normalizeCount = Module["_FSE_normalizeCount"] = wasmExports2["FSE_normalizeCount"];\n _FSE_buildCTable_rle = Module["_FSE_buildCTable_rle"] = wasmExports2["FSE_buildCTable_rle"];\n _FSE_compress_usingCTable = Module["_FSE_compress_usingCTable"] = wasmExports2["FSE_compress_usingCTable"];\n _FSE_compressBound = Module["_FSE_compressBound"] = wasmExports2["FSE_compressBound"];\n _HIST_isError = Module["_HIST_isError"] = wasmExports2["HIST_isError"];\n _HIST_add = Module["_HIST_add"] = wasmExports2["HIST_add"];\n _HIST_count_simple = Module["_HIST_count_simple"] = wasmExports2["HIST_count_simple"];\n _HIST_countFast_wksp = Module["_HIST_countFast_wksp"] = wasmExports2["HIST_countFast_wksp"];\n _HIST_count_wksp = Module["_HIST_count_wksp"] = wasmExports2["HIST_count_wksp"];\n _HIST_countFast = Module["_HIST_countFast"] = wasmExports2["HIST_countFast"];\n _HIST_count = Module["_HIST_count"] = wasmExports2["HIST_count"];\n _HUF_readCTableHeader = Module["_HUF_readCTableHeader"] = wasmExports2["HUF_readCTableHeader"];\n _HUF_writeCTable_wksp = Module["_HUF_writeCTable_wksp"] = wasmExports2["HUF_writeCTable_wksp"];\n _HUF_readCTable = Module["_HUF_readCTable"] = wasmExports2["HUF_readCTable"];\n _HUF_getNbBitsFromCTable = Module["_HUF_getNbBitsFromCTable"] = wasmExports2["HUF_getNbBitsFromCTable"];\n _HUF_buildCTable_wksp = Module["_HUF_buildCTable_wksp"] = wasmExports2["HUF_buildCTable_wksp"];\n _HUF_estimateCompressedSize = Module["_HUF_estimateCompressedSize"] = wasmExports2["HUF_estimateCompressedSize"];\n _HUF_validateCTable = Module["_HUF_validateCTable"] = wasmExports2["HUF_validateCTable"];\n _HUF_compressBound = Module["_HUF_compressBound"] = wasmExports2["HUF_compressBound"];\n _HUF_compress1X_usingCTable = Module["_HUF_compress1X_usingCTable"] = wasmExports2["HUF_compress1X_usingCTable"];\n _HUF_compress4X_usingCTable = Module["_HUF_compress4X_usingCTable"] = wasmExports2["HUF_compress4X_usingCTable"];\n _HUF_cardinality = Module["_HUF_cardinality"] = wasmExports2["HUF_cardinality"];\n _HUF_minTableLog = Module["_HUF_minTableLog"] = wasmExports2["HUF_minTableLog"];\n _HUF_optimalTableLog = Module["_HUF_optimalTableLog"] = wasmExports2["HUF_optimalTableLog"];\n _HUF_compress1X_repeat = Module["_HUF_compress1X_repeat"] = wasmExports2["HUF_compress1X_repeat"];\n _HUF_compress4X_repeat = Module["_HUF_compress4X_repeat"] = wasmExports2["HUF_compress4X_repeat"];\n _ZSTD_createCCtx_advanced = Module["_ZSTD_createCCtx_advanced"] = wasmExports2["ZSTD_createCCtx_advanced"];\n _ZSTD_initStaticCCtx = Module["_ZSTD_initStaticCCtx"] = wasmExports2["ZSTD_initStaticCCtx"];\n _ZSTD_sizeof_CCtx = Module["_ZSTD_sizeof_CCtx"] = wasmExports2["ZSTD_sizeof_CCtx"];\n _ZSTD_sizeof_CStream = Module["_ZSTD_sizeof_CStream"] = wasmExports2["ZSTD_sizeof_CStream"];\n _ZSTD_getSeqStore = Module["_ZSTD_getSeqStore"] = wasmExports2["ZSTD_getSeqStore"];\n _ZSTD_createCCtxParams = Module["_ZSTD_createCCtxParams"] = wasmExports2["ZSTD_createCCtxParams"];\n _ZSTD_freeCCtxParams = Module["_ZSTD_freeCCtxParams"] = wasmExports2["ZSTD_freeCCtxParams"];\n _ZSTD_CCtxParams_reset = Module["_ZSTD_CCtxParams_reset"] = wasmExports2["ZSTD_CCtxParams_reset"];\n _ZSTD_CCtxParams_init = Module["_ZSTD_CCtxParams_init"] = wasmExports2["ZSTD_CCtxParams_init"];\n _ZSTD_CCtxParams_init_advanced = Module["_ZSTD_CCtxParams_init_advanced"] = wasmExports2["ZSTD_CCtxParams_init_advanced"];\n _ZSTD_checkCParams = Module["_ZSTD_checkCParams"] = wasmExports2["ZSTD_checkCParams"];\n _ZSTD_CCtxParams_setParameter = Module["_ZSTD_CCtxParams_setParameter"] = wasmExports2["ZSTD_CCtxParams_setParameter"];\n _ZSTD_CCtx_getParameter = Module["_ZSTD_CCtx_getParameter"] = wasmExports2["ZSTD_CCtx_getParameter"];\n _ZSTD_CCtxParams_getParameter = Module["_ZSTD_CCtxParams_getParameter"] = wasmExports2["ZSTD_CCtxParams_getParameter"];\n _ZSTD_CCtx_setParametersUsingCCtxParams = Module["_ZSTD_CCtx_setParametersUsingCCtxParams"] = wasmExports2["ZSTD_CCtx_setParametersUsingCCtxParams"];\n _ZSTD_CCtx_setCParams = Module["_ZSTD_CCtx_setCParams"] = wasmExports2["ZSTD_CCtx_setCParams"];\n _ZSTD_CCtx_setFParams = Module["_ZSTD_CCtx_setFParams"] = wasmExports2["ZSTD_CCtx_setFParams"];\n _ZSTD_CCtx_setParams = Module["_ZSTD_CCtx_setParams"] = wasmExports2["ZSTD_CCtx_setParams"];\n _ZSTD_CCtx_loadDictionary_advanced = Module["_ZSTD_CCtx_loadDictionary_advanced"] = wasmExports2["ZSTD_CCtx_loadDictionary_advanced"];\n _ZSTD_CCtx_loadDictionary_byReference = Module["_ZSTD_CCtx_loadDictionary_byReference"] = wasmExports2["ZSTD_CCtx_loadDictionary_byReference"];\n _ZSTD_CCtx_refThreadPool = Module["_ZSTD_CCtx_refThreadPool"] = wasmExports2["ZSTD_CCtx_refThreadPool"];\n _ZSTD_CCtx_refPrefix_advanced = Module["_ZSTD_CCtx_refPrefix_advanced"] = wasmExports2["ZSTD_CCtx_refPrefix_advanced"];\n _ZSTD_cycleLog = Module["_ZSTD_cycleLog"] = wasmExports2["ZSTD_cycleLog"];\n _ZSTD_adjustCParams = Module["_ZSTD_adjustCParams"] = wasmExports2["ZSTD_adjustCParams"];\n _ZSTD_getCParamsFromCCtxParams = Module["_ZSTD_getCParamsFromCCtxParams"] = wasmExports2["ZSTD_getCParamsFromCCtxParams"];\n _ZSTD_estimateCCtxSize_usingCCtxParams = Module["_ZSTD_estimateCCtxSize_usingCCtxParams"] = wasmExports2["ZSTD_estimateCCtxSize_usingCCtxParams"];\n _ZSTD_ldm_getTableSize = Module["_ZSTD_ldm_getTableSize"] = wasmExports2["ZSTD_ldm_getTableSize"];\n _ZSTD_ldm_getMaxNbSeq = Module["_ZSTD_ldm_getMaxNbSeq"] = wasmExports2["ZSTD_ldm_getMaxNbSeq"];\n _ZSTD_estimateCCtxSize_usingCParams = Module["_ZSTD_estimateCCtxSize_usingCParams"] = wasmExports2["ZSTD_estimateCCtxSize_usingCParams"];\n _ZSTD_ldm_adjustParameters = Module["_ZSTD_ldm_adjustParameters"] = wasmExports2["ZSTD_ldm_adjustParameters"];\n _ZSTD_estimateCCtxSize = Module["_ZSTD_estimateCCtxSize"] = wasmExports2["ZSTD_estimateCCtxSize"];\n _ZSTD_estimateCStreamSize_usingCCtxParams = Module["_ZSTD_estimateCStreamSize_usingCCtxParams"] = wasmExports2["ZSTD_estimateCStreamSize_usingCCtxParams"];\n _ZSTD_estimateCStreamSize_usingCParams = Module["_ZSTD_estimateCStreamSize_usingCParams"] = wasmExports2["ZSTD_estimateCStreamSize_usingCParams"];\n _ZSTD_estimateCStreamSize = Module["_ZSTD_estimateCStreamSize"] = wasmExports2["ZSTD_estimateCStreamSize"];\n _ZSTD_getFrameProgression = Module["_ZSTD_getFrameProgression"] = wasmExports2["ZSTD_getFrameProgression"];\n _ZSTD_toFlushNow = Module["_ZSTD_toFlushNow"] = wasmExports2["ZSTD_toFlushNow"];\n _ZSTD_reset_compressedBlockState = Module["_ZSTD_reset_compressedBlockState"] = wasmExports2["ZSTD_reset_compressedBlockState"];\n _ZSTD_invalidateRepCodes = Module["_ZSTD_invalidateRepCodes"] = wasmExports2["ZSTD_invalidateRepCodes"];\n _ZSTD_copyCCtx = Module["_ZSTD_copyCCtx"] = wasmExports2["ZSTD_copyCCtx"];\n _ZSTD_seqToCodes = Module["_ZSTD_seqToCodes"] = wasmExports2["ZSTD_seqToCodes"];\n _ZSTD_selectBlockCompressor = Module["_ZSTD_selectBlockCompressor"] = wasmExports2["ZSTD_selectBlockCompressor"];\n _ZSTD_resetSeqStore = Module["_ZSTD_resetSeqStore"] = wasmExports2["ZSTD_resetSeqStore"];\n _ZSTD_sequenceBound = Module["_ZSTD_sequenceBound"] = wasmExports2["ZSTD_sequenceBound"];\n _ZSTD_generateSequences = Module["_ZSTD_generateSequences"] = wasmExports2["ZSTD_generateSequences"];\n _ZSTD_compress2 = Module["_ZSTD_compress2"] = wasmExports2["ZSTD_compress2"];\n _ZSTD_mergeBlockDelimiters = Module["_ZSTD_mergeBlockDelimiters"] = wasmExports2["ZSTD_mergeBlockDelimiters"];\n _ZSTD_buildBlockEntropyStats = Module["_ZSTD_buildBlockEntropyStats"] = wasmExports2["ZSTD_buildBlockEntropyStats"];\n _ZSTD_writeSkippableFrame = Module["_ZSTD_writeSkippableFrame"] = wasmExports2["ZSTD_writeSkippableFrame"];\n _ZSTD_writeLastEmptyBlock = Module["_ZSTD_writeLastEmptyBlock"] = wasmExports2["ZSTD_writeLastEmptyBlock"];\n _ZSTD_referenceExternalSequences = Module["_ZSTD_referenceExternalSequences"] = wasmExports2["ZSTD_referenceExternalSequences"];\n _ZSTD_compressContinue_public = Module["_ZSTD_compressContinue_public"] = wasmExports2["ZSTD_compressContinue_public"];\n _ZSTD_splitBlock = Module["_ZSTD_splitBlock"] = wasmExports2["ZSTD_splitBlock"];\n _ZSTD_compressSuperBlock = Module["_ZSTD_compressSuperBlock"] = wasmExports2["ZSTD_compressSuperBlock"];\n _ZSTD_compressContinue = Module["_ZSTD_compressContinue"] = wasmExports2["ZSTD_compressContinue"];\n _ZSTD_getBlockSize = Module["_ZSTD_getBlockSize"] = wasmExports2["ZSTD_getBlockSize"];\n _ZSTD_compressBlock_deprecated = Module["_ZSTD_compressBlock_deprecated"] = wasmExports2["ZSTD_compressBlock_deprecated"];\n _ZSTD_compressBlock = Module["_ZSTD_compressBlock"] = wasmExports2["ZSTD_compressBlock"];\n _ZSTD_loadCEntropy = Module["_ZSTD_loadCEntropy"] = wasmExports2["ZSTD_loadCEntropy"];\n _ZSTD_compressBegin_advanced_internal = Module["_ZSTD_compressBegin_advanced_internal"] = wasmExports2["ZSTD_compressBegin_advanced_internal"];\n _ZSTD_compressBegin_advanced = Module["_ZSTD_compressBegin_advanced"] = wasmExports2["ZSTD_compressBegin_advanced"];\n _ZSTD_compressBegin_usingDict = Module["_ZSTD_compressBegin_usingDict"] = wasmExports2["ZSTD_compressBegin_usingDict"];\n _ZSTD_compressBegin = Module["_ZSTD_compressBegin"] = wasmExports2["ZSTD_compressBegin"];\n _ZSTD_CCtx_trace = Module["_ZSTD_CCtx_trace"] = wasmExports2["ZSTD_CCtx_trace"];\n _ZSTD_compressEnd_public = Module["_ZSTD_compressEnd_public"] = wasmExports2["ZSTD_compressEnd_public"];\n _ZSTD_compressEnd = Module["_ZSTD_compressEnd"] = wasmExports2["ZSTD_compressEnd"];\n _ZSTD_compress_advanced = Module["_ZSTD_compress_advanced"] = wasmExports2["ZSTD_compress_advanced"];\n _ZSTD_compress_advanced_internal = Module["_ZSTD_compress_advanced_internal"] = wasmExports2["ZSTD_compress_advanced_internal"];\n _ZSTD_compress_usingDict = Module["_ZSTD_compress_usingDict"] = wasmExports2["ZSTD_compress_usingDict"];\n _ZSTD_compressCCtx = Module["_ZSTD_compressCCtx"] = wasmExports2["ZSTD_compressCCtx"];\n _ZSTD_compress = Module["_ZSTD_compress"] = wasmExports2["ZSTD_compress"];\n _ZSTD_estimateCDictSize_advanced = Module["_ZSTD_estimateCDictSize_advanced"] = wasmExports2["ZSTD_estimateCDictSize_advanced"];\n _ZSTD_estimateCDictSize = Module["_ZSTD_estimateCDictSize"] = wasmExports2["ZSTD_estimateCDictSize"];\n _ZSTD_sizeof_CDict = Module["_ZSTD_sizeof_CDict"] = wasmExports2["ZSTD_sizeof_CDict"];\n _ZSTD_createCDict_advanced = Module["_ZSTD_createCDict_advanced"] = wasmExports2["ZSTD_createCDict_advanced"];\n _ZSTD_createCDict_advanced2 = Module["_ZSTD_createCDict_advanced2"] = wasmExports2["ZSTD_createCDict_advanced2"];\n _ZSTD_createCDict_byReference = Module["_ZSTD_createCDict_byReference"] = wasmExports2["ZSTD_createCDict_byReference"];\n _ZSTD_initStaticCDict = Module["_ZSTD_initStaticCDict"] = wasmExports2["ZSTD_initStaticCDict"];\n _ZSTD_getCParamsFromCDict = Module["_ZSTD_getCParamsFromCDict"] = wasmExports2["ZSTD_getCParamsFromCDict"];\n _ZSTD_getDictID_fromCDict = Module["_ZSTD_getDictID_fromCDict"] = wasmExports2["ZSTD_getDictID_fromCDict"];\n _ZSTD_compressBegin_usingCDict_advanced = Module["_ZSTD_compressBegin_usingCDict_advanced"] = wasmExports2["ZSTD_compressBegin_usingCDict_advanced"];\n _ZSTD_compressBegin_usingCDict_deprecated = Module["_ZSTD_compressBegin_usingCDict_deprecated"] = wasmExports2["ZSTD_compressBegin_usingCDict_deprecated"];\n _ZSTD_compressBegin_usingCDict = Module["_ZSTD_compressBegin_usingCDict"] = wasmExports2["ZSTD_compressBegin_usingCDict"];\n _ZSTD_compress_usingCDict_advanced = Module["_ZSTD_compress_usingCDict_advanced"] = wasmExports2["ZSTD_compress_usingCDict_advanced"];\n _ZSTD_compress_usingCDict = Module["_ZSTD_compress_usingCDict"] = wasmExports2["ZSTD_compress_usingCDict"];\n _ZSTD_createCStream = Module["_ZSTD_createCStream"] = wasmExports2["ZSTD_createCStream"];\n _ZSTD_createCStream_advanced = Module["_ZSTD_createCStream_advanced"] = wasmExports2["ZSTD_createCStream_advanced"];\n _ZSTD_initStaticCStream = Module["_ZSTD_initStaticCStream"] = wasmExports2["ZSTD_initStaticCStream"];\n _ZSTD_freeCStream = Module["_ZSTD_freeCStream"] = wasmExports2["ZSTD_freeCStream"];\n _ZSTD_CStreamInSize = Module["_ZSTD_CStreamInSize"] = wasmExports2["ZSTD_CStreamInSize"];\n _ZSTD_CStreamOutSize = Module["_ZSTD_CStreamOutSize"] = wasmExports2["ZSTD_CStreamOutSize"];\n _ZSTD_resetCStream = Module["_ZSTD_resetCStream"] = wasmExports2["ZSTD_resetCStream"];\n _ZSTD_initCStream_internal = Module["_ZSTD_initCStream_internal"] = wasmExports2["ZSTD_initCStream_internal"];\n _ZSTD_initCStream_usingCDict_advanced = Module["_ZSTD_initCStream_usingCDict_advanced"] = wasmExports2["ZSTD_initCStream_usingCDict_advanced"];\n _ZSTD_initCStream_usingCDict = Module["_ZSTD_initCStream_usingCDict"] = wasmExports2["ZSTD_initCStream_usingCDict"];\n _ZSTD_initCStream_advanced = Module["_ZSTD_initCStream_advanced"] = wasmExports2["ZSTD_initCStream_advanced"];\n _ZSTD_initCStream_usingDict = Module["_ZSTD_initCStream_usingDict"] = wasmExports2["ZSTD_initCStream_usingDict"];\n _ZSTD_initCStream_srcSize = Module["_ZSTD_initCStream_srcSize"] = wasmExports2["ZSTD_initCStream_srcSize"];\n _ZSTD_initCStream = Module["_ZSTD_initCStream"] = wasmExports2["ZSTD_initCStream"];\n _ZSTD_compressStream = Module["_ZSTD_compressStream"] = wasmExports2["ZSTD_compressStream"];\n _ZSTD_compressStream2_simpleArgs = Module["_ZSTD_compressStream2_simpleArgs"] = wasmExports2["ZSTD_compressStream2_simpleArgs"];\n _ZSTD_compressSequences = Module["_ZSTD_compressSequences"] = wasmExports2["ZSTD_compressSequences"];\n _ZSTD_convertBlockSequences = Module["_ZSTD_convertBlockSequences"] = wasmExports2["ZSTD_convertBlockSequences"];\n _ZSTD_get1BlockSummary = Module["_ZSTD_get1BlockSummary"] = wasmExports2["ZSTD_get1BlockSummary"];\n _ZSTD_compressSequencesAndLiterals = Module["_ZSTD_compressSequencesAndLiterals"] = wasmExports2["ZSTD_compressSequencesAndLiterals"];\n _ZSTD_flushStream = Module["_ZSTD_flushStream"] = wasmExports2["ZSTD_flushStream"];\n _ZSTD_endStream = Module["_ZSTD_endStream"] = wasmExports2["ZSTD_endStream"];\n _ZSTD_getCParams = Module["_ZSTD_getCParams"] = wasmExports2["ZSTD_getCParams"];\n _ZSTD_getParams = Module["_ZSTD_getParams"] = wasmExports2["ZSTD_getParams"];\n _ZSTD_registerSequenceProducer = Module["_ZSTD_registerSequenceProducer"] = wasmExports2["ZSTD_registerSequenceProducer"];\n _ZSTD_CCtxParams_registerSequenceProducer = Module["_ZSTD_CCtxParams_registerSequenceProducer"] = wasmExports2["ZSTD_CCtxParams_registerSequenceProducer"];\n _ZSTD_selectEncodingType = Module["_ZSTD_selectEncodingType"] = wasmExports2["ZSTD_selectEncodingType"];\n _ZSTD_buildCTable = Module["_ZSTD_buildCTable"] = wasmExports2["ZSTD_buildCTable"];\n _ZSTD_ldm_skipRawSeqStoreBytes = Module["_ZSTD_ldm_skipRawSeqStoreBytes"] = wasmExports2["ZSTD_ldm_skipRawSeqStoreBytes"];\n _ZSTD_ldm_skipSequences = Module["_ZSTD_ldm_skipSequences"] = wasmExports2["ZSTD_ldm_skipSequences"];\n _ZSTD_ldm_blockCompress = Module["_ZSTD_ldm_blockCompress"] = wasmExports2["ZSTD_ldm_blockCompress"];\n _ZSTD_ldm_generateSequences = Module["_ZSTD_ldm_generateSequences"] = wasmExports2["ZSTD_ldm_generateSequences"];\n _ZSTD_crossEntropyCost = Module["_ZSTD_crossEntropyCost"] = wasmExports2["ZSTD_crossEntropyCost"];\n _ZSTD_fseBitCost = Module["_ZSTD_fseBitCost"] = wasmExports2["ZSTD_fseBitCost"];\n _ZSTD_compressLiterals = Module["_ZSTD_compressLiterals"] = wasmExports2["ZSTD_compressLiterals"];\n _ZSTD_encodeSequences = Module["_ZSTD_encodeSequences"] = wasmExports2["ZSTD_encodeSequences"];\n _ZSTD_ldm_fillHashTable = Module["_ZSTD_ldm_fillHashTable"] = wasmExports2["ZSTD_ldm_fillHashTable"];\n _ZSTD_fillHashTable = Module["_ZSTD_fillHashTable"] = wasmExports2["ZSTD_fillHashTable"];\n _ZSTD_fillDoubleHashTable = Module["_ZSTD_fillDoubleHashTable"] = wasmExports2["ZSTD_fillDoubleHashTable"];\n _ZSTD_dedicatedDictSearch_lazy_loadDictionary = Module["_ZSTD_dedicatedDictSearch_lazy_loadDictionary"] = wasmExports2["ZSTD_dedicatedDictSearch_lazy_loadDictionary"];\n _ZSTD_row_update = Module["_ZSTD_row_update"] = wasmExports2["ZSTD_row_update"];\n _ZSTD_insertAndFindFirstIndex = Module["_ZSTD_insertAndFindFirstIndex"] = wasmExports2["ZSTD_insertAndFindFirstIndex"];\n _ZSTD_updateTree = Module["_ZSTD_updateTree"] = wasmExports2["ZSTD_updateTree"];\n _ZSTD_compressBlock_fast = Module["_ZSTD_compressBlock_fast"] = wasmExports2["ZSTD_compressBlock_fast"];\n _ZSTD_compressBlock_doubleFast = Module["_ZSTD_compressBlock_doubleFast"] = wasmExports2["ZSTD_compressBlock_doubleFast"];\n _ZSTD_compressBlock_greedy = Module["_ZSTD_compressBlock_greedy"] = wasmExports2["ZSTD_compressBlock_greedy"];\n _ZSTD_compressBlock_lazy = Module["_ZSTD_compressBlock_lazy"] = wasmExports2["ZSTD_compressBlock_lazy"];\n _ZSTD_compressBlock_lazy2 = Module["_ZSTD_compressBlock_lazy2"] = wasmExports2["ZSTD_compressBlock_lazy2"];\n _ZSTD_compressBlock_btlazy2 = Module["_ZSTD_compressBlock_btlazy2"] = wasmExports2["ZSTD_compressBlock_btlazy2"];\n _ZSTD_compressBlock_btopt = Module["_ZSTD_compressBlock_btopt"] = wasmExports2["ZSTD_compressBlock_btopt"];\n _ZSTD_compressBlock_btultra = Module["_ZSTD_compressBlock_btultra"] = wasmExports2["ZSTD_compressBlock_btultra"];\n _ZSTD_compressBlock_btultra2 = Module["_ZSTD_compressBlock_btultra2"] = wasmExports2["ZSTD_compressBlock_btultra2"];\n _ZSTD_compressBlock_fast_extDict = Module["_ZSTD_compressBlock_fast_extDict"] = wasmExports2["ZSTD_compressBlock_fast_extDict"];\n _ZSTD_compressBlock_doubleFast_extDict = Module["_ZSTD_compressBlock_doubleFast_extDict"] = wasmExports2["ZSTD_compressBlock_doubleFast_extDict"];\n _ZSTD_compressBlock_greedy_extDict = Module["_ZSTD_compressBlock_greedy_extDict"] = wasmExports2["ZSTD_compressBlock_greedy_extDict"];\n _ZSTD_compressBlock_lazy_extDict = Module["_ZSTD_compressBlock_lazy_extDict"] = wasmExports2["ZSTD_compressBlock_lazy_extDict"];\n _ZSTD_compressBlock_lazy2_extDict = Module["_ZSTD_compressBlock_lazy2_extDict"] = wasmExports2["ZSTD_compressBlock_lazy2_extDict"];\n _ZSTD_compressBlock_btlazy2_extDict = Module["_ZSTD_compressBlock_btlazy2_extDict"] = wasmExports2["ZSTD_compressBlock_btlazy2_extDict"];\n _ZSTD_compressBlock_btopt_extDict = Module["_ZSTD_compressBlock_btopt_extDict"] = wasmExports2["ZSTD_compressBlock_btopt_extDict"];\n _ZSTD_compressBlock_btultra_extDict = Module["_ZSTD_compressBlock_btultra_extDict"] = wasmExports2["ZSTD_compressBlock_btultra_extDict"];\n _ZSTD_compressBlock_fast_dictMatchState = Module["_ZSTD_compressBlock_fast_dictMatchState"] = wasmExports2["ZSTD_compressBlock_fast_dictMatchState"];\n _ZSTD_compressBlock_doubleFast_dictMatchState = Module["_ZSTD_compressBlock_doubleFast_dictMatchState"] = wasmExports2["ZSTD_compressBlock_doubleFast_dictMatchState"];\n _ZSTD_compressBlock_greedy_dictMatchState = Module["_ZSTD_compressBlock_greedy_dictMatchState"] = wasmExports2["ZSTD_compressBlock_greedy_dictMatchState"];\n _ZSTD_compressBlock_lazy_dictMatchState = Module["_ZSTD_compressBlock_lazy_dictMatchState"] = wasmExports2["ZSTD_compressBlock_lazy_dictMatchState"];\n _ZSTD_compressBlock_lazy2_dictMatchState = Module["_ZSTD_compressBlock_lazy2_dictMatchState"] = wasmExports2["ZSTD_compressBlock_lazy2_dictMatchState"];\n _ZSTD_compressBlock_btlazy2_dictMatchState = Module["_ZSTD_compressBlock_btlazy2_dictMatchState"] = wasmExports2["ZSTD_compressBlock_btlazy2_dictMatchState"];\n _ZSTD_compressBlock_btopt_dictMatchState = Module["_ZSTD_compressBlock_btopt_dictMatchState"] = wasmExports2["ZSTD_compressBlock_btopt_dictMatchState"];\n _ZSTD_compressBlock_btultra_dictMatchState = Module["_ZSTD_compressBlock_btultra_dictMatchState"] = wasmExports2["ZSTD_compressBlock_btultra_dictMatchState"];\n _ZSTD_compressBlock_greedy_dedicatedDictSearch = Module["_ZSTD_compressBlock_greedy_dedicatedDictSearch"] = wasmExports2["ZSTD_compressBlock_greedy_dedicatedDictSearch"];\n _ZSTD_compressBlock_lazy_dedicatedDictSearch = Module["_ZSTD_compressBlock_lazy_dedicatedDictSearch"] = wasmExports2["ZSTD_compressBlock_lazy_dedicatedDictSearch"];\n _ZSTD_compressBlock_lazy2_dedicatedDictSearch = Module["_ZSTD_compressBlock_lazy2_dedicatedDictSearch"] = wasmExports2["ZSTD_compressBlock_lazy2_dedicatedDictSearch"];\n _ZSTD_compressBlock_greedy_row = Module["_ZSTD_compressBlock_greedy_row"] = wasmExports2["ZSTD_compressBlock_greedy_row"];\n _ZSTD_compressBlock_lazy_row = Module["_ZSTD_compressBlock_lazy_row"] = wasmExports2["ZSTD_compressBlock_lazy_row"];\n _ZSTD_compressBlock_lazy2_row = Module["_ZSTD_compressBlock_lazy2_row"] = wasmExports2["ZSTD_compressBlock_lazy2_row"];\n _ZSTD_compressBlock_greedy_extDict_row = Module["_ZSTD_compressBlock_greedy_extDict_row"] = wasmExports2["ZSTD_compressBlock_greedy_extDict_row"];\n _ZSTD_compressBlock_lazy_extDict_row = Module["_ZSTD_compressBlock_lazy_extDict_row"] = wasmExports2["ZSTD_compressBlock_lazy_extDict_row"];\n _ZSTD_compressBlock_lazy2_extDict_row = Module["_ZSTD_compressBlock_lazy2_extDict_row"] = wasmExports2["ZSTD_compressBlock_lazy2_extDict_row"];\n _ZSTD_compressBlock_greedy_dictMatchState_row = Module["_ZSTD_compressBlock_greedy_dictMatchState_row"] = wasmExports2["ZSTD_compressBlock_greedy_dictMatchState_row"];\n _ZSTD_compressBlock_lazy_dictMatchState_row = Module["_ZSTD_compressBlock_lazy_dictMatchState_row"] = wasmExports2["ZSTD_compressBlock_lazy_dictMatchState_row"];\n _ZSTD_compressBlock_lazy2_dictMatchState_row = Module["_ZSTD_compressBlock_lazy2_dictMatchState_row"] = wasmExports2["ZSTD_compressBlock_lazy2_dictMatchState_row"];\n _ZSTD_compressBlock_greedy_dedicatedDictSearch_row = Module["_ZSTD_compressBlock_greedy_dedicatedDictSearch_row"] = wasmExports2["ZSTD_compressBlock_greedy_dedicatedDictSearch_row"];\n _ZSTD_compressBlock_lazy_dedicatedDictSearch_row = Module["_ZSTD_compressBlock_lazy_dedicatedDictSearch_row"] = wasmExports2["ZSTD_compressBlock_lazy_dedicatedDictSearch_row"];\n _ZSTD_compressBlock_lazy2_dedicatedDictSearch_row = Module["_ZSTD_compressBlock_lazy2_dedicatedDictSearch_row"] = wasmExports2["ZSTD_compressBlock_lazy2_dedicatedDictSearch_row"];\n _ZSTD_noCompressLiterals = Module["_ZSTD_noCompressLiterals"] = wasmExports2["ZSTD_noCompressLiterals"];\n _ZSTD_compressRleLiteralsBlock = Module["_ZSTD_compressRleLiteralsBlock"] = wasmExports2["ZSTD_compressRleLiteralsBlock"];\n _ZSTDMT_createCCtx_advanced = Module["_ZSTDMT_createCCtx_advanced"] = wasmExports2["ZSTDMT_createCCtx_advanced"];\n _ZSTDMT_freeCCtx = Module["_ZSTDMT_freeCCtx"] = wasmExports2["ZSTDMT_freeCCtx"];\n _ZSTDMT_sizeof_CCtx = Module["_ZSTDMT_sizeof_CCtx"] = wasmExports2["ZSTDMT_sizeof_CCtx"];\n _ZSTDMT_updateCParams_whileCompressing = Module["_ZSTDMT_updateCParams_whileCompressing"] = wasmExports2["ZSTDMT_updateCParams_whileCompressing"];\n _ZSTDMT_getFrameProgression = Module["_ZSTDMT_getFrameProgression"] = wasmExports2["ZSTDMT_getFrameProgression"];\n _ZSTDMT_toFlushNow = Module["_ZSTDMT_toFlushNow"] = wasmExports2["ZSTDMT_toFlushNow"];\n _ZSTDMT_initCStream_internal = Module["_ZSTDMT_initCStream_internal"] = wasmExports2["ZSTDMT_initCStream_internal"];\n _ZSTDMT_nextInputSizeHint = Module["_ZSTDMT_nextInputSizeHint"] = wasmExports2["ZSTDMT_nextInputSizeHint"];\n _ZSTDMT_compressStream_generic = Module["_ZSTDMT_compressStream_generic"] = wasmExports2["ZSTDMT_compressStream_generic"];\n _HUF_readDTableX1_wksp = Module["_HUF_readDTableX1_wksp"] = wasmExports2["HUF_readDTableX1_wksp"];\n _HUF_readDTableX2_wksp = Module["_HUF_readDTableX2_wksp"] = wasmExports2["HUF_readDTableX2_wksp"];\n _HUF_decompress1X2_DCtx_wksp = Module["_HUF_decompress1X2_DCtx_wksp"] = wasmExports2["HUF_decompress1X2_DCtx_wksp"];\n _HUF_selectDecoder = Module["_HUF_selectDecoder"] = wasmExports2["HUF_selectDecoder"];\n _HUF_decompress1X_DCtx_wksp = Module["_HUF_decompress1X_DCtx_wksp"] = wasmExports2["HUF_decompress1X_DCtx_wksp"];\n _HUF_decompress1X1_DCtx_wksp = Module["_HUF_decompress1X1_DCtx_wksp"] = wasmExports2["HUF_decompress1X1_DCtx_wksp"];\n _HUF_decompress1X_usingDTable = Module["_HUF_decompress1X_usingDTable"] = wasmExports2["HUF_decompress1X_usingDTable"];\n _HUF_decompress4X_usingDTable = Module["_HUF_decompress4X_usingDTable"] = wasmExports2["HUF_decompress4X_usingDTable"];\n _HUF_decompress4X_hufOnly_wksp = Module["_HUF_decompress4X_hufOnly_wksp"] = wasmExports2["HUF_decompress4X_hufOnly_wksp"];\n _ZSTD_DDict_dictContent = Module["_ZSTD_DDict_dictContent"] = wasmExports2["ZSTD_DDict_dictContent"];\n _ZSTD_DDict_dictSize = Module["_ZSTD_DDict_dictSize"] = wasmExports2["ZSTD_DDict_dictSize"];\n _ZSTD_copyDDictParameters = Module["_ZSTD_copyDDictParameters"] = wasmExports2["ZSTD_copyDDictParameters"];\n _ZSTD_createDDict_advanced = Module["_ZSTD_createDDict_advanced"] = wasmExports2["ZSTD_createDDict_advanced"];\n _ZSTD_loadDEntropy = Module["_ZSTD_loadDEntropy"] = wasmExports2["ZSTD_loadDEntropy"];\n _ZSTD_createDDict_byReference = Module["_ZSTD_createDDict_byReference"] = wasmExports2["ZSTD_createDDict_byReference"];\n _ZSTD_initStaticDDict = Module["_ZSTD_initStaticDDict"] = wasmExports2["ZSTD_initStaticDDict"];\n _ZSTD_estimateDDictSize = Module["_ZSTD_estimateDDictSize"] = wasmExports2["ZSTD_estimateDDictSize"];\n _ZSTD_sizeof_DDict = Module["_ZSTD_sizeof_DDict"] = wasmExports2["ZSTD_sizeof_DDict"];\n _ZSTD_getDictID_fromDDict = Module["_ZSTD_getDictID_fromDDict"] = wasmExports2["ZSTD_getDictID_fromDDict"];\n _ZSTD_sizeof_DCtx = Module["_ZSTD_sizeof_DCtx"] = wasmExports2["ZSTD_sizeof_DCtx"];\n _ZSTD_estimateDCtxSize = Module["_ZSTD_estimateDCtxSize"] = wasmExports2["ZSTD_estimateDCtxSize"];\n _ZSTD_initStaticDCtx = Module["_ZSTD_initStaticDCtx"] = wasmExports2["ZSTD_initStaticDCtx"];\n _ZSTD_createDCtx_advanced = Module["_ZSTD_createDCtx_advanced"] = wasmExports2["ZSTD_createDCtx_advanced"];\n _ZSTD_copyDCtx = Module["_ZSTD_copyDCtx"] = wasmExports2["ZSTD_copyDCtx"];\n _ZSTD_isFrame = Module["_ZSTD_isFrame"] = wasmExports2["ZSTD_isFrame"];\n _ZSTD_isSkippableFrame = Module["_ZSTD_isSkippableFrame"] = wasmExports2["ZSTD_isSkippableFrame"];\n _ZSTD_frameHeaderSize = Module["_ZSTD_frameHeaderSize"] = wasmExports2["ZSTD_frameHeaderSize"];\n _ZSTD_getFrameHeader_advanced = Module["_ZSTD_getFrameHeader_advanced"] = wasmExports2["ZSTD_getFrameHeader_advanced"];\n _ZSTD_getFrameHeader = Module["_ZSTD_getFrameHeader"] = wasmExports2["ZSTD_getFrameHeader"];\n _ZSTD_readSkippableFrame = Module["_ZSTD_readSkippableFrame"] = wasmExports2["ZSTD_readSkippableFrame"];\n _ZSTD_findDecompressedSize = Module["_ZSTD_findDecompressedSize"] = wasmExports2["ZSTD_findDecompressedSize"];\n _ZSTD_getDecompressedSize = Module["_ZSTD_getDecompressedSize"] = wasmExports2["ZSTD_getDecompressedSize"];\n _ZSTD_decompressBound = Module["_ZSTD_decompressBound"] = wasmExports2["ZSTD_decompressBound"];\n _ZSTD_getcBlockSize = Module["_ZSTD_getcBlockSize"] = wasmExports2["ZSTD_getcBlockSize"];\n _ZSTD_decompressionMargin = Module["_ZSTD_decompressionMargin"] = wasmExports2["ZSTD_decompressionMargin"];\n _ZSTD_insertBlock = Module["_ZSTD_insertBlock"] = wasmExports2["ZSTD_insertBlock"];\n _ZSTD_checkContinuity = Module["_ZSTD_checkContinuity"] = wasmExports2["ZSTD_checkContinuity"];\n _ZSTD_decompress_usingDict = Module["_ZSTD_decompress_usingDict"] = wasmExports2["ZSTD_decompress_usingDict"];\n _ZSTD_decompressBegin_usingDDict = Module["_ZSTD_decompressBegin_usingDDict"] = wasmExports2["ZSTD_decompressBegin_usingDDict"];\n _ZSTD_decompressBegin_usingDict = Module["_ZSTD_decompressBegin_usingDict"] = wasmExports2["ZSTD_decompressBegin_usingDict"];\n _ZSTD_decompressBlock_internal = Module["_ZSTD_decompressBlock_internal"] = wasmExports2["ZSTD_decompressBlock_internal"];\n _ZSTD_decompressDCtx = Module["_ZSTD_decompressDCtx"] = wasmExports2["ZSTD_decompressDCtx"];\n _ZSTD_decompress_usingDDict = Module["_ZSTD_decompress_usingDDict"] = wasmExports2["ZSTD_decompress_usingDDict"];\n _ZSTD_decompress = Module["_ZSTD_decompress"] = wasmExports2["ZSTD_decompress"];\n _ZSTD_nextSrcSizeToDecompress = Module["_ZSTD_nextSrcSizeToDecompress"] = wasmExports2["ZSTD_nextSrcSizeToDecompress"];\n _ZSTD_nextInputType = Module["_ZSTD_nextInputType"] = wasmExports2["ZSTD_nextInputType"];\n _ZSTD_decompressContinue = Module["_ZSTD_decompressContinue"] = wasmExports2["ZSTD_decompressContinue"];\n _ZSTD_buildFSETable = Module["_ZSTD_buildFSETable"] = wasmExports2["ZSTD_buildFSETable"];\n _ZSTD_decompressBegin = Module["_ZSTD_decompressBegin"] = wasmExports2["ZSTD_decompressBegin"];\n _ZSTD_createDStream = Module["_ZSTD_createDStream"] = wasmExports2["ZSTD_createDStream"];\n _ZSTD_initStaticDStream = Module["_ZSTD_initStaticDStream"] = wasmExports2["ZSTD_initStaticDStream"];\n _ZSTD_createDStream_advanced = Module["_ZSTD_createDStream_advanced"] = wasmExports2["ZSTD_createDStream_advanced"];\n _ZSTD_freeDStream = Module["_ZSTD_freeDStream"] = wasmExports2["ZSTD_freeDStream"];\n _ZSTD_DStreamInSize = Module["_ZSTD_DStreamInSize"] = wasmExports2["ZSTD_DStreamInSize"];\n _ZSTD_DCtx_loadDictionary_advanced = Module["_ZSTD_DCtx_loadDictionary_advanced"] = wasmExports2["ZSTD_DCtx_loadDictionary_advanced"];\n _ZSTD_DCtx_loadDictionary_byReference = Module["_ZSTD_DCtx_loadDictionary_byReference"] = wasmExports2["ZSTD_DCtx_loadDictionary_byReference"];\n _ZSTD_DCtx_refPrefix_advanced = Module["_ZSTD_DCtx_refPrefix_advanced"] = wasmExports2["ZSTD_DCtx_refPrefix_advanced"];\n _ZSTD_initDStream_usingDict = Module["_ZSTD_initDStream_usingDict"] = wasmExports2["ZSTD_initDStream_usingDict"];\n _ZSTD_initDStream = Module["_ZSTD_initDStream"] = wasmExports2["ZSTD_initDStream"];\n _ZSTD_initDStream_usingDDict = Module["_ZSTD_initDStream_usingDDict"] = wasmExports2["ZSTD_initDStream_usingDDict"];\n _ZSTD_resetDStream = Module["_ZSTD_resetDStream"] = wasmExports2["ZSTD_resetDStream"];\n _ZSTD_DCtx_setMaxWindowSize = Module["_ZSTD_DCtx_setMaxWindowSize"] = wasmExports2["ZSTD_DCtx_setMaxWindowSize"];\n _ZSTD_DCtx_setFormat = Module["_ZSTD_DCtx_setFormat"] = wasmExports2["ZSTD_DCtx_setFormat"];\n _ZSTD_DCtx_getParameter = Module["_ZSTD_DCtx_getParameter"] = wasmExports2["ZSTD_DCtx_getParameter"];\n _ZSTD_sizeof_DStream = Module["_ZSTD_sizeof_DStream"] = wasmExports2["ZSTD_sizeof_DStream"];\n _ZSTD_decodingBufferSize_min = Module["_ZSTD_decodingBufferSize_min"] = wasmExports2["ZSTD_decodingBufferSize_min"];\n _ZSTD_estimateDStreamSize = Module["_ZSTD_estimateDStreamSize"] = wasmExports2["ZSTD_estimateDStreamSize"];\n _ZSTD_estimateDStreamSize_fromFrame = Module["_ZSTD_estimateDStreamSize_fromFrame"] = wasmExports2["ZSTD_estimateDStreamSize_fromFrame"];\n _ZSTD_decompressStream_simpleArgs = Module["_ZSTD_decompressStream_simpleArgs"] = wasmExports2["ZSTD_decompressStream_simpleArgs"];\n _ZSTD_decodeLiteralsBlock_wrapper = Module["_ZSTD_decodeLiteralsBlock_wrapper"] = wasmExports2["ZSTD_decodeLiteralsBlock_wrapper"];\n _ZSTD_decodeSeqHeaders = Module["_ZSTD_decodeSeqHeaders"] = wasmExports2["ZSTD_decodeSeqHeaders"];\n _ZSTD_decompressBlock_deprecated = Module["_ZSTD_decompressBlock_deprecated"] = wasmExports2["ZSTD_decompressBlock_deprecated"];\n _ZSTD_decompressBlock = Module["_ZSTD_decompressBlock"] = wasmExports2["ZSTD_decompressBlock"];\n _COVER_sum = Module["_COVER_sum"] = wasmExports2["COVER_sum"];\n _COVER_warnOnSmallCorpus = Module["_COVER_warnOnSmallCorpus"] = wasmExports2["COVER_warnOnSmallCorpus"];\n _COVER_computeEpochs = Module["_COVER_computeEpochs"] = wasmExports2["COVER_computeEpochs"];\n _ZDICT_trainFromBuffer_cover = Module["_ZDICT_trainFromBuffer_cover"] = wasmExports2["ZDICT_trainFromBuffer_cover"];\n _COVER_checkTotalCompressedSize = Module["_COVER_checkTotalCompressedSize"] = wasmExports2["COVER_checkTotalCompressedSize"];\n _COVER_best_init = Module["_COVER_best_init"] = wasmExports2["COVER_best_init"];\n _COVER_best_wait = Module["_COVER_best_wait"] = wasmExports2["COVER_best_wait"];\n _COVER_best_destroy = Module["_COVER_best_destroy"] = wasmExports2["COVER_best_destroy"];\n _COVER_best_start = Module["_COVER_best_start"] = wasmExports2["COVER_best_start"];\n _COVER_best_finish = Module["_COVER_best_finish"] = wasmExports2["COVER_best_finish"];\n _COVER_dictSelectionError = Module["_COVER_dictSelectionError"] = wasmExports2["COVER_dictSelectionError"];\n _COVER_dictSelectionIsError = Module["_COVER_dictSelectionIsError"] = wasmExports2["COVER_dictSelectionIsError"];\n _COVER_dictSelectionFree = Module["_COVER_dictSelectionFree"] = wasmExports2["COVER_dictSelectionFree"];\n _COVER_selectDict = Module["_COVER_selectDict"] = wasmExports2["COVER_selectDict"];\n _ZDICT_optimizeTrainFromBuffer_cover = Module["_ZDICT_optimizeTrainFromBuffer_cover"] = wasmExports2["ZDICT_optimizeTrainFromBuffer_cover"];\n _divsufsort = Module["_divsufsort"] = wasmExports2["divsufsort"];\n _divbwt = Module["_divbwt"] = wasmExports2["divbwt"];\n _ZDICT_trainFromBuffer_fastCover = Module["_ZDICT_trainFromBuffer_fastCover"] = wasmExports2["ZDICT_trainFromBuffer_fastCover"];\n _ZDICT_optimizeTrainFromBuffer_fastCover = Module["_ZDICT_optimizeTrainFromBuffer_fastCover"] = wasmExports2["ZDICT_optimizeTrainFromBuffer_fastCover"];\n _ZDICT_getErrorName = Module["_ZDICT_getErrorName"] = wasmExports2["ZDICT_getErrorName"];\n _ZDICT_getDictID = Module["_ZDICT_getDictID"] = wasmExports2["ZDICT_getDictID"];\n _ZDICT_getDictHeaderSize = Module["_ZDICT_getDictHeaderSize"] = wasmExports2["ZDICT_getDictHeaderSize"];\n _ZDICT_trainFromBuffer_legacy = Module["_ZDICT_trainFromBuffer_legacy"] = wasmExports2["ZDICT_trainFromBuffer_legacy"];\n _ZDICT_addEntropyTablesFromBuffer = Module["_ZDICT_addEntropyTablesFromBuffer"] = wasmExports2["ZDICT_addEntropyTablesFromBuffer"];\n _emscripten_GetProcAddress = Module["_emscripten_GetProcAddress"] = wasmExports2["emscripten_GetProcAddress"];\n _emscripten_webgl1_get_proc_address = Module["_emscripten_webgl1_get_proc_address"] = wasmExports2["emscripten_webgl1_get_proc_address"];\n __webgl1_match_ext_proc_address_without_suffix = Module["__webgl1_match_ext_proc_address_without_suffix"] = wasmExports2["_webgl1_match_ext_proc_address_without_suffix"];\n _emscripten_webgl2_get_proc_address = Module["_emscripten_webgl2_get_proc_address"] = wasmExports2["emscripten_webgl2_get_proc_address"];\n __webgl2_match_ext_proc_address_without_suffix = Module["__webgl2_match_ext_proc_address_without_suffix"] = wasmExports2["_webgl2_match_ext_proc_address_without_suffix"];\n _emscripten_webgl_get_proc_address = Module["_emscripten_webgl_get_proc_address"] = wasmExports2["emscripten_webgl_get_proc_address"];\n _SDL_GL_GetProcAddress = Module["_SDL_GL_GetProcAddress"] = wasmExports2["SDL_GL_GetProcAddress"];\n _eglGetProcAddress = Module["_eglGetProcAddress"] = wasmExports2["eglGetProcAddress"];\n _glfwGetProcAddress = Module["_glfwGetProcAddress"] = wasmExports2["glfwGetProcAddress"];\n _emscripten_webgl_init_context_attributes = Module["_emscripten_webgl_init_context_attributes"] = wasmExports2["emscripten_webgl_init_context_attributes"];\n _emscripten_is_main_runtime_thread = Module["_emscripten_is_main_runtime_thread"] = wasmExports2["emscripten_is_main_runtime_thread"];\n _BZ2_blockSort = Module["_BZ2_blockSort"] = wasmExports2["BZ2_blockSort"];\n _BZ2_bz__AssertH__fail = Module["_BZ2_bz__AssertH__fail"] = wasmExports2["BZ2_bz__AssertH__fail"];\n _BZ2_bzlibVersion = Module["_BZ2_bzlibVersion"] = wasmExports2["BZ2_bzlibVersion"];\n _BZ2_compressBlock = Module["_BZ2_compressBlock"] = wasmExports2["BZ2_compressBlock"];\n _BZ2_indexIntoF = Module["_BZ2_indexIntoF"] = wasmExports2["BZ2_indexIntoF"];\n _BZ2_decompress = Module["_BZ2_decompress"] = wasmExports2["BZ2_decompress"];\n _BZ2_bzWriteOpen = Module["_BZ2_bzWriteOpen"] = wasmExports2["BZ2_bzWriteOpen"];\n _BZ2_bzWrite = Module["_BZ2_bzWrite"] = wasmExports2["BZ2_bzWrite"];\n _BZ2_bzWriteClose = Module["_BZ2_bzWriteClose"] = wasmExports2["BZ2_bzWriteClose"];\n _BZ2_bzWriteClose64 = Module["_BZ2_bzWriteClose64"] = wasmExports2["BZ2_bzWriteClose64"];\n _BZ2_bzReadOpen = Module["_BZ2_bzReadOpen"] = wasmExports2["BZ2_bzReadOpen"];\n _BZ2_bzReadClose = Module["_BZ2_bzReadClose"] = wasmExports2["BZ2_bzReadClose"];\n _BZ2_bzRead = Module["_BZ2_bzRead"] = wasmExports2["BZ2_bzRead"];\n _fgetc = Module["_fgetc"] = wasmExports2["fgetc"];\n _BZ2_bzReadGetUnused = Module["_BZ2_bzReadGetUnused"] = wasmExports2["BZ2_bzReadGetUnused"];\n _BZ2_bzBuffToBuffCompress = Module["_BZ2_bzBuffToBuffCompress"] = wasmExports2["BZ2_bzBuffToBuffCompress"];\n _BZ2_bzBuffToBuffDecompress = Module["_BZ2_bzBuffToBuffDecompress"] = wasmExports2["BZ2_bzBuffToBuffDecompress"];\n _BZ2_bzopen = Module["_BZ2_bzopen"] = wasmExports2["BZ2_bzopen"];\n _BZ2_bzdopen = Module["_BZ2_bzdopen"] = wasmExports2["BZ2_bzdopen"];\n _BZ2_bzread = Module["_BZ2_bzread"] = wasmExports2["BZ2_bzread"];\n _BZ2_bzwrite = Module["_BZ2_bzwrite"] = wasmExports2["BZ2_bzwrite"];\n _BZ2_bzflush = Module["_BZ2_bzflush"] = wasmExports2["BZ2_bzflush"];\n _BZ2_bzclose = Module["_BZ2_bzclose"] = wasmExports2["BZ2_bzclose"];\n _BZ2_bzerror = Module["_BZ2_bzerror"] = wasmExports2["BZ2_bzerror"];\n _BZ2_bsInitWrite = Module["_BZ2_bsInitWrite"] = wasmExports2["BZ2_bsInitWrite"];\n _BZ2_hbMakeCodeLengths = Module["_BZ2_hbMakeCodeLengths"] = wasmExports2["BZ2_hbMakeCodeLengths"];\n _BZ2_hbAssignCodes = Module["_BZ2_hbAssignCodes"] = wasmExports2["BZ2_hbAssignCodes"];\n _BZ2_hbCreateDecodeTables = Module["_BZ2_hbCreateDecodeTables"] = wasmExports2["BZ2_hbCreateDecodeTables"];\n _adler32_z = Module["_adler32_z"] = wasmExports2["adler32_z"];\n _adler32_combine = Module["_adler32_combine"] = wasmExports2["adler32_combine"];\n _adler32_combine64 = Module["_adler32_combine64"] = wasmExports2["adler32_combine64"];\n _compress2 = Module["_compress2"] = wasmExports2["compress2"];\n _deflateInit_ = Module["_deflateInit_"] = wasmExports2["deflateInit_"];\n _compress = Module["_compress"] = wasmExports2["compress"];\n _compressBound = Module["_compressBound"] = wasmExports2["compressBound"];\n _get_crc_table = Module["_get_crc_table"] = wasmExports2["get_crc_table"];\n _crc32_z = Module["_crc32_z"] = wasmExports2["crc32_z"];\n _crc32_combine64 = Module["_crc32_combine64"] = wasmExports2["crc32_combine64"];\n _crc32_combine = Module["_crc32_combine"] = wasmExports2["crc32_combine"];\n _crc32_combine_gen64 = Module["_crc32_combine_gen64"] = wasmExports2["crc32_combine_gen64"];\n _crc32_combine_gen = Module["_crc32_combine_gen"] = wasmExports2["crc32_combine_gen"];\n _crc32_combine_op = Module["_crc32_combine_op"] = wasmExports2["crc32_combine_op"];\n _zcalloc = Module["_zcalloc"] = wasmExports2["zcalloc"];\n _zcfree = Module["_zcfree"] = wasmExports2["zcfree"];\n _deflateReset = Module["_deflateReset"] = wasmExports2["deflateReset"];\n _deflateResetKeep = Module["_deflateResetKeep"] = wasmExports2["deflateResetKeep"];\n _deflateGetDictionary = Module["_deflateGetDictionary"] = wasmExports2["deflateGetDictionary"];\n __tr_init = Module["__tr_init"] = wasmExports2["_tr_init"];\n _deflateSetHeader = Module["_deflateSetHeader"] = wasmExports2["deflateSetHeader"];\n _deflatePending = Module["_deflatePending"] = wasmExports2["deflatePending"];\n _deflatePrime = Module["_deflatePrime"] = wasmExports2["deflatePrime"];\n __tr_flush_bits = Module["__tr_flush_bits"] = wasmExports2["_tr_flush_bits"];\n _deflateParams = Module["_deflateParams"] = wasmExports2["deflateParams"];\n __tr_align = Module["__tr_align"] = wasmExports2["_tr_align"];\n __tr_stored_block = Module["__tr_stored_block"] = wasmExports2["_tr_stored_block"];\n _deflateTune = Module["_deflateTune"] = wasmExports2["deflateTune"];\n _deflateBound = Module["_deflateBound"] = wasmExports2["deflateBound"];\n __tr_flush_block = Module["__tr_flush_block"] = wasmExports2["_tr_flush_block"];\n _gzclose = Module["_gzclose"] = wasmExports2["gzclose"];\n _gzclose_r = Module["_gzclose_r"] = wasmExports2["gzclose_r"];\n _gzclose_w = Module["_gzclose_w"] = wasmExports2["gzclose_w"];\n _gzopen = Module["_gzopen"] = wasmExports2["gzopen"];\n _gzopen64 = Module["_gzopen64"] = wasmExports2["gzopen64"];\n _gzdopen = Module["_gzdopen"] = wasmExports2["gzdopen"];\n _gzbuffer = Module["_gzbuffer"] = wasmExports2["gzbuffer"];\n _gzrewind = Module["_gzrewind"] = wasmExports2["gzrewind"];\n _gzseek64 = Module["_gzseek64"] = wasmExports2["gzseek64"];\n _gz_error = Module["_gz_error"] = wasmExports2["gz_error"];\n _gzseek = Module["_gzseek"] = wasmExports2["gzseek"];\n _gztell64 = Module["_gztell64"] = wasmExports2["gztell64"];\n _gztell = Module["_gztell"] = wasmExports2["gztell"];\n _gzoffset64 = Module["_gzoffset64"] = wasmExports2["gzoffset64"];\n _gzoffset = Module["_gzoffset"] = wasmExports2["gzoffset"];\n _gzeof = Module["_gzeof"] = wasmExports2["gzeof"];\n _gzerror = Module["_gzerror"] = wasmExports2["gzerror"];\n _gzclearerr = Module["_gzclearerr"] = wasmExports2["gzclearerr"];\n _gz_intmax = Module["_gz_intmax"] = wasmExports2["gz_intmax"];\n _gzread = Module["_gzread"] = wasmExports2["gzread"];\n _gzfread = Module["_gzfread"] = wasmExports2["gzfread"];\n _gzgetc = Module["_gzgetc"] = wasmExports2["gzgetc"];\n _gzgetc_ = Module["_gzgetc_"] = wasmExports2["gzgetc_"];\n _gzungetc = Module["_gzungetc"] = wasmExports2["gzungetc"];\n _inflateReset = Module["_inflateReset"] = wasmExports2["inflateReset"];\n _gzgets = Module["_gzgets"] = wasmExports2["gzgets"];\n _gzdirect = Module["_gzdirect"] = wasmExports2["gzdirect"];\n _gzwrite = Module["_gzwrite"] = wasmExports2["gzwrite"];\n _gzfwrite = Module["_gzfwrite"] = wasmExports2["gzfwrite"];\n _gzputc = Module["_gzputc"] = wasmExports2["gzputc"];\n _gzputs = Module["_gzputs"] = wasmExports2["gzputs"];\n _gzvprintf = Module["_gzvprintf"] = wasmExports2["gzvprintf"];\n _gzprintf = Module["_gzprintf"] = wasmExports2["gzprintf"];\n _gzflush = Module["_gzflush"] = wasmExports2["gzflush"];\n _gzsetparams = Module["_gzsetparams"] = wasmExports2["gzsetparams"];\n _inflateBackInit_ = Module["_inflateBackInit_"] = wasmExports2["inflateBackInit_"];\n _inflateBack = Module["_inflateBack"] = wasmExports2["inflateBack"];\n _inflate_table = Module["_inflate_table"] = wasmExports2["inflate_table"];\n _inflate_fast = Module["_inflate_fast"] = wasmExports2["inflate_fast"];\n _inflateBackEnd = Module["_inflateBackEnd"] = wasmExports2["inflateBackEnd"];\n _inflateResetKeep = Module["_inflateResetKeep"] = wasmExports2["inflateResetKeep"];\n _inflateReset2 = Module["_inflateReset2"] = wasmExports2["inflateReset2"];\n _inflateInit_ = Module["_inflateInit_"] = wasmExports2["inflateInit_"];\n _inflatePrime = Module["_inflatePrime"] = wasmExports2["inflatePrime"];\n _inflateGetDictionary = Module["_inflateGetDictionary"] = wasmExports2["inflateGetDictionary"];\n _inflateGetHeader = Module["_inflateGetHeader"] = wasmExports2["inflateGetHeader"];\n _inflateSync = Module["_inflateSync"] = wasmExports2["inflateSync"];\n _inflateSyncPoint = Module["_inflateSyncPoint"] = wasmExports2["inflateSyncPoint"];\n _inflateUndermine = Module["_inflateUndermine"] = wasmExports2["inflateUndermine"];\n _inflateValidate = Module["_inflateValidate"] = wasmExports2["inflateValidate"];\n _inflateMark = Module["_inflateMark"] = wasmExports2["inflateMark"];\n _inflateCodesUsed = Module["_inflateCodesUsed"] = wasmExports2["inflateCodesUsed"];\n __tr_tally = Module["__tr_tally"] = wasmExports2["_tr_tally"];\n _uncompress2 = Module["_uncompress2"] = wasmExports2["uncompress2"];\n _uncompress = Module["_uncompress"] = wasmExports2["uncompress"];\n _zlibCompileFlags = Module["_zlibCompileFlags"] = wasmExports2["zlibCompileFlags"];\n _zError = Module["_zError"] = wasmExports2["zError"];\n _getdate = Module["_getdate"] = wasmExports2["getdate"];\n _stime = Module["_stime"] = wasmExports2["stime"];\n _clock_getcpuclockid = Module["_clock_getcpuclockid"] = wasmExports2["clock_getcpuclockid"];\n _getpwnam = Module["_getpwnam"] = wasmExports2["getpwnam"];\n _getpwuid = Module["_getpwuid"] = wasmExports2["getpwuid"];\n _getpwnam_r = Module["_getpwnam_r"] = wasmExports2["getpwnam_r"];\n _getpwuid_r = Module["_getpwuid_r"] = wasmExports2["getpwuid_r"];\n _setpwent = Module["_setpwent"] = wasmExports2["setpwent"];\n _endpwent = Module["_endpwent"] = wasmExports2["endpwent"];\n _getpwent = Module["_getpwent"] = wasmExports2["getpwent"];\n _getgrnam = Module["_getgrnam"] = wasmExports2["getgrnam"];\n _getgrgid = Module["_getgrgid"] = wasmExports2["getgrgid"];\n _getgrnam_r = Module["_getgrnam_r"] = wasmExports2["getgrnam_r"];\n _getgrgid_r = Module["_getgrgid_r"] = wasmExports2["getgrgid_r"];\n _getgrent = Module["_getgrent"] = wasmExports2["getgrent"];\n _endgrent = Module["_endgrent"] = wasmExports2["endgrent"];\n _setgrent = Module["_setgrent"] = wasmExports2["setgrent"];\n _vfork = Module["_vfork"] = wasmExports2["vfork"];\n _posix_spawn = Module["_posix_spawn"] = wasmExports2["posix_spawn"];\n _popen = Module["_popen"] = wasmExports2["popen"];\n _pclose = Module["_pclose"] = wasmExports2["pclose"];\n _setgroups = Module["_setgroups"] = wasmExports2["setgroups"];\n _sigaltstack = Module["_sigaltstack"] = wasmExports2["sigaltstack"];\n ___syscall_uname = Module["___syscall_uname"] = wasmExports2["__syscall_uname"];\n ___syscall_setpgid = Module["___syscall_setpgid"] = wasmExports2["__syscall_setpgid"];\n ___syscall_sync = Module["___syscall_sync"] = wasmExports2["__syscall_sync"];\n ___syscall_getsid = Module["___syscall_getsid"] = wasmExports2["__syscall_getsid"];\n ___syscall_getpgid = Module["___syscall_getpgid"] = wasmExports2["__syscall_getpgid"];\n ___syscall_getpid = Module["___syscall_getpid"] = wasmExports2["__syscall_getpid"];\n ___syscall_getppid = Module["___syscall_getppid"] = wasmExports2["__syscall_getppid"];\n ___syscall_linkat = Module["___syscall_linkat"] = wasmExports2["__syscall_linkat"];\n ___syscall_getgroups32 = Module["___syscall_getgroups32"] = wasmExports2["__syscall_getgroups32"];\n ___syscall_setsid = Module["___syscall_setsid"] = wasmExports2["__syscall_setsid"];\n ___syscall_getrusage = Module["___syscall_getrusage"] = wasmExports2["__syscall_getrusage"];\n ___syscall_getpriority = Module["___syscall_getpriority"] = wasmExports2["__syscall_getpriority"];\n ___syscall_setpriority = Module["___syscall_setpriority"] = wasmExports2["__syscall_setpriority"];\n ___syscall_setdomainname = Module["___syscall_setdomainname"] = wasmExports2["__syscall_setdomainname"];\n ___syscall_getgid32 = Module["___syscall_getgid32"] = wasmExports2["__syscall_getgid32"];\n ___syscall_geteuid32 = Module["___syscall_geteuid32"] = wasmExports2["__syscall_geteuid32"];\n ___syscall_getegid32 = Module["___syscall_getegid32"] = wasmExports2["__syscall_getegid32"];\n ___syscall_getresuid32 = Module["___syscall_getresuid32"] = wasmExports2["__syscall_getresuid32"];\n ___syscall_getresgid32 = Module["___syscall_getresgid32"] = wasmExports2["__syscall_getresgid32"];\n ___syscall_pause = Module["___syscall_pause"] = wasmExports2["__syscall_pause"];\n ___syscall_madvise = Module["___syscall_madvise"] = wasmExports2["__syscall_madvise"];\n ___syscall_mlock = Module["___syscall_mlock"] = wasmExports2["__syscall_mlock"];\n ___syscall_munlock = Module["___syscall_munlock"] = wasmExports2["__syscall_munlock"];\n ___syscall_mprotect = Module["___syscall_mprotect"] = wasmExports2["__syscall_mprotect"];\n ___syscall_mremap = Module["___syscall_mremap"] = wasmExports2["__syscall_mremap"];\n ___syscall_mlockall = Module["___syscall_mlockall"] = wasmExports2["__syscall_mlockall"];\n ___syscall_munlockall = Module["___syscall_munlockall"] = wasmExports2["__syscall_munlockall"];\n ___syscall_prlimit64 = Module["___syscall_prlimit64"] = wasmExports2["__syscall_prlimit64"];\n ___syscall_acct = Module["___syscall_acct"] = wasmExports2["__syscall_acct"];\n ___syscall_mincore = Module["___syscall_mincore"] = wasmExports2["__syscall_mincore"];\n ___syscall_pipe2 = Module["___syscall_pipe2"] = wasmExports2["__syscall_pipe2"];\n ___syscall_pselect6 = Module["___syscall_pselect6"] = wasmExports2["__syscall_pselect6"];\n ___syscall_ppoll = Module["___syscall_ppoll"] = wasmExports2["__syscall_ppoll"];\n ___syscall_recvmmsg = Module["___syscall_recvmmsg"] = wasmExports2["__syscall_recvmmsg"];\n ___syscall_sendmmsg = Module["___syscall_sendmmsg"] = wasmExports2["__syscall_sendmmsg"];\n ___syscall_shutdown = Module["___syscall_shutdown"] = wasmExports2["__syscall_shutdown"];\n ___syscall_socketpair = Module["___syscall_socketpair"] = wasmExports2["__syscall_socketpair"];\n ___syscall_wait4 = Module["___syscall_wait4"] = wasmExports2["__syscall_wait4"];\n __Exit = Module["__Exit"] = wasmExports2["_Exit"];\n _cosf = Module["_cosf"] = wasmExports2["cosf"];\n _sinf = Module["_sinf"] = wasmExports2["sinf"];\n _expf = Module["_expf"] = wasmExports2["expf"];\n ___ctype_b_loc = Module["___ctype_b_loc"] = wasmExports2["__ctype_b_loc"];\n ___ctype_get_mb_cur_max = Module["___ctype_get_mb_cur_max"] = wasmExports2["__ctype_get_mb_cur_max"];\n ___get_tp = Module["___get_tp"] = wasmExports2["__get_tp"];\n ___ctype_tolower_loc = Module["___ctype_tolower_loc"] = wasmExports2["__ctype_tolower_loc"];\n ___ctype_toupper_loc = Module["___ctype_toupper_loc"] = wasmExports2["__ctype_toupper_loc"];\n ___emscripten_environ_constructor = Module["___emscripten_environ_constructor"] = wasmExports2["__emscripten_environ_constructor"];\n _emscripten_builtin_malloc = Module["_emscripten_builtin_malloc"] = wasmExports2["emscripten_builtin_malloc"];\n ___flt_rounds = Module["___flt_rounds"] = wasmExports2["__flt_rounds"];\n _fegetround = Module["_fegetround"] = wasmExports2["fegetround"];\n ___fmodeflags = Module["___fmodeflags"] = wasmExports2["__fmodeflags"];\n ___fpclassify = Module["___fpclassify"] = wasmExports2["__fpclassify"];\n ___fpclassifyf = Module["___fpclassifyf"] = wasmExports2["__fpclassifyf"];\n ___fpclassifyl = Module["___fpclassifyl"] = wasmExports2["__fpclassifyl"];\n ___mo_lookup = Module["___mo_lookup"] = wasmExports2["__mo_lookup"];\n ___month_to_secs = Module["___month_to_secs"] = wasmExports2["__month_to_secs"];\n ___overflow = Module["___overflow"] = wasmExports2["__overflow"];\n _scalbn = Module["_scalbn"] = wasmExports2["scalbn"];\n _floor = Module["_floor"] = wasmExports2["floor"];\n ___fixtfdi = Module["___fixtfdi"] = wasmExports2["__fixtfdi"];\n ___signbit = Module["___signbit"] = wasmExports2["__signbit"];\n ___signbitf = Module["___signbitf"] = wasmExports2["__signbitf"];\n ___signbitl = Module["___signbitl"] = wasmExports2["__signbitl"];\n _memcpy = Module["_memcpy"] = wasmExports2["memcpy"];\n ___stack_chk_fail = Module["___stack_chk_fail"] = wasmExports2["__stack_chk_fail"];\n ___wasi_syscall_ret = Module["___wasi_syscall_ret"] = wasmExports2["__wasi_syscall_ret"];\n ___synccall = Module["___synccall"] = wasmExports2["__synccall"];\n _fabsl = Module["_fabsl"] = wasmExports2["fabsl"];\n ___year_to_secs = Module["___year_to_secs"] = wasmExports2["__year_to_secs"];\n ___lock = Module["___lock"] = wasmExports2["__lock"];\n ___unlock = Module["___unlock"] = wasmExports2["__unlock"];\n _tzset = Module["_tzset"] = wasmExports2["tzset"];\n ___uflow = Module["___uflow"] = wasmExports2["__uflow"];\n ___fxstat = Module["___fxstat"] = wasmExports2["__fxstat"];\n ___fxstatat = Module["___fxstatat"] = wasmExports2["__fxstatat"];\n ___lxstat = Module["___lxstat"] = wasmExports2["__lxstat"];\n ___xstat = Module["___xstat"] = wasmExports2["__xstat"];\n ___xmknod = Module["___xmknod"] = wasmExports2["__xmknod"];\n _mknod = Module["_mknod"] = wasmExports2["mknod"];\n ___xmknodat = Module["___xmknodat"] = wasmExports2["__xmknodat"];\n _mknodat = Module["_mknodat"] = wasmExports2["mknodat"];\n _a64l = Module["_a64l"] = wasmExports2["a64l"];\n _l64a = Module["_l64a"] = wasmExports2["l64a"];\n _abs = Module["_abs"] = wasmExports2["abs"];\n _acct = Module["_acct"] = wasmExports2["acct"];\n _acosf = Module["_acosf"] = wasmExports2["acosf"];\n _sqrtf = Module["_sqrtf"] = wasmExports2["sqrtf"];\n _acoshf = Module["_acoshf"] = wasmExports2["acoshf"];\n _log1pf = Module["_log1pf"] = wasmExports2["log1pf"];\n _logf = Module["_logf"] = wasmExports2["logf"];\n _acoshl = Module["_acoshl"] = wasmExports2["acoshl"];\n _acosl = Module["_acosl"] = wasmExports2["acosl"];\n ___eqtf2 = Module["___eqtf2"] = wasmExports2["__eqtf2"];\n ___netf2 = Module["___netf2"] = wasmExports2["__netf2"];\n _sqrtl = Module["_sqrtl"] = wasmExports2["sqrtl"];\n _alarm = Module["_alarm"] = wasmExports2["alarm"];\n _setitimer = Module["_setitimer"] = wasmExports2["setitimer"];\n _aligned_alloc = Module["_aligned_alloc"] = wasmExports2["aligned_alloc"];\n _posix_memalign = Module["_posix_memalign"] = wasmExports2["posix_memalign"];\n _alphasort = Module["_alphasort"] = wasmExports2["alphasort"];\n _strcoll = Module["_strcoll"] = wasmExports2["strcoll"];\n _asctime = Module["_asctime"] = wasmExports2["asctime"];\n ___nl_langinfo_l = Module["___nl_langinfo_l"] = wasmExports2["__nl_langinfo_l"];\n _asctime_r = Module["_asctime_r"] = wasmExports2["asctime_r"];\n _asinf = Module["_asinf"] = wasmExports2["asinf"];\n _fabsf = Module["_fabsf"] = wasmExports2["fabsf"];\n _asinhf = Module["_asinhf"] = wasmExports2["asinhf"];\n _asinhl = Module["_asinhl"] = wasmExports2["asinhl"];\n _asinl = Module["_asinl"] = wasmExports2["asinl"];\n _asprintf = Module["_asprintf"] = wasmExports2["asprintf"];\n _vasprintf = Module["_vasprintf"] = wasmExports2["vasprintf"];\n _at_quick_exit = Module["_at_quick_exit"] = wasmExports2["at_quick_exit"];\n _atan2f = Module["_atan2f"] = wasmExports2["atan2f"];\n _atanf = Module["_atanf"] = wasmExports2["atanf"];\n _atan2l = Module["_atan2l"] = wasmExports2["atan2l"];\n _atanl = Module["_atanl"] = wasmExports2["atanl"];\n _atanhf = Module["_atanhf"] = wasmExports2["atanhf"];\n _atanhl = Module["_atanhl"] = wasmExports2["atanhl"];\n _log1pl = Module["_log1pl"] = wasmExports2["log1pl"];\n ___funcs_on_exit = Module["___funcs_on_exit"] = wasmExports2["__funcs_on_exit"];\n ____cxa_finalize = Module["____cxa_finalize"] = wasmExports2["___cxa_finalize"];\n ____cxa_atexit = Module["____cxa_atexit"] = wasmExports2["___cxa_atexit"];\n ___libc_calloc = Module["___libc_calloc"] = wasmExports2["__libc_calloc"];\n ___atexit = Module["___atexit"] = wasmExports2["__atexit"];\n ___cxa_atexit = Module["___cxa_atexit"] = wasmExports2["__cxa_atexit"];\n ___cxa_finalize = Module["___cxa_finalize"] = wasmExports2["__cxa_finalize"];\n _atof = Module["_atof"] = wasmExports2["atof"];\n _strtod = Module["_strtod"] = wasmExports2["strtod"];\n _atoi = Module["_atoi"] = wasmExports2["atoi"];\n _atol = Module["_atol"] = wasmExports2["atol"];\n _atoll = Module["_atoll"] = wasmExports2["atoll"];\n _basename = Module["_basename"] = wasmExports2["basename"];\n ___xpg_basename = Module["___xpg_basename"] = wasmExports2["__xpg_basename"];\n _bcmp = Module["_bcmp"] = wasmExports2["bcmp"];\n _bcopy = Module["_bcopy"] = wasmExports2["bcopy"];\n _strcasecmp = Module["_strcasecmp"] = wasmExports2["strcasecmp"];\n _bsearch = Module["_bsearch"] = wasmExports2["bsearch"];\n _btowc = Module["_btowc"] = wasmExports2["btowc"];\n _bzero = Module["_bzero"] = wasmExports2["bzero"];\n _c16rtomb = Module["_c16rtomb"] = wasmExports2["c16rtomb"];\n _wcrtomb = Module["_wcrtomb"] = wasmExports2["wcrtomb"];\n _c32rtomb = Module["_c32rtomb"] = wasmExports2["c32rtomb"];\n _cabs = Module["_cabs"] = wasmExports2["cabs"];\n _cabsf = Module["_cabsf"] = wasmExports2["cabsf"];\n _hypotf = Module["_hypotf"] = wasmExports2["hypotf"];\n _cabsl = Module["_cabsl"] = wasmExports2["cabsl"];\n _hypotl = Module["_hypotl"] = wasmExports2["hypotl"];\n _cacos = Module["_cacos"] = wasmExports2["cacos"];\n _casin = Module["_casin"] = wasmExports2["casin"];\n _cacosf = Module["_cacosf"] = wasmExports2["cacosf"];\n _casinf = Module["_casinf"] = wasmExports2["casinf"];\n _cacosh = Module["_cacosh"] = wasmExports2["cacosh"];\n _cacoshf = Module["_cacoshf"] = wasmExports2["cacoshf"];\n _cacoshl = Module["_cacoshl"] = wasmExports2["cacoshl"];\n _cacosl = Module["_cacosl"] = wasmExports2["cacosl"];\n _casinl = Module["_casinl"] = wasmExports2["casinl"];\n _call_once = Module["_call_once"] = wasmExports2["call_once"];\n _carg = Module["_carg"] = wasmExports2["carg"];\n _cargf = Module["_cargf"] = wasmExports2["cargf"];\n _cargl = Module["_cargl"] = wasmExports2["cargl"];\n _csqrt = Module["_csqrt"] = wasmExports2["csqrt"];\n _clog = Module["_clog"] = wasmExports2["clog"];\n _csqrtf = Module["_csqrtf"] = wasmExports2["csqrtf"];\n _clogf = Module["_clogf"] = wasmExports2["clogf"];\n _casinh = Module["_casinh"] = wasmExports2["casinh"];\n _casinhf = Module["_casinhf"] = wasmExports2["casinhf"];\n _casinhl = Module["_casinhl"] = wasmExports2["casinhl"];\n _csqrtl = Module["_csqrtl"] = wasmExports2["csqrtl"];\n _clogl = Module["_clogl"] = wasmExports2["clogl"];\n _catan = Module["_catan"] = wasmExports2["catan"];\n _catanf = Module["_catanf"] = wasmExports2["catanf"];\n _catanh = Module["_catanh"] = wasmExports2["catanh"];\n _catanhf = Module["_catanhf"] = wasmExports2["catanhf"];\n _catanhl = Module["_catanhl"] = wasmExports2["catanhl"];\n _catanl = Module["_catanl"] = wasmExports2["catanl"];\n _logl = Module["_logl"] = wasmExports2["logl"];\n ___trunctfsf2 = Module["___trunctfsf2"] = wasmExports2["__trunctfsf2"];\n ___extendsftf2 = Module["___extendsftf2"] = wasmExports2["__extendsftf2"];\n _catclose = Module["_catclose"] = wasmExports2["catclose"];\n _catgets = Module["_catgets"] = wasmExports2["catgets"];\n _catopen = Module["_catopen"] = wasmExports2["catopen"];\n _cbrtf = Module["_cbrtf"] = wasmExports2["cbrtf"];\n _cbrtl = Module["_cbrtl"] = wasmExports2["cbrtl"];\n _ccos = Module["_ccos"] = wasmExports2["ccos"];\n _ccosh = Module["_ccosh"] = wasmExports2["ccosh"];\n _ccosf = Module["_ccosf"] = wasmExports2["ccosf"];\n _ccoshf = Module["_ccoshf"] = wasmExports2["ccoshf"];\n _coshf = Module["_coshf"] = wasmExports2["coshf"];\n _sinhf = Module["_sinhf"] = wasmExports2["sinhf"];\n _copysignf = Module["_copysignf"] = wasmExports2["copysignf"];\n _ccoshl = Module["_ccoshl"] = wasmExports2["ccoshl"];\n _ccosl = Module["_ccosl"] = wasmExports2["ccosl"];\n _ceil = Module["_ceil"] = wasmExports2["ceil"];\n _ceilf = Module["_ceilf"] = wasmExports2["ceilf"];\n _ceill = Module["_ceill"] = wasmExports2["ceill"];\n _cexp = Module["_cexp"] = wasmExports2["cexp"];\n _cexpf = Module["_cexpf"] = wasmExports2["cexpf"];\n _cexpl = Module["_cexpl"] = wasmExports2["cexpl"];\n _cfmakeraw = Module["_cfmakeraw"] = wasmExports2["cfmakeraw"];\n _cfsetspeed = Module["_cfsetspeed"] = wasmExports2["cfsetspeed"];\n _cimag = Module["_cimag"] = wasmExports2["cimag"];\n _cimagf = Module["_cimagf"] = wasmExports2["cimagf"];\n _cimagl = Module["_cimagl"] = wasmExports2["cimagl"];\n _clearenv = Module["_clearenv"] = wasmExports2["clearenv"];\n _clearerr_unlocked = Module["_clearerr_unlocked"] = wasmExports2["clearerr_unlocked"];\n ___wasi_timestamp_to_timespec = Module["___wasi_timestamp_to_timespec"] = wasmExports2["__wasi_timestamp_to_timespec"];\n _emscripten_thread_sleep = Module["_emscripten_thread_sleep"] = wasmExports2["emscripten_thread_sleep"];\n _cnd_broadcast = Module["_cnd_broadcast"] = wasmExports2["cnd_broadcast"];\n _cnd_destroy = Module["_cnd_destroy"] = wasmExports2["cnd_destroy"];\n _cnd_init = Module["_cnd_init"] = wasmExports2["cnd_init"];\n _cnd_signal = Module["_cnd_signal"] = wasmExports2["cnd_signal"];\n _cnd_timedwait = Module["_cnd_timedwait"] = wasmExports2["cnd_timedwait"];\n _cnd_wait = Module["_cnd_wait"] = wasmExports2["cnd_wait"];\n _conj = Module["_conj"] = wasmExports2["conj"];\n _conjf = Module["_conjf"] = wasmExports2["conjf"];\n _conjl = Module["_conjl"] = wasmExports2["conjl"];\n _copysignl = Module["_copysignl"] = wasmExports2["copysignl"];\n _expm1f = Module["_expm1f"] = wasmExports2["expm1f"];\n _coshl = Module["_coshl"] = wasmExports2["coshl"];\n _cosl = Module["_cosl"] = wasmExports2["cosl"];\n _cpow = Module["_cpow"] = wasmExports2["cpow"];\n ___muldc3 = Module["___muldc3"] = wasmExports2["__muldc3"];\n _cpowf = Module["_cpowf"] = wasmExports2["cpowf"];\n ___mulsc3 = Module["___mulsc3"] = wasmExports2["__mulsc3"];\n _cpowl = Module["_cpowl"] = wasmExports2["cpowl"];\n ___unordtf2 = Module["___unordtf2"] = wasmExports2["__unordtf2"];\n ___multc3 = Module["___multc3"] = wasmExports2["__multc3"];\n _cproj = Module["_cproj"] = wasmExports2["cproj"];\n _cprojf = Module["_cprojf"] = wasmExports2["cprojf"];\n _cprojl = Module["_cprojl"] = wasmExports2["cprojl"];\n _creal = Module["_creal"] = wasmExports2["creal"];\n _crealf = Module["_crealf"] = wasmExports2["crealf"];\n _creall = Module["_creall"] = wasmExports2["creall"];\n _creat = Module["_creat"] = wasmExports2["creat"];\n _crypt = Module["_crypt"] = wasmExports2["crypt"];\n ___crypt_blowfish = Module["___crypt_blowfish"] = wasmExports2["__crypt_blowfish"];\n ___crypt_des = Module["___crypt_des"] = wasmExports2["__crypt_des"];\n ___crypt_md5 = Module["___crypt_md5"] = wasmExports2["__crypt_md5"];\n _strnlen = Module["_strnlen"] = wasmExports2["strnlen"];\n ___crypt_sha256 = Module["___crypt_sha256"] = wasmExports2["__crypt_sha256"];\n ___crypt_sha512 = Module["___crypt_sha512"] = wasmExports2["__crypt_sha512"];\n _crypt_r = Module["_crypt_r"] = wasmExports2["crypt_r"];\n _sprintf = Module["_sprintf"] = wasmExports2["sprintf"];\n _csin = Module["_csin"] = wasmExports2["csin"];\n _csinh = Module["_csinh"] = wasmExports2["csinh"];\n _csinf = Module["_csinf"] = wasmExports2["csinf"];\n _csinhf = Module["_csinhf"] = wasmExports2["csinhf"];\n _csinhl = Module["_csinhl"] = wasmExports2["csinhl"];\n _csinl = Module["_csinl"] = wasmExports2["csinl"];\n _ctan = Module["_ctan"] = wasmExports2["ctan"];\n _ctanh = Module["_ctanh"] = wasmExports2["ctanh"];\n _ctanf = Module["_ctanf"] = wasmExports2["ctanf"];\n _ctanhf = Module["_ctanhf"] = wasmExports2["ctanhf"];\n _tanf = Module["_tanf"] = wasmExports2["tanf"];\n _ctanhl = Module["_ctanhl"] = wasmExports2["ctanhl"];\n _ctanl = Module["_ctanl"] = wasmExports2["ctanl"];\n _ctime = Module["_ctime"] = wasmExports2["ctime"];\n _localtime = Module["_localtime"] = wasmExports2["localtime"];\n _ctime_r = Module["_ctime_r"] = wasmExports2["ctime_r"];\n _dcngettext = Module["_dcngettext"] = wasmExports2["dcngettext"];\n ___gettextdomain = Module["___gettextdomain"] = wasmExports2["__gettextdomain"];\n _dngettext = Module["_dngettext"] = wasmExports2["dngettext"];\n _difftime = Module["_difftime"] = wasmExports2["difftime"];\n _dirname = Module["_dirname"] = wasmExports2["dirname"];\n _div = Module["_div"] = wasmExports2["div"];\n _dladdr = Module["_dladdr"] = wasmExports2["dladdr"];\n ___libc_free = Module["___libc_free"] = wasmExports2["__libc_free"];\n ___libc_malloc = Module["___libc_malloc"] = wasmExports2["__libc_malloc"];\n ___dl_seterr = Module["___dl_seterr"] = wasmExports2["__dl_seterr"];\n _dn_comp = Module["_dn_comp"] = wasmExports2["dn_comp"];\n _dn_expand = Module["_dn_expand"] = wasmExports2["dn_expand"];\n _dn_skipname = Module["_dn_skipname"] = wasmExports2["dn_skipname"];\n _dprintf = Module["_dprintf"] = wasmExports2["dprintf"];\n _vdprintf = Module["_vdprintf"] = wasmExports2["vdprintf"];\n _erand48 = Module["_erand48"] = wasmExports2["erand48"];\n _drand48 = Module["_drand48"] = wasmExports2["drand48"];\n ___wasi_fd_is_valid = Module["___wasi_fd_is_valid"] = wasmExports2["__wasi_fd_is_valid"];\n ___duplocale = Module["___duplocale"] = wasmExports2["__duplocale"];\n _duplocale = Module["_duplocale"] = wasmExports2["duplocale"];\n _new_dlevent = Module["_new_dlevent"] = wasmExports2["new_dlevent"];\n __emscripten_find_dylib = Module["__emscripten_find_dylib"] = wasmExports2["_emscripten_find_dylib"];\n _strspn = Module["_strspn"] = wasmExports2["strspn"];\n _pthread_setcancelstate = Module["_pthread_setcancelstate"] = wasmExports2["pthread_setcancelstate"];\n _emscripten_dlopen = Module["_emscripten_dlopen"] = wasmExports2["emscripten_dlopen"];\n _emscripten_dlopen_promise = Module["_emscripten_dlopen_promise"] = wasmExports2["emscripten_dlopen_promise"];\n _ecvt = Module["_ecvt"] = wasmExports2["ecvt"];\n _emscripten_console_logf = Module["_emscripten_console_logf"] = wasmExports2["emscripten_console_logf"];\n _emscripten_console_errorf = Module["_emscripten_console_errorf"] = wasmExports2["emscripten_console_errorf"];\n _emscripten_console_warnf = Module["_emscripten_console_warnf"] = wasmExports2["emscripten_console_warnf"];\n _emscripten_console_tracef = Module["_emscripten_console_tracef"] = wasmExports2["emscripten_console_tracef"];\n _emscripten_outf = Module["_emscripten_outf"] = wasmExports2["emscripten_outf"];\n _emscripten_errf = Module["_emscripten_errf"] = wasmExports2["emscripten_errf"];\n _emscripten_log = Module["_emscripten_log"] = wasmExports2["emscripten_log"];\n _emscripten_fiber_init = Module["_emscripten_fiber_init"] = wasmExports2["emscripten_fiber_init"];\n _emscripten_fiber_init_from_current_context = Module["_emscripten_fiber_init_from_current_context"] = wasmExports2["emscripten_fiber_init_from_current_context"];\n _emscripten_get_heap_size = Module["_emscripten_get_heap_size"] = wasmExports2["emscripten_get_heap_size"];\n __emscripten_memcpy_bulkmem = Module["__emscripten_memcpy_bulkmem"] = wasmExports2["_emscripten_memcpy_bulkmem"];\n _emscripten_builtin_memcpy = Module["_emscripten_builtin_memcpy"] = wasmExports2["emscripten_builtin_memcpy"];\n ___memset = Module["___memset"] = wasmExports2["__memset"];\n _emscripten_builtin_memset = Module["_emscripten_builtin_memset"] = wasmExports2["emscripten_builtin_memset"];\n __emscripten_memset_bulkmem = Module["__emscripten_memset_bulkmem"] = wasmExports2["_emscripten_memset_bulkmem"];\n ___syscall_munmap = Module["___syscall_munmap"] = wasmExports2["__syscall_munmap"];\n _emscripten_builtin_free = Module["_emscripten_builtin_free"] = wasmExports2["emscripten_builtin_free"];\n ___syscall_msync = Module["___syscall_msync"] = wasmExports2["__syscall_msync"];\n ___syscall_mmap2 = Module["___syscall_mmap2"] = wasmExports2["__syscall_mmap2"];\n _emscripten_builtin_memalign = Module["_emscripten_builtin_memalign"] = wasmExports2["emscripten_builtin_memalign"];\n _emscripten_scan_stack = Module["_emscripten_scan_stack"] = wasmExports2["emscripten_scan_stack"];\n _emscripten_stack_get_current = Module["_emscripten_stack_get_current"] = wasmExports2["emscripten_stack_get_current"];\n _dysize = Module["_dysize"] = wasmExports2["dysize"];\n __emscripten_yield = Module["__emscripten_yield"] = wasmExports2["_emscripten_yield"];\n __emscripten_check_timers = Module["__emscripten_check_timers"] = wasmExports2["_emscripten_check_timers"];\n _setkey = Module["_setkey"] = wasmExports2["setkey"];\n _encrypt = Module["_encrypt"] = wasmExports2["encrypt"];\n _sethostent = Module["_sethostent"] = wasmExports2["sethostent"];\n _gethostent = Module["_gethostent"] = wasmExports2["gethostent"];\n _getnetent = Module["_getnetent"] = wasmExports2["getnetent"];\n _endhostent = Module["_endhostent"] = wasmExports2["endhostent"];\n _setnetent = Module["_setnetent"] = wasmExports2["setnetent"];\n _endnetent = Module["_endnetent"] = wasmExports2["endnetent"];\n _erff = Module["_erff"] = wasmExports2["erff"];\n _erfcf = Module["_erfcf"] = wasmExports2["erfcf"];\n _erfl = Module["_erfl"] = wasmExports2["erfl"];\n _erfcl = Module["_erfcl"] = wasmExports2["erfcl"];\n _vwarn = Module["_vwarn"] = wasmExports2["vwarn"];\n _fprintf = Module["_fprintf"] = wasmExports2["fprintf"];\n _vwarnx = Module["_vwarnx"] = wasmExports2["vwarnx"];\n _putc = Module["_putc"] = wasmExports2["putc"];\n _verr = Module["_verr"] = wasmExports2["verr"];\n _verrx = Module["_verrx"] = wasmExports2["verrx"];\n _warn = Module["_warn"] = wasmExports2["warn"];\n _warnx = Module["_warnx"] = wasmExports2["warnx"];\n _err = Module["_err"] = wasmExports2["err"];\n _errx = Module["_errx"] = wasmExports2["errx"];\n _ether_aton_r = Module["_ether_aton_r"] = wasmExports2["ether_aton_r"];\n _ether_aton = Module["_ether_aton"] = wasmExports2["ether_aton"];\n _ether_ntoa_r = Module["_ether_ntoa_r"] = wasmExports2["ether_ntoa_r"];\n _ether_ntoa = Module["_ether_ntoa"] = wasmExports2["ether_ntoa"];\n _ether_line = Module["_ether_line"] = wasmExports2["ether_line"];\n _ether_ntohost = Module["_ether_ntohost"] = wasmExports2["ether_ntohost"];\n _ether_hostton = Module["_ether_hostton"] = wasmExports2["ether_hostton"];\n _euidaccess = Module["_euidaccess"] = wasmExports2["euidaccess"];\n _faccessat = Module["_faccessat"] = wasmExports2["faccessat"];\n _eaccess = Module["_eaccess"] = wasmExports2["eaccess"];\n _execl = Module["_execl"] = wasmExports2["execl"];\n _execle = Module["_execle"] = wasmExports2["execle"];\n _execlp = Module["_execlp"] = wasmExports2["execlp"];\n _execvp = Module["_execvp"] = wasmExports2["execvp"];\n _execvpe = Module["_execvpe"] = wasmExports2["execvpe"];\n _exp10 = Module["_exp10"] = wasmExports2["exp10"];\n _pow10 = Module["_pow10"] = wasmExports2["pow10"];\n _exp10f = Module["_exp10f"] = wasmExports2["exp10f"];\n _modff = Module["_modff"] = wasmExports2["modff"];\n _exp2f = Module["_exp2f"] = wasmExports2["exp2f"];\n _pow10f = Module["_pow10f"] = wasmExports2["pow10f"];\n _exp10l = Module["_exp10l"] = wasmExports2["exp10l"];\n _modfl = Module["_modfl"] = wasmExports2["modfl"];\n _exp2l = Module["_exp2l"] = wasmExports2["exp2l"];\n _powl = Module["_powl"] = wasmExports2["powl"];\n _pow10l = Module["_pow10l"] = wasmExports2["pow10l"];\n ___letf2 = Module["___letf2"] = wasmExports2["__letf2"];\n _scalbnl = Module["_scalbnl"] = wasmExports2["scalbnl"];\n _expl = Module["_expl"] = wasmExports2["expl"];\n _explicit_bzero = Module["_explicit_bzero"] = wasmExports2["explicit_bzero"];\n _expm1l = Module["_expm1l"] = wasmExports2["expm1l"];\n __flushlbf = Module["__flushlbf"] = wasmExports2["_flushlbf"];\n ___fsetlocking = Module["___fsetlocking"] = wasmExports2["__fsetlocking"];\n ___fwriting = Module["___fwriting"] = wasmExports2["__fwriting"];\n ___freading = Module["___freading"] = wasmExports2["__freading"];\n ___freadable = Module["___freadable"] = wasmExports2["__freadable"];\n ___fwritable = Module["___fwritable"] = wasmExports2["__fwritable"];\n ___flbf = Module["___flbf"] = wasmExports2["__flbf"];\n ___fbufsize = Module["___fbufsize"] = wasmExports2["__fbufsize"];\n ___fpending = Module["___fpending"] = wasmExports2["__fpending"];\n ___fpurge = Module["___fpurge"] = wasmExports2["__fpurge"];\n _fpurge = Module["_fpurge"] = wasmExports2["fpurge"];\n ___freadahead = Module["___freadahead"] = wasmExports2["__freadahead"];\n ___freadptr = Module["___freadptr"] = wasmExports2["__freadptr"];\n ___freadptrinc = Module["___freadptrinc"] = wasmExports2["__freadptrinc"];\n ___fseterr = Module["___fseterr"] = wasmExports2["__fseterr"];\n _fcvt = Module["_fcvt"] = wasmExports2["fcvt"];\n _fdim = Module["_fdim"] = wasmExports2["fdim"];\n _fdimf = Module["_fdimf"] = wasmExports2["fdimf"];\n _fdiml = Module["_fdiml"] = wasmExports2["fdiml"];\n _fegetexceptflag = Module["_fegetexceptflag"] = wasmExports2["fegetexceptflag"];\n _fetestexcept = Module["_fetestexcept"] = wasmExports2["fetestexcept"];\n _feholdexcept = Module["_feholdexcept"] = wasmExports2["feholdexcept"];\n _fegetenv = Module["_fegetenv"] = wasmExports2["fegetenv"];\n _feclearexcept = Module["_feclearexcept"] = wasmExports2["feclearexcept"];\n _feraiseexcept = Module["_feraiseexcept"] = wasmExports2["feraiseexcept"];\n ___fesetround = Module["___fesetround"] = wasmExports2["__fesetround"];\n _fesetenv = Module["_fesetenv"] = wasmExports2["fesetenv"];\n _feof_unlocked = Module["_feof_unlocked"] = wasmExports2["feof_unlocked"];\n __IO_feof_unlocked = Module["__IO_feof_unlocked"] = wasmExports2["_IO_feof_unlocked"];\n _ferror_unlocked = Module["_ferror_unlocked"] = wasmExports2["ferror_unlocked"];\n __IO_ferror_unlocked = Module["__IO_ferror_unlocked"] = wasmExports2["_IO_ferror_unlocked"];\n _fesetexceptflag = Module["_fesetexceptflag"] = wasmExports2["fesetexceptflag"];\n _fesetround = Module["_fesetround"] = wasmExports2["fesetround"];\n _feupdateenv = Module["_feupdateenv"] = wasmExports2["feupdateenv"];\n _fflush_unlocked = Module["_fflush_unlocked"] = wasmExports2["fflush_unlocked"];\n _ffs = Module["_ffs"] = wasmExports2["ffs"];\n _ffsl = Module["_ffsl"] = wasmExports2["ffsl"];\n _ffsll = Module["_ffsll"] = wasmExports2["ffsll"];\n _emscripten_futex_wake = Module["_emscripten_futex_wake"] = wasmExports2["emscripten_futex_wake"];\n _fgetln = Module["_fgetln"] = wasmExports2["fgetln"];\n _getline = Module["_getline"] = wasmExports2["getline"];\n _fgetpos = Module["_fgetpos"] = wasmExports2["fgetpos"];\n _fgets_unlocked = Module["_fgets_unlocked"] = wasmExports2["fgets_unlocked"];\n ___fgetwc_unlocked = Module["___fgetwc_unlocked"] = wasmExports2["__fgetwc_unlocked"];\n _fwide = Module["_fwide"] = wasmExports2["fwide"];\n _mbtowc = Module["_mbtowc"] = wasmExports2["mbtowc"];\n _fgetwc = Module["_fgetwc"] = wasmExports2["fgetwc"];\n _fgetwc_unlocked = Module["_fgetwc_unlocked"] = wasmExports2["fgetwc_unlocked"];\n _getwc_unlocked = Module["_getwc_unlocked"] = wasmExports2["getwc_unlocked"];\n _fgetws = Module["_fgetws"] = wasmExports2["fgetws"];\n _fgetws_unlocked = Module["_fgetws_unlocked"] = wasmExports2["fgetws_unlocked"];\n _fileno_unlocked = Module["_fileno_unlocked"] = wasmExports2["fileno_unlocked"];\n _finite = Module["_finite"] = wasmExports2["finite"];\n _finitef = Module["_finitef"] = wasmExports2["finitef"];\n ___floatunsitf = Module["___floatunsitf"] = wasmExports2["__floatunsitf"];\n _fmodl = Module["_fmodl"] = wasmExports2["fmodl"];\n _ftrylockfile = Module["_ftrylockfile"] = wasmExports2["ftrylockfile"];\n _floorf = Module["_floorf"] = wasmExports2["floorf"];\n _floorl = Module["_floorl"] = wasmExports2["floorl"];\n _fmaf = Module["_fmaf"] = wasmExports2["fmaf"];\n _fmal = Module["_fmal"] = wasmExports2["fmal"];\n _frexpl = Module["_frexpl"] = wasmExports2["frexpl"];\n _nextafterl = Module["_nextafterl"] = wasmExports2["nextafterl"];\n _ilogbl = Module["_ilogbl"] = wasmExports2["ilogbl"];\n _fmax = Module["_fmax"] = wasmExports2["fmax"];\n _fmaxf = Module["_fmaxf"] = wasmExports2["fmaxf"];\n _fmaxl = Module["_fmaxl"] = wasmExports2["fmaxl"];\n _fmemopen = Module["_fmemopen"] = wasmExports2["fmemopen"];\n _fmin = Module["_fmin"] = wasmExports2["fmin"];\n _fminf = Module["_fminf"] = wasmExports2["fminf"];\n _fminl = Module["_fminl"] = wasmExports2["fminl"];\n _fmodf = Module["_fmodf"] = wasmExports2["fmodf"];\n _fmtmsg = Module["_fmtmsg"] = wasmExports2["fmtmsg"];\n _fnmatch = Module["_fnmatch"] = wasmExports2["fnmatch"];\n _towupper = Module["_towupper"] = wasmExports2["towupper"];\n _towlower = Module["_towlower"] = wasmExports2["towlower"];\n _wctype = Module["_wctype"] = wasmExports2["wctype"];\n _iswctype = Module["_iswctype"] = wasmExports2["iswctype"];\n _forkpty = Module["_forkpty"] = wasmExports2["forkpty"];\n _openpty = Module["_openpty"] = wasmExports2["openpty"];\n _pipe2 = Module["_pipe2"] = wasmExports2["pipe2"];\n _vfiprintf = Module["_vfiprintf"] = wasmExports2["vfiprintf"];\n ___small_vfprintf = Module["___small_vfprintf"] = wasmExports2["__small_vfprintf"];\n _fputs_unlocked = Module["_fputs_unlocked"] = wasmExports2["fputs_unlocked"];\n ___fputwc_unlocked = Module["___fputwc_unlocked"] = wasmExports2["__fputwc_unlocked"];\n _wctomb = Module["_wctomb"] = wasmExports2["wctomb"];\n _fputwc = Module["_fputwc"] = wasmExports2["fputwc"];\n _fputwc_unlocked = Module["_fputwc_unlocked"] = wasmExports2["fputwc_unlocked"];\n _putwc_unlocked = Module["_putwc_unlocked"] = wasmExports2["putwc_unlocked"];\n _fputws = Module["_fputws"] = wasmExports2["fputws"];\n _wcsrtombs = Module["_wcsrtombs"] = wasmExports2["wcsrtombs"];\n _fputws_unlocked = Module["_fputws_unlocked"] = wasmExports2["fputws_unlocked"];\n _fread_unlocked = Module["_fread_unlocked"] = wasmExports2["fread_unlocked"];\n _freelocale = Module["_freelocale"] = wasmExports2["freelocale"];\n ___freelocale = Module["___freelocale"] = wasmExports2["__freelocale"];\n _freopen = Module["_freopen"] = wasmExports2["freopen"];\n _frexpf = Module["_frexpf"] = wasmExports2["frexpf"];\n _fscanf = Module["_fscanf"] = wasmExports2["fscanf"];\n _vfscanf = Module["_vfscanf"] = wasmExports2["vfscanf"];\n ___isoc99_fscanf = Module["___isoc99_fscanf"] = wasmExports2["__isoc99_fscanf"];\n _fseek = Module["_fseek"] = wasmExports2["fseek"];\n _fseeko = Module["_fseeko"] = wasmExports2["fseeko"];\n _fsetpos = Module["_fsetpos"] = wasmExports2["fsetpos"];\n _ftello = Module["_ftello"] = wasmExports2["ftello"];\n _ftime = Module["_ftime"] = wasmExports2["ftime"];\n _utimensat = Module["_utimensat"] = wasmExports2["utimensat"];\n _fwprintf = Module["_fwprintf"] = wasmExports2["fwprintf"];\n _vfwprintf = Module["_vfwprintf"] = wasmExports2["vfwprintf"];\n _fwrite_unlocked = Module["_fwrite_unlocked"] = wasmExports2["fwrite_unlocked"];\n _fwscanf = Module["_fwscanf"] = wasmExports2["fwscanf"];\n _vfwscanf = Module["_vfwscanf"] = wasmExports2["vfwscanf"];\n ___isoc99_fwscanf = Module["___isoc99_fwscanf"] = wasmExports2["__isoc99_fwscanf"];\n _gcvt = Module["_gcvt"] = wasmExports2["gcvt"];\n _get_current_dir_name = Module["_get_current_dir_name"] = wasmExports2["get_current_dir_name"];\n __IO_getc = Module["__IO_getc"] = wasmExports2["_IO_getc"];\n _fgetc_unlocked = Module["_fgetc_unlocked"] = wasmExports2["fgetc_unlocked"];\n __IO_getc_unlocked = Module["__IO_getc_unlocked"] = wasmExports2["_IO_getc_unlocked"];\n _getchar = Module["_getchar"] = wasmExports2["getchar"];\n _getchar_unlocked = Module["_getchar_unlocked"] = wasmExports2["getchar_unlocked"];\n _getdelim = Module["_getdelim"] = wasmExports2["getdelim"];\n ___getdelim = Module["___getdelim"] = wasmExports2["__getdelim"];\n _getdents = Module["_getdents"] = wasmExports2["getdents"];\n _getdomainname = Module["_getdomainname"] = wasmExports2["getdomainname"];\n _getegid = Module["_getegid"] = wasmExports2["getegid"];\n _getgroups = Module["_getgroups"] = wasmExports2["getgroups"];\n _gethostid = Module["_gethostid"] = wasmExports2["gethostid"];\n _freeifaddrs = Module["_freeifaddrs"] = wasmExports2["freeifaddrs"];\n _getifaddrs = Module["_getifaddrs"] = wasmExports2["getifaddrs"];\n ___getitimer = Module["___getitimer"] = wasmExports2["__getitimer"];\n _getlogin = Module["_getlogin"] = wasmExports2["getlogin"];\n _getopt = Module["_getopt"] = wasmExports2["getopt"];\n ___posix_getopt = Module["___posix_getopt"] = wasmExports2["__posix_getopt"];\n _getopt_long = Module["_getopt_long"] = wasmExports2["getopt_long"];\n _getopt_long_only = Module["_getopt_long_only"] = wasmExports2["getopt_long_only"];\n _mblen = Module["_mblen"] = wasmExports2["mblen"];\n _getresgid = Module["_getresgid"] = wasmExports2["getresgid"];\n _getresuid = Module["_getresuid"] = wasmExports2["getresuid"];\n _getrusage = Module["_getrusage"] = wasmExports2["getrusage"];\n _gets = Module["_gets"] = wasmExports2["gets"];\n _getservbyname_r = Module["_getservbyname_r"] = wasmExports2["getservbyname_r"];\n _getservbyport_r = Module["_getservbyport_r"] = wasmExports2["getservbyport_r"];\n _getsubopt = Module["_getsubopt"] = wasmExports2["getsubopt"];\n _gettid = Module["_gettid"] = wasmExports2["gettid"];\n _getw = Module["_getw"] = wasmExports2["getw"];\n _getwc = Module["_getwc"] = wasmExports2["getwc"];\n _getwchar = Module["_getwchar"] = wasmExports2["getwchar"];\n _getwchar_unlocked = Module["_getwchar_unlocked"] = wasmExports2["getwchar_unlocked"];\n _glob = Module["_glob"] = wasmExports2["glob"];\n _globfree = Module["_globfree"] = wasmExports2["globfree"];\n _gmtime = Module["_gmtime"] = wasmExports2["gmtime"];\n _herror = Module["_herror"] = wasmExports2["herror"];\n _hcreate = Module["_hcreate"] = wasmExports2["hcreate"];\n _hdestroy = Module["_hdestroy"] = wasmExports2["hdestroy"];\n _hsearch = Module["_hsearch"] = wasmExports2["hsearch"];\n _hcreate_r = Module["_hcreate_r"] = wasmExports2["hcreate_r"];\n _hdestroy_r = Module["_hdestroy_r"] = wasmExports2["hdestroy_r"];\n _hsearch_r = Module["_hsearch_r"] = wasmExports2["hsearch_r"];\n _iconv_open = Module["_iconv_open"] = wasmExports2["iconv_open"];\n _iconv = Module["_iconv"] = wasmExports2["iconv"];\n _iconv_close = Module["_iconv_close"] = wasmExports2["iconv_close"];\n _ilogb = Module["_ilogb"] = wasmExports2["ilogb"];\n _ilogbf = Module["_ilogbf"] = wasmExports2["ilogbf"];\n _imaxabs = Module["_imaxabs"] = wasmExports2["imaxabs"];\n _imaxdiv = Module["_imaxdiv"] = wasmExports2["imaxdiv"];\n _index = Module["_index"] = wasmExports2["index"];\n _inet_addr = Module["_inet_addr"] = wasmExports2["inet_addr"];\n _inet_network = Module["_inet_network"] = wasmExports2["inet_network"];\n _inet_makeaddr = Module["_inet_makeaddr"] = wasmExports2["inet_makeaddr"];\n _inet_lnaof = Module["_inet_lnaof"] = wasmExports2["inet_lnaof"];\n _inet_netof = Module["_inet_netof"] = wasmExports2["inet_netof"];\n _insque = Module["_insque"] = wasmExports2["insque"];\n _remque = Module["_remque"] = wasmExports2["remque"];\n ___intscan = Module["___intscan"] = wasmExports2["__intscan"];\n ___multi3 = Module["___multi3"] = wasmExports2["__multi3"];\n ___isalnum_l = Module["___isalnum_l"] = wasmExports2["__isalnum_l"];\n _isalnum_l = Module["_isalnum_l"] = wasmExports2["isalnum_l"];\n _isalpha = Module["_isalpha"] = wasmExports2["isalpha"];\n ___isalpha_l = Module["___isalpha_l"] = wasmExports2["__isalpha_l"];\n _isalpha_l = Module["_isalpha_l"] = wasmExports2["isalpha_l"];\n _isascii = Module["_isascii"] = wasmExports2["isascii"];\n _isblank = Module["_isblank"] = wasmExports2["isblank"];\n ___isblank_l = Module["___isblank_l"] = wasmExports2["__isblank_l"];\n _isblank_l = Module["_isblank_l"] = wasmExports2["isblank_l"];\n _iscntrl = Module["_iscntrl"] = wasmExports2["iscntrl"];\n ___iscntrl_l = Module["___iscntrl_l"] = wasmExports2["__iscntrl_l"];\n _iscntrl_l = Module["_iscntrl_l"] = wasmExports2["iscntrl_l"];\n _isdigit = Module["_isdigit"] = wasmExports2["isdigit"];\n ___isdigit_l = Module["___isdigit_l"] = wasmExports2["__isdigit_l"];\n _isdigit_l = Module["_isdigit_l"] = wasmExports2["isdigit_l"];\n _isgraph = Module["_isgraph"] = wasmExports2["isgraph"];\n ___isgraph_l = Module["___isgraph_l"] = wasmExports2["__isgraph_l"];\n _isgraph_l = Module["_isgraph_l"] = wasmExports2["isgraph_l"];\n _islower = Module["_islower"] = wasmExports2["islower"];\n ___islower_l = Module["___islower_l"] = wasmExports2["__islower_l"];\n _islower_l = Module["_islower_l"] = wasmExports2["islower_l"];\n _isprint = Module["_isprint"] = wasmExports2["isprint"];\n ___isprint_l = Module["___isprint_l"] = wasmExports2["__isprint_l"];\n _isprint_l = Module["_isprint_l"] = wasmExports2["isprint_l"];\n _ispunct = Module["_ispunct"] = wasmExports2["ispunct"];\n ___ispunct_l = Module["___ispunct_l"] = wasmExports2["__ispunct_l"];\n _ispunct_l = Module["_ispunct_l"] = wasmExports2["ispunct_l"];\n _issetugid = Module["_issetugid"] = wasmExports2["issetugid"];\n _isspace = Module["_isspace"] = wasmExports2["isspace"];\n ___isspace_l = Module["___isspace_l"] = wasmExports2["__isspace_l"];\n _isspace_l = Module["_isspace_l"] = wasmExports2["isspace_l"];\n _isupper = Module["_isupper"] = wasmExports2["isupper"];\n ___isupper_l = Module["___isupper_l"] = wasmExports2["__isupper_l"];\n _isupper_l = Module["_isupper_l"] = wasmExports2["isupper_l"];\n _iswalnum = Module["_iswalnum"] = wasmExports2["iswalnum"];\n _iswalpha = Module["_iswalpha"] = wasmExports2["iswalpha"];\n ___iswalnum_l = Module["___iswalnum_l"] = wasmExports2["__iswalnum_l"];\n _iswalnum_l = Module["_iswalnum_l"] = wasmExports2["iswalnum_l"];\n ___iswalpha_l = Module["___iswalpha_l"] = wasmExports2["__iswalpha_l"];\n _iswalpha_l = Module["_iswalpha_l"] = wasmExports2["iswalpha_l"];\n _iswblank = Module["_iswblank"] = wasmExports2["iswblank"];\n ___iswblank_l = Module["___iswblank_l"] = wasmExports2["__iswblank_l"];\n _iswblank_l = Module["_iswblank_l"] = wasmExports2["iswblank_l"];\n _iswcntrl = Module["_iswcntrl"] = wasmExports2["iswcntrl"];\n ___iswcntrl_l = Module["___iswcntrl_l"] = wasmExports2["__iswcntrl_l"];\n _iswcntrl_l = Module["_iswcntrl_l"] = wasmExports2["iswcntrl_l"];\n _iswgraph = Module["_iswgraph"] = wasmExports2["iswgraph"];\n _iswlower = Module["_iswlower"] = wasmExports2["iswlower"];\n _iswprint = Module["_iswprint"] = wasmExports2["iswprint"];\n _iswpunct = Module["_iswpunct"] = wasmExports2["iswpunct"];\n _iswspace = Module["_iswspace"] = wasmExports2["iswspace"];\n _iswupper = Module["_iswupper"] = wasmExports2["iswupper"];\n _iswxdigit = Module["_iswxdigit"] = wasmExports2["iswxdigit"];\n ___iswctype_l = Module["___iswctype_l"] = wasmExports2["__iswctype_l"];\n ___wctype_l = Module["___wctype_l"] = wasmExports2["__wctype_l"];\n _iswctype_l = Module["_iswctype_l"] = wasmExports2["iswctype_l"];\n _wctype_l = Module["_wctype_l"] = wasmExports2["wctype_l"];\n _iswdigit = Module["_iswdigit"] = wasmExports2["iswdigit"];\n ___iswdigit_l = Module["___iswdigit_l"] = wasmExports2["__iswdigit_l"];\n _iswdigit_l = Module["_iswdigit_l"] = wasmExports2["iswdigit_l"];\n ___iswgraph_l = Module["___iswgraph_l"] = wasmExports2["__iswgraph_l"];\n _iswgraph_l = Module["_iswgraph_l"] = wasmExports2["iswgraph_l"];\n ___iswlower_l = Module["___iswlower_l"] = wasmExports2["__iswlower_l"];\n _iswlower_l = Module["_iswlower_l"] = wasmExports2["iswlower_l"];\n ___iswprint_l = Module["___iswprint_l"] = wasmExports2["__iswprint_l"];\n _iswprint_l = Module["_iswprint_l"] = wasmExports2["iswprint_l"];\n ___iswpunct_l = Module["___iswpunct_l"] = wasmExports2["__iswpunct_l"];\n _iswpunct_l = Module["_iswpunct_l"] = wasmExports2["iswpunct_l"];\n ___iswspace_l = Module["___iswspace_l"] = wasmExports2["__iswspace_l"];\n _iswspace_l = Module["_iswspace_l"] = wasmExports2["iswspace_l"];\n ___iswupper_l = Module["___iswupper_l"] = wasmExports2["__iswupper_l"];\n _iswupper_l = Module["_iswupper_l"] = wasmExports2["iswupper_l"];\n ___iswxdigit_l = Module["___iswxdigit_l"] = wasmExports2["__iswxdigit_l"];\n _iswxdigit_l = Module["_iswxdigit_l"] = wasmExports2["iswxdigit_l"];\n _isxdigit = Module["_isxdigit"] = wasmExports2["isxdigit"];\n ___isxdigit_l = Module["___isxdigit_l"] = wasmExports2["__isxdigit_l"];\n _isxdigit_l = Module["_isxdigit_l"] = wasmExports2["isxdigit_l"];\n _j0 = Module["_j0"] = wasmExports2["j0"];\n _y0 = Module["_y0"] = wasmExports2["y0"];\n _j0f = Module["_j0f"] = wasmExports2["j0f"];\n _y0f = Module["_y0f"] = wasmExports2["y0f"];\n _j1 = Module["_j1"] = wasmExports2["j1"];\n _y1 = Module["_y1"] = wasmExports2["y1"];\n _j1f = Module["_j1f"] = wasmExports2["j1f"];\n _y1f = Module["_y1f"] = wasmExports2["y1f"];\n _jn = Module["_jn"] = wasmExports2["jn"];\n _yn = Module["_yn"] = wasmExports2["yn"];\n _jnf = Module["_jnf"] = wasmExports2["jnf"];\n _ynf = Module["_ynf"] = wasmExports2["ynf"];\n _labs = Module["_labs"] = wasmExports2["labs"];\n ___nl_langinfo = Module["___nl_langinfo"] = wasmExports2["__nl_langinfo"];\n _nl_langinfo_l = Module["_nl_langinfo_l"] = wasmExports2["nl_langinfo_l"];\n _lchmod = Module["_lchmod"] = wasmExports2["lchmod"];\n _lchown = Module["_lchown"] = wasmExports2["lchown"];\n _lcong48 = Module["_lcong48"] = wasmExports2["lcong48"];\n _ldexpf = Module["_ldexpf"] = wasmExports2["ldexpf"];\n _scalbnf = Module["_scalbnf"] = wasmExports2["scalbnf"];\n _ldexpl = Module["_ldexpl"] = wasmExports2["ldexpl"];\n _ldiv = Module["_ldiv"] = wasmExports2["ldiv"];\n _get_nprocs_conf = Module["_get_nprocs_conf"] = wasmExports2["get_nprocs_conf"];\n _get_nprocs = Module["_get_nprocs"] = wasmExports2["get_nprocs"];\n _get_phys_pages = Module["_get_phys_pages"] = wasmExports2["get_phys_pages"];\n _get_avphys_pages = Module["_get_avphys_pages"] = wasmExports2["get_avphys_pages"];\n _lgamma = Module["_lgamma"] = wasmExports2["lgamma"];\n _lgamma_r = Module["_lgamma_r"] = wasmExports2["lgamma_r"];\n _lgammaf = Module["_lgammaf"] = wasmExports2["lgammaf"];\n _lgammaf_r = Module["_lgammaf_r"] = wasmExports2["lgammaf_r"];\n ___lgammal_r = Module["___lgammal_r"] = wasmExports2["__lgammal_r"];\n _lgammal = Module["_lgammal"] = wasmExports2["lgammal"];\n _lgammal_r = Module["_lgammal_r"] = wasmExports2["lgammal_r"];\n _emscripten_has_threading_support = Module["_emscripten_has_threading_support"] = wasmExports2["emscripten_has_threading_support"];\n _emscripten_num_logical_cores = Module["_emscripten_num_logical_cores"] = wasmExports2["emscripten_num_logical_cores"];\n _emscripten_futex_wait = Module["_emscripten_futex_wait"] = wasmExports2["emscripten_futex_wait"];\n _emscripten_main_thread_process_queued_calls = Module["_emscripten_main_thread_process_queued_calls"] = wasmExports2["emscripten_main_thread_process_queued_calls"];\n _emscripten_current_thread_process_queued_calls = Module["_emscripten_current_thread_process_queued_calls"] = wasmExports2["emscripten_current_thread_process_queued_calls"];\n _pthread_mutex_consistent = Module["_pthread_mutex_consistent"] = wasmExports2["pthread_mutex_consistent"];\n _pthread_barrier_init = Module["_pthread_barrier_init"] = wasmExports2["pthread_barrier_init"];\n _pthread_barrier_destroy = Module["_pthread_barrier_destroy"] = wasmExports2["pthread_barrier_destroy"];\n _pthread_barrier_wait = Module["_pthread_barrier_wait"] = wasmExports2["pthread_barrier_wait"];\n _pthread_cond_broadcast = Module["_pthread_cond_broadcast"] = wasmExports2["pthread_cond_broadcast"];\n _pthread_atfork = Module["_pthread_atfork"] = wasmExports2["pthread_atfork"];\n _pthread_cancel = Module["_pthread_cancel"] = wasmExports2["pthread_cancel"];\n _pthread_testcancel = Module["_pthread_testcancel"] = wasmExports2["pthread_testcancel"];\n ___pthread_detach = Module["___pthread_detach"] = wasmExports2["__pthread_detach"];\n _pthread_equal = Module["_pthread_equal"] = wasmExports2["pthread_equal"];\n _pthread_mutexattr_init = Module["_pthread_mutexattr_init"] = wasmExports2["pthread_mutexattr_init"];\n _pthread_mutexattr_setprotocol = Module["_pthread_mutexattr_setprotocol"] = wasmExports2["pthread_mutexattr_setprotocol"];\n _pthread_mutexattr_settype = Module["_pthread_mutexattr_settype"] = wasmExports2["pthread_mutexattr_settype"];\n _pthread_mutexattr_destroy = Module["_pthread_mutexattr_destroy"] = wasmExports2["pthread_mutexattr_destroy"];\n _pthread_mutexattr_setpshared = Module["_pthread_mutexattr_setpshared"] = wasmExports2["pthread_mutexattr_setpshared"];\n _pthread_condattr_setpshared = Module["_pthread_condattr_setpshared"] = wasmExports2["pthread_condattr_setpshared"];\n _pthread_setcanceltype = Module["_pthread_setcanceltype"] = wasmExports2["pthread_setcanceltype"];\n _pthread_rwlock_init = Module["_pthread_rwlock_init"] = wasmExports2["pthread_rwlock_init"];\n _pthread_rwlock_destroy = Module["_pthread_rwlock_destroy"] = wasmExports2["pthread_rwlock_destroy"];\n _pthread_rwlock_rdlock = Module["_pthread_rwlock_rdlock"] = wasmExports2["pthread_rwlock_rdlock"];\n _pthread_rwlock_tryrdlock = Module["_pthread_rwlock_tryrdlock"] = wasmExports2["pthread_rwlock_tryrdlock"];\n _pthread_rwlock_timedrdlock = Module["_pthread_rwlock_timedrdlock"] = wasmExports2["pthread_rwlock_timedrdlock"];\n _pthread_rwlock_wrlock = Module["_pthread_rwlock_wrlock"] = wasmExports2["pthread_rwlock_wrlock"];\n _pthread_rwlock_trywrlock = Module["_pthread_rwlock_trywrlock"] = wasmExports2["pthread_rwlock_trywrlock"];\n _pthread_rwlock_timedwrlock = Module["_pthread_rwlock_timedwrlock"] = wasmExports2["pthread_rwlock_timedwrlock"];\n _pthread_rwlock_unlock = Module["_pthread_rwlock_unlock"] = wasmExports2["pthread_rwlock_unlock"];\n _pthread_rwlockattr_init = Module["_pthread_rwlockattr_init"] = wasmExports2["pthread_rwlockattr_init"];\n _pthread_rwlockattr_destroy = Module["_pthread_rwlockattr_destroy"] = wasmExports2["pthread_rwlockattr_destroy"];\n _pthread_rwlockattr_setpshared = Module["_pthread_rwlockattr_setpshared"] = wasmExports2["pthread_rwlockattr_setpshared"];\n _pthread_spin_init = Module["_pthread_spin_init"] = wasmExports2["pthread_spin_init"];\n _pthread_spin_destroy = Module["_pthread_spin_destroy"] = wasmExports2["pthread_spin_destroy"];\n _pthread_spin_lock = Module["_pthread_spin_lock"] = wasmExports2["pthread_spin_lock"];\n _pthread_spin_trylock = Module["_pthread_spin_trylock"] = wasmExports2["pthread_spin_trylock"];\n _pthread_spin_unlock = Module["_pthread_spin_unlock"] = wasmExports2["pthread_spin_unlock"];\n _sem_init = Module["_sem_init"] = wasmExports2["sem_init"];\n _sem_post = Module["_sem_post"] = wasmExports2["sem_post"];\n _sem_wait = Module["_sem_wait"] = wasmExports2["sem_wait"];\n _sem_trywait = Module["_sem_trywait"] = wasmExports2["sem_trywait"];\n _sem_destroy = Module["_sem_destroy"] = wasmExports2["sem_destroy"];\n _pthread_mutex_timedlock = Module["_pthread_mutex_timedlock"] = wasmExports2["pthread_mutex_timedlock"];\n _emscripten_builtin_pthread_create = Module["_emscripten_builtin_pthread_create"] = wasmExports2["emscripten_builtin_pthread_create"];\n _emscripten_builtin_pthread_join = Module["_emscripten_builtin_pthread_join"] = wasmExports2["emscripten_builtin_pthread_join"];\n _pthread_once = Module["_pthread_once"] = wasmExports2["pthread_once"];\n _emscripten_builtin_pthread_exit = Module["_emscripten_builtin_pthread_exit"] = wasmExports2["emscripten_builtin_pthread_exit"];\n _pthread_exit = Module["_pthread_exit"] = wasmExports2["pthread_exit"];\n _emscripten_builtin_pthread_detach = Module["_emscripten_builtin_pthread_detach"] = wasmExports2["emscripten_builtin_pthread_detach"];\n _thrd_detach = Module["_thrd_detach"] = wasmExports2["thrd_detach"];\n _link = Module["_link"] = wasmExports2["link"];\n _linkat = Module["_linkat"] = wasmExports2["linkat"];\n _llabs = Module["_llabs"] = wasmExports2["llabs"];\n _lldiv = Module["_lldiv"] = wasmExports2["lldiv"];\n _llrint = Module["_llrint"] = wasmExports2["llrint"];\n _rint = Module["_rint"] = wasmExports2["rint"];\n _llrintf = Module["_llrintf"] = wasmExports2["llrintf"];\n _rintf = Module["_rintf"] = wasmExports2["rintf"];\n _llrintl = Module["_llrintl"] = wasmExports2["llrintl"];\n _rintl = Module["_rintl"] = wasmExports2["rintl"];\n _llround = Module["_llround"] = wasmExports2["llround"];\n _llroundf = Module["_llroundf"] = wasmExports2["llroundf"];\n _roundf = Module["_roundf"] = wasmExports2["roundf"];\n _llroundl = Module["_llroundl"] = wasmExports2["llroundl"];\n _roundl = Module["_roundl"] = wasmExports2["roundl"];\n _log10f = Module["_log10f"] = wasmExports2["log10f"];\n _log10l = Module["_log10l"] = wasmExports2["log10l"];\n _log2f = Module["_log2f"] = wasmExports2["log2f"];\n _log2l = Module["_log2l"] = wasmExports2["log2l"];\n _logb = Module["_logb"] = wasmExports2["logb"];\n _logbf = Module["_logbf"] = wasmExports2["logbf"];\n _logbl = Module["_logbl"] = wasmExports2["logbl"];\n _strtoull = Module["_strtoull"] = wasmExports2["strtoull"];\n _nrand48 = Module["_nrand48"] = wasmExports2["nrand48"];\n _lrand48 = Module["_lrand48"] = wasmExports2["lrand48"];\n _lrint = Module["_lrint"] = wasmExports2["lrint"];\n _lrintf = Module["_lrintf"] = wasmExports2["lrintf"];\n _lrintl = Module["_lrintl"] = wasmExports2["lrintl"];\n _lround = Module["_lround"] = wasmExports2["lround"];\n _lroundf = Module["_lroundf"] = wasmExports2["lroundf"];\n _lroundl = Module["_lroundl"] = wasmExports2["lroundl"];\n _lsearch = Module["_lsearch"] = wasmExports2["lsearch"];\n _lfind = Module["_lfind"] = wasmExports2["lfind"];\n _mbrlen = Module["_mbrlen"] = wasmExports2["mbrlen"];\n _mbrtoc16 = Module["_mbrtoc16"] = wasmExports2["mbrtoc16"];\n _mbrtoc32 = Module["_mbrtoc32"] = wasmExports2["mbrtoc32"];\n _mbsinit = Module["_mbsinit"] = wasmExports2["mbsinit"];\n _mbsnrtowcs = Module["_mbsnrtowcs"] = wasmExports2["mbsnrtowcs"];\n _mbsrtowcs = Module["_mbsrtowcs"] = wasmExports2["mbsrtowcs"];\n _memccpy = Module["_memccpy"] = wasmExports2["memccpy"];\n _memmem = Module["_memmem"] = wasmExports2["memmem"];\n _mempcpy = Module["_mempcpy"] = wasmExports2["mempcpy"];\n _mincore = Module["_mincore"] = wasmExports2["mincore"];\n _mkdtemp = Module["_mkdtemp"] = wasmExports2["mkdtemp"];\n _mkfifo = Module["_mkfifo"] = wasmExports2["mkfifo"];\n _mkfifoat = Module["_mkfifoat"] = wasmExports2["mkfifoat"];\n _mkostemp = Module["_mkostemp"] = wasmExports2["mkostemp"];\n _mkostemps = Module["_mkostemps"] = wasmExports2["mkostemps"];\n _mkstemp = Module["_mkstemp"] = wasmExports2["mkstemp"];\n _mkstemps = Module["_mkstemps"] = wasmExports2["mkstemps"];\n _mktemp = Module["_mktemp"] = wasmExports2["mktemp"];\n _timegm = Module["_timegm"] = wasmExports2["timegm"];\n _mlock = Module["_mlock"] = wasmExports2["mlock"];\n _mlockall = Module["_mlockall"] = wasmExports2["mlockall"];\n _emscripten_builtin_mmap = Module["_emscripten_builtin_mmap"] = wasmExports2["emscripten_builtin_mmap"];\n _setmntent = Module["_setmntent"] = wasmExports2["setmntent"];\n _endmntent = Module["_endmntent"] = wasmExports2["endmntent"];\n _getmntent_r = Module["_getmntent_r"] = wasmExports2["getmntent_r"];\n _sscanf = Module["_sscanf"] = wasmExports2["sscanf"];\n _getmntent = Module["_getmntent"] = wasmExports2["getmntent"];\n _addmntent = Module["_addmntent"] = wasmExports2["addmntent"];\n _hasmntopt = Module["_hasmntopt"] = wasmExports2["hasmntopt"];\n _mprotect = Module["_mprotect"] = wasmExports2["mprotect"];\n _jrand48 = Module["_jrand48"] = wasmExports2["jrand48"];\n _mrand48 = Module["_mrand48"] = wasmExports2["mrand48"];\n _mtx_destroy = Module["_mtx_destroy"] = wasmExports2["mtx_destroy"];\n _mtx_init = Module["_mtx_init"] = wasmExports2["mtx_init"];\n _mtx_lock = Module["_mtx_lock"] = wasmExports2["mtx_lock"];\n _mtx_timedlock = Module["_mtx_timedlock"] = wasmExports2["mtx_timedlock"];\n _mtx_trylock = Module["_mtx_trylock"] = wasmExports2["mtx_trylock"];\n _mtx_unlock = Module["_mtx_unlock"] = wasmExports2["mtx_unlock"];\n _munlock = Module["_munlock"] = wasmExports2["munlock"];\n _munlockall = Module["_munlockall"] = wasmExports2["munlockall"];\n _emscripten_builtin_munmap = Module["_emscripten_builtin_munmap"] = wasmExports2["emscripten_builtin_munmap"];\n _nan = Module["_nan"] = wasmExports2["nan"];\n _nanf = Module["_nanf"] = wasmExports2["nanf"];\n _nanl = Module["_nanl"] = wasmExports2["nanl"];\n _nanosleep = Module["_nanosleep"] = wasmExports2["nanosleep"];\n _nearbyint = Module["_nearbyint"] = wasmExports2["nearbyint"];\n _nearbyintf = Module["_nearbyintf"] = wasmExports2["nearbyintf"];\n _nearbyintl = Module["_nearbyintl"] = wasmExports2["nearbyintl"];\n _getnetbyaddr = Module["_getnetbyaddr"] = wasmExports2["getnetbyaddr"];\n _getnetbyname = Module["_getnetbyname"] = wasmExports2["getnetbyname"];\n ___newlocale = Module["___newlocale"] = wasmExports2["__newlocale"];\n _newlocale = Module["_newlocale"] = wasmExports2["newlocale"];\n _nextafterf = Module["_nextafterf"] = wasmExports2["nextafterf"];\n _nexttoward = Module["_nexttoward"] = wasmExports2["nexttoward"];\n _nexttowardf = Module["_nexttowardf"] = wasmExports2["nexttowardf"];\n _nexttowardl = Module["_nexttowardl"] = wasmExports2["nexttowardl"];\n _nftw = Module["_nftw"] = wasmExports2["nftw"];\n _nice = Module["_nice"] = wasmExports2["nice"];\n _setpriority = Module["_setpriority"] = wasmExports2["setpriority"];\n _ns_get16 = Module["_ns_get16"] = wasmExports2["ns_get16"];\n _ns_get32 = Module["_ns_get32"] = wasmExports2["ns_get32"];\n _ns_put16 = Module["_ns_put16"] = wasmExports2["ns_put16"];\n _ns_put32 = Module["_ns_put32"] = wasmExports2["ns_put32"];\n _ns_skiprr = Module["_ns_skiprr"] = wasmExports2["ns_skiprr"];\n _ns_initparse = Module["_ns_initparse"] = wasmExports2["ns_initparse"];\n _ns_name_uncompress = Module["_ns_name_uncompress"] = wasmExports2["ns_name_uncompress"];\n _ns_parserr = Module["_ns_parserr"] = wasmExports2["ns_parserr"];\n _open_memstream = Module["_open_memstream"] = wasmExports2["open_memstream"];\n _open_wmemstream = Module["_open_wmemstream"] = wasmExports2["open_wmemstream"];\n _posix_close = Module["_posix_close"] = wasmExports2["posix_close"];\n _posix_madvise = Module["_posix_madvise"] = wasmExports2["posix_madvise"];\n _posix_spawn_file_actions_addchdir_np = Module["_posix_spawn_file_actions_addchdir_np"] = wasmExports2["posix_spawn_file_actions_addchdir_np"];\n _posix_spawn_file_actions_addclose = Module["_posix_spawn_file_actions_addclose"] = wasmExports2["posix_spawn_file_actions_addclose"];\n _posix_spawn_file_actions_adddup2 = Module["_posix_spawn_file_actions_adddup2"] = wasmExports2["posix_spawn_file_actions_adddup2"];\n _posix_spawn_file_actions_addfchdir_np = Module["_posix_spawn_file_actions_addfchdir_np"] = wasmExports2["posix_spawn_file_actions_addfchdir_np"];\n _posix_spawn_file_actions_addopen = Module["_posix_spawn_file_actions_addopen"] = wasmExports2["posix_spawn_file_actions_addopen"];\n _posix_spawn_file_actions_destroy = Module["_posix_spawn_file_actions_destroy"] = wasmExports2["posix_spawn_file_actions_destroy"];\n _posix_spawn_file_actions_init = Module["_posix_spawn_file_actions_init"] = wasmExports2["posix_spawn_file_actions_init"];\n _posix_spawnattr_destroy = Module["_posix_spawnattr_destroy"] = wasmExports2["posix_spawnattr_destroy"];\n _posix_spawnattr_getflags = Module["_posix_spawnattr_getflags"] = wasmExports2["posix_spawnattr_getflags"];\n _posix_spawnattr_getpgroup = Module["_posix_spawnattr_getpgroup"] = wasmExports2["posix_spawnattr_getpgroup"];\n _posix_spawnattr_getsigdefault = Module["_posix_spawnattr_getsigdefault"] = wasmExports2["posix_spawnattr_getsigdefault"];\n _posix_spawnattr_getsigmask = Module["_posix_spawnattr_getsigmask"] = wasmExports2["posix_spawnattr_getsigmask"];\n _posix_spawnattr_init = Module["_posix_spawnattr_init"] = wasmExports2["posix_spawnattr_init"];\n _posix_spawnattr_getschedparam = Module["_posix_spawnattr_getschedparam"] = wasmExports2["posix_spawnattr_getschedparam"];\n _posix_spawnattr_setschedparam = Module["_posix_spawnattr_setschedparam"] = wasmExports2["posix_spawnattr_setschedparam"];\n _posix_spawnattr_getschedpolicy = Module["_posix_spawnattr_getschedpolicy"] = wasmExports2["posix_spawnattr_getschedpolicy"];\n _posix_spawnattr_setschedpolicy = Module["_posix_spawnattr_setschedpolicy"] = wasmExports2["posix_spawnattr_setschedpolicy"];\n _posix_spawnattr_setflags = Module["_posix_spawnattr_setflags"] = wasmExports2["posix_spawnattr_setflags"];\n _posix_spawnattr_setpgroup = Module["_posix_spawnattr_setpgroup"] = wasmExports2["posix_spawnattr_setpgroup"];\n _posix_spawnattr_setsigdefault = Module["_posix_spawnattr_setsigdefault"] = wasmExports2["posix_spawnattr_setsigdefault"];\n _posix_spawnattr_setsigmask = Module["_posix_spawnattr_setsigmask"] = wasmExports2["posix_spawnattr_setsigmask"];\n _powf = Module["_powf"] = wasmExports2["powf"];\n _ppoll = Module["_ppoll"] = wasmExports2["ppoll"];\n _preadv = Module["_preadv"] = wasmExports2["preadv"];\n _printf = Module["_printf"] = wasmExports2["printf"];\n ___small_printf = Module["___small_printf"] = wasmExports2["__small_printf"];\n _em_proxying_queue_create = Module["_em_proxying_queue_create"] = wasmExports2["em_proxying_queue_create"];\n _em_proxying_queue_destroy = Module["_em_proxying_queue_destroy"] = wasmExports2["em_proxying_queue_destroy"];\n _emscripten_proxy_get_system_queue = Module["_emscripten_proxy_get_system_queue"] = wasmExports2["emscripten_proxy_get_system_queue"];\n _emscripten_proxy_execute_queue = Module["_emscripten_proxy_execute_queue"] = wasmExports2["emscripten_proxy_execute_queue"];\n _emscripten_proxy_finish = Module["_emscripten_proxy_finish"] = wasmExports2["emscripten_proxy_finish"];\n _emscripten_proxy_async = Module["_emscripten_proxy_async"] = wasmExports2["emscripten_proxy_async"];\n _emscripten_proxy_sync = Module["_emscripten_proxy_sync"] = wasmExports2["emscripten_proxy_sync"];\n _emscripten_proxy_sync_with_ctx = Module["_emscripten_proxy_sync_with_ctx"] = wasmExports2["emscripten_proxy_sync_with_ctx"];\n _pselect = Module["_pselect"] = wasmExports2["pselect"];\n _pthread_attr_getdetachstate = Module["_pthread_attr_getdetachstate"] = wasmExports2["pthread_attr_getdetachstate"];\n _pthread_attr_getguardsize = Module["_pthread_attr_getguardsize"] = wasmExports2["pthread_attr_getguardsize"];\n _pthread_attr_getinheritsched = Module["_pthread_attr_getinheritsched"] = wasmExports2["pthread_attr_getinheritsched"];\n _pthread_attr_getschedparam = Module["_pthread_attr_getschedparam"] = wasmExports2["pthread_attr_getschedparam"];\n _pthread_attr_getschedpolicy = Module["_pthread_attr_getschedpolicy"] = wasmExports2["pthread_attr_getschedpolicy"];\n _pthread_attr_getscope = Module["_pthread_attr_getscope"] = wasmExports2["pthread_attr_getscope"];\n _pthread_attr_getstack = Module["_pthread_attr_getstack"] = wasmExports2["pthread_attr_getstack"];\n _pthread_attr_getstacksize = Module["_pthread_attr_getstacksize"] = wasmExports2["pthread_attr_getstacksize"];\n _pthread_barrierattr_getpshared = Module["_pthread_barrierattr_getpshared"] = wasmExports2["pthread_barrierattr_getpshared"];\n _pthread_condattr_getclock = Module["_pthread_condattr_getclock"] = wasmExports2["pthread_condattr_getclock"];\n _pthread_condattr_getpshared = Module["_pthread_condattr_getpshared"] = wasmExports2["pthread_condattr_getpshared"];\n _pthread_mutexattr_getprotocol = Module["_pthread_mutexattr_getprotocol"] = wasmExports2["pthread_mutexattr_getprotocol"];\n _pthread_mutexattr_getpshared = Module["_pthread_mutexattr_getpshared"] = wasmExports2["pthread_mutexattr_getpshared"];\n _pthread_mutexattr_getrobust = Module["_pthread_mutexattr_getrobust"] = wasmExports2["pthread_mutexattr_getrobust"];\n _pthread_mutexattr_gettype = Module["_pthread_mutexattr_gettype"] = wasmExports2["pthread_mutexattr_gettype"];\n _pthread_rwlockattr_getpshared = Module["_pthread_rwlockattr_getpshared"] = wasmExports2["pthread_rwlockattr_getpshared"];\n _pthread_attr_setdetachstate = Module["_pthread_attr_setdetachstate"] = wasmExports2["pthread_attr_setdetachstate"];\n _pthread_attr_setguardsize = Module["_pthread_attr_setguardsize"] = wasmExports2["pthread_attr_setguardsize"];\n _pthread_attr_setinheritsched = Module["_pthread_attr_setinheritsched"] = wasmExports2["pthread_attr_setinheritsched"];\n _pthread_attr_setschedparam = Module["_pthread_attr_setschedparam"] = wasmExports2["pthread_attr_setschedparam"];\n _pthread_attr_setschedpolicy = Module["_pthread_attr_setschedpolicy"] = wasmExports2["pthread_attr_setschedpolicy"];\n _pthread_attr_setscope = Module["_pthread_attr_setscope"] = wasmExports2["pthread_attr_setscope"];\n _pthread_attr_setstack = Module["_pthread_attr_setstack"] = wasmExports2["pthread_attr_setstack"];\n __pthread_cleanup_pop = Module["__pthread_cleanup_pop"] = wasmExports2["_pthread_cleanup_pop"];\n _pthread_getattr_np = Module["_pthread_getattr_np"] = wasmExports2["pthread_getattr_np"];\n _pthread_getconcurrency = Module["_pthread_getconcurrency"] = wasmExports2["pthread_getconcurrency"];\n _pthread_getschedparam = Module["_pthread_getschedparam"] = wasmExports2["pthread_getschedparam"];\n _thrd_current = Module["_thrd_current"] = wasmExports2["thrd_current"];\n _emscripten_main_runtime_thread_id = Module["_emscripten_main_runtime_thread_id"] = wasmExports2["emscripten_main_runtime_thread_id"];\n _pthread_setconcurrency = Module["_pthread_setconcurrency"] = wasmExports2["pthread_setconcurrency"];\n _pthread_setschedprio = Module["_pthread_setschedprio"] = wasmExports2["pthread_setschedprio"];\n ___sig_is_blocked = Module["___sig_is_blocked"] = wasmExports2["__sig_is_blocked"];\n _sigorset = Module["_sigorset"] = wasmExports2["sigorset"];\n _sigandset = Module["_sigandset"] = wasmExports2["sigandset"];\n _sigdelset = Module["_sigdelset"] = wasmExports2["sigdelset"];\n _ptsname = Module["_ptsname"] = wasmExports2["ptsname"];\n __IO_putc = Module["__IO_putc"] = wasmExports2["_IO_putc"];\n _putc_unlocked = Module["_putc_unlocked"] = wasmExports2["putc_unlocked"];\n _fputc_unlocked = Module["_fputc_unlocked"] = wasmExports2["fputc_unlocked"];\n __IO_putc_unlocked = Module["__IO_putc_unlocked"] = wasmExports2["_IO_putc_unlocked"];\n _putchar_unlocked = Module["_putchar_unlocked"] = wasmExports2["putchar_unlocked"];\n _putenv = Module["_putenv"] = wasmExports2["putenv"];\n _putw = Module["_putw"] = wasmExports2["putw"];\n _putwc = Module["_putwc"] = wasmExports2["putwc"];\n _putwchar = Module["_putwchar"] = wasmExports2["putwchar"];\n _putwchar_unlocked = Module["_putwchar_unlocked"] = wasmExports2["putwchar_unlocked"];\n _pwritev = Module["_pwritev"] = wasmExports2["pwritev"];\n _qsort_r = Module["_qsort_r"] = wasmExports2["qsort_r"];\n _quick_exit = Module["_quick_exit"] = wasmExports2["quick_exit"];\n _action_abort = Module["_action_abort"] = wasmExports2["action_abort"];\n _action_terminate = Module["_action_terminate"] = wasmExports2["action_terminate"];\n _srand = Module["_srand"] = wasmExports2["srand"];\n _rand = Module["_rand"] = wasmExports2["rand"];\n _rand_r = Module["_rand_r"] = wasmExports2["rand_r"];\n _srandom = Module["_srandom"] = wasmExports2["srandom"];\n _initstate = Module["_initstate"] = wasmExports2["initstate"];\n _setstate = Module["_setstate"] = wasmExports2["setstate"];\n _random = Module["_random"] = wasmExports2["random"];\n _readdir_r = Module["_readdir_r"] = wasmExports2["readdir_r"];\n _reallocarray = Module["_reallocarray"] = wasmExports2["reallocarray"];\n _recvmmsg = Module["_recvmmsg"] = wasmExports2["recvmmsg"];\n _regcomp = Module["_regcomp"] = wasmExports2["regcomp"];\n _regfree = Module["_regfree"] = wasmExports2["regfree"];\n _regerror = Module["_regerror"] = wasmExports2["regerror"];\n _regexec = Module["_regexec"] = wasmExports2["regexec"];\n _remainder = Module["_remainder"] = wasmExports2["remainder"];\n _remquo = Module["_remquo"] = wasmExports2["remquo"];\n _drem = Module["_drem"] = wasmExports2["drem"];\n _remainderf = Module["_remainderf"] = wasmExports2["remainderf"];\n _remquof = Module["_remquof"] = wasmExports2["remquof"];\n _dremf = Module["_dremf"] = wasmExports2["dremf"];\n _remainderl = Module["_remainderl"] = wasmExports2["remainderl"];\n _remquol = Module["_remquol"] = wasmExports2["remquol"];\n _remove = Module["_remove"] = wasmExports2["remove"];\n _res_init = Module["_res_init"] = wasmExports2["res_init"];\n _res_mkquery = Module["_res_mkquery"] = wasmExports2["res_mkquery"];\n ___res_msend = Module["___res_msend"] = wasmExports2["__res_msend"];\n _res_send = Module["_res_send"] = wasmExports2["res_send"];\n ___res_state = Module["___res_state"] = wasmExports2["__res_state"];\n _rindex = Module["_rindex"] = wasmExports2["rindex"];\n _scalb = Module["_scalb"] = wasmExports2["scalb"];\n _scalbf = Module["_scalbf"] = wasmExports2["scalbf"];\n _scalbln = Module["_scalbln"] = wasmExports2["scalbln"];\n _scalblnf = Module["_scalblnf"] = wasmExports2["scalblnf"];\n _scalblnl = Module["_scalblnl"] = wasmExports2["scalblnl"];\n _scandir = Module["_scandir"] = wasmExports2["scandir"];\n _scanf = Module["_scanf"] = wasmExports2["scanf"];\n _vscanf = Module["_vscanf"] = wasmExports2["vscanf"];\n ___isoc99_scanf = Module["___isoc99_scanf"] = wasmExports2["__isoc99_scanf"];\n _secure_getenv = Module["_secure_getenv"] = wasmExports2["secure_getenv"];\n _seed48 = Module["_seed48"] = wasmExports2["seed48"];\n _seekdir = Module["_seekdir"] = wasmExports2["seekdir"];\n _sendmmsg = Module["_sendmmsg"] = wasmExports2["sendmmsg"];\n _endservent = Module["_endservent"] = wasmExports2["endservent"];\n _setservent = Module["_setservent"] = wasmExports2["setservent"];\n _getservent = Module["_getservent"] = wasmExports2["getservent"];\n _setbuf = Module["_setbuf"] = wasmExports2["setbuf"];\n _setbuffer = Module["_setbuffer"] = wasmExports2["setbuffer"];\n _setdomainname = Module["_setdomainname"] = wasmExports2["setdomainname"];\n _setegid = Module["_setegid"] = wasmExports2["setegid"];\n _seteuid = Module["_seteuid"] = wasmExports2["seteuid"];\n __emscripten_timeout = Module["__emscripten_timeout"] = wasmExports2["_emscripten_timeout"];\n _setlinebuf = Module["_setlinebuf"] = wasmExports2["setlinebuf"];\n _setresgid = Module["_setresgid"] = wasmExports2["setresgid"];\n _setresuid = Module["_setresuid"] = wasmExports2["setresuid"];\n _shm_open = Module["_shm_open"] = wasmExports2["shm_open"];\n _shm_unlink = Module["_shm_unlink"] = wasmExports2["shm_unlink"];\n _sigaction = Module["_sigaction"] = wasmExports2["sigaction"];\n _sigisemptyset = Module["_sigisemptyset"] = wasmExports2["sigisemptyset"];\n _bsd_signal = Module["_bsd_signal"] = wasmExports2["bsd_signal"];\n ___sysv_signal = Module["___sysv_signal"] = wasmExports2["__sysv_signal"];\n _significand = Module["_significand"] = wasmExports2["significand"];\n _significandf = Module["_significandf"] = wasmExports2["significandf"];\n _sigprocmask = Module["_sigprocmask"] = wasmExports2["sigprocmask"];\n _sincos = Module["_sincos"] = wasmExports2["sincos"];\n _sincosf = Module["_sincosf"] = wasmExports2["sincosf"];\n _sincosl = Module["_sincosl"] = wasmExports2["sincosl"];\n _sinhl = Module["_sinhl"] = wasmExports2["sinhl"];\n _sinl = Module["_sinl"] = wasmExports2["sinl"];\n _sockatmark = Module["_sockatmark"] = wasmExports2["sockatmark"];\n _vsprintf = Module["_vsprintf"] = wasmExports2["vsprintf"];\n _vsiprintf = Module["_vsiprintf"] = wasmExports2["vsiprintf"];\n ___small_sprintf = Module["___small_sprintf"] = wasmExports2["__small_sprintf"];\n ___small_vsprintf = Module["___small_vsprintf"] = wasmExports2["__small_vsprintf"];\n _srand48 = Module["_srand48"] = wasmExports2["srand48"];\n _vsscanf = Module["_vsscanf"] = wasmExports2["vsscanf"];\n ___isoc99_sscanf = Module["___isoc99_sscanf"] = wasmExports2["__isoc99_sscanf"];\n _statfs = Module["_statfs"] = wasmExports2["statfs"];\n _fstatfs = Module["_fstatfs"] = wasmExports2["fstatfs"];\n _statx = Module["_statx"] = wasmExports2["statx"];\n _stpcpy = Module["_stpcpy"] = wasmExports2["stpcpy"];\n _stpncpy = Module["_stpncpy"] = wasmExports2["stpncpy"];\n ___strcasecmp_l = Module["___strcasecmp_l"] = wasmExports2["__strcasecmp_l"];\n _strcasecmp_l = Module["_strcasecmp_l"] = wasmExports2["strcasecmp_l"];\n _strcasestr = Module["_strcasestr"] = wasmExports2["strcasestr"];\n _strncasecmp = Module["_strncasecmp"] = wasmExports2["strncasecmp"];\n _strchrnul = Module["_strchrnul"] = wasmExports2["strchrnul"];\n ___strcoll_l = Module["___strcoll_l"] = wasmExports2["__strcoll_l"];\n _strcoll_l = Module["_strcoll_l"] = wasmExports2["strcoll_l"];\n ___strerror_l = Module["___strerror_l"] = wasmExports2["__strerror_l"];\n _strerror_l = Module["_strerror_l"] = wasmExports2["strerror_l"];\n _strerror_r = Module["_strerror_r"] = wasmExports2["strerror_r"];\n ___xpg_strerror_r = Module["___xpg_strerror_r"] = wasmExports2["__xpg_strerror_r"];\n _strfmon_l = Module["_strfmon_l"] = wasmExports2["strfmon_l"];\n _strfmon = Module["_strfmon"] = wasmExports2["strfmon"];\n _strftime_l = Module["_strftime_l"] = wasmExports2["strftime_l"];\n _strlcat = Module["_strlcat"] = wasmExports2["strlcat"];\n _strlcpy = Module["_strlcpy"] = wasmExports2["strlcpy"];\n _strlwr = Module["_strlwr"] = wasmExports2["strlwr"];\n ___strncasecmp_l = Module["___strncasecmp_l"] = wasmExports2["__strncasecmp_l"];\n _strncasecmp_l = Module["_strncasecmp_l"] = wasmExports2["strncasecmp_l"];\n _strndup = Module["_strndup"] = wasmExports2["strndup"];\n _strsep = Module["_strsep"] = wasmExports2["strsep"];\n _strtof = Module["_strtof"] = wasmExports2["strtof"];\n _strtold = Module["_strtold"] = wasmExports2["strtold"];\n _strtof_l = Module["_strtof_l"] = wasmExports2["strtof_l"];\n _strtod_l = Module["_strtod_l"] = wasmExports2["strtod_l"];\n _strtold_l = Module["_strtold_l"] = wasmExports2["strtold_l"];\n ___strtof_l = Module["___strtof_l"] = wasmExports2["__strtof_l"];\n ___strtod_l = Module["___strtod_l"] = wasmExports2["__strtod_l"];\n ___strtold_l = Module["___strtold_l"] = wasmExports2["__strtold_l"];\n _strtok = Module["_strtok"] = wasmExports2["strtok"];\n _strtok_r = Module["_strtok_r"] = wasmExports2["strtok_r"];\n _strtoll = Module["_strtoll"] = wasmExports2["strtoll"];\n _strtoimax = Module["_strtoimax"] = wasmExports2["strtoimax"];\n _strtoumax = Module["_strtoumax"] = wasmExports2["strtoumax"];\n ___strtol_internal = Module["___strtol_internal"] = wasmExports2["__strtol_internal"];\n ___strtoul_internal = Module["___strtoul_internal"] = wasmExports2["__strtoul_internal"];\n ___strtoll_internal = Module["___strtoll_internal"] = wasmExports2["__strtoll_internal"];\n ___strtoull_internal = Module["___strtoull_internal"] = wasmExports2["__strtoull_internal"];\n ___strtoimax_internal = Module["___strtoimax_internal"] = wasmExports2["__strtoimax_internal"];\n ___strtoumax_internal = Module["___strtoumax_internal"] = wasmExports2["__strtoumax_internal"];\n _strtoull_l = Module["_strtoull_l"] = wasmExports2["strtoull_l"];\n _strtoll_l = Module["_strtoll_l"] = wasmExports2["strtoll_l"];\n _strtoul_l = Module["_strtoul_l"] = wasmExports2["strtoul_l"];\n _strtol_l = Module["_strtol_l"] = wasmExports2["strtol_l"];\n _strupr = Module["_strupr"] = wasmExports2["strupr"];\n _strverscmp = Module["_strverscmp"] = wasmExports2["strverscmp"];\n ___strxfrm_l = Module["___strxfrm_l"] = wasmExports2["__strxfrm_l"];\n _strxfrm = Module["_strxfrm"] = wasmExports2["strxfrm"];\n _strxfrm_l = Module["_strxfrm_l"] = wasmExports2["strxfrm_l"];\n _swab = Module["_swab"] = wasmExports2["swab"];\n _swprintf = Module["_swprintf"] = wasmExports2["swprintf"];\n _vswprintf = Module["_vswprintf"] = wasmExports2["vswprintf"];\n _swscanf = Module["_swscanf"] = wasmExports2["swscanf"];\n _vswscanf = Module["_vswscanf"] = wasmExports2["vswscanf"];\n ___isoc99_swscanf = Module["___isoc99_swscanf"] = wasmExports2["__isoc99_swscanf"];\n _symlinkat = Module["_symlinkat"] = wasmExports2["symlinkat"];\n _setlogmask = Module["_setlogmask"] = wasmExports2["setlogmask"];\n _closelog = Module["_closelog"] = wasmExports2["closelog"];\n _openlog = Module["_openlog"] = wasmExports2["openlog"];\n _syslog = Module["_syslog"] = wasmExports2["syslog"];\n _vsyslog = Module["_vsyslog"] = wasmExports2["vsyslog"];\n _tanhf = Module["_tanhf"] = wasmExports2["tanhf"];\n _tanhl = Module["_tanhl"] = wasmExports2["tanhl"];\n _tanl = Module["_tanl"] = wasmExports2["tanl"];\n _tcgetsid = Module["_tcgetsid"] = wasmExports2["tcgetsid"];\n _tcgetwinsize = Module["_tcgetwinsize"] = wasmExports2["tcgetwinsize"];\n _tcsetwinsize = Module["_tcsetwinsize"] = wasmExports2["tcsetwinsize"];\n _tdelete = Module["_tdelete"] = wasmExports2["tdelete"];\n _tdestroy = Module["_tdestroy"] = wasmExports2["tdestroy"];\n _telldir = Module["_telldir"] = wasmExports2["telldir"];\n _tempnam = Module["_tempnam"] = wasmExports2["tempnam"];\n _ngettext = Module["_ngettext"] = wasmExports2["ngettext"];\n _tfind = Module["_tfind"] = wasmExports2["tfind"];\n _tgamma = Module["_tgamma"] = wasmExports2["tgamma"];\n _tgammaf = Module["_tgammaf"] = wasmExports2["tgammaf"];\n _tgammal = Module["_tgammal"] = wasmExports2["tgammal"];\n _thrd_create = Module["_thrd_create"] = wasmExports2["thrd_create"];\n _thrd_exit = Module["_thrd_exit"] = wasmExports2["thrd_exit"];\n _thrd_join = Module["_thrd_join"] = wasmExports2["thrd_join"];\n _thrd_sleep = Module["_thrd_sleep"] = wasmExports2["thrd_sleep"];\n _thrd_yield = Module["_thrd_yield"] = wasmExports2["thrd_yield"];\n _emscripten_set_thread_name = Module["_emscripten_set_thread_name"] = wasmExports2["emscripten_set_thread_name"];\n _timespec_get = Module["_timespec_get"] = wasmExports2["timespec_get"];\n _tmpfile = Module["_tmpfile"] = wasmExports2["tmpfile"];\n _tmpnam = Module["_tmpnam"] = wasmExports2["tmpnam"];\n _toascii = Module["_toascii"] = wasmExports2["toascii"];\n ___tolower_l = Module["___tolower_l"] = wasmExports2["__tolower_l"];\n _tolower_l = Module["_tolower_l"] = wasmExports2["tolower_l"];\n ___toupper_l = Module["___toupper_l"] = wasmExports2["__toupper_l"];\n _toupper_l = Module["_toupper_l"] = wasmExports2["toupper_l"];\n ___towupper_l = Module["___towupper_l"] = wasmExports2["__towupper_l"];\n ___towlower_l = Module["___towlower_l"] = wasmExports2["__towlower_l"];\n _towupper_l = Module["_towupper_l"] = wasmExports2["towupper_l"];\n _towlower_l = Module["_towlower_l"] = wasmExports2["towlower_l"];\n _truncf = Module["_truncf"] = wasmExports2["truncf"];\n _truncl = Module["_truncl"] = wasmExports2["truncl"];\n _tsearch = Module["_tsearch"] = wasmExports2["tsearch"];\n _tss_create = Module["_tss_create"] = wasmExports2["tss_create"];\n _tss_delete = Module["_tss_delete"] = wasmExports2["tss_delete"];\n _tss_set = Module["_tss_set"] = wasmExports2["tss_set"];\n _ttyname = Module["_ttyname"] = wasmExports2["ttyname"];\n _twalk = Module["_twalk"] = wasmExports2["twalk"];\n _ualarm = Module["_ualarm"] = wasmExports2["ualarm"];\n _ungetwc = Module["_ungetwc"] = wasmExports2["ungetwc"];\n ___uselocale = Module["___uselocale"] = wasmExports2["__uselocale"];\n _uselocale = Module["_uselocale"] = wasmExports2["uselocale"];\n _utime = Module["_utime"] = wasmExports2["utime"];\n _versionsort = Module["_versionsort"] = wasmExports2["versionsort"];\n ___vfprintf_internal = Module["___vfprintf_internal"] = wasmExports2["__vfprintf_internal"];\n ___isoc99_vfscanf = Module["___isoc99_vfscanf"] = wasmExports2["__isoc99_vfscanf"];\n _wcsnlen = Module["_wcsnlen"] = wasmExports2["wcsnlen"];\n ___isoc99_vfwscanf = Module["___isoc99_vfwscanf"] = wasmExports2["__isoc99_vfwscanf"];\n _vprintf = Module["_vprintf"] = wasmExports2["vprintf"];\n ___isoc99_vscanf = Module["___isoc99_vscanf"] = wasmExports2["__isoc99_vscanf"];\n _vsniprintf = Module["_vsniprintf"] = wasmExports2["vsniprintf"];\n ___small_vsnprintf = Module["___small_vsnprintf"] = wasmExports2["__small_vsnprintf"];\n ___isoc99_vsscanf = Module["___isoc99_vsscanf"] = wasmExports2["__isoc99_vsscanf"];\n ___isoc99_vswscanf = Module["___isoc99_vswscanf"] = wasmExports2["__isoc99_vswscanf"];\n _vwprintf = Module["_vwprintf"] = wasmExports2["vwprintf"];\n _vwscanf = Module["_vwscanf"] = wasmExports2["vwscanf"];\n ___isoc99_vwscanf = Module["___isoc99_vwscanf"] = wasmExports2["__isoc99_vwscanf"];\n _wcpcpy = Module["_wcpcpy"] = wasmExports2["wcpcpy"];\n _wcpncpy = Module["_wcpncpy"] = wasmExports2["wcpncpy"];\n _wcscasecmp = Module["_wcscasecmp"] = wasmExports2["wcscasecmp"];\n _wcsncasecmp = Module["_wcsncasecmp"] = wasmExports2["wcsncasecmp"];\n _wcscasecmp_l = Module["_wcscasecmp_l"] = wasmExports2["wcscasecmp_l"];\n _wcscat = Module["_wcscat"] = wasmExports2["wcscat"];\n ___wcscoll_l = Module["___wcscoll_l"] = wasmExports2["__wcscoll_l"];\n _wcscoll_l = Module["_wcscoll_l"] = wasmExports2["wcscoll_l"];\n _wcscspn = Module["_wcscspn"] = wasmExports2["wcscspn"];\n _wcsdup = Module["_wcsdup"] = wasmExports2["wcsdup"];\n _wmemcpy = Module["_wmemcpy"] = wasmExports2["wmemcpy"];\n ___wcsftime_l = Module["___wcsftime_l"] = wasmExports2["__wcsftime_l"];\n _wcstoul = Module["_wcstoul"] = wasmExports2["wcstoul"];\n _wcsftime_l = Module["_wcsftime_l"] = wasmExports2["wcsftime_l"];\n _wcsncasecmp_l = Module["_wcsncasecmp_l"] = wasmExports2["wcsncasecmp_l"];\n _wcsncat = Module["_wcsncat"] = wasmExports2["wcsncat"];\n _wmemset = Module["_wmemset"] = wasmExports2["wmemset"];\n _wcsnrtombs = Module["_wcsnrtombs"] = wasmExports2["wcsnrtombs"];\n _wcspbrk = Module["_wcspbrk"] = wasmExports2["wcspbrk"];\n _wcsspn = Module["_wcsspn"] = wasmExports2["wcsspn"];\n _wcsstr = Module["_wcsstr"] = wasmExports2["wcsstr"];\n _wcstof = Module["_wcstof"] = wasmExports2["wcstof"];\n _wcstod = Module["_wcstod"] = wasmExports2["wcstod"];\n _wcstold = Module["_wcstold"] = wasmExports2["wcstold"];\n _wcstoull = Module["_wcstoull"] = wasmExports2["wcstoull"];\n _wcstoll = Module["_wcstoll"] = wasmExports2["wcstoll"];\n _wcstoimax = Module["_wcstoimax"] = wasmExports2["wcstoimax"];\n _wcstoumax = Module["_wcstoumax"] = wasmExports2["wcstoumax"];\n _wcswcs = Module["_wcswcs"] = wasmExports2["wcswcs"];\n _wcswidth = Module["_wcswidth"] = wasmExports2["wcswidth"];\n _wcwidth = Module["_wcwidth"] = wasmExports2["wcwidth"];\n ___wcsxfrm_l = Module["___wcsxfrm_l"] = wasmExports2["__wcsxfrm_l"];\n _wcsxfrm_l = Module["_wcsxfrm_l"] = wasmExports2["wcsxfrm_l"];\n _wctob = Module["_wctob"] = wasmExports2["wctob"];\n _wctrans = Module["_wctrans"] = wasmExports2["wctrans"];\n _towctrans = Module["_towctrans"] = wasmExports2["towctrans"];\n ___wctrans_l = Module["___wctrans_l"] = wasmExports2["__wctrans_l"];\n ___towctrans_l = Module["___towctrans_l"] = wasmExports2["__towctrans_l"];\n _wctrans_l = Module["_wctrans_l"] = wasmExports2["wctrans_l"];\n _towctrans_l = Module["_towctrans_l"] = wasmExports2["towctrans_l"];\n _wmemmove = Module["_wmemmove"] = wasmExports2["wmemmove"];\n _wprintf = Module["_wprintf"] = wasmExports2["wprintf"];\n _wscanf = Module["_wscanf"] = wasmExports2["wscanf"];\n ___isoc99_wscanf = Module["___isoc99_wscanf"] = wasmExports2["__isoc99_wscanf"];\n ___libc_realloc = Module["___libc_realloc"] = wasmExports2["__libc_realloc"];\n _realloc_in_place = Module["_realloc_in_place"] = wasmExports2["realloc_in_place"];\n _memalign = Module["_memalign"] = wasmExports2["memalign"];\n _valloc = Module["_valloc"] = wasmExports2["valloc"];\n _pvalloc = Module["_pvalloc"] = wasmExports2["pvalloc"];\n _mallinfo = Module["_mallinfo"] = wasmExports2["mallinfo"];\n _mallopt = Module["_mallopt"] = wasmExports2["mallopt"];\n _malloc_trim = Module["_malloc_trim"] = wasmExports2["malloc_trim"];\n _malloc_usable_size = Module["_malloc_usable_size"] = wasmExports2["malloc_usable_size"];\n _malloc_footprint = Module["_malloc_footprint"] = wasmExports2["malloc_footprint"];\n _malloc_max_footprint = Module["_malloc_max_footprint"] = wasmExports2["malloc_max_footprint"];\n _malloc_footprint_limit = Module["_malloc_footprint_limit"] = wasmExports2["malloc_footprint_limit"];\n _malloc_set_footprint_limit = Module["_malloc_set_footprint_limit"] = wasmExports2["malloc_set_footprint_limit"];\n _independent_calloc = Module["_independent_calloc"] = wasmExports2["independent_calloc"];\n _independent_comalloc = Module["_independent_comalloc"] = wasmExports2["independent_comalloc"];\n _bulk_free = Module["_bulk_free"] = wasmExports2["bulk_free"];\n _emscripten_builtin_realloc = Module["_emscripten_builtin_realloc"] = wasmExports2["emscripten_builtin_realloc"];\n _emscripten_builtin_calloc = Module["_emscripten_builtin_calloc"] = wasmExports2["emscripten_builtin_calloc"];\n _emscripten_get_sbrk_ptr = Module["_emscripten_get_sbrk_ptr"] = wasmExports2["emscripten_get_sbrk_ptr"];\n __sbrk64 = Module["__sbrk64"] = wasmExports2["_sbrk64"];\n _brk = Module["_brk"] = wasmExports2["brk"];\n ___trap = Module["___trap"] = wasmExports2["__trap"];\n ___absvdi2 = Module["___absvdi2"] = wasmExports2["__absvdi2"];\n ___absvsi2 = Module["___absvsi2"] = wasmExports2["__absvsi2"];\n ___absvti2 = Module["___absvti2"] = wasmExports2["__absvti2"];\n ___adddf3 = Module["___adddf3"] = wasmExports2["__adddf3"];\n ___fe_getround = Module["___fe_getround"] = wasmExports2["__fe_getround"];\n ___fe_raise_inexact = Module["___fe_raise_inexact"] = wasmExports2["__fe_raise_inexact"];\n ___addsf3 = Module["___addsf3"] = wasmExports2["__addsf3"];\n ___ashlti3 = Module["___ashlti3"] = wasmExports2["__ashlti3"];\n ___lshrti3 = Module["___lshrti3"] = wasmExports2["__lshrti3"];\n ___addvdi3 = Module["___addvdi3"] = wasmExports2["__addvdi3"];\n ___addvsi3 = Module["___addvsi3"] = wasmExports2["__addvsi3"];\n ___addvti3 = Module["___addvti3"] = wasmExports2["__addvti3"];\n ___ashldi3 = Module["___ashldi3"] = wasmExports2["__ashldi3"];\n ___ashrdi3 = Module["___ashrdi3"] = wasmExports2["__ashrdi3"];\n ___ashrti3 = Module["___ashrti3"] = wasmExports2["__ashrti3"];\n ___atomic_is_lock_free = Module["___atomic_is_lock_free"] = wasmExports2["__atomic_is_lock_free"];\n ___atomic_load = Module["___atomic_load"] = wasmExports2["__atomic_load"];\n ___atomic_store = Module["___atomic_store"] = wasmExports2["__atomic_store"];\n ___atomic_compare_exchange = Module["___atomic_compare_exchange"] = wasmExports2["__atomic_compare_exchange"];\n ___atomic_exchange = Module["___atomic_exchange"] = wasmExports2["__atomic_exchange"];\n ___atomic_load_1 = Module["___atomic_load_1"] = wasmExports2["__atomic_load_1"];\n ___atomic_load_2 = Module["___atomic_load_2"] = wasmExports2["__atomic_load_2"];\n ___atomic_load_4 = Module["___atomic_load_4"] = wasmExports2["__atomic_load_4"];\n ___atomic_load_8 = Module["___atomic_load_8"] = wasmExports2["__atomic_load_8"];\n ___atomic_load_16 = Module["___atomic_load_16"] = wasmExports2["__atomic_load_16"];\n ___atomic_store_1 = Module["___atomic_store_1"] = wasmExports2["__atomic_store_1"];\n ___atomic_store_2 = Module["___atomic_store_2"] = wasmExports2["__atomic_store_2"];\n ___atomic_store_4 = Module["___atomic_store_4"] = wasmExports2["__atomic_store_4"];\n ___atomic_store_8 = Module["___atomic_store_8"] = wasmExports2["__atomic_store_8"];\n ___atomic_store_16 = Module["___atomic_store_16"] = wasmExports2["__atomic_store_16"];\n ___atomic_exchange_1 = Module["___atomic_exchange_1"] = wasmExports2["__atomic_exchange_1"];\n ___atomic_exchange_2 = Module["___atomic_exchange_2"] = wasmExports2["__atomic_exchange_2"];\n ___atomic_exchange_4 = Module["___atomic_exchange_4"] = wasmExports2["__atomic_exchange_4"];\n ___atomic_exchange_8 = Module["___atomic_exchange_8"] = wasmExports2["__atomic_exchange_8"];\n ___atomic_exchange_16 = Module["___atomic_exchange_16"] = wasmExports2["__atomic_exchange_16"];\n ___atomic_compare_exchange_1 = Module["___atomic_compare_exchange_1"] = wasmExports2["__atomic_compare_exchange_1"];\n ___atomic_compare_exchange_2 = Module["___atomic_compare_exchange_2"] = wasmExports2["__atomic_compare_exchange_2"];\n ___atomic_compare_exchange_4 = Module["___atomic_compare_exchange_4"] = wasmExports2["__atomic_compare_exchange_4"];\n ___atomic_compare_exchange_8 = Module["___atomic_compare_exchange_8"] = wasmExports2["__atomic_compare_exchange_8"];\n ___atomic_compare_exchange_16 = Module["___atomic_compare_exchange_16"] = wasmExports2["__atomic_compare_exchange_16"];\n ___atomic_fetch_add_1 = Module["___atomic_fetch_add_1"] = wasmExports2["__atomic_fetch_add_1"];\n ___atomic_fetch_add_2 = Module["___atomic_fetch_add_2"] = wasmExports2["__atomic_fetch_add_2"];\n ___atomic_fetch_add_4 = Module["___atomic_fetch_add_4"] = wasmExports2["__atomic_fetch_add_4"];\n ___atomic_fetch_add_8 = Module["___atomic_fetch_add_8"] = wasmExports2["__atomic_fetch_add_8"];\n ___atomic_fetch_add_16 = Module["___atomic_fetch_add_16"] = wasmExports2["__atomic_fetch_add_16"];\n ___atomic_fetch_sub_1 = Module["___atomic_fetch_sub_1"] = wasmExports2["__atomic_fetch_sub_1"];\n ___atomic_fetch_sub_2 = Module["___atomic_fetch_sub_2"] = wasmExports2["__atomic_fetch_sub_2"];\n ___atomic_fetch_sub_4 = Module["___atomic_fetch_sub_4"] = wasmExports2["__atomic_fetch_sub_4"];\n ___atomic_fetch_sub_8 = Module["___atomic_fetch_sub_8"] = wasmExports2["__atomic_fetch_sub_8"];\n ___atomic_fetch_sub_16 = Module["___atomic_fetch_sub_16"] = wasmExports2["__atomic_fetch_sub_16"];\n ___atomic_fetch_and_1 = Module["___atomic_fetch_and_1"] = wasmExports2["__atomic_fetch_and_1"];\n ___atomic_fetch_and_2 = Module["___atomic_fetch_and_2"] = wasmExports2["__atomic_fetch_and_2"];\n ___atomic_fetch_and_4 = Module["___atomic_fetch_and_4"] = wasmExports2["__atomic_fetch_and_4"];\n ___atomic_fetch_and_8 = Module["___atomic_fetch_and_8"] = wasmExports2["__atomic_fetch_and_8"];\n ___atomic_fetch_and_16 = Module["___atomic_fetch_and_16"] = wasmExports2["__atomic_fetch_and_16"];\n ___atomic_fetch_or_1 = Module["___atomic_fetch_or_1"] = wasmExports2["__atomic_fetch_or_1"];\n ___atomic_fetch_or_2 = Module["___atomic_fetch_or_2"] = wasmExports2["__atomic_fetch_or_2"];\n ___atomic_fetch_or_4 = Module["___atomic_fetch_or_4"] = wasmExports2["__atomic_fetch_or_4"];\n ___atomic_fetch_or_8 = Module["___atomic_fetch_or_8"] = wasmExports2["__atomic_fetch_or_8"];\n ___atomic_fetch_or_16 = Module["___atomic_fetch_or_16"] = wasmExports2["__atomic_fetch_or_16"];\n ___atomic_fetch_xor_1 = Module["___atomic_fetch_xor_1"] = wasmExports2["__atomic_fetch_xor_1"];\n ___atomic_fetch_xor_2 = Module["___atomic_fetch_xor_2"] = wasmExports2["__atomic_fetch_xor_2"];\n ___atomic_fetch_xor_4 = Module["___atomic_fetch_xor_4"] = wasmExports2["__atomic_fetch_xor_4"];\n ___atomic_fetch_xor_8 = Module["___atomic_fetch_xor_8"] = wasmExports2["__atomic_fetch_xor_8"];\n ___atomic_fetch_xor_16 = Module["___atomic_fetch_xor_16"] = wasmExports2["__atomic_fetch_xor_16"];\n ___atomic_fetch_nand_1 = Module["___atomic_fetch_nand_1"] = wasmExports2["__atomic_fetch_nand_1"];\n ___atomic_fetch_nand_2 = Module["___atomic_fetch_nand_2"] = wasmExports2["__atomic_fetch_nand_2"];\n ___atomic_fetch_nand_4 = Module["___atomic_fetch_nand_4"] = wasmExports2["__atomic_fetch_nand_4"];\n ___atomic_fetch_nand_8 = Module["___atomic_fetch_nand_8"] = wasmExports2["__atomic_fetch_nand_8"];\n ___atomic_fetch_nand_16 = Module["___atomic_fetch_nand_16"] = wasmExports2["__atomic_fetch_nand_16"];\n _atomic_flag_clear = Module["_atomic_flag_clear"] = wasmExports2["atomic_flag_clear"];\n _atomic_flag_clear_explicit = Module["_atomic_flag_clear_explicit"] = wasmExports2["atomic_flag_clear_explicit"];\n _atomic_flag_test_and_set = Module["_atomic_flag_test_and_set"] = wasmExports2["atomic_flag_test_and_set"];\n _atomic_flag_test_and_set_explicit = Module["_atomic_flag_test_and_set_explicit"] = wasmExports2["atomic_flag_test_and_set_explicit"];\n _atomic_signal_fence = Module["_atomic_signal_fence"] = wasmExports2["atomic_signal_fence"];\n _atomic_thread_fence = Module["_atomic_thread_fence"] = wasmExports2["atomic_thread_fence"];\n ___bswapdi2 = Module["___bswapdi2"] = wasmExports2["__bswapdi2"];\n ___bswapsi2 = Module["___bswapsi2"] = wasmExports2["__bswapsi2"];\n ___clear_cache = Module["___clear_cache"] = wasmExports2["__clear_cache"];\n ___clzdi2 = Module["___clzdi2"] = wasmExports2["__clzdi2"];\n ___clzsi2 = Module["___clzsi2"] = wasmExports2["__clzsi2"];\n ___clzti2 = Module["___clzti2"] = wasmExports2["__clzti2"];\n ___cmpdi2 = Module["___cmpdi2"] = wasmExports2["__cmpdi2"];\n ___cmpti2 = Module["___cmpti2"] = wasmExports2["__cmpti2"];\n ___ledf2 = Module["___ledf2"] = wasmExports2["__ledf2"];\n ___gedf2 = Module["___gedf2"] = wasmExports2["__gedf2"];\n ___unorddf2 = Module["___unorddf2"] = wasmExports2["__unorddf2"];\n ___eqdf2 = Module["___eqdf2"] = wasmExports2["__eqdf2"];\n ___ltdf2 = Module["___ltdf2"] = wasmExports2["__ltdf2"];\n ___nedf2 = Module["___nedf2"] = wasmExports2["__nedf2"];\n ___gtdf2 = Module["___gtdf2"] = wasmExports2["__gtdf2"];\n ___lesf2 = Module["___lesf2"] = wasmExports2["__lesf2"];\n ___gesf2 = Module["___gesf2"] = wasmExports2["__gesf2"];\n ___unordsf2 = Module["___unordsf2"] = wasmExports2["__unordsf2"];\n ___eqsf2 = Module["___eqsf2"] = wasmExports2["__eqsf2"];\n ___ltsf2 = Module["___ltsf2"] = wasmExports2["__ltsf2"];\n ___nesf2 = Module["___nesf2"] = wasmExports2["__nesf2"];\n ___gtsf2 = Module["___gtsf2"] = wasmExports2["__gtsf2"];\n ___ctzdi2 = Module["___ctzdi2"] = wasmExports2["__ctzdi2"];\n ___ctzsi2 = Module["___ctzsi2"] = wasmExports2["__ctzsi2"];\n ___ctzti2 = Module["___ctzti2"] = wasmExports2["__ctzti2"];\n ___divdc3 = Module["___divdc3"] = wasmExports2["__divdc3"];\n ___divdf3 = Module["___divdf3"] = wasmExports2["__divdf3"];\n ___divdi3 = Module["___divdi3"] = wasmExports2["__divdi3"];\n ___udivmoddi4 = Module["___udivmoddi4"] = wasmExports2["__udivmoddi4"];\n ___divmoddi4 = Module["___divmoddi4"] = wasmExports2["__divmoddi4"];\n ___divmodsi4 = Module["___divmodsi4"] = wasmExports2["__divmodsi4"];\n ___udivmodsi4 = Module["___udivmodsi4"] = wasmExports2["__udivmodsi4"];\n ___divmodti4 = Module["___divmodti4"] = wasmExports2["__divmodti4"];\n ___udivmodti4 = Module["___udivmodti4"] = wasmExports2["__udivmodti4"];\n ___divsc3 = Module["___divsc3"] = wasmExports2["__divsc3"];\n ___divsf3 = Module["___divsf3"] = wasmExports2["__divsf3"];\n ___divsi3 = Module["___divsi3"] = wasmExports2["__divsi3"];\n ___divtc3 = Module["___divtc3"] = wasmExports2["__divtc3"];\n ___divti3 = Module["___divti3"] = wasmExports2["__divti3"];\n _setThrew = Module["_setThrew"] = wasmExports2["setThrew"];\n ___wasm_setjmp = Module["___wasm_setjmp"] = wasmExports2["__wasm_setjmp"];\n ___wasm_setjmp_test = Module["___wasm_setjmp_test"] = wasmExports2["__wasm_setjmp_test"];\n ___wasm_longjmp = Module["___wasm_longjmp"] = wasmExports2["__wasm_longjmp"];\n __emscripten_tempret_set = Module["__emscripten_tempret_set"] = wasmExports2["_emscripten_tempret_set"];\n __emscripten_tempret_get = Module["__emscripten_tempret_get"] = wasmExports2["_emscripten_tempret_get"];\n ___get_temp_ret = Module["___get_temp_ret"] = wasmExports2["__get_temp_ret"];\n ___set_temp_ret = Module["___set_temp_ret"] = wasmExports2["__set_temp_ret"];\n _getTempRet0 = Module["_getTempRet0"] = wasmExports2["getTempRet0"];\n _setTempRet0 = Module["_setTempRet0"] = wasmExports2["setTempRet0"];\n ___emutls_get_address = Module["___emutls_get_address"] = wasmExports2["__emutls_get_address"];\n ___enable_execute_stack = Module["___enable_execute_stack"] = wasmExports2["__enable_execute_stack"];\n ___extendhfdf2 = Module["___extendhfdf2"] = wasmExports2["__extendhfdf2"];\n ___extendhfsf2 = Module["___extendhfsf2"] = wasmExports2["__extendhfsf2"];\n ___gnu_h2f_ieee = Module["___gnu_h2f_ieee"] = wasmExports2["__gnu_h2f_ieee"];\n ___extendsfdf2 = Module["___extendsfdf2"] = wasmExports2["__extendsfdf2"];\n ___ffsdi2 = Module["___ffsdi2"] = wasmExports2["__ffsdi2"];\n ___ffssi2 = Module["___ffssi2"] = wasmExports2["__ffssi2"];\n ___ffsti2 = Module["___ffsti2"] = wasmExports2["__ffsti2"];\n ___fixdfdi = Module["___fixdfdi"] = wasmExports2["__fixdfdi"];\n ___fixunsdfdi = Module["___fixunsdfdi"] = wasmExports2["__fixunsdfdi"];\n ___fixdfsi = Module["___fixdfsi"] = wasmExports2["__fixdfsi"];\n ___fixdfti = Module["___fixdfti"] = wasmExports2["__fixdfti"];\n ___fixsfdi = Module["___fixsfdi"] = wasmExports2["__fixsfdi"];\n ___fixunssfdi = Module["___fixunssfdi"] = wasmExports2["__fixunssfdi"];\n ___fixsfsi = Module["___fixsfsi"] = wasmExports2["__fixsfsi"];\n ___fixsfti = Module["___fixsfti"] = wasmExports2["__fixsfti"];\n ___fixtfti = Module["___fixtfti"] = wasmExports2["__fixtfti"];\n ___fixunsdfsi = Module["___fixunsdfsi"] = wasmExports2["__fixunsdfsi"];\n ___fixunsdfti = Module["___fixunsdfti"] = wasmExports2["__fixunsdfti"];\n ___fixunssfsi = Module["___fixunssfsi"] = wasmExports2["__fixunssfsi"];\n ___fixunssfti = Module["___fixunssfti"] = wasmExports2["__fixunssfti"];\n ___fixunstfdi = Module["___fixunstfdi"] = wasmExports2["__fixunstfdi"];\n ___fixunstfsi = Module["___fixunstfsi"] = wasmExports2["__fixunstfsi"];\n ___fixunstfti = Module["___fixunstfti"] = wasmExports2["__fixunstfti"];\n ___floatdidf = Module["___floatdidf"] = wasmExports2["__floatdidf"];\n ___floatdisf = Module["___floatdisf"] = wasmExports2["__floatdisf"];\n ___floatsidf = Module["___floatsidf"] = wasmExports2["__floatsidf"];\n ___floatsisf = Module["___floatsisf"] = wasmExports2["__floatsisf"];\n ___floattidf = Module["___floattidf"] = wasmExports2["__floattidf"];\n ___floattisf = Module["___floattisf"] = wasmExports2["__floattisf"];\n ___floattitf = Module["___floattitf"] = wasmExports2["__floattitf"];\n ___floatundidf = Module["___floatundidf"] = wasmExports2["__floatundidf"];\n ___floatundisf = Module["___floatundisf"] = wasmExports2["__floatundisf"];\n ___floatunditf = Module["___floatunditf"] = wasmExports2["__floatunditf"];\n ___floatunsidf = Module["___floatunsidf"] = wasmExports2["__floatunsidf"];\n ___floatunsisf = Module["___floatunsisf"] = wasmExports2["__floatunsisf"];\n ___floatuntidf = Module["___floatuntidf"] = wasmExports2["__floatuntidf"];\n ___floatuntisf = Module["___floatuntisf"] = wasmExports2["__floatuntisf"];\n ___floatuntitf = Module["___floatuntitf"] = wasmExports2["__floatuntitf"];\n ___lshrdi3 = Module["___lshrdi3"] = wasmExports2["__lshrdi3"];\n ___moddi3 = Module["___moddi3"] = wasmExports2["__moddi3"];\n ___modsi3 = Module["___modsi3"] = wasmExports2["__modsi3"];\n ___modti3 = Module["___modti3"] = wasmExports2["__modti3"];\n ___muldf3 = Module["___muldf3"] = wasmExports2["__muldf3"];\n ___muldi3 = Module["___muldi3"] = wasmExports2["__muldi3"];\n ___mulodi4 = Module["___mulodi4"] = wasmExports2["__mulodi4"];\n ___mulosi4 = Module["___mulosi4"] = wasmExports2["__mulosi4"];\n ___muloti4 = Module["___muloti4"] = wasmExports2["__muloti4"];\n ___udivti3 = Module["___udivti3"] = wasmExports2["__udivti3"];\n ___mulsf3 = Module["___mulsf3"] = wasmExports2["__mulsf3"];\n ___mulvdi3 = Module["___mulvdi3"] = wasmExports2["__mulvdi3"];\n ___mulvsi3 = Module["___mulvsi3"] = wasmExports2["__mulvsi3"];\n ___mulvti3 = Module["___mulvti3"] = wasmExports2["__mulvti3"];\n ___negdf2 = Module["___negdf2"] = wasmExports2["__negdf2"];\n ___negdi2 = Module["___negdi2"] = wasmExports2["__negdi2"];\n ___negsf2 = Module["___negsf2"] = wasmExports2["__negsf2"];\n ___negti2 = Module["___negti2"] = wasmExports2["__negti2"];\n ___negvdi2 = Module["___negvdi2"] = wasmExports2["__negvdi2"];\n ___negvsi2 = Module["___negvsi2"] = wasmExports2["__negvsi2"];\n ___negvti2 = Module["___negvti2"] = wasmExports2["__negvti2"];\n ___paritydi2 = Module["___paritydi2"] = wasmExports2["__paritydi2"];\n ___paritysi2 = Module["___paritysi2"] = wasmExports2["__paritysi2"];\n ___parityti2 = Module["___parityti2"] = wasmExports2["__parityti2"];\n ___popcountdi2 = Module["___popcountdi2"] = wasmExports2["__popcountdi2"];\n ___popcountsi2 = Module["___popcountsi2"] = wasmExports2["__popcountsi2"];\n ___popcountti2 = Module["___popcountti2"] = wasmExports2["__popcountti2"];\n ___powidf2 = Module["___powidf2"] = wasmExports2["__powidf2"];\n ___powisf2 = Module["___powisf2"] = wasmExports2["__powisf2"];\n ___powitf2 = Module["___powitf2"] = wasmExports2["__powitf2"];\n _emscripten_stack_init = Module["_emscripten_stack_init"] = wasmExports2["emscripten_stack_init"];\n _emscripten_stack_set_limits = Module["_emscripten_stack_set_limits"] = wasmExports2["emscripten_stack_set_limits"];\n _emscripten_stack_get_free = Module["_emscripten_stack_get_free"] = wasmExports2["emscripten_stack_get_free"];\n __emscripten_stack_restore = Module["__emscripten_stack_restore"] = wasmExports2["_emscripten_stack_restore"];\n __emscripten_stack_alloc = Module["__emscripten_stack_alloc"] = wasmExports2["_emscripten_stack_alloc"];\n ___subdf3 = Module["___subdf3"] = wasmExports2["__subdf3"];\n ___subsf3 = Module["___subsf3"] = wasmExports2["__subsf3"];\n ___subvdi3 = Module["___subvdi3"] = wasmExports2["__subvdi3"];\n ___subvsi3 = Module["___subvsi3"] = wasmExports2["__subvsi3"];\n ___subvti3 = Module["___subvti3"] = wasmExports2["__subvti3"];\n ___truncdfhf2 = Module["___truncdfhf2"] = wasmExports2["__truncdfhf2"];\n ___truncdfsf2 = Module["___truncdfsf2"] = wasmExports2["__truncdfsf2"];\n ___truncsfhf2 = Module["___truncsfhf2"] = wasmExports2["__truncsfhf2"];\n ___gnu_f2h_ieee = Module["___gnu_f2h_ieee"] = wasmExports2["__gnu_f2h_ieee"];\n ___ucmpdi2 = Module["___ucmpdi2"] = wasmExports2["__ucmpdi2"];\n ___ucmpti2 = Module["___ucmpti2"] = wasmExports2["__ucmpti2"];\n ___udivdi3 = Module["___udivdi3"] = wasmExports2["__udivdi3"];\n ___udivsi3 = Module["___udivsi3"] = wasmExports2["__udivsi3"];\n ___umoddi3 = Module["___umoddi3"] = wasmExports2["__umoddi3"];\n ___umodsi3 = Module["___umodsi3"] = wasmExports2["__umodsi3"];\n ___umodti3 = Module["___umodti3"] = wasmExports2["__umodti3"];\n ___cxa_begin_catch = Module["___cxa_begin_catch"] = wasmExports2["__cxa_begin_catch"];\n ___cxa_rethrow = Module["___cxa_rethrow"] = wasmExports2["__cxa_rethrow"];\n ___cxa_end_catch = Module["___cxa_end_catch"] = wasmExports2["__cxa_end_catch"];\n ___cxa_allocate_exception = Module["___cxa_allocate_exception"] = wasmExports2["__cxa_allocate_exception"];\n ___cxa_free_exception = Module["___cxa_free_exception"] = wasmExports2["__cxa_free_exception"];\n ___cxa_throw = Module["___cxa_throw"] = wasmExports2["__cxa_throw"];\n ___cxa_pure_virtual = Module["___cxa_pure_virtual"] = wasmExports2["__cxa_pure_virtual"];\n ___cxa_uncaught_exceptions = Module["___cxa_uncaught_exceptions"] = wasmExports2["__cxa_uncaught_exceptions"];\n ___cxa_decrement_exception_refcount = Module["___cxa_decrement_exception_refcount"] = wasmExports2["__cxa_decrement_exception_refcount"];\n ___cxa_increment_exception_refcount = Module["___cxa_increment_exception_refcount"] = wasmExports2["__cxa_increment_exception_refcount"];\n ___cxa_current_primary_exception = Module["___cxa_current_primary_exception"] = wasmExports2["__cxa_current_primary_exception"];\n ___cxa_rethrow_primary_exception = Module["___cxa_rethrow_primary_exception"] = wasmExports2["__cxa_rethrow_primary_exception"];\n ___cxa_init_primary_exception = Module["___cxa_init_primary_exception"] = wasmExports2["__cxa_init_primary_exception"];\n ___dynamic_cast = Module["___dynamic_cast"] = wasmExports2["__dynamic_cast"];\n ___cxa_bad_cast = Module["___cxa_bad_cast"] = wasmExports2["__cxa_bad_cast"];\n ___cxa_bad_typeid = Module["___cxa_bad_typeid"] = wasmExports2["__cxa_bad_typeid"];\n ___cxa_throw_bad_array_new_length = Module["___cxa_throw_bad_array_new_length"] = wasmExports2["__cxa_throw_bad_array_new_length"];\n ___cxa_get_globals_fast = Module["___cxa_get_globals_fast"] = wasmExports2["__cxa_get_globals_fast"];\n ___cxa_demangle = Module["___cxa_demangle"] = wasmExports2["__cxa_demangle"];\n ___cxa_allocate_dependent_exception = Module["___cxa_allocate_dependent_exception"] = wasmExports2["__cxa_allocate_dependent_exception"];\n ___cxa_free_dependent_exception = Module["___cxa_free_dependent_exception"] = wasmExports2["__cxa_free_dependent_exception"];\n ___cxa_get_globals = Module["___cxa_get_globals"] = wasmExports2["__cxa_get_globals"];\n __Unwind_RaiseException = Module["__Unwind_RaiseException"] = wasmExports2["_Unwind_RaiseException"];\n ___cxa_get_exception_ptr = Module["___cxa_get_exception_ptr"] = wasmExports2["__cxa_get_exception_ptr"];\n __Unwind_DeleteException = Module["__Unwind_DeleteException"] = wasmExports2["_Unwind_DeleteException"];\n ___cxa_call_terminate = Module["___cxa_call_terminate"] = wasmExports2["__cxa_call_terminate"];\n ___cxa_current_exception_type = Module["___cxa_current_exception_type"] = wasmExports2["__cxa_current_exception_type"];\n ___cxa_uncaught_exception = Module["___cxa_uncaught_exception"] = wasmExports2["__cxa_uncaught_exception"];\n ___thrown_object_from_unwind_exception = Module["___thrown_object_from_unwind_exception"] = wasmExports2["__thrown_object_from_unwind_exception"];\n ___get_exception_message = Module["___get_exception_message"] = wasmExports2["__get_exception_message"];\n ___get_exception_terminate_message = Module["___get_exception_terminate_message"] = wasmExports2["__get_exception_terminate_message"];\n ___cxa_guard_acquire = Module["___cxa_guard_acquire"] = wasmExports2["__cxa_guard_acquire"];\n ___cxa_guard_release = Module["___cxa_guard_release"] = wasmExports2["__cxa_guard_release"];\n ___cxa_guard_abort = Module["___cxa_guard_abort"] = wasmExports2["__cxa_guard_abort"];\n ___gxx_personality_wasm0 = Module["___gxx_personality_wasm0"] = wasmExports2["__gxx_personality_wasm0"];\n __Unwind_GetLanguageSpecificData = Module["__Unwind_GetLanguageSpecificData"] = wasmExports2["_Unwind_GetLanguageSpecificData"];\n __Unwind_GetIP = Module["__Unwind_GetIP"] = wasmExports2["_Unwind_GetIP"];\n __Unwind_GetRegionStart = Module["__Unwind_GetRegionStart"] = wasmExports2["_Unwind_GetRegionStart"];\n __Unwind_SetGR = Module["__Unwind_SetGR"] = wasmExports2["_Unwind_SetGR"];\n __Unwind_SetIP = Module["__Unwind_SetIP"] = wasmExports2["_Unwind_SetIP"];\n ___cxa_call_unexpected = Module["___cxa_call_unexpected"] = wasmExports2["__cxa_call_unexpected"];\n ___cxa_thread_atexit = Module["___cxa_thread_atexit"] = wasmExports2["__cxa_thread_atexit"];\n ___cxa_deleted_virtual = Module["___cxa_deleted_virtual"] = wasmExports2["__cxa_deleted_virtual"];\n __Unwind_CallPersonality = Module["__Unwind_CallPersonality"] = wasmExports2["_Unwind_CallPersonality"];\n _gethostbyaddr_r = Module["_gethostbyaddr_r"] = wasmExports2["gethostbyaddr_r"];\n _gethostbyname2 = Module["_gethostbyname2"] = wasmExports2["gethostbyname2"];\n _gethostbyname2_r = Module["_gethostbyname2_r"] = wasmExports2["gethostbyname2_r"];\n _gethostbyname_r = Module["_gethostbyname_r"] = wasmExports2["gethostbyname_r"];\n _socketpair = Module["_socketpair"] = wasmExports2["socketpair"];\n memory = Module["memory"] = wasmMemory = wasmExports2["memory"];\n ___stack_pointer = Module["___stack_pointer"] = wasmExports2["__stack_pointer"];\n _py_docstring_mod = Module["_py_docstring_mod"] = wasmExports2["py_docstring_mod"].value >>> 0;\n _PyExc_AttributeError = Module["_PyExc_AttributeError"] = wasmExports2["PyExc_AttributeError"].value >>> 0;\n _stdout = Module["_stdout"] = wasmExports2["stdout"].value >>> 0;\n _Jsr_error = Module["_Jsr_error"] = wasmExports2["Jsr_error"].value >>> 0;\n _PyExc_ModuleNotFoundError = Module["_PyExc_ModuleNotFoundError"] = wasmExports2["PyExc_ModuleNotFoundError"].value >>> 0;\n __Py_NoneStruct = Module["__Py_NoneStruct"] = wasmExports2["_Py_NoneStruct"].value >>> 0;\n _internal_error = Module["_internal_error"] = wasmExports2["internal_error"].value >>> 0;\n _conversion_error = Module["_conversion_error"] = wasmExports2["conversion_error"].value >>> 0;\n __indirect_function_table = Module["__indirect_function_table"] = wasmTable = Module["wasmTable"] = wasmExports2["__indirect_function_table"];\n _PyExc_ImportError = Module["_PyExc_ImportError"] = wasmExports2["PyExc_ImportError"].value >>> 0;\n _pyodide_export_ = Module["_pyodide_export_"] = wasmExports2["pyodide_export_"].value >>> 0;\n _pystate_keepalive_ = Module["_pystate_keepalive_"] = wasmExports2["pystate_keepalive_"].value >>> 0;\n _pystate_keepalive = Module["_pystate_keepalive"] = wasmExports2["pystate_keepalive"].value >>> 0;\n _compat_null_to_none = Module["_compat_null_to_none"] = wasmExports2["compat_null_to_none"].value >>> 0;\n _py_jsnull = Module["_py_jsnull"] = wasmExports2["py_jsnull"].value >>> 0;\n __Py_TrueStruct = Module["__Py_TrueStruct"] = wasmExports2["_Py_TrueStruct"].value >>> 0;\n __Py_FalseStruct = Module["__Py_FalseStruct"] = wasmExports2["_Py_FalseStruct"].value >>> 0;\n _py_JsBigInt = Module["_py_JsBigInt"] = wasmExports2["py_JsBigInt"].value >>> 0;\n _Jsr_undefined = Module["_Jsr_undefined"] = wasmExports2["Jsr_undefined"].value >>> 0;\n _jsbind = Module["_jsbind"] = wasmExports2["jsbind"].value >>> 0;\n _PyExc_TypeError = Module["_PyExc_TypeError"] = wasmExports2["PyExc_TypeError"].value >>> 0;\n _PyExc_StopIteration = Module["_PyExc_StopIteration"] = wasmExports2["PyExc_StopIteration"].value >>> 0;\n _PyTraceBack_Type = Module["_PyTraceBack_Type"] = wasmExports2["PyTraceBack_Type"].value >>> 0;\n _PyExc_GeneratorExit = Module["_PyExc_GeneratorExit"] = wasmExports2["PyExc_GeneratorExit"].value >>> 0;\n _PyExc_StopAsyncIteration = Module["_PyExc_StopAsyncIteration"] = wasmExports2["PyExc_StopAsyncIteration"].value >>> 0;\n _PyExc_RuntimeError = Module["_PyExc_RuntimeError"] = wasmExports2["PyExc_RuntimeError"].value >>> 0;\n _PyExc_IndexError = Module["_PyExc_IndexError"] = wasmExports2["PyExc_IndexError"].value >>> 0;\n _PyExc_Exception = Module["_PyExc_Exception"] = wasmExports2["PyExc_Exception"].value >>> 0;\n _PyExc_BaseException = Module["_PyExc_BaseException"] = wasmExports2["PyExc_BaseException"].value >>> 0;\n _methods = Module["_methods"] = wasmExports2["methods"].value >>> 0;\n _PyExc_SystemError = Module["_PyExc_SystemError"] = wasmExports2["PyExc_SystemError"].value >>> 0;\n _PyExc_KeyError = Module["_PyExc_KeyError"] = wasmExports2["PyExc_KeyError"].value >>> 0;\n _PySlice_Type = Module["_PySlice_Type"] = wasmExports2["PySlice_Type"].value >>> 0;\n _PyLong_Type = Module["_PyLong_Type"] = wasmExports2["PyLong_Type"].value >>> 0;\n _PyBool_Type = Module["_PyBool_Type"] = wasmExports2["PyBool_Type"].value >>> 0;\n _PyExc_ValueError = Module["_PyExc_ValueError"] = wasmExports2["PyExc_ValueError"].value >>> 0;\n _PyExc_NotImplementedError = Module["_PyExc_NotImplementedError"] = wasmExports2["PyExc_NotImplementedError"].value >>> 0;\n _PyBaseObject_Type = Module["_PyBaseObject_Type"] = wasmExports2["PyBaseObject_Type"].value >>> 0;\n _PyExc_OverflowError = Module["_PyExc_OverflowError"] = wasmExports2["PyExc_OverflowError"].value >>> 0;\n _PyList_Type = Module["_PyList_Type"] = wasmExports2["PyList_Type"].value >>> 0;\n _PyTuple_Type = Module["_PyTuple_Type"] = wasmExports2["PyTuple_Type"].value >>> 0;\n _PyExc_RuntimeWarning = Module["_PyExc_RuntimeWarning"] = wasmExports2["PyExc_RuntimeWarning"].value >>> 0;\n __Py_NotImplementedStruct = Module["__Py_NotImplementedStruct"] = wasmExports2["_Py_NotImplementedStruct"].value >>> 0;\n _default_signature = Module["_default_signature"] = wasmExports2["default_signature"].value >>> 0;\n _no_default = Module["_no_default"] = wasmExports2["no_default"].value >>> 0;\n _PyCoro_Type = Module["_PyCoro_Type"] = wasmExports2["PyCoro_Type"].value >>> 0;\n _PyGen_Type = Module["_PyGen_Type"] = wasmExports2["PyGen_Type"].value >>> 0;\n _PyDict_Type = Module["_PyDict_Type"] = wasmExports2["PyDict_Type"].value >>> 0;\n _compat_to_string_repr = Module["_compat_to_string_repr"] = wasmExports2["compat_to_string_repr"].value >>> 0;\n _PyMethod_Type = Module["_PyMethod_Type"] = wasmExports2["PyMethod_Type"].value >>> 0;\n _PyFunction_Type = Module["_PyFunction_Type"] = wasmExports2["PyFunction_Type"].value >>> 0;\n _py_buffer_len_offset = Module["_py_buffer_len_offset"] = wasmExports2["py_buffer_len_offset"].value >>> 0;\n _py_buffer_shape_offset = Module["_py_buffer_shape_offset"] = wasmExports2["py_buffer_shape_offset"].value >>> 0;\n _Jsr_true = Module["_Jsr_true"] = wasmExports2["Jsr_true"].value >>> 0;\n _Jsr_false = Module["_Jsr_false"] = wasmExports2["Jsr_false"].value >>> 0;\n _Jsr_novalue = Module["_Jsr_novalue"] = wasmExports2["Jsr_novalue"].value >>> 0;\n _PySet_Type = Module["_PySet_Type"] = wasmExports2["PySet_Type"].value >>> 0;\n _PyFloat_Type = Module["_PyFloat_Type"] = wasmExports2["PyFloat_Type"].value >>> 0;\n _compat_dict_to_literalmap = Module["_compat_dict_to_literalmap"] = wasmExports2["compat_dict_to_literalmap"].value >>> 0;\n __PyRuntime = Module["__PyRuntime"] = wasmExports2["_PyRuntime"].value >>> 0;\n _stderr = Module["_stderr"] = wasmExports2["stderr"].value >>> 0;\n __PyParser_TokenNames = Module["__PyParser_TokenNames"] = wasmExports2["_PyParser_TokenNames"].value >>> 0;\n _PyExc_SyntaxError = Module["_PyExc_SyntaxError"] = wasmExports2["PyExc_SyntaxError"].value >>> 0;\n __PyExc_IncompleteInputError = Module["__PyExc_IncompleteInputError"] = wasmExports2["_PyExc_IncompleteInputError"].value >>> 0;\n _PyExc_LookupError = Module["_PyExc_LookupError"] = wasmExports2["PyExc_LookupError"].value >>> 0;\n _PyExc_UnicodeDecodeError = Module["_PyExc_UnicodeDecodeError"] = wasmExports2["PyExc_UnicodeDecodeError"].value >>> 0;\n _PyExc_IndentationError = Module["_PyExc_IndentationError"] = wasmExports2["PyExc_IndentationError"].value >>> 0;\n _PyExc_KeyboardInterrupt = Module["_PyExc_KeyboardInterrupt"] = wasmExports2["PyExc_KeyboardInterrupt"].value >>> 0;\n _PyExc_TabError = Module["_PyExc_TabError"] = wasmExports2["PyExc_TabError"].value >>> 0;\n _PyExc_UnicodeError = Module["_PyExc_UnicodeError"] = wasmExports2["PyExc_UnicodeError"].value >>> 0;\n _stdin = Module["_stdin"] = wasmExports2["stdin"].value >>> 0;\n _PyExc_MemoryError = Module["_PyExc_MemoryError"] = wasmExports2["PyExc_MemoryError"].value >>> 0;\n _PyComplex_Type = Module["_PyComplex_Type"] = wasmExports2["PyComplex_Type"].value >>> 0;\n _PyUnicode_Type = Module["_PyUnicode_Type"] = wasmExports2["PyUnicode_Type"].value >>> 0;\n _PyBytes_Type = Module["_PyBytes_Type"] = wasmExports2["PyBytes_Type"].value >>> 0;\n __Py_EllipsisObject = Module["__Py_EllipsisObject"] = wasmExports2["_Py_EllipsisObject"].value >>> 0;\n __Py_ctype_table = Module["__Py_ctype_table"] = wasmExports2["_Py_ctype_table"].value >>> 0;\n _PyExc_DeprecationWarning = Module["_PyExc_DeprecationWarning"] = wasmExports2["PyExc_DeprecationWarning"].value >>> 0;\n _PyExc_SyntaxWarning = Module["_PyExc_SyntaxWarning"] = wasmExports2["PyExc_SyntaxWarning"].value >>> 0;\n __Py_ctype_tolower = Module["__Py_ctype_tolower"] = wasmExports2["_Py_ctype_tolower"].value >>> 0;\n _PyExc_OSError = Module["_PyExc_OSError"] = wasmExports2["PyExc_OSError"].value >>> 0;\n __PyOS_ReadlineTState = Module["__PyOS_ReadlineTState"] = wasmExports2["_PyOS_ReadlineTState"].value >>> 0;\n _PyOS_InputHook = Module["_PyOS_InputHook"] = wasmExports2["PyOS_InputHook"].value >>> 0;\n _PyOS_ReadlineFunctionPointer = Module["_PyOS_ReadlineFunctionPointer"] = wasmExports2["PyOS_ReadlineFunctionPointer"].value >>> 0;\n _PyType_Type = Module["_PyType_Type"] = wasmExports2["PyType_Type"].value >>> 0;\n _PyExc_BufferError = Module["_PyExc_BufferError"] = wasmExports2["PyExc_BufferError"].value >>> 0;\n _PyByteArray_Type = Module["_PyByteArray_Type"] = wasmExports2["PyByteArray_Type"].value >>> 0;\n __PyByteArray_empty_string = Module["__PyByteArray_empty_string"] = wasmExports2["_PyByteArray_empty_string"].value >>> 0;\n __PyUnion_Type = Module["__PyUnion_Type"] = wasmExports2["_PyUnion_Type"].value >>> 0;\n __Py_ctype_toupper = Module["__Py_ctype_toupper"] = wasmExports2["_Py_ctype_toupper"].value >>> 0;\n _Py_hexdigits = Module["_Py_hexdigits"] = wasmExports2["Py_hexdigits"].value >>> 0;\n _PyExc_BytesWarning = Module["_PyExc_BytesWarning"] = wasmExports2["PyExc_BytesWarning"].value >>> 0;\n _PyByteArrayIter_Type = Module["_PyByteArrayIter_Type"] = wasmExports2["PyByteArrayIter_Type"].value >>> 0;\n __PyLong_DigitValue = Module["__PyLong_DigitValue"] = wasmExports2["_PyLong_DigitValue"].value >>> 0;\n _PyBytesIter_Type = Module["_PyBytesIter_Type"] = wasmExports2["PyBytesIter_Type"].value >>> 0;\n _PyModule_Type = Module["_PyModule_Type"] = wasmExports2["PyModule_Type"].value >>> 0;\n _PyCapsule_Type = Module["_PyCapsule_Type"] = wasmExports2["PyCapsule_Type"].value >>> 0;\n _PyCell_Type = Module["_PyCell_Type"] = wasmExports2["PyCell_Type"].value >>> 0;\n _PyInstanceMethod_Type = Module["_PyInstanceMethod_Type"] = wasmExports2["PyInstanceMethod_Type"].value >>> 0;\n _PyCode_Type = Module["_PyCode_Type"] = wasmExports2["PyCode_Type"].value >>> 0;\n _PyFrozenSet_Type = Module["_PyFrozenSet_Type"] = wasmExports2["PyFrozenSet_Type"].value >>> 0;\n _PyExc_ZeroDivisionError = Module["_PyExc_ZeroDivisionError"] = wasmExports2["PyExc_ZeroDivisionError"].value >>> 0;\n _PyMethodDescr_Type = Module["_PyMethodDescr_Type"] = wasmExports2["PyMethodDescr_Type"].value >>> 0;\n _PyClassMethodDescr_Type = Module["_PyClassMethodDescr_Type"] = wasmExports2["PyClassMethodDescr_Type"].value >>> 0;\n _PyMemberDescr_Type = Module["_PyMemberDescr_Type"] = wasmExports2["PyMemberDescr_Type"].value >>> 0;\n _PyGetSetDescr_Type = Module["_PyGetSetDescr_Type"] = wasmExports2["PyGetSetDescr_Type"].value >>> 0;\n _PyWrapperDescr_Type = Module["_PyWrapperDescr_Type"] = wasmExports2["PyWrapperDescr_Type"].value >>> 0;\n _PyDictProxy_Type = Module["_PyDictProxy_Type"] = wasmExports2["PyDictProxy_Type"].value >>> 0;\n _PyProperty_Type = Module["_PyProperty_Type"] = wasmExports2["PyProperty_Type"].value >>> 0;\n _PyReversed_Type = Module["_PyReversed_Type"] = wasmExports2["PyReversed_Type"].value >>> 0;\n _PyEnum_Type = Module["_PyEnum_Type"] = wasmExports2["PyEnum_Type"].value >>> 0;\n _PyExc_BaseExceptionGroup = Module["_PyExc_BaseExceptionGroup"] = wasmExports2["PyExc_BaseExceptionGroup"].value >>> 0;\n _PyExc_UnicodeTranslateError = Module["_PyExc_UnicodeTranslateError"] = wasmExports2["PyExc_UnicodeTranslateError"].value >>> 0;\n _PyExc_BlockingIOError = Module["_PyExc_BlockingIOError"] = wasmExports2["PyExc_BlockingIOError"].value >>> 0;\n _PyExc_BrokenPipeError = Module["_PyExc_BrokenPipeError"] = wasmExports2["PyExc_BrokenPipeError"].value >>> 0;\n _PyExc_ChildProcessError = Module["_PyExc_ChildProcessError"] = wasmExports2["PyExc_ChildProcessError"].value >>> 0;\n _PyExc_ConnectionAbortedError = Module["_PyExc_ConnectionAbortedError"] = wasmExports2["PyExc_ConnectionAbortedError"].value >>> 0;\n _PyExc_ConnectionRefusedError = Module["_PyExc_ConnectionRefusedError"] = wasmExports2["PyExc_ConnectionRefusedError"].value >>> 0;\n _PyExc_ConnectionResetError = Module["_PyExc_ConnectionResetError"] = wasmExports2["PyExc_ConnectionResetError"].value >>> 0;\n _PyExc_FileExistsError = Module["_PyExc_FileExistsError"] = wasmExports2["PyExc_FileExistsError"].value >>> 0;\n _PyExc_FileNotFoundError = Module["_PyExc_FileNotFoundError"] = wasmExports2["PyExc_FileNotFoundError"].value >>> 0;\n _PyExc_IsADirectoryError = Module["_PyExc_IsADirectoryError"] = wasmExports2["PyExc_IsADirectoryError"].value >>> 0;\n _PyExc_NotADirectoryError = Module["_PyExc_NotADirectoryError"] = wasmExports2["PyExc_NotADirectoryError"].value >>> 0;\n _PyExc_InterruptedError = Module["_PyExc_InterruptedError"] = wasmExports2["PyExc_InterruptedError"].value >>> 0;\n _PyExc_PermissionError = Module["_PyExc_PermissionError"] = wasmExports2["PyExc_PermissionError"].value >>> 0;\n _PyExc_ProcessLookupError = Module["_PyExc_ProcessLookupError"] = wasmExports2["PyExc_ProcessLookupError"].value >>> 0;\n _PyExc_TimeoutError = Module["_PyExc_TimeoutError"] = wasmExports2["PyExc_TimeoutError"].value >>> 0;\n _PyExc_EnvironmentError = Module["_PyExc_EnvironmentError"] = wasmExports2["PyExc_EnvironmentError"].value >>> 0;\n _PyExc_IOError = Module["_PyExc_IOError"] = wasmExports2["PyExc_IOError"].value >>> 0;\n _PyExc_SystemExit = Module["_PyExc_SystemExit"] = wasmExports2["PyExc_SystemExit"].value >>> 0;\n _PyExc_ConnectionError = Module["_PyExc_ConnectionError"] = wasmExports2["PyExc_ConnectionError"].value >>> 0;\n _PyExc_EOFError = Module["_PyExc_EOFError"] = wasmExports2["PyExc_EOFError"].value >>> 0;\n _PyExc_RecursionError = Module["_PyExc_RecursionError"] = wasmExports2["PyExc_RecursionError"].value >>> 0;\n _PyExc_PythonFinalizationError = Module["_PyExc_PythonFinalizationError"] = wasmExports2["PyExc_PythonFinalizationError"].value >>> 0;\n _PyExc_NameError = Module["_PyExc_NameError"] = wasmExports2["PyExc_NameError"].value >>> 0;\n _PyExc_UnboundLocalError = Module["_PyExc_UnboundLocalError"] = wasmExports2["PyExc_UnboundLocalError"].value >>> 0;\n _PyExc_UnicodeEncodeError = Module["_PyExc_UnicodeEncodeError"] = wasmExports2["PyExc_UnicodeEncodeError"].value >>> 0;\n _PyExc_AssertionError = Module["_PyExc_AssertionError"] = wasmExports2["PyExc_AssertionError"].value >>> 0;\n _PyExc_ArithmeticError = Module["_PyExc_ArithmeticError"] = wasmExports2["PyExc_ArithmeticError"].value >>> 0;\n _PyExc_FloatingPointError = Module["_PyExc_FloatingPointError"] = wasmExports2["PyExc_FloatingPointError"].value >>> 0;\n _PyExc_ReferenceError = Module["_PyExc_ReferenceError"] = wasmExports2["PyExc_ReferenceError"].value >>> 0;\n _PyExc_Warning = Module["_PyExc_Warning"] = wasmExports2["PyExc_Warning"].value >>> 0;\n _PyExc_UserWarning = Module["_PyExc_UserWarning"] = wasmExports2["PyExc_UserWarning"].value >>> 0;\n _PyExc_PendingDeprecationWarning = Module["_PyExc_PendingDeprecationWarning"] = wasmExports2["PyExc_PendingDeprecationWarning"].value >>> 0;\n _PyExc_FutureWarning = Module["_PyExc_FutureWarning"] = wasmExports2["PyExc_FutureWarning"].value >>> 0;\n _PyExc_ImportWarning = Module["_PyExc_ImportWarning"] = wasmExports2["PyExc_ImportWarning"].value >>> 0;\n _PyExc_UnicodeWarning = Module["_PyExc_UnicodeWarning"] = wasmExports2["PyExc_UnicodeWarning"].value >>> 0;\n _PyExc_EncodingWarning = Module["_PyExc_EncodingWarning"] = wasmExports2["PyExc_EncodingWarning"].value >>> 0;\n _PyExc_ResourceWarning = Module["_PyExc_ResourceWarning"] = wasmExports2["PyExc_ResourceWarning"].value >>> 0;\n _Py_GenericAliasType = Module["_Py_GenericAliasType"] = wasmExports2["Py_GenericAliasType"].value >>> 0;\n _PyAsyncGen_Type = Module["_PyAsyncGen_Type"] = wasmExports2["PyAsyncGen_Type"].value >>> 0;\n __PyAsyncGenASend_Type = Module["__PyAsyncGenASend_Type"] = wasmExports2["_PyAsyncGenASend_Type"].value >>> 0;\n _PyStdPrinter_Type = Module["_PyStdPrinter_Type"] = wasmExports2["PyStdPrinter_Type"].value >>> 0;\n __Py_SwappedOp = Module["__Py_SwappedOp"] = wasmExports2["_Py_SwappedOp"].value >>> 0;\n _PyFrameLocalsProxy_Type = Module["_PyFrameLocalsProxy_Type"] = wasmExports2["PyFrameLocalsProxy_Type"].value >>> 0;\n _PyFrame_Type = Module["_PyFrame_Type"] = wasmExports2["PyFrame_Type"].value >>> 0;\n _PyClassMethod_Type = Module["_PyClassMethod_Type"] = wasmExports2["PyClassMethod_Type"].value >>> 0;\n _PyStaticMethod_Type = Module["_PyStaticMethod_Type"] = wasmExports2["PyStaticMethod_Type"].value >>> 0;\n _PySeqIter_Type = Module["_PySeqIter_Type"] = wasmExports2["PySeqIter_Type"].value >>> 0;\n _PyCallIter_Type = Module["_PyCallIter_Type"] = wasmExports2["PyCallIter_Type"].value >>> 0;\n _PyDictKeys_Type = Module["_PyDictKeys_Type"] = wasmExports2["PyDictKeys_Type"].value >>> 0;\n _PyDictValues_Type = Module["_PyDictValues_Type"] = wasmExports2["PyDictValues_Type"].value >>> 0;\n _PyDictItems_Type = Module["_PyDictItems_Type"] = wasmExports2["PyDictItems_Type"].value >>> 0;\n _PyListIter_Type = Module["_PyListIter_Type"] = wasmExports2["PyListIter_Type"].value >>> 0;\n _PyListRevIter_Type = Module["_PyListRevIter_Type"] = wasmExports2["PyListRevIter_Type"].value >>> 0;\n _PyDictIterKey_Type = Module["_PyDictIterKey_Type"] = wasmExports2["PyDictIterKey_Type"].value >>> 0;\n _PyDictRevIterKey_Type = Module["_PyDictRevIterKey_Type"] = wasmExports2["PyDictRevIterKey_Type"].value >>> 0;\n _PyDictRevIterValue_Type = Module["_PyDictRevIterValue_Type"] = wasmExports2["PyDictRevIterValue_Type"].value >>> 0;\n _PyDictIterItem_Type = Module["_PyDictIterItem_Type"] = wasmExports2["PyDictIterItem_Type"].value >>> 0;\n _PyDictIterValue_Type = Module["_PyDictIterValue_Type"] = wasmExports2["PyDictIterValue_Type"].value >>> 0;\n _PyDictRevIterItem_Type = Module["_PyDictRevIterItem_Type"] = wasmExports2["PyDictRevIterItem_Type"].value >>> 0;\n _PyODict_Type = Module["_PyODict_Type"] = wasmExports2["PyODict_Type"].value >>> 0;\n _PyODictIter_Type = Module["_PyODictIter_Type"] = wasmExports2["PyODictIter_Type"].value >>> 0;\n _PyODictKeys_Type = Module["_PyODictKeys_Type"] = wasmExports2["PyODictKeys_Type"].value >>> 0;\n _PyODictValues_Type = Module["_PyODictValues_Type"] = wasmExports2["PyODictValues_Type"].value >>> 0;\n _PyODictItems_Type = Module["_PyODictItems_Type"] = wasmExports2["PyODictItems_Type"].value >>> 0;\n _PyMemoryView_Type = Module["_PyMemoryView_Type"] = wasmExports2["PyMemoryView_Type"].value >>> 0;\n _PyCMethod_Type = Module["_PyCMethod_Type"] = wasmExports2["PyCMethod_Type"].value >>> 0;\n _PyCFunction_Type = Module["_PyCFunction_Type"] = wasmExports2["PyCFunction_Type"].value >>> 0;\n _PyModuleDef_Type = Module["_PyModuleDef_Type"] = wasmExports2["PyModuleDef_Type"].value >>> 0;\n __PyNone_Type = Module["__PyNone_Type"] = wasmExports2["_PyNone_Type"].value >>> 0;\n __PyNotImplemented_Type = Module["__PyNotImplemented_Type"] = wasmExports2["_PyNotImplemented_Type"].value >>> 0;\n _PyContextToken_Type = Module["_PyContextToken_Type"] = wasmExports2["PyContextToken_Type"].value >>> 0;\n _PyContextVar_Type = Module["_PyContextVar_Type"] = wasmExports2["PyContextVar_Type"].value >>> 0;\n _PyContext_Type = Module["_PyContext_Type"] = wasmExports2["PyContext_Type"].value >>> 0;\n _PyEllipsis_Type = Module["_PyEllipsis_Type"] = wasmExports2["PyEllipsis_Type"].value >>> 0;\n _PyFilter_Type = Module["_PyFilter_Type"] = wasmExports2["PyFilter_Type"].value >>> 0;\n _PyLongRangeIter_Type = Module["_PyLongRangeIter_Type"] = wasmExports2["PyLongRangeIter_Type"].value >>> 0;\n _PyMap_Type = Module["_PyMap_Type"] = wasmExports2["PyMap_Type"].value >>> 0;\n _PyPickleBuffer_Type = Module["_PyPickleBuffer_Type"] = wasmExports2["PyPickleBuffer_Type"].value >>> 0;\n _PyRangeIter_Type = Module["_PyRangeIter_Type"] = wasmExports2["PyRangeIter_Type"].value >>> 0;\n _PyRange_Type = Module["_PyRange_Type"] = wasmExports2["PyRange_Type"].value >>> 0;\n _PySetIter_Type = Module["_PySetIter_Type"] = wasmExports2["PySetIter_Type"].value >>> 0;\n _PySuper_Type = Module["_PySuper_Type"] = wasmExports2["PySuper_Type"].value >>> 0;\n _PyTupleIter_Type = Module["_PyTupleIter_Type"] = wasmExports2["PyTupleIter_Type"].value >>> 0;\n _PyUnicodeIter_Type = Module["_PyUnicodeIter_Type"] = wasmExports2["PyUnicodeIter_Type"].value >>> 0;\n _PyZip_Type = Module["_PyZip_Type"] = wasmExports2["PyZip_Type"].value >>> 0;\n __PyWeakref_CallableProxyType = Module["__PyWeakref_CallableProxyType"] = wasmExports2["_PyWeakref_CallableProxyType"].value >>> 0;\n __PyWeakref_ProxyType = Module["__PyWeakref_ProxyType"] = wasmExports2["_PyWeakref_ProxyType"].value >>> 0;\n __PyWeakref_RefType = Module["__PyWeakref_RefType"] = wasmExports2["_PyWeakref_RefType"].value >>> 0;\n __PySet_Dummy = Module["__PySet_Dummy"] = wasmExports2["_PySet_Dummy"].value >>> 0;\n _PyStructSequence_UnnamedField = Module["_PyStructSequence_UnnamedField"] = wasmExports2["PyStructSequence_UnnamedField"].value >>> 0;\n __Py_ascii_whitespace = Module["__Py_ascii_whitespace"] = wasmExports2["_Py_ascii_whitespace"].value >>> 0;\n __Py_InitCleanup = Module["__Py_InitCleanup"] = wasmExports2["_Py_InitCleanup"].value >>> 0;\n __PyEval_BinaryOps = Module["__PyEval_BinaryOps"] = wasmExports2["_PyEval_BinaryOps"].value >>> 0;\n __PyIntrinsics_UnaryFunctions = Module["__PyIntrinsics_UnaryFunctions"] = wasmExports2["_PyIntrinsics_UnaryFunctions"].value >>> 0;\n __PyIntrinsics_BinaryFunctions = Module["__PyIntrinsics_BinaryFunctions"] = wasmExports2["_PyIntrinsics_BinaryFunctions"].value >>> 0;\n __PyEval_ConversionFuncs = Module["__PyEval_ConversionFuncs"] = wasmExports2["_PyEval_ConversionFuncs"].value >>> 0;\n __Py_SpecialMethods = Module["__Py_SpecialMethods"] = wasmExports2["_Py_SpecialMethods"].value >>> 0;\n __Py_emscripten_signal_clock = Module["__Py_emscripten_signal_clock"] = wasmExports2["_Py_emscripten_signal_clock"].value >>> 0;\n _Py_EMSCRIPTEN_SIGNAL_HANDLING = Module["_Py_EMSCRIPTEN_SIGNAL_HANDLING"] = wasmExports2["Py_EMSCRIPTEN_SIGNAL_HANDLING"].value >>> 0;\n __Py_FunctionAttributeOffsets = Module["__Py_FunctionAttributeOffsets"] = wasmExports2["_Py_FunctionAttributeOffsets"].value >>> 0;\n _PyExc_InterpreterError = Module["_PyExc_InterpreterError"] = wasmExports2["PyExc_InterpreterError"].value >>> 0;\n _PyExc_InterpreterNotFoundError = Module["_PyExc_InterpreterNotFoundError"] = wasmExports2["PyExc_InterpreterNotFoundError"].value >>> 0;\n _PyUnstable_ExecutableKinds = Module["_PyUnstable_ExecutableKinds"] = wasmExports2["PyUnstable_ExecutableKinds"].value >>> 0;\n _Py_Version = Module["_Py_Version"] = wasmExports2["Py_Version"].value >>> 0;\n _PyImport_Inittab = Module["_PyImport_Inittab"] = wasmExports2["PyImport_Inittab"].value >>> 0;\n __PyImport_FrozenBootstrap = Module["__PyImport_FrozenBootstrap"] = wasmExports2["_PyImport_FrozenBootstrap"].value >>> 0;\n _PyImport_FrozenModules = Module["_PyImport_FrozenModules"] = wasmExports2["PyImport_FrozenModules"].value >>> 0;\n __PyImport_FrozenStdlib = Module["__PyImport_FrozenStdlib"] = wasmExports2["_PyImport_FrozenStdlib"].value >>> 0;\n __PyImport_FrozenTest = Module["__PyImport_FrozenTest"] = wasmExports2["_PyImport_FrozenTest"].value >>> 0;\n _Py_IgnoreEnvironmentFlag = Module["_Py_IgnoreEnvironmentFlag"] = wasmExports2["Py_IgnoreEnvironmentFlag"].value >>> 0;\n _Py_IsolatedFlag = Module["_Py_IsolatedFlag"] = wasmExports2["Py_IsolatedFlag"].value >>> 0;\n _Py_BytesWarningFlag = Module["_Py_BytesWarningFlag"] = wasmExports2["Py_BytesWarningFlag"].value >>> 0;\n _Py_InspectFlag = Module["_Py_InspectFlag"] = wasmExports2["Py_InspectFlag"].value >>> 0;\n _Py_InteractiveFlag = Module["_Py_InteractiveFlag"] = wasmExports2["Py_InteractiveFlag"].value >>> 0;\n _Py_OptimizeFlag = Module["_Py_OptimizeFlag"] = wasmExports2["Py_OptimizeFlag"].value >>> 0;\n _Py_DebugFlag = Module["_Py_DebugFlag"] = wasmExports2["Py_DebugFlag"].value >>> 0;\n _Py_VerboseFlag = Module["_Py_VerboseFlag"] = wasmExports2["Py_VerboseFlag"].value >>> 0;\n _Py_QuietFlag = Module["_Py_QuietFlag"] = wasmExports2["Py_QuietFlag"].value >>> 0;\n _Py_FrozenFlag = Module["_Py_FrozenFlag"] = wasmExports2["Py_FrozenFlag"].value >>> 0;\n _Py_UnbufferedStdioFlag = Module["_Py_UnbufferedStdioFlag"] = wasmExports2["Py_UnbufferedStdioFlag"].value >>> 0;\n _Py_NoSiteFlag = Module["_Py_NoSiteFlag"] = wasmExports2["Py_NoSiteFlag"].value >>> 0;\n _Py_DontWriteBytecodeFlag = Module["_Py_DontWriteBytecodeFlag"] = wasmExports2["Py_DontWriteBytecodeFlag"].value >>> 0;\n _Py_NoUserSiteDirectory = Module["_Py_NoUserSiteDirectory"] = wasmExports2["Py_NoUserSiteDirectory"].value >>> 0;\n _Py_HashRandomizationFlag = Module["_Py_HashRandomizationFlag"] = wasmExports2["Py_HashRandomizationFlag"].value >>> 0;\n _Py_FileSystemDefaultEncoding = Module["_Py_FileSystemDefaultEncoding"] = wasmExports2["Py_FileSystemDefaultEncoding"].value >>> 0;\n _Py_HasFileSystemDefaultEncoding = Module["_Py_HasFileSystemDefaultEncoding"] = wasmExports2["Py_HasFileSystemDefaultEncoding"].value >>> 0;\n _Py_FileSystemDefaultEncodeErrors = Module["_Py_FileSystemDefaultEncodeErrors"] = wasmExports2["Py_FileSystemDefaultEncodeErrors"].value >>> 0;\n _Py_UTF8Mode = Module["_Py_UTF8Mode"] = wasmExports2["Py_UTF8Mode"].value >>> 0;\n __Py_HashSecret = Module["__Py_HashSecret"] = wasmExports2["_Py_HashSecret"].value >>> 0;\n _PY_TIMEOUT_MAX = Module["_PY_TIMEOUT_MAX"] = wasmExports2["PY_TIMEOUT_MAX"].value >>> 0;\n __Py_emscripten_signal_in_memory = Module["__Py_emscripten_signal_in_memory"] = wasmExports2["_Py_emscripten_signal_in_memory"].value >>> 0;\n __PyEM_EMSCRIPTEN_TRAMPOLINE_OFFSET = Module["__PyEM_EMSCRIPTEN_TRAMPOLINE_OFFSET"] = wasmExports2["_PyEM_EMSCRIPTEN_TRAMPOLINE_OFFSET"].value >>> 0;\n _ffi_type_pointer = Module["_ffi_type_pointer"] = wasmExports2["ffi_type_pointer"].value >>> 0;\n _ffi_type_void = Module["_ffi_type_void"] = wasmExports2["ffi_type_void"].value >>> 0;\n _ffi_type_sint32 = Module["_ffi_type_sint32"] = wasmExports2["ffi_type_sint32"].value >>> 0;\n _ffi_type_uint64 = Module["_ffi_type_uint64"] = wasmExports2["ffi_type_uint64"].value >>> 0;\n _ffi_type_sint64 = Module["_ffi_type_sint64"] = wasmExports2["ffi_type_sint64"].value >>> 0;\n _ffi_type_uint32 = Module["_ffi_type_uint32"] = wasmExports2["ffi_type_uint32"].value >>> 0;\n _ffi_type_uint16 = Module["_ffi_type_uint16"] = wasmExports2["ffi_type_uint16"].value >>> 0;\n _ffi_type_sint16 = Module["_ffi_type_sint16"] = wasmExports2["ffi_type_sint16"].value >>> 0;\n _ffi_type_uint8 = Module["_ffi_type_uint8"] = wasmExports2["ffi_type_uint8"].value >>> 0;\n _ffi_type_sint8 = Module["_ffi_type_sint8"] = wasmExports2["ffi_type_sint8"].value >>> 0;\n _ffi_type_double = Module["_ffi_type_double"] = wasmExports2["ffi_type_double"].value >>> 0;\n _ffi_type_longdouble = Module["_ffi_type_longdouble"] = wasmExports2["ffi_type_longdouble"].value >>> 0;\n _ffi_type_float = Module["_ffi_type_float"] = wasmExports2["ffi_type_float"].value >>> 0;\n _environ = Module["_environ"] = wasmExports2["environ"].value >>> 0;\n __deduplicate_map = Module["__deduplicate_map"] = wasmExports2["_deduplicate_map"].value >>> 0;\n _sqlite3_version = Module["_sqlite3_version"] = wasmExports2["sqlite3_version"].value >>> 0;\n _sqlite3_data_directory = Module["_sqlite3_data_directory"] = wasmExports2["sqlite3_data_directory"].value >>> 0;\n _sqlite3_temp_directory = Module["_sqlite3_temp_directory"] = wasmExports2["sqlite3_temp_directory"].value >>> 0;\n _sqlite3one = Module["_sqlite3one"] = wasmExports2["sqlite3one"].value >>> 0;\n _g_debuglevel = Module["_g_debuglevel"] = wasmExports2["g_debuglevel"].value >>> 0;\n _g_ZSTD_threading_useless_symbol = Module["_g_ZSTD_threading_useless_symbol"] = wasmExports2["g_ZSTD_threading_useless_symbol"].value >>> 0;\n _BZ2_crc32Table = Module["_BZ2_crc32Table"] = wasmExports2["BZ2_crc32Table"].value >>> 0;\n _BZ2_rNums = Module["_BZ2_rNums"] = wasmExports2["BZ2_rNums"].value >>> 0;\n _z_errmsg = Module["_z_errmsg"] = wasmExports2["z_errmsg"].value >>> 0;\n __length_code = Module["__length_code"] = wasmExports2["_length_code"].value >>> 0;\n __dist_code = Module["__dist_code"] = wasmExports2["_dist_code"].value >>> 0;\n _deflate_copyright = Module["_deflate_copyright"] = wasmExports2["deflate_copyright"].value >>> 0;\n _inflate_copyright = Module["_inflate_copyright"] = wasmExports2["inflate_copyright"].value >>> 0;\n ___environ = Module["___environ"] = wasmExports2["__environ"].value >>> 0;\n ____environ = Module["____environ"] = wasmExports2["___environ"].value >>> 0;\n __environ = Module["__environ"] = wasmExports2["_environ"].value >>> 0;\n ___stack_chk_guard = Module["___stack_chk_guard"] = wasmExports2["__stack_chk_guard"].value >>> 0;\n ___tzname = Module["___tzname"] = wasmExports2["__tzname"].value >>> 0;\n _daylight = Module["_daylight"] = wasmExports2["daylight"].value >>> 0;\n _timezone = Module["_timezone"] = wasmExports2["timezone"].value >>> 0;\n ___timezone = Module["___timezone"] = wasmExports2["__timezone"].value >>> 0;\n ___daylight = Module["___daylight"] = wasmExports2["__daylight"].value >>> 0;\n _tzname = Module["_tzname"] = wasmExports2["tzname"].value >>> 0;\n ___progname = Module["___progname"] = wasmExports2["__progname"].value >>> 0;\n ___optreset = Module["___optreset"] = wasmExports2["__optreset"].value >>> 0;\n _optind = Module["_optind"] = wasmExports2["optind"].value >>> 0;\n ___optpos = Module["___optpos"] = wasmExports2["__optpos"].value >>> 0;\n _optarg = Module["_optarg"] = wasmExports2["optarg"].value >>> 0;\n _optopt = Module["_optopt"] = wasmExports2["optopt"].value >>> 0;\n _opterr = Module["_opterr"] = wasmExports2["opterr"].value >>> 0;\n _optreset = Module["_optreset"] = wasmExports2["optreset"].value >>> 0;\n _h_errno = Module["_h_errno"] = wasmExports2["h_errno"].value >>> 0;\n ___signgam = Module["___signgam"] = wasmExports2["__signgam"].value >>> 0;\n __ns_flagdata = Module["__ns_flagdata"] = wasmExports2["_ns_flagdata"].value >>> 0;\n ___progname_full = Module["___progname_full"] = wasmExports2["__progname_full"].value >>> 0;\n _program_invocation_short_name = Module["_program_invocation_short_name"] = wasmExports2["program_invocation_short_name"].value >>> 0;\n _program_invocation_name = Module["_program_invocation_name"] = wasmExports2["program_invocation_name"].value >>> 0;\n ___stack_low = Module["___stack_low"] = wasmExports2["__stack_low"].value >>> 0;\n ___stack_high = Module["___stack_high"] = wasmExports2["__stack_high"].value >>> 0;\n ___sig_pending = Module["___sig_pending"] = wasmExports2["__sig_pending"].value >>> 0;\n ___sig_actions = Module["___sig_actions"] = wasmExports2["__sig_actions"].value >>> 0;\n _signgam = Module["_signgam"] = wasmExports2["signgam"].value >>> 0;\n ___heap_base = Module["___heap_base"] = wasmExports2["__heap_base"].value >>> 0;\n ___c_longjmp = Module["___c_longjmp"] = wasmExports2["__c_longjmp"];\n ___THREW__ = Module["___THREW__"] = wasmExports2["__THREW__"].value >>> 0;\n ___threwValue = Module["___threwValue"] = wasmExports2["__threwValue"].value >>> 0;\n ___cpp_exception = Module["___cpp_exception"] = wasmExports2["__cpp_exception"];\n ___cxa_unexpected_handler = Module["___cxa_unexpected_handler"] = wasmExports2["__cxa_unexpected_handler"].value >>> 0;\n ___cxa_terminate_handler = Module["___cxa_terminate_handler"] = wasmExports2["__cxa_terminate_handler"].value >>> 0;\n ___cxa_new_handler = Module["___cxa_new_handler"] = wasmExports2["__cxa_new_handler"].value >>> 0;\n ___wasm_lpad_context = Module["___wasm_lpad_context"] = wasmExports2["__wasm_lpad_context"].value >>> 0;\n _in6addr_any = Module["_in6addr_any"] = wasmExports2["in6addr_any"].value >>> 0;\n _in6addr_loopback = Module["_in6addr_loopback"] = wasmExports2["in6addr_loopback"].value >>> 0;\n }\n var wasmImports = { IMG_Init: _IMG_Init, IMG_Load: _IMG_Load, IMG_Load_RW: _IMG_Load_RW, IMG_Quit: _IMG_Quit, JsArray_count_js, JsArray_index_js, JsArray_inplace_repeat_js, JsArray_repeat_js, JsArray_reverse_js, JsArray_reversed_iterator, JsBuffer_DecodeString_js, JsBuffer_get_info, JsDoubleProxy_unwrap_js, JsException_new_helper, JsMap_GetIter_js, JsMap_clear_js, JsModule_GetAll_js, JsObjMap_GetIter_js, JsObjMap_ass_subscript_js, JsObjMap_contains_js, JsObjMap_length_js, JsObjMap_subscript_js, JsProxy_Bool_js, JsProxy_DelAttr_js, JsProxy_Dir_js, JsProxy_GetAsyncIter_js, JsProxy_GetAttr_js, JsProxy_GetIter_js, JsProxy_SetAttr_js, JsProxy_aexit_js, JsProxy_compute_typeflags, JsProxy_exit_js, JsProxy_subscript_js, JsProxy_to_weakref_js, JsvArray_Check, JsvArray_Delete, JsvArray_Extend, JsvArray_Get, JsvArray_Insert, JsvArray_New, JsvArray_Push, JsvArray_Set, JsvArray_ShallowCopy, JsvArray_slice, JsvArray_slice_assign, JsvAsyncGenerator_Check, JsvBigInt_fromDigits, JsvBigInt_fromInt, JsvBuffer_assignFromPtr, JsvBuffer_assignToPtr, JsvBuffer_intoFile, JsvBuffer_readFromFile, JsvBuffer_writeToFile, JsvError_Check: _JsvError_Check, JsvError_Throw, JsvFunction_CallBound, JsvFunction_Call_OneArg, JsvFunction_Check, JsvFunction_Construct, JsvGenerator_Check, JsvLiteralMap_New, JsvMap_New, JsvMap_Set, JsvNoValue_Check, JsvNum_fromDouble, JsvNum_fromInt, JsvNum_toInt, JsvObject_CallMethod, JsvObject_CallMethod_NoArgs, JsvObject_CallMethod_OneArg, JsvObject_CallMethod_TwoArgs, JsvObject_Entries, JsvObject_Keys, JsvObject_New, JsvObject_SetAttr, JsvObject_Values, JsvObject_toString, JsvPromise_Check, JsvPromise_Resolve, JsvPromise_Syncify_handleError, JsvSet_Add, JsvSet_New, JsvUTF8ToString, Jsv_BigIntToNum, Jsv_GetError_import: _Jsv_GetError_import, Jsv_constructorName, Jsv_equal, Jsv_greater_than, Jsv_greater_than_equal, Jsv_less_than, Jsv_less_than_equal, Jsv_not_equal, Jsv_to_bool, Jsv_typeof, Mix_AllocateChannels: _Mix_AllocateChannels, Mix_ChannelFinished: _Mix_ChannelFinished, Mix_CloseAudio: _Mix_CloseAudio, Mix_FadeInChannelTimed: _Mix_FadeInChannelTimed, Mix_FadeInMusicPos: _Mix_FadeInMusicPos, Mix_FadeOutChannel: _Mix_FadeOutChannel, Mix_FadeOutMusic: _Mix_FadeOutMusic, Mix_FadingChannel: _Mix_FadingChannel, Mix_FreeChunk: _Mix_FreeChunk, Mix_FreeMusic: _Mix_FreeMusic, Mix_HaltChannel: _Mix_HaltChannel, Mix_HaltMusic: _Mix_HaltMusic, Mix_HookMusicFinished: _Mix_HookMusicFinished, Mix_Init: _Mix_Init, Mix_Linked_Version: _Mix_Linked_Version, Mix_LoadMUS: _Mix_LoadMUS, Mix_LoadMUS_RW: _Mix_LoadMUS_RW, Mix_LoadWAV: _Mix_LoadWAV, Mix_LoadWAV_RW: _Mix_LoadWAV_RW, Mix_OpenAudio: _Mix_OpenAudio, Mix_Pause: _Mix_Pause, Mix_PauseMusic: _Mix_PauseMusic, Mix_Paused: _Mix_Paused, Mix_PausedMusic: _Mix_PausedMusic, Mix_PlayChannelTimed: _Mix_PlayChannelTimed, Mix_PlayMusic: _Mix_PlayMusic, Mix_Playing: _Mix_Playing, Mix_PlayingMusic: _Mix_PlayingMusic, Mix_QuerySpec: _Mix_QuerySpec, Mix_QuickLoad_RAW: _Mix_QuickLoad_RAW, Mix_Quit: _Mix_Quit, Mix_ReserveChannels: _Mix_ReserveChannels, Mix_Resume: _Mix_Resume, Mix_ResumeMusic: _Mix_ResumeMusic, Mix_SetPanning: _Mix_SetPanning, Mix_SetPosition: _Mix_SetPosition, Mix_SetPostMix: _Mix_SetPostMix, Mix_Volume: _Mix_Volume, Mix_VolumeChunk: _Mix_VolumeChunk, Mix_VolumeMusic: _Mix_VolumeMusic, SDL_AddTimer: _SDL_AddTimer, SDL_AllocRW: _SDL_AllocRW, SDL_AudioDriverName: _SDL_AudioDriverName, SDL_AudioQuit: _SDL_AudioQuit, SDL_ClearError: _SDL_ClearError, SDL_CloseAudio: _SDL_CloseAudio, SDL_CondBroadcast: _SDL_CondBroadcast, SDL_CondSignal: _SDL_CondSignal, SDL_CondWait: _SDL_CondWait, SDL_CondWaitTimeout: _SDL_CondWaitTimeout, SDL_ConvertSurface: _SDL_ConvertSurface, SDL_CreateCond: _SDL_CreateCond, SDL_CreateMutex: _SDL_CreateMutex, SDL_CreateRGBSurface: _SDL_CreateRGBSurface, SDL_CreateRGBSurfaceFrom: _SDL_CreateRGBSurfaceFrom, SDL_CreateThread: _SDL_CreateThread, SDL_Delay: _SDL_Delay, SDL_DestroyCond: _SDL_DestroyCond, SDL_DestroyMutex: _SDL_DestroyMutex, SDL_DestroyRenderer: _SDL_DestroyRenderer, SDL_DestroyWindow: _SDL_DestroyWindow, SDL_DisplayFormat: _SDL_DisplayFormat, SDL_DisplayFormatAlpha: _SDL_DisplayFormatAlpha, SDL_EnableKeyRepeat: _SDL_EnableKeyRepeat, SDL_EnableUNICODE: _SDL_EnableUNICODE, SDL_FillRect: _SDL_FillRect, SDL_Flip: _SDL_Flip, SDL_FreeRW: _SDL_FreeRW, SDL_FreeSurface: _SDL_FreeSurface, SDL_GL_DeleteContext: _SDL_GL_DeleteContext, SDL_GL_ExtensionSupported: _SDL_GL_ExtensionSupported, SDL_GL_GetAttribute: _SDL_GL_GetAttribute, SDL_GL_GetSwapInterval: _SDL_GL_GetSwapInterval, SDL_GL_MakeCurrent: _SDL_GL_MakeCurrent, SDL_GL_SetAttribute: _SDL_GL_SetAttribute, SDL_GL_SetSwapInterval: _SDL_GL_SetSwapInterval, SDL_GL_SwapBuffers: _SDL_GL_SwapBuffers, SDL_GL_SwapWindow: _SDL_GL_SwapWindow, SDL_GetAppState: _SDL_GetAppState, SDL_GetAudioDriver: _SDL_GetAudioDriver, SDL_GetClipRect: _SDL_GetClipRect, SDL_GetCurrentAudioDriver: _SDL_GetCurrentAudioDriver, SDL_GetError: _SDL_GetError, SDL_GetKeyName: _SDL_GetKeyName, SDL_GetKeyState: _SDL_GetKeyState, SDL_GetKeyboardState: _SDL_GetKeyboardState, SDL_GetModState: _SDL_GetModState, SDL_GetMouseState: _SDL_GetMouseState, SDL_GetNumAudioDrivers: _SDL_GetNumAudioDrivers, SDL_GetRGB: _SDL_GetRGB, SDL_GetRGBA: _SDL_GetRGBA, SDL_GetScancodeFromKey: _SDL_GetScancodeFromKey, SDL_GetThreadID: _SDL_GetThreadID, SDL_GetTicks: _SDL_GetTicks, SDL_GetVideoInfo: _SDL_GetVideoInfo, SDL_GetVideoSurface: _SDL_GetVideoSurface, SDL_GetWindowFlags: _SDL_GetWindowFlags, SDL_GetWindowSize: _SDL_GetWindowSize, SDL_Has3DNow: _SDL_Has3DNow, SDL_Has3DNowExt: _SDL_Has3DNowExt, SDL_HasAltiVec: _SDL_HasAltiVec, SDL_HasMMX: _SDL_HasMMX, SDL_HasMMXExt: _SDL_HasMMXExt, SDL_HasRDTSC: _SDL_HasRDTSC, SDL_HasSSE: _SDL_HasSSE, SDL_HasSSE2: _SDL_HasSSE2, SDL_Init: _SDL_Init, SDL_InitSubSystem: _SDL_InitSubSystem, SDL_JoystickClose: _SDL_JoystickClose, SDL_JoystickEventState: _SDL_JoystickEventState, SDL_JoystickGetAxis: _SDL_JoystickGetAxis, SDL_JoystickGetBall: _SDL_JoystickGetBall, SDL_JoystickGetButton: _SDL_JoystickGetButton, SDL_JoystickGetHat: _SDL_JoystickGetHat, SDL_JoystickIndex: _SDL_JoystickIndex, SDL_JoystickName: _SDL_JoystickName, SDL_JoystickNumAxes: _SDL_JoystickNumAxes, SDL_JoystickNumBalls: _SDL_JoystickNumBalls, SDL_JoystickNumButtons: _SDL_JoystickNumButtons, SDL_JoystickNumHats: _SDL_JoystickNumHats, SDL_JoystickOpen: _SDL_JoystickOpen, SDL_JoystickOpened: _SDL_JoystickOpened, SDL_JoystickUpdate: _SDL_JoystickUpdate, SDL_Linked_Version: _SDL_Linked_Version, SDL_ListModes: _SDL_ListModes, SDL_LoadBMP_RW: _SDL_LoadBMP_RW, SDL_LockAudio: _SDL_LockAudio, SDL_LockSurface: _SDL_LockSurface, SDL_LogSetOutputFunction: _SDL_LogSetOutputFunction, SDL_LowerBlit: _SDL_LowerBlit, SDL_LowerBlitScaled: _SDL_LowerBlitScaled, SDL_MapRGB: _SDL_MapRGB, SDL_MapRGBA: _SDL_MapRGBA, SDL_NumJoysticks: _SDL_NumJoysticks, SDL_OpenAudio: _SDL_OpenAudio, SDL_PauseAudio: _SDL_PauseAudio, SDL_PeepEvents: _SDL_PeepEvents, SDL_PollEvent: _SDL_PollEvent, SDL_PumpEvents: _SDL_PumpEvents, SDL_PushEvent: _SDL_PushEvent, SDL_Quit: _SDL_Quit, SDL_QuitSubSystem: _SDL_QuitSubSystem, SDL_RWFromConstMem: _SDL_RWFromConstMem, SDL_RWFromFile: _SDL_RWFromFile, SDL_RWFromMem: _SDL_RWFromMem, SDL_RemoveTimer: _SDL_RemoveTimer, SDL_SaveBMP_RW: _SDL_SaveBMP_RW, SDL_SetAlpha: _SDL_SetAlpha, SDL_SetClipRect: _SDL_SetClipRect, SDL_SetColorKey: _SDL_SetColorKey, SDL_SetColors: _SDL_SetColors, SDL_SetError: _SDL_SetError, SDL_SetGamma: _SDL_SetGamma, SDL_SetGammaRamp: _SDL_SetGammaRamp, SDL_SetPalette: _SDL_SetPalette, SDL_SetVideoMode: _SDL_SetVideoMode, SDL_SetWindowFullscreen: _SDL_SetWindowFullscreen, SDL_SetWindowTitle: _SDL_SetWindowTitle, SDL_ShowCursor: _SDL_ShowCursor, SDL_StartTextInput: _SDL_StartTextInput, SDL_StopTextInput: _SDL_StopTextInput, SDL_ThreadID: _SDL_ThreadID, SDL_UnlockAudio: _SDL_UnlockAudio, SDL_UnlockSurface: _SDL_UnlockSurface, SDL_UpdateRect: _SDL_UpdateRect, SDL_UpdateRects: _SDL_UpdateRects, SDL_UpperBlit: _SDL_UpperBlit, SDL_UpperBlitScaled: _SDL_UpperBlitScaled, SDL_VideoDriverName: _SDL_VideoDriverName, SDL_VideoModeOK: _SDL_VideoModeOK, SDL_VideoQuit: _SDL_VideoQuit, SDL_WM_GrabInput: _SDL_WM_GrabInput, SDL_WM_IconifyWindow: _SDL_WM_IconifyWindow, SDL_WM_SetCaption: _SDL_WM_SetCaption, SDL_WM_SetIcon: _SDL_WM_SetIcon, SDL_WM_ToggleFullScreen: _SDL_WM_ToggleFullScreen, SDL_WaitThread: _SDL_WaitThread, SDL_WarpMouse: _SDL_WarpMouse, SDL_WasInit: _SDL_WasInit, SDL_mutexP: _SDL_mutexP, SDL_mutexV: _SDL_mutexV, TTF_CloseFont: _TTF_CloseFont, TTF_FontAscent: _TTF_FontAscent, TTF_FontDescent: _TTF_FontDescent, TTF_FontHeight: _TTF_FontHeight, TTF_FontLineSkip: _TTF_FontLineSkip, TTF_GlyphMetrics: _TTF_GlyphMetrics, TTF_Init: _TTF_Init, TTF_OpenFont: _TTF_OpenFont, TTF_Quit: _TTF_Quit, TTF_RenderText_Blended: _TTF_RenderText_Blended, TTF_RenderText_Shaded: _TTF_RenderText_Shaded, TTF_RenderText_Solid: _TTF_RenderText_Solid, TTF_RenderUTF8_Solid: _TTF_RenderUTF8_Solid, TTF_SizeText: _TTF_SizeText, TTF_SizeUTF8: _TTF_SizeUTF8, _JsArray_PostProcess_helper, _JsArray_PushEntry_helper, _JsObject_Set_js, _PyEM_TrampolineCall_JS, _Py_CheckEmscriptenSignals_Helper, _Py_emscripten_runtime, _Unwind_Backtrace: __Unwind_Backtrace, _Unwind_FindEnclosingFunction: __Unwind_FindEnclosingFunction, _Unwind_GetIPInfo: __Unwind_GetIPInfo, __asctime_r: ___asctime_r, __assert_fail: ___assert_fail, __call_sighandler: ___call_sighandler, __hiwire_deduplicate_delete, __hiwire_deduplicate_get, __hiwire_deduplicate_new, __hiwire_deduplicate_set, __syscall_accept4: ___syscall_accept4, __syscall_bind: ___syscall_bind, __syscall_chdir: ___syscall_chdir, __syscall_chmod: ___syscall_chmod, __syscall_connect: ___syscall_connect, __syscall_dup: ___syscall_dup, __syscall_dup3: ___syscall_dup3, __syscall_faccessat: ___syscall_faccessat, __syscall_fadvise64: ___syscall_fadvise64, __syscall_fallocate: ___syscall_fallocate, __syscall_fchdir: ___syscall_fchdir, __syscall_fchmod: ___syscall_fchmod, __syscall_fchmodat2: ___syscall_fchmodat2, __syscall_fchown32: ___syscall_fchown32, __syscall_fchownat: ___syscall_fchownat, __syscall_fcntl64: ___syscall_fcntl64, __syscall_fdatasync: ___syscall_fdatasync, __syscall_fstat64: ___syscall_fstat64, __syscall_fstatfs64: ___syscall_fstatfs64, __syscall_ftruncate64: ___syscall_ftruncate64, __syscall_getcwd: ___syscall_getcwd, __syscall_getdents64: ___syscall_getdents64, __syscall_getpeername: ___syscall_getpeername, __syscall_getsockname: ___syscall_getsockname, __syscall_getsockopt: ___syscall_getsockopt, __syscall_getuid32_js, __syscall_ioctl: ___syscall_ioctl, __syscall_listen: ___syscall_listen, __syscall_lstat64: ___syscall_lstat64, __syscall_mkdirat: ___syscall_mkdirat, __syscall_mknodat: ___syscall_mknodat, __syscall_newfstatat: ___syscall_newfstatat, __syscall_openat: ___syscall_openat, __syscall_pipe: ___syscall_pipe, __syscall_poll: ___syscall_poll, __syscall_readlinkat: ___syscall_readlinkat, __syscall_recvfrom: ___syscall_recvfrom, __syscall_recvmsg: ___syscall_recvmsg, __syscall_renameat: ___syscall_renameat, __syscall_rmdir: ___syscall_rmdir, __syscall_sendmsg: ___syscall_sendmsg, __syscall_sendto: ___syscall_sendto, __syscall_socket: ___syscall_socket, __syscall_stat64: ___syscall_stat64, __syscall_statfs64: ___syscall_statfs64, __syscall_symlinkat: ___syscall_symlinkat, __syscall_truncate64: ___syscall_truncate64, __syscall_umask_js, __syscall_unlinkat: ___syscall_unlinkat, __syscall_utimensat: ___syscall_utimensat, _abort_js: __abort_js, _agen_handle_result_js, _dlopen_js: __dlopen_js, _dlsym_catchup_js: __dlsym_catchup_js, _dlsym_js: __dlsym_js, _emscripten_dlopen_js: __emscripten_dlopen_js, _emscripten_fs_load_embedded_files: __emscripten_fs_load_embedded_files, _emscripten_get_last_devicemotion_event: __emscripten_get_last_devicemotion_event, _emscripten_get_last_deviceorientation_event: __emscripten_get_last_deviceorientation_event, _emscripten_get_last_mouse_event: __emscripten_get_last_mouse_event, _emscripten_get_now_is_monotonic: __emscripten_get_now_is_monotonic, _emscripten_get_progname: __emscripten_get_progname, _emscripten_log_formatted: __emscripten_log_formatted, _emscripten_lookup_name: __emscripten_lookup_name, _emscripten_push_main_loop_blocker: __emscripten_push_main_loop_blocker, _emscripten_push_uncounted_main_loop_blocker: __emscripten_push_uncounted_main_loop_blocker, _emscripten_runtime_keepalive_clear: __emscripten_runtime_keepalive_clear, _emscripten_system: __emscripten_system, _glGetActiveAttribOrUniform: __glGetActiveAttribOrUniform, _gmtime_js: __gmtime_js, _localtime_js: __localtime_js, _maybe_connect_async, _maybe_poll_async, _maybe_recvfrom_async, _maybe_sendto_async, _mktime_js: __mktime_js, _mmap_js: __mmap_js, _msync_js: __msync_js, _munmap_js: __munmap_js, _pyproxyGen_make_result, _pyproxy_get_buffer_result, _python2js_add_to_cache, _python2js_addto_postprocess_list, _python2js_ascii, _python2js_buffer_inner, _python2js_cache_lookup, _python2js_handle_postprocess_list, _python2js_ucs1, _python2js_ucs2, _python2js_ucs4, _setitimer_js: __setitimer_js, _timegm_js: __timegm_js, _try_fcntl64, _try_shutdown, _tzset_js: __tzset_js, array_to_js, boxColor: _boxColor, boxRGBA: _boxRGBA, can_run_sync_js, capture_stderr, clock_res_get: _clock_res_get, clock_time_get: _clock_time_get, create_once_callable, create_promise_handles, destroy_jsarray_entries, destroy_proxies, destroy_proxies_js, destroy_proxy, eglBindAPI: _eglBindAPI, eglChooseConfig: _eglChooseConfig, eglCreateContext: _eglCreateContext, eglCreateWindowSurface: _eglCreateWindowSurface, eglDestroyContext: _eglDestroyContext, eglDestroySurface: _eglDestroySurface, eglGetConfigAttrib: _eglGetConfigAttrib, eglGetConfigs: _eglGetConfigs, eglGetCurrentContext: _eglGetCurrentContext, eglGetCurrentDisplay: _eglGetCurrentDisplay, eglGetCurrentSurface: _eglGetCurrentSurface, eglGetDisplay: _eglGetDisplay, eglGetError: _eglGetError, eglInitialize: _eglInitialize, eglMakeCurrent: _eglMakeCurrent, eglQueryAPI: _eglQueryAPI, eglQueryContext: _eglQueryContext, eglQueryString: _eglQueryString, eglQuerySurface: _eglQuerySurface, eglReleaseThread: _eglReleaseThread, eglSwapBuffers: _eglSwapBuffers, eglSwapInterval: _eglSwapInterval, eglTerminate: _eglTerminate, eglWaitClient: _eglWaitClient, eglWaitGL: _eglWaitGL, eglWaitNative: _eglWaitNative, ellipseColor: _ellipseColor, ellipseRGBA: _ellipseRGBA, emscripten_SDL_SetEventHandler: _emscripten_SDL_SetEventHandler, emscripten_asm_const_async_on_main_thread: _emscripten_asm_const_async_on_main_thread, emscripten_asm_const_double: _emscripten_asm_const_double, emscripten_asm_const_double_sync_on_main_thread: _emscripten_asm_const_double_sync_on_main_thread, emscripten_asm_const_int: _emscripten_asm_const_int, emscripten_asm_const_int_sync_on_main_thread: _emscripten_asm_const_int_sync_on_main_thread, emscripten_asm_const_ptr: _emscripten_asm_const_ptr, emscripten_asm_const_ptr_sync_on_main_thread: _emscripten_asm_const_ptr_sync_on_main_thread, emscripten_async_call: _emscripten_async_call, emscripten_async_load_script: _emscripten_async_load_script, emscripten_async_run_script: _emscripten_async_run_script, emscripten_async_wget: _emscripten_async_wget, emscripten_async_wget2: _emscripten_async_wget2, emscripten_async_wget2_abort: _emscripten_async_wget2_abort, emscripten_async_wget2_data: _emscripten_async_wget2_data, emscripten_async_wget_data: _emscripten_async_wget_data, emscripten_call_worker: _emscripten_call_worker, emscripten_cancel_animation_frame: _emscripten_cancel_animation_frame, emscripten_cancel_main_loop: _emscripten_cancel_main_loop, emscripten_clear_immediate: _emscripten_clear_immediate, emscripten_clear_interval: _emscripten_clear_interval, emscripten_clear_timeout: _emscripten_clear_timeout, emscripten_console_error: _emscripten_console_error, emscripten_console_log: _emscripten_console_log, emscripten_console_trace: _emscripten_console_trace, emscripten_console_warn: _emscripten_console_warn, emscripten_create_worker: _emscripten_create_worker, emscripten_date_now: _emscripten_date_now, emscripten_debugger: _emscripten_debugger, emscripten_destroy_worker: _emscripten_destroy_worker, emscripten_enter_soft_fullscreen: _emscripten_enter_soft_fullscreen, emscripten_err: _emscripten_err, emscripten_errn: _emscripten_errn, emscripten_exit_fullscreen: _emscripten_exit_fullscreen, emscripten_exit_pointerlock: _emscripten_exit_pointerlock, emscripten_exit_soft_fullscreen: _emscripten_exit_soft_fullscreen, emscripten_exit_with_live_runtime: _emscripten_exit_with_live_runtime, emscripten_force_exit: _emscripten_force_exit, emscripten_get_battery_status: _emscripten_get_battery_status, emscripten_get_callstack: _emscripten_get_callstack, emscripten_get_canvas_element_size: _emscripten_get_canvas_element_size, emscripten_get_canvas_size: _emscripten_get_canvas_size, emscripten_get_compiler_setting: _emscripten_get_compiler_setting, emscripten_get_device_pixel_ratio: _emscripten_get_device_pixel_ratio, emscripten_get_element_css_size: _emscripten_get_element_css_size, emscripten_get_fullscreen_status: _emscripten_get_fullscreen_status, emscripten_get_gamepad_status: _emscripten_get_gamepad_status, emscripten_get_heap_max: _emscripten_get_heap_max, emscripten_get_main_loop_timing: _emscripten_get_main_loop_timing, emscripten_get_now: _emscripten_get_now, emscripten_get_now_res: _emscripten_get_now_res, emscripten_get_num_gamepads: _emscripten_get_num_gamepads, emscripten_get_orientation_status: _emscripten_get_orientation_status, emscripten_get_pointerlock_status: _emscripten_get_pointerlock_status, emscripten_get_preloaded_image_data: _emscripten_get_preloaded_image_data, emscripten_get_preloaded_image_data_from_FILE: _emscripten_get_preloaded_image_data_from_FILE, emscripten_get_screen_size: _emscripten_get_screen_size, emscripten_get_visibility_status: _emscripten_get_visibility_status, emscripten_get_window_title: _emscripten_get_window_title, emscripten_get_worker_queue_size: _emscripten_get_worker_queue_size, emscripten_glActiveTexture: _emscripten_glActiveTexture, emscripten_glAttachShader: _emscripten_glAttachShader, emscripten_glBegin: _emscripten_glBegin, emscripten_glBeginQuery: _emscripten_glBeginQuery, emscripten_glBeginQueryEXT: _emscripten_glBeginQueryEXT, emscripten_glBeginTransformFeedback: _emscripten_glBeginTransformFeedback, emscripten_glBindAttribLocation: _emscripten_glBindAttribLocation, emscripten_glBindBuffer: _emscripten_glBindBuffer, emscripten_glBindBufferBase: _emscripten_glBindBufferBase, emscripten_glBindBufferRange: _emscripten_glBindBufferRange, emscripten_glBindFramebuffer: _emscripten_glBindFramebuffer, emscripten_glBindRenderbuffer: _emscripten_glBindRenderbuffer, emscripten_glBindSampler: _emscripten_glBindSampler, emscripten_glBindTexture: _emscripten_glBindTexture, emscripten_glBindTransformFeedback: _emscripten_glBindTransformFeedback, emscripten_glBindVertexArray: _emscripten_glBindVertexArray, emscripten_glBindVertexArrayOES: _emscripten_glBindVertexArrayOES, emscripten_glBlendColor: _emscripten_glBlendColor, emscripten_glBlendEquation: _emscripten_glBlendEquation, emscripten_glBlendEquationSeparate: _emscripten_glBlendEquationSeparate, emscripten_glBlendFunc: _emscripten_glBlendFunc, emscripten_glBlendFuncSeparate: _emscripten_glBlendFuncSeparate, emscripten_glBlitFramebuffer: _emscripten_glBlitFramebuffer, emscripten_glBufferData: _emscripten_glBufferData, emscripten_glBufferSubData: _emscripten_glBufferSubData, emscripten_glCheckFramebufferStatus: _emscripten_glCheckFramebufferStatus, emscripten_glClear: _emscripten_glClear, emscripten_glClearBufferfi: _emscripten_glClearBufferfi, emscripten_glClearBufferfv: _emscripten_glClearBufferfv, emscripten_glClearBufferiv: _emscripten_glClearBufferiv, emscripten_glClearBufferuiv: _emscripten_glClearBufferuiv, emscripten_glClearColor: _emscripten_glClearColor, emscripten_glClearDepth: _emscripten_glClearDepth, emscripten_glClearDepthf: _emscripten_glClearDepthf, emscripten_glClearStencil: _emscripten_glClearStencil, emscripten_glClientWaitSync: _emscripten_glClientWaitSync, emscripten_glClipControlEXT: _emscripten_glClipControlEXT, emscripten_glColorMask: _emscripten_glColorMask, emscripten_glCompileShader: _emscripten_glCompileShader, emscripten_glCompressedTexImage2D: _emscripten_glCompressedTexImage2D, emscripten_glCompressedTexImage3D: _emscripten_glCompressedTexImage3D, emscripten_glCompressedTexSubImage2D: _emscripten_glCompressedTexSubImage2D, emscripten_glCompressedTexSubImage3D: _emscripten_glCompressedTexSubImage3D, emscripten_glCopyBufferSubData: _emscripten_glCopyBufferSubData, emscripten_glCopyTexImage2D: _emscripten_glCopyTexImage2D, emscripten_glCopyTexSubImage2D: _emscripten_glCopyTexSubImage2D, emscripten_glCopyTexSubImage3D: _emscripten_glCopyTexSubImage3D, emscripten_glCreateProgram: _emscripten_glCreateProgram, emscripten_glCreateShader: _emscripten_glCreateShader, emscripten_glCullFace: _emscripten_glCullFace, emscripten_glDeleteBuffers: _emscripten_glDeleteBuffers, emscripten_glDeleteFramebuffers: _emscripten_glDeleteFramebuffers, emscripten_glDeleteProgram: _emscripten_glDeleteProgram, emscripten_glDeleteQueries: _emscripten_glDeleteQueries, emscripten_glDeleteQueriesEXT: _emscripten_glDeleteQueriesEXT, emscripten_glDeleteRenderbuffers: _emscripten_glDeleteRenderbuffers, emscripten_glDeleteSamplers: _emscripten_glDeleteSamplers, emscripten_glDeleteShader: _emscripten_glDeleteShader, emscripten_glDeleteSync: _emscripten_glDeleteSync, emscripten_glDeleteTextures: _emscripten_glDeleteTextures, emscripten_glDeleteTransformFeedbacks: _emscripten_glDeleteTransformFeedbacks, emscripten_glDeleteVertexArrays: _emscripten_glDeleteVertexArrays, emscripten_glDeleteVertexArraysOES: _emscripten_glDeleteVertexArraysOES, emscripten_glDepthFunc: _emscripten_glDepthFunc, emscripten_glDepthMask: _emscripten_glDepthMask, emscripten_glDepthRange: _emscripten_glDepthRange, emscripten_glDepthRangef: _emscripten_glDepthRangef, emscripten_glDetachShader: _emscripten_glDetachShader, emscripten_glDisable: _emscripten_glDisable, emscripten_glDisableVertexAttribArray: _emscripten_glDisableVertexAttribArray, emscripten_glDrawArrays: _emscripten_glDrawArrays, emscripten_glDrawArraysInstanced: _emscripten_glDrawArraysInstanced, emscripten_glDrawArraysInstancedANGLE: _emscripten_glDrawArraysInstancedANGLE, emscripten_glDrawArraysInstancedARB: _emscripten_glDrawArraysInstancedARB, emscripten_glDrawArraysInstancedBaseInstance: _emscripten_glDrawArraysInstancedBaseInstance, emscripten_glDrawArraysInstancedBaseInstanceANGLE: _emscripten_glDrawArraysInstancedBaseInstanceANGLE, emscripten_glDrawArraysInstancedBaseInstanceWEBGL: _emscripten_glDrawArraysInstancedBaseInstanceWEBGL, emscripten_glDrawArraysInstancedEXT: _emscripten_glDrawArraysInstancedEXT, emscripten_glDrawArraysInstancedNV: _emscripten_glDrawArraysInstancedNV, emscripten_glDrawBuffers: _emscripten_glDrawBuffers, emscripten_glDrawBuffersEXT: _emscripten_glDrawBuffersEXT, emscripten_glDrawBuffersWEBGL: _emscripten_glDrawBuffersWEBGL, emscripten_glDrawElements: _emscripten_glDrawElements, emscripten_glDrawElementsInstanced: _emscripten_glDrawElementsInstanced, emscripten_glDrawElementsInstancedANGLE: _emscripten_glDrawElementsInstancedANGLE, emscripten_glDrawElementsInstancedARB: _emscripten_glDrawElementsInstancedARB, emscripten_glDrawElementsInstancedBaseVertexBaseInstanceANGLE: _emscripten_glDrawElementsInstancedBaseVertexBaseInstanceANGLE, emscripten_glDrawElementsInstancedBaseVertexBaseInstanceWEBGL: _emscripten_glDrawElementsInstancedBaseVertexBaseInstanceWEBGL, emscripten_glDrawElementsInstancedEXT: _emscripten_glDrawElementsInstancedEXT, emscripten_glDrawElementsInstancedNV: _emscripten_glDrawElementsInstancedNV, emscripten_glDrawRangeElements: _emscripten_glDrawRangeElements, emscripten_glEnable: _emscripten_glEnable, emscripten_glEnableVertexAttribArray: _emscripten_glEnableVertexAttribArray, emscripten_glEndQuery: _emscripten_glEndQuery, emscripten_glEndQueryEXT: _emscripten_glEndQueryEXT, emscripten_glEndTransformFeedback: _emscripten_glEndTransformFeedback, emscripten_glFenceSync: _emscripten_glFenceSync, emscripten_glFinish: _emscripten_glFinish, emscripten_glFlush: _emscripten_glFlush, emscripten_glFramebufferRenderbuffer: _emscripten_glFramebufferRenderbuffer, emscripten_glFramebufferTexture2D: _emscripten_glFramebufferTexture2D, emscripten_glFramebufferTextureLayer: _emscripten_glFramebufferTextureLayer, emscripten_glFrontFace: _emscripten_glFrontFace, emscripten_glGenBuffers: _emscripten_glGenBuffers, emscripten_glGenFramebuffers: _emscripten_glGenFramebuffers, emscripten_glGenQueries: _emscripten_glGenQueries, emscripten_glGenQueriesEXT: _emscripten_glGenQueriesEXT, emscripten_glGenRenderbuffers: _emscripten_glGenRenderbuffers, emscripten_glGenSamplers: _emscripten_glGenSamplers, emscripten_glGenTextures: _emscripten_glGenTextures, emscripten_glGenTransformFeedbacks: _emscripten_glGenTransformFeedbacks, emscripten_glGenVertexArrays: _emscripten_glGenVertexArrays, emscripten_glGenVertexArraysOES: _emscripten_glGenVertexArraysOES, emscripten_glGenerateMipmap: _emscripten_glGenerateMipmap, emscripten_glGetActiveAttrib: _emscripten_glGetActiveAttrib, emscripten_glGetActiveUniform: _emscripten_glGetActiveUniform, emscripten_glGetActiveUniformBlockName: _emscripten_glGetActiveUniformBlockName, emscripten_glGetActiveUniformBlockiv: _emscripten_glGetActiveUniformBlockiv, emscripten_glGetActiveUniformsiv: _emscripten_glGetActiveUniformsiv, emscripten_glGetAttachedShaders: _emscripten_glGetAttachedShaders, emscripten_glGetAttribLocation: _emscripten_glGetAttribLocation, emscripten_glGetBooleanv: _emscripten_glGetBooleanv, emscripten_glGetBufferParameteri64v: _emscripten_glGetBufferParameteri64v, emscripten_glGetBufferParameteriv: _emscripten_glGetBufferParameteriv, emscripten_glGetBufferSubData: _emscripten_glGetBufferSubData, emscripten_glGetError: _emscripten_glGetError, emscripten_glGetFloatv: _emscripten_glGetFloatv, emscripten_glGetFragDataLocation: _emscripten_glGetFragDataLocation, emscripten_glGetFramebufferAttachmentParameteriv: _emscripten_glGetFramebufferAttachmentParameteriv, emscripten_glGetInteger64i_v: _emscripten_glGetInteger64i_v, emscripten_glGetInteger64v: _emscripten_glGetInteger64v, emscripten_glGetIntegeri_v: _emscripten_glGetIntegeri_v, emscripten_glGetIntegerv: _emscripten_glGetIntegerv, emscripten_glGetInternalformativ: _emscripten_glGetInternalformativ, emscripten_glGetProgramBinary: _emscripten_glGetProgramBinary, emscripten_glGetProgramInfoLog: _emscripten_glGetProgramInfoLog, emscripten_glGetProgramiv: _emscripten_glGetProgramiv, emscripten_glGetQueryObjecti64vEXT: _emscripten_glGetQueryObjecti64vEXT, emscripten_glGetQueryObjectivEXT: _emscripten_glGetQueryObjectivEXT, emscripten_glGetQueryObjectui64vEXT: _emscripten_glGetQueryObjectui64vEXT, emscripten_glGetQueryObjectuiv: _emscripten_glGetQueryObjectuiv, emscripten_glGetQueryObjectuivEXT: _emscripten_glGetQueryObjectuivEXT, emscripten_glGetQueryiv: _emscripten_glGetQueryiv, emscripten_glGetQueryivEXT: _emscripten_glGetQueryivEXT, emscripten_glGetRenderbufferParameteriv: _emscripten_glGetRenderbufferParameteriv, emscripten_glGetSamplerParameterfv: _emscripten_glGetSamplerParameterfv, emscripten_glGetSamplerParameteriv: _emscripten_glGetSamplerParameteriv, emscripten_glGetShaderInfoLog: _emscripten_glGetShaderInfoLog, emscripten_glGetShaderPrecisionFormat: _emscripten_glGetShaderPrecisionFormat, emscripten_glGetShaderSource: _emscripten_glGetShaderSource, emscripten_glGetShaderiv: _emscripten_glGetShaderiv, emscripten_glGetString: _emscripten_glGetString, emscripten_glGetStringi: _emscripten_glGetStringi, emscripten_glGetSynciv: _emscripten_glGetSynciv, emscripten_glGetTexParameterfv: _emscripten_glGetTexParameterfv, emscripten_glGetTexParameteriv: _emscripten_glGetTexParameteriv, emscripten_glGetTransformFeedbackVarying: _emscripten_glGetTransformFeedbackVarying, emscripten_glGetUniformBlockIndex: _emscripten_glGetUniformBlockIndex, emscripten_glGetUniformIndices: _emscripten_glGetUniformIndices, emscripten_glGetUniformLocation: _emscripten_glGetUniformLocation, emscripten_glGetUniformfv: _emscripten_glGetUniformfv, emscripten_glGetUniformiv: _emscripten_glGetUniformiv, emscripten_glGetUniformuiv: _emscripten_glGetUniformuiv, emscripten_glGetVertexAttribIiv: _emscripten_glGetVertexAttribIiv, emscripten_glGetVertexAttribIuiv: _emscripten_glGetVertexAttribIuiv, emscripten_glGetVertexAttribPointerv: _emscripten_glGetVertexAttribPointerv, emscripten_glGetVertexAttribfv: _emscripten_glGetVertexAttribfv, emscripten_glGetVertexAttribiv: _emscripten_glGetVertexAttribiv, emscripten_glHint: _emscripten_glHint, emscripten_glInvalidateFramebuffer: _emscripten_glInvalidateFramebuffer, emscripten_glInvalidateSubFramebuffer: _emscripten_glInvalidateSubFramebuffer, emscripten_glIsBuffer: _emscripten_glIsBuffer, emscripten_glIsEnabled: _emscripten_glIsEnabled, emscripten_glIsFramebuffer: _emscripten_glIsFramebuffer, emscripten_glIsProgram: _emscripten_glIsProgram, emscripten_glIsQuery: _emscripten_glIsQuery, emscripten_glIsQueryEXT: _emscripten_glIsQueryEXT, emscripten_glIsRenderbuffer: _emscripten_glIsRenderbuffer, emscripten_glIsSampler: _emscripten_glIsSampler, emscripten_glIsShader: _emscripten_glIsShader, emscripten_glIsSync: _emscripten_glIsSync, emscripten_glIsTexture: _emscripten_glIsTexture, emscripten_glIsTransformFeedback: _emscripten_glIsTransformFeedback, emscripten_glIsVertexArray: _emscripten_glIsVertexArray, emscripten_glIsVertexArrayOES: _emscripten_glIsVertexArrayOES, emscripten_glLineWidth: _emscripten_glLineWidth, emscripten_glLinkProgram: _emscripten_glLinkProgram, emscripten_glLoadIdentity: _emscripten_glLoadIdentity, emscripten_glMatrixMode: _emscripten_glMatrixMode, emscripten_glMultiDrawArrays: _emscripten_glMultiDrawArrays, emscripten_glMultiDrawArraysANGLE: _emscripten_glMultiDrawArraysANGLE, emscripten_glMultiDrawArraysInstancedANGLE: _emscripten_glMultiDrawArraysInstancedANGLE, emscripten_glMultiDrawArraysInstancedBaseInstanceANGLE: _emscripten_glMultiDrawArraysInstancedBaseInstanceANGLE, emscripten_glMultiDrawArraysInstancedBaseInstanceWEBGL: _emscripten_glMultiDrawArraysInstancedBaseInstanceWEBGL, emscripten_glMultiDrawArraysInstancedWEBGL: _emscripten_glMultiDrawArraysInstancedWEBGL, emscripten_glMultiDrawArraysWEBGL: _emscripten_glMultiDrawArraysWEBGL, emscripten_glMultiDrawElements: _emscripten_glMultiDrawElements, emscripten_glMultiDrawElementsANGLE: _emscripten_glMultiDrawElementsANGLE, emscripten_glMultiDrawElementsInstancedANGLE: _emscripten_glMultiDrawElementsInstancedANGLE, emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE: _emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE, emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL: _emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL, emscripten_glMultiDrawElementsInstancedWEBGL: _emscripten_glMultiDrawElementsInstancedWEBGL, emscripten_glMultiDrawElementsWEBGL: _emscripten_glMultiDrawElementsWEBGL, emscripten_glPauseTransformFeedback: _emscripten_glPauseTransformFeedback, emscripten_glPixelStorei: _emscripten_glPixelStorei, emscripten_glPolygonModeWEBGL: _emscripten_glPolygonModeWEBGL, emscripten_glPolygonOffset: _emscripten_glPolygonOffset, emscripten_glPolygonOffsetClampEXT: _emscripten_glPolygonOffsetClampEXT, emscripten_glProgramBinary: _emscripten_glProgramBinary, emscripten_glProgramParameteri: _emscripten_glProgramParameteri, emscripten_glQueryCounterEXT: _emscripten_glQueryCounterEXT, emscripten_glReadBuffer: _emscripten_glReadBuffer, emscripten_glReadPixels: _emscripten_glReadPixels, emscripten_glReleaseShaderCompiler: _emscripten_glReleaseShaderCompiler, emscripten_glRenderbufferStorage: _emscripten_glRenderbufferStorage, emscripten_glRenderbufferStorageMultisample: _emscripten_glRenderbufferStorageMultisample, emscripten_glResumeTransformFeedback: _emscripten_glResumeTransformFeedback, emscripten_glSampleCoverage: _emscripten_glSampleCoverage, emscripten_glSamplerParameterf: _emscripten_glSamplerParameterf, emscripten_glSamplerParameterfv: _emscripten_glSamplerParameterfv, emscripten_glSamplerParameteri: _emscripten_glSamplerParameteri, emscripten_glSamplerParameteriv: _emscripten_glSamplerParameteriv, emscripten_glScissor: _emscripten_glScissor, emscripten_glShaderBinary: _emscripten_glShaderBinary, emscripten_glShaderSource: _emscripten_glShaderSource, emscripten_glStencilFunc: _emscripten_glStencilFunc, emscripten_glStencilFuncSeparate: _emscripten_glStencilFuncSeparate, emscripten_glStencilMask: _emscripten_glStencilMask, emscripten_glStencilMaskSeparate: _emscripten_glStencilMaskSeparate, emscripten_glStencilOp: _emscripten_glStencilOp, emscripten_glStencilOpSeparate: _emscripten_glStencilOpSeparate, emscripten_glTexImage2D: _emscripten_glTexImage2D, emscripten_glTexImage3D: _emscripten_glTexImage3D, emscripten_glTexParameterf: _emscripten_glTexParameterf, emscripten_glTexParameterfv: _emscripten_glTexParameterfv, emscripten_glTexParameteri: _emscripten_glTexParameteri, emscripten_glTexParameteriv: _emscripten_glTexParameteriv, emscripten_glTexStorage2D: _emscripten_glTexStorage2D, emscripten_glTexStorage3D: _emscripten_glTexStorage3D, emscripten_glTexSubImage2D: _emscripten_glTexSubImage2D, emscripten_glTexSubImage3D: _emscripten_glTexSubImage3D, emscripten_glTransformFeedbackVaryings: _emscripten_glTransformFeedbackVaryings, emscripten_glUniform1f: _emscripten_glUniform1f, emscripten_glUniform1fv: _emscripten_glUniform1fv, emscripten_glUniform1i: _emscripten_glUniform1i, emscripten_glUniform1iv: _emscripten_glUniform1iv, emscripten_glUniform1ui: _emscripten_glUniform1ui, emscripten_glUniform1uiv: _emscripten_glUniform1uiv, emscripten_glUniform2f: _emscripten_glUniform2f, emscripten_glUniform2fv: _emscripten_glUniform2fv, emscripten_glUniform2i: _emscripten_glUniform2i, emscripten_glUniform2iv: _emscripten_glUniform2iv, emscripten_glUniform2ui: _emscripten_glUniform2ui, emscripten_glUniform2uiv: _emscripten_glUniform2uiv, emscripten_glUniform3f: _emscripten_glUniform3f, emscripten_glUniform3fv: _emscripten_glUniform3fv, emscripten_glUniform3i: _emscripten_glUniform3i, emscripten_glUniform3iv: _emscripten_glUniform3iv, emscripten_glUniform3ui: _emscripten_glUniform3ui, emscripten_glUniform3uiv: _emscripten_glUniform3uiv, emscripten_glUniform4f: _emscripten_glUniform4f, emscripten_glUniform4fv: _emscripten_glUniform4fv, emscripten_glUniform4i: _emscripten_glUniform4i, emscripten_glUniform4iv: _emscripten_glUniform4iv, emscripten_glUniform4ui: _emscripten_glUniform4ui, emscripten_glUniform4uiv: _emscripten_glUniform4uiv, emscripten_glUniformBlockBinding: _emscripten_glUniformBlockBinding, emscripten_glUniformMatrix2fv: _emscripten_glUniformMatrix2fv, emscripten_glUniformMatrix2x3fv: _emscripten_glUniformMatrix2x3fv, emscripten_glUniformMatrix2x4fv: _emscripten_glUniformMatrix2x4fv, emscripten_glUniformMatrix3fv: _emscripten_glUniformMatrix3fv, emscripten_glUniformMatrix3x2fv: _emscripten_glUniformMatrix3x2fv, emscripten_glUniformMatrix3x4fv: _emscripten_glUniformMatrix3x4fv, emscripten_glUniformMatrix4fv: _emscripten_glUniformMatrix4fv, emscripten_glUniformMatrix4x2fv: _emscripten_glUniformMatrix4x2fv, emscripten_glUniformMatrix4x3fv: _emscripten_glUniformMatrix4x3fv, emscripten_glUseProgram: _emscripten_glUseProgram, emscripten_glValidateProgram: _emscripten_glValidateProgram, emscripten_glVertexAttrib1f: _emscripten_glVertexAttrib1f, emscripten_glVertexAttrib1fv: _emscripten_glVertexAttrib1fv, emscripten_glVertexAttrib2f: _emscripten_glVertexAttrib2f, emscripten_glVertexAttrib2fv: _emscripten_glVertexAttrib2fv, emscripten_glVertexAttrib3f: _emscripten_glVertexAttrib3f, emscripten_glVertexAttrib3fv: _emscripten_glVertexAttrib3fv, emscripten_glVertexAttrib4f: _emscripten_glVertexAttrib4f, emscripten_glVertexAttrib4fv: _emscripten_glVertexAttrib4fv, emscripten_glVertexAttribDivisor: _emscripten_glVertexAttribDivisor, emscripten_glVertexAttribDivisorANGLE: _emscripten_glVertexAttribDivisorANGLE, emscripten_glVertexAttribDivisorARB: _emscripten_glVertexAttribDivisorARB, emscripten_glVertexAttribDivisorEXT: _emscripten_glVertexAttribDivisorEXT, emscripten_glVertexAttribDivisorNV: _emscripten_glVertexAttribDivisorNV, emscripten_glVertexAttribI4i: _emscripten_glVertexAttribI4i, emscripten_glVertexAttribI4iv: _emscripten_glVertexAttribI4iv, emscripten_glVertexAttribI4ui: _emscripten_glVertexAttribI4ui, emscripten_glVertexAttribI4uiv: _emscripten_glVertexAttribI4uiv, emscripten_glVertexAttribIPointer: _emscripten_glVertexAttribIPointer, emscripten_glVertexAttribPointer: _emscripten_glVertexAttribPointer, emscripten_glVertexPointer: _emscripten_glVertexPointer, emscripten_glViewport: _emscripten_glViewport, emscripten_glWaitSync: _emscripten_glWaitSync, emscripten_has_asyncify: _emscripten_has_asyncify, emscripten_hide_mouse: _emscripten_hide_mouse, emscripten_html5_remove_all_event_listeners: _emscripten_html5_remove_all_event_listeners, emscripten_html5_remove_event_listener: _emscripten_html5_remove_event_listener, emscripten_is_main_browser_thread: _emscripten_is_main_browser_thread, emscripten_is_webgl_context_lost: _emscripten_is_webgl_context_lost, emscripten_lock_orientation: _emscripten_lock_orientation, emscripten_log_impl_js, emscripten_math_acos: _emscripten_math_acos, emscripten_math_acosh: _emscripten_math_acosh, emscripten_math_asin: _emscripten_math_asin, emscripten_math_asinh: _emscripten_math_asinh, emscripten_math_atan: _emscripten_math_atan, emscripten_math_atan2: _emscripten_math_atan2, emscripten_math_atanh: _emscripten_math_atanh, emscripten_math_cbrt: _emscripten_math_cbrt, emscripten_math_cos: _emscripten_math_cos, emscripten_math_cosh: _emscripten_math_cosh, emscripten_math_exp: _emscripten_math_exp, emscripten_math_expm1: _emscripten_math_expm1, emscripten_math_fmod: _emscripten_math_fmod, emscripten_math_hypot: _emscripten_math_hypot, emscripten_math_log: _emscripten_math_log, emscripten_math_log10: _emscripten_math_log10, emscripten_math_log1p: _emscripten_math_log1p, emscripten_math_log2: _emscripten_math_log2, emscripten_math_pow: _emscripten_math_pow, emscripten_math_random: _emscripten_math_random, emscripten_math_round: _emscripten_math_round, emscripten_math_sign: _emscripten_math_sign, emscripten_math_sin: _emscripten_math_sin, emscripten_math_sinh: _emscripten_math_sinh, emscripten_math_sqrt: _emscripten_math_sqrt, emscripten_math_tan: _emscripten_math_tan, emscripten_math_tanh: _emscripten_math_tanh, emscripten_notify_memory_growth: _emscripten_notify_memory_growth, emscripten_out: _emscripten_out, emscripten_outn: _emscripten_outn, emscripten_pause_main_loop: _emscripten_pause_main_loop, emscripten_pc_get_column: _emscripten_pc_get_column, emscripten_pc_get_file: _emscripten_pc_get_file, emscripten_pc_get_function: _emscripten_pc_get_function, emscripten_pc_get_line: _emscripten_pc_get_line, emscripten_performance_now: _emscripten_performance_now, emscripten_print_double: _emscripten_print_double, emscripten_promise_all: _emscripten_promise_all, emscripten_promise_all_settled: _emscripten_promise_all_settled, emscripten_promise_any: _emscripten_promise_any, emscripten_promise_await: _emscripten_promise_await, emscripten_promise_create: _emscripten_promise_create, emscripten_promise_destroy: _emscripten_promise_destroy, emscripten_promise_race: _emscripten_promise_race, emscripten_promise_resolve: _emscripten_promise_resolve, emscripten_promise_then: _emscripten_promise_then, emscripten_random: _emscripten_random, emscripten_request_animation_frame: _emscripten_request_animation_frame, emscripten_request_animation_frame_loop: _emscripten_request_animation_frame_loop, emscripten_request_fullscreen: _emscripten_request_fullscreen, emscripten_request_fullscreen_strategy: _emscripten_request_fullscreen_strategy, emscripten_request_pointerlock: _emscripten_request_pointerlock, emscripten_resize_heap: _emscripten_resize_heap, emscripten_resume_main_loop: _emscripten_resume_main_loop, emscripten_return_address: _emscripten_return_address, emscripten_run_preload_plugins: _emscripten_run_preload_plugins, emscripten_run_preload_plugins_data: _emscripten_run_preload_plugins_data, emscripten_run_script: _emscripten_run_script, emscripten_run_script_int: _emscripten_run_script_int, emscripten_run_script_string: _emscripten_run_script_string, emscripten_runtime_keepalive_check: _emscripten_runtime_keepalive_check, emscripten_runtime_keepalive_pop: _emscripten_runtime_keepalive_pop, emscripten_runtime_keepalive_push: _emscripten_runtime_keepalive_push, emscripten_sample_gamepad_data: _emscripten_sample_gamepad_data, emscripten_set_batterychargingchange_callback_on_thread: _emscripten_set_batterychargingchange_callback_on_thread, emscripten_set_batterylevelchange_callback_on_thread: _emscripten_set_batterylevelchange_callback_on_thread, emscripten_set_beforeunload_callback_on_thread: _emscripten_set_beforeunload_callback_on_thread, emscripten_set_blur_callback_on_thread: _emscripten_set_blur_callback_on_thread, emscripten_set_canvas_element_size: _emscripten_set_canvas_element_size, emscripten_set_canvas_size: _emscripten_set_canvas_size, emscripten_set_click_callback_on_thread: _emscripten_set_click_callback_on_thread, emscripten_set_dblclick_callback_on_thread: _emscripten_set_dblclick_callback_on_thread, emscripten_set_devicemotion_callback_on_thread: _emscripten_set_devicemotion_callback_on_thread, emscripten_set_deviceorientation_callback_on_thread: _emscripten_set_deviceorientation_callback_on_thread, emscripten_set_element_css_size: _emscripten_set_element_css_size, emscripten_set_focus_callback_on_thread: _emscripten_set_focus_callback_on_thread, emscripten_set_focusin_callback_on_thread: _emscripten_set_focusin_callback_on_thread, emscripten_set_focusout_callback_on_thread: _emscripten_set_focusout_callback_on_thread, emscripten_set_fullscreenchange_callback_on_thread: _emscripten_set_fullscreenchange_callback_on_thread, emscripten_set_gamepadconnected_callback_on_thread: _emscripten_set_gamepadconnected_callback_on_thread, emscripten_set_gamepaddisconnected_callback_on_thread: _emscripten_set_gamepaddisconnected_callback_on_thread, emscripten_set_immediate: _emscripten_set_immediate, emscripten_set_immediate_loop: _emscripten_set_immediate_loop, emscripten_set_interval: _emscripten_set_interval, emscripten_set_keydown_callback_on_thread: _emscripten_set_keydown_callback_on_thread, emscripten_set_keypress_callback_on_thread: _emscripten_set_keypress_callback_on_thread, emscripten_set_keyup_callback_on_thread: _emscripten_set_keyup_callback_on_thread, emscripten_set_main_loop: _emscripten_set_main_loop, emscripten_set_main_loop_arg: _emscripten_set_main_loop_arg, emscripten_set_main_loop_expected_blockers: _emscripten_set_main_loop_expected_blockers, emscripten_set_main_loop_timing: _emscripten_set_main_loop_timing, emscripten_set_mousedown_callback_on_thread: _emscripten_set_mousedown_callback_on_thread, emscripten_set_mouseenter_callback_on_thread: _emscripten_set_mouseenter_callback_on_thread, emscripten_set_mouseleave_callback_on_thread: _emscripten_set_mouseleave_callback_on_thread, emscripten_set_mousemove_callback_on_thread: _emscripten_set_mousemove_callback_on_thread, emscripten_set_mouseout_callback_on_thread: _emscripten_set_mouseout_callback_on_thread, emscripten_set_mouseover_callback_on_thread: _emscripten_set_mouseover_callback_on_thread, emscripten_set_mouseup_callback_on_thread: _emscripten_set_mouseup_callback_on_thread, emscripten_set_orientationchange_callback_on_thread: _emscripten_set_orientationchange_callback_on_thread, emscripten_set_pointerlockchange_callback_on_thread: _emscripten_set_pointerlockchange_callback_on_thread, emscripten_set_pointerlockerror_callback_on_thread: _emscripten_set_pointerlockerror_callback_on_thread, emscripten_set_resize_callback_on_thread: _emscripten_set_resize_callback_on_thread, emscripten_set_scroll_callback_on_thread: _emscripten_set_scroll_callback_on_thread, emscripten_set_socket_close_callback: _emscripten_set_socket_close_callback, emscripten_set_socket_connection_callback: _emscripten_set_socket_connection_callback, emscripten_set_socket_error_callback: _emscripten_set_socket_error_callback, emscripten_set_socket_listen_callback: _emscripten_set_socket_listen_callback, emscripten_set_socket_message_callback: _emscripten_set_socket_message_callback, emscripten_set_socket_open_callback: _emscripten_set_socket_open_callback, emscripten_set_timeout: _emscripten_set_timeout, emscripten_set_timeout_loop: _emscripten_set_timeout_loop, emscripten_set_touchcancel_callback_on_thread: _emscripten_set_touchcancel_callback_on_thread, emscripten_set_touchend_callback_on_thread: _emscripten_set_touchend_callback_on_thread, emscripten_set_touchmove_callback_on_thread: _emscripten_set_touchmove_callback_on_thread, emscripten_set_touchstart_callback_on_thread: _emscripten_set_touchstart_callback_on_thread, emscripten_set_up_async_input_device_js, emscripten_set_visibilitychange_callback_on_thread: _emscripten_set_visibilitychange_callback_on_thread, emscripten_set_webglcontextlost_callback_on_thread: _emscripten_set_webglcontextlost_callback_on_thread, emscripten_set_webglcontextrestored_callback_on_thread: _emscripten_set_webglcontextrestored_callback_on_thread, emscripten_set_wheel_callback_on_thread: _emscripten_set_wheel_callback_on_thread, emscripten_set_window_title: _emscripten_set_window_title, emscripten_stack_snapshot: _emscripten_stack_snapshot, emscripten_stack_unwind_buffer: _emscripten_stack_unwind_buffer, emscripten_supports_offscreencanvas: _emscripten_supports_offscreencanvas, emscripten_throw_number: _emscripten_throw_number, emscripten_throw_string: _emscripten_throw_string, emscripten_unlock_orientation: _emscripten_unlock_orientation, emscripten_unwind_to_js_event_loop: _emscripten_unwind_to_js_event_loop, emscripten_vibrate: _emscripten_vibrate, emscripten_vibrate_pattern: _emscripten_vibrate_pattern, emscripten_webgl_commit_frame: _emscripten_webgl_commit_frame, emscripten_webgl_create_context: _emscripten_webgl_create_context, emscripten_webgl_destroy_context: _emscripten_webgl_destroy_context, emscripten_webgl_do_commit_frame: _emscripten_webgl_do_commit_frame, emscripten_webgl_do_create_context: _emscripten_webgl_do_create_context, emscripten_webgl_do_get_current_context: _emscripten_webgl_do_get_current_context, emscripten_webgl_enable_ANGLE_instanced_arrays: _emscripten_webgl_enable_ANGLE_instanced_arrays, emscripten_webgl_enable_EXT_clip_control: _emscripten_webgl_enable_EXT_clip_control, emscripten_webgl_enable_EXT_polygon_offset_clamp: _emscripten_webgl_enable_EXT_polygon_offset_clamp, emscripten_webgl_enable_OES_vertex_array_object: _emscripten_webgl_enable_OES_vertex_array_object, emscripten_webgl_enable_WEBGL_draw_buffers: _emscripten_webgl_enable_WEBGL_draw_buffers, emscripten_webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance: _emscripten_webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance, emscripten_webgl_enable_WEBGL_multi_draw: _emscripten_webgl_enable_WEBGL_multi_draw, emscripten_webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance: _emscripten_webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance, emscripten_webgl_enable_WEBGL_polygon_mode: _emscripten_webgl_enable_WEBGL_polygon_mode, emscripten_webgl_enable_extension: _emscripten_webgl_enable_extension, emscripten_webgl_get_context_attributes: _emscripten_webgl_get_context_attributes, emscripten_webgl_get_current_context: _emscripten_webgl_get_current_context, emscripten_webgl_get_drawing_buffer_size: _emscripten_webgl_get_drawing_buffer_size, emscripten_webgl_get_parameter_d: _emscripten_webgl_get_parameter_d, emscripten_webgl_get_parameter_i64v: _emscripten_webgl_get_parameter_i64v, emscripten_webgl_get_parameter_o: _emscripten_webgl_get_parameter_o, emscripten_webgl_get_parameter_utf8: _emscripten_webgl_get_parameter_utf8, emscripten_webgl_get_parameter_v: _emscripten_webgl_get_parameter_v, emscripten_webgl_get_program_info_log_utf8: _emscripten_webgl_get_program_info_log_utf8, emscripten_webgl_get_program_parameter_d: _emscripten_webgl_get_program_parameter_d, emscripten_webgl_get_shader_info_log_utf8: _emscripten_webgl_get_shader_info_log_utf8, emscripten_webgl_get_shader_parameter_d: _emscripten_webgl_get_shader_parameter_d, emscripten_webgl_get_shader_source_utf8: _emscripten_webgl_get_shader_source_utf8, emscripten_webgl_get_supported_extensions: _emscripten_webgl_get_supported_extensions, emscripten_webgl_get_uniform_d: _emscripten_webgl_get_uniform_d, emscripten_webgl_get_uniform_v: _emscripten_webgl_get_uniform_v, emscripten_webgl_get_vertex_attrib_d: _emscripten_webgl_get_vertex_attrib_d, emscripten_webgl_get_vertex_attrib_o: _emscripten_webgl_get_vertex_attrib_o, emscripten_webgl_get_vertex_attrib_v: _emscripten_webgl_get_vertex_attrib_v, emscripten_webgl_make_context_current: _emscripten_webgl_make_context_current, emscripten_websocket_close: _emscripten_websocket_close, emscripten_websocket_deinitialize: _emscripten_websocket_deinitialize, emscripten_websocket_delete: _emscripten_websocket_delete, emscripten_websocket_get_buffered_amount: _emscripten_websocket_get_buffered_amount, emscripten_websocket_get_extensions: _emscripten_websocket_get_extensions, emscripten_websocket_get_extensions_length: _emscripten_websocket_get_extensions_length, emscripten_websocket_get_protocol: _emscripten_websocket_get_protocol, emscripten_websocket_get_protocol_length: _emscripten_websocket_get_protocol_length, emscripten_websocket_get_ready_state: _emscripten_websocket_get_ready_state, emscripten_websocket_get_url: _emscripten_websocket_get_url, emscripten_websocket_get_url_length: _emscripten_websocket_get_url_length, emscripten_websocket_is_supported: _emscripten_websocket_is_supported, emscripten_websocket_new: _emscripten_websocket_new, emscripten_websocket_send_binary: _emscripten_websocket_send_binary, emscripten_websocket_send_utf8_text: _emscripten_websocket_send_utf8_text, emscripten_websocket_set_onclose_callback_on_thread: _emscripten_websocket_set_onclose_callback_on_thread, emscripten_websocket_set_onerror_callback_on_thread: _emscripten_websocket_set_onerror_callback_on_thread, emscripten_websocket_set_onmessage_callback_on_thread: _emscripten_websocket_set_onmessage_callback_on_thread, emscripten_websocket_set_onopen_callback_on_thread: _emscripten_websocket_set_onopen_callback_on_thread, endprotoent: _endprotoent, environ_get: _environ_get, environ_sizes_get: _environ_sizes_get, exit: _exit, fail_test, fd_close: _fd_close, fd_fdstat_get: _fd_fdstat_get, fd_pread: _fd_pread, fd_pwrite: _fd_pwrite, fd_read: _fd_read, fd_seek: _fd_seek, fd_sync: _fd_sync, fd_write: _fd_write, ffi_call_js, ffi_closure_alloc_js, ffi_closure_free_js, ffi_prep_closure_loc_js, filledEllipseColor: _filledEllipseColor, filledEllipseRGBA: _filledEllipseRGBA, gc_register_proxies, get_async_js_call_done_callback, get_length_helper, get_length_string, get_suspender, getaddrinfo: _getaddrinfo, getnameinfo: _getnameinfo, getprotobyname: _getprotobyname, getprotobynumber: _getprotobynumber, getprotoent: _getprotoent, glActiveTexture: _glActiveTexture, glAttachShader: _glAttachShader, glBegin: _glBegin, glBeginQuery: _glBeginQuery, glBeginQueryEXT: _glBeginQueryEXT, glBeginTransformFeedback: _glBeginTransformFeedback, glBindAttribLocation: _glBindAttribLocation, glBindBuffer: _glBindBuffer, glBindBufferBase: _glBindBufferBase, glBindBufferRange: _glBindBufferRange, glBindFramebuffer: _glBindFramebuffer, glBindRenderbuffer: _glBindRenderbuffer, glBindSampler: _glBindSampler, glBindTexture: _glBindTexture, glBindTransformFeedback: _glBindTransformFeedback, glBindVertexArray: _glBindVertexArray, glBindVertexArrayOES: _glBindVertexArrayOES, glBlendColor: _glBlendColor, glBlendEquation: _glBlendEquation, glBlendEquationSeparate: _glBlendEquationSeparate, glBlendFunc: _glBlendFunc, glBlendFuncSeparate: _glBlendFuncSeparate, glBlitFramebuffer: _glBlitFramebuffer, glBufferData: _glBufferData, glBufferSubData: _glBufferSubData, glCheckFramebufferStatus: _glCheckFramebufferStatus, glClear: _glClear, glClearBufferfi: _glClearBufferfi, glClearBufferfv: _glClearBufferfv, glClearBufferiv: _glClearBufferiv, glClearBufferuiv: _glClearBufferuiv, glClearColor: _glClearColor, glClearDepth: _glClearDepth, glClearDepthf: _glClearDepthf, glClearStencil: _glClearStencil, glClientWaitSync: _glClientWaitSync, glClipControlEXT: _glClipControlEXT, glColorMask: _glColorMask, glCompileShader: _glCompileShader, glCompressedTexImage2D: _glCompressedTexImage2D, glCompressedTexImage3D: _glCompressedTexImage3D, glCompressedTexSubImage2D: _glCompressedTexSubImage2D, glCompressedTexSubImage3D: _glCompressedTexSubImage3D, glCopyBufferSubData: _glCopyBufferSubData, glCopyTexImage2D: _glCopyTexImage2D, glCopyTexSubImage2D: _glCopyTexSubImage2D, glCopyTexSubImage3D: _glCopyTexSubImage3D, glCreateProgram: _glCreateProgram, glCreateShader: _glCreateShader, glCullFace: _glCullFace, glDeleteBuffers: _glDeleteBuffers, glDeleteFramebuffers: _glDeleteFramebuffers, glDeleteProgram: _glDeleteProgram, glDeleteQueries: _glDeleteQueries, glDeleteQueriesEXT: _glDeleteQueriesEXT, glDeleteRenderbuffers: _glDeleteRenderbuffers, glDeleteSamplers: _glDeleteSamplers, glDeleteShader: _glDeleteShader, glDeleteSync: _glDeleteSync, glDeleteTextures: _glDeleteTextures, glDeleteTransformFeedbacks: _glDeleteTransformFeedbacks, glDeleteVertexArrays: _glDeleteVertexArrays, glDeleteVertexArraysOES: _glDeleteVertexArraysOES, glDepthFunc: _glDepthFunc, glDepthMask: _glDepthMask, glDepthRange: _glDepthRange, glDepthRangef: _glDepthRangef, glDetachShader: _glDetachShader, glDisable: _glDisable, glDisableVertexAttribArray: _glDisableVertexAttribArray, glDrawArrays: _glDrawArrays, glDrawArraysInstanced: _glDrawArraysInstanced, glDrawArraysInstancedANGLE: _glDrawArraysInstancedANGLE, glDrawArraysInstancedARB: _glDrawArraysInstancedARB, glDrawArraysInstancedBaseInstance: _glDrawArraysInstancedBaseInstance, glDrawArraysInstancedBaseInstanceANGLE: _glDrawArraysInstancedBaseInstanceANGLE, glDrawArraysInstancedBaseInstanceWEBGL: _glDrawArraysInstancedBaseInstanceWEBGL, glDrawArraysInstancedEXT: _glDrawArraysInstancedEXT, glDrawArraysInstancedNV: _glDrawArraysInstancedNV, glDrawBuffers: _glDrawBuffers, glDrawBuffersEXT: _glDrawBuffersEXT, glDrawBuffersWEBGL: _glDrawBuffersWEBGL, glDrawElements: _glDrawElements, glDrawElementsInstanced: _glDrawElementsInstanced, glDrawElementsInstancedANGLE: _glDrawElementsInstancedANGLE, glDrawElementsInstancedARB: _glDrawElementsInstancedARB, glDrawElementsInstancedBaseVertexBaseInstanceANGLE: _glDrawElementsInstancedBaseVertexBaseInstanceANGLE, glDrawElementsInstancedBaseVertexBaseInstanceWEBGL: _glDrawElementsInstancedBaseVertexBaseInstanceWEBGL, glDrawElementsInstancedEXT: _glDrawElementsInstancedEXT, glDrawElementsInstancedNV: _glDrawElementsInstancedNV, glDrawRangeElements: _glDrawRangeElements, glEnable: _glEnable, glEnableVertexAttribArray: _glEnableVertexAttribArray, glEndQuery: _glEndQuery, glEndQueryEXT: _glEndQueryEXT, glEndTransformFeedback: _glEndTransformFeedback, glFenceSync: _glFenceSync, glFinish: _glFinish, glFlush: _glFlush, glFramebufferRenderbuffer: _glFramebufferRenderbuffer, glFramebufferTexture2D: _glFramebufferTexture2D, glFramebufferTextureLayer: _glFramebufferTextureLayer, glFrontFace: _glFrontFace, glGenBuffers: _glGenBuffers, glGenFramebuffers: _glGenFramebuffers, glGenQueries: _glGenQueries, glGenQueriesEXT: _glGenQueriesEXT, glGenRenderbuffers: _glGenRenderbuffers, glGenSamplers: _glGenSamplers, glGenTextures: _glGenTextures, glGenTransformFeedbacks: _glGenTransformFeedbacks, glGenVertexArrays: _glGenVertexArrays, glGenVertexArraysOES: _glGenVertexArraysOES, glGenerateMipmap: _glGenerateMipmap, glGetActiveAttrib: _glGetActiveAttrib, glGetActiveUniform: _glGetActiveUniform, glGetActiveUniformBlockName: _glGetActiveUniformBlockName, glGetActiveUniformBlockiv: _glGetActiveUniformBlockiv, glGetActiveUniformsiv: _glGetActiveUniformsiv, glGetAttachedShaders: _glGetAttachedShaders, glGetAttribLocation: _glGetAttribLocation, glGetBooleanv: _glGetBooleanv, glGetBufferParameteri64v: _glGetBufferParameteri64v, glGetBufferParameteriv: _glGetBufferParameteriv, glGetBufferSubData: _glGetBufferSubData, glGetError: _glGetError, glGetFloatv: _glGetFloatv, glGetFragDataLocation: _glGetFragDataLocation, glGetFramebufferAttachmentParameteriv: _glGetFramebufferAttachmentParameteriv, glGetInteger64i_v: _glGetInteger64i_v, glGetInteger64v: _glGetInteger64v, glGetIntegeri_v: _glGetIntegeri_v, glGetIntegerv: _glGetIntegerv, glGetInternalformativ: _glGetInternalformativ, glGetProgramBinary: _glGetProgramBinary, glGetProgramInfoLog: _glGetProgramInfoLog, glGetProgramiv: _glGetProgramiv, glGetQueryObjecti64vEXT: _glGetQueryObjecti64vEXT, glGetQueryObjectivEXT: _glGetQueryObjectivEXT, glGetQueryObjectui64vEXT: _glGetQueryObjectui64vEXT, glGetQueryObjectuiv: _glGetQueryObjectuiv, glGetQueryObjectuivEXT: _glGetQueryObjectuivEXT, glGetQueryiv: _glGetQueryiv, glGetQueryivEXT: _glGetQueryivEXT, glGetRenderbufferParameteriv: _glGetRenderbufferParameteriv, glGetSamplerParameterfv: _glGetSamplerParameterfv, glGetSamplerParameteriv: _glGetSamplerParameteriv, glGetShaderInfoLog: _glGetShaderInfoLog, glGetShaderPrecisionFormat: _glGetShaderPrecisionFormat, glGetShaderSource: _glGetShaderSource, glGetShaderiv: _glGetShaderiv, glGetString: _glGetString, glGetStringi: _glGetStringi, glGetSynciv: _glGetSynciv, glGetTexParameterfv: _glGetTexParameterfv, glGetTexParameteriv: _glGetTexParameteriv, glGetTransformFeedbackVarying: _glGetTransformFeedbackVarying, glGetUniformBlockIndex: _glGetUniformBlockIndex, glGetUniformIndices: _glGetUniformIndices, glGetUniformLocation: _glGetUniformLocation, glGetUniformfv: _glGetUniformfv, glGetUniformiv: _glGetUniformiv, glGetUniformuiv: _glGetUniformuiv, glGetVertexAttribIiv: _glGetVertexAttribIiv, glGetVertexAttribIuiv: _glGetVertexAttribIuiv, glGetVertexAttribPointerv: _glGetVertexAttribPointerv, glGetVertexAttribfv: _glGetVertexAttribfv, glGetVertexAttribiv: _glGetVertexAttribiv, glHint: _glHint, glInvalidateFramebuffer: _glInvalidateFramebuffer, glInvalidateSubFramebuffer: _glInvalidateSubFramebuffer, glIsBuffer: _glIsBuffer, glIsEnabled: _glIsEnabled, glIsFramebuffer: _glIsFramebuffer, glIsProgram: _glIsProgram, glIsQuery: _glIsQuery, glIsQueryEXT: _glIsQueryEXT, glIsRenderbuffer: _glIsRenderbuffer, glIsSampler: _glIsSampler, glIsShader: _glIsShader, glIsSync: _glIsSync, glIsTexture: _glIsTexture, glIsTransformFeedback: _glIsTransformFeedback, glIsVertexArray: _glIsVertexArray, glIsVertexArrayOES: _glIsVertexArrayOES, glLineWidth: _glLineWidth, glLinkProgram: _glLinkProgram, glLoadIdentity: _glLoadIdentity, glMatrixMode: _glMatrixMode, glMultiDrawArrays: _glMultiDrawArrays, glMultiDrawArraysANGLE: _glMultiDrawArraysANGLE, glMultiDrawArraysInstancedANGLE: _glMultiDrawArraysInstancedANGLE, glMultiDrawArraysInstancedBaseInstanceANGLE: _glMultiDrawArraysInstancedBaseInstanceANGLE, glMultiDrawArraysInstancedBaseInstanceWEBGL: _glMultiDrawArraysInstancedBaseInstanceWEBGL, glMultiDrawArraysInstancedWEBGL: _glMultiDrawArraysInstancedWEBGL, glMultiDrawArraysWEBGL: _glMultiDrawArraysWEBGL, glMultiDrawElements: _glMultiDrawElements, glMultiDrawElementsANGLE: _glMultiDrawElementsANGLE, glMultiDrawElementsInstancedANGLE: _glMultiDrawElementsInstancedANGLE, glMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE: _glMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE, glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL: _glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL, glMultiDrawElementsInstancedWEBGL: _glMultiDrawElementsInstancedWEBGL, glMultiDrawElementsWEBGL: _glMultiDrawElementsWEBGL, glPauseTransformFeedback: _glPauseTransformFeedback, glPixelStorei: _glPixelStorei, glPolygonModeWEBGL: _glPolygonModeWEBGL, glPolygonOffset: _glPolygonOffset, glPolygonOffsetClampEXT: _glPolygonOffsetClampEXT, glProgramBinary: _glProgramBinary, glProgramParameteri: _glProgramParameteri, glQueryCounterEXT: _glQueryCounterEXT, glReadBuffer: _glReadBuffer, glReadPixels: _glReadPixels, glReleaseShaderCompiler: _glReleaseShaderCompiler, glRenderbufferStorage: _glRenderbufferStorage, glRenderbufferStorageMultisample: _glRenderbufferStorageMultisample, glResumeTransformFeedback: _glResumeTransformFeedback, glSampleCoverage: _glSampleCoverage, glSamplerParameterf: _glSamplerParameterf, glSamplerParameterfv: _glSamplerParameterfv, glSamplerParameteri: _glSamplerParameteri, glSamplerParameteriv: _glSamplerParameteriv, glScissor: _glScissor, glShaderBinary: _glShaderBinary, glShaderSource: _glShaderSource, glStencilFunc: _glStencilFunc, glStencilFuncSeparate: _glStencilFuncSeparate, glStencilMask: _glStencilMask, glStencilMaskSeparate: _glStencilMaskSeparate, glStencilOp: _glStencilOp, glStencilOpSeparate: _glStencilOpSeparate, glTexImage2D: _glTexImage2D, glTexImage3D: _glTexImage3D, glTexParameterf: _glTexParameterf, glTexParameterfv: _glTexParameterfv, glTexParameteri: _glTexParameteri, glTexParameteriv: _glTexParameteriv, glTexStorage2D: _glTexStorage2D, glTexStorage3D: _glTexStorage3D, glTexSubImage2D: _glTexSubImage2D, glTexSubImage3D: _glTexSubImage3D, glTransformFeedbackVaryings: _glTransformFeedbackVaryings, glUniform1f: _glUniform1f, glUniform1fv: _glUniform1fv, glUniform1i: _glUniform1i, glUniform1iv: _glUniform1iv, glUniform1ui: _glUniform1ui, glUniform1uiv: _glUniform1uiv, glUniform2f: _glUniform2f, glUniform2fv: _glUniform2fv, glUniform2i: _glUniform2i, glUniform2iv: _glUniform2iv, glUniform2ui: _glUniform2ui, glUniform2uiv: _glUniform2uiv, glUniform3f: _glUniform3f, glUniform3fv: _glUniform3fv, glUniform3i: _glUniform3i, glUniform3iv: _glUniform3iv, glUniform3ui: _glUniform3ui, glUniform3uiv: _glUniform3uiv, glUniform4f: _glUniform4f, glUniform4fv: _glUniform4fv, glUniform4i: _glUniform4i, glUniform4iv: _glUniform4iv, glUniform4ui: _glUniform4ui, glUniform4uiv: _glUniform4uiv, glUniformBlockBinding: _glUniformBlockBinding, glUniformMatrix2fv: _glUniformMatrix2fv, glUniformMatrix2x3fv: _glUniformMatrix2x3fv, glUniformMatrix2x4fv: _glUniformMatrix2x4fv, glUniformMatrix3fv: _glUniformMatrix3fv, glUniformMatrix3x2fv: _glUniformMatrix3x2fv, glUniformMatrix3x4fv: _glUniformMatrix3x4fv, glUniformMatrix4fv: _glUniformMatrix4fv, glUniformMatrix4x2fv: _glUniformMatrix4x2fv, glUniformMatrix4x3fv: _glUniformMatrix4x3fv, glUseProgram: _glUseProgram, glValidateProgram: _glValidateProgram, glVertexAttrib1f: _glVertexAttrib1f, glVertexAttrib1fv: _glVertexAttrib1fv, glVertexAttrib2f: _glVertexAttrib2f, glVertexAttrib2fv: _glVertexAttrib2fv, glVertexAttrib3f: _glVertexAttrib3f, glVertexAttrib3fv: _glVertexAttrib3fv, glVertexAttrib4f: _glVertexAttrib4f, glVertexAttrib4fv: _glVertexAttrib4fv, glVertexAttribDivisor: _glVertexAttribDivisor, glVertexAttribDivisorANGLE: _glVertexAttribDivisorANGLE, glVertexAttribDivisorARB: _glVertexAttribDivisorARB, glVertexAttribDivisorEXT: _glVertexAttribDivisorEXT, glVertexAttribDivisorNV: _glVertexAttribDivisorNV, glVertexAttribI4i: _glVertexAttribI4i, glVertexAttribI4iv: _glVertexAttribI4iv, glVertexAttribI4ui: _glVertexAttribI4ui, glVertexAttribI4uiv: _glVertexAttribI4uiv, glVertexAttribIPointer: _glVertexAttribIPointer, glVertexAttribPointer: _glVertexAttribPointer, glVertexPointer: _glVertexPointer, glViewport: _glViewport, glWaitSync: _glWaitSync, handle_next_result_js, hiwire_invalid_ref_js, is_comlink_proxy, js2python_convert, js2python_immutable_js, js2python_js, jslib_init_buffers_js, jslib_init_js, lineColor: _lineColor, lineRGBA: _lineRGBA, my_dict_converter, new_error, pixelRGBA: _pixelRGBA, proc_exit: _proc_exit, proxy_cache_get, proxy_cache_set, pyodide_js_init, pyproxy_AsPyObject, pyproxy_Check, pyproxy_new, pyproxy_new_ex, python2js__default_converter_js, python2js__eager_converter_js, python2js_custom__create_jscontext, random_get: _random_get, raw_call_js, rectangleColor: _rectangleColor, rectangleRGBA: _rectangleRGBA, restoreState, restore_stderr, rotozoomSurface: _rotozoomSurface, saveState, setNetworkCallback: _setNetworkCallback, set_pyodide_module, set_suspender, setprotoent: _setprotoent, stackAlloc: _stackAlloc, stackRestore: _stackRestore, stackSave: _stackSave, strptime: _strptime, strptime_l: _strptime_l, syncifyHandler, throw_no_gil, wrap_async_generator, wrap_generator, zoomSurface: _zoomSurface };\n function applySignatureConversions(wasmExports2) {\n wasmExports2 = Object.assign({}, wasmExports2);\n var makeWrapper_pp = (f2) => (a0) => f2(a0) >>> 0;\n var makeWrapper_p = (f2) => () => f2() >>> 0;\n var makeWrapper_pP = (f2) => (a0) => f2(a0) >>> 0;\n var makeWrapper_ppp = (f2) => (a0, a1) => f2(a0, a1) >>> 0;\n var makeWrapper_p_ = (f2) => (a0) => f2(a0) >>> 0;\n var makeWrapper_pppp = (f2) => (a0, a1, a2) => f2(a0, a1, a2) >>> 0;\n var makeWrapper_ppppp = (f2) => (a0, a1, a2, a3) => f2(a0, a1, a2, a3) >>> 0;\n wasmExports2["malloc"] = makeWrapper_pp(wasmExports2["malloc"]);\n wasmExports2["__errno_location"] = makeWrapper_p(wasmExports2["__errno_location"]);\n wasmExports2["sbrk"] = makeWrapper_pP(wasmExports2["sbrk"]);\n wasmExports2["calloc"] = makeWrapper_ppp(wasmExports2["calloc"]);\n wasmExports2["realloc"] = makeWrapper_ppp(wasmExports2["realloc"]);\n wasmExports2["emscripten_stack_get_base"] = makeWrapper_p(wasmExports2["emscripten_stack_get_base"]);\n wasmExports2["emscripten_stack_get_end"] = makeWrapper_p(wasmExports2["emscripten_stack_get_end"]);\n wasmExports2["strerror"] = makeWrapper_p_(wasmExports2["strerror"]);\n wasmExports2["pthread_self"] = makeWrapper_p(wasmExports2["pthread_self"]);\n wasmExports2["emscripten_builtin_malloc"] = makeWrapper_pp(wasmExports2["emscripten_builtin_malloc"]);\n wasmExports2["memcpy"] = makeWrapper_pppp(wasmExports2["memcpy"]);\n wasmExports2["_emscripten_find_dylib"] = makeWrapper_ppppp(wasmExports2["_emscripten_find_dylib"]);\n wasmExports2["emscripten_builtin_memalign"] = makeWrapper_ppp(wasmExports2["emscripten_builtin_memalign"]);\n wasmExports2["emscripten_stack_get_current"] = makeWrapper_p(wasmExports2["emscripten_stack_get_current"]);\n wasmExports2["emscripten_main_runtime_thread_id"] = makeWrapper_p(wasmExports2["emscripten_main_runtime_thread_id"]);\n wasmExports2["memalign"] = makeWrapper_ppp(wasmExports2["memalign"]);\n wasmExports2["emscripten_builtin_calloc"] = makeWrapper_ppp(wasmExports2["emscripten_builtin_calloc"]);\n wasmExports2["emscripten_get_sbrk_ptr"] = makeWrapper_p(wasmExports2["emscripten_get_sbrk_ptr"]);\n wasmExports2["_emscripten_stack_alloc"] = makeWrapper_pp(wasmExports2["_emscripten_stack_alloc"]);\n wasmExports2["__cxa_get_exception_ptr"] = makeWrapper_pp(wasmExports2["__cxa_get_exception_ptr"]);\n return wasmExports2;\n }\n function callMain(args2 = []) {\n var entryFunction = resolveGlobalSymbol("main").sym;\n if (!entryFunction) return;\n args2.unshift(thisProgram);\n var argc = args2.length;\n var argv = stackAlloc((argc + 1) * 4);\n var argv_ptr = argv;\n for (var arg2 of args2) {\n HEAPU32[argv_ptr >>> 2 >>> 0] = stringToUTF8OnStack(arg2);\n argv_ptr += 4;\n }\n HEAPU32[argv_ptr >>> 2 >>> 0] = 0;\n try {\n var ret = entryFunction(argc, argv);\n exitJS(ret, true);\n return ret;\n } catch (e) {\n return handleException(e);\n }\n }\n function run(args2 = arguments_) {\n if (runDependencies > 0) {\n dependenciesFulfilled = run;\n return;\n }\n preRun();\n if (runDependencies > 0) {\n dependenciesFulfilled = run;\n return;\n }\n function doRun() {\n Module["calledRun"] = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n readyPromiseResolve?.(Module);\n Module["onRuntimeInitialized"]?.();\n var noInitialRun = Module["noInitialRun"] || false;\n if (!noInitialRun) callMain(args2);\n postRun();\n }\n if (Module["setStatus"]) {\n Module["setStatus"]("Running...");\n setTimeout(() => {\n setTimeout(() => Module["setStatus"](""), 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n }\n var wasmExports;\n wasmExports = await createWasm();\n run();\n if (runtimeInitialized) {\n moduleRtn = Module;\n } else {\n moduleRtn = new Promise((resolve, reject) => {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n });\n }\n ;\n return moduleRtn;\n}\nvar pyodide_asm_default = _createPyodideModule;\n\n// src/paths.ts\nvar DEN_FOLDERS = ["/drop", "/out", "/work"];\n\n// src/page/worker.ts\nvar scope = self;\nvar py;\nvar runCode;\nvar pendingTasks;\nvar RUNNER = `\nimport asyncio\nfrom pyodide.code import eval_code_async\nasync def run(code, ns, collect):\n try:\n value = await eval_code_async(code, ns)\n return None if value is None else repr(value)\n finally:\n collect()\n me = asyncio.current_task()\n for task in asyncio.all_tasks():\n if task is not me:\n task.cancel()\ndef pending():\n return sum(1 for task in asyncio.all_tasks(asyncio.get_event_loop()) if not task.done())\n`;\nvar timers2 = /* @__PURE__ */ new Set();\nvar realSetTimeout = scope.setTimeout.bind(scope);\nvar realClearTimeout = scope.clearTimeout.bind(scope);\nvar realSetInterval = scope.setInterval.bind(scope);\nvar realClearInterval = scope.clearInterval.bind(scope);\nscope.setTimeout = ((fn, ms, ...args2) => {\n const id = realSetTimeout((...a) => {\n timers2.delete(id);\n fn(...a);\n }, ms, ...args2);\n timers2.add(id);\n return id;\n});\nscope.setInterval = ((fn, ms, ...args2) => {\n const id = realSetInterval(fn, ms, ...args2);\n timers2.add(id);\n return id;\n});\nscope.clearTimeout = ((id) => {\n timers2.delete(id);\n realClearTimeout(id);\n});\nscope.clearInterval = ((id) => {\n timers2.delete(id);\n realClearInterval(id);\n});\nasync function lingering() {\n for (let i2 = 0; i2 < 10; i2++) {\n if (pendingTasks() === 0 && timers2.size === 0) return false;\n await new Promise((done) => realSetTimeout(done, 20));\n }\n return true;\n}\nasync function load2(assets) {\n const started = performance.now();\n const realFetch = scope.fetch;\n scope.fetch = (async (url2) => {\n const name2 = String(url2).split("/").pop();\n if (name2 === "pyodide.asm.wasm") return new Response(assets.wasm, { headers: { "content-type": "application/wasm" } });\n if (name2 === "python_stdlib.zip") return new Response(assets.stdlib);\n throw new TypeError(`foxden: the worker does not fetch ${String(url2)}`);\n });\n try {\n py = await dt({ indexURL: "https://foxden.invalid/", createPyodideModule: pyodide_asm_default, lockFileContents: assets.lock, fullStdLib: false });\n } finally {\n scope.fetch = realFetch;\n }\n const helper = py.toPy({});\n py.runPython(RUNNER, { globals: helper });\n runCode = helper.get("run");\n pendingTasks = helper.get("pending");\n for (const folder of DEN_FOLDERS) {\n py.FS.mkdirTree(folder);\n py.FS.mount(py.FS.filesystems.MEMFS, {}, folder);\n }\n return performance.now() - started;\n}\nfunction walk(dir, out2) {\n for (const name2 of py.FS.readdir(dir)) {\n if (name2 === "." || name2 === "..") continue;\n const path = `${dir}/${name2}`;\n const mode = py.FS.stat(path).mode;\n if (py.FS.isDir(mode)) walk(path, out2);\n else if (py.FS.isFile(mode)) out2.set(path, py.FS.readFile(path));\n }\n}\nfunction sink(max) {\n const decoder = new TextDecoder();\n const state = { text: "", dropped: 0 };\n return {\n state,\n write(buffer) {\n const room = max - state.text.length;\n const chunk = decoder.decode(buffer, { stream: true });\n if (room > 0) state.text += chunk.slice(0, room);\n state.dropped += Math.max(0, chunk.length - Math.max(room, 0));\n return buffer.length;\n }\n };\n}\nvar same = (a, b2) => a.length === b2.length && a.every((x2, i2) => x2 === b2[i2]);\nasync function run2(req) {\n const started = performance.now();\n py.FS.chdir("/");\n for (const folder of DEN_FOLDERS) {\n py.FS.unmount(folder);\n py.FS.mount(py.FS.filesystems.MEMFS, {}, folder);\n }\n const before = new Map(req.files);\n for (const [path, body2] of req.files) {\n py.FS.mkdirTree(path.slice(0, path.lastIndexOf("/")));\n py.FS.writeFile(path, body2);\n }\n py.FS.chdir("/work");\n const out2 = sink(req.maxOutputBytes);\n const err2 = sink(req.maxOutputBytes);\n py.setStdout(out2);\n py.setStderr(err2);\n let result = null;\n let error = null;\n const after = /* @__PURE__ */ new Map();\n let collected = false;\n const collect = () => {\n collected = true;\n for (const folder of DEN_FOLDERS) walk(folder, after);\n };\n try {\n result = await runCode(req.code, py.globals, collect) ?? null;\n } catch (e) {\n const kind = e instanceof Error && e.name === "PythonError" ? "python" : "crashed";\n error = { kind, message: e instanceof Error ? e.message : String(e) };\n }\n if (!collected) collect();\n const restart = error?.kind !== "crashed" && await lingering();\n if (restart) err2.write(new TextEncoder().encode("\\nfoxden: work that the code started was still running after the run, so the worker restarted. Python variables are lost; files stay.\\n"));\n const files = [];\n for (const [path, body2] of after) if (!before.has(path) || !same(before.get(path), body2)) files.push([path, body2]);\n for (const path of before.keys()) if (!after.has(path)) files.push([path, null]);\n const truncated = out2.state.dropped > 0 || err2.state.dropped > 0;\n const reply = { id: req.id, stdout: out2.state.text, stderr: err2.state.text, result, error, truncated, files, durationMs: performance.now() - started };\n return { reply, restart };\n}\nscope.addEventListener("message", (e) => {\n const m = e.data;\n if (m.t === "load") {\n load2(m.assets).then(\n (loadMs) => scope.postMessage({ t: "loaded", loadMs }),\n (error) => scope.postMessage({ t: "load-failed", message: error instanceof Error ? error.message : String(error) })\n );\n } else if (m.t === "run") {\n void run2(m.request).then(({ reply, restart }) => scope.postMessage({ t: "reply", reply, restart }));\n }\n});\n'], { type: "text/javascript" }));
66
+ worker = new Worker(url, { type: "module" });
67
+ const loading = new Promise((resolve, reject) => {
68
+ worker.addEventListener("message", (e) => {
69
+ const m = e.data;
70
+ if (m?.t === "loaded") resolve(m.loadMs);
71
+ else if (m?.t === "load-failed") reject(new Error(m.message));
72
+ else if (m?.t === "reply" && parseDenMessage({ t: "reply", v: 1, reply: m.reply })) {
73
+ finish(m.reply);
74
+ if (m.reply.error?.kind === "crashed" || m.restart) restart();
75
+ }
76
+ });
77
+ worker.addEventListener("error", (e) => {
78
+ e.preventDefault();
79
+ const message = `The Python worker stopped: ${e.message || "unknown error"}`;
80
+ reject(new Error(message));
81
+ if (current) finish(failed(current.id, "crashed", message));
82
+ restart();
83
+ });
84
+ });
85
+ worker.postMessage({ t: "load", assets });
86
+ void loading.finally(() => URL.revokeObjectURL(url)).catch(() => {
87
+ });
88
+ return loading;
89
+ }
90
+ function restart() {
91
+ worker.terminate();
92
+ ready = spawn();
93
+ ready.catch(() => {
94
+ });
95
+ }
96
+ async function run(request) {
97
+ try {
98
+ await ready;
99
+ } catch (error) {
100
+ return failed(request.id, "crashed", `Pyodide did not load again: ${error.message}`);
101
+ }
102
+ return new Promise((done) => {
103
+ const timer = setTimeout(() => {
104
+ finish(failed(request.id, "timeout", `The code ran for more than ${request.timeoutMs} ms and was stopped.`));
105
+ restart();
106
+ }, request.timeoutMs);
107
+ current = { id: request.id, timer, done };
108
+ worker.postMessage({ t: "run", request });
109
+ });
110
+ }
111
+ window.addEventListener("message", (e) => {
112
+ const data = e.data;
113
+ if (port || e.source !== window.parent || data?.t !== "init" || data.v !== 1 || !e.ports[0]) return;
114
+ port = e.ports[0];
115
+ if (self.origin !== "null" || extensionApi) {
116
+ send({ t: "load-error", v: 1, message: `not isolated: the den page has origin ${self.origin} and extension API ${extensionApi}, so it refused to start.` });
117
+ return;
118
+ }
119
+ const a = data.assets;
120
+ if (!(a?.wasm instanceof ArrayBuffer) || !(a.stdlib instanceof ArrayBuffer)) {
121
+ send({ t: "load-error", v: 1, message: "The init message has no Pyodide files." });
122
+ return;
123
+ }
124
+ assets = { wasm: a.wasm, stdlib: a.stdlib, lock: a.lock };
125
+ ready = spawn();
126
+ ready.then(
127
+ (loadMs) => send({ t: "ready", v: 1, origin: self.origin, extensionApi, loadMs }),
128
+ (error) => send({ t: "load-error", v: 1, message: `Pyodide did not load: ${error.message}` })
129
+ );
130
+ port.addEventListener("message", (m) => {
131
+ const msg = parseHostMessage(m.data);
132
+ if (!msg) return;
133
+ const next = queue.then(() => run(msg.request)).then((reply) => send({ t: "reply", v: 1, reply }));
134
+ queue = next.catch(() => {
135
+ });
136
+ });
137
+ port.start();
138
+ });
139
+ })();