@basthon/browser-bundle 0.76.7 → 0.76.8
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.
- package/lib/{0.76.7 → 0.76.8}/python3/basthon.tar +0 -0
- package/lib/{0.76.7 → 0.76.8}/python3/modules/graphviz-0.0.1-py3-none-any.whl +0 -0
- package/lib/{0.76.7 → 0.76.8}/python3/modules/ipython-0.0.1-py3-none-any.whl +0 -0
- package/lib/{0.76.7 → 0.76.8}/python3/modules/p5-0.0.1-py3-none-any.whl +0 -0
- package/lib/{0.76.7 → 0.76.8}/python3/modules/proj4py-0.0.1-py3-none-any.whl +0 -0
- package/lib/{0.76.7 → 0.76.8}/python3/modules/rcviz-0.0.1-py3-none-any.whl +0 -0
- package/lib/{0.76.7 → 0.76.8}/python3/modules/requests-0.0.1-py3-none-any.whl +0 -0
- package/lib/{0.76.7 → 0.76.8}/python3/modules/turtle-0.0.1-py3-none-any.whl +0 -0
- package/lib/{0.76.7 → 0.76.8}/python3/modules/tutor-0.0.1-py3-none-any.whl +0 -0
- package/lib/{0.76.7 → 0.76.8}/python3/pyodide-lock.json +1 -1
- package/lib/{4d81e8d193751fb4316a.wasm → c621a8b7eb8496a5e6a6.wasm} +0 -0
- package/lib/kernel-base_lib_commons_js-kernel-base_lib_version_js-kernel-echo_lib_index_js.js +1 -1
- package/lib/kernel-base_lib_commons_js-kernel-base_lib_version_js-kernel-echo_lib_index_js.js.map +1 -1
- package/lib/kernel-base_lib_worker_kernel-worker_js-_e0870.js +1 -1
- package/lib/kernel-base_lib_worker_kernel-worker_js-_e0870.js.map +1 -1
- package/lib/kernel-base_lib_worker_kernel-worker_js-_e0871.js +1 -1
- package/lib/kernel-base_lib_worker_kernel-worker_js-_e0871.js.map +1 -1
- package/lib/vendors-node_modules_basthon_xcas-wasm_src_index_js.js +1 -1
- package/lib/vendors-node_modules_basthon_xcas-wasm_src_index_js.js.map +1 -1
- package/package.json +2 -2
- /package/lib/{0.76.7 → 0.76.8}/python3/modules/extern/tutor/053e308b29fa94c9768c.png +0 -0
- /package/lib/{0.76.7 → 0.76.8}/python3/modules/extern/tutor/43557192d14bec1ce5a1.png +0 -0
- /package/lib/{0.76.7 → 0.76.8}/python3/modules/extern/tutor/62dc93aaa1f4a5ab9654.png +0 -0
- /package/lib/{0.76.7 → 0.76.8}/python3/modules/extern/tutor/a3c784d737c50501dfcd.png +0 -0
- /package/lib/{0.76.7 → 0.76.8}/python3/modules/extern/tutor/a3fa2b0f6d2467fdac56.png +0 -0
- /package/lib/{0.76.7 → 0.76.8}/python3/modules/extern/tutor/bundle.js +0 -0
- /package/lib/{0.76.7 → 0.76.8}/python3/modules/extern/tutor/bundle.js.LICENSE.txt +0 -0
- /package/lib/{0.76.7 → 0.76.8}/python3/modules/extern/tutor/bundle.js.map +0 -0
- /package/lib/{0.76.7 → 0.76.8}/python3/modules/extern/tutor/f997956ae061f27f24f5.png +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vendors-node_modules_basthon_xcas-wasm_src_index_js.js","mappings":"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EAASlyB,EAAQmyB,EACvC,EAshCEuW,GArhCF,SAAkBxgE,GAChB,OAAQA,GACN,KAAK,GAiIL,KAAK,GACH,OAAO,MAhIT,KAAK,GAGH,OADcrS,EAAO1H,OAnlZX,MAqlZZ,KAAK,IACL,KAAK,IACL,KAAK,GACL,KAAK,IACL,KAAK,IACL,KAAK,GACL,KAAK,IACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,IACL,KAAK,EACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,IACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACH,OAAO,OACT,KAAK,GACH,OAAO,EACT,KAAK,GACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,GACH,OAAQ,EACV,KAAK,IACL,KAAK,IACL,KAAK,EACL,KAAK,IACL,KAAK,EACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,GACL,KAAK,GACH,OAAO,EACT,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,EACH,OAAO,KACT,KAAK,GACL,KAAK,GACL,KAAK,GACH,OAAO,GACT,KAAK,GACL,KAAK,GACL,KAAK,GACH,OAAO,WACT,KAAK,G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","sources":["webpack://@basthon/browser-bundle/../../node_modules/@basthon/xcas-wasm/src/index.js"],"sourcesContent":["var _emscripten_glEnable,\n _emscripten_glDisable,\n _emscripten_glIsEnabled,\n _emscripten_glGetBooleanv,\n _emscripten_glGetIntegerv,\n _emscripten_glGetString,\n _emscripten_glCreateShader,\n _emscripten_glShaderSource,\n _emscripten_glCompileShader,\n _emscripten_glAttachShader,\n _emscripten_glDetachShader,\n _emscripten_glUseProgram,\n _emscripten_glDeleteProgram,\n _emscripten_glBindAttribLocation,\n _emscripten_glLinkProgram,\n _emscripten_glBindBuffer,\n _emscripten_glGetFloatv,\n _emscripten_glHint,\n _emscripten_glEnableVertexAttribArray,\n _emscripten_glDisableVertexAttribArray,\n _emscripten_glVertexAttribPointer,\n _emscripten_glActiveTexture,\n _emscripten_glTexEnvf,\n _emscripten_glTexEnvi,\n _emscripten_glTexEnvfv,\n _emscripten_glGetIntegerv,\n _glTexEnvf,\n _glTexEnvi,\n _glTexEnvfv,\n _glGetTexEnviv,\n _glGetTexEnvfv;\n\nvar UI = {\n disable3d: 0, // -1==3d not supported\n tableaucm: 0, // 1 if codemirror focused\n debug: 0,\n Datestart: Date.now(),\n ready: false,\n colorinit: false,\n usemathjax: false,\n prettyprint: true,\n histcount: 0,\n selection: \"\",\n langue: -1,\n calc: 1, // 1 KhiCAS, 2 Numworks, 3 TI Nspire CX\n xwaspy_shift: 33, // must be >32 for space encoding, and <=35 for a..z encoding\n gr2d_ncanvas: 0,\n initconfigstring: \"\",\n python_mode: 0,\n python_indent: 4,\n warnpy: true, // set to false if you do not want Python compat warning\n};\n\n// @basthon\n// innerWidth is used by giac in gen.cc for svg generation\n// in the emscripten compilation context but is not available\n// in a webworker context so ... monkey patch\nwindow.innerWidth ??= 1080;\n\nvar Module = typeof Module !== \"undefined\" ? Module : {};\n// @basthon\nModule[\"print\"] = (...args) => console.log(...args);\nModule[\"printErr\"] = (...args) => console.error(...args);\nvar moduleOverrides = {};\nvar key;\nfor (key in Module) {\n if (Module.hasOwnProperty(key)) {\n moduleOverrides[key] = Module[key];\n }\n}\nvar arguments_ = [];\nvar thisProgram = \"./this.program\";\nvar quit_ = function (status, toThrow) {\n throw toThrow;\n};\nvar ENVIRONMENT_IS_WEB = false;\nvar ENVIRONMENT_IS_WORKER = false;\nvar ENVIRONMENT_IS_NODE = false;\nvar ENVIRONMENT_HAS_NODE = false;\nvar ENVIRONMENT_IS_SHELL = false;\nENVIRONMENT_IS_WEB = typeof window === \"object\";\nENVIRONMENT_IS_WORKER = typeof importScripts === \"function\";\nENVIRONMENT_HAS_NODE =\n typeof process === \"object\" &&\n typeof process.versions === \"object\" &&\n typeof process.versions.node === \"string\";\nENVIRONMENT_IS_NODE =\n ENVIRONMENT_HAS_NODE && !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER;\nENVIRONMENT_IS_SHELL =\n !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;\nif (Module[\"ENVIRONMENT\"]) {\n throw new Error(\n \"Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)\",\n );\n}\nvar scriptDirectory = \"\";\nfunction locateFile(path) {\n if (Module[\"locateFile\"]) {\n return Module[\"locateFile\"](path, scriptDirectory);\n }\n return path;\n}\nvar read_, readAsync, readBinary, setWindowTitle;\nif (ENVIRONMENT_IS_NODE) {\n scriptDirectory = __dirname + \"/\";\n var nodeFS;\n var nodePath;\n read_ = function shell_read(filename, binary) {\n var ret;\n ret = tryParseAsDataURI(filename);\n if (!ret) {\n if (!nodeFS) nodeFS = require(\"fs\");\n if (!nodePath) nodePath = require(\"path\");\n filename = nodePath[\"normalize\"](filename);\n ret = nodeFS[\"readFileSync\"](filename);\n }\n return binary ? ret : ret.toString();\n };\n readBinary = function readBinary(filename) {\n var ret = read_(filename, true);\n if (!ret.buffer) {\n ret = new Uint8Array(ret);\n }\n assert(ret.buffer);\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 if (typeof module !== \"undefined\") {\n module[\"exports\"] = Module;\n }\n process[\"on\"](\"uncaughtException\", function (ex) {\n if (!(ex instanceof ExitStatus)) {\n throw ex;\n }\n });\n process[\"on\"](\"unhandledRejection\", abort);\n quit_ = function (status) {\n process[\"exit\"](status);\n };\n Module[\"inspect\"] = function () {\n return \"[Emscripten Module object]\";\n };\n} else if (ENVIRONMENT_IS_SHELL) {\n if (typeof read != \"undefined\") {\n read_ = function shell_read(f) {\n var data = tryParseAsDataURI(f);\n if (data) {\n return intArrayToString(data);\n }\n return read(f);\n };\n }\n readBinary = function readBinary(f) {\n var data;\n data = tryParseAsDataURI(f);\n if (data) {\n return data;\n }\n if (typeof readbuffer === \"function\") {\n return new Uint8Array(readbuffer(f));\n }\n data = read(f, \"binary\");\n assert(typeof data === \"object\");\n return data;\n };\n if (typeof scriptArgs != \"undefined\") {\n arguments_ = scriptArgs;\n } else if (typeof arguments != \"undefined\") {\n arguments_ = arguments;\n }\n if (typeof quit === \"function\") {\n quit_ = function (status) {\n quit(status);\n };\n }\n if (typeof print !== \"undefined\") {\n if (typeof console === \"undefined\") console = {};\n console.log = print;\n console.warn = console.error =\n typeof printErr !== \"undefined\" ? printErr : print;\n }\n} else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) {\n scriptDirectory = self.location.href;\n } else if (document.currentScript) {\n scriptDirectory = document.currentScript.src;\n }\n if (scriptDirectory.indexOf(\"blob:\") !== 0) {\n scriptDirectory = scriptDirectory.substr(\n 0,\n scriptDirectory.lastIndexOf(\"/\") + 1,\n );\n } else {\n scriptDirectory = \"\";\n }\n read_ = function shell_read(url) {\n try {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n } catch (err) {\n var data = tryParseAsDataURI(url);\n if (data) {\n return intArrayToString(data);\n }\n throw err;\n }\n };\n if (ENVIRONMENT_IS_WORKER) {\n readBinary = function readBinary(url) {\n try {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n } catch (err) {\n var data = tryParseAsDataURI(url);\n if (data) {\n return data;\n }\n throw err;\n }\n };\n }\n readAsync = function readAsync(url, onload, onerror) {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = function xhr_onload() {\n if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) {\n onload(xhr.response);\n return;\n }\n var data = tryParseAsDataURI(url);\n if (data) {\n onload(data.buffer);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n setWindowTitle = function (title) {\n document.title = title;\n };\n} else {\n throw new Error(\"environment detection error\");\n}\nvar out = Module[\"print\"] || console.log.bind(console);\nvar err = Module[\"printErr\"] || console.warn.bind(console);\nfor (key in moduleOverrides) {\n if (moduleOverrides.hasOwnProperty(key)) {\n Module[key] = moduleOverrides[key];\n }\n}\nmoduleOverrides = null;\nif (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\nif (!Object.getOwnPropertyDescriptor(Module, \"arguments\"))\n Object.defineProperty(Module, \"arguments\", {\n get: function () {\n abort(\"Module.arguments has been replaced with plain arguments_\");\n },\n });\nif (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\nif (!Object.getOwnPropertyDescriptor(Module, \"thisProgram\"))\n Object.defineProperty(Module, \"thisProgram\", {\n get: function () {\n abort(\"Module.thisProgram has been replaced with plain thisProgram\");\n },\n });\nif (Module[\"quit\"]) quit_ = Module[\"quit\"];\nif (!Object.getOwnPropertyDescriptor(Module, \"quit\"))\n Object.defineProperty(Module, \"quit\", {\n get: function () {\n abort(\"Module.quit has been replaced with plain quit_\");\n },\n });\nassert(\n typeof Module[\"memoryInitializerPrefixURL\"] === \"undefined\",\n \"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead\",\n);\nassert(\n typeof Module[\"pthreadMainPrefixURL\"] === \"undefined\",\n \"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead\",\n);\nassert(\n typeof Module[\"cdInitializerPrefixURL\"] === \"undefined\",\n \"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead\",\n);\nassert(\n typeof Module[\"filePackagePrefixURL\"] === \"undefined\",\n \"Module.filePackagePrefixURL option was removed, use Module.locateFile instead\",\n);\nassert(\n typeof Module[\"read\"] === \"undefined\",\n \"Module.read option was removed (modify read_ in JS)\",\n);\nassert(\n typeof Module[\"readAsync\"] === \"undefined\",\n \"Module.readAsync option was removed (modify readAsync in JS)\",\n);\nassert(\n typeof Module[\"readBinary\"] === \"undefined\",\n \"Module.readBinary option was removed (modify readBinary in JS)\",\n);\nassert(\n typeof Module[\"setWindowTitle\"] === \"undefined\",\n \"Module.setWindowTitle option was removed (modify setWindowTitle in JS)\",\n);\nif (!Object.getOwnPropertyDescriptor(Module, \"read\"))\n Object.defineProperty(Module, \"read\", {\n get: function () {\n abort(\"Module.read has been replaced with plain read_\");\n },\n });\nif (!Object.getOwnPropertyDescriptor(Module, \"readAsync\"))\n Object.defineProperty(Module, \"readAsync\", {\n get: function () {\n abort(\"Module.readAsync has been replaced with plain readAsync\");\n },\n });\nif (!Object.getOwnPropertyDescriptor(Module, \"readBinary\"))\n Object.defineProperty(Module, \"readBinary\", {\n get: function () {\n abort(\"Module.readBinary has been replaced with plain readBinary\");\n },\n });\nstackSave =\n stackRestore =\n stackAlloc =\n function () {\n abort(\n \"cannot use the stack before compiled code is ready to run, and has provided stack access\",\n );\n };\nfunction dynamicAlloc(size) {\n assert(DYNAMICTOP_PTR);\n var ret = HEAP32[DYNAMICTOP_PTR >> 2];\n var end = (ret + size + 15) & -16;\n if (end > _emscripten_get_heap_size()) {\n abort(\n \"failure to dynamicAlloc - memory growth etc. is not supported there, call malloc/sbrk directly\",\n );\n }\n HEAP32[DYNAMICTOP_PTR >> 2] = end;\n return ret;\n}\nfunction getNativeTypeSize(type) {\n switch (type) {\n case \"i1\":\n case \"i8\":\n return 1;\n case \"i16\":\n return 2;\n case \"i32\":\n return 4;\n case \"i64\":\n return 8;\n case \"float\":\n return 4;\n case \"double\":\n return 8;\n default: {\n if (type[type.length - 1] === \"*\") {\n return 4;\n } else if (type[0] === \"i\") {\n var bits = parseInt(type.substr(1));\n assert(\n bits % 8 === 0,\n \"getNativeTypeSize invalid bits \" + bits + \", type \" + type,\n );\n return bits / 8;\n } else {\n return 0;\n }\n }\n }\n}\nfunction warnOnce(text) {\n if (!warnOnce.shown) warnOnce.shown = {};\n if (!warnOnce.shown[text]) {\n warnOnce.shown[text] = 1;\n err(text);\n }\n}\nvar asm2wasmImports = {\n \"f64-rem\": function (x, y) {\n return x % y;\n },\n debugger: function () {\n debugger;\n },\n};\nvar functionPointers = new Array(0);\nvar tempRet0 = 0;\nvar setTempRet0 = function (value) {\n tempRet0 = value;\n};\nvar getTempRet0 = function () {\n return tempRet0;\n};\nvar wasmBinary;\nif (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\nif (!Object.getOwnPropertyDescriptor(Module, \"wasmBinary\"))\n Object.defineProperty(Module, \"wasmBinary\", {\n get: function () {\n abort(\"Module.wasmBinary has been replaced with plain wasmBinary\");\n },\n });\nif (typeof WebAssembly !== \"object\") {\n abort(\n \"No WebAssembly support found. Build with -s WASM=0 to target JavaScript instead.\",\n );\n}\nfunction setValue(ptr, value, type, noSafe) {\n type = type || \"i8\";\n if (type.charAt(type.length - 1) === \"*\") type = \"i32\";\n switch (type) {\n case \"i1\":\n HEAP8[ptr >> 0] = value;\n break;\n case \"i8\":\n HEAP8[ptr >> 0] = value;\n break;\n case \"i16\":\n HEAP16[ptr >> 1] = value;\n break;\n case \"i32\":\n HEAP32[ptr >> 2] = value;\n break;\n case \"i64\":\n (tempI64 = [\n value >>> 0,\n ((tempDouble = value),\n +Math_abs(tempDouble) >= 1\n ? tempDouble > 0\n ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) |\n 0) >>>\n 0\n : ~~+Math_ceil(\n (tempDouble - +(~~tempDouble >>> 0)) / 4294967296,\n ) >>> 0\n : 0),\n ]),\n (HEAP32[ptr >> 2] = tempI64[0]),\n (HEAP32[(ptr + 4) >> 2] = tempI64[1]);\n break;\n case \"float\":\n HEAPF32[ptr >> 2] = value;\n break;\n case \"double\":\n HEAPF64[ptr >> 3] = value;\n break;\n default:\n abort(\"invalid type for setValue: \" + type);\n }\n}\nvar wasmMemory;\nvar wasmTable;\nvar ABORT = false;\nvar EXITSTATUS = 0;\nfunction assert(condition, text) {\n if (!condition) {\n abort(\"Assertion failed: \" + text);\n }\n}\nfunction getCFunc(ident) {\n var func = Module[\"_\" + ident];\n assert(\n func,\n \"Cannot call unknown function \" + ident + \", make sure it is exported\",\n );\n return func;\n}\nfunction ccall(ident, returnType, argTypes, args, opts) {\n var toC = {\n string: function (str) {\n var ret = 0;\n if (str !== null && str !== undefined && str !== 0) {\n var len = (str.length << 2) + 1;\n ret = stackAlloc(len);\n stringToUTF8(str, ret, len);\n }\n return ret;\n },\n array: function (arr) {\n var ret = stackAlloc(arr.length);\n writeArrayToMemory(arr, ret);\n return ret;\n },\n };\n function convertReturnValue(ret) {\n if (returnType === \"string\") return UTF8ToString(ret);\n if (returnType === \"boolean\") return Boolean(ret);\n return ret;\n }\n var func = getCFunc(ident);\n var cArgs = [];\n var stack = 0;\n assert(returnType !== \"array\", 'Return type should not be \"array\".');\n if (args) {\n for (var i = 0; i < args.length; i++) {\n var converter = toC[argTypes[i]];\n if (converter) {\n if (stack === 0) stack = stackSave();\n cArgs[i] = converter(args[i]);\n } else {\n cArgs[i] = args[i];\n }\n }\n }\n var ret = func.apply(null, cArgs);\n assert(\n !(opts && opts.async),\n \"async call is only supported with Emterpretify for now, see #9029\",\n );\n ret = convertReturnValue(ret);\n if (stack !== 0) stackRestore(stack);\n return ret;\n}\nfunction cwrap(ident, returnType, argTypes, opts) {\n return function () {\n return ccall(ident, returnType, argTypes, arguments, opts);\n };\n}\nvar ALLOC_NORMAL = 0;\nvar ALLOC_NONE = 3;\nfunction allocate(slab, types, allocator, ptr) {\n var zeroinit, size;\n if (typeof slab === \"number\") {\n zeroinit = true;\n size = slab;\n } else {\n zeroinit = false;\n size = slab.length;\n }\n var singleType = typeof types === \"string\" ? types : null;\n var ret;\n if (allocator == ALLOC_NONE) {\n ret = ptr;\n } else {\n ret = [_malloc, stackAlloc, dynamicAlloc][allocator](\n Math.max(size, singleType ? 1 : types.length),\n );\n }\n if (zeroinit) {\n var stop;\n ptr = ret;\n assert((ret & 3) == 0);\n stop = ret + (size & ~3);\n for (; ptr < stop; ptr += 4) {\n HEAP32[ptr >> 2] = 0;\n }\n stop = ret + size;\n while (ptr < stop) {\n HEAP8[ptr++ >> 0] = 0;\n }\n return ret;\n }\n if (singleType === \"i8\") {\n if (slab.subarray || slab.slice) {\n HEAPU8.set(slab, ret);\n } else {\n HEAPU8.set(new Uint8Array(slab), ret);\n }\n return ret;\n }\n var i = 0,\n type,\n typeSize,\n previousType;\n while (i < size) {\n var curr = slab[i];\n type = singleType || types[i];\n if (type === 0) {\n i++;\n continue;\n }\n assert(type, \"Must know what type to store in allocate!\");\n if (type == \"i64\") type = \"i32\";\n setValue(ret + i, curr, type);\n if (previousType !== type) {\n typeSize = getNativeTypeSize(type);\n previousType = type;\n }\n i += typeSize;\n }\n return ret;\n}\nfunction getMemory(size) {\n if (!runtimeInitialized) return dynamicAlloc(size);\n return _malloc(size);\n}\nfunction Pointer_stringify(ptr, length) {\n abort(\n \"this function has been removed - you should use UTF8ToString(ptr, maxBytesToRead) instead!\",\n );\n}\nvar UTF8Decoder =\n typeof TextDecoder !== \"undefined\" ? new TextDecoder(\"utf8\") : undefined;\nfunction UTF8ArrayToString(u8Array, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while (u8Array[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n if (endPtr - idx > 16 && u8Array.subarray && UTF8Decoder) {\n return UTF8Decoder.decode(u8Array.subarray(idx, endPtr));\n } else {\n var str = \"\";\n while (idx < endPtr) {\n var u0 = u8Array[idx++];\n if (!(u0 & 128)) {\n str += String.fromCharCode(u0);\n continue;\n }\n var u1 = u8Array[idx++] & 63;\n if ((u0 & 224) == 192) {\n str += String.fromCharCode(((u0 & 31) << 6) | u1);\n continue;\n }\n var u2 = u8Array[idx++] & 63;\n if ((u0 & 240) == 224) {\n u0 = ((u0 & 15) << 12) | (u1 << 6) | u2;\n } else {\n if ((u0 & 248) != 240)\n warnOnce(\n \"Invalid UTF-8 leading byte 0x\" +\n u0.toString(16) +\n \" encountered when deserializing a UTF-8 string on the asm.js/wasm heap to a JS string!\",\n );\n u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (u8Array[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 }\n return str;\n}\nfunction UTF8ToString(ptr, maxBytesToRead) {\n return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : \"\";\n}\nfunction stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = (65536 + ((u & 1023) << 10)) | (u1 & 1023);\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n outU8Array[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n outU8Array[outIdx++] = 192 | (u >> 6);\n outU8Array[outIdx++] = 128 | (u & 63);\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n outU8Array[outIdx++] = 224 | (u >> 12);\n outU8Array[outIdx++] = 128 | ((u >> 6) & 63);\n outU8Array[outIdx++] = 128 | (u & 63);\n } else {\n if (outIdx + 3 >= endIdx) break;\n if (u >= 2097152)\n warnOnce(\n \"Invalid Unicode code point 0x\" +\n u.toString(16) +\n \" encountered when serializing a JS string to an UTF-8 string on the asm.js/wasm heap! (Valid unicode code points should be in range 0-0x1FFFFF).\",\n );\n outU8Array[outIdx++] = 240 | (u >> 18);\n outU8Array[outIdx++] = 128 | ((u >> 12) & 63);\n outU8Array[outIdx++] = 128 | ((u >> 6) & 63);\n outU8Array[outIdx++] = 128 | (u & 63);\n }\n }\n outU8Array[outIdx] = 0;\n return outIdx - startIdx;\n}\nfunction stringToUTF8(str, outPtr, maxBytesToWrite) {\n assert(\n typeof maxBytesToWrite == \"number\",\n \"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!\",\n );\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n}\nfunction lengthBytesUTF8(str) {\n var len = 0;\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343)\n u = (65536 + ((u & 1023) << 10)) | (str.charCodeAt(++i) & 1023);\n if (u <= 127) ++len;\n else if (u <= 2047) len += 2;\n else if (u <= 65535) len += 3;\n else len += 4;\n }\n return len;\n}\nvar UTF16Decoder =\n typeof TextDecoder !== \"undefined\" ? new TextDecoder(\"utf-16le\") : undefined;\nfunction allocateUTF8(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = _malloc(size);\n if (ret) stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n}\nfunction writeStringToMemory(string, buffer, dontAddNull) {\n warnOnce(\n \"writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!\",\n );\n var lastChar, end;\n if (dontAddNull) {\n end = buffer + lengthBytesUTF8(string);\n lastChar = HEAP8[end];\n }\n stringToUTF8(string, buffer, Infinity);\n if (dontAddNull) HEAP8[end] = lastChar;\n}\nfunction writeArrayToMemory(array, buffer) {\n assert(\n array.length >= 0,\n \"writeArrayToMemory array must have a length (should be an array or typed array)\",\n );\n HEAP8.set(array, buffer);\n}\nfunction writeAsciiToMemory(str, buffer, dontAddNull) {\n for (var i = 0; i < str.length; ++i) {\n assert((str.charCodeAt(i) === str.charCodeAt(i)) & 255);\n HEAP8[buffer++ >> 0] = str.charCodeAt(i);\n }\n if (!dontAddNull) HEAP8[buffer >> 0] = 0;\n}\nvar PAGE_SIZE = 16384;\nvar WASM_PAGE_SIZE = 65536;\nvar buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\nfunction updateGlobalBufferViews() {\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(buffer);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(buffer);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(buffer);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(buffer);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(buffer);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(buffer);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(buffer);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(buffer);\n}\nvar STACK_BASE = 5313344,\n STACK_MAX = 10556224,\n DYNAMIC_BASE = 10556224,\n DYNAMICTOP_PTR = 5313312;\nassert(STACK_BASE % 16 === 0, \"stack must start aligned\");\nassert(DYNAMIC_BASE % 16 === 0, \"heap must start aligned\");\nvar TOTAL_STACK = 5242880;\nif (Module[\"TOTAL_STACK\"])\n assert(\n TOTAL_STACK === Module[\"TOTAL_STACK\"],\n \"the stack size can no longer be determined at runtime\",\n );\nvar INITIAL_TOTAL_MEMORY = Module[\"TOTAL_MEMORY\"] || 268435456;\nif (!Object.getOwnPropertyDescriptor(Module, \"TOTAL_MEMORY\"))\n Object.defineProperty(Module, \"TOTAL_MEMORY\", {\n get: function () {\n abort(\n \"Module.TOTAL_MEMORY has been replaced with plain INITIAL_TOTAL_MEMORY\",\n );\n },\n });\nassert(\n INITIAL_TOTAL_MEMORY >= TOTAL_STACK,\n \"TOTAL_MEMORY should be larger than TOTAL_STACK, was \" +\n INITIAL_TOTAL_MEMORY +\n \"! (TOTAL_STACK=\" +\n TOTAL_STACK +\n \")\",\n);\nassert(\n typeof Int32Array !== \"undefined\" &&\n typeof Float64Array !== \"undefined\" &&\n Int32Array.prototype.subarray !== undefined &&\n Int32Array.prototype.set !== undefined,\n \"JS engine does not provide full typed array support\",\n);\nif (Module[\"wasmMemory\"]) {\n wasmMemory = Module[\"wasmMemory\"];\n} else {\n wasmMemory = new WebAssembly.Memory({\n initial: INITIAL_TOTAL_MEMORY / WASM_PAGE_SIZE,\n maximum: INITIAL_TOTAL_MEMORY / WASM_PAGE_SIZE,\n });\n}\nif (wasmMemory) {\n buffer = wasmMemory.buffer;\n}\nINITIAL_TOTAL_MEMORY = buffer.byteLength;\nassert(INITIAL_TOTAL_MEMORY % WASM_PAGE_SIZE === 0);\nupdateGlobalBufferViews();\nHEAP32[DYNAMICTOP_PTR >> 2] = DYNAMIC_BASE;\nfunction writeStackCookie() {\n assert((STACK_MAX & 3) == 0);\n HEAPU32[(STACK_MAX >> 2) - 1] = 34821223;\n HEAPU32[(STACK_MAX >> 2) - 2] = 2310721022;\n}\nfunction checkStackCookie() {\n var cookie1 = HEAPU32[(STACK_MAX >> 2) - 1];\n var cookie2 = HEAPU32[(STACK_MAX >> 2) - 2];\n if (cookie1 != 34821223 || cookie2 != 2310721022) {\n abort(\n \"Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x02135467, but received 0x\" +\n cookie2.toString(16) +\n \" \" +\n cookie1.toString(16),\n );\n }\n if (HEAP32[0] !== 1668509029)\n abort(\n \"Runtime error: The application has corrupted its heap memory area (address zero)!\",\n );\n}\nfunction abortStackOverflow(allocSize) {\n abort(\n \"Stack overflow! Attempted to allocate \" +\n allocSize +\n \" bytes on the stack, but stack has only \" +\n (STACK_MAX - stackSave() + allocSize) +\n \" bytes available!\",\n );\n}\nHEAP32[0] = 1668509029;\nHEAP16[1] = 25459;\nif (HEAPU8[2] !== 115 || HEAPU8[3] !== 99)\n throw \"Runtime error: expected the system to be little-endian!\";\nfunction abortFnPtrError(ptr, sig) {\n abort(\n \"Invalid function pointer \" +\n ptr +\n \" called with signature '\" +\n sig +\n \"'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this). Build with ASSERTIONS=2 for more info.\",\n );\n}\nfunction callRuntimeCallbacks(callbacks) {\n while (callbacks.length > 0) {\n var callback = callbacks.shift();\n if (typeof callback == \"function\") {\n callback();\n continue;\n }\n var func = callback.func;\n if (typeof func === \"number\") {\n if (callback.arg === undefined) {\n Module[\"dynCall_v\"](func);\n } else {\n Module[\"dynCall_vi\"](func, callback.arg);\n }\n } else {\n func(callback.arg === undefined ? null : callback.arg);\n }\n }\n}\nvar __ATPRERUN__ = [];\nvar __ATINIT__ = [];\nvar __ATMAIN__ = [];\nvar __ATEXIT__ = [];\nvar __ATPOSTRUN__ = [];\nvar runtimeInitialized = false;\nvar runtimeExited = false;\nfunction preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\")\n Module[\"preRun\"] = [Module[\"preRun\"]];\n while (Module[\"preRun\"].length) {\n addOnPreRun(Module[\"preRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPRERUN__);\n}\nfunction initRuntime() {\n checkStackCookie();\n assert(!runtimeInitialized);\n runtimeInitialized = true;\n if (!Module[\"noFSInit\"] && !FS.init.initialized) FS.init();\n TTY.init();\n PIPEFS.root = FS.mount(PIPEFS, {}, null);\n callRuntimeCallbacks(__ATINIT__);\n}\nfunction preMain() {\n checkStackCookie();\n FS.ignorePermissions = false;\n callRuntimeCallbacks(__ATMAIN__);\n}\nfunction exitRuntime() {\n checkStackCookie();\n runtimeExited = true;\n}\nfunction postRun() {\n checkStackCookie();\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\")\n Module[\"postRun\"] = [Module[\"postRun\"]];\n while (Module[\"postRun\"].length) {\n addOnPostRun(Module[\"postRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n}\nfunction addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n}\nfunction addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n}\nassert(\n Math.imul,\n \"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\",\n);\nassert(\n Math.fround,\n \"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\",\n);\nassert(\n Math.clz32,\n \"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\",\n);\nassert(\n Math.trunc,\n \"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\",\n);\nvar Math_abs = Math.abs;\nvar Math_cos = Math.cos;\nvar Math_sin = Math.sin;\nvar Math_sqrt = Math.sqrt;\nvar Math_ceil = Math.ceil;\nvar Math_floor = Math.floor;\nvar Math_min = Math.min;\nvar Math_trunc = Math.trunc;\nvar runDependencies = 0;\nvar runDependencyWatcher = null;\nvar dependenciesFulfilled = null;\nvar runDependencyTracking = {};\nfunction getUniqueRunDependency(id) {\n var orig = id;\n while (1) {\n if (!runDependencyTracking[id]) return id;\n id = orig + Math.random();\n }\n return id;\n}\nfunction addRunDependency(id) {\n runDependencies++;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n if (id) {\n assert(!runDependencyTracking[id]);\n runDependencyTracking[id] = 1;\n if (runDependencyWatcher === null && typeof setInterval !== \"undefined\") {\n runDependencyWatcher = setInterval(function () {\n if (ABORT) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n return;\n }\n var shown = false;\n for (var dep in runDependencyTracking) {\n if (!shown) {\n shown = true;\n err(\"still waiting on run dependencies:\");\n }\n err(\"dependency: \" + dep);\n }\n if (shown) {\n err(\"(end of list)\");\n }\n }, 1e4);\n }\n } else {\n err(\"warning: run dependency added without ID\");\n }\n}\nfunction removeRunDependency(id) {\n runDependencies--;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n if (id) {\n assert(runDependencyTracking[id]);\n delete runDependencyTracking[id];\n } else {\n err(\"warning: run dependency removed without ID\");\n }\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n}\nModule[\"preloadedImages\"] = {};\nModule[\"preloadedAudios\"] = {};\nvar dataURIPrefix = \"data:application/wasm;base64,\";\nfunction isDataURI(filename) {\n return String.prototype.startsWith\n ? filename.startsWith(dataURIPrefix)\n : filename.indexOf(dataURIPrefix) === 0;\n}\nvar wasmBinaryFile = new URL(\"./giac.wasm\", import.meta.url).href;\nif (!isDataURI(wasmBinaryFile)) {\n wasmBinaryFile = locateFile(wasmBinaryFile);\n}\nfunction getBinary() {\n try {\n if (wasmBinary) {\n return new Uint8Array(wasmBinary);\n }\n var binary = tryParseAsDataURI(wasmBinaryFile);\n if (binary) {\n return binary;\n }\n if (readBinary) {\n return readBinary(wasmBinaryFile);\n } else {\n throw \"both async and sync fetching of the wasm failed\";\n }\n } catch (err) {\n abort(err);\n }\n}\nfunction getBinaryPromise() {\n if (\n !wasmBinary &&\n (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) &&\n typeof fetch === \"function\"\n ) {\n return fetch(wasmBinaryFile, { credentials: \"same-origin\" })\n .then(function (response) {\n if (!response[\"ok\"]) {\n throw \"failed to load wasm binary file at '\" + wasmBinaryFile + \"'\";\n }\n return response[\"arrayBuffer\"]();\n })\n .catch(function () {\n return getBinary();\n });\n }\n return new Promise(function (resolve, reject) {\n resolve(getBinary());\n });\n}\nfunction createWasm(env) {\n var info = {\n env: env,\n global: { NaN: NaN, Infinity: Infinity },\n \"global.Math\": Math,\n asm2wasm: asm2wasmImports,\n };\n function receiveInstance(instance, module) {\n var exports = instance.exports;\n Module[\"asm\"] = exports;\n removeRunDependency(\"wasm-instantiate\");\n }\n addRunDependency(\"wasm-instantiate\");\n var trueModule = Module;\n function receiveInstantiatedSource(output) {\n assert(\n Module === trueModule,\n \"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?\",\n );\n trueModule = null;\n receiveInstance(output[\"instance\"]);\n }\n function instantiateArrayBuffer(receiver) {\n return getBinaryPromise()\n .then(function (binary) {\n return WebAssembly.instantiate(binary, info);\n })\n .then(receiver, function (reason) {\n err(\"failed to asynchronously prepare wasm: \" + reason);\n abort(reason);\n });\n }\n function instantiateAsync() {\n if (\n !wasmBinary &&\n typeof WebAssembly.instantiateStreaming === \"function\" &&\n !isDataURI(wasmBinaryFile) &&\n typeof fetch === \"function\"\n ) {\n fetch(wasmBinaryFile, { credentials: \"same-origin\" }).then(\n function (response) {\n var result = WebAssembly.instantiateStreaming(response, info);\n return result.then(receiveInstantiatedSource, function (reason) {\n err(\"wasm streaming compile failed: \" + reason);\n err(\"falling back to ArrayBuffer instantiation\");\n instantiateArrayBuffer(receiveInstantiatedSource);\n });\n },\n );\n } else {\n return instantiateArrayBuffer(receiveInstantiatedSource);\n }\n }\n if (Module[\"instantiateWasm\"]) {\n try {\n var exports = Module[\"instantiateWasm\"](info, receiveInstance);\n return exports;\n } catch (e) {\n err(\"Module.instantiateWasm callback failed with error: \" + e);\n return false;\n }\n }\n instantiateAsync();\n return {};\n}\nModule[\"asm\"] = function (global, env, providedBuffer) {\n env[\"memory\"] = wasmMemory;\n env[\"table\"] = wasmTable = new WebAssembly.Table({\n initial: 10295,\n maximum: 10295,\n element: \"anyfunc\",\n });\n env[\"__memory_base\"] = 1024;\n env[\"__table_base\"] = 0;\n var exports = createWasm(env);\n assert(exports, \"binaryen setup failed (no wasm support?)\");\n return exports;\n};\nvar tempDouble;\nvar tempI64;\nvar ASM_CONSTS = [\n function () {\n var hw = Date.now();\n return hw;\n },\n function () {\n if (Module.worker) return 0;\n var ua = window.navigator.userAgent;\n var old_ie = ua.indexOf(\"MSIE \");\n var new_ie = ua.indexOf(\"Trident/\");\n if (old_ie > -1 || new_ie > -1) return 1;\n else return 0;\n },\n function ($0, $1, $2) {\n var url = UTF8ToString($0);\n console.log(\"url:\" + url);\n var req = new XMLHttpRequest();\n var bufsize = $2;\n req.open(\"GET\", url, false);\n req.overrideMimeType(\"text/plain; charset=x-user-defined\");\n req.send(null);\n if (req.status === 200) {\n console.log(\"Réponse reçue: %s\", req.responseText);\n var s = req.responseText;\n if (s.length >= bufsize - 1) s = s.substr(0, bufsize - 1);\n Module.writeStringToMemory(s, $1);\n } else {\n console.log(\"Status de la réponse: %d (%s)\", req.status, req.statusText);\n Module.writeStringToMemory(\"ERROR\", $1);\n }\n },\n function ($0) {\n var msg = UTF8ToString($0);\n var tst = prompt(msg, \" \");\n if (tst == null) return 0;\n return allocate(intArrayFromString(tst), \"i8\", ALLOC_NORMAL);\n },\n function ($0) {\n return UI.assistant_matr_maxrows;\n },\n function ($0) {\n return UI.assistant_matr_maxcols;\n },\n function ($0) {\n var s = \" \";\n UI.sheet_recompute(s.substr(0, 0));\n UI.open_sheet(true);\n },\n function ($0, $1, $2) {\n var s = UTF8ToString($0);\n console.log(s);\n UI.sheet_set_ij(s, $1, $2);\n },\n function ($0) {\n var msg = UTF8ToString($0);\n var tst = prompt(msg, \"n\");\n if (tst == null) return -4;\n if (tst == \"next\" || tst == \"n\" || tst == \"sst\") return -1;\n if (tst == \"sst_in\" || tst == \"s\") return -2;\n if (tst == \"cont\" || tst == \"c\") return -3;\n if (tst == \"kill\" || tst == \"k\") return -4;\n if (tst == \"break\" || tst == \"b\") return -5;\n if (tst == \"delete\" || tst == \"d\") return -6;\n return allocate(intArrayFromString(tst), \"i8\", ALLOC_NORMAL);\n },\n function ($0) {\n if (typeof UI !== \"undefined\" && UI.warnpy) {\n var msg = UTF8ToString($0);\n alert(msg);\n }\n },\n function () {\n var hw = window.innerWidth;\n if (typeof svgwidth != \"undefined\") return svgwidth * 1;\n if (hw >= 1e3) return (9 * hw) / 1e3;\n else return hw / 60;\n },\n function () {\n if (\n typeof UI !== \"undefined\" &&\n typeof UI.disable3d !== \"undefined\" &&\n UI.disable3d\n )\n return UI.disable3d;\n if (Module.worker) return 1;\n else return 0;\n },\n function () {\n if (typeof UI !== \"undefined\" && typeof UI.add_evalf != \"undefined\")\n return UI.add_evalf * 1;\n return 1;\n },\n function () {\n if (typeof UI !== \"undefined\" && typeof UI.js_bigint != \"undefined\")\n return UI.js_bigint * 1;\n return 0;\n },\n function ($0, $1, $2, $3) {\n var nchannels;\n var nDataBytes;\n var nrate;\n var ptr;\n var data_size;\n nchannels = $0;\n nDataBytes = $1;\n nrate = $2;\n ptr = $3;\n data_size = nDataBytes / 4 / nchannels;\n var audioCtx = new (window.AudioContext || window.webkitAudioContext)();\n var SoundArrayBuffer = audioCtx.createBuffer(\n nchannels,\n nDataBytes,\n audioCtx.sampleRate,\n );\n var dataHeap = new Uint8Array(Module.HEAPU8.buffer, ptr, nDataBytes);\n var result = new Float32Array(\n dataHeap.buffer,\n dataHeap.byteOffset,\n nDataBytes / 4,\n );\n var j;\n var i;\n for (j = 0; j < nchannels; j++) {\n var v = SoundArrayBuffer.getChannelData(j);\n for (i = 0; i < data_size; ++i) v[i] = result[j * data_size + i];\n }\n var source = audioCtx.createBufferSource();\n source.buffer = SoundArrayBuffer;\n source.connect(audioCtx.destination);\n source.start();\n },\n function ($0) {\n var msg = UTF8ToString($0);\n console.log(msg);\n },\n function ($0, $1) {\n var text = UTF8ToString($0);\n text = text.substr(0, $1);\n UI.add_python_output(text);\n text = UI.clean_for_html(text);\n var tmp = document.getElementById(\"consolediv\");\n if (tmp != null && tmp.style.display != \"block\") {\n tmp.style.display = \"block\";\n UI.set_config_width();\n }\n var element = document.getElementById(\"output\");\n if (element != null) {\n element.style.display = \"inherit\";\n element.innerHTML += text;\n element.scrollTop = 99999;\n }\n },\n function ($0) {\n var msg = UTF8ToString($0);\n UI.python_output += msg;\n },\n];\nfunction _emscripten_asm_const_i(code) {\n return ASM_CONSTS[code]();\n}\nfunction _emscripten_asm_const_d(code) {\n return ASM_CONSTS[code]();\n}\nfunction _emscripten_asm_const_ii(code, a0) {\n return ASM_CONSTS[code](a0);\n}\nfunction _emscripten_asm_const_iiiii(code, a0, a1, a2, a3) {\n return ASM_CONSTS[code](a0, a1, a2, a3);\n}\nfunction _emscripten_asm_const_iiii(code, a0, a1, a2) {\n return ASM_CONSTS[code](a0, a1, a2);\n}\nfunction _emscripten_asm_const_iii(code, a0, a1) {\n return ASM_CONSTS[code](a0, a1);\n}\n__ATINIT__.push({\n func: function () {\n globalCtors();\n },\n});\nvar tempDoublePtr = 5313328;\nassert(tempDoublePtr % 8 == 0);\nfunction demangle(func) {\n warnOnce(\n \"warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling\",\n );\n return func;\n}\nfunction demangleAll(text) {\n var regex = /__Z[\\w\\d_]+/g;\n return text.replace(regex, function (x) {\n var y = demangle(x);\n return x === y ? x : y + \" [\" + x + \"]\";\n });\n}\nfunction jsStackTrace() {\n var err = new Error();\n if (!err.stack) {\n try {\n throw new Error(0);\n } catch (e) {\n err = e;\n }\n if (!err.stack) {\n return \"(no stack trace available)\";\n }\n }\n return err.stack.toString();\n}\nfunction stackTrace() {\n var js = jsStackTrace();\n if (Module[\"extraStackTrace\"]) js += \"\\n\" + Module[\"extraStackTrace\"]();\n return demangleAll(js);\n}\nfunction ___setErrNo(value) {\n if (Module[\"___errno_location\"])\n HEAP32[Module[\"___errno_location\"]() >> 2] = value;\n else err(\"failed to set errno from JS\");\n return value;\n}\nvar PATH = {\n splitPath: function (filename) {\n var splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n },\n normalizeArray: function (parts, allowAboveRoot) {\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === \".\") {\n parts.splice(i, 1);\n } else if (last === \"..\") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n if (allowAboveRoot) {\n for (; up; up--) {\n parts.unshift(\"..\");\n }\n }\n return parts;\n },\n normalize: function (path) {\n var isAbsolute = path.charAt(0) === \"/\",\n trailingSlash = path.substr(-1) === \"/\";\n path = PATH.normalizeArray(\n path.split(\"/\").filter(function (p) {\n return !!p;\n }),\n !isAbsolute,\n ).join(\"/\");\n if (!path && !isAbsolute) {\n path = \".\";\n }\n if (path && trailingSlash) {\n path += \"/\";\n }\n return (isAbsolute ? \"/\" : \"\") + path;\n },\n dirname: function (path) {\n var result = PATH.splitPath(path),\n root = result[0],\n dir = result[1];\n if (!root && !dir) {\n return \".\";\n }\n if (dir) {\n dir = dir.substr(0, dir.length - 1);\n }\n return root + dir;\n },\n basename: function (path) {\n if (path === \"/\") return \"/\";\n var lastSlash = path.lastIndexOf(\"/\");\n if (lastSlash === -1) return path;\n return path.substr(lastSlash + 1);\n },\n extname: function (path) {\n return PATH.splitPath(path)[3];\n },\n join: function () {\n var paths = Array.prototype.slice.call(arguments, 0);\n return PATH.normalize(paths.join(\"/\"));\n },\n join2: function (l, r) {\n return PATH.normalize(l + \"/\" + r);\n },\n};\nvar PATH_FS = {\n resolve: function () {\n var resolvedPath = \"\",\n resolvedAbsolute = false;\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = i >= 0 ? arguments[i] : 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.charAt(0) === \"/\";\n }\n resolvedPath = PATH.normalizeArray(\n resolvedPath.split(\"/\").filter(function (p) {\n return !!p;\n }),\n !resolvedAbsolute,\n ).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n },\n relative: function (from, to) {\n from = PATH_FS.resolve(from).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== \"\") break;\n }\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== \"\") break;\n }\n if (start > end) return [];\n return arr.slice(start, end - start + 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 i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push(\"..\");\n }\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n },\n};\nvar TTY = {\n ttys: [],\n init: function () {},\n shutdown: function () {},\n register: function (dev, ops) {\n TTY.ttys[dev] = { input: [], output: [], ops: ops };\n FS.registerDevice(dev, TTY.stream_ops);\n },\n stream_ops: {\n open: function (stream) {\n var tty = TTY.ttys[stream.node.rdev];\n if (!tty) {\n throw new FS.ErrnoError(19);\n }\n stream.tty = tty;\n stream.seekable = false;\n },\n close: function (stream) {\n stream.tty.ops.flush(stream.tty);\n },\n flush: function (stream) {\n stream.tty.ops.flush(stream.tty);\n },\n read: function (stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) {\n throw new FS.ErrnoError(6);\n }\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(5);\n }\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(11);\n }\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n },\n write: function (stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) {\n throw new FS.ErrnoError(6);\n }\n try {\n for (var i = 0; i < length; i++) {\n stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n }\n } catch (e) {\n throw new FS.ErrnoError(5);\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n },\n },\n default_tty_ops: {\n get_char: function (tty) {\n if (!tty.input.length) {\n var result = null;\n if (ENVIRONMENT_IS_NODE) {\n var BUFSIZE = 256;\n var buf = Buffer.alloc ? Buffer.alloc(BUFSIZE) : new Buffer(BUFSIZE);\n var bytesRead = 0;\n var isPosixPlatform = process.platform != \"win32\";\n var fd = process.stdin.fd;\n if (isPosixPlatform) {\n var usingDevice = false;\n try {\n fd = fs.openSync(\"/dev/stdin\", \"r\");\n usingDevice = true;\n } catch (e) {}\n }\n try {\n bytesRead = fs.readSync(fd, buf, 0, BUFSIZE, null);\n } catch (e) {\n if (e.toString().indexOf(\"EOF\") != -1) bytesRead = 0;\n else throw e;\n }\n if (usingDevice) {\n fs.closeSync(fd);\n }\n if (bytesRead > 0) {\n result = buf.slice(0, bytesRead).toString(\"utf-8\");\n } else {\n result = null;\n }\n } else if (\n typeof window != \"undefined\" &&\n typeof window.prompt == \"function\"\n ) {\n result = window.prompt(\"Input: \");\n if (result !== null) {\n result += \"\\n\";\n }\n } else if (typeof readline == \"function\") {\n result = readline();\n if (result !== null) {\n result += \"\\n\";\n }\n }\n if (!result) {\n return null;\n }\n tty.input = intArrayFromString(result, true);\n }\n return tty.input.shift();\n },\n put_char: function (tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n flush: function (tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n },\n },\n default_tty1_ops: {\n put_char: function (tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n flush: function (tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n },\n },\n};\nvar MEMFS = {\n ops_table: null,\n mount: function (mount) {\n return MEMFS.createNode(null, \"/\", 16384 | 511, 0);\n },\n createNode: function (parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {\n throw new FS.ErrnoError(1);\n }\n if (!MEMFS.ops_table) {\n MEMFS.ops_table = {\n dir: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n lookup: MEMFS.node_ops.lookup,\n mknod: MEMFS.node_ops.mknod,\n rename: MEMFS.node_ops.rename,\n unlink: MEMFS.node_ops.unlink,\n rmdir: MEMFS.node_ops.rmdir,\n readdir: MEMFS.node_ops.readdir,\n symlink: MEMFS.node_ops.symlink,\n },\n stream: { llseek: MEMFS.stream_ops.llseek },\n },\n file: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek,\n read: MEMFS.stream_ops.read,\n write: MEMFS.stream_ops.write,\n allocate: MEMFS.stream_ops.allocate,\n mmap: MEMFS.stream_ops.mmap,\n msync: MEMFS.stream_ops.msync,\n },\n },\n link: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n readlink: MEMFS.node_ops.readlink,\n },\n stream: {},\n },\n chrdev: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n },\n stream: FS.chrdev_stream_ops,\n },\n };\n }\n var node = FS.createNode(parent, name, 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 = null;\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.timestamp = Date.now();\n if (parent) {\n parent.contents[name] = node;\n }\n return node;\n },\n getFileDataAsRegularArray: function (node) {\n if (node.contents && node.contents.subarray) {\n var arr = [];\n for (var i = 0; i < node.usedBytes; ++i) arr.push(node.contents[i]);\n return arr;\n }\n return node.contents;\n },\n getFileDataAsTypedArray: function (node) {\n if (!node.contents) return new Uint8Array();\n if (node.contents.subarray)\n return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n },\n expandFileStorage: function (node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity) return;\n var CAPACITY_DOUBLING_MAX = 1024 * 1024;\n newCapacity = Math.max(\n newCapacity,\n (prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125)) | 0,\n );\n if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0)\n node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n return;\n },\n resizeFileStorage: function (node, newSize) {\n if (node.usedBytes == newSize) return;\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n return;\n }\n if (!node.contents || node.contents.subarray) {\n var oldContents = node.contents;\n node.contents = new Uint8Array(new ArrayBuffer(newSize));\n if (oldContents) {\n node.contents.set(\n oldContents.subarray(0, Math.min(newSize, node.usedBytes)),\n );\n }\n node.usedBytes = newSize;\n return;\n }\n if (!node.contents) node.contents = [];\n if (node.contents.length > newSize) node.contents.length = newSize;\n else while (node.contents.length < newSize) node.contents.push(0);\n node.usedBytes = newSize;\n },\n node_ops: {\n getattr: function (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.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n },\n setattr: function (node, attr) {\n if (attr.mode !== undefined) {\n node.mode = attr.mode;\n }\n if (attr.timestamp !== undefined) {\n node.timestamp = attr.timestamp;\n }\n if (attr.size !== undefined) {\n MEMFS.resizeFileStorage(node, attr.size);\n }\n },\n lookup: function (parent, name) {\n throw FS.genericErrors[2];\n },\n mknod: function (parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n },\n rename: function (old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (new_node) {\n for (var i in new_node.contents) {\n throw new FS.ErrnoError(39);\n }\n }\n }\n delete old_node.parent.contents[old_node.name];\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n old_node.parent = new_dir;\n },\n unlink: function (parent, name) {\n delete parent.contents[name];\n },\n rmdir: function (parent, name) {\n var node = FS.lookupNode(parent, name);\n for (var i in node.contents) {\n throw new FS.ErrnoError(39);\n }\n delete parent.contents[name];\n },\n readdir: function (node) {\n var entries = [\".\", \"..\"];\n for (var key in node.contents) {\n if (!node.contents.hasOwnProperty(key)) {\n continue;\n }\n entries.push(key);\n }\n return entries;\n },\n symlink: function (parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);\n node.link = oldpath;\n return node;\n },\n readlink: function (node) {\n if (!FS.isLink(node.mode)) {\n throw new FS.ErrnoError(22);\n }\n return node.link;\n },\n },\n stream_ops: {\n read: function (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 assert(size >= 0);\n if (size > 8 && contents.subarray) {\n buffer.set(contents.subarray(position, position + size), offset);\n } else {\n for (var i = 0; i < size; i++)\n buffer[offset + i] = contents[position + i];\n }\n return size;\n },\n write: function (stream, buffer, offset, length, position, canOwn) {\n if (!length) return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n assert(\n position === 0,\n \"canOwn must imply no weird position inside the file\",\n );\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = new Uint8Array(\n buffer.subarray(offset, offset + length),\n );\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer.subarray)\n node.contents.set(buffer.subarray(offset, offset + length), position);\n else {\n for (var i = 0; i < length; i++) {\n node.contents[position + i] = buffer[offset + i];\n }\n }\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n },\n llseek: function (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(22);\n }\n return position;\n },\n allocate: function (stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n },\n mmap: function (stream, buffer, offset, length, position, prot, flags) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(19);\n }\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n if (\n !(flags & 2) &&\n (contents.buffer === buffer || contents.buffer === buffer.buffer)\n ) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n if (position > 0 || position + length < stream.node.usedBytes) {\n if (contents.subarray) {\n contents = contents.subarray(position, position + length);\n } else {\n contents = Array.prototype.slice.call(\n contents,\n position,\n position + length,\n );\n }\n }\n allocated = true;\n var fromHeap = buffer.buffer == HEAP8.buffer;\n ptr = _malloc(length);\n if (!ptr) {\n throw new FS.ErrnoError(12);\n }\n (fromHeap ? HEAP8 : buffer).set(contents, ptr);\n }\n return { ptr: ptr, allocated: allocated };\n },\n msync: function (stream, buffer, offset, length, mmapFlags) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(19);\n }\n if (mmapFlags & 2) {\n return 0;\n }\n var bytesWritten = MEMFS.stream_ops.write(\n stream,\n buffer,\n 0,\n length,\n offset,\n false,\n );\n return 0;\n },\n },\n};\nvar IDBFS = {\n dbs: {},\n indexedDB: function () {\n if (typeof indexedDB !== \"undefined\") return indexedDB;\n var ret = null;\n if (typeof window === \"object\")\n ret =\n window.indexedDB ||\n window.mozIndexedDB ||\n window.webkitIndexedDB ||\n window.msIndexedDB;\n assert(ret, \"IDBFS used, but indexedDB not supported\");\n return ret;\n },\n DB_VERSION: 21,\n DB_STORE_NAME: \"FILE_DATA\",\n mount: function (mount) {\n return MEMFS.mount.apply(null, arguments);\n },\n syncfs: function (mount, populate, callback) {\n IDBFS.getLocalSet(mount, function (err, local) {\n if (err) return callback(err);\n IDBFS.getRemoteSet(mount, function (err, remote) {\n if (err) return callback(err);\n var src = populate ? remote : local;\n var dst = populate ? local : remote;\n IDBFS.reconcile(src, dst, callback);\n });\n });\n },\n getDB: function (name, callback) {\n var db = IDBFS.dbs[name];\n if (db) {\n return callback(null, db);\n }\n var req;\n try {\n req = IDBFS.indexedDB().open(name, 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 = function (e) {\n var db = e.target.result;\n var transaction = e.target.transaction;\n var fileStore;\n if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) {\n fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME);\n } else {\n fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME);\n }\n if (!fileStore.indexNames.contains(\"timestamp\")) {\n fileStore.createIndex(\"timestamp\", \"timestamp\", { unique: false });\n }\n };\n req.onsuccess = function () {\n db = req.result;\n IDBFS.dbs[name] = db;\n callback(null, db);\n };\n req.onerror = function (e) {\n callback(this.error);\n e.preventDefault();\n };\n },\n getLocalSet: function (mount, callback) {\n var entries = {};\n function isRealDir(p) {\n return p !== \".\" && p !== \"..\";\n }\n function toAbsolute(root) {\n return function (p) {\n return PATH.join2(root, p);\n };\n }\n var check = FS.readdir(mount.mountpoint)\n .filter(isRealDir)\n .map(toAbsolute(mount.mountpoint));\n while (check.length) {\n var path = check.pop();\n var stat;\n try {\n stat = FS.stat(path);\n } catch (e) {\n return callback(e);\n }\n if (FS.isDir(stat.mode)) {\n check.push.apply(\n check,\n FS.readdir(path).filter(isRealDir).map(toAbsolute(path)),\n );\n }\n entries[path] = { timestamp: stat.mtime };\n }\n return callback(null, { type: \"local\", entries: entries });\n },\n getRemoteSet: function (mount, callback) {\n var entries = {};\n IDBFS.getDB(mount.mountpoint, function (err, db) {\n if (err) return callback(err);\n try {\n var transaction = db.transaction([IDBFS.DB_STORE_NAME], \"readonly\");\n transaction.onerror = function (e) {\n callback(this.error);\n e.preventDefault();\n };\n var store = transaction.objectStore(IDBFS.DB_STORE_NAME);\n var index = store.index(\"timestamp\");\n index.openKeyCursor().onsuccess = function (event) {\n var cursor = event.target.result;\n if (!cursor) {\n return callback(null, { type: \"remote\", db: db, entries: entries });\n }\n entries[cursor.primaryKey] = { timestamp: cursor.key };\n cursor.continue();\n };\n } catch (e) {\n return callback(e);\n }\n });\n },\n loadLocalEntry: function (path, callback) {\n var stat, node;\n try {\n var lookup = FS.lookupPath(path);\n node = lookup.node;\n stat = FS.stat(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.isFile(stat.mode)) {\n node.contents = MEMFS.getFileDataAsTypedArray(node);\n return callback(null, {\n timestamp: stat.mtime,\n mode: stat.mode,\n contents: node.contents,\n });\n } else {\n return callback(new Error(\"node type not supported\"));\n }\n },\n storeLocalEntry: function (path, entry, callback) {\n try {\n if (FS.isDir(entry.mode)) {\n FS.mkdir(path, entry.mode);\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 },\n removeLocalEntry: function (path, callback) {\n try {\n var lookup = FS.lookupPath(path);\n var stat = FS.stat(path);\n if (FS.isDir(stat.mode)) {\n FS.rmdir(path);\n } else if (FS.isFile(stat.mode)) {\n FS.unlink(path);\n }\n } catch (e) {\n return callback(e);\n }\n callback(null);\n },\n loadRemoteEntry: function (store, path, callback) {\n var req = store.get(path);\n req.onsuccess = function (event) {\n callback(null, event.target.result);\n };\n req.onerror = function (e) {\n callback(this.error);\n e.preventDefault();\n };\n },\n storeRemoteEntry: function (store, path, entry, callback) {\n var req = store.put(entry, path);\n req.onsuccess = function () {\n callback(null);\n };\n req.onerror = function (e) {\n callback(this.error);\n e.preventDefault();\n };\n },\n removeRemoteEntry: function (store, path, callback) {\n var req = store.delete(path);\n req.onsuccess = function () {\n callback(null);\n };\n req.onerror = function (e) {\n callback(this.error);\n e.preventDefault();\n };\n },\n reconcile: function (src, dst, callback) {\n var total = 0;\n var create = [];\n Object.keys(src.entries).forEach(function (key) {\n var e = src.entries[key];\n var e2 = dst.entries[key];\n if (!e2 || e.timestamp > e2.timestamp) {\n create.push(key);\n total++;\n }\n });\n var remove = [];\n Object.keys(dst.entries).forEach(function (key) {\n var e = dst.entries[key];\n var e2 = src.entries[key];\n if (!e2) {\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(err) {\n if (err && !errored) {\n errored = true;\n return callback(err);\n }\n }\n transaction.onerror = function (e) {\n done(this.error);\n e.preventDefault();\n };\n transaction.oncomplete = function (e) {\n if (!errored) {\n callback(null);\n }\n };\n create.sort().forEach(function (path) {\n if (dst.type === \"local\") {\n IDBFS.loadRemoteEntry(store, path, function (err, entry) {\n if (err) return done(err);\n IDBFS.storeLocalEntry(path, entry, done);\n });\n } else {\n IDBFS.loadLocalEntry(path, function (err, entry) {\n if (err) return done(err);\n IDBFS.storeRemoteEntry(store, path, entry, done);\n });\n }\n });\n remove\n .sort()\n .reverse()\n .forEach(function (path) {\n if (dst.type === \"local\") {\n IDBFS.removeLocalEntry(path, done);\n } else {\n IDBFS.removeRemoteEntry(store, path, done);\n }\n });\n },\n};\nvar NODEFS = {\n isWindows: false,\n staticInit: function () {\n NODEFS.isWindows = !!process.platform.match(/^win/);\n var flags = process[\"binding\"](\"constants\");\n if (flags[\"fs\"]) {\n flags = flags[\"fs\"];\n }\n NODEFS.flagsForNodeMap = {\n 1024: flags[\"O_APPEND\"],\n 64: flags[\"O_CREAT\"],\n 128: flags[\"O_EXCL\"],\n 0: flags[\"O_RDONLY\"],\n 2: flags[\"O_RDWR\"],\n 4096: flags[\"O_SYNC\"],\n 512: flags[\"O_TRUNC\"],\n 1: flags[\"O_WRONLY\"],\n };\n },\n bufferFrom: function (arrayBuffer) {\n return Buffer.alloc ? Buffer.from(arrayBuffer) : new Buffer(arrayBuffer);\n },\n mount: function (mount) {\n assert(ENVIRONMENT_HAS_NODE);\n return NODEFS.createNode(null, \"/\", NODEFS.getMode(mount.opts.root), 0);\n },\n createNode: function (parent, name, mode, dev) {\n if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) {\n throw new FS.ErrnoError(22);\n }\n var node = FS.createNode(parent, name, mode);\n node.node_ops = NODEFS.node_ops;\n node.stream_ops = NODEFS.stream_ops;\n return node;\n },\n getMode: function (path) {\n var stat;\n try {\n stat = fs.lstatSync(path);\n if (NODEFS.isWindows) {\n stat.mode = stat.mode | ((stat.mode & 292) >> 2);\n }\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(-e.errno);\n }\n return stat.mode;\n },\n realPath: function (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.apply(null, parts);\n },\n flagsForNode: function (flags) {\n flags &= ~2097152;\n flags &= ~2048;\n flags &= ~32768;\n flags &= ~524288;\n var newFlags = 0;\n for (var k in NODEFS.flagsForNodeMap) {\n if (flags & k) {\n newFlags |= NODEFS.flagsForNodeMap[k];\n flags ^= k;\n }\n }\n if (!flags) {\n return newFlags;\n } else {\n throw new FS.ErrnoError(22);\n }\n },\n node_ops: {\n getattr: function (node) {\n var path = NODEFS.realPath(node);\n var stat;\n try {\n stat = fs.lstatSync(path);\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(-e.errno);\n }\n if (NODEFS.isWindows && !stat.blksize) {\n stat.blksize = 4096;\n }\n if (NODEFS.isWindows && !stat.blocks) {\n stat.blocks = ((stat.size + stat.blksize - 1) / stat.blksize) | 0;\n }\n return {\n dev: stat.dev,\n ino: stat.ino,\n mode: stat.mode,\n nlink: stat.nlink,\n uid: stat.uid,\n gid: stat.gid,\n rdev: stat.rdev,\n size: stat.size,\n atime: stat.atime,\n mtime: stat.mtime,\n ctime: stat.ctime,\n blksize: stat.blksize,\n blocks: stat.blocks,\n };\n },\n setattr: function (node, attr) {\n var path = NODEFS.realPath(node);\n try {\n if (attr.mode !== undefined) {\n fs.chmodSync(path, attr.mode);\n node.mode = attr.mode;\n }\n if (attr.timestamp !== undefined) {\n var date = new Date(attr.timestamp);\n fs.utimesSync(path, date, date);\n }\n if (attr.size !== undefined) {\n fs.truncateSync(path, attr.size);\n }\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(-e.errno);\n }\n },\n lookup: function (parent, name) {\n var path = PATH.join2(NODEFS.realPath(parent), name);\n var mode = NODEFS.getMode(path);\n return NODEFS.createNode(parent, name, mode);\n },\n mknod: function (parent, name, mode, dev) {\n var node = NODEFS.createNode(parent, name, mode, dev);\n var path = NODEFS.realPath(node);\n try {\n if (FS.isDir(node.mode)) {\n fs.mkdirSync(path, node.mode);\n } else {\n fs.writeFileSync(path, \"\", { mode: node.mode });\n }\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(-e.errno);\n }\n return node;\n },\n rename: function (oldNode, newDir, newName) {\n var oldPath = NODEFS.realPath(oldNode);\n var newPath = PATH.join2(NODEFS.realPath(newDir), newName);\n try {\n fs.renameSync(oldPath, newPath);\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(-e.errno);\n }\n },\n unlink: function (parent, name) {\n var path = PATH.join2(NODEFS.realPath(parent), name);\n try {\n fs.unlinkSync(path);\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(-e.errno);\n }\n },\n rmdir: function (parent, name) {\n var path = PATH.join2(NODEFS.realPath(parent), name);\n try {\n fs.rmdirSync(path);\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(-e.errno);\n }\n },\n readdir: function (node) {\n var path = NODEFS.realPath(node);\n try {\n return fs.readdirSync(path);\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(-e.errno);\n }\n },\n symlink: function (parent, newName, oldPath) {\n var newPath = PATH.join2(NODEFS.realPath(parent), newName);\n try {\n fs.symlinkSync(oldPath, newPath);\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(-e.errno);\n }\n },\n readlink: function (node) {\n var path = NODEFS.realPath(node);\n try {\n path = fs.readlinkSync(path);\n path = NODEJS_PATH.relative(\n NODEJS_PATH.resolve(node.mount.opts.root),\n path,\n );\n return path;\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(-e.errno);\n }\n },\n },\n stream_ops: {\n open: function (stream) {\n var path = NODEFS.realPath(stream.node);\n try {\n if (FS.isFile(stream.node.mode)) {\n stream.nfd = fs.openSync(path, NODEFS.flagsForNode(stream.flags));\n }\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(-e.errno);\n }\n },\n close: function (stream) {\n try {\n if (FS.isFile(stream.node.mode) && stream.nfd) {\n fs.closeSync(stream.nfd);\n }\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(-e.errno);\n }\n },\n read: function (stream, buffer, offset, length, position) {\n if (length === 0) return 0;\n try {\n return fs.readSync(\n stream.nfd,\n NODEFS.bufferFrom(buffer.buffer),\n offset,\n length,\n position,\n );\n } catch (e) {\n throw new FS.ErrnoError(-e.errno);\n }\n },\n write: function (stream, buffer, offset, length, position) {\n try {\n return fs.writeSync(\n stream.nfd,\n NODEFS.bufferFrom(buffer.buffer),\n offset,\n length,\n position,\n );\n } catch (e) {\n throw new FS.ErrnoError(-e.errno);\n }\n },\n llseek: function (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 = fs.fstatSync(stream.nfd);\n position += stat.size;\n } catch (e) {\n throw new FS.ErrnoError(-e.errno);\n }\n }\n }\n if (position < 0) {\n throw new FS.ErrnoError(22);\n }\n return position;\n },\n },\n};\nvar WORKERFS = {\n DIR_MODE: 16895,\n FILE_MODE: 33279,\n reader: null,\n mount: function (mount) {\n assert(ENVIRONMENT_IS_WORKER);\n if (!WORKERFS.reader) 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 i = 0; i < parts.length - 1; i++) {\n var curr = parts.slice(0, i + 1).join(\"/\");\n if (!createdParents[curr]) {\n createdParents[curr] = WORKERFS.createNode(\n parent,\n parts[i],\n WORKERFS.DIR_MODE,\n 0,\n );\n }\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 Array.prototype.forEach.call(mount.opts[\"files\"] || [], function (file) {\n WORKERFS.createNode(\n ensureParent(file.name),\n base(file.name),\n WORKERFS.FILE_MODE,\n 0,\n file,\n file.lastModifiedDate,\n );\n });\n (mount.opts[\"blobs\"] || []).forEach(function (obj) {\n WORKERFS.createNode(\n ensureParent(obj[\"name\"]),\n base(obj[\"name\"]),\n WORKERFS.FILE_MODE,\n 0,\n obj[\"data\"],\n );\n });\n (mount.opts[\"packages\"] || []).forEach(function (pack) {\n pack[\"metadata\"].files.forEach(function (file) {\n var name = file.filename.substr(1);\n WORKERFS.createNode(\n ensureParent(name),\n base(name),\n WORKERFS.FILE_MODE,\n 0,\n pack[\"blob\"].slice(file.start, file.end),\n );\n });\n });\n return root;\n },\n createNode: function (parent, name, mode, dev, contents, mtime) {\n var node = FS.createNode(parent, name, mode);\n node.mode = mode;\n node.node_ops = WORKERFS.node_ops;\n node.stream_ops = WORKERFS.stream_ops;\n node.timestamp = (mtime || 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[name] = node;\n }\n return node;\n },\n node_ops: {\n getattr: function (node) {\n return {\n dev: 1,\n ino: undefined,\n mode: node.mode,\n nlink: 1,\n uid: 0,\n gid: 0,\n rdev: undefined,\n size: node.size,\n atime: new Date(node.timestamp),\n mtime: new Date(node.timestamp),\n ctime: new Date(node.timestamp),\n blksize: 4096,\n blocks: Math.ceil(node.size / 4096),\n };\n },\n setattr: function (node, attr) {\n if (attr.mode !== undefined) {\n node.mode = attr.mode;\n }\n if (attr.timestamp !== undefined) {\n node.timestamp = attr.timestamp;\n }\n },\n lookup: function (parent, name) {\n throw new FS.ErrnoError(2);\n },\n mknod: function (parent, name, mode, dev) {\n throw new FS.ErrnoError(1);\n },\n rename: function (oldNode, newDir, newName) {\n throw new FS.ErrnoError(1);\n },\n unlink: function (parent, name) {\n throw new FS.ErrnoError(1);\n },\n rmdir: function (parent, name) {\n throw new FS.ErrnoError(1);\n },\n readdir: function (node) {\n var entries = [\".\", \"..\"];\n for (var key in node.contents) {\n if (!node.contents.hasOwnProperty(key)) {\n continue;\n }\n entries.push(key);\n }\n return entries;\n },\n symlink: function (parent, newName, oldPath) {\n throw new FS.ErrnoError(1);\n },\n readlink: function (node) {\n throw new FS.ErrnoError(1);\n },\n },\n stream_ops: {\n read: function (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 },\n write: function (stream, buffer, offset, length, position) {\n throw new FS.ErrnoError(5);\n },\n llseek: function (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(22);\n }\n return position;\n },\n },\n};\nvar ERRNO_MESSAGES = {\n 0: \"Success\",\n 1: \"Not super-user\",\n 2: \"No such file or directory\",\n 3: \"No such process\",\n 4: \"Interrupted system call\",\n 5: \"I/O error\",\n 6: \"No such device or address\",\n 7: \"Arg list too long\",\n 8: \"Exec format error\",\n 9: \"Bad file number\",\n 10: \"No children\",\n 11: \"No more processes\",\n 12: \"Not enough core\",\n 13: \"Permission denied\",\n 14: \"Bad address\",\n 15: \"Block device required\",\n 16: \"Mount device busy\",\n 17: \"File exists\",\n 18: \"Cross-device link\",\n 19: \"No such device\",\n 20: \"Not a directory\",\n 21: \"Is a directory\",\n 22: \"Invalid argument\",\n 23: \"Too many open files in system\",\n 24: \"Too many open files\",\n 25: \"Not a typewriter\",\n 26: \"Text file busy\",\n 27: \"File too large\",\n 28: \"No space left on device\",\n 29: \"Illegal seek\",\n 30: \"Read only file system\",\n 31: \"Too many links\",\n 32: \"Broken pipe\",\n 33: \"Math arg out of domain of func\",\n 34: \"Math result not representable\",\n 35: \"File locking deadlock error\",\n 36: \"File or path name too long\",\n 37: \"No record locks available\",\n 38: \"Function not implemented\",\n 39: \"Directory not empty\",\n 40: \"Too many symbolic links\",\n 42: \"No message of desired type\",\n 43: \"Identifier removed\",\n 44: \"Channel number out of range\",\n 45: \"Level 2 not synchronized\",\n 46: \"Level 3 halted\",\n 47: \"Level 3 reset\",\n 48: \"Link number out of range\",\n 49: \"Protocol driver not attached\",\n 50: \"No CSI structure available\",\n 51: \"Level 2 halted\",\n 52: \"Invalid exchange\",\n 53: \"Invalid request descriptor\",\n 54: \"Exchange full\",\n 55: \"No anode\",\n 56: \"Invalid request code\",\n 57: \"Invalid slot\",\n 59: \"Bad font file fmt\",\n 60: \"Device not a stream\",\n 61: \"No data (for no delay io)\",\n 62: \"Timer expired\",\n 63: \"Out of streams resources\",\n 64: \"Machine is not on the network\",\n 65: \"Package not installed\",\n 66: \"The object is remote\",\n 67: \"The link has been severed\",\n 68: \"Advertise error\",\n 69: \"Srmount error\",\n 70: \"Communication error on send\",\n 71: \"Protocol error\",\n 72: \"Multihop attempted\",\n 73: \"Cross mount point (not really error)\",\n 74: \"Trying to read unreadable message\",\n 75: \"Value too large for defined data type\",\n 76: \"Given log. name not unique\",\n 77: \"f.d. invalid for this operation\",\n 78: \"Remote address changed\",\n 79: \"Can access a needed shared lib\",\n 80: \"Accessing a corrupted shared lib\",\n 81: \".lib section in a.out corrupted\",\n 82: \"Attempting to link in too many libs\",\n 83: \"Attempting to exec a shared library\",\n 84: \"Illegal byte sequence\",\n 86: \"Streams pipe error\",\n 87: \"Too many users\",\n 88: \"Socket operation on non-socket\",\n 89: \"Destination address required\",\n 90: \"Message too long\",\n 91: \"Protocol wrong type for socket\",\n 92: \"Protocol not available\",\n 93: \"Unknown protocol\",\n 94: \"Socket type not supported\",\n 95: \"Not supported\",\n 96: \"Protocol family not supported\",\n 97: \"Address family not supported by protocol family\",\n 98: \"Address already in use\",\n 99: \"Address not available\",\n 100: \"Network interface is not configured\",\n 101: \"Network is unreachable\",\n 102: \"Connection reset by network\",\n 103: \"Connection aborted\",\n 104: \"Connection reset by peer\",\n 105: \"No buffer space available\",\n 106: \"Socket is already connected\",\n 107: \"Socket is not connected\",\n 108: \"Can't send after socket shutdown\",\n 109: \"Too many references\",\n 110: \"Connection timed out\",\n 111: \"Connection refused\",\n 112: \"Host is down\",\n 113: \"Host is unreachable\",\n 114: \"Socket already connected\",\n 115: \"Connection already in progress\",\n 116: \"Stale file handle\",\n 122: \"Quota exceeded\",\n 123: \"No medium (in tape drive)\",\n 125: \"Operation canceled\",\n 130: \"Previous owner died\",\n 131: \"State not recoverable\",\n};\nvar ERRNO_CODES = {\n EPERM: 1,\n ENOENT: 2,\n ESRCH: 3,\n EINTR: 4,\n EIO: 5,\n ENXIO: 6,\n E2BIG: 7,\n ENOEXEC: 8,\n EBADF: 9,\n ECHILD: 10,\n EAGAIN: 11,\n EWOULDBLOCK: 11,\n ENOMEM: 12,\n EACCES: 13,\n EFAULT: 14,\n ENOTBLK: 15,\n EBUSY: 16,\n EEXIST: 17,\n EXDEV: 18,\n ENODEV: 19,\n ENOTDIR: 20,\n EISDIR: 21,\n EINVAL: 22,\n ENFILE: 23,\n EMFILE: 24,\n ENOTTY: 25,\n ETXTBSY: 26,\n EFBIG: 27,\n ENOSPC: 28,\n ESPIPE: 29,\n EROFS: 30,\n EMLINK: 31,\n EPIPE: 32,\n EDOM: 33,\n ERANGE: 34,\n ENOMSG: 42,\n EIDRM: 43,\n ECHRNG: 44,\n EL2NSYNC: 45,\n EL3HLT: 46,\n EL3RST: 47,\n ELNRNG: 48,\n EUNATCH: 49,\n ENOCSI: 50,\n EL2HLT: 51,\n EDEADLK: 35,\n ENOLCK: 37,\n EBADE: 52,\n EBADR: 53,\n EXFULL: 54,\n ENOANO: 55,\n EBADRQC: 56,\n EBADSLT: 57,\n EDEADLOCK: 35,\n EBFONT: 59,\n ENOSTR: 60,\n ENODATA: 61,\n ETIME: 62,\n ENOSR: 63,\n ENONET: 64,\n ENOPKG: 65,\n EREMOTE: 66,\n ENOLINK: 67,\n EADV: 68,\n ESRMNT: 69,\n ECOMM: 70,\n EPROTO: 71,\n EMULTIHOP: 72,\n EDOTDOT: 73,\n EBADMSG: 74,\n ENOTUNIQ: 76,\n EBADFD: 77,\n EREMCHG: 78,\n ELIBACC: 79,\n ELIBBAD: 80,\n ELIBSCN: 81,\n ELIBMAX: 82,\n ELIBEXEC: 83,\n ENOSYS: 38,\n ENOTEMPTY: 39,\n ENAMETOOLONG: 36,\n ELOOP: 40,\n EOPNOTSUPP: 95,\n EPFNOSUPPORT: 96,\n ECONNRESET: 104,\n ENOBUFS: 105,\n EAFNOSUPPORT: 97,\n EPROTOTYPE: 91,\n ENOTSOCK: 88,\n ENOPROTOOPT: 92,\n ESHUTDOWN: 108,\n ECONNREFUSED: 111,\n EADDRINUSE: 98,\n ECONNABORTED: 103,\n ENETUNREACH: 101,\n ENETDOWN: 100,\n ETIMEDOUT: 110,\n EHOSTDOWN: 112,\n EHOSTUNREACH: 113,\n EINPROGRESS: 115,\n EALREADY: 114,\n EDESTADDRREQ: 89,\n EMSGSIZE: 90,\n EPROTONOSUPPORT: 93,\n ESOCKTNOSUPPORT: 94,\n EADDRNOTAVAIL: 99,\n ENETRESET: 102,\n EISCONN: 106,\n ENOTCONN: 107,\n ETOOMANYREFS: 109,\n EUSERS: 87,\n EDQUOT: 122,\n ESTALE: 116,\n ENOTSUP: 95,\n ENOMEDIUM: 123,\n EILSEQ: 84,\n EOVERFLOW: 75,\n ECANCELED: 125,\n ENOTRECOVERABLE: 131,\n EOWNERDEAD: 130,\n ESTRPIPE: 86,\n};\nvar FS = {\n root: null,\n mounts: [],\n devices: {},\n streams: [],\n nextInode: 1,\n nameTable: null,\n currentPath: \"/\",\n initialized: false,\n ignorePermissions: true,\n trackingDelegate: {},\n tracking: { openFlags: { READ: 1, WRITE: 2 } },\n ErrnoError: null,\n genericErrors: {},\n filesystems: null,\n syncFSRequests: 0,\n handleFSError: function (e) {\n if (!(e instanceof FS.ErrnoError)) throw e + \" : \" + stackTrace();\n return ___setErrNo(e.errno);\n },\n lookupPath: function (path, opts) {\n path = PATH_FS.resolve(FS.cwd(), path);\n opts = opts || {};\n if (!path) return { path: \"\", node: null };\n var defaults = { follow_mount: true, recurse_count: 0 };\n for (var key in defaults) {\n if (opts[key] === undefined) {\n opts[key] = defaults[key];\n }\n }\n if (opts.recurse_count > 8) {\n throw new FS.ErrnoError(40);\n }\n var parts = PATH.normalizeArray(\n path.split(\"/\").filter(function (p) {\n return !!p;\n }),\n false,\n );\n var current = FS.root;\n var current_path = \"/\";\n for (var i = 0; i < parts.length; i++) {\n var islast = i === parts.length - 1;\n if (islast && opts.parent) {\n break;\n }\n current = FS.lookupNode(current, parts[i]);\n current_path = PATH.join2(current_path, parts[i]);\n if (FS.isMountpoint(current)) {\n if (!islast || (islast && opts.follow_mount)) {\n current = current.mounted.root;\n }\n }\n if (!islast || opts.follow) {\n var count = 0;\n while (FS.isLink(current.mode)) {\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n var lookup = FS.lookupPath(current_path, {\n recurse_count: opts.recurse_count,\n });\n current = lookup.node;\n if (count++ > 40) {\n throw new FS.ErrnoError(40);\n }\n }\n }\n }\n return { path: current_path, node: current };\n },\n getPath: function (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] !== \"/\"\n ? mount + \"/\" + path\n : mount + path;\n }\n path = path ? node.name + \"/\" + path : node.name;\n node = node.parent;\n }\n },\n hashName: function (parentid, name) {\n var hash = 0;\n for (var i = 0; i < name.length; i++) {\n hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0;\n }\n return ((parentid + hash) >>> 0) % FS.nameTable.length;\n },\n hashAddNode: function (node) {\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n },\n hashRemoveNode: function (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 },\n lookupNode: function (parent, name) {\n var err = FS.mayLookup(parent);\n if (err) {\n throw new FS.ErrnoError(err, parent);\n }\n var hash = FS.hashName(parent.id, name);\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 === name) {\n return node;\n }\n }\n return FS.lookup(parent, name);\n },\n createNode: function (parent, name, mode, rdev) {\n if (!FS.FSNode) {\n FS.FSNode = function (parent, name, mode, rdev) {\n if (!parent) {\n parent = this;\n }\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n };\n FS.FSNode.prototype = {};\n var readMode = 292 | 73;\n var writeMode = 146;\n Object.defineProperties(FS.FSNode.prototype, {\n read: {\n get: function () {\n return (this.mode & readMode) === readMode;\n },\n set: function (val) {\n val ? (this.mode |= readMode) : (this.mode &= ~readMode);\n },\n },\n write: {\n get: function () {\n return (this.mode & writeMode) === writeMode;\n },\n set: function (val) {\n val ? (this.mode |= writeMode) : (this.mode &= ~writeMode);\n },\n },\n isFolder: {\n get: function () {\n return FS.isDir(this.mode);\n },\n },\n isDevice: {\n get: function () {\n return FS.isChrdev(this.mode);\n },\n },\n });\n }\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n },\n destroyNode: function (node) {\n FS.hashRemoveNode(node);\n },\n isRoot: function (node) {\n return node === node.parent;\n },\n isMountpoint: function (node) {\n return !!node.mounted;\n },\n isFile: function (mode) {\n return (mode & 61440) === 32768;\n },\n isDir: function (mode) {\n return (mode & 61440) === 16384;\n },\n isLink: function (mode) {\n return (mode & 61440) === 40960;\n },\n isChrdev: function (mode) {\n return (mode & 61440) === 8192;\n },\n isBlkdev: function (mode) {\n return (mode & 61440) === 24576;\n },\n isFIFO: function (mode) {\n return (mode & 61440) === 4096;\n },\n isSocket: function (mode) {\n return (mode & 49152) === 49152;\n },\n flagModes: {\n r: 0,\n rs: 1052672,\n \"r+\": 2,\n w: 577,\n wx: 705,\n xw: 705,\n \"w+\": 578,\n \"wx+\": 706,\n \"xw+\": 706,\n a: 1089,\n ax: 1217,\n xa: 1217,\n \"a+\": 1090,\n \"ax+\": 1218,\n \"xa+\": 1218,\n },\n modeStringToFlags: function (str) {\n var flags = FS.flagModes[str];\n if (typeof flags === \"undefined\") {\n throw new Error(\"Unknown file open mode: \" + str);\n }\n return flags;\n },\n flagsToPermissionString: function (flag) {\n var perms = [\"r\", \"w\", \"rw\"][flag & 3];\n if (flag & 512) {\n perms += \"w\";\n }\n return perms;\n },\n nodePermissions: function (node, perms) {\n if (FS.ignorePermissions) {\n return 0;\n }\n if (perms.indexOf(\"r\") !== -1 && !(node.mode & 292)) {\n return 13;\n } else if (perms.indexOf(\"w\") !== -1 && !(node.mode & 146)) {\n return 13;\n } else if (perms.indexOf(\"x\") !== -1 && !(node.mode & 73)) {\n return 13;\n }\n return 0;\n },\n mayLookup: function (dir) {\n var err = FS.nodePermissions(dir, \"x\");\n if (err) return err;\n if (!dir.node_ops.lookup) return 13;\n return 0;\n },\n mayCreate: function (dir, name) {\n try {\n var node = FS.lookupNode(dir, name);\n return 17;\n } catch (e) {}\n return FS.nodePermissions(dir, \"wx\");\n },\n mayDelete: function (dir, name, isdir) {\n var node;\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n var err = FS.nodePermissions(dir, \"wx\");\n if (err) {\n return err;\n }\n if (isdir) {\n if (!FS.isDir(node.mode)) {\n return 20;\n }\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {\n return 16;\n }\n } else {\n if (FS.isDir(node.mode)) {\n return 21;\n }\n }\n return 0;\n },\n mayOpen: function (node, flags) {\n if (!node) {\n return 2;\n }\n if (FS.isLink(node.mode)) {\n return 40;\n } else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) {\n return 21;\n }\n }\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n },\n MAX_OPEN_FDS: 4096,\n nextfd: function (fd_start, fd_end) {\n fd_start = fd_start || 0;\n fd_end = fd_end || FS.MAX_OPEN_FDS;\n for (var fd = fd_start; fd <= fd_end; fd++) {\n if (!FS.streams[fd]) {\n return fd;\n }\n }\n throw new FS.ErrnoError(24);\n },\n getStream: function (fd) {\n return FS.streams[fd];\n },\n createStream: function (stream, fd_start, fd_end) {\n if (!FS.FSStream) {\n FS.FSStream = function () {};\n FS.FSStream.prototype = {};\n Object.defineProperties(FS.FSStream.prototype, {\n object: {\n get: function () {\n return this.node;\n },\n set: function (val) {\n this.node = val;\n },\n },\n isRead: {\n get: function () {\n return (this.flags & 2097155) !== 1;\n },\n },\n isWrite: {\n get: function () {\n return (this.flags & 2097155) !== 0;\n },\n },\n isAppend: {\n get: function () {\n return this.flags & 1024;\n },\n },\n });\n }\n var newStream = new FS.FSStream();\n for (var p in stream) {\n newStream[p] = stream[p];\n }\n stream = newStream;\n var fd = FS.nextfd(fd_start, fd_end);\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n },\n closeStream: function (fd) {\n FS.streams[fd] = null;\n },\n chrdev_stream_ops: {\n open: function (stream) {\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n },\n llseek: function () {\n throw new FS.ErrnoError(29);\n },\n },\n major: function (dev) {\n return dev >> 8;\n },\n minor: function (dev) {\n return dev & 255;\n },\n makedev: function (ma, mi) {\n return (ma << 8) | mi;\n },\n registerDevice: function (dev, ops) {\n FS.devices[dev] = { stream_ops: ops };\n },\n getDevice: function (dev) {\n return FS.devices[dev];\n },\n getMounts: function (mount) {\n var mounts = [];\n var check = [mount];\n while (check.length) {\n var m = check.pop();\n mounts.push(m);\n check.push.apply(check, m.mounts);\n }\n return mounts;\n },\n syncfs: function (populate, callback) {\n if (typeof populate === \"function\") {\n callback = populate;\n populate = false;\n }\n FS.syncFSRequests++;\n if (FS.syncFSRequests > 1) {\n console.log(\n \"warning: \" +\n FS.syncFSRequests +\n \" FS.syncfs operations in flight at once, probably just doing extra work\",\n );\n }\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n function doCallback(err) {\n assert(FS.syncFSRequests > 0);\n FS.syncFSRequests--;\n return callback(err);\n }\n function done(err) {\n if (err) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(err);\n }\n return;\n }\n if (++completed >= mounts.length) {\n doCallback(null);\n }\n }\n mounts.forEach(function (mount) {\n if (!mount.type.syncfs) {\n return done(null);\n }\n mount.type.syncfs(mount, populate, done);\n });\n },\n mount: function (type, opts, mountpoint) {\n var root = mountpoint === \"/\";\n var pseudo = !mountpoint;\n var node;\n if (root && FS.root) {\n throw new FS.ErrnoError(16);\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(16);\n }\n if (!FS.isDir(node.mode)) {\n throw new FS.ErrnoError(20);\n }\n }\n var mount = { type: type, opts: opts, mountpoint: 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 },\n unmount: function (mountpoint) {\n var lookup = FS.lookupPath(mountpoint, { follow_mount: false });\n if (!FS.isMountpoint(lookup.node)) {\n throw new FS.ErrnoError(22);\n }\n var node = lookup.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach(function (hash) {\n var current = FS.nameTable[hash];\n while (current) {\n var next = current.name_next;\n if (mounts.indexOf(current.mount) !== -1) {\n FS.destroyNode(current);\n }\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n assert(idx !== -1);\n node.mount.mounts.splice(idx, 1);\n },\n lookup: function (parent, name) {\n return parent.node_ops.lookup(parent, name);\n },\n mknod: function (path, mode, dev) {\n var lookup = FS.lookupPath(path, { parent: true });\n var parent = lookup.node;\n var name = PATH.basename(path);\n if (!name || name === \".\" || name === \"..\") {\n throw new FS.ErrnoError(22);\n }\n var err = FS.mayCreate(parent, name);\n if (err) {\n throw new FS.ErrnoError(err);\n }\n if (!parent.node_ops.mknod) {\n throw new FS.ErrnoError(1);\n }\n return parent.node_ops.mknod(parent, name, mode, dev);\n },\n create: function (path, mode) {\n mode = mode !== undefined ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n },\n mkdir: function (path, mode) {\n mode = mode !== undefined ? mode : 511;\n mode &= 511 | 512;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n },\n mkdirTree: function (path, mode) {\n var dirs = path.split(\"/\");\n var d = \"\";\n for (var i = 0; i < dirs.length; ++i) {\n if (!dirs[i]) continue;\n d += \"/\" + dirs[i];\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 17) throw e;\n }\n }\n },\n mkdev: function (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 },\n symlink: function (oldpath, newpath) {\n if (!PATH_FS.resolve(oldpath)) {\n throw new FS.ErrnoError(2);\n }\n var lookup = FS.lookupPath(newpath, { parent: true });\n var parent = lookup.node;\n if (!parent) {\n throw new FS.ErrnoError(2);\n }\n var newname = PATH.basename(newpath);\n var err = FS.mayCreate(parent, newname);\n if (err) {\n throw new FS.ErrnoError(err);\n }\n if (!parent.node_ops.symlink) {\n throw new FS.ErrnoError(1);\n }\n return parent.node_ops.symlink(parent, newname, oldpath);\n },\n rename: function (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 try {\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 } catch (e) {\n throw new FS.ErrnoError(16);\n }\n if (!old_dir || !new_dir) throw new FS.ErrnoError(2);\n if (old_dir.mount !== new_dir.mount) {\n throw new FS.ErrnoError(18);\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(22);\n }\n relative = PATH_FS.relative(new_path, old_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(39);\n }\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (old_node === new_node) {\n return;\n }\n var isdir = FS.isDir(old_node.mode);\n var err = FS.mayDelete(old_dir, old_name, isdir);\n if (err) {\n throw new FS.ErrnoError(err);\n }\n err = new_node\n ? FS.mayDelete(new_dir, new_name, isdir)\n : FS.mayCreate(new_dir, new_name);\n if (err) {\n throw new FS.ErrnoError(err);\n }\n if (!old_dir.node_ops.rename) {\n throw new FS.ErrnoError(1);\n }\n if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) {\n throw new FS.ErrnoError(16);\n }\n if (new_dir !== old_dir) {\n err = FS.nodePermissions(old_dir, \"w\");\n if (err) {\n throw new FS.ErrnoError(err);\n }\n }\n try {\n if (FS.trackingDelegate[\"willMovePath\"]) {\n FS.trackingDelegate[\"willMovePath\"](old_path, new_path);\n }\n } catch (e) {\n console.log(\n \"FS.trackingDelegate['willMovePath']('\" +\n old_path +\n \"', '\" +\n new_path +\n \"') threw an exception: \" +\n e.message,\n );\n }\n FS.hashRemoveNode(old_node);\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n } catch (e) {\n throw e;\n } finally {\n FS.hashAddNode(old_node);\n }\n try {\n if (FS.trackingDelegate[\"onMovePath\"])\n FS.trackingDelegate[\"onMovePath\"](old_path, new_path);\n } catch (e) {\n console.log(\n \"FS.trackingDelegate['onMovePath']('\" +\n old_path +\n \"', '\" +\n new_path +\n \"') threw an exception: \" +\n e.message,\n );\n }\n },\n rmdir: function (path) {\n var lookup = FS.lookupPath(path, { parent: true });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var err = FS.mayDelete(parent, name, true);\n if (err) {\n throw new FS.ErrnoError(err);\n }\n if (!parent.node_ops.rmdir) {\n throw new FS.ErrnoError(1);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(16);\n }\n try {\n if (FS.trackingDelegate[\"willDeletePath\"]) {\n FS.trackingDelegate[\"willDeletePath\"](path);\n }\n } catch (e) {\n console.log(\n \"FS.trackingDelegate['willDeletePath']('\" +\n path +\n \"') threw an exception: \" +\n e.message,\n );\n }\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n try {\n if (FS.trackingDelegate[\"onDeletePath\"])\n FS.trackingDelegate[\"onDeletePath\"](path);\n } catch (e) {\n console.log(\n \"FS.trackingDelegate['onDeletePath']('\" +\n path +\n \"') threw an exception: \" +\n e.message,\n );\n }\n },\n readdir: function (path) {\n var lookup = FS.lookupPath(path, { follow: true });\n var node = lookup.node;\n if (!node.node_ops.readdir) {\n throw new FS.ErrnoError(20);\n }\n return node.node_ops.readdir(node);\n },\n unlink: function (path) {\n var lookup = FS.lookupPath(path, { parent: true });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var err = FS.mayDelete(parent, name, false);\n if (err) {\n throw new FS.ErrnoError(err);\n }\n if (!parent.node_ops.unlink) {\n throw new FS.ErrnoError(1);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(16);\n }\n try {\n if (FS.trackingDelegate[\"willDeletePath\"]) {\n FS.trackingDelegate[\"willDeletePath\"](path);\n }\n } catch (e) {\n console.log(\n \"FS.trackingDelegate['willDeletePath']('\" +\n path +\n \"') threw an exception: \" +\n e.message,\n );\n }\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n try {\n if (FS.trackingDelegate[\"onDeletePath\"])\n FS.trackingDelegate[\"onDeletePath\"](path);\n } catch (e) {\n console.log(\n \"FS.trackingDelegate['onDeletePath']('\" +\n path +\n \"') threw an exception: \" +\n e.message,\n );\n }\n },\n readlink: function (path) {\n var lookup = FS.lookupPath(path);\n var link = lookup.node;\n if (!link) {\n throw new FS.ErrnoError(2);\n }\n if (!link.node_ops.readlink) {\n throw new FS.ErrnoError(22);\n }\n return PATH_FS.resolve(\n FS.getPath(link.parent),\n link.node_ops.readlink(link),\n );\n },\n stat: function (path, dontFollow) {\n var lookup = FS.lookupPath(path, { follow: !dontFollow });\n var node = lookup.node;\n if (!node) {\n throw new FS.ErrnoError(2);\n }\n if (!node.node_ops.getattr) {\n throw new FS.ErrnoError(1);\n }\n return node.node_ops.getattr(node);\n },\n lstat: function (path) {\n return FS.stat(path, true);\n },\n chmod: function (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 if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(1);\n }\n node.node_ops.setattr(node, {\n mode: (mode & 4095) | (node.mode & ~4095),\n timestamp: Date.now(),\n });\n },\n lchmod: function (path, mode) {\n FS.chmod(path, mode, true);\n },\n fchmod: function (fd, mode) {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(9);\n }\n FS.chmod(stream.node, mode);\n },\n chown: function (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 if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(1);\n }\n node.node_ops.setattr(node, { timestamp: Date.now() });\n },\n lchown: function (path, uid, gid) {\n FS.chown(path, uid, gid, true);\n },\n fchown: function (fd, uid, gid) {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(9);\n }\n FS.chown(stream.node, uid, gid);\n },\n truncate: function (path, len) {\n if (len < 0) {\n throw new FS.ErrnoError(22);\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 if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(1);\n }\n if (FS.isDir(node.mode)) {\n throw new FS.ErrnoError(21);\n }\n if (!FS.isFile(node.mode)) {\n throw new FS.ErrnoError(22);\n }\n var err = FS.nodePermissions(node, \"w\");\n if (err) {\n throw new FS.ErrnoError(err);\n }\n node.node_ops.setattr(node, { size: len, timestamp: Date.now() });\n },\n ftruncate: function (fd, len) {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(9);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(22);\n }\n FS.truncate(stream.node, len);\n },\n utime: function (path, atime, mtime) {\n var lookup = FS.lookupPath(path, { follow: true });\n var node = lookup.node;\n node.node_ops.setattr(node, { timestamp: Math.max(atime, mtime) });\n },\n open: function (path, flags, mode, fd_start, fd_end) {\n if (path === \"\") {\n throw new FS.ErrnoError(2);\n }\n flags = typeof flags === \"string\" ? FS.modeStringToFlags(flags) : flags;\n mode = typeof mode === \"undefined\" ? 438 : mode;\n if (flags & 64) {\n mode = (mode & 4095) | 32768;\n } else {\n mode = 0;\n }\n var node;\n if (typeof path === \"object\") {\n node = path;\n } else {\n path = PATH.normalize(path);\n try {\n var lookup = FS.lookupPath(path, { follow: !(flags & 131072) });\n node = lookup.node;\n } catch (e) {}\n }\n var created = false;\n if (flags & 64) {\n if (node) {\n if (flags & 128) {\n throw new FS.ErrnoError(17);\n }\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n }\n if (!node) {\n throw new FS.ErrnoError(2);\n }\n if (FS.isChrdev(node.mode)) {\n flags &= ~512;\n }\n if (flags & 65536 && !FS.isDir(node.mode)) {\n throw new FS.ErrnoError(20);\n }\n if (!created) {\n var err = FS.mayOpen(node, flags);\n if (err) {\n throw new FS.ErrnoError(err);\n }\n }\n if (flags & 512) {\n FS.truncate(node, 0);\n }\n flags &= ~(128 | 512);\n var stream = FS.createStream(\n {\n node: node,\n path: FS.getPath(node),\n flags: flags,\n seekable: true,\n position: 0,\n stream_ops: node.stream_ops,\n ungotten: [],\n error: false,\n },\n fd_start,\n fd_end,\n );\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n if (Module[\"logReadFiles\"] && !(flags & 1)) {\n if (!FS.readFiles) FS.readFiles = {};\n if (!(path in FS.readFiles)) {\n FS.readFiles[path] = 1;\n console.log(\"FS.trackingDelegate error on read file: \" + path);\n }\n }\n try {\n if (FS.trackingDelegate[\"onOpenFile\"]) {\n var trackingFlags = 0;\n if ((flags & 2097155) !== 1) {\n trackingFlags |= FS.tracking.openFlags.READ;\n }\n if ((flags & 2097155) !== 0) {\n trackingFlags |= FS.tracking.openFlags.WRITE;\n }\n FS.trackingDelegate[\"onOpenFile\"](path, trackingFlags);\n }\n } catch (e) {\n console.log(\n \"FS.trackingDelegate['onOpenFile']('\" +\n path +\n \"', flags) threw an exception: \" +\n e.message,\n );\n }\n return stream;\n },\n close: function (stream) {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(9);\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 },\n isClosed: function (stream) {\n return stream.fd === null;\n },\n llseek: function (stream, offset, whence) {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(9);\n }\n if (!stream.seekable || !stream.stream_ops.llseek) {\n throw new FS.ErrnoError(29);\n }\n if (whence != 0 && whence != 1 && whence != 2) {\n throw new FS.ErrnoError(22);\n }\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n },\n read: function (stream, buffer, offset, length, position) {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(22);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(9);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(9);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(21);\n }\n if (!stream.stream_ops.read) {\n throw new FS.ErrnoError(22);\n }\n var seeking = typeof position !== \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(29);\n }\n var bytesRead = stream.stream_ops.read(\n stream,\n buffer,\n offset,\n length,\n position,\n );\n if (!seeking) stream.position += bytesRead;\n return bytesRead;\n },\n write: function (stream, buffer, offset, length, position, canOwn) {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(22);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(9);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(9);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(21);\n }\n if (!stream.stream_ops.write) {\n throw new FS.ErrnoError(22);\n }\n if (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(29);\n }\n var bytesWritten = stream.stream_ops.write(\n stream,\n buffer,\n offset,\n length,\n position,\n canOwn,\n );\n if (!seeking) stream.position += bytesWritten;\n try {\n if (stream.path && FS.trackingDelegate[\"onWriteToFile\"])\n FS.trackingDelegate[\"onWriteToFile\"](stream.path);\n } catch (e) {\n console.log(\n \"FS.trackingDelegate['onWriteToFile']('\" +\n stream.path +\n \"') threw an exception: \" +\n e.message,\n );\n }\n return bytesWritten;\n },\n allocate: function (stream, offset, length) {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(9);\n }\n if (offset < 0 || length <= 0) {\n throw new FS.ErrnoError(22);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(9);\n }\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(19);\n }\n if (!stream.stream_ops.allocate) {\n throw new FS.ErrnoError(95);\n }\n stream.stream_ops.allocate(stream, offset, length);\n },\n mmap: function (stream, buffer, offset, length, position, prot, flags) {\n if (\n (prot & 2) !== 0 &&\n (flags & 2) === 0 &&\n (stream.flags & 2097155) !== 2\n ) {\n throw new FS.ErrnoError(13);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(13);\n }\n if (!stream.stream_ops.mmap) {\n throw new FS.ErrnoError(19);\n }\n return stream.stream_ops.mmap(\n stream,\n buffer,\n offset,\n length,\n position,\n prot,\n flags,\n );\n },\n msync: function (stream, buffer, offset, length, mmapFlags) {\n if (!stream || !stream.stream_ops.msync) {\n return 0;\n }\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n },\n munmap: function (stream) {\n return 0;\n },\n ioctl: function (stream, cmd, arg) {\n if (!stream.stream_ops.ioctl) {\n throw new FS.ErrnoError(25);\n }\n return stream.stream_ops.ioctl(stream, cmd, arg);\n },\n readFile: function (path, opts) {\n opts = opts || {};\n opts.flags = opts.flags || \"r\";\n opts.encoding = opts.encoding || \"binary\";\n if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") {\n throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\n }\n var ret;\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 ret = UTF8ArrayToString(buf, 0);\n } else if (opts.encoding === \"binary\") {\n ret = buf;\n }\n FS.close(stream);\n return ret;\n },\n writeFile: function (path, data, opts) {\n opts = opts || {};\n opts.flags = opts.flags || \"w\";\n var stream = FS.open(path, opts.flags, opts.mode);\n if (typeof data === \"string\") {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) {\n FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn);\n } else {\n throw new Error(\"Unsupported data type\");\n }\n FS.close(stream);\n },\n cwd: function () {\n return FS.currentPath;\n },\n chdir: function (path) {\n var lookup = FS.lookupPath(path, { follow: true });\n if (lookup.node === null) {\n throw new FS.ErrnoError(2);\n }\n if (!FS.isDir(lookup.node.mode)) {\n throw new FS.ErrnoError(20);\n }\n var err = FS.nodePermissions(lookup.node, \"x\");\n if (err) {\n throw new FS.ErrnoError(err);\n }\n FS.currentPath = lookup.path;\n },\n createDefaultDirectories: function () {\n FS.mkdir(\"/tmp\");\n FS.mkdir(\"/home\");\n FS.mkdir(\"/home/web_user\");\n },\n createDefaultDevices: function () {\n FS.mkdir(\"/dev\");\n FS.registerDevice(FS.makedev(1, 3), {\n read: function () {\n return 0;\n },\n write: function (stream, buffer, offset, length, pos) {\n return length;\n },\n });\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 random_device;\n if (\n typeof crypto === \"object\" &&\n typeof crypto[\"getRandomValues\"] === \"function\"\n ) {\n var randomBuffer = new Uint8Array(1);\n random_device = function () {\n crypto.getRandomValues(randomBuffer);\n return randomBuffer[0];\n };\n } else if (ENVIRONMENT_IS_NODE) {\n try {\n var crypto_module = require(\"crypto\");\n random_device = function () {\n return crypto_module[\"randomBytes\"](1)[0];\n };\n } catch (e) {}\n } else {\n }\n if (!random_device) {\n random_device = function () {\n abort(\n \"no cryptographic support found for random_device. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };\",\n );\n };\n }\n FS.createDevice(\"/dev\", \"random\", random_device);\n FS.createDevice(\"/dev\", \"urandom\", random_device);\n FS.mkdir(\"/dev/shm\");\n FS.mkdir(\"/dev/shm/tmp\");\n },\n createSpecialDirectories: function () {\n FS.mkdir(\"/proc\");\n FS.mkdir(\"/proc/self\");\n FS.mkdir(\"/proc/self/fd\");\n FS.mount(\n {\n mount: function () {\n var node = FS.createNode(\"/proc/self\", \"fd\", 16384 | 511, 73);\n node.node_ops = {\n lookup: function (parent, name) {\n var fd = +name;\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(9);\n var ret = {\n parent: null,\n mount: { mountpoint: \"fake\" },\n node_ops: {\n readlink: function () {\n return stream.path;\n },\n },\n };\n ret.parent = ret;\n return ret;\n },\n };\n return node;\n },\n },\n {},\n \"/proc/self/fd\",\n );\n },\n createStandardStreams: function () {\n if (Module[\"stdin\"]) {\n FS.createDevice(\"/dev\", \"stdin\", Module[\"stdin\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n }\n if (Module[\"stdout\"]) {\n FS.createDevice(\"/dev\", \"stdout\", null, Module[\"stdout\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n }\n if (Module[\"stderr\"]) {\n FS.createDevice(\"/dev\", \"stderr\", null, Module[\"stderr\"]);\n } else {\n FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n }\n var stdin = FS.open(\"/dev/stdin\", \"r\");\n var stdout = FS.open(\"/dev/stdout\", \"w\");\n var stderr = FS.open(\"/dev/stderr\", \"w\");\n assert(stdin.fd === 0, \"invalid handle for stdin (\" + stdin.fd + \")\");\n assert(stdout.fd === 1, \"invalid handle for stdout (\" + stdout.fd + \")\");\n assert(stderr.fd === 2, \"invalid handle for stderr (\" + stderr.fd + \")\");\n },\n ensureErrnoError: function () {\n if (FS.ErrnoError) return;\n FS.ErrnoError = function ErrnoError(errno, node) {\n this.node = node;\n this.setErrno = function (errno) {\n this.errno = errno;\n for (var key in ERRNO_CODES) {\n if (ERRNO_CODES[key] === errno) {\n this.code = key;\n break;\n }\n }\n };\n this.setErrno(errno);\n this.message = ERRNO_MESSAGES[errno];\n if (this.stack)\n Object.defineProperty(this, \"stack\", {\n value: new Error().stack,\n writable: true,\n });\n if (this.stack) this.stack = demangleAll(this.stack);\n };\n FS.ErrnoError.prototype = new Error();\n FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n [2].forEach(function (code) {\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = \"<generic error, no stack>\";\n });\n },\n staticInit: function () {\n FS.ensureErrnoError();\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, \"/\");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = {\n MEMFS: MEMFS,\n IDBFS: IDBFS,\n NODEFS: NODEFS,\n WORKERFS: WORKERFS,\n };\n },\n init: function (input, output, error) {\n assert(\n !FS.init.initialized,\n \"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)\",\n );\n FS.init.initialized = true;\n FS.ensureErrnoError();\n Module[\"stdin\"] = input || Module[\"stdin\"];\n Module[\"stdout\"] = output || Module[\"stdout\"];\n Module[\"stderr\"] = error || Module[\"stderr\"];\n FS.createStandardStreams();\n },\n quit: function () {\n FS.init.initialized = false;\n var fflush = Module[\"_fflush\"];\n if (fflush) fflush(0);\n for (var i = 0; i < FS.streams.length; i++) {\n var stream = FS.streams[i];\n if (!stream) {\n continue;\n }\n FS.close(stream);\n }\n },\n getMode: function (canRead, canWrite) {\n var mode = 0;\n if (canRead) mode |= 292 | 73;\n if (canWrite) mode |= 146;\n return mode;\n },\n joinPath: function (parts, forceRelative) {\n var path = PATH.join.apply(null, parts);\n if (forceRelative && path[0] == \"/\") path = path.substr(1);\n return path;\n },\n absolutePath: function (relative, base) {\n return PATH_FS.resolve(base, relative);\n },\n standardizePath: function (path) {\n return PATH.normalize(path);\n },\n findObject: function (path, dontResolveLastLink) {\n var ret = FS.analyzePath(path, dontResolveLastLink);\n if (ret.exists) {\n return ret.object;\n } else {\n ___setErrNo(ret.error);\n return null;\n }\n },\n analyzePath: function (path, dontResolveLastLink) {\n try {\n var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });\n path = lookup.path;\n } catch (e) {}\n var ret = {\n isRoot: false,\n exists: false,\n error: 0,\n name: null,\n path: null,\n object: null,\n parentExists: false,\n parentPath: null,\n parentObject: null,\n };\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 },\n createFolder: function (parent, name, canRead, canWrite) {\n var path = PATH.join2(\n typeof parent === \"string\" ? parent : FS.getPath(parent),\n name,\n );\n var mode = FS.getMode(canRead, canWrite);\n return FS.mkdir(path, mode);\n },\n createPath: function (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 parent = current;\n }\n return current;\n },\n createFile: function (parent, name, properties, canRead, canWrite) {\n var path = PATH.join2(\n typeof parent === \"string\" ? parent : FS.getPath(parent),\n name,\n );\n var mode = FS.getMode(canRead, canWrite);\n return FS.create(path, mode);\n },\n createDataFile: function (parent, name, data, canRead, canWrite, canOwn) {\n var path = name\n ? PATH.join2(\n typeof parent === \"string\" ? parent : FS.getPath(parent),\n name,\n )\n : parent;\n var mode = FS.getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n if (data) {\n if (typeof data === \"string\") {\n var arr = new Array(data.length);\n for (var i = 0, len = data.length; i < len; ++i)\n arr[i] = data.charCodeAt(i);\n data = arr;\n }\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, \"w\");\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n return node;\n },\n createDevice: function (parent, name, input, output) {\n var path = PATH.join2(\n typeof parent === \"string\" ? parent : FS.getPath(parent),\n name,\n );\n var mode = FS.getMode(!!input, !!output);\n if (!FS.createDevice.major) FS.createDevice.major = 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, {\n open: function (stream) {\n stream.seekable = false;\n },\n close: function (stream) {\n if (output && output.buffer && output.buffer.length) {\n output(10);\n }\n },\n read: function (stream, buffer, offset, length, pos) {\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(5);\n }\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(11);\n }\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n },\n write: function (stream, buffer, offset, length, pos) {\n for (var i = 0; i < length; i++) {\n try {\n output(buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(5);\n }\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n },\n });\n return FS.mkdev(path, mode, dev);\n },\n createLink: function (parent, name, target, canRead, canWrite) {\n var path = PATH.join2(\n typeof parent === \"string\" ? parent : FS.getPath(parent),\n name,\n );\n return FS.symlink(target, path);\n },\n forceLoadFile: function (obj) {\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n var success = true;\n if (typeof XMLHttpRequest !== \"undefined\") {\n throw new Error(\n \"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 );\n } else if (read_) {\n try {\n obj.contents = intArrayFromString(read_(obj.url), true);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n success = false;\n }\n } else {\n throw new Error(\"Cannot load without read() or XMLHttpRequest.\");\n }\n if (!success) ___setErrNo(5);\n return success;\n },\n createLazyFile: function (parent, name, url, canRead, canWrite) {\n function LazyUint8Array() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n if (idx > this.length - 1 || idx < 0) {\n return undefined;\n }\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = (idx / this.chunkSize) | 0;\n return this.getter(chunkNum)[chunkOffset];\n };\n LazyUint8Array.prototype.setDataGetter =\n function LazyUint8Array_setDataGetter(getter) {\n this.getter = getter;\n };\n LazyUint8Array.prototype.cacheLength =\n function LazyUint8Array_cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false);\n xhr.send(null);\n if (!((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304))\n throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n var header;\n var hasByteServing =\n (header = xhr.getResponseHeader(\"Accept-Ranges\")) &&\n header === \"bytes\";\n var usesGzip =\n (header = xhr.getResponseHeader(\"Content-Encoding\")) &&\n header === \"gzip\";\n var chunkSize = 1024 * 1024;\n if (!hasByteServing) chunkSize = datalength;\n var doXHR = function (from, to) {\n if (from > to)\n throw new Error(\n \"invalid range (\" + from + \", \" + to + \") or no bytes requested!\",\n );\n if (to > datalength - 1)\n throw new Error(\n \"only \" + datalength + \" bytes available! programmer error!\",\n );\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n if (datalength !== chunkSize)\n xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n if (typeof Uint8Array != \"undefined\")\n xhr.responseType = \"arraybuffer\";\n if (xhr.overrideMimeType) {\n xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n }\n xhr.send(null);\n if (!((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304))\n throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n if (xhr.response !== undefined) {\n return new Uint8Array(xhr.response || []);\n } else {\n return intArrayFromString(xhr.responseText || \"\", true);\n }\n };\n var lazyArray = this;\n lazyArray.setDataGetter(function (chunkNum) {\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n if (typeof lazyArray.chunks[chunkNum] === \"undefined\") {\n lazyArray.chunks[chunkNum] = doXHR(start, end);\n }\n if (typeof lazyArray.chunks[chunkNum] === \"undefined\")\n throw new Error(\"doXHR failed!\");\n return lazyArray.chunks[chunkNum];\n });\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n console.log(\n \"LazyFiles on gzip forces download of the whole file when length is accessed\",\n );\n }\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n };\n if (typeof XMLHttpRequest !== \"undefined\") {\n if (!ENVIRONMENT_IS_WORKER)\n throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n var lazyArray = new LazyUint8Array();\n Object.defineProperties(lazyArray, {\n length: {\n get: function () {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._length;\n },\n },\n chunkSize: {\n get: function () {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._chunkSize;\n },\n },\n });\n var properties = { isDevice: false, contents: lazyArray };\n } else {\n var properties = { isDevice: false, url: url };\n }\n var node = FS.createFile(parent, name, 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, {\n usedBytes: {\n get: function () {\n return this.contents.length;\n },\n },\n });\n var stream_ops = {};\n var keys = Object.keys(node.stream_ops);\n keys.forEach(function (key) {\n var fn = node.stream_ops[key];\n stream_ops[key] = function forceLoadLazyFile() {\n if (!FS.forceLoadFile(node)) {\n throw new FS.ErrnoError(5);\n }\n return fn.apply(null, arguments);\n };\n });\n stream_ops.read = function stream_ops_read(\n stream,\n buffer,\n offset,\n length,\n position,\n ) {\n if (!FS.forceLoadFile(node)) {\n throw new FS.ErrnoError(5);\n }\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n assert(size >= 0);\n if (contents.slice) {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents[position + i];\n }\n } else {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents.get(position + i);\n }\n }\n return size;\n };\n node.stream_ops = stream_ops;\n return node;\n },\n createPreloadedFile: function (\n parent,\n name,\n url,\n canRead,\n canWrite,\n onload,\n onerror,\n dontCreateFile,\n canOwn,\n preFinish,\n ) {\n Browser.init();\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n var dep = getUniqueRunDependency(\"cp \" + fullname);\n function processData(byteArray) {\n function finish(byteArray) {\n if (preFinish) preFinish();\n if (!dontCreateFile) {\n FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n }\n if (onload) onload();\n removeRunDependency(dep);\n }\n var handled = false;\n Module[\"preloadPlugins\"].forEach(function (plugin) {\n if (handled) return;\n if (plugin[\"canHandle\"](fullname)) {\n plugin[\"handle\"](byteArray, fullname, finish, function () {\n if (onerror) onerror();\n removeRunDependency(dep);\n });\n handled = true;\n }\n });\n if (!handled) finish(byteArray);\n }\n addRunDependency(dep);\n if (typeof url == \"string\") {\n Browser.asyncLoad(\n url,\n function (byteArray) {\n processData(byteArray);\n },\n onerror,\n );\n } else {\n processData(url);\n }\n },\n indexedDB: function () {\n return (\n window.indexedDB ||\n window.mozIndexedDB ||\n window.webkitIndexedDB ||\n window.msIndexedDB\n );\n },\n DB_NAME: function () {\n return \"EM_FS_\" + window.location.pathname;\n },\n DB_VERSION: 20,\n DB_STORE_NAME: \"FILE_DATA\",\n saveFilesToDB: function (paths, onload, onerror) {\n onload = onload || function () {};\n onerror = onerror || function () {};\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = function openRequest_onupgradeneeded() {\n console.log(\"creating db\");\n var db = openRequest.result;\n db.createObjectStore(FS.DB_STORE_NAME);\n };\n openRequest.onsuccess = function openRequest_onsuccess() {\n var db = openRequest.result;\n var transaction = db.transaction([FS.DB_STORE_NAME], \"readwrite\");\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0,\n fail = 0,\n total = paths.length;\n function finish() {\n if (fail == 0) onload();\n else onerror();\n }\n paths.forEach(function (path) {\n var putRequest = files.put(FS.analyzePath(path).object.contents, path);\n putRequest.onsuccess = function putRequest_onsuccess() {\n ok++;\n if (ok + fail == total) finish();\n };\n putRequest.onerror = function putRequest_onerror() {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n },\n loadFilesFromDB: function (paths, onload, onerror) {\n onload = onload || function () {};\n onerror = onerror || function () {};\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = onerror;\n openRequest.onsuccess = function openRequest_onsuccess() {\n var db = openRequest.result;\n try {\n var transaction = db.transaction([FS.DB_STORE_NAME], \"readonly\");\n } catch (e) {\n onerror(e);\n return;\n }\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0,\n fail = 0,\n total = paths.length;\n function finish() {\n if (fail == 0) onload();\n else onerror();\n }\n paths.forEach(function (path) {\n var getRequest = files.get(path);\n getRequest.onsuccess = function getRequest_onsuccess() {\n if (FS.analyzePath(path).exists) {\n FS.unlink(path);\n }\n FS.createDataFile(\n PATH.dirname(path),\n PATH.basename(path),\n getRequest.result,\n true,\n true,\n true,\n );\n ok++;\n if (ok + fail == total) finish();\n };\n getRequest.onerror = function getRequest_onerror() {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n },\n};\nfunction _emscripten_set_main_loop_timing(mode, value) {\n Browser.mainLoop.timingMode = mode;\n Browser.mainLoop.timingValue = value;\n if (!Browser.mainLoop.func) {\n console.error(\n \"emscripten_set_main_loop_timing: Cannot set timing mode for main loop since a main loop does not exist! Call emscripten_set_main_loop first to set one up.\",\n );\n return 1;\n }\n if (mode == 0) {\n Browser.mainLoop.scheduler =\n function Browser_mainLoop_scheduler_setTimeout() {\n var timeUntilNextTick =\n Math.max(\n 0,\n Browser.mainLoop.tickStartTime + value - _emscripten_get_now(),\n ) | 0;\n setTimeout(Browser.mainLoop.runner, timeUntilNextTick);\n };\n Browser.mainLoop.method = \"timeout\";\n } else if (mode == 1) {\n Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_rAF() {\n Browser.requestAnimationFrame(Browser.mainLoop.runner);\n };\n Browser.mainLoop.method = \"rAF\";\n } else if (mode == 2) {\n if (typeof setImmediate === \"undefined\") {\n var setImmediates = [];\n var emscriptenMainLoopMessageId = \"setimmediate\";\n var Browser_setImmediate_messageHandler = function (event) {\n if (\n event.data === emscriptenMainLoopMessageId ||\n event.data.target === emscriptenMainLoopMessageId\n ) {\n event.stopPropagation();\n setImmediates.shift()();\n }\n };\n addEventListener(\"message\", Browser_setImmediate_messageHandler, true);\n setImmediate = function Browser_emulated_setImmediate(func) {\n setImmediates.push(func);\n if (ENVIRONMENT_IS_WORKER) {\n if (Module[\"setImmediates\"] === undefined)\n Module[\"setImmediates\"] = [];\n Module[\"setImmediates\"].push(func);\n postMessage({ target: emscriptenMainLoopMessageId });\n } else postMessage(emscriptenMainLoopMessageId, \"*\");\n };\n }\n Browser.mainLoop.scheduler =\n function Browser_mainLoop_scheduler_setImmediate() {\n setImmediate(Browser.mainLoop.runner);\n };\n Browser.mainLoop.method = \"immediate\";\n }\n return 0;\n}\nfunction _emscripten_get_now() {\n abort();\n}\nfunction _emscripten_set_main_loop(\n func,\n fps,\n simulateInfiniteLoop,\n arg,\n noSetTiming,\n) {\n Module[\"noExitRuntime\"] = true;\n assert(\n !Browser.mainLoop.func,\n \"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.\",\n );\n Browser.mainLoop.func = func;\n Browser.mainLoop.arg = arg;\n var browserIterationFunc;\n if (typeof arg !== \"undefined\") {\n browserIterationFunc = function () {\n Module[\"dynCall_vi\"](func, arg);\n };\n } else {\n browserIterationFunc = function () {\n Module[\"dynCall_v\"](func);\n };\n }\n var thisMainLoopId = Browser.mainLoop.currentlyRunningMainloop;\n Browser.mainLoop.runner = function Browser_mainLoop_runner() {\n if (ABORT) return;\n if (Browser.mainLoop.queue.length > 0) {\n var start = Date.now();\n var blocker = Browser.mainLoop.queue.shift();\n blocker.func(blocker.arg);\n if (Browser.mainLoop.remainingBlockers) {\n var remaining = Browser.mainLoop.remainingBlockers;\n var next = remaining % 1 == 0 ? remaining - 1 : Math.floor(remaining);\n if (blocker.counted) {\n Browser.mainLoop.remainingBlockers = next;\n } else {\n next = next + 0.5;\n Browser.mainLoop.remainingBlockers = (8 * remaining + next) / 9;\n }\n }\n console.log(\n 'main loop blocker \"' +\n blocker.name +\n '\" took ' +\n (Date.now() - start) +\n \" ms\",\n );\n Browser.mainLoop.updateStatus();\n if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return;\n setTimeout(Browser.mainLoop.runner, 0);\n return;\n }\n if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return;\n Browser.mainLoop.currentFrameNumber =\n (Browser.mainLoop.currentFrameNumber + 1) | 0;\n if (\n Browser.mainLoop.timingMode == 1 &&\n Browser.mainLoop.timingValue > 1 &&\n Browser.mainLoop.currentFrameNumber % Browser.mainLoop.timingValue != 0\n ) {\n Browser.mainLoop.scheduler();\n return;\n } else if (Browser.mainLoop.timingMode == 0) {\n Browser.mainLoop.tickStartTime = _emscripten_get_now();\n }\n GL.newRenderingFrameStarted();\n if (Browser.mainLoop.method === \"timeout\" && Module.ctx) {\n err(\n \"Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!\",\n );\n Browser.mainLoop.method = \"\";\n }\n Browser.mainLoop.runIter(browserIterationFunc);\n checkStackCookie();\n if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return;\n if (typeof SDL === \"object\" && SDL.audio && SDL.audio.queueNewAudioData)\n SDL.audio.queueNewAudioData();\n Browser.mainLoop.scheduler();\n };\n if (!noSetTiming) {\n if (fps && fps > 0) _emscripten_set_main_loop_timing(0, 1e3 / fps);\n else _emscripten_set_main_loop_timing(1, 1);\n Browser.mainLoop.scheduler();\n }\n if (simulateInfiniteLoop) {\n throw \"SimulateInfiniteLoop\";\n }\n}\nvar Browser = {\n mainLoop: {\n scheduler: null,\n method: \"\",\n currentlyRunningMainloop: 0,\n func: null,\n arg: 0,\n timingMode: 0,\n timingValue: 0,\n currentFrameNumber: 0,\n queue: [],\n pause: function () {\n Browser.mainLoop.scheduler = null;\n Browser.mainLoop.currentlyRunningMainloop++;\n },\n resume: function () {\n Browser.mainLoop.currentlyRunningMainloop++;\n var timingMode = Browser.mainLoop.timingMode;\n var timingValue = Browser.mainLoop.timingValue;\n var func = Browser.mainLoop.func;\n Browser.mainLoop.func = null;\n _emscripten_set_main_loop(func, 0, false, Browser.mainLoop.arg, true);\n _emscripten_set_main_loop_timing(timingMode, timingValue);\n Browser.mainLoop.scheduler();\n },\n updateStatus: function () {\n if (Module[\"setStatus\"]) {\n var message = Module[\"statusMessage\"] || \"Please wait...\";\n var remaining = Browser.mainLoop.remainingBlockers;\n var expected = Browser.mainLoop.expectedBlockers;\n if (remaining) {\n if (remaining < expected) {\n Module[\"setStatus\"](\n message + \" (\" + (expected - remaining) + \"/\" + expected + \")\",\n );\n } else {\n Module[\"setStatus\"](message);\n }\n } else {\n Module[\"setStatus\"](\"\");\n }\n }\n },\n runIter: function (func) {\n if (ABORT) return;\n if (Module[\"preMainLoop\"]) {\n var preRet = Module[\"preMainLoop\"]();\n if (preRet === false) {\n return;\n }\n }\n try {\n func();\n } catch (e) {\n if (e instanceof ExitStatus) {\n return;\n } else {\n if (e && typeof e === \"object\" && e.stack)\n err(\"exception thrown: \" + [e, e.stack]);\n throw e;\n }\n }\n if (Module[\"postMainLoop\"]) Module[\"postMainLoop\"]();\n },\n },\n isFullscreen: false,\n pointerLock: false,\n moduleContextCreatedCallbacks: [],\n workers: [],\n init: function () {\n if (!Module[\"preloadPlugins\"]) Module[\"preloadPlugins\"] = [];\n if (Browser.initted) return;\n Browser.initted = true;\n try {\n new Blob();\n Browser.hasBlobConstructor = true;\n } catch (e) {\n Browser.hasBlobConstructor = false;\n console.log(\n \"warning: no blob constructor, cannot create blobs with mimetypes\",\n );\n }\n Browser.BlobBuilder =\n typeof MozBlobBuilder != \"undefined\"\n ? MozBlobBuilder\n : typeof WebKitBlobBuilder != \"undefined\"\n ? WebKitBlobBuilder\n : !Browser.hasBlobConstructor\n ? console.log(\"warning: no BlobBuilder\")\n : null;\n Browser.URLObject =\n typeof window != \"undefined\"\n ? window.URL\n ? window.URL\n : window.webkitURL\n : undefined;\n if (!Module.noImageDecoding && typeof Browser.URLObject === \"undefined\") {\n console.log(\n \"warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.\",\n );\n Module.noImageDecoding = true;\n }\n var imagePlugin = {};\n imagePlugin[\"canHandle\"] = function imagePlugin_canHandle(name) {\n return !Module.noImageDecoding && /\\.(jpg|jpeg|png|bmp)$/i.test(name);\n };\n imagePlugin[\"handle\"] = function imagePlugin_handle(\n byteArray,\n name,\n onload,\n onerror,\n ) {\n var b = null;\n if (Browser.hasBlobConstructor) {\n try {\n b = new Blob([byteArray], { type: Browser.getMimetype(name) });\n if (b.size !== byteArray.length) {\n b = new Blob([new Uint8Array(byteArray).buffer], {\n type: Browser.getMimetype(name),\n });\n }\n } catch (e) {\n warnOnce(\n \"Blob constructor present but fails: \" +\n e +\n \"; falling back to blob builder\",\n );\n }\n }\n if (!b) {\n var bb = new Browser.BlobBuilder();\n bb.append(new Uint8Array(byteArray).buffer);\n b = bb.getBlob();\n }\n var url = Browser.URLObject.createObjectURL(b);\n assert(\n typeof url == \"string\",\n \"createObjectURL must return a url as a string\",\n );\n var img = new Image();\n img.onload = function img_onload() {\n assert(img.complete, \"Image \" + name + \" could not be decoded\");\n var canvas = document.createElement(\"canvas\");\n canvas.width = img.width;\n canvas.height = img.height;\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0);\n Module[\"preloadedImages\"][name] = canvas;\n Browser.URLObject.revokeObjectURL(url);\n if (onload) onload(byteArray);\n };\n img.onerror = function img_onerror(event) {\n console.log(\"Image \" + url + \" could not be decoded\");\n if (onerror) onerror();\n };\n img.src = url;\n };\n Module[\"preloadPlugins\"].push(imagePlugin);\n var audioPlugin = {};\n audioPlugin[\"canHandle\"] = function audioPlugin_canHandle(name) {\n return (\n !Module.noAudioDecoding &&\n name.substr(-4) in { \".ogg\": 1, \".wav\": 1, \".mp3\": 1 }\n );\n };\n audioPlugin[\"handle\"] = function audioPlugin_handle(\n byteArray,\n name,\n onload,\n onerror,\n ) {\n var done = false;\n function finish(audio) {\n if (done) return;\n done = true;\n Module[\"preloadedAudios\"][name] = audio;\n if (onload) onload(byteArray);\n }\n function fail() {\n if (done) return;\n done = true;\n Module[\"preloadedAudios\"][name] = new Audio();\n if (onerror) onerror();\n }\n if (Browser.hasBlobConstructor) {\n try {\n var b = new Blob([byteArray], { type: Browser.getMimetype(name) });\n } catch (e) {\n return fail();\n }\n var url = Browser.URLObject.createObjectURL(b);\n assert(\n typeof url == \"string\",\n \"createObjectURL must return a url as a string\",\n );\n var audio = new Audio();\n audio.addEventListener(\n \"canplaythrough\",\n function () {\n finish(audio);\n },\n false,\n );\n audio.onerror = function audio_onerror(event) {\n if (done) return;\n console.log(\n \"warning: browser could not fully decode audio \" +\n name +\n \", trying slower base64 approach\",\n );\n function encode64(data) {\n var BASE =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var PAD = \"=\";\n var ret = \"\";\n var leftchar = 0;\n var leftbits = 0;\n for (var i = 0; i < data.length; i++) {\n leftchar = (leftchar << 8) | data[i];\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 =\n \"data:audio/x-\" +\n name.substr(-3) +\n \";base64,\" +\n encode64(byteArray);\n finish(audio);\n };\n audio.src = url;\n Browser.safeSetTimeout(function () {\n finish(audio);\n }, 1e4);\n } else {\n return fail();\n }\n };\n Module[\"preloadPlugins\"].push(audioPlugin);\n function pointerLockChange() {\n Browser.pointerLock =\n document[\"pointerLockElement\"] === Module[\"canvas\"] ||\n document[\"mozPointerLockElement\"] === Module[\"canvas\"] ||\n document[\"webkitPointerLockElement\"] === Module[\"canvas\"] ||\n document[\"msPointerLockElement\"] === Module[\"canvas\"];\n }\n var canvas = Module[\"canvas\"];\n if (canvas) {\n canvas.requestPointerLock =\n canvas[\"requestPointerLock\"] ||\n canvas[\"mozRequestPointerLock\"] ||\n canvas[\"webkitRequestPointerLock\"] ||\n canvas[\"msRequestPointerLock\"] ||\n function () {};\n canvas.exitPointerLock =\n document[\"exitPointerLock\"] ||\n document[\"mozExitPointerLock\"] ||\n document[\"webkitExitPointerLock\"] ||\n document[\"msExitPointerLock\"] ||\n function () {};\n canvas.exitPointerLock = canvas.exitPointerLock.bind(document);\n document.addEventListener(\"pointerlockchange\", pointerLockChange, false);\n document.addEventListener(\n \"mozpointerlockchange\",\n pointerLockChange,\n false,\n );\n document.addEventListener(\n \"webkitpointerlockchange\",\n pointerLockChange,\n false,\n );\n document.addEventListener(\n \"mspointerlockchange\",\n pointerLockChange,\n false,\n );\n if (Module[\"elementPointerLock\"]) {\n canvas.addEventListener(\n \"click\",\n function (ev) {\n if (!Browser.pointerLock && Module[\"canvas\"].requestPointerLock) {\n Module[\"canvas\"].requestPointerLock();\n ev.preventDefault();\n }\n },\n false,\n );\n }\n }\n },\n createContext: function (\n canvas,\n useWebGL,\n setInModule,\n webGLContextAttributes,\n ) {\n if (useWebGL && Module.ctx && canvas == Module.canvas) return Module.ctx;\n var ctx;\n var contextHandle;\n if (useWebGL) {\n var contextAttributes = {\n antialias: false,\n alpha: false,\n majorVersion: 1,\n };\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 if (!useWebGL)\n assert(\n typeof GLctx === \"undefined\",\n \"cannot set in module if GLctx is used, but we are a non-GL context that would replace it\",\n );\n Module.ctx = ctx;\n if (useWebGL) GL.makeContextCurrent(contextHandle);\n Module.useWebGL = useWebGL;\n Browser.moduleContextCreatedCallbacks.forEach(function (callback) {\n callback();\n });\n Browser.init();\n }\n return ctx;\n },\n destroyContext: function (canvas, useWebGL, setInModule) {},\n fullscreenHandlersInstalled: false,\n lockPointer: undefined,\n resizeCanvas: undefined,\n requestFullscreen: function (lockPointer, resizeCanvas, vrDevice) {\n Browser.lockPointer = lockPointer;\n Browser.resizeCanvas = resizeCanvas;\n Browser.vrDevice = vrDevice;\n if (typeof Browser.lockPointer === \"undefined\") Browser.lockPointer = true;\n if (typeof Browser.resizeCanvas === \"undefined\")\n Browser.resizeCanvas = false;\n if (typeof Browser.vrDevice === \"undefined\") Browser.vrDevice = null;\n var canvas = Module[\"canvas\"];\n function fullscreenChange() {\n Browser.isFullscreen = false;\n var canvasContainer = canvas.parentNode;\n if (\n (document[\"fullscreenElement\"] ||\n document[\"mozFullScreenElement\"] ||\n document[\"msFullscreenElement\"] ||\n document[\"webkitFullscreenElement\"] ||\n document[\"webkitCurrentFullScreenElement\"]) === canvasContainer\n ) {\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 canvasContainer.parentNode.insertBefore(canvas, canvasContainer);\n canvasContainer.parentNode.removeChild(canvasContainer);\n if (Browser.resizeCanvas) {\n Browser.setWindowedCanvasSize();\n } else {\n Browser.updateCanvasDimensions(canvas);\n }\n }\n if (Module[\"onFullScreen\"]) Module[\"onFullScreen\"](Browser.isFullscreen);\n if (Module[\"onFullscreen\"]) 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(\n \"webkitfullscreenchange\",\n fullscreenChange,\n false,\n );\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 =\n canvasContainer[\"requestFullscreen\"] ||\n canvasContainer[\"mozRequestFullScreen\"] ||\n canvasContainer[\"msRequestFullscreen\"] ||\n (canvasContainer[\"webkitRequestFullscreen\"]\n ? function () {\n canvasContainer[\"webkitRequestFullscreen\"](\n Element[\"ALLOW_KEYBOARD_INPUT\"],\n );\n }\n : null) ||\n (canvasContainer[\"webkitRequestFullScreen\"]\n ? function () {\n canvasContainer[\"webkitRequestFullScreen\"](\n Element[\"ALLOW_KEYBOARD_INPUT\"],\n );\n }\n : null);\n if (vrDevice) {\n canvasContainer.requestFullscreen({ vrDisplay: vrDevice });\n } else {\n canvasContainer.requestFullscreen();\n }\n },\n requestFullScreen: function (lockPointer, resizeCanvas, vrDevice) {\n err(\n \"Browser.requestFullScreen() is deprecated. Please call Browser.requestFullscreen instead.\",\n );\n Browser.requestFullScreen = function (lockPointer, resizeCanvas, vrDevice) {\n return Browser.requestFullscreen(lockPointer, resizeCanvas, vrDevice);\n };\n return Browser.requestFullscreen(lockPointer, resizeCanvas, vrDevice);\n },\n exitFullscreen: function () {\n if (!Browser.isFullscreen) {\n return false;\n }\n var CFS =\n document[\"exitFullscreen\"] ||\n document[\"cancelFullScreen\"] ||\n document[\"mozCancelFullScreen\"] ||\n document[\"msExitFullscreen\"] ||\n document[\"webkitCancelFullScreen\"] ||\n function () {};\n CFS.apply(document, []);\n return true;\n },\n nextRAF: 0,\n fakeRequestAnimationFrame: function (func) {\n var now = Date.now();\n if (Browser.nextRAF === 0) {\n Browser.nextRAF = now + 1e3 / 60;\n } else {\n while (now + 2 >= Browser.nextRAF) {\n Browser.nextRAF += 1e3 / 60;\n }\n }\n var delay = Math.max(Browser.nextRAF - now, 0);\n setTimeout(func, delay);\n },\n requestAnimationFrame: function (func) {\n if (typeof requestAnimationFrame === \"function\") {\n requestAnimationFrame(func);\n return;\n }\n var RAF = Browser.fakeRequestAnimationFrame;\n RAF(func);\n },\n safeCallback: function (func) {\n return function () {\n if (!ABORT) return func.apply(null, arguments);\n };\n },\n allowAsyncCallbacks: true,\n queuedAsyncCallbacks: [],\n pauseAsyncCallbacks: function () {\n Browser.allowAsyncCallbacks = false;\n },\n resumeAsyncCallbacks: function () {\n Browser.allowAsyncCallbacks = true;\n if (Browser.queuedAsyncCallbacks.length > 0) {\n var callbacks = Browser.queuedAsyncCallbacks;\n Browser.queuedAsyncCallbacks = [];\n callbacks.forEach(function (func) {\n func();\n });\n }\n },\n safeRequestAnimationFrame: function (func) {\n return Browser.requestAnimationFrame(function () {\n if (ABORT) return;\n if (Browser.allowAsyncCallbacks) {\n func();\n } else {\n Browser.queuedAsyncCallbacks.push(func);\n }\n });\n },\n safeSetTimeout: function (func, timeout) {\n Module[\"noExitRuntime\"] = true;\n return setTimeout(function () {\n if (ABORT) return;\n if (Browser.allowAsyncCallbacks) {\n func();\n } else {\n Browser.queuedAsyncCallbacks.push(func);\n }\n }, timeout);\n },\n safeSetInterval: function (func, timeout) {\n Module[\"noExitRuntime\"] = true;\n return setInterval(function () {\n if (ABORT) return;\n if (Browser.allowAsyncCallbacks) {\n func();\n }\n }, timeout);\n },\n getMimetype: function (name) {\n return {\n jpg: \"image/jpeg\",\n jpeg: \"image/jpeg\",\n png: \"image/png\",\n bmp: \"image/bmp\",\n ogg: \"audio/ogg\",\n wav: \"audio/wav\",\n mp3: \"audio/mpeg\",\n }[name.substr(name.lastIndexOf(\".\") + 1)];\n },\n getUserMedia: function (func) {\n if (!window.getUserMedia) {\n window.getUserMedia =\n navigator[\"getUserMedia\"] || navigator[\"mozGetUserMedia\"];\n }\n window.getUserMedia(func);\n },\n getMovementX: function (event) {\n return (\n event[\"movementX\"] ||\n event[\"mozMovementX\"] ||\n event[\"webkitMovementX\"] ||\n 0\n );\n },\n getMovementY: function (event) {\n return (\n event[\"movementY\"] ||\n event[\"mozMovementY\"] ||\n event[\"webkitMovementY\"] ||\n 0\n );\n },\n getMouseWheelDelta: function (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 throw \"unrecognized mouse wheel delta mode: \" + event.deltaMode;\n }\n break;\n default:\n throw \"unrecognized mouse wheel event: \" + event.type;\n }\n return delta;\n },\n mouseX: 0,\n mouseY: 0,\n mouseMovementX: 0,\n mouseMovementY: 0,\n touches: {},\n lastTouches: {},\n calculateMouseEvent: function (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 if (typeof SDL != \"undefined\") {\n Browser.mouseX = SDL.mouseX + Browser.mouseMovementX;\n Browser.mouseY = SDL.mouseY + Browser.mouseMovementY;\n } else {\n Browser.mouseX += Browser.mouseMovementX;\n Browser.mouseY += Browser.mouseMovementY;\n }\n } else {\n var rect = Module[\"canvas\"].getBoundingClientRect();\n var cw = Module[\"canvas\"].width;\n var ch = Module[\"canvas\"].height;\n var scrollX =\n typeof window.scrollX !== \"undefined\"\n ? window.scrollX\n : window.pageXOffset;\n var scrollY =\n typeof window.scrollY !== \"undefined\"\n ? window.scrollY\n : window.pageYOffset;\n assert(\n typeof scrollX !== \"undefined\" && typeof scrollY !== \"undefined\",\n \"Unable to retrieve scroll position, mouse positions likely broken.\",\n );\n if (\n event.type === \"touchstart\" ||\n event.type === \"touchend\" ||\n event.type === \"touchmove\"\n ) {\n var touch = event.touch;\n if (touch === undefined) {\n return;\n }\n var adjustedX = touch.pageX - (scrollX + rect.left);\n var adjustedY = touch.pageY - (scrollY + rect.top);\n adjustedX = adjustedX * (cw / rect.width);\n adjustedY = adjustedY * (ch / rect.height);\n var coords = { x: adjustedX, y: adjustedY };\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 if (!last) last = coords;\n Browser.lastTouches[touch.identifier] = last;\n Browser.touches[touch.identifier] = coords;\n }\n return;\n }\n var x = event.pageX - (scrollX + rect.left);\n var y = event.pageY - (scrollY + rect.top);\n x = x * (cw / rect.width);\n y = y * (ch / rect.height);\n Browser.mouseMovementX = x - Browser.mouseX;\n Browser.mouseMovementY = y - Browser.mouseY;\n Browser.mouseX = x;\n Browser.mouseY = y;\n }\n },\n asyncLoad: function (url, onload, onerror, noRunDep) {\n var dep = !noRunDep ? getUniqueRunDependency(\"al \" + url) : \"\";\n readAsync(\n url,\n function (arrayBuffer) {\n assert(\n arrayBuffer,\n 'Loading data file \"' + url + '\" failed (no arrayBuffer).',\n );\n onload(new Uint8Array(arrayBuffer));\n if (dep) removeRunDependency(dep);\n },\n function (event) {\n if (onerror) {\n onerror();\n } else {\n throw 'Loading data file \"' + url + '\" failed.';\n }\n },\n );\n if (dep) addRunDependency(dep);\n },\n resizeListeners: [],\n updateResizeListeners: function () {\n var canvas = Module[\"canvas\"];\n Browser.resizeListeners.forEach(function (listener) {\n listener(canvas.width, canvas.height);\n });\n },\n setCanvasSize: function (width, height, noUpdates) {\n var canvas = Module[\"canvas\"];\n Browser.updateCanvasDimensions(canvas, width, height);\n if (!noUpdates) Browser.updateResizeListeners();\n },\n windowedWidth: 0,\n windowedHeight: 0,\n setFullscreenCanvasSize: function () {\n if (typeof SDL != \"undefined\") {\n var flags = HEAPU32[SDL.screen >> 2];\n flags = flags | 8388608;\n HEAP32[SDL.screen >> 2] = flags;\n }\n Browser.updateCanvasDimensions(Module[\"canvas\"]);\n Browser.updateResizeListeners();\n },\n setWindowedCanvasSize: function () {\n if (typeof SDL != \"undefined\") {\n var flags = HEAPU32[SDL.screen >> 2];\n flags = flags & ~8388608;\n HEAP32[SDL.screen >> 2] = flags;\n }\n Browser.updateCanvasDimensions(Module[\"canvas\"]);\n Browser.updateResizeListeners();\n },\n updateCanvasDimensions: function (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 w = wNative;\n var h = hNative;\n if (Module[\"forcedAspectRatio\"] && Module[\"forcedAspectRatio\"] > 0) {\n if (w / h < Module[\"forcedAspectRatio\"]) {\n w = Math.round(h * Module[\"forcedAspectRatio\"]);\n } else {\n h = Math.round(w / Module[\"forcedAspectRatio\"]);\n }\n }\n if (\n (document[\"fullscreenElement\"] ||\n document[\"mozFullScreenElement\"] ||\n document[\"msFullscreenElement\"] ||\n document[\"webkitFullscreenElement\"] ||\n document[\"webkitCurrentFullScreenElement\"]) === canvas.parentNode &&\n typeof screen != \"undefined\"\n ) {\n var factor = Math.min(screen.width / w, screen.height / h);\n w = Math.round(w * factor);\n h = Math.round(h * factor);\n }\n if (Browser.resizeCanvas) {\n if (canvas.width != w) canvas.width = w;\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 (w != wNative || h != hNative) {\n canvas.style.setProperty(\"width\", w + \"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 wgetRequests: {},\n nextWgetRequestHandle: 0,\n getNextWgetRequestHandle: function () {\n var handle = Browser.nextWgetRequestHandle;\n Browser.nextWgetRequestHandle++;\n return handle;\n },\n};\nfunction _SDL_GetTicks() {\n return (Date.now() - SDL.startTime) | 0;\n}\nfunction _SDL_LockSurface(surf) {\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 HEAP32[(surf + 20) >> 2] = surfData.buffer;\n }\n HEAP32[(surf + 20) >> 2] = 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(\n surfData.width,\n surfData.height,\n );\n }\n if (!SDL.defaults.opaqueFrontBuffer) return;\n } else {\n surfData.image = surfData.ctx.getImageData(\n 0,\n 0,\n surfData.width,\n surfData.height,\n );\n }\n if (surf == SDL.screen && SDL.defaults.opaqueFrontBuffer) {\n var data = surfData.image.data;\n var num = data.length;\n for (var i = 0; i < num / 4; i++) {\n data[i * 4 + 3] = 255;\n }\n }\n if (SDL.defaults.copyOnLock && !SDL.defaults.discardOnLock) {\n if (surfData.isFlagSet(2097152)) {\n throw (\n \"CopyOnLock is not supported for SDL_LockSurface with SDL_HWPALETTE flag set\" +\n new Error().stack\n );\n } else {\n HEAPU8.set(surfData.image.data, surfData.buffer);\n }\n }\n return 0;\n}\nvar SDL = {\n defaults: {\n width: 320,\n height: 200,\n copyOnLock: true,\n discardOnLock: false,\n opaqueFrontBuffer: true,\n },\n version: null,\n surfaces: {},\n canvasPool: [],\n events: [],\n fonts: [null],\n audios: [null],\n rwops: [null],\n music: { audio: null, volume: 1 },\n mixerFrequency: 22050,\n mixerFormat: 32784,\n mixerNumChannels: 2,\n mixerChunkSize: 1024,\n channelMinimumNumber: 0,\n GL: false,\n glAttributes: {\n 0: 3,\n 1: 3,\n 2: 2,\n 3: 0,\n 4: 0,\n 5: 1,\n 6: 16,\n 7: 0,\n 8: 0,\n 9: 0,\n 10: 0,\n 11: 0,\n 12: 0,\n 13: 0,\n 14: 0,\n 15: 1,\n 16: 0,\n 17: 0,\n 18: 0,\n },\n keyboardState: null,\n keyboardMap: {},\n canRequestFullscreen: false,\n isRequestingFullscreen: false,\n textInput: false,\n startTime: null,\n initFlags: 0,\n buttonState: 0,\n modState: 0,\n DOMButtons: [0, 0, 0],\n DOMEventToSDLEvent: {},\n TOUCH_DEFAULT_ID: 0,\n eventHandler: null,\n eventHandlerContext: null,\n eventHandlerTemp: 0,\n keyCodes: {\n 16: 1249,\n 17: 1248,\n 18: 1250,\n 20: 1081,\n 33: 1099,\n 34: 1102,\n 35: 1101,\n 36: 1098,\n 37: 1104,\n 38: 1106,\n 39: 1103,\n 40: 1105,\n 44: 316,\n 45: 1097,\n 46: 127,\n 91: 1251,\n 93: 1125,\n 96: 1122,\n 97: 1113,\n 98: 1114,\n 99: 1115,\n 100: 1116,\n 101: 1117,\n 102: 1118,\n 103: 1119,\n 104: 1120,\n 105: 1121,\n 106: 1109,\n 107: 1111,\n 109: 1110,\n 110: 1123,\n 111: 1108,\n 112: 1082,\n 113: 1083,\n 114: 1084,\n 115: 1085,\n 116: 1086,\n 117: 1087,\n 118: 1088,\n 119: 1089,\n 120: 1090,\n 121: 1091,\n 122: 1092,\n 123: 1093,\n 124: 1128,\n 125: 1129,\n 126: 1130,\n 127: 1131,\n 128: 1132,\n 129: 1133,\n 130: 1134,\n 131: 1135,\n 132: 1136,\n 133: 1137,\n 134: 1138,\n 135: 1139,\n 144: 1107,\n 160: 94,\n 161: 33,\n 162: 34,\n 163: 35,\n 164: 36,\n 165: 37,\n 166: 38,\n 167: 95,\n 168: 40,\n 169: 41,\n 170: 42,\n 171: 43,\n 172: 124,\n 173: 45,\n 174: 123,\n 175: 125,\n 176: 126,\n 181: 127,\n 182: 129,\n 183: 128,\n 188: 44,\n 190: 46,\n 191: 47,\n 192: 96,\n 219: 91,\n 220: 92,\n 221: 93,\n 222: 39,\n 224: 1251,\n },\n scanCodes: {\n 8: 42,\n 9: 43,\n 13: 40,\n 27: 41,\n 32: 44,\n 35: 204,\n 39: 53,\n 44: 54,\n 46: 55,\n 47: 56,\n 48: 39,\n 49: 30,\n 50: 31,\n 51: 32,\n 52: 33,\n 53: 34,\n 54: 35,\n 55: 36,\n 56: 37,\n 57: 38,\n 58: 203,\n 59: 51,\n 61: 46,\n 91: 47,\n 92: 49,\n 93: 48,\n 96: 52,\n 97: 4,\n 98: 5,\n 99: 6,\n 100: 7,\n 101: 8,\n 102: 9,\n 103: 10,\n 104: 11,\n 105: 12,\n 106: 13,\n 107: 14,\n 108: 15,\n 109: 16,\n 110: 17,\n 111: 18,\n 112: 19,\n 113: 20,\n 114: 21,\n 115: 22,\n 116: 23,\n 117: 24,\n 118: 25,\n 119: 26,\n 120: 27,\n 121: 28,\n 122: 29,\n 127: 76,\n 305: 224,\n 308: 226,\n 316: 70,\n },\n loadRect: function (rect) {\n return {\n x: HEAP32[(rect + 0) >> 2],\n y: HEAP32[(rect + 4) >> 2],\n w: HEAP32[(rect + 8) >> 2],\n h: HEAP32[(rect + 12) >> 2],\n };\n },\n updateRect: function (rect, r) {\n HEAP32[rect >> 2] = r.x;\n HEAP32[(rect + 4) >> 2] = r.y;\n HEAP32[(rect + 8) >> 2] = r.w;\n HEAP32[(rect + 12) >> 2] = r.h;\n },\n intersectionOfRects: function (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 {\n x: leftX,\n y: leftY,\n w: Math.max(leftX, rightX) - leftX,\n h: Math.max(leftY, rightY) - leftY,\n };\n },\n checkPixelFormat: function (fmt) {\n var format = HEAP32[fmt >> 2];\n if (format != -2042224636) {\n warnOnce(\"Unsupported pixel format!\");\n }\n },\n loadColorToCSSRGB: function (color) {\n var rgba = HEAP32[color >> 2];\n return (\n \"rgb(\" +\n (rgba & 255) +\n \",\" +\n ((rgba >> 8) & 255) +\n \",\" +\n ((rgba >> 16) & 255) +\n \")\"\n );\n },\n loadColorToCSSRGBA: function (color) {\n var rgba = HEAP32[color >> 2];\n return (\n \"rgba(\" +\n (rgba & 255) +\n \",\" +\n ((rgba >> 8) & 255) +\n \",\" +\n ((rgba >> 16) & 255) +\n \",\" +\n ((rgba >> 24) & 255) / 255 +\n \")\"\n );\n },\n translateColorToCSSRGBA: function (rgba) {\n return (\n \"rgba(\" +\n (rgba & 255) +\n \",\" +\n ((rgba >> 8) & 255) +\n \",\" +\n ((rgba >> 16) & 255) +\n \",\" +\n (rgba >>> 24) / 255 +\n \")\"\n );\n },\n translateRGBAToCSSRGBA: function (r, g, b, a) {\n return (\n \"rgba(\" +\n (r & 255) +\n \",\" +\n (g & 255) +\n \",\" +\n (b & 255) +\n \",\" +\n (a & 255) / 255 +\n \")\"\n );\n },\n translateRGBAToColor: function (r, g, b, a) {\n return r | (g << 8) | (b << 16) | (a << 24);\n },\n makeSurface: function (\n width,\n height,\n flags,\n usePageCanvas,\n source,\n rmask,\n gmask,\n bmask,\n amask,\n ) {\n flags = flags || 0;\n var is_SDL_HWSURFACE = flags & 1;\n var is_SDL_HWPALETTE = flags & 2097152;\n var is_SDL_OPENGL = flags & 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] = flags;\n HEAP32[(surf + 4) >> 2] = pixelFormat;\n HEAP32[(surf + 8) >> 2] = width;\n HEAP32[(surf + 12) >> 2] = height;\n HEAP32[(surf + 16) >> 2] = width * bpp;\n HEAP32[(surf + 20) >> 2] = buffer;\n HEAP32[(surf + 36) >> 2] = 0;\n HEAP32[(surf + 40) >> 2] = 0;\n HEAP32[(surf + 44) >> 2] = Module[\"canvas\"].width;\n HEAP32[(surf + 48) >> 2] = Module[\"canvas\"].height;\n HEAP32[(surf + 56) >> 2] = 1;\n HEAP32[pixelFormat >> 2] = -2042224636;\n HEAP32[(pixelFormat + 4) >> 2] = 0;\n HEAP8[(pixelFormat + 8) >> 0] = bpp * 8;\n HEAP8[(pixelFormat + 9) >> 0] = bpp;\n HEAP32[(pixelFormat + 12) >> 2] = rmask || 255;\n HEAP32[(pixelFormat + 16) >> 2] = gmask || 65280;\n HEAP32[(pixelFormat + 20) >> 2] = bmask || 16711680;\n HEAP32[(pixelFormat + 24) >> 2] = amask || 4278190080;\n SDL.GL = SDL.GL || is_SDL_OPENGL;\n var canvas;\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 } else {\n canvas = Module[\"canvas\"];\n }\n var webGLContextAttributes = {\n antialias: SDL.glAttributes[13] != 0 && SDL.glAttributes[14] > 1,\n depth: SDL.glAttributes[6] > 0,\n stencil: SDL.glAttributes[7] > 0,\n alpha: SDL.glAttributes[3] > 0,\n };\n var ctx = Browser.createContext(\n canvas,\n is_SDL_OPENGL,\n usePageCanvas,\n webGLContextAttributes,\n );\n SDL.surfaces[surf] = {\n width: width,\n height: height,\n canvas: canvas,\n ctx: ctx,\n surf: surf,\n buffer: buffer,\n pixelFormat: pixelFormat,\n alpha: 255,\n flags: flags,\n locked: 0,\n usePageCanvas: usePageCanvas,\n source: source,\n isFlagSet: function (flag) {\n return flags & flag;\n },\n };\n return surf;\n },\n copyIndexedColorData: function (surfData, rX, rY, rW, rH) {\n if (!surfData.colors) {\n return;\n }\n var fullWidth = Module[\"canvas\"].width;\n var fullHeight = Module[\"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 x = startX; x < endX; ++x) {\n data32[base + x] = colors32[HEAPU8[(buffer + base + x) >> 0]];\n }\n }\n },\n freeSurface: function (surf) {\n var refcountPointer = surf + 56;\n var refcount = HEAP32[refcountPointer >> 2];\n if (refcount > 1) {\n HEAP32[refcountPointer >> 2] = refcount - 1;\n return;\n }\n var info = SDL.surfaces[surf];\n if (!info.usePageCanvas && info.canvas) SDL.canvasPool.push(info.canvas);\n if (info.buffer) _free(info.buffer);\n _free(info.pixelFormat);\n _free(surf);\n SDL.surfaces[surf] = null;\n if (surf === SDL.screen) {\n SDL.screen = null;\n }\n },\n blitSurface: function (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(\n srcData.canvas,\n sr.x,\n sr.y,\n sr.w,\n sr.h,\n dr.x,\n dr.y,\n blitw,\n blith,\n );\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 },\n downFingers: {},\n savedKeydown: null,\n receiveEvent: function (event) {\n function unpressAllPressedKeys() {\n for (var code in SDL.keyboardMap) {\n SDL.events.push({ type: \"keyup\", keyCode: SDL.keyboardMap[code] });\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 i = 0; i < event.touches.length; i++) {\n var touch = event.touches[i];\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 = {\n type: mouseEventType,\n button: 0,\n pageX: firstTouch.clientX,\n pageY: firstTouch.clientY,\n };\n SDL.events.push(mouseEvent);\n }\n for (var i = 0; i < touches.length; i++) {\n var touch = touches[i];\n SDL.events.push({ type: event.type, touch: touch });\n }\n break;\n }\n case \"touchend\": {\n event.preventDefault();\n for (var i = 0; i < event.changedTouches.length; i++) {\n var touch = event.changedTouches[i];\n if (SDL.downFingers[touch.identifier] === true) {\n delete SDL.downFingers[touch.identifier];\n }\n }\n var mouseEvent = {\n type: \"mouseup\",\n button: 0,\n pageX: event.changedTouches[0].clientX,\n pageY: event.changedTouches[0].clientY,\n };\n SDL.DOMButtons[0] = 0;\n SDL.events.push(mouseEvent);\n for (var i = 0; i < event.changedTouches.length; i++) {\n var touch = event.changedTouches[i];\n SDL.events.push({ type: \"touchend\", touch: touch });\n }\n break;\n }\n case \"DOMMouseScroll\":\n case \"mousewheel\":\n case \"wheel\":\n var delta = -Browser.getMouseWheelDelta(event);\n delta =\n delta == 0 ? 0 : delta > 0 ? Math.max(delta, 1) : Math.min(delta, -1);\n var button = delta > 0 ? 3 : 4;\n SDL.events.push({\n type: \"mousedown\",\n button: button,\n pageX: event.pageX,\n pageY: event.pageY,\n });\n SDL.events.push({\n type: \"mouseup\",\n button: button,\n pageX: event.pageX,\n pageY: event.pageY,\n });\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({\n type: \"touchmove\",\n touch: {\n identifier: 0,\n deviceID: -1,\n pageX: event.pageX,\n pageY: event.pageY,\n },\n });\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 (\n event.type !== \"keydown\" ||\n (!SDL.unicode && !SDL.textInput) ||\n event.keyCode === 8 ||\n event.keyCode === 9\n ) {\n event.preventDefault();\n }\n if (event.type == \"mousedown\") {\n SDL.DOMButtons[event.button] = 1;\n SDL.events.push({\n type: \"touchstart\",\n touch: {\n identifier: 0,\n deviceID: -1,\n pageX: event.pageX,\n pageY: event.pageY,\n },\n });\n } else if (event.type == \"mouseup\") {\n if (!SDL.DOMButtons[event.button]) {\n return;\n }\n SDL.events.push({\n type: \"touchend\",\n touch: {\n identifier: 0,\n deviceID: -1,\n pageX: event.pageX,\n pageY: event.pageY,\n },\n });\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 i = 0; i < 3; i++) {\n if (SDL.DOMButtons[i]) {\n SDL.events.push({\n type: \"mouseup\",\n button: i,\n pageX: event.pageX,\n pageY: event.pageY,\n });\n SDL.DOMButtons[i] = 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({\n type: \"visibilitychange\",\n visible: !document.hidden,\n });\n unpressAllPressedKeys();\n event.preventDefault();\n break;\n case \"unload\":\n if (Browser.mainLoop.runner) {\n SDL.events.push(event);\n Browser.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 },\n lookupKeyCodeForEvent: function (event) {\n var code = event.keyCode;\n if (code >= 65 && code <= 90) {\n code += 32;\n } else {\n code = SDL.keyCodes[event.keyCode] || event.keyCode;\n if (\n event.location === KeyboardEvent.DOM_KEY_LOCATION_RIGHT &&\n code >= (224 | (1 << 10)) &&\n code <= (227 | (1 << 10))\n ) {\n code += 4;\n }\n }\n return code;\n },\n handleEvent: function (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 HEAP8[(SDL.keyboardState + code) >> 0] = down;\n SDL.modState =\n (HEAP8[(SDL.keyboardState + 1248) >> 0] ? 64 : 0) |\n (HEAP8[(SDL.keyboardState + 1249) >> 0] ? 1 : 0) |\n (HEAP8[(SDL.keyboardState + 1250) >> 0] ? 256 : 0) |\n (HEAP8[(SDL.keyboardState + 1252) >> 0] ? 128 : 0) |\n (HEAP8[(SDL.keyboardState + 1253) >> 0] ? 2 : 0) |\n (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 },\n flushEventsToHandler: function () {\n if (!SDL.eventHandler) return;\n while (SDL.pollEvent(SDL.eventHandlerTemp)) {\n Module[\"dynCall_iii\"](\n SDL.eventHandler,\n SDL.eventHandlerContext,\n SDL.eventHandlerTemp,\n );\n }\n },\n pollEvent: function (ptr) {\n if (SDL.initFlags & 512 && SDL.joystickEventState) {\n SDL.queryJoysticks();\n }\n if (ptr) {\n while (SDL.events.length > 0) {\n if (SDL.makeCEvent(SDL.events.shift(), ptr) !== false) return 1;\n }\n return 0;\n } else {\n return SDL.events.length > 0;\n }\n },\n makeCEvent: function (event, ptr) {\n if (typeof event === \"number\") {\n _memcpy(ptr, 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 var scan;\n if (key >= 1024) {\n scan = key - 1024;\n } else {\n scan = SDL.scanCodes[key] || key;\n }\n HEAP32[ptr >> 2] = SDL.DOMEventToSDLEvent[event.type];\n HEAP8[(ptr + 8) >> 0] = down ? 1 : 0;\n HEAP8[(ptr + 9) >> 0] = 0;\n HEAP32[(ptr + 12) >> 2] = scan;\n HEAP32[(ptr + 16) >> 2] = key;\n HEAP16[(ptr + 20) >> 1] = SDL.modState;\n HEAP32[(ptr + 24) >> 2] = event.keypressCharCode || key;\n break;\n }\n case \"keypress\": {\n HEAP32[ptr >> 2] = SDL.DOMEventToSDLEvent[event.type];\n var cStr = intArrayFromString(String.fromCharCode(event.charCode));\n for (var i = 0; i < cStr.length; ++i) {\n HEAP8[(ptr + (8 + i)) >> 0] = cStr[i];\n }\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[ptr >> 2] = SDL.DOMEventToSDLEvent[event.type];\n HEAP32[(ptr + 4) >> 2] = 0;\n HEAP32[(ptr + 8) >> 2] = 0;\n HEAP32[(ptr + 12) >> 2] = 0;\n HEAP8[(ptr + 16) >> 0] = event.button + 1;\n HEAP8[(ptr + 17) >> 0] = down ? 1 : 0;\n HEAP32[(ptr + 20) >> 2] = Browser.mouseX;\n HEAP32[(ptr + 24) >> 2] = Browser.mouseY;\n } else {\n HEAP32[ptr >> 2] = SDL.DOMEventToSDLEvent[event.type];\n HEAP32[(ptr + 4) >> 2] = 0;\n HEAP32[(ptr + 8) >> 2] = 0;\n HEAP32[(ptr + 12) >> 2] = 0;\n HEAP32[(ptr + 16) >> 2] = SDL.buttonState;\n HEAP32[(ptr + 20) >> 2] = Browser.mouseX;\n HEAP32[(ptr + 24) >> 2] = Browser.mouseY;\n HEAP32[(ptr + 28) >> 2] = Browser.mouseMovementX;\n HEAP32[(ptr + 32) >> 2] = Browser.mouseMovementY;\n }\n break;\n }\n case \"wheel\": {\n HEAP32[ptr >> 2] = SDL.DOMEventToSDLEvent[event.type];\n HEAP32[(ptr + 16) >> 2] = event.deltaX;\n HEAP32[(ptr + 20) >> 2] = 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 w = Module[\"canvas\"].width;\n var h = Module[\"canvas\"].height;\n var x = Browser.touches[touch.identifier].x / w;\n var y = Browser.touches[touch.identifier].y / h;\n var lx = Browser.lastTouches[touch.identifier].x / w;\n var ly = Browser.lastTouches[touch.identifier].y / h;\n var dx = x - lx;\n var dy = y - ly;\n if (touch[\"deviceID\"] === undefined)\n touch.deviceID = SDL.TOUCH_DEFAULT_ID;\n if (dx === 0 && dy === 0 && event.type === \"touchmove\") return false;\n HEAP32[ptr >> 2] = SDL.DOMEventToSDLEvent[event.type];\n HEAP32[(ptr + 4) >> 2] = _SDL_GetTicks();\n (tempI64 = [\n touch.deviceID >>> 0,\n ((tempDouble = touch.deviceID),\n +Math_abs(tempDouble) >= 1\n ? tempDouble > 0\n ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) |\n 0) >>>\n 0\n : ~~+Math_ceil(\n (tempDouble - +(~~tempDouble >>> 0)) / 4294967296,\n ) >>> 0\n : 0),\n ]),\n (HEAP32[(ptr + 8) >> 2] = tempI64[0]),\n (HEAP32[(ptr + 12) >> 2] = tempI64[1]);\n (tempI64 = [\n touch.identifier >>> 0,\n ((tempDouble = touch.identifier),\n +Math_abs(tempDouble) >= 1\n ? tempDouble > 0\n ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) |\n 0) >>>\n 0\n : ~~+Math_ceil(\n (tempDouble - +(~~tempDouble >>> 0)) / 4294967296,\n ) >>> 0\n : 0),\n ]),\n (HEAP32[(ptr + 16) >> 2] = tempI64[0]),\n (HEAP32[(ptr + 20) >> 2] = tempI64[1]);\n HEAPF32[(ptr + 24) >> 2] = x;\n HEAPF32[(ptr + 28) >> 2] = y;\n HEAPF32[(ptr + 32) >> 2] = dx;\n HEAPF32[(ptr + 36) >> 2] = dy;\n if (touch.force !== undefined) {\n HEAPF32[(ptr + 40) >> 2] = touch.force;\n } else {\n HEAPF32[(ptr + 40) >> 2] = event.type == \"touchend\" ? 0 : 1;\n }\n break;\n }\n case \"unload\": {\n HEAP32[ptr >> 2] = SDL.DOMEventToSDLEvent[event.type];\n break;\n }\n case \"resize\": {\n HEAP32[ptr >> 2] = SDL.DOMEventToSDLEvent[event.type];\n HEAP32[(ptr + 4) >> 2] = event.w;\n HEAP32[(ptr + 8) >> 2] = 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[ptr >> 2] = SDL.DOMEventToSDLEvent[event.type];\n HEAP8[(ptr + 4) >> 0] = event.index;\n HEAP8[(ptr + 5) >> 0] = event.button;\n HEAP8[(ptr + 6) >> 0] = state;\n break;\n }\n case \"joystick_axis_motion\": {\n HEAP32[ptr >> 2] = SDL.DOMEventToSDLEvent[event.type];\n HEAP8[(ptr + 4) >> 0] = event.index;\n HEAP8[(ptr + 5) >> 0] = event.axis;\n HEAP32[(ptr + 8) >> 2] = SDL.joystickAxisValueConversion(event.value);\n break;\n }\n case \"focus\": {\n var SDL_WINDOWEVENT_FOCUS_GAINED = 12;\n HEAP32[ptr >> 2] = SDL.DOMEventToSDLEvent[event.type];\n HEAP32[(ptr + 4) >> 2] = 0;\n HEAP8[(ptr + 8) >> 0] = SDL_WINDOWEVENT_FOCUS_GAINED;\n break;\n }\n case \"blur\": {\n var SDL_WINDOWEVENT_FOCUS_LOST = 13;\n HEAP32[ptr >> 2] = SDL.DOMEventToSDLEvent[event.type];\n HEAP32[(ptr + 4) >> 2] = 0;\n HEAP8[(ptr + 8) >> 0] = SDL_WINDOWEVENT_FOCUS_LOST;\n break;\n }\n case \"visibilitychange\": {\n var SDL_WINDOWEVENT_SHOWN = 1;\n var SDL_WINDOWEVENT_HIDDEN = 2;\n var visibilityEventID = event.visible\n ? SDL_WINDOWEVENT_SHOWN\n : SDL_WINDOWEVENT_HIDDEN;\n HEAP32[ptr >> 2] = SDL.DOMEventToSDLEvent[event.type];\n HEAP32[(ptr + 4) >> 2] = 0;\n HEAP8[(ptr + 8) >> 0] = visibilityEventID;\n break;\n }\n default:\n throw \"Unhandled SDL event: \" + event.type;\n }\n },\n makeFontString: function (height, fontName) {\n if (fontName.charAt(0) != \"'\" && fontName.charAt(0) != '\"') {\n fontName = '\"' + fontName + '\"';\n }\n return height + \"px \" + fontName + \", serif\";\n },\n estimateTextWidth: function (fontData, text) {\n var h = fontData.size;\n var fontString = SDL.makeFontString(h, fontData.name);\n var tempCtx = SDL.ttfContext;\n assert(tempCtx, \"TTF_Init must have been called\");\n tempCtx.font = fontString;\n var ret = tempCtx.measureText(text).width | 0;\n return ret;\n },\n allocateChannels: function (num) {\n if (SDL.numChannels && SDL.numChannels >= num && num != 0) return;\n SDL.numChannels = num;\n SDL.channels = [];\n for (var i = 0; i < num; i++) {\n SDL.channels[i] = { audio: null, volume: 1 };\n }\n },\n setGetVolume: function (info, volume) {\n if (!info) return 0;\n var ret = info.volume * 128;\n if (volume != -1) {\n info.volume = Math.min(Math.max(volume, 0), 128) / 128;\n if (info.audio) {\n try {\n info.audio.volume = info.volume;\n if (info.audio.webAudioGainNode)\n info.audio.webAudioGainNode[\"gain\"][\"value\"] = info.volume;\n } catch (e) {\n err(\"setGetVolume failed to set audio volume: \" + e);\n }\n }\n }\n return ret;\n },\n setPannerPosition: function (info, x, y, z) {\n if (!info) return;\n if (info.audio) {\n if (info.audio.webAudioPannerNode) {\n info.audio.webAudioPannerNode[\"setPosition\"](x, y, z);\n }\n }\n },\n playWebAudio: function (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 === undefined)\n abort(\"Cannot play back audio object that was not loaded\");\n webAudio.onDecodeComplete.push(function () {\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\"] = function () {\n audio[\"onended\"]();\n };\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 },\n pauseWebAudio: function (audio) {\n if (!audio) return;\n if (audio.webAudioNode) {\n try {\n audio.currentPosition =\n (SDL.audioContext[\"currentTime\"] - audio.startTime) %\n audio.resource.webAudio.decodedBuffer.duration;\n audio.webAudioNode[\"onended\"] = undefined;\n audio.webAudioNode.stop(0);\n audio.webAudioNode = undefined;\n } catch (e) {\n err(\"pauseWebAudio failed: \" + e);\n }\n }\n audio.paused = true;\n },\n openAudioContext: function () {\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: function () {\n return !!SDL.audioContext;\n },\n fillWebAudioBufferFromHeap: function (\n heapPtr,\n sizeSamplesPerChannel,\n dstAudioBuffer,\n ) {\n var numChannels = SDL.audio.channels;\n for (var c = 0; c < numChannels; ++c) {\n var channelData = dstAudioBuffer[\"getChannelData\"](c);\n if (channelData.length != sizeSamplesPerChannel) {\n throw (\n \"Web Audio output buffer length mismatch! Destination size: \" +\n channelData.length +\n \" samples vs expected \" +\n sizeSamplesPerChannel +\n \" samples!\"\n );\n }\n if (SDL.audio.format == 32784) {\n for (var j = 0; j < sizeSamplesPerChannel; ++j) {\n channelData[j] =\n HEAP16[(heapPtr + (j * numChannels + c) * 2) >> 1] / 32768;\n }\n } else if (SDL.audio.format == 8) {\n for (var j = 0; j < sizeSamplesPerChannel; ++j) {\n var v = HEAP8[(heapPtr + (j * numChannels + c)) >> 0];\n channelData[j] = (v >= 0 ? v - 128 : v + 128) / 128;\n }\n } else if (SDL.audio.format == 33056) {\n for (var j = 0; j < sizeSamplesPerChannel; ++j) {\n channelData[j] = HEAPF32[(heapPtr + (j * numChannels + c) * 4) >> 2];\n }\n } else {\n throw \"Invalid SDL audio format \" + SDL.audio.format + \"!\";\n }\n }\n },\n debugSurface: function (surfData) {\n console.log(\n \"dumping surface \" +\n [surfData.surf, surfData.source, surfData.width, surfData.height],\n );\n var image = surfData.ctx.getImageData(\n 0,\n 0,\n surfData.width,\n surfData.height,\n );\n var data = image.data;\n var num = Math.min(surfData.width, surfData.height);\n for (var i = 0; i < num; i++) {\n console.log(\n \" diagonal \" +\n i +\n \":\" +\n [\n data[i * surfData.width * 4 + i * 4 + 0],\n data[i * surfData.width * 4 + i * 4 + 1],\n data[i * surfData.width * 4 + i * 4 + 2],\n data[i * surfData.width * 4 + i * 4 + 3],\n ],\n );\n }\n },\n joystickEventState: 1,\n lastJoystickState: {},\n joystickNamePool: {},\n recordJoystickState: function (joystick, state) {\n var buttons = new Array(state.buttons.length);\n for (var i = 0; i < state.buttons.length; i++) {\n buttons[i] = SDL.getJoystickButtonState(state.buttons[i]);\n }\n SDL.lastJoystickState[joystick] = {\n buttons: buttons,\n axes: state.axes.slice(0),\n timestamp: state.timestamp,\n index: state.index,\n id: state.id,\n };\n },\n getJoystickButtonState: function (button) {\n if (typeof button === \"object\") {\n return button[\"pressed\"];\n } else {\n return button > 0;\n }\n },\n queryJoysticks: function () {\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 (\n typeof state.timestamp !== \"number\" ||\n state.timestamp !== prevState.timestamp ||\n !state.timestamp\n ) {\n var i;\n for (i = 0; i < state.buttons.length; i++) {\n var buttonState = SDL.getJoystickButtonState(state.buttons[i]);\n if (buttonState !== prevState.buttons[i]) {\n SDL.events.push({\n type: buttonState ? \"joystick_button_down\" : \"joystick_button_up\",\n joystick: joystick,\n index: joystick - 1,\n button: i,\n });\n }\n }\n for (i = 0; i < state.axes.length; i++) {\n if (state.axes[i] !== prevState.axes[i]) {\n SDL.events.push({\n type: \"joystick_axis_motion\",\n joystick: joystick,\n index: joystick - 1,\n axis: i,\n value: state.axes[i],\n });\n }\n }\n SDL.recordJoystickState(joystick, state);\n }\n }\n },\n joystickAxisValueConversion: function (value) {\n value = Math.min(1, Math.max(value, -1));\n return Math.ceil((value + 1) * 32767.5 - 32768);\n },\n getGamepads: function () {\n var fcn =\n navigator.getGamepads ||\n navigator.webkitGamepads ||\n navigator.mozGamepads ||\n navigator.gamepads ||\n navigator.webkitGetGamepads;\n if (fcn !== undefined) {\n return fcn.apply(navigator);\n } else {\n return [];\n }\n },\n getGamepad: function (deviceIndex) {\n var gamepads = SDL.getGamepads();\n if (gamepads.length > deviceIndex && deviceIndex >= 0) {\n return gamepads[deviceIndex];\n }\n return null;\n },\n};\nfunction _SDL_GL_SetAttribute(attr, value) {\n if (!(attr in SDL.glAttributes)) {\n abort(\n \"Unknown SDL GL attribute (\" +\n attr +\n \"). Please check if your SDL version is supported.\",\n );\n }\n SDL.glAttributes[attr] = value;\n}\nfunction _SDL_GL_SwapBuffers() {\n if (Browser.doSwapBuffers) Browser.doSwapBuffers();\n}\nfunction _SDL_GetError() {\n if (!SDL.errorMessage) {\n SDL.errorMessage = allocate(\n intArrayFromString(\"unknown SDL-emscripten error\"),\n \"i8\",\n ALLOC_NORMAL,\n );\n }\n return SDL.errorMessage;\n}\nfunction _SDL_Init(initFlags) {\n SDL.startTime = Date.now();\n SDL.initFlags = initFlags;\n if (!Module[\"doNotCaptureKeyboard\"]) {\n var keyboardListeningElement =\n 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 = _malloc(65536);\n _memset(SDL.keyboardState, 0, 65536);\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}\nfunction _SDL_AudioQuit() {\n for (var i = 0; i < SDL.numChannels; ++i) {\n if (SDL.channels[i].audio) {\n SDL.channels[i].audio.pause();\n SDL.channels[i].audio = undefined;\n }\n }\n if (SDL.music.audio) SDL.music.audio.pause();\n SDL.music.audio = undefined;\n}\nfunction _SDL_Quit() {\n _SDL_AudioQuit();\n var keyboardListeningElement = Module[\"keyboardListeningElement\"] || document;\n keyboardListeningElement.removeEventListener(\"keydown\", SDL.receiveEvent);\n keyboardListeningElement.removeEventListener(\"keyup\", SDL.receiveEvent);\n keyboardListeningElement.removeEventListener(\"keypress\", SDL.receiveEvent);\n}\nfunction ___assert_fail(condition, filename, line, func) {\n abort(\n \"Assertion failed: \" +\n UTF8ToString(condition) +\n \", at: \" +\n [\n filename ? UTF8ToString(filename) : \"unknown filename\",\n line,\n func ? UTF8ToString(func) : \"unknown function\",\n ],\n );\n}\nvar ENV = {};\nfunction ___buildEnvironment(environ) {\n var MAX_ENV_VALUES = 64;\n var TOTAL_ENV_SIZE = 1024;\n var poolPtr;\n var envPtr;\n if (!___buildEnvironment.called) {\n ___buildEnvironment.called = true;\n ENV[\"USER\"] = ENV[\"LOGNAME\"] = \"web_user\";\n ENV[\"PATH\"] = \"/\";\n ENV[\"PWD\"] = \"/\";\n ENV[\"HOME\"] = \"/home/web_user\";\n ENV[\"LANG\"] = \"C.UTF-8\";\n ENV[\"LANG\"] =\n (\n (typeof navigator === \"object\" &&\n navigator.languages &&\n navigator.languages[0]) ||\n \"C\"\n ).replace(\"-\", \"_\") + \".UTF-8\";\n ENV[\"_\"] = thisProgram;\n poolPtr = getMemory(TOTAL_ENV_SIZE);\n envPtr = getMemory(MAX_ENV_VALUES * 4);\n HEAP32[envPtr >> 2] = poolPtr;\n HEAP32[environ >> 2] = envPtr;\n } else {\n envPtr = HEAP32[environ >> 2];\n poolPtr = HEAP32[envPtr >> 2];\n }\n var strings = [];\n var totalSize = 0;\n for (var key in ENV) {\n if (typeof ENV[key] === \"string\") {\n var line = key + \"=\" + ENV[key];\n strings.push(line);\n totalSize += line.length;\n }\n }\n if (totalSize > TOTAL_ENV_SIZE) {\n throw new Error(\"Environment size exceeded TOTAL_ENV_SIZE!\");\n }\n var ptrSize = 4;\n for (var i = 0; i < strings.length; i++) {\n var line = strings[i];\n writeAsciiToMemory(line, poolPtr);\n HEAP32[(envPtr + i * ptrSize) >> 2] = poolPtr;\n poolPtr += line.length + 1;\n }\n HEAP32[(envPtr + strings.length * ptrSize) >> 2] = 0;\n}\nfunction _emscripten_get_now_is_monotonic() {\n return (\n 0 ||\n ENVIRONMENT_IS_NODE ||\n typeof dateNow !== \"undefined\" ||\n (typeof performance === \"object\" &&\n performance &&\n typeof performance[\"now\"] === \"function\")\n );\n}\nfunction _clock_gettime(clk_id, tp) {\n var now;\n if (clk_id === 0) {\n now = Date.now();\n } else if (clk_id === 1 && _emscripten_get_now_is_monotonic()) {\n now = _emscripten_get_now();\n } else {\n ___setErrNo(22);\n return -1;\n }\n HEAP32[tp >> 2] = (now / 1e3) | 0;\n HEAP32[(tp + 4) >> 2] = ((now % 1e3) * 1e3 * 1e3) | 0;\n return 0;\n}\nfunction ___clock_gettime(a0, a1) {\n return _clock_gettime(a0, a1);\n}\nfunction ___cxa_allocate_exception(size) {\n return _malloc(size);\n}\nvar ___exception_infos = {};\nfunction ___cxa_pure_virtual() {\n ABORT = true;\n throw \"Pure virtual function called!\";\n}\nvar ___exception_last = 0;\nfunction ___cxa_throw(ptr, type, destructor) {\n ___exception_infos[ptr] = {\n ptr: ptr,\n adjusted: [ptr],\n type: type,\n destructor: destructor,\n refcount: 0,\n caught: false,\n rethrown: false,\n };\n ___exception_last = ptr;\n if (!(\"uncaught_exception\" in __ZSt18uncaught_exceptionv)) {\n __ZSt18uncaught_exceptionv.uncaught_exceptions = 1;\n } else {\n __ZSt18uncaught_exceptionv.uncaught_exceptions++;\n }\n throw (\n ptr +\n \" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.\"\n );\n}\nfunction ___cxa_uncaught_exceptions() {\n return __ZSt18uncaught_exceptionv.uncaught_exceptions;\n}\nfunction ___lock() {}\nfunction ___map_file(pathname, size) {\n ___setErrNo(1);\n return -1;\n}\nvar SYSCALLS = {\n DEFAULT_POLLMASK: 5,\n mappings: {},\n umask: 511,\n calculateAt: function (dirfd, path) {\n if (path[0] !== \"/\") {\n var dir;\n if (dirfd === -100) {\n dir = FS.cwd();\n } else {\n var dirstream = FS.getStream(dirfd);\n if (!dirstream) throw new FS.ErrnoError(9);\n dir = dirstream.path;\n }\n path = PATH.join2(dir, path);\n }\n return path;\n },\n doStat: function (func, path, buf) {\n try {\n var stat = func(path);\n } catch (e) {\n if (\n e &&\n e.node &&\n PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))\n ) {\n return -20;\n }\n throw e;\n }\n HEAP32[buf >> 2] = stat.dev;\n HEAP32[(buf + 4) >> 2] = 0;\n HEAP32[(buf + 8) >> 2] = stat.ino;\n HEAP32[(buf + 12) >> 2] = stat.mode;\n HEAP32[(buf + 16) >> 2] = stat.nlink;\n HEAP32[(buf + 20) >> 2] = stat.uid;\n HEAP32[(buf + 24) >> 2] = stat.gid;\n HEAP32[(buf + 28) >> 2] = stat.rdev;\n HEAP32[(buf + 32) >> 2] = 0;\n (tempI64 = [\n stat.size >>> 0,\n ((tempDouble = stat.size),\n +Math_abs(tempDouble) >= 1\n ? tempDouble > 0\n ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>>\n 0\n : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>>\n 0\n : 0),\n ]),\n (HEAP32[(buf + 40) >> 2] = tempI64[0]),\n (HEAP32[(buf + 44) >> 2] = tempI64[1]);\n HEAP32[(buf + 48) >> 2] = 4096;\n HEAP32[(buf + 52) >> 2] = stat.blocks;\n HEAP32[(buf + 56) >> 2] = (stat.atime.getTime() / 1e3) | 0;\n HEAP32[(buf + 60) >> 2] = 0;\n HEAP32[(buf + 64) >> 2] = (stat.mtime.getTime() / 1e3) | 0;\n HEAP32[(buf + 68) >> 2] = 0;\n HEAP32[(buf + 72) >> 2] = (stat.ctime.getTime() / 1e3) | 0;\n HEAP32[(buf + 76) >> 2] = 0;\n (tempI64 = [\n stat.ino >>> 0,\n ((tempDouble = stat.ino),\n +Math_abs(tempDouble) >= 1\n ? tempDouble > 0\n ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>>\n 0\n : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>>\n 0\n : 0),\n ]),\n (HEAP32[(buf + 80) >> 2] = tempI64[0]),\n (HEAP32[(buf + 84) >> 2] = tempI64[1]);\n return 0;\n },\n doMsync: function (addr, stream, len, flags) {\n var buffer = new Uint8Array(HEAPU8.subarray(addr, addr + len));\n FS.msync(stream, buffer, 0, len, flags);\n },\n doMkdir: function (path, mode) {\n path = PATH.normalize(path);\n if (path[path.length - 1] === \"/\") path = path.substr(0, path.length - 1);\n FS.mkdir(path, mode, 0);\n return 0;\n },\n doMknod: function (path, mode, dev) {\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 -22;\n }\n FS.mknod(path, mode, dev);\n return 0;\n },\n doReadlink: function (path, buf, bufsize) {\n if (bufsize <= 0) return -22;\n var ret = FS.readlink(path);\n var len = Math.min(bufsize, lengthBytesUTF8(ret));\n var endChar = HEAP8[buf + len];\n stringToUTF8(ret, buf, bufsize + 1);\n HEAP8[buf + len] = endChar;\n return len;\n },\n doAccess: function (path, amode) {\n if (amode & ~7) {\n return -22;\n }\n var node;\n var lookup = FS.lookupPath(path, { follow: true });\n node = lookup.node;\n if (!node) {\n return -2;\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 -13;\n }\n return 0;\n },\n doDup: function (path, flags, suggestFD) {\n var suggest = FS.getStream(suggestFD);\n if (suggest) FS.close(suggest);\n return FS.open(path, flags, 0, suggestFD, suggestFD).fd;\n },\n doReadv: function (stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAP32[(iov + i * 8) >> 2];\n var len = HEAP32[(iov + (i * 8 + 4)) >> 2];\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n }\n return ret;\n },\n doWritev: function (stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAP32[(iov + i * 8) >> 2];\n var len = HEAP32[(iov + (i * 8 + 4)) >> 2];\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n }\n return ret;\n },\n varargs: 0,\n get: function (varargs) {\n SYSCALLS.varargs += 4;\n var ret = HEAP32[(SYSCALLS.varargs - 4) >> 2];\n return ret;\n },\n getStr: function () {\n var ret = UTF8ToString(SYSCALLS.get());\n return ret;\n },\n getStreamFromFD: function () {\n var stream = FS.getStream(SYSCALLS.get());\n if (!stream) throw new FS.ErrnoError(9);\n return stream;\n },\n get64: function () {\n var low = SYSCALLS.get(),\n high = SYSCALLS.get();\n if (low >= 0) assert(high === 0);\n else assert(high === -1);\n return low;\n },\n getZero: function () {\n assert(SYSCALLS.get() === 0);\n },\n};\nfunction ___syscall10(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var path = SYSCALLS.getStr();\n FS.unlink(path);\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall114(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n abort(\"cannot wait on child processes\");\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall12(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var path = SYSCALLS.getStr();\n FS.chdir(path);\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall140(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(),\n offset_high = SYSCALLS.get(),\n offset_low = SYSCALLS.get(),\n result = SYSCALLS.get(),\n whence = SYSCALLS.get();\n var HIGH_OFFSET = 4294967296;\n var offset = offset_high * HIGH_OFFSET + (offset_low >>> 0);\n var DOUBLE_LIMIT = 9007199254740992;\n if (offset <= -DOUBLE_LIMIT || offset >= DOUBLE_LIMIT) {\n return -75;\n }\n FS.llseek(stream, offset, whence);\n (tempI64 = [\n stream.position >>> 0,\n ((tempDouble = stream.position),\n +Math_abs(tempDouble) >= 1\n ? tempDouble > 0\n ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>>\n 0\n : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>>\n 0\n : 0),\n ]),\n (HEAP32[result >> 2] = tempI64[0]),\n (HEAP32[(result + 4) >> 2] = tempI64[1]);\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall145(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(),\n iov = SYSCALLS.get(),\n iovcnt = SYSCALLS.get();\n return SYSCALLS.doReadv(stream, iov, iovcnt);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall146(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(),\n iov = SYSCALLS.get(),\n iovcnt = SYSCALLS.get();\n return SYSCALLS.doWritev(stream, iov, iovcnt);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall183(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var buf = SYSCALLS.get(),\n size = SYSCALLS.get();\n if (size === 0) return -22;\n var cwd = FS.cwd();\n var cwdLengthInBytes = lengthBytesUTF8(cwd);\n if (size < cwdLengthInBytes + 1) return -34;\n stringToUTF8(cwd, buf, size);\n return buf;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall191(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var resource = SYSCALLS.get(),\n rlim = SYSCALLS.get();\n HEAP32[rlim >> 2] = -1;\n HEAP32[(rlim + 4) >> 2] = -1;\n HEAP32[(rlim + 8) >> 2] = -1;\n HEAP32[(rlim + 12) >> 2] = -1;\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall195(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var path = SYSCALLS.getStr(),\n buf = SYSCALLS.get();\n return SYSCALLS.doStat(FS.stat, path, buf);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall196(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var path = SYSCALLS.getStr(),\n buf = SYSCALLS.get();\n return SYSCALLS.doStat(FS.lstat, path, buf);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall197(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(),\n buf = SYSCALLS.get();\n return SYSCALLS.doStat(FS.stat, stream.path, buf);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall202(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall199(a0, a1) {\n return ___syscall202(a0, a1);\n}\nvar PROCINFO = { ppid: 1, pid: 42, sid: 42, pgid: 42 };\nfunction ___syscall20(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n return PROCINFO.pid;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall201(a0, a1) {\n return ___syscall202(a0, a1);\n}\nfunction ___syscall220(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(),\n dirp = SYSCALLS.get(),\n count = SYSCALLS.get();\n if (!stream.getdents) {\n stream.getdents = FS.readdir(stream.path);\n }\n var struct_size = 280;\n var pos = 0;\n var off = FS.llseek(stream, 0, 1);\n var idx = Math.floor(off / struct_size);\n while (idx < stream.getdents.length && pos + struct_size <= count) {\n var id;\n var type;\n var name = stream.getdents[idx];\n if (name[0] === \".\") {\n id = 1;\n type = 4;\n } else {\n var child = FS.lookupNode(stream.node, name);\n id = child.id;\n type = FS.isChrdev(child.mode)\n ? 2\n : FS.isDir(child.mode)\n ? 4\n : FS.isLink(child.mode)\n ? 10\n : 8;\n }\n (tempI64 = [\n id >>> 0,\n ((tempDouble = id),\n +Math_abs(tempDouble) >= 1\n ? tempDouble > 0\n ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) |\n 0) >>>\n 0\n : ~~+Math_ceil(\n (tempDouble - +(~~tempDouble >>> 0)) / 4294967296,\n ) >>> 0\n : 0),\n ]),\n (HEAP32[(dirp + pos) >> 2] = tempI64[0]),\n (HEAP32[(dirp + pos + 4) >> 2] = tempI64[1]);\n (tempI64 = [\n ((idx + 1) * struct_size) >>> 0,\n ((tempDouble = (idx + 1) * struct_size),\n +Math_abs(tempDouble) >= 1\n ? tempDouble > 0\n ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) |\n 0) >>>\n 0\n : ~~+Math_ceil(\n (tempDouble - +(~~tempDouble >>> 0)) / 4294967296,\n ) >>> 0\n : 0),\n ]),\n (HEAP32[(dirp + pos + 8) >> 2] = tempI64[0]),\n (HEAP32[(dirp + pos + 12) >> 2] = tempI64[1]);\n HEAP16[(dirp + pos + 16) >> 1] = 280;\n HEAP8[(dirp + pos + 18) >> 0] = type;\n stringToUTF8(name, dirp + pos + 19, 256);\n pos += struct_size;\n idx += 1;\n }\n FS.llseek(stream, idx * struct_size, 0);\n return pos;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall221(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(),\n cmd = SYSCALLS.get();\n switch (cmd) {\n case 0: {\n var arg = SYSCALLS.get();\n if (arg < 0) {\n return -22;\n }\n var newStream;\n newStream = FS.open(stream.path, stream.flags, 0, arg);\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 arg = SYSCALLS.get();\n stream.flags |= arg;\n return 0;\n }\n case 12: {\n var arg = SYSCALLS.get();\n var offset = 0;\n HEAP16[(arg + offset) >> 1] = 2;\n return 0;\n }\n case 13:\n case 14:\n return 0;\n case 16:\n case 8:\n return -22;\n case 9:\n ___setErrNo(22);\n return -1;\n default: {\n return -22;\n }\n }\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall3(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(),\n buf = SYSCALLS.get(),\n count = SYSCALLS.get();\n return FS.read(stream, HEAP8, buf, count);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall33(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var path = SYSCALLS.getStr(),\n amode = SYSCALLS.get();\n return SYSCALLS.doAccess(path, amode);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall340(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var pid = SYSCALLS.get(),\n resource = SYSCALLS.get(),\n new_limit = SYSCALLS.get(),\n old_limit = SYSCALLS.get();\n if (old_limit) {\n HEAP32[old_limit >> 2] = -1;\n HEAP32[(old_limit + 4) >> 2] = -1;\n HEAP32[(old_limit + 8) >> 2] = -1;\n HEAP32[(old_limit + 12) >> 2] = -1;\n }\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall38(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var old_path = SYSCALLS.getStr(),\n new_path = SYSCALLS.getStr();\n FS.rename(old_path, new_path);\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall39(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var path = SYSCALLS.getStr(),\n mode = SYSCALLS.get();\n return SYSCALLS.doMkdir(path, mode);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall4(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(),\n buf = SYSCALLS.get(),\n count = SYSCALLS.get();\n return FS.write(stream, HEAP8, buf, count);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall40(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var path = SYSCALLS.getStr();\n FS.rmdir(path);\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall41(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var old = SYSCALLS.getStreamFromFD();\n return FS.open(old.path, old.flags, 0).fd;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nvar PIPEFS = {\n BUCKET_BUFFER_SIZE: 8192,\n mount: function (mount) {\n return FS.createNode(null, \"/\", 16384 | 511, 0);\n },\n createPipe: function () {\n var pipe = { buckets: [] };\n pipe.buckets.push({\n buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),\n offset: 0,\n roffset: 0,\n });\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({\n path: rName,\n node: rNode,\n flags: FS.modeStringToFlags(\"r\"),\n seekable: false,\n stream_ops: PIPEFS.stream_ops,\n });\n rNode.stream = readableStream;\n var writableStream = FS.createStream({\n path: wName,\n node: wNode,\n flags: FS.modeStringToFlags(\"w\"),\n seekable: false,\n stream_ops: PIPEFS.stream_ops,\n });\n wNode.stream = writableStream;\n return { readable_fd: readableStream.fd, writable_fd: writableStream.fd };\n },\n stream_ops: {\n poll: function (stream) {\n var pipe = stream.node.pipe;\n if ((stream.flags & 2097155) === 1) {\n return 256 | 4;\n } else {\n if (pipe.buckets.length > 0) {\n for (var i = 0; i < pipe.buckets.length; i++) {\n var bucket = pipe.buckets[i];\n if (bucket.offset - bucket.roffset > 0) {\n return 64 | 1;\n }\n }\n }\n }\n return 0;\n },\n ioctl: function (stream, request, varargs) {\n return ERRNO_CODES.EINVAL;\n },\n fsync: function (stream) {\n return ERRNO_CODES.EINVAL;\n },\n read: function (stream, buffer, offset, length, position) {\n var pipe = stream.node.pipe;\n var currentLength = 0;\n for (var i = 0; i < pipe.buckets.length; i++) {\n var bucket = pipe.buckets[i];\n currentLength += bucket.offset - bucket.roffset;\n }\n assert(buffer instanceof ArrayBuffer || ArrayBuffer.isView(buffer));\n var data = buffer.subarray(offset, offset + length);\n if (length <= 0) {\n return 0;\n }\n if (currentLength == 0) {\n throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);\n }\n var toRead = Math.min(currentLength, length);\n var totalRead = toRead;\n var toRemove = 0;\n for (var i = 0; i < pipe.buckets.length; i++) {\n var currBucket = pipe.buckets[i];\n var bucketSize = currBucket.offset - currBucket.roffset;\n if (toRead <= bucketSize) {\n var tmpSlice = currBucket.buffer.subarray(\n currBucket.roffset,\n currBucket.offset,\n );\n if (toRead < bucketSize) {\n tmpSlice = tmpSlice.subarray(0, toRead);\n currBucket.roffset += toRead;\n } else {\n toRemove++;\n }\n data.set(tmpSlice);\n break;\n } else {\n var tmpSlice = currBucket.buffer.subarray(\n currBucket.roffset,\n currBucket.offset,\n );\n data.set(tmpSlice);\n data = data.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 },\n write: function (stream, buffer, offset, length, position) {\n var pipe = stream.node.pipe;\n assert(buffer instanceof ArrayBuffer || ArrayBuffer.isView(buffer));\n var data = buffer.subarray(offset, offset + length);\n var dataLen = data.byteLength;\n if (dataLen <= 0) {\n return 0;\n }\n var currBucket = null;\n if (pipe.buckets.length == 0) {\n currBucket = {\n buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),\n offset: 0,\n roffset: 0,\n };\n pipe.buckets.push(currBucket);\n } else {\n currBucket = pipe.buckets[pipe.buckets.length - 1];\n }\n assert(currBucket.offset <= PIPEFS.BUCKET_BUFFER_SIZE);\n var freeBytesInCurrBuffer = PIPEFS.BUCKET_BUFFER_SIZE - currBucket.offset;\n if (freeBytesInCurrBuffer >= dataLen) {\n currBucket.buffer.set(data, currBucket.offset);\n currBucket.offset += dataLen;\n return dataLen;\n } else if (freeBytesInCurrBuffer > 0) {\n currBucket.buffer.set(\n data.subarray(0, freeBytesInCurrBuffer),\n currBucket.offset,\n );\n currBucket.offset += freeBytesInCurrBuffer;\n data = data.subarray(freeBytesInCurrBuffer, data.byteLength);\n }\n var numBuckets = (data.byteLength / PIPEFS.BUCKET_BUFFER_SIZE) | 0;\n var remElements = data.byteLength % PIPEFS.BUCKET_BUFFER_SIZE;\n for (var i = 0; i < numBuckets; i++) {\n var newBucket = {\n buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),\n offset: PIPEFS.BUCKET_BUFFER_SIZE,\n roffset: 0,\n };\n pipe.buckets.push(newBucket);\n newBucket.buffer.set(data.subarray(0, PIPEFS.BUCKET_BUFFER_SIZE));\n data = data.subarray(PIPEFS.BUCKET_BUFFER_SIZE, data.byteLength);\n }\n if (remElements > 0) {\n var newBucket = {\n buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),\n offset: data.byteLength,\n roffset: 0,\n };\n pipe.buckets.push(newBucket);\n newBucket.buffer.set(data);\n }\n return dataLen;\n },\n close: function (stream) {\n var pipe = stream.node.pipe;\n pipe.buckets = null;\n },\n },\n nextname: function () {\n if (!PIPEFS.nextname.current) {\n PIPEFS.nextname.current = 0;\n }\n return \"pipe[\" + PIPEFS.nextname.current++ + \"]\";\n },\n};\nfunction ___syscall42(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var fdPtr = SYSCALLS.get();\n if (fdPtr == 0) {\n throw new FS.ErrnoError(14);\n }\n var res = PIPEFS.createPipe();\n HEAP32[fdPtr >> 2] = res.readable_fd;\n HEAP32[(fdPtr + 4) >> 2] = res.writable_fd;\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall5(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var pathname = SYSCALLS.getStr(),\n flags = SYSCALLS.get(),\n mode = SYSCALLS.get();\n var stream = FS.open(pathname, flags, mode);\n return stream.fd;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall54(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(),\n op = SYSCALLS.get();\n switch (op) {\n case 21509:\n case 21505: {\n if (!stream.tty) return -25;\n return 0;\n }\n case 21510:\n case 21511:\n case 21512:\n case 21506:\n case 21507:\n case 21508: {\n if (!stream.tty) return -25;\n return 0;\n }\n case 21519: {\n if (!stream.tty) return -25;\n var argp = SYSCALLS.get();\n HEAP32[argp >> 2] = 0;\n return 0;\n }\n case 21520: {\n if (!stream.tty) return -25;\n return -22;\n }\n case 21531: {\n var argp = SYSCALLS.get();\n return FS.ioctl(stream, op, argp);\n }\n case 21523: {\n if (!stream.tty) return -25;\n return 0;\n }\n case 21524: {\n if (!stream.tty) return -25;\n return 0;\n }\n default:\n abort(\"bad ioctl syscall \" + op);\n }\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall6(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD();\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall63(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var old = SYSCALLS.getStreamFromFD(),\n suggestFD = SYSCALLS.get();\n if (old.fd === suggestFD) return suggestFD;\n return SYSCALLS.doDup(old.path, old.flags, suggestFD);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall77(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var who = SYSCALLS.get(),\n usage = SYSCALLS.get();\n _memset(usage, 0, 136);\n HEAP32[usage >> 2] = 1;\n HEAP32[(usage + 4) >> 2] = 2;\n HEAP32[(usage + 8) >> 2] = 3;\n HEAP32[(usage + 12) >> 2] = 4;\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall83(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var target = SYSCALLS.getStr(),\n linkpath = SYSCALLS.getStr();\n FS.symlink(target, linkpath);\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall85(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var path = SYSCALLS.getStr(),\n buf = SYSCALLS.get(),\n bufsize = SYSCALLS.get();\n return SYSCALLS.doReadlink(path, buf, bufsize);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction __emscripten_syscall_munmap(addr, len) {\n if (addr === -1 || len === 0) {\n return -22;\n }\n var info = SYSCALLS.mappings[addr];\n if (!info) return 0;\n if (len === info.len) {\n var stream = FS.getStream(info.fd);\n SYSCALLS.doMsync(addr, stream, len, info.flags);\n FS.munmap(stream);\n SYSCALLS.mappings[addr] = null;\n if (info.allocated) {\n _free(info.malloc);\n }\n }\n return 0;\n}\nfunction ___syscall91(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var addr = SYSCALLS.get(),\n len = SYSCALLS.get();\n return __emscripten_syscall_munmap(addr, len);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___unlock() {}\nfunction _exit(status) {\n exit(status);\n}\nfunction __exit(a0) {\n return _exit(a0);\n}\nfunction _abort() {\n Module[\"abort\"]();\n}\nfunction _atexit(func, arg) {\n warnOnce(\n \"atexit() called, but EXIT_RUNTIME is not set, so atexits() will not be called. set EXIT_RUNTIME to 1 (see the FAQ)\",\n );\n __ATEXIT__.unshift({ func: func, arg: arg });\n}\nvar _ceil = Math_ceil;\nfunction _clock() {\n if (_clock.start === undefined) _clock.start = Date.now();\n return ((Date.now() - _clock.start) * (1e6 / 1e3)) | 0;\n}\nfunction _difftime(time1, time0) {\n return time1 - time0;\n}\nfunction _dlopen() {\n abort(\n \"To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking\",\n );\n}\nfunction _dlclose() {\n return _dlopen.apply(null, arguments);\n}\nfunction _dlerror() {\n return _dlopen.apply(null, arguments);\n}\nfunction _dlsym() {\n return _dlopen.apply(null, arguments);\n}\nfunction _emscripten_get_canvas_size(width, height, isFullscreen) {\n var canvas = Module[\"canvas\"];\n HEAP32[width >> 2] = canvas.width;\n HEAP32[height >> 2] = canvas.height;\n HEAP32[isFullscreen >> 2] = Browser.isFullscreen ? 1 : 0;\n}\nfunction _emscripten_get_heap_size() {\n return HEAP8.length;\n}\nfunction _longjmp(env, value) {\n _setThrew(env, value || 1);\n throw \"longjmp\";\n}\nfunction _emscripten_longjmp(env, value) {\n _longjmp(env, value);\n}\nfunction _execl() {\n ___setErrNo(8);\n return -1;\n}\nfunction _execve() {\n return _execl.apply(null, arguments);\n}\nvar _fabs = Math_abs;\nvar _floor = Math_floor;\nfunction _fork() {\n ___setErrNo(11);\n return -1;\n}\nfunction _getenv(name) {\n if (name === 0) return 0;\n name = UTF8ToString(name);\n if (!ENV.hasOwnProperty(name)) return 0;\n if (_getenv.ret) _free(_getenv.ret);\n _getenv.ret = allocateUTF8(ENV[name]);\n return _getenv.ret;\n}\nfunction _getpwnam() {\n throw \"getpwnam: TODO\";\n}\nfunction _getpwuid(uid) {\n return 0;\n}\nfunction _gettimeofday(ptr) {\n var now = Date.now();\n HEAP32[ptr >> 2] = (now / 1e3) | 0;\n HEAP32[(ptr + 4) >> 2] = ((now % 1e3) * 1e3) | 0;\n return 0;\n}\nvar GL = {\n counter: 1,\n lastError: 0,\n buffers: [],\n mappedBuffers: {},\n programs: [],\n framebuffers: [],\n renderbuffers: [],\n textures: [],\n uniforms: [],\n shaders: [],\n vaos: [],\n contexts: {},\n currentContext: null,\n offscreenCanvases: {},\n timerQueriesEXT: [],\n currArrayBuffer: 0,\n currElementArrayBuffer: 0,\n byteSizeByTypeRoot: 5120,\n byteSizeByType: [1, 1, 2, 2, 4, 4, 4, 2, 3, 4, 8],\n programInfos: {},\n stringCache: {},\n unpackAlignment: 4,\n init: function () {\n GL.createLog2ceilLookup(GL.MAX_TEMP_BUFFER_SIZE);\n GL.miniTempBuffer = new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);\n for (var i = 0; i < GL.MINI_TEMP_BUFFER_SIZE; i++) {\n GL.miniTempBufferViews[i] = GL.miniTempBuffer.subarray(0, i + 1);\n }\n },\n recordError: function recordError(errorCode) {\n if (!GL.lastError) {\n GL.lastError = errorCode;\n }\n },\n getNewId: function (table) {\n var ret = GL.counter++;\n for (var i = table.length; i < ret; i++) {\n table[i] = null;\n }\n return ret;\n },\n MINI_TEMP_BUFFER_SIZE: 256,\n miniTempBuffer: null,\n miniTempBufferViews: [0],\n MAX_TEMP_BUFFER_SIZE: 2097152,\n numTempVertexBuffersPerSize: 64,\n log2ceilLookup: null,\n createLog2ceilLookup: function (maxValue) {\n GL.log2ceilLookup = new Uint8Array(maxValue + 1);\n var log2 = 0;\n var pow2 = 1;\n GL.log2ceilLookup[0] = 0;\n for (var i = 1; i <= maxValue; ++i) {\n if (i > pow2) {\n pow2 <<= 1;\n ++log2;\n }\n GL.log2ceilLookup[i] = log2;\n }\n },\n generateTempBuffers: function (quads, context) {\n var largestIndex = GL.log2ceilLookup[GL.MAX_TEMP_BUFFER_SIZE];\n context.tempVertexBufferCounters1 = [];\n context.tempVertexBufferCounters2 = [];\n context.tempVertexBufferCounters1.length =\n context.tempVertexBufferCounters2.length = largestIndex + 1;\n context.tempVertexBuffers1 = [];\n context.tempVertexBuffers2 = [];\n context.tempVertexBuffers1.length = context.tempVertexBuffers2.length =\n largestIndex + 1;\n context.tempIndexBuffers = [];\n context.tempIndexBuffers.length = largestIndex + 1;\n for (var i = 0; i <= largestIndex; ++i) {\n context.tempIndexBuffers[i] = null;\n context.tempVertexBufferCounters1[i] = context.tempVertexBufferCounters2[\n i\n ] = 0;\n var ringbufferLength = GL.numTempVertexBuffersPerSize;\n context.tempVertexBuffers1[i] = [];\n context.tempVertexBuffers2[i] = [];\n var ringbuffer1 = context.tempVertexBuffers1[i];\n var ringbuffer2 = context.tempVertexBuffers2[i];\n ringbuffer1.length = ringbuffer2.length = ringbufferLength;\n for (var j = 0; j < ringbufferLength; ++j) {\n ringbuffer1[j] = ringbuffer2[j] = null;\n }\n }\n if (quads) {\n context.tempQuadIndexBuffer = GLctx.createBuffer();\n context.GLctx.bindBuffer(\n context.GLctx.ELEMENT_ARRAY_BUFFER,\n context.tempQuadIndexBuffer,\n );\n var numIndexes = GL.MAX_TEMP_BUFFER_SIZE >> 1;\n var quadIndexes = new Uint16Array(numIndexes);\n var i = 0,\n v = 0;\n while (1) {\n quadIndexes[i++] = v;\n if (i >= numIndexes) break;\n quadIndexes[i++] = v + 1;\n if (i >= numIndexes) break;\n quadIndexes[i++] = v + 2;\n if (i >= numIndexes) break;\n quadIndexes[i++] = v;\n if (i >= numIndexes) break;\n quadIndexes[i++] = v + 2;\n if (i >= numIndexes) break;\n quadIndexes[i++] = v + 3;\n if (i >= numIndexes) break;\n v += 4;\n }\n context.GLctx.bufferData(\n context.GLctx.ELEMENT_ARRAY_BUFFER,\n quadIndexes,\n context.GLctx.STATIC_DRAW,\n );\n context.GLctx.bindBuffer(context.GLctx.ELEMENT_ARRAY_BUFFER, null);\n }\n },\n getTempVertexBuffer: function getTempVertexBuffer(sizeBytes) {\n var idx = GL.log2ceilLookup[sizeBytes];\n var ringbuffer = GL.currentContext.tempVertexBuffers1[idx];\n var nextFreeBufferIndex = GL.currentContext.tempVertexBufferCounters1[idx];\n GL.currentContext.tempVertexBufferCounters1[idx] =\n (GL.currentContext.tempVertexBufferCounters1[idx] + 1) &\n (GL.numTempVertexBuffersPerSize - 1);\n var vbo = ringbuffer[nextFreeBufferIndex];\n if (vbo) {\n return vbo;\n }\n var prevVBO = GLctx.getParameter(GLctx.ARRAY_BUFFER_BINDING);\n ringbuffer[nextFreeBufferIndex] = GLctx.createBuffer();\n GLctx.bindBuffer(GLctx.ARRAY_BUFFER, ringbuffer[nextFreeBufferIndex]);\n GLctx.bufferData(GLctx.ARRAY_BUFFER, 1 << idx, GLctx.DYNAMIC_DRAW);\n GLctx.bindBuffer(GLctx.ARRAY_BUFFER, prevVBO);\n return ringbuffer[nextFreeBufferIndex];\n },\n getTempIndexBuffer: function getTempIndexBuffer(sizeBytes) {\n var idx = GL.log2ceilLookup[sizeBytes];\n var ibo = GL.currentContext.tempIndexBuffers[idx];\n if (ibo) {\n return ibo;\n }\n var prevIBO = GLctx.getParameter(GLctx.ELEMENT_ARRAY_BUFFER_BINDING);\n GL.currentContext.tempIndexBuffers[idx] = GLctx.createBuffer();\n GLctx.bindBuffer(\n GLctx.ELEMENT_ARRAY_BUFFER,\n GL.currentContext.tempIndexBuffers[idx],\n );\n GLctx.bufferData(GLctx.ELEMENT_ARRAY_BUFFER, 1 << idx, GLctx.DYNAMIC_DRAW);\n GLctx.bindBuffer(GLctx.ELEMENT_ARRAY_BUFFER, prevIBO);\n return GL.currentContext.tempIndexBuffers[idx];\n },\n newRenderingFrameStarted: function newRenderingFrameStarted() {\n if (!GL.currentContext) {\n return;\n }\n var vb = GL.currentContext.tempVertexBuffers1;\n GL.currentContext.tempVertexBuffers1 = GL.currentContext.tempVertexBuffers2;\n GL.currentContext.tempVertexBuffers2 = vb;\n vb = GL.currentContext.tempVertexBufferCounters1;\n GL.currentContext.tempVertexBufferCounters1 =\n GL.currentContext.tempVertexBufferCounters2;\n GL.currentContext.tempVertexBufferCounters2 = vb;\n var largestIndex = GL.log2ceilLookup[GL.MAX_TEMP_BUFFER_SIZE];\n for (var i = 0; i <= largestIndex; ++i) {\n GL.currentContext.tempVertexBufferCounters1[i] = 0;\n }\n },\n getSource: function (shader, count, string, length) {\n var source = \"\";\n for (var i = 0; i < count; ++i) {\n var len = length ? HEAP32[(length + i * 4) >> 2] : -1;\n source += UTF8ToString(\n HEAP32[(string + i * 4) >> 2],\n len < 0 ? undefined : len,\n );\n }\n var type = GLctx.getShaderParameter(GL.shaders[shader], 35663);\n if (type == 35632) {\n if (\n GLEmulation.findToken(source, \"dFdx\") ||\n GLEmulation.findToken(source, \"dFdy\") ||\n GLEmulation.findToken(source, \"fwidth\")\n ) {\n source = \"#extension GL_OES_standard_derivatives : enable\\n\" + source;\n var extension = GLctx.getExtension(\"OES_standard_derivatives\");\n }\n }\n return source;\n },\n createContext: function (canvas, webGLContextAttributes) {\n var ctx =\n canvas.getContext(\"webgl\", webGLContextAttributes) ||\n canvas.getContext(\"experimental-webgl\", webGLContextAttributes);\n return ctx ? GL.registerContext(ctx, webGLContextAttributes) : 0;\n },\n registerContext: function (ctx, webGLContextAttributes) {\n var handle = _malloc(8);\n var context = {\n handle: handle,\n attributes: webGLContextAttributes,\n version: webGLContextAttributes.majorVersion,\n GLctx: ctx,\n };\n if (ctx.canvas) ctx.canvas.GLctxObject = context;\n GL.contexts[handle] = context;\n if (\n typeof webGLContextAttributes.enableExtensionsByDefault === \"undefined\" ||\n webGLContextAttributes.enableExtensionsByDefault\n ) {\n GL.initExtensions(context);\n }\n return handle;\n },\n makeContextCurrent: function (contextHandle) {\n GL.currentContext = GL.contexts[contextHandle];\n Module.ctx = GLctx = GL.currentContext && GL.currentContext.GLctx;\n return !(contextHandle && !GLctx);\n },\n getContext: function (contextHandle) {\n return GL.contexts[contextHandle];\n },\n deleteContext: function (contextHandle) {\n if (GL.currentContext === GL.contexts[contextHandle])\n GL.currentContext = null;\n if (typeof JSEvents === \"object\")\n JSEvents.removeAllHandlersOnTarget(\n GL.contexts[contextHandle].GLctx.canvas,\n );\n if (GL.contexts[contextHandle] && GL.contexts[contextHandle].GLctx.canvas)\n GL.contexts[contextHandle].GLctx.canvas.GLctxObject = undefined;\n _free(GL.contexts[contextHandle]);\n GL.contexts[contextHandle] = null;\n },\n acquireInstancedArraysExtension: function (ctx) {\n var ext = ctx.getExtension(\"ANGLE_instanced_arrays\");\n if (ext) {\n ctx[\"vertexAttribDivisor\"] = function (index, divisor) {\n ext[\"vertexAttribDivisorANGLE\"](index, divisor);\n };\n ctx[\"drawArraysInstanced\"] = function (mode, first, count, primcount) {\n ext[\"drawArraysInstancedANGLE\"](mode, first, count, primcount);\n };\n ctx[\"drawElementsInstanced\"] = function (\n mode,\n count,\n type,\n indices,\n primcount,\n ) {\n ext[\"drawElementsInstancedANGLE\"](\n mode,\n count,\n type,\n indices,\n primcount,\n );\n };\n }\n },\n acquireVertexArrayObjectExtension: function (ctx) {\n var ext = ctx.getExtension(\"OES_vertex_array_object\");\n if (ext) {\n ctx[\"createVertexArray\"] = function () {\n return ext[\"createVertexArrayOES\"]();\n };\n ctx[\"deleteVertexArray\"] = function (vao) {\n ext[\"deleteVertexArrayOES\"](vao);\n };\n ctx[\"bindVertexArray\"] = function (vao) {\n ext[\"bindVertexArrayOES\"](vao);\n };\n ctx[\"isVertexArray\"] = function (vao) {\n return ext[\"isVertexArrayOES\"](vao);\n };\n }\n },\n acquireDrawBuffersExtension: function (ctx) {\n var ext = ctx.getExtension(\"WEBGL_draw_buffers\");\n if (ext) {\n ctx[\"drawBuffers\"] = function (n, bufs) {\n ext[\"drawBuffersWEBGL\"](n, bufs);\n };\n }\n },\n initExtensions: function (context) {\n if (!context) context = GL.currentContext;\n if (context.initExtensionsDone) return;\n context.initExtensionsDone = true;\n var GLctx = context.GLctx;\n context.compressionExt = GLctx.getExtension(\n \"WEBGL_compressed_texture_s3tc\",\n );\n context.anisotropicExt = GLctx.getExtension(\n \"EXT_texture_filter_anisotropic\",\n );\n if (context.version < 2) {\n GL.acquireInstancedArraysExtension(GLctx);\n GL.acquireVertexArrayObjectExtension(GLctx);\n GL.acquireDrawBuffersExtension(GLctx);\n }\n GLctx.disjointTimerQueryExt = GLctx.getExtension(\n \"EXT_disjoint_timer_query\",\n );\n var automaticallyEnabledExtensions = [\n \"OES_texture_float\",\n \"OES_texture_half_float\",\n \"OES_standard_derivatives\",\n \"OES_vertex_array_object\",\n \"WEBGL_compressed_texture_s3tc\",\n \"WEBGL_depth_texture\",\n \"OES_element_index_uint\",\n \"EXT_texture_filter_anisotropic\",\n \"EXT_frag_depth\",\n \"WEBGL_draw_buffers\",\n \"ANGLE_instanced_arrays\",\n \"OES_texture_float_linear\",\n \"OES_texture_half_float_linear\",\n \"EXT_blend_minmax\",\n \"EXT_shader_texture_lod\",\n \"WEBGL_compressed_texture_pvrtc\",\n \"EXT_color_buffer_half_float\",\n \"WEBGL_color_buffer_float\",\n \"EXT_sRGB\",\n \"WEBGL_compressed_texture_etc1\",\n \"EXT_disjoint_timer_query\",\n \"WEBGL_compressed_texture_etc\",\n \"WEBGL_compressed_texture_astc\",\n \"EXT_color_buffer_float\",\n \"WEBGL_compressed_texture_s3tc_srgb\",\n \"EXT_disjoint_timer_query_webgl2\",\n ];\n var exts = GLctx.getSupportedExtensions();\n if (exts && exts.length > 0) {\n GLctx.getSupportedExtensions().forEach(function (ext) {\n if (automaticallyEnabledExtensions.indexOf(ext) != -1) {\n GLctx.getExtension(ext);\n }\n });\n }\n },\n populateUniformTable: function (program) {\n var p = GL.programs[program];\n var ptable = (GL.programInfos[program] = {\n uniforms: {},\n maxUniformLength: 0,\n maxAttributeLength: -1,\n maxUniformBlockNameLength: -1,\n });\n var utable = ptable.uniforms;\n var numUniforms = GLctx.getProgramParameter(p, 35718);\n for (var i = 0; i < numUniforms; ++i) {\n var u = GLctx.getActiveUniform(p, i);\n var name = u.name;\n ptable.maxUniformLength = Math.max(\n ptable.maxUniformLength,\n name.length + 1,\n );\n if (name.slice(-1) == \"]\") {\n name = name.slice(0, name.lastIndexOf(\"[\"));\n }\n var loc = GLctx.getUniformLocation(p, name);\n if (loc) {\n var id = GL.getNewId(GL.uniforms);\n utable[name] = [u.size, id];\n GL.uniforms[id] = loc;\n for (var j = 1; j < u.size; ++j) {\n var n = name + \"[\" + j + \"]\";\n loc = GLctx.getUniformLocation(p, n);\n id = GL.getNewId(GL.uniforms);\n GL.uniforms[id] = loc;\n }\n }\n }\n },\n};\nfunction _glEnable(x0) {\n GLctx[\"enable\"](x0);\n}\nfunction _glDisable(x0) {\n GLctx[\"disable\"](x0);\n}\nfunction _glIsEnabled(x0) {\n return GLctx[\"isEnabled\"](x0);\n}\nfunction emscriptenWebGLGet(name_, p, type) {\n if (!p) {\n GL.recordError(1281);\n return;\n }\n var ret = undefined;\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 36345:\n ret = 0;\n break;\n case 34466:\n var formats = GLctx.getParameter(34467);\n ret = formats ? formats.length : 0;\n break;\n }\n if (ret === undefined) {\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 34068: {\n ret = 0;\n break;\n }\n default: {\n GL.recordError(1280);\n return;\n }\n }\n } else if (\n result instanceof Float32Array ||\n result instanceof Uint32Array ||\n result instanceof Int32Array ||\n result instanceof Array\n ) {\n for (var i = 0; i < result.length; ++i) {\n switch (type) {\n case 0:\n HEAP32[(p + i * 4) >> 2] = result[i];\n break;\n case 2:\n HEAPF32[(p + i * 4) >> 2] = result[i];\n break;\n case 4:\n HEAP8[(p + i) >> 0] = result[i] ? 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(\n \"GL_INVALID_ENUM in glGet\" +\n type +\n \"v: Unknown object returned from WebGL getParameter(\" +\n name_ +\n \")! (error: \" +\n e +\n \")\",\n );\n return;\n }\n }\n break;\n default:\n GL.recordError(1280);\n err(\n \"GL_INVALID_ENUM in glGet\" +\n type +\n \"v: Native code calling glGet\" +\n type +\n \"v(\" +\n name_ +\n \") and it returns \" +\n result +\n \" of type \" +\n typeof result +\n \"!\",\n );\n return;\n }\n }\n switch (type) {\n case 1:\n (tempI64 = [\n ret >>> 0,\n ((tempDouble = ret),\n +Math_abs(tempDouble) >= 1\n ? tempDouble > 0\n ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) |\n 0) >>>\n 0\n : ~~+Math_ceil(\n (tempDouble - +(~~tempDouble >>> 0)) / 4294967296,\n ) >>> 0\n : 0),\n ]),\n (HEAP32[p >> 2] = tempI64[0]),\n (HEAP32[(p + 4) >> 2] = tempI64[1]);\n break;\n case 0:\n HEAP32[p >> 2] = ret;\n break;\n case 2:\n HEAPF32[p >> 2] = ret;\n break;\n case 4:\n HEAP8[p >> 0] = ret ? 1 : 0;\n break;\n }\n}\nfunction _glGetBooleanv(name_, p) {\n emscriptenWebGLGet(name_, p, 4);\n}\nfunction _glGetIntegerv(name_, p) {\n emscriptenWebGLGet(name_, p, 0);\n}\nfunction stringToNewUTF8(jsString) {\n var length = lengthBytesUTF8(jsString) + 1;\n var cString = _malloc(length);\n stringToUTF8(jsString, cString, length);\n return cString;\n}\nfunction _glGetString(name_) {\n if (GL.stringCache[name_]) return GL.stringCache[name_];\n var ret;\n switch (name_) {\n case 7939:\n var exts = GLctx.getSupportedExtensions();\n var gl_exts = [];\n for (var i = 0; i < exts.length; ++i) {\n gl_exts.push(exts[i]);\n gl_exts.push(\"GL_\" + exts[i]);\n }\n ret = stringToNewUTF8(gl_exts.join(\" \"));\n break;\n case 7936:\n case 7937:\n case 37445:\n case 37446:\n var s = GLctx.getParameter(name_);\n if (!s) {\n GL.recordError(1280);\n }\n ret = stringToNewUTF8(s);\n break;\n case 7938:\n var glVersion = GLctx.getParameter(GLctx.VERSION);\n {\n glVersion = \"OpenGL ES 2.0 (\" + glVersion + \")\";\n }\n ret = stringToNewUTF8(glVersion);\n break;\n case 35724:\n var glslVersion = GLctx.getParameter(GLctx.SHADING_LANGUAGE_VERSION);\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 =\n \"OpenGL ES GLSL ES \" + ver_num[1] + \" (\" + glslVersion + \")\";\n }\n ret = stringToNewUTF8(glslVersion);\n break;\n default:\n GL.recordError(1280);\n return 0;\n }\n GL.stringCache[name_] = ret;\n return ret;\n}\nfunction _glCreateShader(shaderType) {\n var id = GL.getNewId(GL.shaders);\n GL.shaders[id] = GLctx.createShader(shaderType);\n return id;\n}\nfunction _glShaderSource(shader, count, string, length) {\n var source = GL.getSource(shader, count, string, length);\n GLctx.shaderSource(GL.shaders[shader], source);\n}\nfunction _glCompileShader(shader) {\n GLctx.compileShader(GL.shaders[shader]);\n}\nfunction _glAttachShader(program, shader) {\n GLctx.attachShader(GL.programs[program], GL.shaders[shader]);\n}\nfunction _glDetachShader(program, shader) {\n GLctx.detachShader(GL.programs[program], GL.shaders[shader]);\n}\nfunction _glUseProgram(program) {\n GLctx.useProgram(GL.programs[program]);\n}\nfunction _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 GL.programInfos[id] = null;\n}\nfunction _glBindAttribLocation(program, index, name) {\n GLctx.bindAttribLocation(GL.programs[program], index, UTF8ToString(name));\n}\nfunction _glLinkProgram(program) {\n GLctx.linkProgram(GL.programs[program]);\n GL.populateUniformTable(program);\n}\nfunction _glBindBuffer(target, buffer) {\n if (target == GLctx.ARRAY_BUFFER) {\n GL.currArrayBuffer = buffer;\n GLImmediate.lastArrayBuffer = buffer;\n } else if (target == GLctx.ELEMENT_ARRAY_BUFFER) {\n GL.currElementArrayBuffer = buffer;\n }\n GLctx.bindBuffer(target, GL.buffers[buffer]);\n}\nfunction _glGetFloatv(name_, p) {\n emscriptenWebGLGet(name_, p, 2);\n}\nfunction _glHint(x0, x1) {\n GLctx[\"hint\"](x0, x1);\n}\nfunction _glEnableVertexAttribArray(index) {\n GLctx.enableVertexAttribArray(index);\n}\nfunction _glDisableVertexAttribArray(index) {\n GLctx.disableVertexAttribArray(index);\n}\nfunction _glVertexAttribPointer(index, size, type, normalized, stride, ptr) {\n GLctx.vertexAttribPointer(index, size, type, !!normalized, stride, ptr);\n}\nfunction _glActiveTexture(x0) {\n GLctx[\"activeTexture\"](x0);\n}\nvar GLEmulation = {\n fogStart: 0,\n fogEnd: 1,\n fogDensity: 1,\n fogColor: null,\n fogMode: 2048,\n fogEnabled: false,\n vaos: [],\n currentVao: null,\n enabledVertexAttribArrays: {},\n hasRunInit: false,\n findToken: function (source, token) {\n function isIdentChar(ch) {\n if (ch >= 48 && ch <= 57) return true;\n if (ch >= 65 && ch <= 90) return true;\n if (ch >= 97 && ch <= 122) return true;\n return false;\n }\n var i = -1;\n do {\n i = source.indexOf(token, i + 1);\n if (i < 0) {\n break;\n }\n if (i > 0 && isIdentChar(source[i - 1])) {\n continue;\n }\n i += token.length;\n if (i < source.length - 1 && isIdentChar(source[i + 1])) {\n continue;\n }\n return true;\n } while (true);\n return false;\n },\n init: function () {\n if (GLEmulation.hasRunInit) {\n return;\n }\n GLEmulation.hasRunInit = true;\n GLEmulation.fogColor = new Float32Array(4);\n err(\n \"WARNING: using emscripten GL emulation. This is a collection of limited workarounds, do not expect it to work.\",\n );\n var validCapabilities = {\n 2884: 1,\n 3042: 1,\n 3024: 1,\n 2960: 1,\n 2929: 1,\n 3089: 1,\n 32823: 1,\n 32926: 1,\n 32928: 1,\n };\n var glEnable = _glEnable;\n _glEnable = _emscripten_glEnable = function _glEnable(cap) {\n if (GLImmediate.lastRenderer) GLImmediate.lastRenderer.cleanup();\n if (cap == 2912) {\n if (GLEmulation.fogEnabled != true) {\n GLImmediate.currentRenderer = null;\n GLEmulation.fogEnabled = true;\n }\n return;\n } else if (cap == 3553) {\n return;\n } else if (!(cap in validCapabilities)) {\n return;\n }\n glEnable(cap);\n };\n var glDisable = _glDisable;\n _glDisable = _emscripten_glDisable = function _glDisable(cap) {\n if (GLImmediate.lastRenderer) GLImmediate.lastRenderer.cleanup();\n if (cap == 2912) {\n if (GLEmulation.fogEnabled != false) {\n GLImmediate.currentRenderer = null;\n GLEmulation.fogEnabled = false;\n }\n return;\n } else if (cap == 3553) {\n return;\n } else if (!(cap in validCapabilities)) {\n return;\n }\n glDisable(cap);\n };\n _glIsEnabled = _emscripten_glIsEnabled = function _glIsEnabled(cap) {\n if (cap == 2912) {\n return GLEmulation.fogEnabled ? 1 : 0;\n } else if (!(cap in validCapabilities)) {\n return 0;\n }\n return GLctx.isEnabled(cap);\n };\n var glGetBooleanv = _glGetBooleanv;\n _glGetBooleanv = _emscripten_glGetBooleanv = function _glGetBooleanv(\n pname,\n p,\n ) {\n var attrib = GLEmulation.getAttributeFromCapability(pname);\n if (attrib !== null) {\n var result = GLImmediate.enabledClientAttributes[attrib];\n HEAP8[p >> 0] = result === true ? 1 : 0;\n return;\n }\n glGetBooleanv(pname, p);\n };\n var glGetIntegerv = _glGetIntegerv;\n _glGetIntegerv = _emscripten_glGetIntegerv = function _glGetIntegerv(\n pname,\n params,\n ) {\n switch (pname) {\n case 34018:\n pname = GLctx.MAX_TEXTURE_IMAGE_UNITS;\n break;\n case 35658: {\n var result = GLctx.getParameter(GLctx.MAX_VERTEX_UNIFORM_VECTORS);\n HEAP32[params >> 2] = result * 4;\n return;\n }\n case 35657: {\n var result = GLctx.getParameter(GLctx.MAX_FRAGMENT_UNIFORM_VECTORS);\n HEAP32[params >> 2] = result * 4;\n return;\n }\n case 35659: {\n var result = GLctx.getParameter(GLctx.MAX_VARYING_VECTORS);\n HEAP32[params >> 2] = result * 4;\n return;\n }\n case 34929:\n pname = GLctx.MAX_COMBINED_TEXTURE_IMAGE_UNITS;\n break;\n case 32890: {\n var attribute = GLImmediate.clientAttributes[GLImmediate.VERTEX];\n HEAP32[params >> 2] = attribute ? attribute.size : 0;\n return;\n }\n case 32891: {\n var attribute = GLImmediate.clientAttributes[GLImmediate.VERTEX];\n HEAP32[params >> 2] = attribute ? attribute.type : 0;\n return;\n }\n case 32892: {\n var attribute = GLImmediate.clientAttributes[GLImmediate.VERTEX];\n HEAP32[params >> 2] = attribute ? attribute.stride : 0;\n return;\n }\n case 32897: {\n var attribute = GLImmediate.clientAttributes[GLImmediate.COLOR];\n HEAP32[params >> 2] = attribute ? attribute.size : 0;\n return;\n }\n case 32898: {\n var attribute = GLImmediate.clientAttributes[GLImmediate.COLOR];\n HEAP32[params >> 2] = attribute ? attribute.type : 0;\n return;\n }\n case 32899: {\n var attribute = GLImmediate.clientAttributes[GLImmediate.COLOR];\n HEAP32[params >> 2] = attribute ? attribute.stride : 0;\n return;\n }\n case 32904: {\n var attribute =\n GLImmediate.clientAttributes[\n GLImmediate.TEXTURE0 + GLImmediate.clientActiveTexture\n ];\n HEAP32[params >> 2] = attribute ? attribute.size : 0;\n return;\n }\n case 32905: {\n var attribute =\n GLImmediate.clientAttributes[\n GLImmediate.TEXTURE0 + GLImmediate.clientActiveTexture\n ];\n HEAP32[params >> 2] = attribute ? attribute.type : 0;\n return;\n }\n case 32906: {\n var attribute =\n GLImmediate.clientAttributes[\n GLImmediate.TEXTURE0 + GLImmediate.clientActiveTexture\n ];\n HEAP32[params >> 2] = attribute ? attribute.stride : 0;\n return;\n }\n }\n glGetIntegerv(pname, params);\n };\n var glGetString = _glGetString;\n _glGetString = _emscripten_glGetString = function _glGetString(name_) {\n if (GL.stringCache[name_]) return GL.stringCache[name_];\n switch (name_) {\n case 7939:\n var ret = stringToNewUTF8(\n GLctx.getSupportedExtensions().join(\" \") +\n \" GL_EXT_texture_env_combine GL_ARB_texture_env_crossbar GL_ATI_texture_env_combine3 GL_NV_texture_env_combine4 GL_EXT_texture_env_dot3 GL_ARB_multitexture GL_ARB_vertex_buffer_object GL_EXT_framebuffer_object GL_ARB_vertex_program GL_ARB_fragment_program GL_ARB_shading_language_100 GL_ARB_shader_objects GL_ARB_vertex_shader GL_ARB_fragment_shader GL_ARB_texture_cube_map GL_EXT_draw_range_elements\" +\n (GL.currentContext.compressionExt\n ? \" GL_ARB_texture_compression GL_EXT_texture_compression_s3tc\"\n : \"\") +\n (GL.currentContext.anisotropicExt\n ? \" GL_EXT_texture_filter_anisotropic\"\n : \"\"),\n );\n GL.stringCache[name_] = ret;\n return ret;\n }\n return glGetString(name_);\n };\n GL.shaderInfos = {};\n var glCreateShader = _glCreateShader;\n _glCreateShader = _emscripten_glCreateShader = function _glCreateShader(\n shaderType,\n ) {\n var id = glCreateShader(shaderType);\n GL.shaderInfos[id] = { type: shaderType, ftransform: false };\n return id;\n };\n function ensurePrecision(source) {\n if (!/precision +(low|medium|high)p +float *;/.test(source)) {\n source =\n \"#ifdef GL_FRAGMENT_PRECISION_HIGH\\nprecision highp float;\\n#else\\nprecision mediump float;\\n#endif\\n\" +\n source;\n }\n return source;\n }\n _glShaderSource = _emscripten_glShaderSource = function _glShaderSource(\n shader,\n count,\n string,\n length,\n ) {\n var source = GL.getSource(shader, count, string, length);\n if (GL.shaderInfos[shader].type == GLctx.VERTEX_SHADER) {\n var has_pm = source.search(/u_projection/) >= 0;\n var has_mm = source.search(/u_modelView/) >= 0;\n var has_pv = source.search(/a_position/) >= 0;\n var need_pm = 0,\n need_mm = 0,\n need_pv = 0;\n var old = source;\n source = source.replace(\n /ftransform\\(\\)/g,\n \"(u_projection * u_modelView * a_position)\",\n );\n if (old != source) need_pm = need_mm = need_pv = 1;\n old = source;\n source = source.replace(/gl_ProjectionMatrix/g, \"u_projection\");\n if (old != source) need_pm = 1;\n old = source;\n source = source.replace(\n /gl_ModelViewMatrixTranspose\\[2\\]/g,\n \"vec4(u_modelView[0][2], u_modelView[1][2], u_modelView[2][2], u_modelView[3][2])\",\n );\n if (old != source) need_mm = 1;\n old = source;\n source = source.replace(/gl_ModelViewMatrix/g, \"u_modelView\");\n if (old != source) need_mm = 1;\n old = source;\n source = source.replace(/gl_Vertex/g, \"a_position\");\n if (old != source) need_pv = 1;\n old = source;\n source = source.replace(\n /gl_ModelViewProjectionMatrix/g,\n \"(u_projection * u_modelView)\",\n );\n if (old != source) need_pm = need_mm = 1;\n if (need_pv && !has_pv)\n source = \"attribute vec4 a_position; \\n\" + source;\n if (need_mm && !has_mm)\n source = \"uniform mat4 u_modelView; \\n\" + source;\n if (need_pm && !has_pm)\n source = \"uniform mat4 u_projection; \\n\" + source;\n GL.shaderInfos[shader].ftransform = need_pm || need_mm || need_pv;\n for (var i = 0; i < GLImmediate.MAX_TEXTURES; i++) {\n old = source;\n var need_vtc = source.search(\"v_texCoord\" + i) == -1;\n source = source\n .replace(\n new RegExp(\"gl_TexCoord\\\\[\" + i + \"\\\\]\", \"g\"),\n \"v_texCoord\" + i,\n )\n .replace(new RegExp(\"gl_MultiTexCoord\" + i, \"g\"), \"a_texCoord\" + i);\n if (source != old) {\n source = \"attribute vec4 a_texCoord\" + i + \"; \\n\" + source;\n if (need_vtc) {\n source = \"varying vec4 v_texCoord\" + i + \"; \\n\" + source;\n }\n }\n old = source;\n source = source.replace(\n new RegExp(\"gl_TextureMatrix\\\\[\" + i + \"\\\\]\", \"g\"),\n \"u_textureMatrix\" + i,\n );\n if (source != old) {\n source = \"uniform mat4 u_textureMatrix\" + i + \"; \\n\" + source;\n }\n }\n if (source.indexOf(\"gl_FrontColor\") >= 0) {\n source =\n \"varying vec4 v_color; \\n\" +\n source.replace(/gl_FrontColor/g, \"v_color\");\n }\n if (source.indexOf(\"gl_Color\") >= 0) {\n source =\n \"attribute vec4 a_color; \\n\" +\n source.replace(/gl_Color/g, \"a_color\");\n }\n if (source.indexOf(\"gl_Normal\") >= 0) {\n source =\n \"attribute vec3 a_normal; \\n\" +\n source.replace(/gl_Normal/g, \"a_normal\");\n }\n if (source.indexOf(\"gl_FogFragCoord\") >= 0) {\n source =\n \"varying float v_fogFragCoord; \\n\" +\n source.replace(/gl_FogFragCoord/g, \"v_fogFragCoord\");\n }\n } else {\n for (i = 0; i < GLImmediate.MAX_TEXTURES; i++) {\n old = source;\n source = source.replace(\n new RegExp(\"gl_TexCoord\\\\[\" + i + \"\\\\]\", \"g\"),\n \"v_texCoord\" + i,\n );\n if (source != old) {\n source = \"varying vec4 v_texCoord\" + i + \"; \\n\" + source;\n }\n }\n if (source.indexOf(\"gl_Color\") >= 0) {\n source =\n \"varying vec4 v_color; \\n\" + source.replace(/gl_Color/g, \"v_color\");\n }\n if (source.indexOf(\"gl_Fog.color\") >= 0) {\n source =\n \"uniform vec4 u_fogColor; \\n\" +\n source.replace(/gl_Fog.color/g, \"u_fogColor\");\n }\n if (source.indexOf(\"gl_Fog.end\") >= 0) {\n source =\n \"uniform float u_fogEnd; \\n\" +\n source.replace(/gl_Fog.end/g, \"u_fogEnd\");\n }\n if (source.indexOf(\"gl_Fog.scale\") >= 0) {\n source =\n \"uniform float u_fogScale; \\n\" +\n source.replace(/gl_Fog.scale/g, \"u_fogScale\");\n }\n if (source.indexOf(\"gl_Fog.density\") >= 0) {\n source =\n \"uniform float u_fogDensity; \\n\" +\n source.replace(/gl_Fog.density/g, \"u_fogDensity\");\n }\n if (source.indexOf(\"gl_FogFragCoord\") >= 0) {\n source =\n \"varying float v_fogFragCoord; \\n\" +\n source.replace(/gl_FogFragCoord/g, \"v_fogFragCoord\");\n }\n source = ensurePrecision(source);\n }\n GLctx.shaderSource(GL.shaders[shader], source);\n };\n _glCompileShader = _emscripten_glCompileShader = function _glCompileShader(\n shader,\n ) {\n GLctx.compileShader(GL.shaders[shader]);\n };\n GL.programShaders = {};\n var glAttachShader = _glAttachShader;\n _glAttachShader = _emscripten_glAttachShader = function _glAttachShader(\n program,\n shader,\n ) {\n if (!GL.programShaders[program]) GL.programShaders[program] = [];\n GL.programShaders[program].push(shader);\n glAttachShader(program, shader);\n };\n var glDetachShader = _glDetachShader;\n _glDetachShader = _emscripten_glDetachShader = function _glDetachShader(\n program,\n shader,\n ) {\n var programShader = GL.programShaders[program];\n if (!programShader) {\n err(\"WARNING: _glDetachShader received invalid program: \" + program);\n return;\n }\n var index = programShader.indexOf(shader);\n programShader.splice(index, 1);\n glDetachShader(program, shader);\n };\n var glUseProgram = _glUseProgram;\n _glUseProgram = _emscripten_glUseProgram = function _glUseProgram(program) {\n if (GL.currProgram != program) {\n GLImmediate.currentRenderer = null;\n GL.currProgram = program;\n GLImmediate.fixedFunctionProgram = 0;\n glUseProgram(program);\n }\n };\n var glDeleteProgram = _glDeleteProgram;\n _glDeleteProgram = _emscripten_glDeleteProgram = function _glDeleteProgram(\n program,\n ) {\n glDeleteProgram(program);\n if (program == GL.currProgram) {\n GLImmediate.currentRenderer = null;\n GL.currProgram = 0;\n }\n };\n var zeroUsedPrograms = {};\n var glBindAttribLocation = _glBindAttribLocation;\n _glBindAttribLocation = _emscripten_glBindAttribLocation =\n function _glBindAttribLocation(program, index, name) {\n if (index == 0) zeroUsedPrograms[program] = true;\n glBindAttribLocation(program, index, name);\n };\n var glLinkProgram = _glLinkProgram;\n _glLinkProgram = _emscripten_glLinkProgram = function _glLinkProgram(\n program,\n ) {\n if (!(program in zeroUsedPrograms)) {\n GLctx.bindAttribLocation(GL.programs[program], 0, \"a_position\");\n }\n glLinkProgram(program);\n };\n var glBindBuffer = _glBindBuffer;\n _glBindBuffer = _emscripten_glBindBuffer = function _glBindBuffer(\n target,\n buffer,\n ) {\n glBindBuffer(target, buffer);\n if (target == GLctx.ARRAY_BUFFER) {\n if (GLEmulation.currentVao) {\n assert(\n GLEmulation.currentVao.arrayBuffer == buffer ||\n GLEmulation.currentVao.arrayBuffer == 0 ||\n buffer == 0,\n \"TODO: support for multiple array buffers in vao\",\n );\n GLEmulation.currentVao.arrayBuffer = buffer;\n }\n } else if (target == GLctx.ELEMENT_ARRAY_BUFFER) {\n if (GLEmulation.currentVao)\n GLEmulation.currentVao.elementArrayBuffer = buffer;\n }\n };\n var glGetFloatv = _glGetFloatv;\n _glGetFloatv = _emscripten_glGetFloatv = function _glGetFloatv(\n pname,\n params,\n ) {\n if (pname == 2982) {\n HEAPF32.set(GLImmediate.matrix[0], params >> 2);\n } else if (pname == 2983) {\n HEAPF32.set(GLImmediate.matrix[1], params >> 2);\n } else if (pname == 2984) {\n HEAPF32.set(\n GLImmediate.matrix[2 + GLImmediate.clientActiveTexture],\n params >> 2,\n );\n } else if (pname == 2918) {\n HEAPF32.set(GLEmulation.fogColor, params >> 2);\n } else if (pname == 2915) {\n HEAPF32[params >> 2] = GLEmulation.fogStart;\n } else if (pname == 2916) {\n HEAPF32[params >> 2] = GLEmulation.fogEnd;\n } else if (pname == 2914) {\n HEAPF32[params >> 2] = GLEmulation.fogDensity;\n } else if (pname == 2917) {\n HEAPF32[params >> 2] = GLEmulation.fogMode;\n } else {\n glGetFloatv(pname, params);\n }\n };\n var glHint = _glHint;\n _glHint = _emscripten_glHint = function _glHint(target, mode) {\n if (target == 34031) {\n return;\n }\n glHint(target, mode);\n };\n var glEnableVertexAttribArray = _glEnableVertexAttribArray;\n _glEnableVertexAttribArray = _emscripten_glEnableVertexAttribArray =\n function _glEnableVertexAttribArray(index) {\n glEnableVertexAttribArray(index);\n GLEmulation.enabledVertexAttribArrays[index] = 1;\n if (GLEmulation.currentVao)\n GLEmulation.currentVao.enabledVertexAttribArrays[index] = 1;\n };\n var glDisableVertexAttribArray = _glDisableVertexAttribArray;\n _glDisableVertexAttribArray = _emscripten_glDisableVertexAttribArray =\n function _glDisableVertexAttribArray(index) {\n glDisableVertexAttribArray(index);\n delete GLEmulation.enabledVertexAttribArrays[index];\n if (GLEmulation.currentVao)\n delete GLEmulation.currentVao.enabledVertexAttribArrays[index];\n };\n var glVertexAttribPointer = _glVertexAttribPointer;\n _glVertexAttribPointer = _emscripten_glVertexAttribPointer =\n function _glVertexAttribPointer(\n index,\n size,\n type,\n normalized,\n stride,\n pointer,\n ) {\n glVertexAttribPointer(index, size, type, normalized, stride, pointer);\n if (GLEmulation.currentVao) {\n GLEmulation.currentVao.vertexAttribPointers[index] = [\n index,\n size,\n type,\n normalized,\n stride,\n pointer,\n ];\n }\n };\n },\n getAttributeFromCapability: function (cap) {\n var attrib = null;\n switch (cap) {\n case 3553:\n abort(\n \"GL_TEXTURE_2D is not a spec-defined capability for gl{Enable,Disable}ClientState.\",\n );\n case 32888:\n attrib = GLImmediate.TEXTURE0 + GLImmediate.clientActiveTexture;\n break;\n case 32884:\n attrib = GLImmediate.VERTEX;\n break;\n case 32885:\n attrib = GLImmediate.NORMAL;\n break;\n case 32886:\n attrib = GLImmediate.COLOR;\n break;\n }\n return attrib;\n },\n};\nvar GLImmediate = {\n MapTreeLib: null,\n spawnMapTreeLib: function () {\n function CNaiveListMap() {\n var list = [];\n this.insert = function CNaiveListMap_insert(key, val) {\n if (this.contains(key | 0)) return false;\n list.push([key, val]);\n return true;\n };\n var __contains_i;\n this.contains = function CNaiveListMap_contains(key) {\n for (__contains_i = 0; __contains_i < list.length; ++__contains_i) {\n if (list[__contains_i][0] === key) return true;\n }\n return false;\n };\n var __get_i;\n this.get = function CNaiveListMap_get(key) {\n for (__get_i = 0; __get_i < list.length; ++__get_i) {\n if (list[__get_i][0] === key) return list[__get_i][1];\n }\n return undefined;\n };\n }\n function CMapTree() {\n function CNLNode() {\n var map = new CNaiveListMap();\n this.child = function CNLNode_child(keyFrag) {\n if (!map.contains(keyFrag | 0)) {\n map.insert(keyFrag | 0, new CNLNode());\n }\n return map.get(keyFrag | 0);\n };\n this.value = undefined;\n this.get = function CNLNode_get() {\n return this.value;\n };\n this.set = function CNLNode_set(val) {\n this.value = val;\n };\n }\n function CKeyView(root) {\n var cur;\n this.reset = function CKeyView_reset() {\n cur = root;\n return this;\n };\n this.reset();\n this.next = function CKeyView_next(keyFrag) {\n cur = cur.child(keyFrag);\n return this;\n };\n this.get = function CKeyView_get() {\n return cur.get();\n };\n this.set = function CKeyView_set(val) {\n cur.set(val);\n };\n }\n var root;\n var staticKeyView;\n this.createKeyView = function CNLNode_createKeyView() {\n return new CKeyView(root);\n };\n this.clear = function CNLNode_clear() {\n root = new CNLNode();\n staticKeyView = this.createKeyView();\n };\n this.clear();\n this.getStaticKeyView = function CNLNode_getStaticKeyView() {\n staticKeyView.reset();\n return staticKeyView;\n };\n }\n return {\n create: function () {\n return new CMapTree();\n },\n };\n },\n TexEnvJIT: null,\n spawnTexEnvJIT: function () {\n var GL_TEXTURE0 = 33984;\n var GL_TEXTURE_1D = 3552;\n var GL_TEXTURE_2D = 3553;\n var GL_TEXTURE_3D = 32879;\n var GL_TEXTURE_CUBE_MAP = 34067;\n var GL_TEXTURE_ENV = 8960;\n var GL_TEXTURE_ENV_MODE = 8704;\n var GL_TEXTURE_ENV_COLOR = 8705;\n var GL_SRC0_RGB = 34176;\n var GL_SRC1_RGB = 34177;\n var GL_SRC2_RGB = 34178;\n var GL_SRC0_ALPHA = 34184;\n var GL_SRC1_ALPHA = 34185;\n var GL_SRC2_ALPHA = 34186;\n var GL_OPERAND0_RGB = 34192;\n var GL_OPERAND1_RGB = 34193;\n var GL_OPERAND2_RGB = 34194;\n var GL_OPERAND0_ALPHA = 34200;\n var GL_OPERAND1_ALPHA = 34201;\n var GL_OPERAND2_ALPHA = 34202;\n var GL_COMBINE_RGB = 34161;\n var GL_COMBINE_ALPHA = 34162;\n var GL_RGB_SCALE = 34163;\n var GL_ALPHA_SCALE = 3356;\n var GL_ADD = 260;\n var GL_BLEND = 3042;\n var GL_REPLACE = 7681;\n var GL_MODULATE = 8448;\n var GL_DECAL = 8449;\n var GL_COMBINE = 34160;\n var GL_SUBTRACT = 34023;\n var GL_INTERPOLATE = 34165;\n var GL_TEXTURE = 5890;\n var GL_CONSTANT = 34166;\n var GL_PRIMARY_COLOR = 34167;\n var GL_PREVIOUS = 34168;\n var GL_SRC_COLOR = 768;\n var GL_ONE_MINUS_SRC_COLOR = 769;\n var GL_SRC_ALPHA = 770;\n var GL_ONE_MINUS_SRC_ALPHA = 771;\n var TEXENVJIT_NAMESPACE_PREFIX = \"tej_\";\n var TEX_UNIT_UNIFORM_PREFIX = \"uTexUnit\";\n var TEX_COORD_VARYING_PREFIX = \"vTexCoord\";\n var PRIM_COLOR_VARYING = \"vPrimColor\";\n var TEX_MATRIX_UNIFORM_PREFIX = \"uTexMatrix\";\n var s_texUnits = null;\n var s_activeTexture = 0;\n var s_requiredTexUnitsForPass = [];\n function abort(info) {\n assert(false, \"[TexEnvJIT] ABORT: \" + info);\n }\n function abort_noSupport(info) {\n abort(\"No support: \" + info);\n }\n function abort_sanity(info) {\n abort(\"Sanity failure: \" + info);\n }\n function genTexUnitSampleExpr(texUnitID) {\n var texUnit = s_texUnits[texUnitID];\n var texType = texUnit.getTexType();\n var func = null;\n switch (texType) {\n case GL_TEXTURE_1D:\n func = \"texture2D\";\n break;\n case GL_TEXTURE_2D:\n func = \"texture2D\";\n break;\n case GL_TEXTURE_3D:\n return abort_noSupport(\"No support for 3D textures.\");\n case GL_TEXTURE_CUBE_MAP:\n func = \"textureCube\";\n break;\n default:\n return abort_sanity(\"Unknown texType: 0x\" + texType.toString(16));\n }\n var texCoordExpr = TEX_COORD_VARYING_PREFIX + texUnitID;\n if (TEX_MATRIX_UNIFORM_PREFIX != null) {\n texCoordExpr =\n \"(\" +\n TEX_MATRIX_UNIFORM_PREFIX +\n texUnitID +\n \" * \" +\n texCoordExpr +\n \")\";\n }\n return (\n func +\n \"(\" +\n TEX_UNIT_UNIFORM_PREFIX +\n texUnitID +\n \", \" +\n texCoordExpr +\n \".xy)\"\n );\n }\n function getTypeFromCombineOp(op) {\n switch (op) {\n case GL_SRC_COLOR:\n case GL_ONE_MINUS_SRC_COLOR:\n return \"vec3\";\n case GL_SRC_ALPHA:\n case GL_ONE_MINUS_SRC_ALPHA:\n return \"float\";\n }\n return abort_noSupport(\"Unsupported combiner op: 0x\" + op.toString(16));\n }\n function getCurTexUnit() {\n return s_texUnits[s_activeTexture];\n }\n function genCombinerSourceExpr(\n texUnitID,\n constantExpr,\n previousVar,\n src,\n op,\n ) {\n var srcExpr = null;\n switch (src) {\n case GL_TEXTURE:\n srcExpr = genTexUnitSampleExpr(texUnitID);\n break;\n case GL_CONSTANT:\n srcExpr = constantExpr;\n break;\n case GL_PRIMARY_COLOR:\n srcExpr = PRIM_COLOR_VARYING;\n break;\n case GL_PREVIOUS:\n srcExpr = previousVar;\n break;\n default:\n return abort_noSupport(\n \"Unsupported combiner src: 0x\" + src.toString(16),\n );\n }\n var expr = null;\n switch (op) {\n case GL_SRC_COLOR:\n expr = srcExpr + \".rgb\";\n break;\n case GL_ONE_MINUS_SRC_COLOR:\n expr = \"(vec3(1.0) - \" + srcExpr + \".rgb)\";\n break;\n case GL_SRC_ALPHA:\n expr = srcExpr + \".a\";\n break;\n case GL_ONE_MINUS_SRC_ALPHA:\n expr = \"(1.0 - \" + srcExpr + \".a)\";\n break;\n default:\n return abort_noSupport(\n \"Unsupported combiner op: 0x\" + op.toString(16),\n );\n }\n return expr;\n }\n function valToFloatLiteral(val) {\n if (val == Math.round(val)) return val + \".0\";\n return val;\n }\n function CTexEnv() {\n this.mode = GL_MODULATE;\n this.colorCombiner = GL_MODULATE;\n this.alphaCombiner = GL_MODULATE;\n this.colorScale = 1;\n this.alphaScale = 1;\n this.envColor = [0, 0, 0, 0];\n this.colorSrc = [GL_TEXTURE, GL_PREVIOUS, GL_CONSTANT];\n this.alphaSrc = [GL_TEXTURE, GL_PREVIOUS, GL_CONSTANT];\n this.colorOp = [GL_SRC_COLOR, GL_SRC_COLOR, GL_SRC_ALPHA];\n this.alphaOp = [GL_SRC_ALPHA, GL_SRC_ALPHA, GL_SRC_ALPHA];\n this.traverseKey = {\n 7681: 0,\n 8448: 1,\n 260: 2,\n 3042: 3,\n 8449: 4,\n 34160: 5,\n 34023: 3,\n 34165: 4,\n 5890: 0,\n 34166: 1,\n 34167: 2,\n 34168: 3,\n 768: 0,\n 769: 1,\n 770: 2,\n 771: 3,\n };\n this.key0 = -1;\n this.key1 = 0;\n this.key2 = 0;\n this.computeKey0 = function () {\n var k = this.traverseKey;\n var key = k[this.mode] * 1638400;\n key += k[this.colorCombiner] * 327680;\n key += k[this.alphaCombiner] * 65536;\n key += (this.colorScale - 1) * 16384;\n key += (this.alphaScale - 1) * 4096;\n key += k[this.colorSrc[0]] * 1024;\n key += k[this.colorSrc[1]] * 256;\n key += k[this.colorSrc[2]] * 64;\n key += k[this.alphaSrc[0]] * 16;\n key += k[this.alphaSrc[1]] * 4;\n key += k[this.alphaSrc[2]];\n return key;\n };\n this.computeKey1 = function () {\n var k = this.traverseKey;\n key = k[this.colorOp[0]] * 4096;\n key += k[this.colorOp[1]] * 1024;\n key += k[this.colorOp[2]] * 256;\n key += k[this.alphaOp[0]] * 16;\n key += k[this.alphaOp[1]] * 4;\n key += k[this.alphaOp[2]];\n return key;\n };\n this.computeKey2 = function () {\n return (\n this.envColor[0] * 16777216 +\n this.envColor[1] * 65536 +\n this.envColor[2] * 256 +\n 1 +\n this.envColor[3]\n );\n };\n this.recomputeKey = function () {\n this.key0 = this.computeKey0();\n this.key1 = this.computeKey1();\n this.key2 = this.computeKey2();\n };\n this.invalidateKey = function () {\n this.key0 = -1;\n GLImmediate.currentRenderer = null;\n };\n }\n function CTexUnit() {\n this.env = new CTexEnv();\n this.enabled_tex1D = false;\n this.enabled_tex2D = false;\n this.enabled_tex3D = false;\n this.enabled_texCube = false;\n this.texTypesEnabled = 0;\n this.traverseState = function CTexUnit_traverseState(keyView) {\n if (this.texTypesEnabled) {\n if (this.env.key0 == -1) {\n this.env.recomputeKey();\n }\n keyView.next(this.texTypesEnabled | (this.env.key0 << 4));\n keyView.next(this.env.key1);\n keyView.next(this.env.key2);\n } else {\n keyView.next(0);\n }\n };\n }\n CTexUnit.prototype.enabled = function CTexUnit_enabled() {\n return this.texTypesEnabled;\n };\n CTexUnit.prototype.genPassLines = function CTexUnit_genPassLines(\n passOutputVar,\n passInputVar,\n texUnitID,\n ) {\n if (!this.enabled()) {\n return [\"vec4 \" + passOutputVar + \" = \" + passInputVar + \";\"];\n }\n var lines = this.env\n .genPassLines(passOutputVar, passInputVar, texUnitID)\n .join(\"\\n\");\n var texLoadLines = \"\";\n var texLoadRegex = /(texture.*?\\(.*?\\))/g;\n var loadCounter = 0;\n var load;\n while ((load = texLoadRegex.exec(lines))) {\n var texLoadExpr = load[1];\n var secondOccurrence = lines.slice(load.index + 1).indexOf(texLoadExpr);\n if (secondOccurrence != -1) {\n var prefix = TEXENVJIT_NAMESPACE_PREFIX + \"env\" + texUnitID + \"_\";\n var texLoadVar = prefix + \"texload\" + loadCounter++;\n var texLoadLine = \"vec4 \" + texLoadVar + \" = \" + texLoadExpr + \";\\n\";\n texLoadLines += texLoadLine + \"\\n\";\n lines = lines.split(texLoadExpr).join(texLoadVar);\n texLoadRegex = /(texture.*\\(.*\\))/g;\n }\n }\n return [texLoadLines + lines];\n };\n CTexUnit.prototype.getTexType = function CTexUnit_getTexType() {\n if (this.enabled_texCube) {\n return GL_TEXTURE_CUBE_MAP;\n } else if (this.enabled_tex3D) {\n return GL_TEXTURE_3D;\n } else if (this.enabled_tex2D) {\n return GL_TEXTURE_2D;\n } else if (this.enabled_tex1D) {\n return GL_TEXTURE_1D;\n }\n return 0;\n };\n CTexEnv.prototype.genPassLines = function CTexEnv_genPassLines(\n passOutputVar,\n passInputVar,\n texUnitID,\n ) {\n switch (this.mode) {\n case GL_REPLACE: {\n return [\n \"vec4 \" +\n passOutputVar +\n \" = \" +\n genTexUnitSampleExpr(texUnitID) +\n \";\",\n ];\n }\n case GL_ADD: {\n var prefix = TEXENVJIT_NAMESPACE_PREFIX + \"env\" + texUnitID + \"_\";\n var texVar = prefix + \"tex\";\n var colorVar = prefix + \"color\";\n var alphaVar = prefix + \"alpha\";\n return [\n \"vec4 \" + texVar + \" = \" + genTexUnitSampleExpr(texUnitID) + \";\",\n \"vec3 \" +\n colorVar +\n \" = \" +\n passInputVar +\n \".rgb + \" +\n texVar +\n \".rgb;\",\n \"float \" +\n alphaVar +\n \" = \" +\n passInputVar +\n \".a * \" +\n texVar +\n \".a;\",\n \"vec4 \" +\n passOutputVar +\n \" = vec4(\" +\n colorVar +\n \", \" +\n alphaVar +\n \");\",\n ];\n }\n case GL_MODULATE: {\n var line = [\n \"vec4 \" + passOutputVar,\n \" = \",\n passInputVar,\n \" * \",\n genTexUnitSampleExpr(texUnitID),\n \";\",\n ];\n return [line.join(\"\")];\n }\n case GL_DECAL: {\n var prefix = TEXENVJIT_NAMESPACE_PREFIX + \"env\" + texUnitID + \"_\";\n var texVar = prefix + \"tex\";\n var colorVar = prefix + \"color\";\n var alphaVar = prefix + \"alpha\";\n return [\n \"vec4 \" + texVar + \" = \" + genTexUnitSampleExpr(texUnitID) + \";\",\n [\n \"vec3 \" + colorVar + \" = \",\n passInputVar + \".rgb * (1.0 - \" + texVar + \".a)\",\n \" + \",\n texVar + \".rgb * \" + texVar + \".a\",\n \";\",\n ].join(\"\"),\n \"float \" + alphaVar + \" = \" + passInputVar + \".a;\",\n \"vec4 \" +\n passOutputVar +\n \" = vec4(\" +\n colorVar +\n \", \" +\n alphaVar +\n \");\",\n ];\n }\n case GL_BLEND: {\n var prefix = TEXENVJIT_NAMESPACE_PREFIX + \"env\" + texUnitID + \"_\";\n var texVar = prefix + \"tex\";\n var colorVar = prefix + \"color\";\n var alphaVar = prefix + \"alpha\";\n return [\n \"vec4 \" + texVar + \" = \" + genTexUnitSampleExpr(texUnitID) + \";\",\n [\n \"vec3 \" + colorVar + \" = \",\n passInputVar + \".rgb * (1.0 - \" + texVar + \".rgb)\",\n \" + \",\n PRIM_COLOR_VARYING + \".rgb * \" + texVar + \".rgb\",\n \";\",\n ].join(\"\"),\n \"float \" + alphaVar + \" = \" + texVar + \".a;\",\n \"vec4 \" +\n passOutputVar +\n \" = vec4(\" +\n colorVar +\n \", \" +\n alphaVar +\n \");\",\n ];\n }\n case GL_COMBINE: {\n var prefix = TEXENVJIT_NAMESPACE_PREFIX + \"env\" + texUnitID + \"_\";\n var colorVar = prefix + \"color\";\n var alphaVar = prefix + \"alpha\";\n var colorLines = this.genCombinerLines(\n true,\n colorVar,\n passInputVar,\n texUnitID,\n this.colorCombiner,\n this.colorSrc,\n this.colorOp,\n );\n var alphaLines = this.genCombinerLines(\n false,\n alphaVar,\n passInputVar,\n texUnitID,\n this.alphaCombiner,\n this.alphaSrc,\n this.alphaOp,\n );\n var scaledColor =\n this.colorScale == 1\n ? colorVar\n : colorVar + \" * \" + valToFloatLiteral(this.colorScale);\n var scaledAlpha =\n this.alphaScale == 1\n ? alphaVar\n : alphaVar + \" * \" + valToFloatLiteral(this.alphaScale);\n var line = [\n \"vec4 \" + passOutputVar,\n \" = \",\n \"vec4(\",\n scaledColor,\n \", \",\n scaledAlpha,\n \")\",\n \";\",\n ].join(\"\");\n return [].concat(colorLines, alphaLines, [line]);\n }\n }\n return abort_noSupport(\n \"Unsupported TexEnv mode: 0x\" + this.mode.toString(16),\n );\n };\n CTexEnv.prototype.genCombinerLines = function CTexEnv_getCombinerLines(\n isColor,\n outputVar,\n passInputVar,\n texUnitID,\n combiner,\n srcArr,\n opArr,\n ) {\n var argsNeeded = null;\n switch (combiner) {\n case GL_REPLACE:\n argsNeeded = 1;\n break;\n case GL_MODULATE:\n case GL_ADD:\n case GL_SUBTRACT:\n argsNeeded = 2;\n break;\n case GL_INTERPOLATE:\n argsNeeded = 3;\n break;\n default:\n return abort_noSupport(\n \"Unsupported combiner: 0x\" + combiner.toString(16),\n );\n }\n var constantExpr = [\n \"vec4(\",\n valToFloatLiteral(this.envColor[0]),\n \", \",\n valToFloatLiteral(this.envColor[1]),\n \", \",\n valToFloatLiteral(this.envColor[2]),\n \", \",\n valToFloatLiteral(this.envColor[3]),\n \")\",\n ].join(\"\");\n var src0Expr =\n argsNeeded >= 1\n ? genCombinerSourceExpr(\n texUnitID,\n constantExpr,\n passInputVar,\n srcArr[0],\n opArr[0],\n )\n : null;\n var src1Expr =\n argsNeeded >= 2\n ? genCombinerSourceExpr(\n texUnitID,\n constantExpr,\n passInputVar,\n srcArr[1],\n opArr[1],\n )\n : null;\n var src2Expr =\n argsNeeded >= 3\n ? genCombinerSourceExpr(\n texUnitID,\n constantExpr,\n passInputVar,\n srcArr[2],\n opArr[2],\n )\n : null;\n var outputType = isColor ? \"vec3\" : \"float\";\n var lines = null;\n switch (combiner) {\n case GL_REPLACE: {\n var line = [outputType + \" \" + outputVar, \" = \", src0Expr, \";\"];\n lines = [line.join(\"\")];\n break;\n }\n case GL_MODULATE: {\n var line = [\n outputType + \" \" + outputVar + \" = \",\n src0Expr + \" * \" + src1Expr,\n \";\",\n ];\n lines = [line.join(\"\")];\n break;\n }\n case GL_ADD: {\n var line = [\n outputType + \" \" + outputVar + \" = \",\n src0Expr + \" + \" + src1Expr,\n \";\",\n ];\n lines = [line.join(\"\")];\n break;\n }\n case GL_SUBTRACT: {\n var line = [\n outputType + \" \" + outputVar + \" = \",\n src0Expr + \" - \" + src1Expr,\n \";\",\n ];\n lines = [line.join(\"\")];\n break;\n }\n case GL_INTERPOLATE: {\n var prefix = TEXENVJIT_NAMESPACE_PREFIX + \"env\" + texUnitID + \"_\";\n var arg2Var = prefix + \"colorSrc2\";\n var arg2Line =\n getTypeFromCombineOp(this.colorOp[2]) +\n \" \" +\n arg2Var +\n \" = \" +\n src2Expr +\n \";\";\n var line = [\n outputType + \" \" + outputVar,\n \" = \",\n src0Expr + \" * \" + arg2Var,\n \" + \",\n src1Expr + \" * (1.0 - \" + arg2Var + \")\",\n \";\",\n ];\n lines = [arg2Line, line.join(\"\")];\n break;\n }\n default:\n return abort_sanity(\"Unmatched TexEnv.colorCombiner?\");\n }\n return lines;\n };\n return {\n init: function (gl, specifiedMaxTextureImageUnits) {\n var maxTexUnits = 0;\n if (specifiedMaxTextureImageUnits) {\n maxTexUnits = specifiedMaxTextureImageUnits;\n } else if (gl) {\n maxTexUnits = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);\n }\n assert(maxTexUnits > 0);\n s_texUnits = [];\n for (var i = 0; i < maxTexUnits; i++) {\n s_texUnits.push(new CTexUnit());\n }\n },\n setGLSLVars: function (\n uTexUnitPrefix,\n vTexCoordPrefix,\n vPrimColor,\n uTexMatrixPrefix,\n ) {\n TEX_UNIT_UNIFORM_PREFIX = uTexUnitPrefix;\n TEX_COORD_VARYING_PREFIX = vTexCoordPrefix;\n PRIM_COLOR_VARYING = vPrimColor;\n TEX_MATRIX_UNIFORM_PREFIX = uTexMatrixPrefix;\n },\n genAllPassLines: function (resultDest, indentSize) {\n indentSize = indentSize || 0;\n s_requiredTexUnitsForPass.length = 0;\n var lines = [];\n var lastPassVar = PRIM_COLOR_VARYING;\n for (var i = 0; i < s_texUnits.length; i++) {\n if (!s_texUnits[i].enabled()) continue;\n s_requiredTexUnitsForPass.push(i);\n var prefix = TEXENVJIT_NAMESPACE_PREFIX + \"env\" + i + \"_\";\n var passOutputVar = prefix + \"result\";\n var newLines = s_texUnits[i].genPassLines(\n passOutputVar,\n lastPassVar,\n i,\n );\n lines = lines.concat(newLines, [\"\"]);\n lastPassVar = passOutputVar;\n }\n lines.push(resultDest + \" = \" + lastPassVar + \";\");\n var indent = \"\";\n for (var i = 0; i < indentSize; i++) indent += \" \";\n var output = indent + lines.join(\"\\n\" + indent);\n return output;\n },\n getUsedTexUnitList: function () {\n return s_requiredTexUnitsForPass;\n },\n traverseState: function (keyView) {\n for (var i = 0; i < s_texUnits.length; i++) {\n s_texUnits[i].traverseState(keyView);\n }\n },\n getTexUnitType: function (texUnitID) {\n assert(texUnitID >= 0 && texUnitID < s_texUnits.length);\n return s_texUnits[texUnitID].getTexType();\n },\n hook_activeTexture: function (texture) {\n s_activeTexture = texture - GL_TEXTURE0;\n },\n hook_enable: function (cap) {\n var cur = getCurTexUnit();\n switch (cap) {\n case GL_TEXTURE_1D:\n if (!cur.enabled_tex1D) {\n GLImmediate.currentRenderer = null;\n cur.enabled_tex1D = true;\n cur.texTypesEnabled |= 1;\n }\n break;\n case GL_TEXTURE_2D:\n if (!cur.enabled_tex2D) {\n GLImmediate.currentRenderer = null;\n cur.enabled_tex2D = true;\n cur.texTypesEnabled |= 2;\n }\n break;\n case GL_TEXTURE_3D:\n if (!cur.enabled_tex3D) {\n GLImmediate.currentRenderer = null;\n cur.enabled_tex3D = true;\n cur.texTypesEnabled |= 4;\n }\n break;\n case GL_TEXTURE_CUBE_MAP:\n if (!cur.enabled_texCube) {\n GLImmediate.currentRenderer = null;\n cur.enabled_texCube = true;\n cur.texTypesEnabled |= 8;\n }\n break;\n }\n },\n hook_disable: function (cap) {\n var cur = getCurTexUnit();\n switch (cap) {\n case GL_TEXTURE_1D:\n if (cur.enabled_tex1D) {\n GLImmediate.currentRenderer = null;\n cur.enabled_tex1D = false;\n cur.texTypesEnabled &= ~1;\n }\n break;\n case GL_TEXTURE_2D:\n if (cur.enabled_tex2D) {\n GLImmediate.currentRenderer = null;\n cur.enabled_tex2D = false;\n cur.texTypesEnabled &= ~2;\n }\n break;\n case GL_TEXTURE_3D:\n if (cur.enabled_tex3D) {\n GLImmediate.currentRenderer = null;\n cur.enabled_tex3D = false;\n cur.texTypesEnabled &= ~4;\n }\n break;\n case GL_TEXTURE_CUBE_MAP:\n if (cur.enabled_texCube) {\n GLImmediate.currentRenderer = null;\n cur.enabled_texCube = false;\n cur.texTypesEnabled &= ~8;\n }\n break;\n }\n },\n hook_texEnvf: function (target, pname, param) {\n if (target != GL_TEXTURE_ENV) return;\n var env = getCurTexUnit().env;\n switch (pname) {\n case GL_RGB_SCALE:\n if (env.colorScale != param) {\n env.invalidateKey();\n env.colorScale = param;\n }\n break;\n case GL_ALPHA_SCALE:\n if (env.alphaScale != param) {\n env.invalidateKey();\n env.alphaScale = param;\n }\n break;\n default:\n err(\"WARNING: Unhandled `pname` in call to `glTexEnvf`.\");\n }\n },\n hook_texEnvi: function (target, pname, param) {\n if (target != GL_TEXTURE_ENV) return;\n var env = getCurTexUnit().env;\n switch (pname) {\n case GL_TEXTURE_ENV_MODE:\n if (env.mode != param) {\n env.invalidateKey();\n env.mode = param;\n }\n break;\n case GL_COMBINE_RGB:\n if (env.colorCombiner != param) {\n env.invalidateKey();\n env.colorCombiner = param;\n }\n break;\n case GL_COMBINE_ALPHA:\n if (env.alphaCombiner != param) {\n env.invalidateKey();\n env.alphaCombiner = param;\n }\n break;\n case GL_SRC0_RGB:\n if (env.colorSrc[0] != param) {\n env.invalidateKey();\n env.colorSrc[0] = param;\n }\n break;\n case GL_SRC1_RGB:\n if (env.colorSrc[1] != param) {\n env.invalidateKey();\n env.colorSrc[1] = param;\n }\n break;\n case GL_SRC2_RGB:\n if (env.colorSrc[2] != param) {\n env.invalidateKey();\n env.colorSrc[2] = param;\n }\n break;\n case GL_SRC0_ALPHA:\n if (env.alphaSrc[0] != param) {\n env.invalidateKey();\n env.alphaSrc[0] = param;\n }\n break;\n case GL_SRC1_ALPHA:\n if (env.alphaSrc[1] != param) {\n env.invalidateKey();\n env.alphaSrc[1] = param;\n }\n break;\n case GL_SRC2_ALPHA:\n if (env.alphaSrc[2] != param) {\n env.invalidateKey();\n env.alphaSrc[2] = param;\n }\n break;\n case GL_OPERAND0_RGB:\n if (env.colorOp[0] != param) {\n env.invalidateKey();\n env.colorOp[0] = param;\n }\n break;\n case GL_OPERAND1_RGB:\n if (env.colorOp[1] != param) {\n env.invalidateKey();\n env.colorOp[1] = param;\n }\n break;\n case GL_OPERAND2_RGB:\n if (env.colorOp[2] != param) {\n env.invalidateKey();\n env.colorOp[2] = param;\n }\n break;\n case GL_OPERAND0_ALPHA:\n if (env.alphaOp[0] != param) {\n env.invalidateKey();\n env.alphaOp[0] = param;\n }\n break;\n case GL_OPERAND1_ALPHA:\n if (env.alphaOp[1] != param) {\n env.invalidateKey();\n env.alphaOp[1] = param;\n }\n break;\n case GL_OPERAND2_ALPHA:\n if (env.alphaOp[2] != param) {\n env.invalidateKey();\n env.alphaOp[2] = param;\n }\n break;\n case GL_RGB_SCALE:\n if (env.colorScale != param) {\n env.invalidateKey();\n env.colorScale = param;\n }\n break;\n case GL_ALPHA_SCALE:\n if (env.alphaScale != param) {\n env.invalidateKey();\n env.alphaScale = param;\n }\n break;\n default:\n err(\"WARNING: Unhandled `pname` in call to `glTexEnvi`.\");\n }\n },\n hook_texEnvfv: function (target, pname, params) {\n if (target != GL_TEXTURE_ENV) return;\n var env = getCurTexUnit().env;\n switch (pname) {\n case GL_TEXTURE_ENV_COLOR: {\n for (var i = 0; i < 4; i++) {\n var param = HEAPF32[(params + i * 4) >> 2];\n if (env.envColor[i] != param) {\n env.invalidateKey();\n env.envColor[i] = param;\n }\n }\n break;\n }\n default:\n err(\"WARNING: Unhandled `pname` in call to `glTexEnvfv`.\");\n }\n },\n hook_getTexEnviv: function (target, pname, param) {\n if (target != GL_TEXTURE_ENV) return;\n var env = getCurTexUnit().env;\n switch (pname) {\n case GL_TEXTURE_ENV_MODE:\n HEAP32[param >> 2] = env.mode;\n return;\n case GL_TEXTURE_ENV_COLOR:\n HEAP32[param >> 2] = Math.max(\n Math.min(env.envColor[0] * 255, 255, -255),\n );\n HEAP32[(param + 1) >> 2] = Math.max(\n Math.min(env.envColor[1] * 255, 255, -255),\n );\n HEAP32[(param + 2) >> 2] = Math.max(\n Math.min(env.envColor[2] * 255, 255, -255),\n );\n HEAP32[(param + 3) >> 2] = Math.max(\n Math.min(env.envColor[3] * 255, 255, -255),\n );\n return;\n case GL_COMBINE_RGB:\n HEAP32[param >> 2] = env.colorCombiner;\n return;\n case GL_COMBINE_ALPHA:\n HEAP32[param >> 2] = env.alphaCombiner;\n return;\n case GL_SRC0_RGB:\n HEAP32[param >> 2] = env.colorSrc[0];\n return;\n case GL_SRC1_RGB:\n HEAP32[param >> 2] = env.colorSrc[1];\n return;\n case GL_SRC2_RGB:\n HEAP32[param >> 2] = env.colorSrc[2];\n return;\n case GL_SRC0_ALPHA:\n HEAP32[param >> 2] = env.alphaSrc[0];\n return;\n case GL_SRC1_ALPHA:\n HEAP32[param >> 2] = env.alphaSrc[1];\n return;\n case GL_SRC2_ALPHA:\n HEAP32[param >> 2] = env.alphaSrc[2];\n return;\n case GL_OPERAND0_RGB:\n HEAP32[param >> 2] = env.colorOp[0];\n return;\n case GL_OPERAND1_RGB:\n HEAP32[param >> 2] = env.colorOp[1];\n return;\n case GL_OPERAND2_RGB:\n HEAP32[param >> 2] = env.colorOp[2];\n return;\n case GL_OPERAND0_ALPHA:\n HEAP32[param >> 2] = env.alphaOp[0];\n return;\n case GL_OPERAND1_ALPHA:\n HEAP32[param >> 2] = env.alphaOp[1];\n return;\n case GL_OPERAND2_ALPHA:\n HEAP32[param >> 2] = env.alphaOp[2];\n return;\n case GL_RGB_SCALE:\n HEAP32[param >> 2] = env.colorScale;\n return;\n case GL_ALPHA_SCALE:\n HEAP32[param >> 2] = env.alphaScale;\n return;\n default:\n err(\"WARNING: Unhandled `pname` in call to `glGetTexEnvi`.\");\n }\n },\n hook_getTexEnvfv: function (target, pname, param) {\n if (target != GL_TEXTURE_ENV) return;\n var env = getCurTexUnit().env;\n switch (pname) {\n case GL_TEXTURE_ENV_COLOR:\n HEAPF32[param >> 2] = env.envColor[0];\n HEAPF32[(param + 4) >> 2] = env.envColor[1];\n HEAPF32[(param + 8) >> 2] = env.envColor[2];\n HEAPF32[(param + 12) >> 2] = env.envColor[3];\n return;\n }\n },\n };\n },\n vertexData: null,\n vertexDataU8: null,\n tempData: null,\n indexData: null,\n vertexCounter: 0,\n mode: -1,\n rendererCache: null,\n rendererComponents: [],\n rendererComponentPointer: 0,\n lastRenderer: null,\n lastArrayBuffer: null,\n lastProgram: null,\n lastStride: -1,\n matrix: [],\n matrixStack: [],\n currentMatrix: 0,\n tempMatrix: null,\n matricesModified: false,\n useTextureMatrix: false,\n VERTEX: 0,\n NORMAL: 1,\n COLOR: 2,\n TEXTURE0: 3,\n NUM_ATTRIBUTES: -1,\n MAX_TEXTURES: -1,\n totalEnabledClientAttributes: 0,\n enabledClientAttributes: [0, 0],\n clientAttributes: [],\n liveClientAttributes: [],\n currentRenderer: null,\n modifiedClientAttributes: false,\n clientActiveTexture: 0,\n clientColor: null,\n usedTexUnitList: [],\n fixedFunctionProgram: null,\n setClientAttribute: function setClientAttribute(\n name,\n size,\n type,\n stride,\n pointer,\n ) {\n var attrib = GLImmediate.clientAttributes[name];\n if (!attrib) {\n for (var i = 0; i <= name; i++) {\n if (!GLImmediate.clientAttributes[i]) {\n GLImmediate.clientAttributes[i] = {\n name: name,\n size: size,\n type: type,\n stride: stride,\n pointer: pointer,\n offset: 0,\n };\n }\n }\n } else {\n attrib.name = name;\n attrib.size = size;\n attrib.type = type;\n attrib.stride = stride;\n attrib.pointer = pointer;\n attrib.offset = 0;\n }\n GLImmediate.modifiedClientAttributes = true;\n },\n addRendererComponent: function addRendererComponent(name, size, type) {\n if (!GLImmediate.rendererComponents[name]) {\n GLImmediate.rendererComponents[name] = 1;\n if (GLImmediate.enabledClientAttributes[name]) {\n console.log(\n \"Warning: glTexCoord used after EnableClientState for TEXTURE_COORD_ARRAY for TEXTURE0. Disabling TEXTURE_COORD_ARRAY...\",\n );\n }\n GLImmediate.enabledClientAttributes[name] = true;\n GLImmediate.setClientAttribute(\n name,\n size,\n type,\n 0,\n GLImmediate.rendererComponentPointer,\n );\n GLImmediate.rendererComponentPointer +=\n size * GL.byteSizeByType[type - GL.byteSizeByTypeRoot];\n } else {\n GLImmediate.rendererComponents[name]++;\n }\n },\n disableBeginEndClientAttributes: function disableBeginEndClientAttributes() {\n for (var i = 0; i < GLImmediate.NUM_ATTRIBUTES; i++) {\n if (GLImmediate.rendererComponents[i])\n GLImmediate.enabledClientAttributes[i] = false;\n }\n },\n getRenderer: function getRenderer() {\n if (GLImmediate.currentRenderer) {\n return GLImmediate.currentRenderer;\n }\n var attributes = GLImmediate.liveClientAttributes;\n var cacheMap = GLImmediate.rendererCache;\n var keyView = cacheMap.getStaticKeyView().reset();\n var enabledAttributesKey = 0;\n for (var i = 0; i < attributes.length; i++) {\n enabledAttributesKey |= 1 << attributes[i].name;\n }\n var fogParam = 0;\n if (GLEmulation.fogEnabled) {\n switch (GLEmulation.fogMode) {\n case 2049:\n fogParam = 1;\n break;\n case 9729:\n fogParam = 2;\n break;\n default:\n fogParam = 3;\n break;\n }\n }\n keyView.next((enabledAttributesKey << 2) | fogParam);\n keyView.next(GL.currProgram);\n if (!GL.currProgram) {\n GLImmediate.TexEnvJIT.traverseState(keyView);\n }\n var renderer = keyView.get();\n if (!renderer) {\n renderer = GLImmediate.createRenderer();\n GLImmediate.currentRenderer = renderer;\n keyView.set(renderer);\n return renderer;\n }\n GLImmediate.currentRenderer = renderer;\n return renderer;\n },\n createRenderer: function createRenderer(renderer) {\n var useCurrProgram = !!GL.currProgram;\n var hasTextures = false;\n for (var i = 0; i < GLImmediate.MAX_TEXTURES; i++) {\n var texAttribName = GLImmediate.TEXTURE0 + i;\n if (!GLImmediate.enabledClientAttributes[texAttribName]) continue;\n if (!useCurrProgram) {\n if (GLImmediate.TexEnvJIT.getTexUnitType(i) == 0) {\n warnOnce(\n \"GL_TEXTURE\" +\n i +\n \" coords are supplied, but that texture unit is disabled in the fixed-function pipeline.\",\n );\n }\n }\n hasTextures = true;\n }\n var ret = {\n init: function init() {\n var uTexUnitPrefix = \"u_texUnit\";\n var aTexCoordPrefix = \"a_texCoord\";\n var vTexCoordPrefix = \"v_texCoord\";\n var vPrimColor = \"v_color\";\n var uTexMatrixPrefix = GLImmediate.useTextureMatrix\n ? \"u_textureMatrix\"\n : null;\n if (useCurrProgram) {\n if (\n GL.shaderInfos[GL.programShaders[GL.currProgram][0]].type ==\n GLctx.VERTEX_SHADER\n ) {\n this.vertexShader =\n GL.shaders[GL.programShaders[GL.currProgram][0]];\n this.fragmentShader =\n GL.shaders[GL.programShaders[GL.currProgram][1]];\n } else {\n this.vertexShader =\n GL.shaders[GL.programShaders[GL.currProgram][1]];\n this.fragmentShader =\n GL.shaders[GL.programShaders[GL.currProgram][0]];\n }\n this.program = GL.programs[GL.currProgram];\n this.usedTexUnitList = [];\n } else {\n if (GLEmulation.fogEnabled) {\n switch (GLEmulation.fogMode) {\n case 2049:\n var fogFormula =\n \" float fog = exp(-u_fogDensity * u_fogDensity * ecDistance * ecDistance); \\n\";\n break;\n case 9729:\n var fogFormula =\n \" float fog = (u_fogEnd - ecDistance) * u_fogScale; \\n\";\n break;\n default:\n var fogFormula =\n \" float fog = exp(-u_fogDensity * ecDistance); \\n\";\n break;\n }\n }\n GLImmediate.TexEnvJIT.setGLSLVars(\n uTexUnitPrefix,\n vTexCoordPrefix,\n vPrimColor,\n uTexMatrixPrefix,\n );\n var fsTexEnvPass = GLImmediate.TexEnvJIT.genAllPassLines(\n \"gl_FragColor\",\n 2,\n );\n var texUnitAttribList = \"\";\n var texUnitVaryingList = \"\";\n var texUnitUniformList = \"\";\n var vsTexCoordInits = \"\";\n this.usedTexUnitList = GLImmediate.TexEnvJIT.getUsedTexUnitList();\n for (var i = 0; i < this.usedTexUnitList.length; i++) {\n var texUnit = this.usedTexUnitList[i];\n texUnitAttribList +=\n \"attribute vec4 \" + aTexCoordPrefix + texUnit + \";\\n\";\n texUnitVaryingList +=\n \"varying vec4 \" + vTexCoordPrefix + texUnit + \";\\n\";\n texUnitUniformList +=\n \"uniform sampler2D \" + uTexUnitPrefix + texUnit + \";\\n\";\n vsTexCoordInits +=\n \" \" +\n vTexCoordPrefix +\n texUnit +\n \" = \" +\n aTexCoordPrefix +\n texUnit +\n \";\\n\";\n if (GLImmediate.useTextureMatrix) {\n texUnitUniformList +=\n \"uniform mat4 \" + uTexMatrixPrefix + texUnit + \";\\n\";\n }\n }\n var vsFogVaryingInit = null;\n if (GLEmulation.fogEnabled) {\n vsFogVaryingInit = \" v_fogFragCoord = abs(ecPosition.z);\\n\";\n }\n var vsSource = [\n \"attribute vec4 a_position;\",\n \"attribute vec4 a_color;\",\n \"varying vec4 v_color;\",\n texUnitAttribList,\n texUnitVaryingList,\n GLEmulation.fogEnabled ? \"varying float v_fogFragCoord;\" : null,\n \"uniform mat4 u_modelView;\",\n \"uniform mat4 u_projection;\",\n \"void main()\",\n \"{\",\n \" vec4 ecPosition = u_modelView * a_position;\",\n \" gl_Position = u_projection * ecPosition;\",\n \" v_color = a_color;\",\n vsTexCoordInits,\n vsFogVaryingInit,\n \"}\",\n \"\",\n ]\n .join(\"\\n\")\n .replace(/\\n\\n+/g, \"\\n\");\n this.vertexShader = GLctx.createShader(GLctx.VERTEX_SHADER);\n GLctx.shaderSource(this.vertexShader, vsSource);\n GLctx.compileShader(this.vertexShader);\n var fogHeaderIfNeeded = null;\n if (GLEmulation.fogEnabled) {\n fogHeaderIfNeeded = [\n \"\",\n \"varying float v_fogFragCoord; \",\n \"uniform vec4 u_fogColor; \",\n \"uniform float u_fogEnd; \",\n \"uniform float u_fogScale; \",\n \"uniform float u_fogDensity; \",\n \"float ffog(in float ecDistance) { \",\n fogFormula,\n \" fog = clamp(fog, 0.0, 1.0); \",\n \" return fog; \",\n \"}\",\n \"\",\n ].join(\"\\n\");\n }\n var fogPass = null;\n if (GLEmulation.fogEnabled) {\n fogPass =\n \"gl_FragColor = vec4(mix(u_fogColor.rgb, gl_FragColor.rgb, ffog(v_fogFragCoord)), gl_FragColor.a);\\n\";\n }\n var fsSource = [\n \"precision mediump float;\",\n texUnitVaryingList,\n texUnitUniformList,\n \"varying vec4 v_color;\",\n fogHeaderIfNeeded,\n \"void main()\",\n \"{\",\n fsTexEnvPass,\n fogPass,\n \"}\",\n \"\",\n ]\n .join(\"\\n\")\n .replace(/\\n\\n+/g, \"\\n\");\n this.fragmentShader = GLctx.createShader(GLctx.FRAGMENT_SHADER);\n GLctx.shaderSource(this.fragmentShader, fsSource);\n GLctx.compileShader(this.fragmentShader);\n this.program = GLctx.createProgram();\n GLctx.attachShader(this.program, this.vertexShader);\n GLctx.attachShader(this.program, this.fragmentShader);\n GLctx.bindAttribLocation(\n this.program,\n GLImmediate.VERTEX,\n \"a_position\",\n );\n GLctx.bindAttribLocation(this.program, GLImmediate.COLOR, \"a_color\");\n GLctx.bindAttribLocation(\n this.program,\n GLImmediate.NORMAL,\n \"a_normal\",\n );\n var maxVertexAttribs = GLctx.getParameter(GLctx.MAX_VERTEX_ATTRIBS);\n for (\n var i = 0;\n i < GLImmediate.MAX_TEXTURES &&\n GLImmediate.TEXTURE0 + i < maxVertexAttribs;\n i++\n ) {\n GLctx.bindAttribLocation(\n this.program,\n GLImmediate.TEXTURE0 + i,\n \"a_texCoord\" + i,\n );\n GLctx.bindAttribLocation(\n this.program,\n GLImmediate.TEXTURE0 + i,\n aTexCoordPrefix + i,\n );\n }\n GLctx.linkProgram(this.program);\n }\n this.textureMatrixVersion = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n ];\n this.positionLocation = GLctx.getAttribLocation(\n this.program,\n \"a_position\",\n );\n this.texCoordLocations = [];\n for (var i = 0; i < GLImmediate.MAX_TEXTURES; i++) {\n if (!GLImmediate.enabledClientAttributes[GLImmediate.TEXTURE0 + i]) {\n this.texCoordLocations[i] = -1;\n continue;\n }\n if (useCurrProgram) {\n this.texCoordLocations[i] = GLctx.getAttribLocation(\n this.program,\n \"a_texCoord\" + i,\n );\n } else {\n this.texCoordLocations[i] = GLctx.getAttribLocation(\n this.program,\n aTexCoordPrefix + i,\n );\n }\n }\n this.colorLocation = GLctx.getAttribLocation(this.program, \"a_color\");\n if (!useCurrProgram) {\n var prevBoundProg = GLctx.getParameter(GLctx.CURRENT_PROGRAM);\n GLctx.useProgram(this.program);\n {\n for (var i = 0; i < this.usedTexUnitList.length; i++) {\n var texUnitID = this.usedTexUnitList[i];\n var texSamplerLoc = GLctx.getUniformLocation(\n this.program,\n uTexUnitPrefix + texUnitID,\n );\n GLctx.uniform1i(texSamplerLoc, texUnitID);\n }\n }\n GLctx.vertexAttrib4fv(this.colorLocation, [1, 1, 1, 1]);\n GLctx.useProgram(prevBoundProg);\n }\n this.textureMatrixLocations = [];\n for (var i = 0; i < GLImmediate.MAX_TEXTURES; i++) {\n this.textureMatrixLocations[i] = GLctx.getUniformLocation(\n this.program,\n \"u_textureMatrix\" + i,\n );\n }\n this.normalLocation = GLctx.getAttribLocation(this.program, \"a_normal\");\n this.modelViewLocation = GLctx.getUniformLocation(\n this.program,\n \"u_modelView\",\n );\n this.projectionLocation = GLctx.getUniformLocation(\n this.program,\n \"u_projection\",\n );\n this.hasTextures = hasTextures;\n this.hasNormal =\n GLImmediate.enabledClientAttributes[GLImmediate.NORMAL] &&\n GLImmediate.clientAttributes[GLImmediate.NORMAL].size > 0 &&\n this.normalLocation >= 0;\n this.hasColor = this.colorLocation === 0 || this.colorLocation > 0;\n this.floatType = GLctx.FLOAT;\n this.fogColorLocation = GLctx.getUniformLocation(\n this.program,\n \"u_fogColor\",\n );\n this.fogEndLocation = GLctx.getUniformLocation(\n this.program,\n \"u_fogEnd\",\n );\n this.fogScaleLocation = GLctx.getUniformLocation(\n this.program,\n \"u_fogScale\",\n );\n this.fogDensityLocation = GLctx.getUniformLocation(\n this.program,\n \"u_fogDensity\",\n );\n this.hasFog = !!(\n this.fogColorLocation ||\n this.fogEndLocation ||\n this.fogScaleLocation ||\n this.fogDensityLocation\n );\n },\n prepare: function prepare() {\n var arrayBuffer;\n if (!GL.currArrayBuffer) {\n var start = GLImmediate.firstVertex * GLImmediate.stride;\n var end = GLImmediate.lastVertex * GLImmediate.stride;\n assert(end <= GL.MAX_TEMP_BUFFER_SIZE, \"too much vertex data\");\n arrayBuffer = GL.getTempVertexBuffer(end);\n } else {\n arrayBuffer = GL.currArrayBuffer;\n }\n if (!GL.currArrayBuffer) {\n if (arrayBuffer != GLImmediate.lastArrayBuffer) {\n GLctx.bindBuffer(GLctx.ARRAY_BUFFER, arrayBuffer);\n GLImmediate.lastArrayBuffer = arrayBuffer;\n }\n GLctx.bufferSubData(\n GLctx.ARRAY_BUFFER,\n start,\n GLImmediate.vertexData.subarray(start >> 2, end >> 2),\n );\n }\n if (!GL.currProgram) {\n if (GLImmediate.fixedFunctionProgram != this.program) {\n GLctx.useProgram(this.program);\n GLImmediate.fixedFunctionProgram = this.program;\n }\n }\n if (\n this.modelViewLocation &&\n this.modelViewMatrixVersion != GLImmediate.matrixVersion[0]\n ) {\n this.modelViewMatrixVersion = GLImmediate.matrixVersion[0];\n GLctx.uniformMatrix4fv(\n this.modelViewLocation,\n false,\n GLImmediate.matrix[0],\n );\n }\n if (\n this.projectionLocation &&\n this.projectionMatrixVersion != GLImmediate.matrixVersion[1]\n ) {\n this.projectionMatrixVersion = GLImmediate.matrixVersion[1];\n GLctx.uniformMatrix4fv(\n this.projectionLocation,\n false,\n GLImmediate.matrix[1],\n );\n }\n var clientAttributes = GLImmediate.clientAttributes;\n var posAttr = clientAttributes[GLImmediate.VERTEX];\n GLctx.vertexAttribPointer(\n this.positionLocation,\n posAttr.size,\n posAttr.type,\n false,\n GLImmediate.stride,\n posAttr.offset,\n );\n GLctx.enableVertexAttribArray(this.positionLocation);\n if (this.hasNormal) {\n var normalAttr = clientAttributes[GLImmediate.NORMAL];\n GLctx.vertexAttribPointer(\n this.normalLocation,\n normalAttr.size,\n normalAttr.type,\n true,\n GLImmediate.stride,\n normalAttr.offset,\n );\n GLctx.enableVertexAttribArray(this.normalLocation);\n }\n if (this.hasTextures) {\n for (var i = 0; i < GLImmediate.MAX_TEXTURES; i++) {\n var attribLoc = this.texCoordLocations[i];\n if (attribLoc === undefined || attribLoc < 0) continue;\n var texAttr = clientAttributes[GLImmediate.TEXTURE0 + i];\n if (texAttr.size) {\n GLctx.vertexAttribPointer(\n attribLoc,\n texAttr.size,\n texAttr.type,\n false,\n GLImmediate.stride,\n texAttr.offset,\n );\n GLctx.enableVertexAttribArray(attribLoc);\n } else {\n GLctx.vertexAttrib4f(attribLoc, 0, 0, 0, 1);\n GLctx.disableVertexAttribArray(attribLoc);\n }\n var t = 2 + i;\n if (\n this.textureMatrixLocations[i] &&\n this.textureMatrixVersion[t] != GLImmediate.matrixVersion[t]\n ) {\n this.textureMatrixVersion[t] = GLImmediate.matrixVersion[t];\n GLctx.uniformMatrix4fv(\n this.textureMatrixLocations[i],\n false,\n GLImmediate.matrix[t],\n );\n }\n }\n }\n if (GLImmediate.enabledClientAttributes[GLImmediate.COLOR]) {\n var colorAttr = clientAttributes[GLImmediate.COLOR];\n GLctx.vertexAttribPointer(\n this.colorLocation,\n colorAttr.size,\n colorAttr.type,\n true,\n GLImmediate.stride,\n colorAttr.offset,\n );\n GLctx.enableVertexAttribArray(this.colorLocation);\n } else if (this.hasColor) {\n GLctx.disableVertexAttribArray(this.colorLocation);\n GLctx.vertexAttrib4fv(this.colorLocation, GLImmediate.clientColor);\n }\n if (this.hasFog) {\n if (this.fogColorLocation)\n GLctx.uniform4fv(this.fogColorLocation, GLEmulation.fogColor);\n if (this.fogEndLocation)\n GLctx.uniform1f(this.fogEndLocation, GLEmulation.fogEnd);\n if (this.fogScaleLocation)\n GLctx.uniform1f(\n this.fogScaleLocation,\n 1 / (GLEmulation.fogEnd - GLEmulation.fogStart),\n );\n if (this.fogDensityLocation)\n GLctx.uniform1f(this.fogDensityLocation, GLEmulation.fogDensity);\n }\n },\n cleanup: function cleanup() {\n GLctx.disableVertexAttribArray(this.positionLocation);\n if (this.hasTextures) {\n for (var i = 0; i < GLImmediate.MAX_TEXTURES; i++) {\n if (\n GLImmediate.enabledClientAttributes[GLImmediate.TEXTURE0 + i] &&\n this.texCoordLocations[i] >= 0\n ) {\n GLctx.disableVertexAttribArray(this.texCoordLocations[i]);\n }\n }\n }\n if (this.hasColor) {\n GLctx.disableVertexAttribArray(this.colorLocation);\n }\n if (this.hasNormal) {\n GLctx.disableVertexAttribArray(this.normalLocation);\n }\n if (!GL.currProgram) {\n GLctx.useProgram(null);\n GLImmediate.fixedFunctionProgram = 0;\n }\n if (!GL.currArrayBuffer) {\n GLctx.bindBuffer(GLctx.ARRAY_BUFFER, null);\n GLImmediate.lastArrayBuffer = null;\n }\n GLImmediate.matricesModified = true;\n },\n };\n ret.init();\n return ret;\n },\n setupFuncs: function () {\n GLImmediate.MapTreeLib = GLImmediate.spawnMapTreeLib();\n GLImmediate.spawnMapTreeLib = null;\n GLImmediate.TexEnvJIT = GLImmediate.spawnTexEnvJIT();\n GLImmediate.spawnTexEnvJIT = null;\n GLImmediate.setupHooks();\n },\n setupHooks: function () {\n if (!GLEmulation.hasRunInit) {\n GLEmulation.init();\n }\n var glActiveTexture = _glActiveTexture;\n _glActiveTexture = _emscripten_glActiveTexture = function _glActiveTexture(\n texture,\n ) {\n GLImmediate.TexEnvJIT.hook_activeTexture(texture);\n glActiveTexture(texture);\n };\n var glEnable = _glEnable;\n _glEnable = _emscripten_glEnable = function _glEnable(cap) {\n GLImmediate.TexEnvJIT.hook_enable(cap);\n glEnable(cap);\n };\n var glDisable = _glDisable;\n _glDisable = _emscripten_glDisable = function _glDisable(cap) {\n GLImmediate.TexEnvJIT.hook_disable(cap);\n glDisable(cap);\n };\n var glTexEnvf =\n typeof _glTexEnvf != \"undefined\" ? _glTexEnvf : function () {};\n _glTexEnvf = _emscripten_glTexEnvf = function _glTexEnvf(\n target,\n pname,\n param,\n ) {\n GLImmediate.TexEnvJIT.hook_texEnvf(target, pname, param);\n };\n var glTexEnvi =\n typeof _glTexEnvi != \"undefined\" ? _glTexEnvi : function () {};\n _glTexEnvi = _emscripten_glTexEnvi = function _glTexEnvi(\n target,\n pname,\n param,\n ) {\n GLImmediate.TexEnvJIT.hook_texEnvi(target, pname, param);\n };\n var glTexEnvfv =\n typeof _glTexEnvfv != \"undefined\" ? _glTexEnvfv : function () {};\n _glTexEnvfv = _emscripten_glTexEnvfv = function _glTexEnvfv(\n target,\n pname,\n param,\n ) {\n GLImmediate.TexEnvJIT.hook_texEnvfv(target, pname, param);\n };\n _glGetTexEnviv = function _glGetTexEnviv(target, pname, param) {\n GLImmediate.TexEnvJIT.hook_getTexEnviv(target, pname, param);\n };\n _glGetTexEnvfv = function _glGetTexEnvfv(target, pname, param) {\n GLImmediate.TexEnvJIT.hook_getTexEnvfv(target, pname, param);\n };\n var glGetIntegerv = _glGetIntegerv;\n _glGetIntegerv = _emscripten_glGetIntegerv = function _glGetIntegerv(\n pname,\n params,\n ) {\n switch (pname) {\n case 35725: {\n var cur = GLctx.getParameter(GLctx.CURRENT_PROGRAM);\n if (cur == GLImmediate.fixedFunctionProgram) {\n HEAP32[params >> 2] = 0;\n return;\n }\n break;\n }\n }\n glGetIntegerv(pname, params);\n };\n },\n initted: false,\n init: function () {\n err(\n \"WARNING: using emscripten GL immediate mode emulation. This is very limited in what it supports\",\n );\n GLImmediate.initted = true;\n if (!Module.useWebGL) return;\n GLImmediate.MAX_TEXTURES =\n Module[\"GL_MAX_TEXTURE_IMAGE_UNITS\"] ||\n GLctx.getParameter(GLctx.MAX_TEXTURE_IMAGE_UNITS);\n GLImmediate.TexEnvJIT.init(GLctx, GLImmediate.MAX_TEXTURES);\n GLImmediate.NUM_ATTRIBUTES = 3 + GLImmediate.MAX_TEXTURES;\n GLImmediate.clientAttributes = [];\n GLEmulation.enabledClientAttribIndices = [];\n for (var i = 0; i < GLImmediate.NUM_ATTRIBUTES; i++) {\n GLImmediate.clientAttributes.push({});\n GLEmulation.enabledClientAttribIndices.push(false);\n }\n GLImmediate.matrix = [];\n GLImmediate.matrixStack = [];\n GLImmediate.matrixVersion = [];\n for (var i = 0; i < 2 + GLImmediate.MAX_TEXTURES; i++) {\n GLImmediate.matrixStack.push([]);\n GLImmediate.matrixVersion.push(0);\n GLImmediate.matrix.push(GLImmediate.matrixLib.mat4.create());\n GLImmediate.matrixLib.mat4.identity(GLImmediate.matrix[i]);\n }\n GLImmediate.rendererCache = GLImmediate.MapTreeLib.create();\n GLImmediate.tempData = new Float32Array(GL.MAX_TEMP_BUFFER_SIZE >> 2);\n GLImmediate.indexData = new Uint16Array(GL.MAX_TEMP_BUFFER_SIZE >> 1);\n GLImmediate.vertexDataU8 = new Uint8Array(GLImmediate.tempData.buffer);\n GL.generateTempBuffers(true, GL.currentContext);\n GLImmediate.clientColor = new Float32Array([1, 1, 1, 1]);\n },\n prepareClientAttributes: function prepareClientAttributes(count, beginEnd) {\n if (!GLImmediate.modifiedClientAttributes) {\n GLImmediate.vertexCounter = (GLImmediate.stride * count) / 4;\n return;\n }\n GLImmediate.modifiedClientAttributes = false;\n var clientStartPointer = 2147483647;\n var bytes = 0;\n var minStride = 2147483647;\n var maxStride = 0;\n var attributes = GLImmediate.liveClientAttributes;\n attributes.length = 0;\n for (var i = 0; i < 3 + GLImmediate.MAX_TEXTURES; i++) {\n if (GLImmediate.enabledClientAttributes[i]) {\n var attr = GLImmediate.clientAttributes[i];\n attributes.push(attr);\n clientStartPointer = Math.min(clientStartPointer, attr.pointer);\n attr.sizeBytes =\n attr.size * GL.byteSizeByType[attr.type - GL.byteSizeByTypeRoot];\n bytes += attr.sizeBytes;\n minStride = Math.min(minStride, attr.stride);\n maxStride = Math.max(maxStride, attr.stride);\n }\n }\n if ((minStride != maxStride || maxStride < bytes) && !beginEnd) {\n if (!GLImmediate.restrideBuffer)\n GLImmediate.restrideBuffer = _malloc(GL.MAX_TEMP_BUFFER_SIZE);\n var start = GLImmediate.restrideBuffer;\n bytes = 0;\n for (var i = 0; i < attributes.length; i++) {\n var attr = attributes[i];\n var size = attr.sizeBytes;\n if (size % 4 != 0) size += 4 - (size % 4);\n attr.offset = bytes;\n bytes += size;\n }\n for (var i = 0; i < attributes.length; i++) {\n var attr = attributes[i];\n var srcStride = Math.max(attr.sizeBytes, attr.stride);\n if ((srcStride & 3) == 0 && (attr.sizeBytes & 3) == 0) {\n var size4 = attr.sizeBytes >> 2;\n var srcStride4 = Math.max(attr.sizeBytes, attr.stride) >> 2;\n for (var j = 0; j < count; j++) {\n for (var k = 0; k < size4; k++) {\n HEAP32[((start + attr.offset + bytes * j) >> 2) + k] =\n HEAP32[(attr.pointer >> 2) + j * srcStride4 + k];\n }\n }\n } else {\n for (var j = 0; j < count; j++) {\n for (var k = 0; k < attr.sizeBytes; k++) {\n HEAP8[start + attr.offset + bytes * j + k] =\n HEAP8[attr.pointer + j * srcStride + k];\n }\n }\n }\n attr.pointer = start + attr.offset;\n }\n GLImmediate.stride = bytes;\n GLImmediate.vertexPointer = start;\n } else {\n if (GL.currArrayBuffer) {\n GLImmediate.vertexPointer = 0;\n } else {\n GLImmediate.vertexPointer = clientStartPointer;\n }\n for (var i = 0; i < attributes.length; i++) {\n var attr = attributes[i];\n attr.offset = attr.pointer - GLImmediate.vertexPointer;\n }\n GLImmediate.stride = Math.max(maxStride, bytes);\n }\n if (!beginEnd) {\n GLImmediate.vertexCounter = (GLImmediate.stride * count) / 4;\n }\n },\n flush: function flush(numProvidedIndexes, startIndex, ptr) {\n assert(numProvidedIndexes >= 0 || !numProvidedIndexes);\n startIndex = startIndex || 0;\n ptr = ptr || 0;\n var renderer = GLImmediate.getRenderer();\n var numVertexes = (4 * GLImmediate.vertexCounter) / GLImmediate.stride;\n if (!numVertexes) return;\n assert(numVertexes % 1 == 0, \"`numVertexes` must be an integer.\");\n var emulatedElementArrayBuffer = false;\n var numIndexes = 0;\n if (numProvidedIndexes) {\n numIndexes = numProvidedIndexes;\n if (\n !GL.currArrayBuffer &&\n GLImmediate.firstVertex > GLImmediate.lastVertex\n ) {\n assert(!GL.currElementArrayBuffer);\n for (var i = 0; i < numProvidedIndexes; i++) {\n var currIndex = HEAPU16[(ptr + i * 2) >> 1];\n GLImmediate.firstVertex = Math.min(\n GLImmediate.firstVertex,\n currIndex,\n );\n GLImmediate.lastVertex = Math.max(\n GLImmediate.lastVertex,\n currIndex + 1,\n );\n }\n }\n if (!GL.currElementArrayBuffer) {\n assert(\n numProvidedIndexes << 1 <= GL.MAX_TEMP_BUFFER_SIZE,\n \"too many immediate mode indexes (a)\",\n );\n var indexBuffer = GL.getTempIndexBuffer(numProvidedIndexes << 1);\n GLctx.bindBuffer(GLctx.ELEMENT_ARRAY_BUFFER, indexBuffer);\n GLctx.bufferSubData(\n GLctx.ELEMENT_ARRAY_BUFFER,\n 0,\n HEAPU16.subarray(ptr >> 1, (ptr + (numProvidedIndexes << 1)) >> 1),\n );\n ptr = 0;\n emulatedElementArrayBuffer = true;\n }\n } else if (GLImmediate.mode > 6) {\n if (GLImmediate.mode != 7)\n throw \"unsupported immediate mode \" + GLImmediate.mode;\n assert(GLImmediate.firstVertex % 4 == 0);\n ptr = GLImmediate.firstVertex * 3;\n var numQuads = numVertexes / 4;\n numIndexes = numQuads * 6;\n assert(\n ptr + (numIndexes << 1) <= GL.MAX_TEMP_BUFFER_SIZE,\n \"too many immediate mode indexes (b)\",\n );\n GLctx.bindBuffer(\n GLctx.ELEMENT_ARRAY_BUFFER,\n GL.currentContext.tempQuadIndexBuffer,\n );\n emulatedElementArrayBuffer = true;\n }\n renderer.prepare();\n if (numIndexes) {\n GLctx.drawElements(\n GLctx.TRIANGLES,\n numIndexes,\n GLctx.UNSIGNED_SHORT,\n ptr,\n );\n } else {\n GLctx.drawArrays(GLImmediate.mode, startIndex, numVertexes);\n }\n if (emulatedElementArrayBuffer) {\n GLctx.bindBuffer(\n GLctx.ELEMENT_ARRAY_BUFFER,\n GL.buffers[GL.currElementArrayBuffer] || null,\n );\n }\n renderer.cleanup();\n },\n};\nGLImmediate.matrixLib = (function () {\n var vec3 = {};\n var mat3 = {};\n var mat4 = {};\n var quat4 = {};\n var MatrixArray = Float32Array;\n vec3.create = function (vec) {\n var dest = new MatrixArray(3);\n if (vec) {\n dest[0] = vec[0];\n dest[1] = vec[1];\n dest[2] = vec[2];\n } else {\n dest[0] = dest[1] = dest[2] = 0;\n }\n return dest;\n };\n vec3.set = function (vec, dest) {\n dest[0] = vec[0];\n dest[1] = vec[1];\n dest[2] = vec[2];\n return dest;\n };\n vec3.add = function (vec, vec2, dest) {\n if (!dest || vec === dest) {\n vec[0] += vec2[0];\n vec[1] += vec2[1];\n vec[2] += vec2[2];\n return vec;\n }\n dest[0] = vec[0] + vec2[0];\n dest[1] = vec[1] + vec2[1];\n dest[2] = vec[2] + vec2[2];\n return dest;\n };\n vec3.subtract = function (vec, vec2, dest) {\n if (!dest || vec === dest) {\n vec[0] -= vec2[0];\n vec[1] -= vec2[1];\n vec[2] -= vec2[2];\n return vec;\n }\n dest[0] = vec[0] - vec2[0];\n dest[1] = vec[1] - vec2[1];\n dest[2] = vec[2] - vec2[2];\n return dest;\n };\n vec3.multiply = function (vec, vec2, dest) {\n if (!dest || vec === dest) {\n vec[0] *= vec2[0];\n vec[1] *= vec2[1];\n vec[2] *= vec2[2];\n return vec;\n }\n dest[0] = vec[0] * vec2[0];\n dest[1] = vec[1] * vec2[1];\n dest[2] = vec[2] * vec2[2];\n return dest;\n };\n vec3.negate = function (vec, dest) {\n if (!dest) {\n dest = vec;\n }\n dest[0] = -vec[0];\n dest[1] = -vec[1];\n dest[2] = -vec[2];\n return dest;\n };\n vec3.scale = function (vec, val, dest) {\n if (!dest || vec === dest) {\n vec[0] *= val;\n vec[1] *= val;\n vec[2] *= val;\n return vec;\n }\n dest[0] = vec[0] * val;\n dest[1] = vec[1] * val;\n dest[2] = vec[2] * val;\n return dest;\n };\n vec3.normalize = function (vec, dest) {\n if (!dest) {\n dest = vec;\n }\n var x = vec[0],\n y = vec[1],\n z = vec[2],\n len = Math.sqrt(x * x + y * y + z * z);\n if (!len) {\n dest[0] = 0;\n dest[1] = 0;\n dest[2] = 0;\n return dest;\n } else if (len === 1) {\n dest[0] = x;\n dest[1] = y;\n dest[2] = z;\n return dest;\n }\n len = 1 / len;\n dest[0] = x * len;\n dest[1] = y * len;\n dest[2] = z * len;\n return dest;\n };\n vec3.cross = function (vec, vec2, dest) {\n if (!dest) {\n dest = vec;\n }\n var x = vec[0],\n y = vec[1],\n z = vec[2],\n x2 = vec2[0],\n y2 = vec2[1],\n z2 = vec2[2];\n dest[0] = y * z2 - z * y2;\n dest[1] = z * x2 - x * z2;\n dest[2] = x * y2 - y * x2;\n return dest;\n };\n vec3.length = function (vec) {\n var x = vec[0],\n y = vec[1],\n z = vec[2];\n return Math.sqrt(x * x + y * y + z * z);\n };\n vec3.dot = function (vec, vec2) {\n return vec[0] * vec2[0] + vec[1] * vec2[1] + vec[2] * vec2[2];\n };\n vec3.direction = function (vec, vec2, dest) {\n if (!dest) {\n dest = vec;\n }\n var x = vec[0] - vec2[0],\n y = vec[1] - vec2[1],\n z = vec[2] - vec2[2],\n len = Math.sqrt(x * x + y * y + z * z);\n if (!len) {\n dest[0] = 0;\n dest[1] = 0;\n dest[2] = 0;\n return dest;\n }\n len = 1 / len;\n dest[0] = x * len;\n dest[1] = y * len;\n dest[2] = z * len;\n return dest;\n };\n vec3.lerp = function (vec, vec2, lerp, dest) {\n if (!dest) {\n dest = vec;\n }\n dest[0] = vec[0] + lerp * (vec2[0] - vec[0]);\n dest[1] = vec[1] + lerp * (vec2[1] - vec[1]);\n dest[2] = vec[2] + lerp * (vec2[2] - vec[2]);\n return dest;\n };\n vec3.dist = function (vec, vec2) {\n var x = vec2[0] - vec[0],\n y = vec2[1] - vec[1],\n z = vec2[2] - vec[2];\n return Math.sqrt(x * x + y * y + z * z);\n };\n vec3.unproject = function (vec, view, proj, viewport, dest) {\n if (!dest) {\n dest = vec;\n }\n var m = mat4.create();\n var v = new MatrixArray(4);\n v[0] = ((vec[0] - viewport[0]) * 2) / viewport[2] - 1;\n v[1] = ((vec[1] - viewport[1]) * 2) / viewport[3] - 1;\n v[2] = 2 * vec[2] - 1;\n v[3] = 1;\n mat4.multiply(proj, view, m);\n if (!mat4.inverse(m)) {\n return null;\n }\n mat4.multiplyVec4(m, v);\n if (v[3] === 0) {\n return null;\n }\n dest[0] = v[0] / v[3];\n dest[1] = v[1] / v[3];\n dest[2] = v[2] / v[3];\n return dest;\n };\n vec3.str = function (vec) {\n return \"[\" + vec[0] + \", \" + vec[1] + \", \" + vec[2] + \"]\";\n };\n mat3.create = function (mat) {\n var dest = new MatrixArray(9);\n if (mat) {\n dest[0] = mat[0];\n dest[1] = mat[1];\n dest[2] = mat[2];\n dest[3] = mat[3];\n dest[4] = mat[4];\n dest[5] = mat[5];\n dest[6] = mat[6];\n dest[7] = mat[7];\n dest[8] = mat[8];\n }\n return dest;\n };\n mat3.set = function (mat, dest) {\n dest[0] = mat[0];\n dest[1] = mat[1];\n dest[2] = mat[2];\n dest[3] = mat[3];\n dest[4] = mat[4];\n dest[5] = mat[5];\n dest[6] = mat[6];\n dest[7] = mat[7];\n dest[8] = mat[8];\n return dest;\n };\n mat3.identity = function (dest) {\n if (!dest) {\n dest = mat3.create();\n }\n dest[0] = 1;\n dest[1] = 0;\n dest[2] = 0;\n dest[3] = 0;\n dest[4] = 1;\n dest[5] = 0;\n dest[6] = 0;\n dest[7] = 0;\n dest[8] = 1;\n return dest;\n };\n mat3.transpose = function (mat, dest) {\n if (!dest || mat === dest) {\n var a01 = mat[1],\n a02 = mat[2],\n a12 = mat[5];\n mat[1] = mat[3];\n mat[2] = mat[6];\n mat[3] = a01;\n mat[5] = mat[7];\n mat[6] = a02;\n mat[7] = a12;\n return mat;\n }\n dest[0] = mat[0];\n dest[1] = mat[3];\n dest[2] = mat[6];\n dest[3] = mat[1];\n dest[4] = mat[4];\n dest[5] = mat[7];\n dest[6] = mat[2];\n dest[7] = mat[5];\n dest[8] = mat[8];\n return dest;\n };\n mat3.toMat4 = function (mat, dest) {\n if (!dest) {\n dest = mat4.create();\n }\n dest[15] = 1;\n dest[14] = 0;\n dest[13] = 0;\n dest[12] = 0;\n dest[11] = 0;\n dest[10] = mat[8];\n dest[9] = mat[7];\n dest[8] = mat[6];\n dest[7] = 0;\n dest[6] = mat[5];\n dest[5] = mat[4];\n dest[4] = mat[3];\n dest[3] = 0;\n dest[2] = mat[2];\n dest[1] = mat[1];\n dest[0] = mat[0];\n return dest;\n };\n mat3.str = function (mat) {\n return (\n \"[\" +\n mat[0] +\n \", \" +\n mat[1] +\n \", \" +\n mat[2] +\n \", \" +\n mat[3] +\n \", \" +\n mat[4] +\n \", \" +\n mat[5] +\n \", \" +\n mat[6] +\n \", \" +\n mat[7] +\n \", \" +\n mat[8] +\n \"]\"\n );\n };\n mat4.create = function (mat) {\n var dest = new MatrixArray(16);\n if (mat) {\n dest[0] = mat[0];\n dest[1] = mat[1];\n dest[2] = mat[2];\n dest[3] = mat[3];\n dest[4] = mat[4];\n dest[5] = mat[5];\n dest[6] = mat[6];\n dest[7] = mat[7];\n dest[8] = mat[8];\n dest[9] = mat[9];\n dest[10] = mat[10];\n dest[11] = mat[11];\n dest[12] = mat[12];\n dest[13] = mat[13];\n dest[14] = mat[14];\n dest[15] = mat[15];\n }\n return dest;\n };\n mat4.set = function (mat, dest) {\n dest[0] = mat[0];\n dest[1] = mat[1];\n dest[2] = mat[2];\n dest[3] = mat[3];\n dest[4] = mat[4];\n dest[5] = mat[5];\n dest[6] = mat[6];\n dest[7] = mat[7];\n dest[8] = mat[8];\n dest[9] = mat[9];\n dest[10] = mat[10];\n dest[11] = mat[11];\n dest[12] = mat[12];\n dest[13] = mat[13];\n dest[14] = mat[14];\n dest[15] = mat[15];\n return dest;\n };\n mat4.identity = function (dest) {\n if (!dest) {\n dest = mat4.create();\n }\n dest[0] = 1;\n dest[1] = 0;\n dest[2] = 0;\n dest[3] = 0;\n dest[4] = 0;\n dest[5] = 1;\n dest[6] = 0;\n dest[7] = 0;\n dest[8] = 0;\n dest[9] = 0;\n dest[10] = 1;\n dest[11] = 0;\n dest[12] = 0;\n dest[13] = 0;\n dest[14] = 0;\n dest[15] = 1;\n return dest;\n };\n mat4.transpose = function (mat, dest) {\n if (!dest || mat === dest) {\n var a01 = mat[1],\n a02 = mat[2],\n a03 = mat[3],\n a12 = mat[6],\n a13 = mat[7],\n a23 = mat[11];\n mat[1] = mat[4];\n mat[2] = mat[8];\n mat[3] = mat[12];\n mat[4] = a01;\n mat[6] = mat[9];\n mat[7] = mat[13];\n mat[8] = a02;\n mat[9] = a12;\n mat[11] = mat[14];\n mat[12] = a03;\n mat[13] = a13;\n mat[14] = a23;\n return mat;\n }\n dest[0] = mat[0];\n dest[1] = mat[4];\n dest[2] = mat[8];\n dest[3] = mat[12];\n dest[4] = mat[1];\n dest[5] = mat[5];\n dest[6] = mat[9];\n dest[7] = mat[13];\n dest[8] = mat[2];\n dest[9] = mat[6];\n dest[10] = mat[10];\n dest[11] = mat[14];\n dest[12] = mat[3];\n dest[13] = mat[7];\n dest[14] = mat[11];\n dest[15] = mat[15];\n return dest;\n };\n mat4.determinant = function (mat) {\n var a00 = mat[0],\n a01 = mat[1],\n a02 = mat[2],\n a03 = mat[3],\n a10 = mat[4],\n a11 = mat[5],\n a12 = mat[6],\n a13 = mat[7],\n a20 = mat[8],\n a21 = mat[9],\n a22 = mat[10],\n a23 = mat[11],\n a30 = mat[12],\n a31 = mat[13],\n a32 = mat[14],\n a33 = mat[15];\n return (\n a30 * a21 * a12 * a03 -\n a20 * a31 * a12 * a03 -\n a30 * a11 * a22 * a03 +\n a10 * a31 * a22 * a03 +\n a20 * a11 * a32 * a03 -\n a10 * a21 * a32 * a03 -\n a30 * a21 * a02 * a13 +\n a20 * a31 * a02 * a13 +\n a30 * a01 * a22 * a13 -\n a00 * a31 * a22 * a13 -\n a20 * a01 * a32 * a13 +\n a00 * a21 * a32 * a13 +\n a30 * a11 * a02 * a23 -\n a10 * a31 * a02 * a23 -\n a30 * a01 * a12 * a23 +\n a00 * a31 * a12 * a23 +\n a10 * a01 * a32 * a23 -\n a00 * a11 * a32 * a23 -\n a20 * a11 * a02 * a33 +\n a10 * a21 * a02 * a33 +\n a20 * a01 * a12 * a33 -\n a00 * a21 * a12 * a33 -\n a10 * a01 * a22 * a33 +\n a00 * a11 * a22 * a33\n );\n };\n mat4.inverse = function (mat, dest) {\n if (!dest) {\n dest = mat;\n }\n var a00 = mat[0],\n a01 = mat[1],\n a02 = mat[2],\n a03 = mat[3],\n a10 = mat[4],\n a11 = mat[5],\n a12 = mat[6],\n a13 = mat[7],\n a20 = mat[8],\n a21 = mat[9],\n a22 = mat[10],\n a23 = mat[11],\n a30 = mat[12],\n a31 = mat[13],\n a32 = mat[14],\n a33 = mat[15],\n b00 = a00 * a11 - a01 * a10,\n b01 = a00 * a12 - a02 * a10,\n b02 = a00 * a13 - a03 * a10,\n b03 = a01 * a12 - a02 * a11,\n b04 = a01 * a13 - a03 * a11,\n b05 = a02 * a13 - a03 * a12,\n b06 = a20 * a31 - a21 * a30,\n b07 = a20 * a32 - a22 * a30,\n b08 = a20 * a33 - a23 * a30,\n b09 = a21 * a32 - a22 * a31,\n b10 = a21 * a33 - a23 * a31,\n b11 = a22 * a33 - a23 * a32,\n d = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06,\n invDet;\n if (!d) {\n return null;\n }\n invDet = 1 / d;\n dest[0] = (a11 * b11 - a12 * b10 + a13 * b09) * invDet;\n dest[1] = (-a01 * b11 + a02 * b10 - a03 * b09) * invDet;\n dest[2] = (a31 * b05 - a32 * b04 + a33 * b03) * invDet;\n dest[3] = (-a21 * b05 + a22 * b04 - a23 * b03) * invDet;\n dest[4] = (-a10 * b11 + a12 * b08 - a13 * b07) * invDet;\n dest[5] = (a00 * b11 - a02 * b08 + a03 * b07) * invDet;\n dest[6] = (-a30 * b05 + a32 * b02 - a33 * b01) * invDet;\n dest[7] = (a20 * b05 - a22 * b02 + a23 * b01) * invDet;\n dest[8] = (a10 * b10 - a11 * b08 + a13 * b06) * invDet;\n dest[9] = (-a00 * b10 + a01 * b08 - a03 * b06) * invDet;\n dest[10] = (a30 * b04 - a31 * b02 + a33 * b00) * invDet;\n dest[11] = (-a20 * b04 + a21 * b02 - a23 * b00) * invDet;\n dest[12] = (-a10 * b09 + a11 * b07 - a12 * b06) * invDet;\n dest[13] = (a00 * b09 - a01 * b07 + a02 * b06) * invDet;\n dest[14] = (-a30 * b03 + a31 * b01 - a32 * b00) * invDet;\n dest[15] = (a20 * b03 - a21 * b01 + a22 * b00) * invDet;\n return dest;\n };\n mat4.toRotationMat = function (mat, dest) {\n if (!dest) {\n dest = mat4.create();\n }\n dest[0] = mat[0];\n dest[1] = mat[1];\n dest[2] = mat[2];\n dest[3] = mat[3];\n dest[4] = mat[4];\n dest[5] = mat[5];\n dest[6] = mat[6];\n dest[7] = mat[7];\n dest[8] = mat[8];\n dest[9] = mat[9];\n dest[10] = mat[10];\n dest[11] = mat[11];\n dest[12] = 0;\n dest[13] = 0;\n dest[14] = 0;\n dest[15] = 1;\n return dest;\n };\n mat4.toMat3 = function (mat, dest) {\n if (!dest) {\n dest = mat3.create();\n }\n dest[0] = mat[0];\n dest[1] = mat[1];\n dest[2] = mat[2];\n dest[3] = mat[4];\n dest[4] = mat[5];\n dest[5] = mat[6];\n dest[6] = mat[8];\n dest[7] = mat[9];\n dest[8] = mat[10];\n return dest;\n };\n mat4.toInverseMat3 = function (mat, dest) {\n var a00 = mat[0],\n a01 = mat[1],\n a02 = mat[2],\n a10 = mat[4],\n a11 = mat[5],\n a12 = mat[6],\n a20 = mat[8],\n a21 = mat[9],\n a22 = mat[10],\n b01 = a22 * a11 - a12 * a21,\n b11 = -a22 * a10 + a12 * a20,\n b21 = a21 * a10 - a11 * a20,\n d = a00 * b01 + a01 * b11 + a02 * b21,\n id;\n if (!d) {\n return null;\n }\n id = 1 / d;\n if (!dest) {\n dest = mat3.create();\n }\n dest[0] = b01 * id;\n dest[1] = (-a22 * a01 + a02 * a21) * id;\n dest[2] = (a12 * a01 - a02 * a11) * id;\n dest[3] = b11 * id;\n dest[4] = (a22 * a00 - a02 * a20) * id;\n dest[5] = (-a12 * a00 + a02 * a10) * id;\n dest[6] = b21 * id;\n dest[7] = (-a21 * a00 + a01 * a20) * id;\n dest[8] = (a11 * a00 - a01 * a10) * id;\n return dest;\n };\n mat4.multiply = function (mat, mat2, dest) {\n if (!dest) {\n dest = mat;\n }\n var a00 = mat[0],\n a01 = mat[1],\n a02 = mat[2],\n a03 = mat[3],\n a10 = mat[4],\n a11 = mat[5],\n a12 = mat[6],\n a13 = mat[7],\n a20 = mat[8],\n a21 = mat[9],\n a22 = mat[10],\n a23 = mat[11],\n a30 = mat[12],\n a31 = mat[13],\n a32 = mat[14],\n a33 = mat[15],\n b00 = mat2[0],\n b01 = mat2[1],\n b02 = mat2[2],\n b03 = mat2[3],\n b10 = mat2[4],\n b11 = mat2[5],\n b12 = mat2[6],\n b13 = mat2[7],\n b20 = mat2[8],\n b21 = mat2[9],\n b22 = mat2[10],\n b23 = mat2[11],\n b30 = mat2[12],\n b31 = mat2[13],\n b32 = mat2[14],\n b33 = mat2[15];\n dest[0] = b00 * a00 + b01 * a10 + b02 * a20 + b03 * a30;\n dest[1] = b00 * a01 + b01 * a11 + b02 * a21 + b03 * a31;\n dest[2] = b00 * a02 + b01 * a12 + b02 * a22 + b03 * a32;\n dest[3] = b00 * a03 + b01 * a13 + b02 * a23 + b03 * a33;\n dest[4] = b10 * a00 + b11 * a10 + b12 * a20 + b13 * a30;\n dest[5] = b10 * a01 + b11 * a11 + b12 * a21 + b13 * a31;\n dest[6] = b10 * a02 + b11 * a12 + b12 * a22 + b13 * a32;\n dest[7] = b10 * a03 + b11 * a13 + b12 * a23 + b13 * a33;\n dest[8] = b20 * a00 + b21 * a10 + b22 * a20 + b23 * a30;\n dest[9] = b20 * a01 + b21 * a11 + b22 * a21 + b23 * a31;\n dest[10] = b20 * a02 + b21 * a12 + b22 * a22 + b23 * a32;\n dest[11] = b20 * a03 + b21 * a13 + b22 * a23 + b23 * a33;\n dest[12] = b30 * a00 + b31 * a10 + b32 * a20 + b33 * a30;\n dest[13] = b30 * a01 + b31 * a11 + b32 * a21 + b33 * a31;\n dest[14] = b30 * a02 + b31 * a12 + b32 * a22 + b33 * a32;\n dest[15] = b30 * a03 + b31 * a13 + b32 * a23 + b33 * a33;\n return dest;\n };\n mat4.multiplyVec3 = function (mat, vec, dest) {\n if (!dest) {\n dest = vec;\n }\n var x = vec[0],\n y = vec[1],\n z = vec[2];\n dest[0] = mat[0] * x + mat[4] * y + mat[8] * z + mat[12];\n dest[1] = mat[1] * x + mat[5] * y + mat[9] * z + mat[13];\n dest[2] = mat[2] * x + mat[6] * y + mat[10] * z + mat[14];\n return dest;\n };\n mat4.multiplyVec4 = function (mat, vec, dest) {\n if (!dest) {\n dest = vec;\n }\n var x = vec[0],\n y = vec[1],\n z = vec[2],\n w = vec[3];\n dest[0] = mat[0] * x + mat[4] * y + mat[8] * z + mat[12] * w;\n dest[1] = mat[1] * x + mat[5] * y + mat[9] * z + mat[13] * w;\n dest[2] = mat[2] * x + mat[6] * y + mat[10] * z + mat[14] * w;\n dest[3] = mat[3] * x + mat[7] * y + mat[11] * z + mat[15] * w;\n return dest;\n };\n mat4.translate = function (mat, vec, dest) {\n var x = vec[0],\n y = vec[1],\n z = vec[2],\n a00,\n a01,\n a02,\n a03,\n a10,\n a11,\n a12,\n a13,\n a20,\n a21,\n a22,\n a23;\n if (!dest || mat === dest) {\n mat[12] = mat[0] * x + mat[4] * y + mat[8] * z + mat[12];\n mat[13] = mat[1] * x + mat[5] * y + mat[9] * z + mat[13];\n mat[14] = mat[2] * x + mat[6] * y + mat[10] * z + mat[14];\n mat[15] = mat[3] * x + mat[7] * y + mat[11] * z + mat[15];\n return mat;\n }\n a00 = mat[0];\n a01 = mat[1];\n a02 = mat[2];\n a03 = mat[3];\n a10 = mat[4];\n a11 = mat[5];\n a12 = mat[6];\n a13 = mat[7];\n a20 = mat[8];\n a21 = mat[9];\n a22 = mat[10];\n a23 = mat[11];\n dest[0] = a00;\n dest[1] = a01;\n dest[2] = a02;\n dest[3] = a03;\n dest[4] = a10;\n dest[5] = a11;\n dest[6] = a12;\n dest[7] = a13;\n dest[8] = a20;\n dest[9] = a21;\n dest[10] = a22;\n dest[11] = a23;\n dest[12] = a00 * x + a10 * y + a20 * z + mat[12];\n dest[13] = a01 * x + a11 * y + a21 * z + mat[13];\n dest[14] = a02 * x + a12 * y + a22 * z + mat[14];\n dest[15] = a03 * x + a13 * y + a23 * z + mat[15];\n return dest;\n };\n mat4.scale = function (mat, vec, dest) {\n var x = vec[0],\n y = vec[1],\n z = vec[2];\n if (!dest || mat === dest) {\n mat[0] *= x;\n mat[1] *= x;\n mat[2] *= x;\n mat[3] *= x;\n mat[4] *= y;\n mat[5] *= y;\n mat[6] *= y;\n mat[7] *= y;\n mat[8] *= z;\n mat[9] *= z;\n mat[10] *= z;\n mat[11] *= z;\n return mat;\n }\n dest[0] = mat[0] * x;\n dest[1] = mat[1] * x;\n dest[2] = mat[2] * x;\n dest[3] = mat[3] * x;\n dest[4] = mat[4] * y;\n dest[5] = mat[5] * y;\n dest[6] = mat[6] * y;\n dest[7] = mat[7] * y;\n dest[8] = mat[8] * z;\n dest[9] = mat[9] * z;\n dest[10] = mat[10] * z;\n dest[11] = mat[11] * z;\n dest[12] = mat[12];\n dest[13] = mat[13];\n dest[14] = mat[14];\n dest[15] = mat[15];\n return dest;\n };\n mat4.rotate = function (mat, angle, axis, dest) {\n var x = axis[0],\n y = axis[1],\n z = axis[2],\n len = Math.sqrt(x * x + y * y + z * z),\n s,\n c,\n t,\n a00,\n a01,\n a02,\n a03,\n a10,\n a11,\n a12,\n a13,\n a20,\n a21,\n a22,\n a23,\n b00,\n b01,\n b02,\n b10,\n b11,\n b12,\n b20,\n b21,\n b22;\n if (!len) {\n return null;\n }\n if (len !== 1) {\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n }\n s = Math.sin(angle);\n c = Math.cos(angle);\n t = 1 - c;\n a00 = mat[0];\n a01 = mat[1];\n a02 = mat[2];\n a03 = mat[3];\n a10 = mat[4];\n a11 = mat[5];\n a12 = mat[6];\n a13 = mat[7];\n a20 = mat[8];\n a21 = mat[9];\n a22 = mat[10];\n a23 = mat[11];\n b00 = x * x * t + c;\n b01 = y * x * t + z * s;\n b02 = z * x * t - y * s;\n b10 = x * y * t - z * s;\n b11 = y * y * t + c;\n b12 = z * y * t + x * s;\n b20 = x * z * t + y * s;\n b21 = y * z * t - x * s;\n b22 = z * z * t + c;\n if (!dest) {\n dest = mat;\n } else if (mat !== dest) {\n dest[12] = mat[12];\n dest[13] = mat[13];\n dest[14] = mat[14];\n dest[15] = mat[15];\n }\n dest[0] = a00 * b00 + a10 * b01 + a20 * b02;\n dest[1] = a01 * b00 + a11 * b01 + a21 * b02;\n dest[2] = a02 * b00 + a12 * b01 + a22 * b02;\n dest[3] = a03 * b00 + a13 * b01 + a23 * b02;\n dest[4] = a00 * b10 + a10 * b11 + a20 * b12;\n dest[5] = a01 * b10 + a11 * b11 + a21 * b12;\n dest[6] = a02 * b10 + a12 * b11 + a22 * b12;\n dest[7] = a03 * b10 + a13 * b11 + a23 * b12;\n dest[8] = a00 * b20 + a10 * b21 + a20 * b22;\n dest[9] = a01 * b20 + a11 * b21 + a21 * b22;\n dest[10] = a02 * b20 + a12 * b21 + a22 * b22;\n dest[11] = a03 * b20 + a13 * b21 + a23 * b22;\n return dest;\n };\n mat4.rotateX = function (mat, angle, dest) {\n var s = Math.sin(angle),\n c = Math.cos(angle),\n a10 = mat[4],\n a11 = mat[5],\n a12 = mat[6],\n a13 = mat[7],\n a20 = mat[8],\n a21 = mat[9],\n a22 = mat[10],\n a23 = mat[11];\n if (!dest) {\n dest = mat;\n } else if (mat !== dest) {\n dest[0] = mat[0];\n dest[1] = mat[1];\n dest[2] = mat[2];\n dest[3] = mat[3];\n dest[12] = mat[12];\n dest[13] = mat[13];\n dest[14] = mat[14];\n dest[15] = mat[15];\n }\n dest[4] = a10 * c + a20 * s;\n dest[5] = a11 * c + a21 * s;\n dest[6] = a12 * c + a22 * s;\n dest[7] = a13 * c + a23 * s;\n dest[8] = a10 * -s + a20 * c;\n dest[9] = a11 * -s + a21 * c;\n dest[10] = a12 * -s + a22 * c;\n dest[11] = a13 * -s + a23 * c;\n return dest;\n };\n mat4.rotateY = function (mat, angle, dest) {\n var s = Math.sin(angle),\n c = Math.cos(angle),\n a00 = mat[0],\n a01 = mat[1],\n a02 = mat[2],\n a03 = mat[3],\n a20 = mat[8],\n a21 = mat[9],\n a22 = mat[10],\n a23 = mat[11];\n if (!dest) {\n dest = mat;\n } else if (mat !== dest) {\n dest[4] = mat[4];\n dest[5] = mat[5];\n dest[6] = mat[6];\n dest[7] = mat[7];\n dest[12] = mat[12];\n dest[13] = mat[13];\n dest[14] = mat[14];\n dest[15] = mat[15];\n }\n dest[0] = a00 * c + a20 * -s;\n dest[1] = a01 * c + a21 * -s;\n dest[2] = a02 * c + a22 * -s;\n dest[3] = a03 * c + a23 * -s;\n dest[8] = a00 * s + a20 * c;\n dest[9] = a01 * s + a21 * c;\n dest[10] = a02 * s + a22 * c;\n dest[11] = a03 * s + a23 * c;\n return dest;\n };\n mat4.rotateZ = function (mat, angle, dest) {\n var s = Math.sin(angle),\n c = Math.cos(angle),\n a00 = mat[0],\n a01 = mat[1],\n a02 = mat[2],\n a03 = mat[3],\n a10 = mat[4],\n a11 = mat[5],\n a12 = mat[6],\n a13 = mat[7];\n if (!dest) {\n dest = mat;\n } else if (mat !== dest) {\n dest[8] = mat[8];\n dest[9] = mat[9];\n dest[10] = mat[10];\n dest[11] = mat[11];\n dest[12] = mat[12];\n dest[13] = mat[13];\n dest[14] = mat[14];\n dest[15] = mat[15];\n }\n dest[0] = a00 * c + a10 * s;\n dest[1] = a01 * c + a11 * s;\n dest[2] = a02 * c + a12 * s;\n dest[3] = a03 * c + a13 * s;\n dest[4] = a00 * -s + a10 * c;\n dest[5] = a01 * -s + a11 * c;\n dest[6] = a02 * -s + a12 * c;\n dest[7] = a03 * -s + a13 * c;\n return dest;\n };\n mat4.frustum = function (left, right, bottom, top, near, far, dest) {\n if (!dest) {\n dest = mat4.create();\n }\n var rl = right - left,\n tb = top - bottom,\n fn = far - near;\n dest[0] = (near * 2) / rl;\n dest[1] = 0;\n dest[2] = 0;\n dest[3] = 0;\n dest[4] = 0;\n dest[5] = (near * 2) / tb;\n dest[6] = 0;\n dest[7] = 0;\n dest[8] = (right + left) / rl;\n dest[9] = (top + bottom) / tb;\n dest[10] = -(far + near) / fn;\n dest[11] = -1;\n dest[12] = 0;\n dest[13] = 0;\n dest[14] = -(far * near * 2) / fn;\n dest[15] = 0;\n return dest;\n };\n mat4.perspective = function (fovy, aspect, near, far, dest) {\n var top = near * Math.tan((fovy * Math.PI) / 360),\n right = top * aspect;\n return mat4.frustum(-right, right, -top, top, near, far, dest);\n };\n mat4.ortho = function (left, right, bottom, top, near, far, dest) {\n if (!dest) {\n dest = mat4.create();\n }\n var rl = right - left,\n tb = top - bottom,\n fn = far - near;\n dest[0] = 2 / rl;\n dest[1] = 0;\n dest[2] = 0;\n dest[3] = 0;\n dest[4] = 0;\n dest[5] = 2 / tb;\n dest[6] = 0;\n dest[7] = 0;\n dest[8] = 0;\n dest[9] = 0;\n dest[10] = -2 / fn;\n dest[11] = 0;\n dest[12] = -(left + right) / rl;\n dest[13] = -(top + bottom) / tb;\n dest[14] = -(far + near) / fn;\n dest[15] = 1;\n return dest;\n };\n mat4.lookAt = function (eye, center, up, dest) {\n if (!dest) {\n dest = mat4.create();\n }\n var x0,\n x1,\n x2,\n y0,\n y1,\n y2,\n z0,\n z1,\n z2,\n len,\n eyex = eye[0],\n eyey = eye[1],\n eyez = eye[2],\n upx = up[0],\n upy = up[1],\n upz = up[2],\n centerx = center[0],\n centery = center[1],\n centerz = center[2];\n if (eyex === centerx && eyey === centery && eyez === centerz) {\n return mat4.identity(dest);\n }\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n len = 1 / Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2);\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n len = Math.sqrt(y0 * y0 + y1 * y1 + y2 * y2);\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n dest[0] = x0;\n dest[1] = y0;\n dest[2] = z0;\n dest[3] = 0;\n dest[4] = x1;\n dest[5] = y1;\n dest[6] = z1;\n dest[7] = 0;\n dest[8] = x2;\n dest[9] = y2;\n dest[10] = z2;\n dest[11] = 0;\n dest[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n dest[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n dest[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n dest[15] = 1;\n return dest;\n };\n mat4.fromRotationTranslation = function (quat, vec, dest) {\n if (!dest) {\n dest = mat4.create();\n }\n var x = quat[0],\n y = quat[1],\n z = quat[2],\n w = quat[3],\n x2 = x + x,\n y2 = y + y,\n z2 = z + z,\n xx = x * x2,\n xy = x * y2,\n xz = x * z2,\n yy = y * y2,\n yz = y * z2,\n zz = z * z2,\n wx = w * x2,\n wy = w * y2,\n wz = w * z2;\n dest[0] = 1 - (yy + zz);\n dest[1] = xy + wz;\n dest[2] = xz - wy;\n dest[3] = 0;\n dest[4] = xy - wz;\n dest[5] = 1 - (xx + zz);\n dest[6] = yz + wx;\n dest[7] = 0;\n dest[8] = xz + wy;\n dest[9] = yz - wx;\n dest[10] = 1 - (xx + yy);\n dest[11] = 0;\n dest[12] = vec[0];\n dest[13] = vec[1];\n dest[14] = vec[2];\n dest[15] = 1;\n return dest;\n };\n mat4.str = function (mat) {\n return (\n \"[\" +\n mat[0] +\n \", \" +\n mat[1] +\n \", \" +\n mat[2] +\n \", \" +\n mat[3] +\n \", \" +\n mat[4] +\n \", \" +\n mat[5] +\n \", \" +\n mat[6] +\n \", \" +\n mat[7] +\n \", \" +\n mat[8] +\n \", \" +\n mat[9] +\n \", \" +\n mat[10] +\n \", \" +\n mat[11] +\n \", \" +\n mat[12] +\n \", \" +\n mat[13] +\n \", \" +\n mat[14] +\n \", \" +\n mat[15] +\n \"]\"\n );\n };\n quat4.create = function (quat) {\n var dest = new MatrixArray(4);\n if (quat) {\n dest[0] = quat[0];\n dest[1] = quat[1];\n dest[2] = quat[2];\n dest[3] = quat[3];\n }\n return dest;\n };\n quat4.set = function (quat, dest) {\n dest[0] = quat[0];\n dest[1] = quat[1];\n dest[2] = quat[2];\n dest[3] = quat[3];\n return dest;\n };\n quat4.calculateW = function (quat, dest) {\n var x = quat[0],\n y = quat[1],\n z = quat[2];\n if (!dest || quat === dest) {\n quat[3] = -Math.sqrt(Math.abs(1 - x * x - y * y - z * z));\n return quat;\n }\n dest[0] = x;\n dest[1] = y;\n dest[2] = z;\n dest[3] = -Math.sqrt(Math.abs(1 - x * x - y * y - z * z));\n return dest;\n };\n quat4.dot = function (quat, quat2) {\n return (\n quat[0] * quat2[0] +\n quat[1] * quat2[1] +\n quat[2] * quat2[2] +\n quat[3] * quat2[3]\n );\n };\n quat4.inverse = function (quat, dest) {\n var q0 = quat[0],\n q1 = quat[1],\n q2 = quat[2],\n q3 = quat[3],\n dot = q0 * q0 + q1 * q1 + q2 * q2 + q3 * q3,\n invDot = dot ? 1 / dot : 0;\n if (!dest || quat === dest) {\n quat[0] *= -invDot;\n quat[1] *= -invDot;\n quat[2] *= -invDot;\n quat[3] *= invDot;\n return quat;\n }\n dest[0] = -quat[0] * invDot;\n dest[1] = -quat[1] * invDot;\n dest[2] = -quat[2] * invDot;\n dest[3] = quat[3] * invDot;\n return dest;\n };\n quat4.conjugate = function (quat, dest) {\n if (!dest || quat === dest) {\n quat[0] *= -1;\n quat[1] *= -1;\n quat[2] *= -1;\n return quat;\n }\n dest[0] = -quat[0];\n dest[1] = -quat[1];\n dest[2] = -quat[2];\n dest[3] = quat[3];\n return dest;\n };\n quat4.length = function (quat) {\n var x = quat[0],\n y = quat[1],\n z = quat[2],\n w = quat[3];\n return Math.sqrt(x * x + y * y + z * z + w * w);\n };\n quat4.normalize = function (quat, dest) {\n if (!dest) {\n dest = quat;\n }\n var x = quat[0],\n y = quat[1],\n z = quat[2],\n w = quat[3],\n len = Math.sqrt(x * x + y * y + z * z + w * w);\n if (len === 0) {\n dest[0] = 0;\n dest[1] = 0;\n dest[2] = 0;\n dest[3] = 0;\n return dest;\n }\n len = 1 / len;\n dest[0] = x * len;\n dest[1] = y * len;\n dest[2] = z * len;\n dest[3] = w * len;\n return dest;\n };\n quat4.add = function (quat, quat2, dest) {\n if (!dest || quat === dest) {\n quat[0] += quat2[0];\n quat[1] += quat2[1];\n quat[2] += quat2[2];\n quat[3] += quat2[3];\n return quat;\n }\n dest[0] = quat[0] + quat2[0];\n dest[1] = quat[1] + quat2[1];\n dest[2] = quat[2] + quat2[2];\n dest[3] = quat[3] + quat2[3];\n return dest;\n };\n quat4.multiply = function (quat, quat2, dest) {\n if (!dest) {\n dest = quat;\n }\n var qax = quat[0],\n qay = quat[1],\n qaz = quat[2],\n qaw = quat[3],\n qbx = quat2[0],\n qby = quat2[1],\n qbz = quat2[2],\n qbw = quat2[3];\n dest[0] = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n dest[1] = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n dest[2] = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n dest[3] = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n return dest;\n };\n quat4.multiplyVec3 = function (quat, vec, dest) {\n if (!dest) {\n dest = vec;\n }\n var x = vec[0],\n y = vec[1],\n z = vec[2],\n qx = quat[0],\n qy = quat[1],\n qz = quat[2],\n qw = quat[3],\n ix = qw * x + qy * z - qz * y,\n iy = qw * y + qz * x - qx * z,\n iz = qw * z + qx * y - qy * x,\n iw = -qx * x - qy * y - qz * z;\n dest[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n dest[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n dest[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n return dest;\n };\n quat4.scale = function (quat, val, dest) {\n if (!dest || quat === dest) {\n quat[0] *= val;\n quat[1] *= val;\n quat[2] *= val;\n quat[3] *= val;\n return quat;\n }\n dest[0] = quat[0] * val;\n dest[1] = quat[1] * val;\n dest[2] = quat[2] * val;\n dest[3] = quat[3] * val;\n return dest;\n };\n quat4.toMat3 = function (quat, dest) {\n if (!dest) {\n dest = mat3.create();\n }\n var x = quat[0],\n y = quat[1],\n z = quat[2],\n w = quat[3],\n x2 = x + x,\n y2 = y + y,\n z2 = z + z,\n xx = x * x2,\n xy = x * y2,\n xz = x * z2,\n yy = y * y2,\n yz = y * z2,\n zz = z * z2,\n wx = w * x2,\n wy = w * y2,\n wz = w * z2;\n dest[0] = 1 - (yy + zz);\n dest[1] = xy + wz;\n dest[2] = xz - wy;\n dest[3] = xy - wz;\n dest[4] = 1 - (xx + zz);\n dest[5] = yz + wx;\n dest[6] = xz + wy;\n dest[7] = yz - wx;\n dest[8] = 1 - (xx + yy);\n return dest;\n };\n quat4.toMat4 = function (quat, dest) {\n if (!dest) {\n dest = mat4.create();\n }\n var x = quat[0],\n y = quat[1],\n z = quat[2],\n w = quat[3],\n x2 = x + x,\n y2 = y + y,\n z2 = z + z,\n xx = x * x2,\n xy = x * y2,\n xz = x * z2,\n yy = y * y2,\n yz = y * z2,\n zz = z * z2,\n wx = w * x2,\n wy = w * y2,\n wz = w * z2;\n dest[0] = 1 - (yy + zz);\n dest[1] = xy + wz;\n dest[2] = xz - wy;\n dest[3] = 0;\n dest[4] = xy - wz;\n dest[5] = 1 - (xx + zz);\n dest[6] = yz + wx;\n dest[7] = 0;\n dest[8] = xz + wy;\n dest[9] = yz - wx;\n dest[10] = 1 - (xx + yy);\n dest[11] = 0;\n dest[12] = 0;\n dest[13] = 0;\n dest[14] = 0;\n dest[15] = 1;\n return dest;\n };\n quat4.slerp = function (quat, quat2, slerp, dest) {\n if (!dest) {\n dest = quat;\n }\n var cosHalfTheta =\n quat[0] * quat2[0] +\n quat[1] * quat2[1] +\n quat[2] * quat2[2] +\n quat[3] * quat2[3],\n halfTheta,\n sinHalfTheta,\n ratioA,\n ratioB;\n if (Math.abs(cosHalfTheta) >= 1) {\n if (dest !== quat) {\n dest[0] = quat[0];\n dest[1] = quat[1];\n dest[2] = quat[2];\n dest[3] = quat[3];\n }\n return dest;\n }\n halfTheta = Math.acos(cosHalfTheta);\n sinHalfTheta = Math.sqrt(1 - cosHalfTheta * cosHalfTheta);\n if (Math.abs(sinHalfTheta) < 0.001) {\n dest[0] = quat[0] * 0.5 + quat2[0] * 0.5;\n dest[1] = quat[1] * 0.5 + quat2[1] * 0.5;\n dest[2] = quat[2] * 0.5 + quat2[2] * 0.5;\n dest[3] = quat[3] * 0.5 + quat2[3] * 0.5;\n return dest;\n }\n ratioA = Math.sin((1 - slerp) * halfTheta) / sinHalfTheta;\n ratioB = Math.sin(slerp * halfTheta) / sinHalfTheta;\n dest[0] = quat[0] * ratioA + quat2[0] * ratioB;\n dest[1] = quat[1] * ratioA + quat2[1] * ratioB;\n dest[2] = quat[2] * ratioA + quat2[2] * ratioB;\n dest[3] = quat[3] * ratioA + quat2[3] * ratioB;\n return dest;\n };\n quat4.str = function (quat) {\n return (\n \"[\" + quat[0] + \", \" + quat[1] + \", \" + quat[2] + \", \" + quat[3] + \"]\"\n );\n };\n return { vec3: vec3, mat3: mat3, mat4: mat4, quat4: quat4 };\n})();\nfunction _glBegin(mode) {\n GLImmediate.enabledClientAttributes_preBegin =\n GLImmediate.enabledClientAttributes;\n GLImmediate.enabledClientAttributes = [];\n GLImmediate.clientAttributes_preBegin = GLImmediate.clientAttributes;\n GLImmediate.clientAttributes = [];\n for (var i = 0; i < GLImmediate.clientAttributes_preBegin.length; i++) {\n GLImmediate.clientAttributes.push({});\n }\n GLImmediate.mode = mode;\n GLImmediate.vertexCounter = 0;\n var components = (GLImmediate.rendererComponents = []);\n for (var i = 0; i < GLImmediate.NUM_ATTRIBUTES; i++) {\n components[i] = 0;\n }\n GLImmediate.rendererComponentPointer = 0;\n GLImmediate.vertexData = GLImmediate.tempData;\n}\nfunction _glBlendFunc(x0, x1) {\n GLctx[\"blendFunc\"](x0, x1);\n}\nfunction _glClear(x0) {\n GLctx[\"clear\"](x0);\n}\nfunction _glClearColor(x0, x1, x2, x3) {\n GLctx[\"clearColor\"](x0, x1, x2, x3);\n}\nfunction _emscripten_glColor4f(r, g, b, a) {\n r = Math.max(Math.min(r, 1), 0);\n g = Math.max(Math.min(g, 1), 0);\n b = Math.max(Math.min(b, 1), 0);\n a = Math.max(Math.min(a, 1), 0);\n if (GLImmediate.mode >= 0) {\n var start = GLImmediate.vertexCounter << 2;\n GLImmediate.vertexDataU8[start + 0] = r * 255;\n GLImmediate.vertexDataU8[start + 1] = g * 255;\n GLImmediate.vertexDataU8[start + 2] = b * 255;\n GLImmediate.vertexDataU8[start + 3] = a * 255;\n GLImmediate.vertexCounter++;\n GLImmediate.addRendererComponent(GLImmediate.COLOR, 4, GLctx.UNSIGNED_BYTE);\n } else {\n GLImmediate.clientColor[0] = r;\n GLImmediate.clientColor[1] = g;\n GLImmediate.clientColor[2] = b;\n GLImmediate.clientColor[3] = a;\n }\n}\nfunction _glColor3f(r, g, b) {\n _emscripten_glColor4f(r, g, b, 1);\n}\nfunction _glDepthFunc(x0) {\n GLctx[\"depthFunc\"](x0);\n}\nfunction _glEnd() {\n GLImmediate.prepareClientAttributes(\n GLImmediate.rendererComponents[GLImmediate.VERTEX],\n true,\n );\n GLImmediate.firstVertex = 0;\n GLImmediate.lastVertex =\n GLImmediate.vertexCounter / (GLImmediate.stride >> 2);\n GLImmediate.flush();\n GLImmediate.disableBeginEndClientAttributes();\n GLImmediate.mode = -1;\n GLImmediate.enabledClientAttributes =\n GLImmediate.enabledClientAttributes_preBegin;\n GLImmediate.clientAttributes = GLImmediate.clientAttributes_preBegin;\n GLImmediate.currentRenderer = null;\n GLImmediate.modifiedClientAttributes = true;\n}\nfunction _glFinish() {\n GLctx[\"finish\"]();\n}\nfunction _glFlush() {\n GLctx[\"flush\"]();\n}\nfunction _glFrustum(left, right, bottom, top_, nearVal, farVal) {\n GLImmediate.matricesModified = true;\n GLImmediate.matrixVersion[GLImmediate.currentMatrix] =\n (GLImmediate.matrixVersion[GLImmediate.currentMatrix] + 1) | 0;\n GLImmediate.matrixLib.mat4.multiply(\n GLImmediate.matrix[GLImmediate.currentMatrix],\n GLImmediate.matrixLib.mat4.frustum(\n left,\n right,\n bottom,\n top_,\n nearVal,\n farVal,\n ),\n );\n}\nfunction _glLightfv() {\n throw \"glLightfv: TODO\";\n}\nfunction _glLineWidth(x0) {\n GLctx[\"lineWidth\"](x0);\n}\nfunction _glLoadIdentity() {\n GLImmediate.matricesModified = true;\n GLImmediate.matrixVersion[GLImmediate.currentMatrix] =\n (GLImmediate.matrixVersion[GLImmediate.currentMatrix] + 1) | 0;\n GLImmediate.matrixLib.mat4.identity(\n GLImmediate.matrix[GLImmediate.currentMatrix],\n );\n}\nfunction _glMatrixMode(mode) {\n if (mode == 5888) {\n GLImmediate.currentMatrix = 0;\n } else if (mode == 5889) {\n GLImmediate.currentMatrix = 1;\n } else if (mode == 5890) {\n GLImmediate.useTextureMatrix = true;\n GLImmediate.currentMatrix = 2 + GLImmediate.clientActiveTexture;\n } else {\n throw \"Wrong mode \" + mode + \" passed to glMatrixMode\";\n }\n}\nfunction _glNormal3f() {}\nfunction _glOrtho(left, right, bottom, top_, nearVal, farVal) {\n GLImmediate.matricesModified = true;\n GLImmediate.matrixVersion[GLImmediate.currentMatrix] =\n (GLImmediate.matrixVersion[GLImmediate.currentMatrix] + 1) | 0;\n GLImmediate.matrixLib.mat4.multiply(\n GLImmediate.matrix[GLImmediate.currentMatrix],\n GLImmediate.matrixLib.mat4.ortho(\n left,\n right,\n bottom,\n top_,\n nearVal,\n farVal,\n ),\n );\n}\nfunction _glPolygonMode() {}\nfunction _glPolygonOffset(x0, x1) {\n GLctx[\"polygonOffset\"](x0, x1);\n}\nfunction _glPopMatrix() {\n if (GLImmediate.matrixStack[GLImmediate.currentMatrix].length == 0) {\n GL.recordError(1284);\n return;\n }\n GLImmediate.matricesModified = true;\n GLImmediate.matrixVersion[GLImmediate.currentMatrix] =\n (GLImmediate.matrixVersion[GLImmediate.currentMatrix] + 1) | 0;\n GLImmediate.matrix[GLImmediate.currentMatrix] =\n GLImmediate.matrixStack[GLImmediate.currentMatrix].pop();\n}\nfunction _glPushMatrix() {\n GLImmediate.matricesModified = true;\n GLImmediate.matrixVersion[GLImmediate.currentMatrix] =\n (GLImmediate.matrixVersion[GLImmediate.currentMatrix] + 1) | 0;\n GLImmediate.matrixStack[GLImmediate.currentMatrix].push(\n Array.prototype.slice.call(GLImmediate.matrix[GLImmediate.currentMatrix]),\n );\n}\nfunction _glRotated(angle, x, y, z) {\n GLImmediate.matricesModified = true;\n GLImmediate.matrixVersion[GLImmediate.currentMatrix] =\n (GLImmediate.matrixVersion[GLImmediate.currentMatrix] + 1) | 0;\n GLImmediate.matrixLib.mat4.rotate(\n GLImmediate.matrix[GLImmediate.currentMatrix],\n (angle * Math.PI) / 180,\n [x, y, z],\n );\n}\nfunction _glScaled(x, y, z) {\n GLImmediate.matricesModified = true;\n GLImmediate.matrixVersion[GLImmediate.currentMatrix] =\n (GLImmediate.matrixVersion[GLImmediate.currentMatrix] + 1) | 0;\n GLImmediate.matrixLib.mat4.scale(\n GLImmediate.matrix[GLImmediate.currentMatrix],\n [x, y, z],\n );\n}\nfunction _glScalef(x, y, z) {\n GLImmediate.matricesModified = true;\n GLImmediate.matrixVersion[GLImmediate.currentMatrix] =\n (GLImmediate.matrixVersion[GLImmediate.currentMatrix] + 1) | 0;\n GLImmediate.matrixLib.mat4.scale(\n GLImmediate.matrix[GLImmediate.currentMatrix],\n [x, y, z],\n );\n}\nfunction _glShadeModel() {\n warnOnce(\"TODO: glShadeModel\");\n}\nfunction _glTranslated(x, y, z) {\n GLImmediate.matricesModified = true;\n GLImmediate.matrixVersion[GLImmediate.currentMatrix] =\n (GLImmediate.matrixVersion[GLImmediate.currentMatrix] + 1) | 0;\n GLImmediate.matrixLib.mat4.translate(\n GLImmediate.matrix[GLImmediate.currentMatrix],\n [x, y, z],\n );\n}\nfunction _glTranslatef(x, y, z) {\n GLImmediate.matricesModified = true;\n GLImmediate.matrixVersion[GLImmediate.currentMatrix] =\n (GLImmediate.matrixVersion[GLImmediate.currentMatrix] + 1) | 0;\n GLImmediate.matrixLib.mat4.translate(\n GLImmediate.matrix[GLImmediate.currentMatrix],\n [x, y, z],\n );\n}\nfunction _glVertex3f(x, y, z) {\n assert(GLImmediate.mode >= 0);\n GLImmediate.vertexData[GLImmediate.vertexCounter++] = x;\n GLImmediate.vertexData[GLImmediate.vertexCounter++] = y;\n GLImmediate.vertexData[GLImmediate.vertexCounter++] = z;\n GLImmediate.vertexData[GLImmediate.vertexCounter++] = 1;\n assert(GLImmediate.vertexCounter << 2 < GL.MAX_TEMP_BUFFER_SIZE);\n GLImmediate.addRendererComponent(GLImmediate.VERTEX, 4, GLctx.FLOAT);\n}\nfunction _glViewport(x0, x1, x2, x3) {\n GLctx[\"viewport\"](x0, x1, x2, x3);\n}\nfunction _glinit(width, height, depth, flags, no) {\n var canvas;\n if (no == -1) canvas = Module[\"canvas\"];\n else canvas = document.getElementById(\"gl3d_\" + (no + 1));\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(function (w, h) {\n if (!SDL.settingVideoMode) {\n SDL.receiveEvent({ type: \"resize\", w: w, h: h });\n }\n });\n }\n if (width !== canvas.width || height !== canvas.height) {\n SDL.settingVideoMode = true;\n Browser.setCanvasSize(width, height);\n SDL.settingVideoMode = false;\n }\n if (SDL.screen) {\n SDL.freeSurface(SDL.screen);\n assert(!SDL.screen);\n }\n if (SDL.GL) flags = flags | 67108864;\n flags = flags || 0;\n var is_SDL_HWSURFACE = flags & 1;\n var is_SDL_HWPALETTE = flags & 2097152;\n var is_SDL_OPENGL = flags & 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] = flags;\n HEAP32[(surf + 4) >> 2] = pixelFormat;\n HEAP32[(surf + 8) >> 2] = width;\n HEAP32[(surf + 12) >> 2] = height;\n HEAP32[(surf + 16) >> 2] = width * bpp;\n HEAP32[(surf + 20) >> 2] = buffer;\n HEAP32[(surf + 36) >> 2] = 0;\n HEAP32[(surf + 40) >> 2] = 0;\n HEAP32[(surf + 44) >> 2] = Module[\"canvas\"].width;\n HEAP32[(surf + 48) >> 2] = Module[\"canvas\"].height;\n HEAP32[(surf + 56) >> 2] = 1;\n HEAP32[pixelFormat >> 2] = -2042224636;\n HEAP32[(pixelFormat + 4) >> 2] = 0;\n HEAP8[(pixelFormat + 8) >> 0] = bpp * 8;\n HEAP8[(pixelFormat + 9) >> 0] = bpp;\n SDL.GL = SDL.GL || is_SDL_OPENGL;\n var webGLContextAttributes = {\n antialias: SDL.glAttributes[13] != 0 && SDL.glAttributes[14] > 1,\n depth: SDL.glAttributes[6] > 0,\n stencil: SDL.glAttributes[7] > 0,\n };\n var ctx;\n var contextAttributes = { antialias: false, alpha: false };\n if (webGLContextAttributes) {\n for (var attribute in webGLContextAttributes) {\n contextAttributes[attribute] = webGLContextAttributes[attribute];\n }\n }\n var contextHandle = GL.createContext(canvas, contextAttributes);\n if (contextHandle) {\n ctx = GL.getContext(contextHandle).GLctx;\n }\n Module.ctx = ctx;\n GL.makeContextCurrent(contextHandle);\n Module.useWebGL = true;\n Browser.moduleContextCreatedCallbacks.forEach(function (callback) {\n callback();\n });\n Browser.init();\n SDL.surfaces[surf] = {\n width: width,\n height: height,\n canvas: canvas,\n ctx: ctx,\n surf: surf,\n buffer: buffer,\n pixelFormat: pixelFormat,\n alpha: 255,\n flags: flags,\n locked: 0,\n usePageCanvas: true,\n source: \"screen\",\n isFlagSet: function (flag) {\n return flags & flag;\n },\n };\n SDL.screen = surf;\n return contextHandle;\n}\nfunction _kill(pid, sig) {\n err(\"Calling stub instead of kill()\");\n ___setErrNo(ERRNO_CODES.EPERM);\n return -1;\n}\nfunction _llvm_bswap_i64(l, h) {\n var retl = _llvm_bswap_i32(h) >>> 0;\n var reth = _llvm_bswap_i32(l) >>> 0;\n return (setTempRet0(reth), retl) | 0;\n}\nvar _llvm_cos_f64 = Math_cos;\nfunction _llvm_exp2_f32(x) {\n return Math.pow(2, x);\n}\nfunction _llvm_exp2_f64(a0) {\n return _llvm_exp2_f32(a0);\n}\nfunction _llvm_log10_f32(x) {\n return Math.log(x) / Math.LN10;\n}\nfunction _llvm_log10_f64(a0) {\n return _llvm_log10_f32(a0);\n}\nfunction _llvm_log2_f32(x) {\n return Math.log(x) / Math.LN2;\n}\nfunction _llvm_log2_f64(a0) {\n return _llvm_log2_f32(a0);\n}\nvar _llvm_sin_f64 = Math_sin;\nfunction _llvm_stackrestore(p) {\n var self = _llvm_stacksave;\n var ret = self.LLVM_SAVEDSTACKS[p];\n self.LLVM_SAVEDSTACKS.splice(p, 1);\n stackRestore(ret);\n}\nfunction _llvm_stacksave() {\n var self = _llvm_stacksave;\n if (!self.LLVM_SAVEDSTACKS) {\n self.LLVM_SAVEDSTACKS = [];\n }\n self.LLVM_SAVEDSTACKS.push(stackSave());\n return self.LLVM_SAVEDSTACKS.length - 1;\n}\nfunction _llvm_trap() {\n abort(\"trap!\");\n}\nvar _llvm_trunc_f64 = Math_trunc;\nvar ___tm_current = 5313168;\nvar ___tm_timezone = (stringToUTF8(\"GMT\", 5313216, 4), 5313216);\nfunction _tzset() {\n if (_tzset.called) return;\n _tzset.called = true;\n HEAP32[__get_timezone() >> 2] = new Date().getTimezoneOffset() * 60;\n var winter = new Date(2e3, 0, 1);\n var summer = new Date(2e3, 6, 1);\n HEAP32[__get_daylight() >> 2] = Number(\n winter.getTimezoneOffset() != summer.getTimezoneOffset(),\n );\n function extractZone(date) {\n var match = date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);\n return match ? match[1] : \"GMT\";\n }\n var winterName = extractZone(winter);\n var summerName = extractZone(summer);\n var winterNamePtr = allocate(\n intArrayFromString(winterName),\n \"i8\",\n ALLOC_NORMAL,\n );\n var summerNamePtr = allocate(\n intArrayFromString(summerName),\n \"i8\",\n ALLOC_NORMAL,\n );\n if (summer.getTimezoneOffset() < winter.getTimezoneOffset()) {\n HEAP32[__get_tzname() >> 2] = winterNamePtr;\n HEAP32[(__get_tzname() + 4) >> 2] = summerNamePtr;\n } else {\n HEAP32[__get_tzname() >> 2] = summerNamePtr;\n HEAP32[(__get_tzname() + 4) >> 2] = winterNamePtr;\n }\n}\nfunction _localtime_r(time, tmPtr) {\n _tzset();\n var date = new Date(HEAP32[time >> 2] * 1e3);\n HEAP32[tmPtr >> 2] = date.getSeconds();\n HEAP32[(tmPtr + 4) >> 2] = date.getMinutes();\n HEAP32[(tmPtr + 8) >> 2] = date.getHours();\n HEAP32[(tmPtr + 12) >> 2] = date.getDate();\n HEAP32[(tmPtr + 16) >> 2] = date.getMonth();\n HEAP32[(tmPtr + 20) >> 2] = date.getFullYear() - 1900;\n HEAP32[(tmPtr + 24) >> 2] = date.getDay();\n var start = new Date(date.getFullYear(), 0, 1);\n var yday = ((date.getTime() - start.getTime()) / (1e3 * 60 * 60 * 24)) | 0;\n HEAP32[(tmPtr + 28) >> 2] = yday;\n HEAP32[(tmPtr + 36) >> 2] = -(date.getTimezoneOffset() * 60);\n var summerOffset = new Date(2e3, 6, 1).getTimezoneOffset();\n var winterOffset = start.getTimezoneOffset();\n var dst =\n (summerOffset != winterOffset &&\n date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;\n HEAP32[(tmPtr + 32) >> 2] = dst;\n var zonePtr = HEAP32[(__get_tzname() + (dst ? 4 : 0)) >> 2];\n HEAP32[(tmPtr + 40) >> 2] = zonePtr;\n return tmPtr;\n}\nfunction _localtime(time) {\n return _localtime_r(time, ___tm_current);\n}\nfunction _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.set(HEAPU8.subarray(src, src + num), dest);\n}\nfunction _mp_js_hook() {\n if (typeof window === \"undefined\") {\n var mp_interrupt_char = Module.ccall(\n \"mp_hal_get_interrupt_char\",\n \"number\",\n [\"number\"],\n [\"null\"],\n );\n var fs = require(\"fs\");\n var buf = Buffer.alloc(1);\n try {\n var n = fs.readSync(process.stdin.fd, buf, 0, 1);\n if (n > 0) {\n if (buf[0] == mp_interrupt_char) {\n Module.ccall(\"mp_keyboard_interrupt\", \"null\", [\"null\"], [\"null\"]);\n } else {\n process.stdout.write(String.fromCharCode(buf[0]));\n }\n }\n } catch (e) {\n if (e.code === \"EAGAIN\") {\n } else {\n throw e;\n }\n }\n }\n}\nfunction _mp_js_ticks_ms() {\n return new Date().getTime();\n}\nfunction _usleep(useconds) {\n var msec = useconds / 1e3;\n if (\n (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) &&\n self[\"performance\"] &&\n self[\"performance\"][\"now\"]\n ) {\n var start = self[\"performance\"][\"now\"]();\n while (self[\"performance\"][\"now\"]() - start < msec) {}\n } else {\n var start = Date.now();\n while (Date.now() - start < msec) {}\n }\n return 0;\n}\nfunction _nanosleep(rqtp, rmtp) {\n if (rqtp === 0) {\n ___setErrNo(22);\n return -1;\n }\n var seconds = HEAP32[rqtp >> 2];\n var nanoseconds = HEAP32[(rqtp + 4) >> 2];\n if (nanoseconds < 0 || nanoseconds > 999999999 || seconds < 0) {\n ___setErrNo(22);\n return -1;\n }\n if (rmtp !== 0) {\n HEAP32[rmtp >> 2] = 0;\n HEAP32[(rmtp + 4) >> 2] = 0;\n }\n return _usleep(seconds * 1e6 + nanoseconds / 1e3);\n}\nfunction _popen() {\n err(\"missing function: popen\");\n abort(-1);\n}\nfunction _pthread_cond_wait() {\n return 0;\n}\nfunction _raise(sig) {\n err(\"Calling stub instead of raise()\");\n ___setErrNo(ERRNO_CODES.ENOSYS);\n warnOnce(\"raise() returning an error as we do not support it\");\n return -1;\n}\nfunction abortOnCannotGrowMemory(requestedSize) {\n abort(\n \"Cannot enlarge memory arrays to size \" +\n requestedSize +\n \" bytes (OOM). Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value \" +\n HEAP8.length +\n \", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 \",\n );\n}\nfunction _emscripten_resize_heap(requestedSize) {\n abortOnCannotGrowMemory(requestedSize);\n}\nfunction _setenv(envname, envval, overwrite) {\n if (envname === 0) {\n ___setErrNo(22);\n return -1;\n }\n var name = UTF8ToString(envname);\n var val = UTF8ToString(envval);\n if (name === \"\" || name.indexOf(\"=\") !== -1) {\n ___setErrNo(22);\n return -1;\n }\n if (ENV.hasOwnProperty(name) && !overwrite) return 0;\n ENV[name] = val;\n ___buildEnvironment(__get_environ());\n return 0;\n}\nfunction _sigaction(signum, act, oldact) {\n err(\"Calling stub instead of sigaction()\");\n return 0;\n}\nfunction _sigemptyset(set) {\n HEAP32[set >> 2] = 0;\n return 0;\n}\nvar _sqrt = Math_sqrt;\nfunction __isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\nfunction __arraySum(array, index) {\n var sum = 0;\n for (var i = 0; i <= index; sum += array[i++]);\n return sum;\n}\nvar __MONTH_DAYS_LEAP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar __MONTH_DAYS_REGULAR = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction __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)[\n currentMonth\n ];\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}\nfunction _strftime(s, maxsize, format, tm) {\n var tm_zone = HEAP32[(tm + 40) >> 2];\n var date = {\n tm_sec: HEAP32[tm >> 2],\n tm_min: HEAP32[(tm + 4) >> 2],\n tm_hour: HEAP32[(tm + 8) >> 2],\n tm_mday: HEAP32[(tm + 12) >> 2],\n tm_mon: HEAP32[(tm + 16) >> 2],\n tm_year: HEAP32[(tm + 20) >> 2],\n tm_wday: HEAP32[(tm + 24) >> 2],\n tm_yday: HEAP32[(tm + 28) >> 2],\n tm_isdst: HEAP32[(tm + 32) >> 2],\n tm_gmtoff: HEAP32[(tm + 36) >> 2],\n tm_zone: tm_zone ? UTF8ToString(tm_zone) : \"\",\n };\n var pattern = UTF8ToString(format);\n var EXPANSION_RULES_1 = {\n \"%c\": \"%a %b %d %H:%M:%S %Y\",\n \"%D\": \"%m/%d/%y\",\n \"%F\": \"%Y-%m-%d\",\n \"%h\": \"%b\",\n \"%r\": \"%I:%M:%S %p\",\n \"%R\": \"%H:%M\",\n \"%T\": \"%H:%M:%S\",\n \"%x\": \"%m/%d/%y\",\n \"%X\": \"%H:%M:%S\",\n \"%Ec\": \"%c\",\n \"%EC\": \"%C\",\n \"%Ex\": \"%m/%d/%y\",\n \"%EX\": \"%H:%M:%S\",\n \"%Ey\": \"%y\",\n \"%EY\": \"%Y\",\n \"%Od\": \"%d\",\n \"%Oe\": \"%e\",\n \"%OH\": \"%H\",\n \"%OI\": \"%I\",\n \"%Om\": \"%m\",\n \"%OM\": \"%M\",\n \"%OS\": \"%S\",\n \"%Ou\": \"%u\",\n \"%OU\": \"%U\",\n \"%OV\": \"%V\",\n \"%Ow\": \"%w\",\n \"%OW\": \"%W\",\n \"%Oy\": \"%y\",\n };\n for (var rule in EXPANSION_RULES_1) {\n pattern = pattern.replace(new RegExp(rule, \"g\"), EXPANSION_RULES_1[rule]);\n }\n var WEEKDAYS = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ];\n var MONTHS = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ];\n function leadingSomething(value, digits, character) {\n var str = typeof value === \"number\" ? value.toString() : value || \"\";\n while (str.length < digits) {\n str = character[0] + str;\n }\n return str;\n }\n function leadingNulls(value, digits) {\n return leadingSomething(value, digits, \"0\");\n }\n function compareByDay(date1, date2) {\n function sgn(value) {\n return value < 0 ? -1 : value > 0 ? 1 : 0;\n }\n var compare;\n if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) {\n if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) {\n compare = sgn(date1.getDate() - date2.getDate());\n }\n }\n return compare;\n }\n function getFirstWeekStartDate(janFourth) {\n switch (janFourth.getDay()) {\n case 0:\n return new Date(janFourth.getFullYear() - 1, 11, 29);\n case 1:\n return janFourth;\n case 2:\n return new Date(janFourth.getFullYear(), 0, 3);\n case 3:\n return new Date(janFourth.getFullYear(), 0, 2);\n case 4:\n return new Date(janFourth.getFullYear(), 0, 1);\n case 5:\n return new Date(janFourth.getFullYear() - 1, 11, 31);\n case 6:\n return new Date(janFourth.getFullYear() - 1, 11, 30);\n }\n }\n function getWeekBasedYear(date) {\n var thisDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday);\n var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4);\n var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4);\n var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);\n var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);\n if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) {\n if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) {\n return thisDate.getFullYear() + 1;\n } else {\n return thisDate.getFullYear();\n }\n } else {\n return thisDate.getFullYear() - 1;\n }\n }\n var EXPANSION_RULES_2 = {\n \"%a\": function (date) {\n return WEEKDAYS[date.tm_wday].substring(0, 3);\n },\n \"%A\": function (date) {\n return WEEKDAYS[date.tm_wday];\n },\n \"%b\": function (date) {\n return MONTHS[date.tm_mon].substring(0, 3);\n },\n \"%B\": function (date) {\n return MONTHS[date.tm_mon];\n },\n \"%C\": function (date) {\n var year = date.tm_year + 1900;\n return leadingNulls((year / 100) | 0, 2);\n },\n \"%d\": function (date) {\n return leadingNulls(date.tm_mday, 2);\n },\n \"%e\": function (date) {\n return leadingSomething(date.tm_mday, 2, \" \");\n },\n \"%g\": function (date) {\n return getWeekBasedYear(date).toString().substring(2);\n },\n \"%G\": function (date) {\n return getWeekBasedYear(date);\n },\n \"%H\": function (date) {\n return leadingNulls(date.tm_hour, 2);\n },\n \"%I\": function (date) {\n var twelveHour = date.tm_hour;\n if (twelveHour == 0) twelveHour = 12;\n else if (twelveHour > 12) twelveHour -= 12;\n return leadingNulls(twelveHour, 2);\n },\n \"%j\": function (date) {\n return leadingNulls(\n date.tm_mday +\n __arraySum(\n __isLeapYear(date.tm_year + 1900)\n ? __MONTH_DAYS_LEAP\n : __MONTH_DAYS_REGULAR,\n date.tm_mon - 1,\n ),\n 3,\n );\n },\n \"%m\": function (date) {\n return leadingNulls(date.tm_mon + 1, 2);\n },\n \"%M\": function (date) {\n return leadingNulls(date.tm_min, 2);\n },\n \"%n\": function () {\n return \"\\n\";\n },\n \"%p\": function (date) {\n if (date.tm_hour >= 0 && date.tm_hour < 12) {\n return \"AM\";\n } else {\n return \"PM\";\n }\n },\n \"%S\": function (date) {\n return leadingNulls(date.tm_sec, 2);\n },\n \"%t\": function () {\n return \"\\t\";\n },\n \"%u\": function (date) {\n return date.tm_wday || 7;\n },\n \"%U\": function (date) {\n var janFirst = new Date(date.tm_year + 1900, 0, 1);\n var firstSunday =\n janFirst.getDay() === 0\n ? janFirst\n : __addDays(janFirst, 7 - janFirst.getDay());\n var endDate = new Date(date.tm_year + 1900, date.tm_mon, date.tm_mday);\n if (compareByDay(firstSunday, endDate) < 0) {\n var februaryFirstUntilEndMonth =\n __arraySum(\n __isLeapYear(endDate.getFullYear())\n ? __MONTH_DAYS_LEAP\n : __MONTH_DAYS_REGULAR,\n endDate.getMonth() - 1,\n ) - 31;\n var firstSundayUntilEndJanuary = 31 - firstSunday.getDate();\n var days =\n firstSundayUntilEndJanuary +\n februaryFirstUntilEndMonth +\n endDate.getDate();\n return leadingNulls(Math.ceil(days / 7), 2);\n }\n return compareByDay(firstSunday, janFirst) === 0 ? \"01\" : \"00\";\n },\n \"%V\": function (date) {\n var janFourthThisYear = new Date(date.tm_year + 1900, 0, 4);\n var janFourthNextYear = new Date(date.tm_year + 1901, 0, 4);\n var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);\n var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);\n var endDate = __addDays(\n new Date(date.tm_year + 1900, 0, 1),\n date.tm_yday,\n );\n if (compareByDay(endDate, firstWeekStartThisYear) < 0) {\n return \"53\";\n }\n if (compareByDay(firstWeekStartNextYear, endDate) <= 0) {\n return \"01\";\n }\n var daysDifference;\n if (firstWeekStartThisYear.getFullYear() < date.tm_year + 1900) {\n daysDifference = date.tm_yday + 32 - firstWeekStartThisYear.getDate();\n } else {\n daysDifference = date.tm_yday + 1 - firstWeekStartThisYear.getDate();\n }\n return leadingNulls(Math.ceil(daysDifference / 7), 2);\n },\n \"%w\": function (date) {\n return date.tm_wday;\n },\n \"%W\": function (date) {\n var janFirst = new Date(date.tm_year, 0, 1);\n var firstMonday =\n janFirst.getDay() === 1\n ? janFirst\n : __addDays(\n janFirst,\n janFirst.getDay() === 0 ? 1 : 7 - janFirst.getDay() + 1,\n );\n var endDate = new Date(date.tm_year + 1900, date.tm_mon, date.tm_mday);\n if (compareByDay(firstMonday, endDate) < 0) {\n var februaryFirstUntilEndMonth =\n __arraySum(\n __isLeapYear(endDate.getFullYear())\n ? __MONTH_DAYS_LEAP\n : __MONTH_DAYS_REGULAR,\n endDate.getMonth() - 1,\n ) - 31;\n var firstMondayUntilEndJanuary = 31 - firstMonday.getDate();\n var days =\n firstMondayUntilEndJanuary +\n februaryFirstUntilEndMonth +\n endDate.getDate();\n return leadingNulls(Math.ceil(days / 7), 2);\n }\n return compareByDay(firstMonday, janFirst) === 0 ? \"01\" : \"00\";\n },\n \"%y\": function (date) {\n return (date.tm_year + 1900).toString().substring(2);\n },\n \"%Y\": function (date) {\n return date.tm_year + 1900;\n },\n \"%z\": function (date) {\n var off = date.tm_gmtoff;\n var ahead = off >= 0;\n off = Math.abs(off) / 60;\n off = (off / 60) * 100 + (off % 60);\n return (ahead ? \"+\" : \"-\") + String(\"0000\" + off).slice(-4);\n },\n \"%Z\": function (date) {\n return date.tm_zone;\n },\n \"%%\": function () {\n return \"%\";\n },\n };\n for (var rule in EXPANSION_RULES_2) {\n if (pattern.indexOf(rule) >= 0) {\n pattern = pattern.replace(\n new RegExp(rule, \"g\"),\n EXPANSION_RULES_2[rule](date),\n );\n }\n }\n var bytes = intArrayFromString(pattern, false);\n if (bytes.length > maxsize) {\n return 0;\n }\n writeArrayToMemory(bytes, s);\n return bytes.length - 1;\n}\nfunction _strftime_l(s, maxsize, format, tm) {\n return _strftime(s, maxsize, format, tm);\n}\nfunction _sysconf(name) {\n switch (name) {\n case 30:\n return PAGE_SIZE;\n case 85:\n var maxHeapSize = 2 * 1024 * 1024 * 1024 - 65536;\n maxHeapSize = HEAPU8.length;\n return maxHeapSize / PAGE_SIZE;\n case 132:\n case 133:\n case 12:\n case 137:\n case 138:\n case 15:\n case 235:\n case 16:\n case 17:\n case 18:\n case 19:\n case 20:\n case 149:\n case 13:\n case 10:\n case 236:\n case 153:\n case 9:\n case 21:\n case 22:\n case 159:\n case 154:\n case 14:\n case 77:\n case 78:\n case 139:\n case 80:\n case 81:\n case 82:\n case 68:\n case 67:\n case 164:\n case 11:\n case 29:\n case 47:\n case 48:\n case 95:\n case 52:\n case 51:\n case 46:\n return 200809;\n case 79:\n return 0;\n case 27:\n case 246:\n case 127:\n case 128:\n case 23:\n case 24:\n case 160:\n case 161:\n case 181:\n case 182:\n case 242:\n case 183:\n case 184:\n case 243:\n case 244:\n case 245:\n case 165:\n case 178:\n case 179:\n case 49:\n case 50:\n case 168:\n case 169:\n case 175:\n case 170:\n case 171:\n case 172:\n case 97:\n case 76:\n case 32:\n case 173:\n case 35:\n return -1;\n case 176:\n case 177:\n case 7:\n case 155:\n case 8:\n case 157:\n case 125:\n case 126:\n case 92:\n case 93:\n case 129:\n case 130:\n case 131:\n case 94:\n case 91:\n return 1;\n case 74:\n case 60:\n case 69:\n case 70:\n case 4:\n return 1024;\n case 31:\n case 42:\n case 72:\n return 32;\n case 87:\n case 26:\n case 33:\n return 2147483647;\n case 34:\n case 1:\n return 47839;\n case 38:\n case 36:\n return 99;\n case 43:\n case 37:\n return 2048;\n case 0:\n return 2097152;\n case 3:\n return 65536;\n case 28:\n return 32768;\n case 44:\n return 32767;\n case 75:\n return 16384;\n case 39:\n return 1e3;\n case 89:\n return 700;\n case 71:\n return 256;\n case 40:\n return 255;\n case 2:\n return 100;\n case 180:\n return 64;\n case 25:\n return 20;\n case 5:\n return 16;\n case 6:\n return 6;\n case 73:\n return 4;\n case 84: {\n if (typeof navigator === \"object\")\n return navigator[\"hardwareConcurrency\"] || 1;\n return 1;\n }\n }\n ___setErrNo(22);\n return -1;\n}\nfunction _system(command) {\n ___setErrNo(11);\n return -1;\n}\nfunction _time(ptr) {\n var ret = (Date.now() / 1e3) | 0;\n if (ptr) {\n HEAP32[ptr >> 2] = ret;\n }\n return ret;\n}\nfunction _unsetenv(name) {\n if (name === 0) {\n ___setErrNo(22);\n return -1;\n }\n name = UTF8ToString(name);\n if (name === \"\" || name.indexOf(\"=\") !== -1) {\n ___setErrNo(22);\n return -1;\n }\n if (ENV.hasOwnProperty(name)) {\n delete ENV[name];\n ___buildEnvironment(__get_environ());\n }\n return 0;\n}\nfunction _utimes(path, times) {\n var time;\n if (times) {\n var offset = 8 + 0;\n time = HEAP32[(times + offset) >> 2] * 1e3;\n offset = 8 + 4;\n time += HEAP32[(times + offset) >> 2] / 1e3;\n } else {\n time = Date.now();\n }\n path = UTF8ToString(path);\n try {\n FS.utime(path, time, time);\n return 0;\n } catch (e) {\n FS.handleFSError(e);\n return -1;\n }\n}\nfunction _wait(stat_loc) {\n ___setErrNo(10);\n return -1;\n}\nfunction _waitpid() {\n return _wait.apply(null, arguments);\n}\nFS.staticInit();\nif (ENVIRONMENT_HAS_NODE) {\n var fs = require(\"fs\");\n var NODEJS_PATH = require(\"path\");\n NODEFS.staticInit();\n}\nModule[\"requestFullScreen\"] = function Module_requestFullScreen(\n lockPointer,\n resizeCanvas,\n vrDevice,\n) {\n err(\n \"Module.requestFullScreen is deprecated. Please call Module.requestFullscreen instead.\",\n );\n Module[\"requestFullScreen\"] = Module[\"requestFullscreen\"];\n Browser.requestFullScreen(lockPointer, resizeCanvas, vrDevice);\n};\nModule[\"requestFullscreen\"] = function Module_requestFullscreen(\n lockPointer,\n resizeCanvas,\n vrDevice,\n) {\n Browser.requestFullscreen(lockPointer, resizeCanvas, vrDevice);\n};\nModule[\"requestAnimationFrame\"] = function Module_requestAnimationFrame(func) {\n Browser.requestAnimationFrame(func);\n};\nModule[\"setCanvasSize\"] = function Module_setCanvasSize(\n width,\n height,\n noUpdates,\n) {\n Browser.setCanvasSize(width, height, noUpdates);\n};\nModule[\"pauseMainLoop\"] = function Module_pauseMainLoop() {\n Browser.mainLoop.pause();\n};\nModule[\"resumeMainLoop\"] = function Module_resumeMainLoop() {\n Browser.mainLoop.resume();\n};\nModule[\"getUserMedia\"] = function Module_getUserMedia() {\n Browser.getUserMedia();\n};\nModule[\"createContext\"] = function Module_createContext(\n canvas,\n useWebGL,\n setInModule,\n webGLContextAttributes,\n) {\n return Browser.createContext(\n canvas,\n useWebGL,\n setInModule,\n webGLContextAttributes,\n );\n};\nif (ENVIRONMENT_IS_NODE) {\n _emscripten_get_now = function _emscripten_get_now_actual() {\n var t = process[\"hrtime\"]();\n return t[0] * 1e3 + t[1] / 1e6;\n };\n} else if (typeof dateNow !== \"undefined\") {\n _emscripten_get_now = dateNow;\n} else if (\n typeof performance === \"object\" &&\n performance &&\n typeof performance[\"now\"] === \"function\"\n) {\n _emscripten_get_now = function () {\n return performance[\"now\"]();\n };\n} else {\n _emscripten_get_now = Date.now;\n}\nGLImmediate.setupFuncs();\nBrowser.moduleContextCreatedCallbacks.push(function () {\n GLImmediate.init();\n});\nvar GLctx;\nGL.init();\nGLEmulation.init();\nvar ASSERTIONS = true;\nfunction 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}\nfunction intArrayToString(array) {\n var ret = [];\n for (var i = 0; i < array.length; i++) {\n var chr = array[i];\n if (chr > 255) {\n if (ASSERTIONS) {\n assert(\n false,\n \"Character code \" +\n chr +\n \" (\" +\n String.fromCharCode(chr) +\n \") at offset \" +\n i +\n \" not in 0x00-0xFF.\",\n );\n }\n chr &= 255;\n }\n ret.push(String.fromCharCode(chr));\n }\n return ret.join(\"\");\n}\nvar decodeBase64 =\n typeof atob === \"function\"\n ? atob\n : function (input) {\n var keyStr =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n var output = \"\";\n var chr1, chr2, chr3;\n var enc1, enc2, enc3, enc4;\n var i = 0;\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n do {\n enc1 = keyStr.indexOf(input.charAt(i++));\n enc2 = keyStr.indexOf(input.charAt(i++));\n enc3 = keyStr.indexOf(input.charAt(i++));\n enc4 = keyStr.indexOf(input.charAt(i++));\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n output = output + String.fromCharCode(chr1);\n if (enc3 !== 64) {\n output = output + String.fromCharCode(chr2);\n }\n if (enc4 !== 64) {\n output = output + String.fromCharCode(chr3);\n }\n } while (i < input.length);\n return output;\n };\nfunction intArrayFromBase64(s) {\n if (typeof ENVIRONMENT_IS_NODE === \"boolean\" && ENVIRONMENT_IS_NODE) {\n var buf;\n try {\n buf = Buffer.from(s, \"base64\");\n } catch (_) {\n buf = new Buffer(s, \"base64\");\n }\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n try {\n var decoded = decodeBase64(s);\n var bytes = new Uint8Array(decoded.length);\n for (var i = 0; i < decoded.length; ++i) {\n bytes[i] = decoded.charCodeAt(i);\n }\n return bytes;\n } catch (_) {\n throw new Error(\"Converting base64 string to bytes failed.\");\n }\n}\nfunction tryParseAsDataURI(filename) {\n if (!isDataURI(filename)) {\n return;\n }\n return intArrayFromBase64(filename.slice(dataURIPrefix.length));\n}\nfunction nullFunc_dd(x) {\n abortFnPtrError(x, \"dd\");\n}\nfunction nullFunc_ddd(x) {\n abortFnPtrError(x, \"ddd\");\n}\nfunction nullFunc_di(x) {\n abortFnPtrError(x, \"di\");\n}\nfunction nullFunc_did(x) {\n abortFnPtrError(x, \"did\");\n}\nfunction nullFunc_i(x) {\n abortFnPtrError(x, \"i\");\n}\nfunction nullFunc_ii(x) {\n abortFnPtrError(x, \"ii\");\n}\nfunction nullFunc_iidi(x) {\n abortFnPtrError(x, \"iidi\");\n}\nfunction nullFunc_iidiiii(x) {\n abortFnPtrError(x, \"iidiiii\");\n}\nfunction nullFunc_iii(x) {\n abortFnPtrError(x, \"iii\");\n}\nfunction nullFunc_iiii(x) {\n abortFnPtrError(x, \"iiii\");\n}\nfunction nullFunc_iiiid(x) {\n abortFnPtrError(x, \"iiiid\");\n}\nfunction nullFunc_iiiii(x) {\n abortFnPtrError(x, \"iiiii\");\n}\nfunction nullFunc_iiiiid(x) {\n abortFnPtrError(x, \"iiiiid\");\n}\nfunction nullFunc_iiiiii(x) {\n abortFnPtrError(x, \"iiiiii\");\n}\nfunction nullFunc_iiiiiid(x) {\n abortFnPtrError(x, \"iiiiiid\");\n}\nfunction nullFunc_iiiiiii(x) {\n abortFnPtrError(x, \"iiiiiii\");\n}\nfunction nullFunc_iiiiiiii(x) {\n abortFnPtrError(x, \"iiiiiiii\");\n}\nfunction nullFunc_iiiiiiiii(x) {\n abortFnPtrError(x, \"iiiiiiiii\");\n}\nfunction nullFunc_iiiiiiiiii(x) {\n abortFnPtrError(x, \"iiiiiiiiii\");\n}\nfunction nullFunc_iiiiiiiiiii(x) {\n abortFnPtrError(x, \"iiiiiiiiiii\");\n}\nfunction nullFunc_iiiiiiiiiiii(x) {\n abortFnPtrError(x, \"iiiiiiiiiiii\");\n}\nfunction nullFunc_iiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"iiiiiiiiiiiii\");\n}\nfunction nullFunc_iiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"iiiiiiiiiiiiii\");\n}\nfunction nullFunc_iiiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"iiiiiiiiiiiiiii\");\n}\nfunction nullFunc_iiiiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"iiiiiiiiiiiiiiii\");\n}\nfunction nullFunc_iiiiiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"iiiiiiiiiiiiiiiii\");\n}\nfunction nullFunc_iiiiiiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"iiiiiiiiiiiiiiiiii\");\n}\nfunction nullFunc_iiiiiiiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"iiiiiiiiiiiiiiiiiii\");\n}\nfunction nullFunc_iiiiiiiiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"iiiiiiiiiiiiiiiiiiii\");\n}\nfunction nullFunc_iiiiiiiiiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"iiiiiiiiiiiiiiiiiiiii\");\n}\nfunction nullFunc_iiiiij(x) {\n abortFnPtrError(x, \"iiiiij\");\n}\nfunction nullFunc_iiiij(x) {\n abortFnPtrError(x, \"iiiij\");\n}\nfunction nullFunc_iiiijj(x) {\n abortFnPtrError(x, \"iiiijj\");\n}\nfunction nullFunc_iiiji(x) {\n abortFnPtrError(x, \"iiiji\");\n}\nfunction nullFunc_iiijj(x) {\n abortFnPtrError(x, \"iiijj\");\n}\nfunction nullFunc_iiji(x) {\n abortFnPtrError(x, \"iiji\");\n}\nfunction nullFunc_iijijji(x) {\n abortFnPtrError(x, \"iijijji\");\n}\nfunction nullFunc_iijijjji(x) {\n abortFnPtrError(x, \"iijijjji\");\n}\nfunction nullFunc_jii(x) {\n abortFnPtrError(x, \"jii\");\n}\nfunction nullFunc_jiii(x) {\n abortFnPtrError(x, \"jiii\");\n}\nfunction nullFunc_jiiii(x) {\n abortFnPtrError(x, \"jiiii\");\n}\nfunction nullFunc_jiiiii(x) {\n abortFnPtrError(x, \"jiiiii\");\n}\nfunction nullFunc_jiij(x) {\n abortFnPtrError(x, \"jiij\");\n}\nfunction nullFunc_jij(x) {\n abortFnPtrError(x, \"jij\");\n}\nfunction nullFunc_jiji(x) {\n abortFnPtrError(x, \"jiji\");\n}\nfunction nullFunc_jijii(x) {\n abortFnPtrError(x, \"jijii\");\n}\nfunction nullFunc_jijiii(x) {\n abortFnPtrError(x, \"jijiii\");\n}\nfunction nullFunc_jijiiii(x) {\n abortFnPtrError(x, \"jijiiii\");\n}\nfunction nullFunc_jijiiiii(x) {\n abortFnPtrError(x, \"jijiiiii\");\n}\nfunction nullFunc_jijij(x) {\n abortFnPtrError(x, \"jijij\");\n}\nfunction nullFunc_jijj(x) {\n abortFnPtrError(x, \"jijj\");\n}\nfunction nullFunc_jijji(x) {\n abortFnPtrError(x, \"jijji\");\n}\nfunction nullFunc_jijjiii(x) {\n abortFnPtrError(x, \"jijjiii\");\n}\nfunction nullFunc_v(x) {\n abortFnPtrError(x, \"v\");\n}\nfunction nullFunc_vi(x) {\n abortFnPtrError(x, \"vi\");\n}\nfunction nullFunc_vid(x) {\n abortFnPtrError(x, \"vid\");\n}\nfunction nullFunc_vidddiii(x) {\n abortFnPtrError(x, \"vidddiii\");\n}\nfunction nullFunc_vidi(x) {\n abortFnPtrError(x, \"vidi\");\n}\nfunction nullFunc_vii(x) {\n abortFnPtrError(x, \"vii\");\n}\nfunction nullFunc_viid(x) {\n abortFnPtrError(x, \"viid\");\n}\nfunction nullFunc_viii(x) {\n abortFnPtrError(x, \"viii\");\n}\nfunction nullFunc_viiidd(x) {\n abortFnPtrError(x, \"viiidd\");\n}\nfunction nullFunc_viiii(x) {\n abortFnPtrError(x, \"viiii\");\n}\nfunction nullFunc_viiiii(x) {\n abortFnPtrError(x, \"viiiii\");\n}\nfunction nullFunc_viiiiii(x) {\n abortFnPtrError(x, \"viiiiii\");\n}\nfunction nullFunc_viiiiiii(x) {\n abortFnPtrError(x, \"viiiiiii\");\n}\nfunction nullFunc_viiiiiiii(x) {\n abortFnPtrError(x, \"viiiiiiii\");\n}\nfunction nullFunc_viiiiiiiii(x) {\n abortFnPtrError(x, \"viiiiiiiii\");\n}\nfunction nullFunc_viiiiiiiiii(x) {\n abortFnPtrError(x, \"viiiiiiiiii\");\n}\nfunction nullFunc_viiiiiiiiiii(x) {\n abortFnPtrError(x, \"viiiiiiiiiii\");\n}\nfunction nullFunc_viiiiiiiiiiii(x) {\n abortFnPtrError(x, \"viiiiiiiiiiii\");\n}\nfunction nullFunc_viiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"viiiiiiiiiiiii\");\n}\nfunction nullFunc_viiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"viiiiiiiiiiiiii\");\n}\nfunction nullFunc_viiiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"viiiiiiiiiiiiiii\");\n}\nfunction nullFunc_viiiiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"viiiiiiiiiiiiiiii\");\n}\nfunction nullFunc_viiiiiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"viiiiiiiiiiiiiiiii\");\n}\nfunction nullFunc_viiiiiiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"viiiiiiiiiiiiiiiiii\");\n}\nfunction nullFunc_viiiiiiiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"viiiiiiiiiiiiiiiiiii\");\n}\nfunction nullFunc_viiiiiiiiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"viiiiiiiiiiiiiiiiiiii\");\n}\nfunction nullFunc_viijii(x) {\n abortFnPtrError(x, \"viijii\");\n}\nfunction nullFunc_vij(x) {\n abortFnPtrError(x, \"vij\");\n}\nfunction nullFunc_viji(x) {\n abortFnPtrError(x, \"viji\");\n}\nfunction nullFunc_vijjii(x) {\n abortFnPtrError(x, \"vijjii\");\n}\nfunction invoke_dd(index, a1) {\n var sp = stackSave();\n try {\n return dynCall_dd(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_di(index, a1) {\n var sp = stackSave();\n try {\n return dynCall_di(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_i(index) {\n var sp = stackSave();\n try {\n return dynCall_i(index);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_ii(index, a1) {\n var sp = stackSave();\n try {\n return dynCall_ii(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_iidi(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n return dynCall_iidi(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_iii(index, a1, a2) {\n var sp = stackSave();\n try {\n return dynCall_iii(index, a1, a2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_iiii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n return dynCall_iiii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_iiiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n return dynCall_iiiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_iiiiii(index, a1, a2, a3, a4, a5) {\n var sp = stackSave();\n try {\n return dynCall_iiiiii(index, a1, a2, a3, a4, a5);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_v(index) {\n var sp = stackSave();\n try {\n dynCall_v(index);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_vi(index, a1) {\n var sp = stackSave();\n try {\n dynCall_vi(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_vii(index, a1, a2) {\n var sp = stackSave();\n try {\n dynCall_vii(index, a1, a2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_viid(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n dynCall_viid(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_viii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n dynCall_viii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_viiidd(index, a1, a2, a3, a4, a5) {\n var sp = stackSave();\n try {\n dynCall_viiidd(index, a1, a2, a3, a4, a5);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_viiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n dynCall_viiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_viiiii(index, a1, a2, a3, a4, a5) {\n var sp = stackSave();\n try {\n dynCall_viiiii(index, a1, a2, a3, a4, a5);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nvar asmGlobalArg = {};\nvar asmLibraryArg = {\n f: setTempRet0,\n d: getTempRet0,\n b: abortStackOverflow,\n kb: nullFunc_dd,\n $a: nullFunc_ddd,\n Qa: nullFunc_di,\n Ga: nullFunc_did,\n Hd: nullFunc_i,\n Dd: nullFunc_ii,\n xd: nullFunc_iidi,\n rd: nullFunc_iidiiii,\n hd: nullFunc_iii,\n ad: nullFunc_iiii,\n Vc: nullFunc_iiiid,\n Rc: nullFunc_iiiii,\n Ic: nullFunc_iiiiid,\n Dc: nullFunc_iiiiii,\n xc: nullFunc_iiiiiid,\n rc: nullFunc_iiiiiii,\n lc: nullFunc_iiiiiiii,\n gc: nullFunc_iiiiiiiii,\n $b: nullFunc_iiiiiiiiii,\n Vb: nullFunc_iiiiiiiiiii,\n Sb: nullFunc_iiiiiiiiiiii,\n Rb: nullFunc_iiiiiiiiiiiii,\n Qb: nullFunc_iiiiiiiiiiiiii,\n Pb: nullFunc_iiiiiiiiiiiiiii,\n Ob: nullFunc_iiiiiiiiiiiiiiii,\n Nb: nullFunc_iiiiiiiiiiiiiiiii,\n Mb: nullFunc_iiiiiiiiiiiiiiiiii,\n Lb: nullFunc_iiiiiiiiiiiiiiiiiii,\n Kb: nullFunc_iiiiiiiiiiiiiiiiiiii,\n Jb: nullFunc_iiiiiiiiiiiiiiiiiiiii,\n Ib: nullFunc_iiiiij,\n Hb: nullFunc_iiiij,\n Gb: nullFunc_iiiijj,\n Fb: nullFunc_iiiji,\n Eb: nullFunc_iiijj,\n Db: nullFunc_iiji,\n Cb: nullFunc_iijijji,\n Bb: nullFunc_iijijjji,\n Ab: nullFunc_jii,\n zb: nullFunc_jiii,\n yb: nullFunc_jiiii,\n xb: nullFunc_jiiiii,\n wb: nullFunc_jiij,\n vb: nullFunc_jij,\n ub: nullFunc_jiji,\n tb: nullFunc_jijii,\n sb: nullFunc_jijiii,\n rb: nullFunc_jijiiii,\n qb: nullFunc_jijiiiii,\n pb: nullFunc_jijij,\n ob: nullFunc_jijj,\n nb: nullFunc_jijji,\n mb: nullFunc_jijjiii,\n lb: nullFunc_v,\n jb: nullFunc_vi,\n ib: nullFunc_vid,\n hb: nullFunc_vidddiii,\n gb: nullFunc_vidi,\n fb: nullFunc_vii,\n eb: nullFunc_viid,\n db: nullFunc_viii,\n cb: nullFunc_viiidd,\n bb: nullFunc_viiii,\n ab: nullFunc_viiiii,\n _a: nullFunc_viiiiii,\n Za: nullFunc_viiiiiii,\n Ya: nullFunc_viiiiiiii,\n Xa: nullFunc_viiiiiiiii,\n Wa: nullFunc_viiiiiiiiii,\n Va: nullFunc_viiiiiiiiiii,\n Ua: nullFunc_viiiiiiiiiiii,\n Ta: nullFunc_viiiiiiiiiiiii,\n Sa: nullFunc_viiiiiiiiiiiiii,\n Ra: nullFunc_viiiiiiiiiiiiiii,\n Pa: nullFunc_viiiiiiiiiiiiiiii,\n Oa: nullFunc_viiiiiiiiiiiiiiiii,\n Na: nullFunc_viiiiiiiiiiiiiiiiii,\n Ma: nullFunc_viiiiiiiiiiiiiiiiiii,\n La: nullFunc_viiiiiiiiiiiiiiiiiiii,\n Ka: nullFunc_viijii,\n Ja: nullFunc_vij,\n Ia: nullFunc_viji,\n Ha: nullFunc_vijjii,\n H: invoke_dd,\n W: invoke_di,\n y: invoke_i,\n k: invoke_ii,\n Fa: invoke_iidi,\n i: invoke_iii,\n r: invoke_iiii,\n N: invoke_iiiii,\n ha: invoke_iiiiii,\n x: invoke_v,\n j: invoke_vi,\n o: invoke_vii,\n na: invoke_viid,\n l: invoke_viii,\n A: invoke_viiidd,\n M: invoke_viiii,\n ga: invoke_viiiii,\n Gd: _SDL_GL_SetAttribute,\n L: _SDL_GL_SwapBuffers,\n Fd: _SDL_GetError,\n Ed: _SDL_Init,\n K: _SDL_Quit,\n g: ___assert_fail,\n Cd: ___buildEnvironment,\n Bd: ___clock_gettime,\n n: ___cxa_allocate_exception,\n Ad: ___cxa_pure_virtual,\n m: ___cxa_throw,\n zd: ___cxa_uncaught_exceptions,\n ma: ___lock,\n yd: ___map_file,\n Ea: ___setErrNo,\n la: ___syscall10,\n wd: ___syscall114,\n vd: ___syscall12,\n Da: ___syscall140,\n ud: ___syscall145,\n Ca: ___syscall146,\n td: ___syscall183,\n sd: ___syscall191,\n Ba: ___syscall195,\n qd: ___syscall196,\n pd: ___syscall197,\n od: ___syscall199,\n nd: ___syscall20,\n md: ___syscall201,\n ld: ___syscall220,\n V: ___syscall221,\n kd: ___syscall3,\n jd: ___syscall33,\n id: ___syscall340,\n gd: ___syscall38,\n fd: ___syscall39,\n ed: ___syscall4,\n Aa: ___syscall40,\n dd: ___syscall41,\n cd: ___syscall42,\n fa: ___syscall5,\n ea: ___syscall54,\n R: ___syscall6,\n bd: ___syscall63,\n $c: ___syscall77,\n _c: ___syscall83,\n Zc: ___syscall85,\n Yc: ___syscall91,\n U: ___unlock,\n $: __exit,\n h: _abort,\n Xc: _atexit,\n Wc: _ceil,\n v: _clock,\n Uc: _difftime,\n Tc: _dlclose,\n za: _dlerror,\n da: _dlopen,\n ka: _dlsym,\n c: _emscripten_asm_const_d,\n ya: _emscripten_asm_const_i,\n Q: _emscripten_asm_const_ii,\n Sc: _emscripten_asm_const_iii,\n xa: _emscripten_asm_const_iiii,\n Qc: _emscripten_asm_const_iiiii,\n Pc: _emscripten_get_canvas_size,\n Oc: _emscripten_get_heap_size,\n Nc: _emscripten_longjmp,\n Mc: _emscripten_memcpy_big,\n Lc: _emscripten_resize_heap,\n ja: _execve,\n F: _exit,\n Kc: _fabs,\n Jc: _floor,\n Hc: _fork,\n E: _getenv,\n wa: _getpwnam,\n Gc: _getpwuid,\n ca: _gettimeofday,\n p: _glBegin,\n Fc: _glBlendFunc,\n Ec: _glClear,\n va: _glClearColor,\n w: _glColor3f,\n Cc: _glDepthFunc,\n C: _glDisable,\n z: _glEnable,\n q: _glEnd,\n Bc: _glFinish,\n Ac: _glFlush,\n zc: _glFrustum,\n yc: _glGetFloatv,\n ua: _glGetIntegerv,\n _: _glLightfv,\n B: _glLineWidth,\n T: _glLoadIdentity,\n G: _glMatrixMode,\n wc: _glNormal3f,\n vc: _glOrtho,\n uc: _glPolygonMode,\n tc: _glPolygonOffset,\n ba: _glPopMatrix,\n aa: _glPushMatrix,\n sc: _glRotated,\n ta: _glScaled,\n qc: _glScalef,\n pc: _glShadeModel,\n sa: _glTranslated,\n ra: _glTranslatef,\n D: _glVertex3f,\n oc: _glViewport,\n nc: _glinit,\n mc: _kill,\n Tb: _llvm_bswap_i64,\n S: _llvm_cos_f64,\n kc: _llvm_exp2_f64,\n u: _llvm_log10_f64,\n jc: _llvm_log2_f64,\n P: _llvm_sin_f64,\n s: _llvm_stackrestore,\n t: _llvm_stacksave,\n Z: _llvm_trap,\n J: _llvm_trunc_f64,\n ic: _localtime,\n hc: _localtime_r,\n e: _longjmp,\n fc: _mp_js_hook,\n O: _mp_js_ticks_ms,\n ec: _nanosleep,\n ia: _popen,\n dc: _pthread_cond_wait,\n I: _raise,\n cc: _setenv,\n bc: _sigaction,\n ac: _sigemptyset,\n _b: _sqrt,\n Zb: _strftime,\n Yb: _strftime_l,\n qa: _sysconf,\n Y: _system,\n X: _time,\n Xb: _unsetenv,\n pa: _usleep,\n Wb: _utimes,\n oa: _waitpid,\n Ub: abortOnCannotGrowMemory,\n a: DYNAMICTOP_PTR,\n};\nvar asm = Module[\"asm\"](asmGlobalArg, asmLibraryArg, buffer);\nModule[\"asm\"] = asm;\nvar __ZN4giac13giac_rendererEPKc = (Module[\"__ZN4giac13giac_rendererEPKc\"] =\n function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Id\"].apply(null, arguments);\n });\nvar __ZSt18uncaught_exceptionv = (Module[\"__ZSt18uncaught_exceptionv\"] =\n function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Jd\"].apply(null, arguments);\n });\nvar ___errno_location = (Module[\"___errno_location\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Kd\"].apply(null, arguments);\n});\nvar __get_daylight = (Module[\"__get_daylight\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Ld\"].apply(null, arguments);\n});\nvar __get_environ = (Module[\"__get_environ\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Md\"].apply(null, arguments);\n});\nvar __get_timezone = (Module[\"__get_timezone\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Nd\"].apply(null, arguments);\n});\nvar __get_tzname = (Module[\"__get_tzname\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Od\"].apply(null, arguments);\n});\nvar _caseval = (Module[\"_caseval\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Pd\"].apply(null, arguments);\n});\nvar _fflush = (Module[\"_fflush\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Qd\"].apply(null, arguments);\n});\nvar _free = (Module[\"_free\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Rd\"].apply(null, arguments);\n});\nvar _llvm_bswap_i32 = (Module[\"_llvm_bswap_i32\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Sd\"].apply(null, arguments);\n});\nvar _malloc = (Module[\"_malloc\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Td\"].apply(null, arguments);\n});\nvar _memcpy = (Module[\"_memcpy\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Ud\"].apply(null, arguments);\n});\nvar _memset = (Module[\"_memset\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Vd\"].apply(null, arguments);\n});\nvar _mp_js_do_str = (Module[\"_mp_js_do_str\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Wd\"].apply(null, arguments);\n});\nvar _mp_js_init = (Module[\"_mp_js_init\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Xd\"].apply(null, arguments);\n});\nvar _nws_caseval = (Module[\"_nws_caseval\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Yd\"].apply(null, arguments);\n});\nvar _quickjs_ck_eval = (Module[\"_quickjs_ck_eval\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Zd\"].apply(null, arguments);\n});\nvar _setThrew = (Module[\"_setThrew\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"_d\"].apply(null, arguments);\n});\nvar establishStackSpace = (Module[\"establishStackSpace\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"qe\"].apply(null, arguments);\n});\nvar globalCtors = (Module[\"globalCtors\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"re\"].apply(null, arguments);\n});\nvar stackAlloc = (Module[\"stackAlloc\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"se\"].apply(null, arguments);\n});\nvar stackRestore = (Module[\"stackRestore\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"te\"].apply(null, arguments);\n});\nvar stackSave = (Module[\"stackSave\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"ue\"].apply(null, arguments);\n});\nvar dynCall_dd = (Module[\"dynCall_dd\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"$d\"].apply(null, arguments);\n});\nvar dynCall_di = (Module[\"dynCall_di\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"ae\"].apply(null, arguments);\n});\nvar dynCall_i = (Module[\"dynCall_i\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"be\"].apply(null, arguments);\n});\nvar dynCall_ii = (Module[\"dynCall_ii\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"ce\"].apply(null, arguments);\n});\nvar dynCall_iidi = (Module[\"dynCall_iidi\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"de\"].apply(null, arguments);\n});\nvar dynCall_iii = (Module[\"dynCall_iii\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"ee\"].apply(null, arguments);\n});\nvar dynCall_iiii = (Module[\"dynCall_iiii\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"fe\"].apply(null, arguments);\n});\nvar dynCall_iiiii = (Module[\"dynCall_iiiii\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"ge\"].apply(null, arguments);\n});\nvar dynCall_iiiiii = (Module[\"dynCall_iiiiii\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"he\"].apply(null, arguments);\n});\nvar dynCall_v = (Module[\"dynCall_v\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"ie\"].apply(null, arguments);\n});\nvar dynCall_vi = (Module[\"dynCall_vi\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"je\"].apply(null, arguments);\n});\nvar dynCall_vii = (Module[\"dynCall_vii\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"ke\"].apply(null, arguments);\n});\nvar dynCall_viid = (Module[\"dynCall_viid\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"le\"].apply(null, arguments);\n});\nvar dynCall_viii = (Module[\"dynCall_viii\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"me\"].apply(null, arguments);\n});\nvar dynCall_viiidd = (Module[\"dynCall_viiidd\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"ne\"].apply(null, arguments);\n});\nvar dynCall_viiii = (Module[\"dynCall_viiii\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"oe\"].apply(null, arguments);\n});\nvar dynCall_viiiii = (Module[\"dynCall_viiiii\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"pe\"].apply(null, arguments);\n});\nModule[\"asm\"] = asm;\nif (!Object.getOwnPropertyDescriptor(Module, \"intArrayFromString\"))\n Module[\"intArrayFromString\"] = function () {\n abort(\n \"'intArrayFromString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"intArrayToString\"))\n Module[\"intArrayToString\"] = function () {\n abort(\n \"'intArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nModule[\"ccall\"] = ccall;\nModule[\"cwrap\"] = cwrap;\nif (!Object.getOwnPropertyDescriptor(Module, \"setValue\"))\n Module[\"setValue\"] = function () {\n abort(\n \"'setValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"getValue\"))\n Module[\"getValue\"] = function () {\n abort(\n \"'getValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"allocate\"))\n Module[\"allocate\"] = function () {\n abort(\n \"'allocate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"getMemory\"))\n Module[\"getMemory\"] = function () {\n abort(\n \"'getMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"AsciiToString\"))\n Module[\"AsciiToString\"] = function () {\n abort(\n \"'AsciiToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"stringToAscii\"))\n Module[\"stringToAscii\"] = function () {\n abort(\n \"'stringToAscii' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"UTF8ArrayToString\"))\n Module[\"UTF8ArrayToString\"] = function () {\n abort(\n \"'UTF8ArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"UTF8ToString\"))\n Module[\"UTF8ToString\"] = function () {\n abort(\n \"'UTF8ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"stringToUTF8Array\"))\n Module[\"stringToUTF8Array\"] = function () {\n abort(\n \"'stringToUTF8Array' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"stringToUTF8\"))\n Module[\"stringToUTF8\"] = function () {\n abort(\n \"'stringToUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"lengthBytesUTF8\"))\n Module[\"lengthBytesUTF8\"] = function () {\n abort(\n \"'lengthBytesUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"UTF16ToString\"))\n Module[\"UTF16ToString\"] = function () {\n abort(\n \"'UTF16ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"stringToUTF16\"))\n Module[\"stringToUTF16\"] = function () {\n abort(\n \"'stringToUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"lengthBytesUTF16\"))\n Module[\"lengthBytesUTF16\"] = function () {\n abort(\n \"'lengthBytesUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"UTF32ToString\"))\n Module[\"UTF32ToString\"] = function () {\n abort(\n \"'UTF32ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"stringToUTF32\"))\n Module[\"stringToUTF32\"] = function () {\n abort(\n \"'stringToUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"lengthBytesUTF32\"))\n Module[\"lengthBytesUTF32\"] = function () {\n abort(\n \"'lengthBytesUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"allocateUTF8\"))\n Module[\"allocateUTF8\"] = function () {\n abort(\n \"'allocateUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"stackTrace\"))\n Module[\"stackTrace\"] = function () {\n abort(\n \"'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"addOnPreRun\"))\n Module[\"addOnPreRun\"] = function () {\n abort(\n \"'addOnPreRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"addOnInit\"))\n Module[\"addOnInit\"] = function () {\n abort(\n \"'addOnInit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"addOnPreMain\"))\n Module[\"addOnPreMain\"] = function () {\n abort(\n \"'addOnPreMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"addOnExit\"))\n Module[\"addOnExit\"] = function () {\n abort(\n \"'addOnExit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"addOnPostRun\"))\n Module[\"addOnPostRun\"] = function () {\n abort(\n \"'addOnPostRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nModule[\"writeStringToMemory\"] = writeStringToMemory;\nif (!Object.getOwnPropertyDescriptor(Module, \"writeArrayToMemory\"))\n Module[\"writeArrayToMemory\"] = function () {\n abort(\n \"'writeArrayToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"writeAsciiToMemory\"))\n Module[\"writeAsciiToMemory\"] = function () {\n abort(\n \"'writeAsciiToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"addRunDependency\"))\n Module[\"addRunDependency\"] = function () {\n abort(\n \"'addRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"removeRunDependency\"))\n Module[\"removeRunDependency\"] = function () {\n abort(\n \"'removeRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"ENV\"))\n Module[\"ENV\"] = function () {\n abort(\n \"'ENV' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"FS\"))\n Module[\"FS\"] = function () {\n abort(\n \"'FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"FS_createFolder\"))\n Module[\"FS_createFolder\"] = function () {\n abort(\n \"'FS_createFolder' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"FS_createPath\"))\n Module[\"FS_createPath\"] = function () {\n abort(\n \"'FS_createPath' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"FS_createDataFile\"))\n Module[\"FS_createDataFile\"] = function () {\n abort(\n \"'FS_createDataFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"FS_createPreloadedFile\"))\n Module[\"FS_createPreloadedFile\"] = function () {\n abort(\n \"'FS_createPreloadedFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"FS_createLazyFile\"))\n Module[\"FS_createLazyFile\"] = function () {\n abort(\n \"'FS_createLazyFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"FS_createLink\"))\n Module[\"FS_createLink\"] = function () {\n abort(\n \"'FS_createLink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"FS_createDevice\"))\n Module[\"FS_createDevice\"] = function () {\n abort(\n \"'FS_createDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"FS_unlink\"))\n Module[\"FS_unlink\"] = function () {\n abort(\n \"'FS_unlink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"GL\"))\n Module[\"GL\"] = function () {\n abort(\n \"'GL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"dynamicAlloc\"))\n Module[\"dynamicAlloc\"] = function () {\n abort(\n \"'dynamicAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"warnOnce\"))\n Module[\"warnOnce\"] = function () {\n abort(\n \"'warnOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"loadDynamicLibrary\"))\n Module[\"loadDynamicLibrary\"] = function () {\n abort(\n \"'loadDynamicLibrary' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"loadWebAssemblyModule\"))\n Module[\"loadWebAssemblyModule\"] = function () {\n abort(\n \"'loadWebAssemblyModule' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"getLEB\"))\n Module[\"getLEB\"] = function () {\n abort(\n \"'getLEB' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"getFunctionTables\"))\n Module[\"getFunctionTables\"] = function () {\n abort(\n \"'getFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"alignFunctionTables\"))\n Module[\"alignFunctionTables\"] = function () {\n abort(\n \"'alignFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"registerFunctions\"))\n Module[\"registerFunctions\"] = function () {\n abort(\n \"'registerFunctions' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"addFunction\"))\n Module[\"addFunction\"] = function () {\n abort(\n \"'addFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"removeFunction\"))\n Module[\"removeFunction\"] = function () {\n abort(\n \"'removeFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"getFuncWrapper\"))\n Module[\"getFuncWrapper\"] = function () {\n abort(\n \"'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"prettyPrint\"))\n Module[\"prettyPrint\"] = function () {\n abort(\n \"'prettyPrint' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"makeBigInt\"))\n Module[\"makeBigInt\"] = function () {\n abort(\n \"'makeBigInt' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"dynCall\"))\n Module[\"dynCall\"] = function () {\n abort(\n \"'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"getCompilerSetting\"))\n Module[\"getCompilerSetting\"] = function () {\n abort(\n \"'getCompilerSetting' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"stackSave\"))\n Module[\"stackSave\"] = function () {\n abort(\n \"'stackSave' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"stackRestore\"))\n Module[\"stackRestore\"] = function () {\n abort(\n \"'stackRestore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"stackAlloc\"))\n Module[\"stackAlloc\"] = function () {\n abort(\n \"'stackAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"establishStackSpace\"))\n Module[\"establishStackSpace\"] = function () {\n abort(\n \"'establishStackSpace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"print\"))\n Module[\"print\"] = function () {\n abort(\n \"'print' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"printErr\"))\n Module[\"printErr\"] = function () {\n abort(\n \"'printErr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"getTempRet0\"))\n Module[\"getTempRet0\"] = function () {\n abort(\n \"'getTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"setTempRet0\"))\n Module[\"setTempRet0\"] = function () {\n abort(\n \"'setTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"callMain\"))\n Module[\"callMain\"] = function () {\n abort(\n \"'callMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nModule[\"Pointer_stringify\"] = Pointer_stringify;\nif (!Object.getOwnPropertyDescriptor(Module, \"intArrayFromBase64\"))\n Module[\"intArrayFromBase64\"] = function () {\n abort(\n \"'intArrayFromBase64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"tryParseAsDataURI\"))\n Module[\"tryParseAsDataURI\"] = function () {\n abort(\n \"'tryParseAsDataURI' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"ALLOC_NORMAL\"))\n Object.defineProperty(Module, \"ALLOC_NORMAL\", {\n get: function () {\n abort(\n \"'ALLOC_NORMAL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n },\n });\nif (!Object.getOwnPropertyDescriptor(Module, \"ALLOC_STACK\"))\n Object.defineProperty(Module, \"ALLOC_STACK\", {\n get: function () {\n abort(\n \"'ALLOC_STACK' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n },\n });\nif (!Object.getOwnPropertyDescriptor(Module, \"ALLOC_DYNAMIC\"))\n Object.defineProperty(Module, \"ALLOC_DYNAMIC\", {\n get: function () {\n abort(\n \"'ALLOC_DYNAMIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n },\n });\nif (!Object.getOwnPropertyDescriptor(Module, \"ALLOC_NONE\"))\n Object.defineProperty(Module, \"ALLOC_NONE\", {\n get: function () {\n abort(\n \"'ALLOC_NONE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n },\n });\nfunction ExitStatus(status) {\n this.name = \"ExitStatus\";\n this.message = \"Program terminated with exit(\" + status + \")\";\n this.status = status;\n}\ndependenciesFulfilled = function runCaller() {\n if (!Module[\"calledRun\"]) run();\n if (!Module[\"calledRun\"]) dependenciesFulfilled = runCaller;\n};\nfunction run(args) {\n args = args || arguments_;\n if (runDependencies > 0) {\n return;\n }\n writeStackCookie();\n preRun();\n if (runDependencies > 0) return;\n if (Module[\"calledRun\"]) return;\n function doRun() {\n if (Module[\"calledRun\"]) return;\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n assert(\n !Module[\"_main\"],\n 'compiled without a main, but one is present. if you added it from JS, use Module[\"onRuntimeInitialized\"]',\n );\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function () {\n setTimeout(function () {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n checkStackCookie();\n}\nModule[\"run\"] = run;\nfunction checkUnflushedContent() {\n var print = out;\n var printErr = err;\n var has = false;\n out = err = function (x) {\n has = true;\n };\n try {\n var flush = Module[\"_fflush\"];\n if (flush) flush(0);\n [\"stdout\", \"stderr\"].forEach(function (name) {\n var info = FS.analyzePath(\"/dev/\" + name);\n if (!info) return;\n var stream = info.object;\n var rdev = stream.rdev;\n var tty = TTY.ttys[rdev];\n if (tty && tty.output && tty.output.length) {\n has = true;\n }\n });\n } catch (e) {}\n out = print;\n err = printErr;\n if (has) {\n warnOnce(\n \"stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc.\",\n );\n }\n}\nfunction exit(status, implicit) {\n checkUnflushedContent();\n if (implicit && Module[\"noExitRuntime\"] && status === 0) {\n return;\n }\n if (Module[\"noExitRuntime\"]) {\n if (!implicit) {\n err(\n \"exit(\" +\n status +\n \") called, but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)\",\n );\n }\n } else {\n ABORT = true;\n EXITSTATUS = status;\n exitRuntime();\n if (Module[\"onExit\"]) Module[\"onExit\"](status);\n }\n quit_(status, new ExitStatus(status));\n}\nvar abortDecorators = [];\nfunction abort(what) {\n if (Module[\"onAbort\"]) {\n Module[\"onAbort\"](what);\n }\n what += \"\";\n out(what);\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n var extra = \"\";\n var output = \"abort(\" + what + \") at \" + stackTrace() + extra;\n if (abortDecorators) {\n abortDecorators.forEach(function (decorator) {\n output = decorator(output, what);\n });\n }\n throw output;\n}\nModule[\"abort\"] = abort;\nif (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\")\n Module[\"preInit\"] = [Module[\"preInit\"]];\n while (Module[\"preInit\"].length > 0) {\n Module[\"preInit\"].pop()();\n }\n}\nModule[\"noExitRuntime\"] = true;\nexport default Module;\n"],"names":["UI","disable3d","tableaucm","debug","Datestart","Date","now","ready","colorinit","usemathjax","prettyprint","histcount","selection","langue","calc","xwaspy_shift","gr2d_ncanvas","initconfigstring","python_mode","python_indent","warnpy","window","innerWidth","Module","args","console","log","error","key","moduleOverrides","hasOwnProperty","ENVIRONMENT_IS_WEB","ENVIRONMENT_IS_WORKER","ENVIRONMENT_IS_NODE","ENVIRONMENT_HAS_NODE","ENVIRONMENT_IS_SHELL","arguments_","thisProgram","quit_","status","toThrow","importScripts","process","versions","node","Error","read_","readAsync","readBinary","nodeFS","nodePath","scriptDirectory","__dirname","filename","binary","ret","tryParseAsDataURI","toString","buffer","Uint8Array","assert","length","replace","slice","module","ex","ExitStatus","abort","read","f","data","intArrayToString","readbuffer","scriptArgs","arguments","quit","print","warn","printErr","self","location","href","document","currentScript","src","indexOf","substr","lastIndexOf","url","xhr","XMLHttpRequest","open","send","responseText","err","responseType","response","onload","onerror","out","bind","dynamicAlloc","size","DYNAMICTOP_PTR","HEAP32","end","_emscripten_get_heap_size","getNativeTypeSize","type","bits","parseInt","warnOnce","text","shown","Object","getOwnPropertyDescriptor","defineProperty","get","stackSave","stackRestore","stackAlloc","wasmBinary","wasmMemory","asm2wasmImports","x","y","debugger","tempRet0","Array","setTempRet0","value","setValue","ptr","noSafe","charAt","HEAP8","HEAP16","tempI64","tempDouble","Math_abs","Math_min","Math_floor","Math_ceil","HEAPF32","HEAPF64","WebAssembly","ABORT","condition","ccall","ident","returnType","argTypes","opts","toC","string","str","len","stringToUTF8","array","arr","writeArrayToMemory","func","getCFunc","cArgs","stack","i","converter","apply","async","UTF8ToString","Boolean","convertReturnValue","allocate","slab","types","allocator","zeroinit","singleType","_malloc","Math","max","stop","subarray","HEAPU8","set","typeSize","previousType","curr","getMemory","runtimeInitialized","UTF8Decoder","TextDecoder","undefined","UTF8ArrayToString","u8Array","idx","maxBytesToRead","endIdx","endPtr","decode","u0","u1","u2","String","fromCharCode","ch","stringToUTF8Array","outU8Array","outIdx","maxBytesToWrite","startIdx","u","charCodeAt","outPtr","lengthBytesUTF8","writeAsciiToMemory","dontAddNull","HEAPU16","HEAPU32","WASM_PAGE_SIZE","STACK_MAX","DYNAMIC_BASE","TOTAL_STACK","INITIAL_TOTAL_MEMORY","checkStackCookie","cookie1","cookie2","Int32Array","Float64Array","prototype","Memory","initial","maximum","byteLength","Int8Array","Int16Array","Uint16Array","Uint32Array","Float32Array","abortFnPtrError","sig","callRuntimeCallbacks","callbacks","callback","shift","arg","__ATPRERUN__","__ATINIT__","__ATMAIN__","__ATEXIT__","__ATPOSTRUN__","runtimeExited","addOnPreRun","cb","unshift","addOnPostRun","imul","fround","clz32","trunc","abs","Math_cos","cos","Math_sin","sin","Math_sqrt","sqrt","ceil","floor","min","Math_trunc","runDependencies","runDependencyWatcher","dependenciesFulfilled","runDependencyTracking","getUniqueRunDependency","id","orig","random","addRunDependency","setInterval","clearInterval","dep","removeRunDependency","dataURIPrefix","isDataURI","startsWith","path","wasmBinaryFile","URL","getBinary","createWasm","env","info","global","NaN","Infinity","asm2wasm","receiveInstance","instance","exports","trueModule","receiveInstantiatedSource","output","instantiateArrayBuffer","receiver","fetch","Promise","resolve","reject","credentials","then","catch","instantiate","reason","e","instantiateStreaming","instantiateAsync","providedBuffer","Table","element","ASM_CONSTS","worker","ua","navigator","userAgent","old_ie","new_ie","$0","$1","$2","req","bufsize","overrideMimeType","s","writeStringToMemory","statusText","msg","tst","prompt","intArrayFromString","assistant_matr_maxrows","assistant_matr_maxcols","sheet_recompute","open_sheet","sheet_set_ij","alert","hw","svgwidth","add_evalf","js_bigint","$3","nchannels","nDataBytes","data_size","j","audioCtx","AudioContext","webkitAudioContext","SoundArrayBuffer","createBuffer","sampleRate","dataHeap","result","byteOffset","v","getChannelData","source","createBufferSource","connect","destination","start","add_python_output","clean_for_html","tmp","getElementById","style","display","set_config_width","innerHTML","scrollTop","python_output","push","globalCtors","demangleAll","stackTrace","js","jsStackTrace","___setErrNo","PATH","splitPath","exec","normalizeArray","parts","allowAboveRoot","up","last","splice","normalize","isAbsolute","trailingSlash","split","filter","p","join","dirname","root","dir","basename","lastSlash","extname","paths","call","join2","l","r","PATH_FS","resolvedPath","resolvedAbsolute","FS","cwd","TypeError","relative","from","to","trim","fromParts","toParts","samePartsLength","outputParts","concat","TTY","ttys","init","shutdown","register","dev","ops","input","registerDevice","stream_ops","stream","tty","rdev","ErrnoError","seekable","close","flush","offset","pos","get_char","bytesRead","timestamp","write","put_char","default_tty_ops","buf","Buffer","alloc","isPosixPlatform","platform","fd","stdin","usingDevice","fs","openSync","readSync","closeSync","readline","val","default_tty1_ops","MEMFS","ops_table","mount","createNode","parent","name","mode","isBlkdev","isFIFO","getattr","node_ops","setattr","lookup","mknod","rename","unlink","rmdir","readdir","symlink","llseek","file","mmap","msync","link","readlink","chrdev","chrdev_stream_ops","isDir","contents","isFile","usedBytes","isLink","isChrdev","getFileDataAsRegularArray","getFileDataAsTypedArray","expandFileStorage","newCapacity","prevCapacity","oldContents","resizeFileStorage","newSize","ArrayBuffer","attr","ino","nlink","uid","gid","atime","mtime","ctime","blksize","blocks","genericErrors","old_node","new_dir","new_name","new_node","lookupNode","entries","newname","oldpath","position","canOwn","whence","prot","flags","allocated","fromHeap","mmapFlags","IDBFS","dbs","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","DB_VERSION","DB_STORE_NAME","syncfs","populate","getLocalSet","local","getRemoteSet","remote","dst","reconcile","getDB","db","onupgradeneeded","fileStore","target","transaction","objectStoreNames","contains","objectStore","createObjectStore","indexNames","createIndex","unique","onsuccess","this","preventDefault","isRealDir","toAbsolute","check","mountpoint","map","stat","pop","index","openKeyCursor","event","cursor","primaryKey","continue","loadLocalEntry","lookupPath","storeLocalEntry","entry","mkdir","writeFile","chmod","utime","removeLocalEntry","loadRemoteEntry","store","storeRemoteEntry","put","removeRemoteEntry","delete","total","create","keys","forEach","e2","remove","errored","done","oncomplete","sort","reverse","NODEFS","isWindows","staticInit","match","flagsForNodeMap","bufferFrom","arrayBuffer","getMode","lstatSync","code","errno","realPath","flagsForNode","newFlags","k","chmodSync","date","utimesSync","truncateSync","mkdirSync","writeFileSync","oldNode","newDir","newName","oldPath","newPath","renameSync","unlinkSync","rmdirSync","readdirSync","symlinkSync","readlinkSync","NODEJS_PATH","nfd","writeSync","fstatSync","WORKERFS","DIR_MODE","FILE_MODE","reader","FileReaderSync","createdParents","ensureParent","base","lastModifiedDate","obj","pack","files","getTime","chunk","ab","readAsArrayBuffer","ERRNO_MESSAGES","ERRNO_CODES","EPERM","ENOENT","ESRCH","EINTR","EIO","ENXIO","E2BIG","ENOEXEC","EBADF","ECHILD","EAGAIN","EWOULDBLOCK","ENOMEM","EACCES","EFAULT","ENOTBLK","EBUSY","EEXIST","EXDEV","ENODEV","ENOTDIR","EISDIR","EINVAL","ENFILE","EMFILE","ENOTTY","ETXTBSY","EFBIG","ENOSPC","ESPIPE","EROFS","EMLINK","EPIPE","EDOM","ERANGE","ENOMSG","EIDRM","ECHRNG","EL2NSYNC","EL3HLT","EL3RST","ELNRNG","EUNATCH","ENOCSI","EL2HLT","EDEADLK","ENOLCK","EBADE","EBADR","EXFULL","ENOANO","EBADRQC","EBADSLT","EDEADLOCK","EBFONT","ENOSTR","ENODATA","ETIME","ENOSR","ENONET","ENOPKG","EREMOTE","ENOLINK","EADV","ESRMNT","ECOMM","EPROTO","EMULTIHOP","EDOTDOT","EBADMSG","ENOTUNIQ","EBADFD","EREMCHG","ELIBACC","ELIBBAD","ELIBSCN","ELIBMAX","ELIBEXEC","ENOSYS","ENOTEMPTY","ENAMETOOLONG","ELOOP","EOPNOTSUPP","EPFNOSUPPORT","ECONNRESET","ENOBUFS","EAFNOSUPPORT","EPROTOTYPE","ENOTSOCK","ENOPROTOOPT","ESHUTDOWN","ECONNREFUSED","EADDRINUSE","ECONNABORTED","ENETUNREACH","ENETDOWN","ETIMEDOUT","EHOSTDOWN","EHOSTUNREACH","EINPROGRESS","EALREADY","EDESTADDRREQ","EMSGSIZE","EPROTONOSUPPORT","ESOCKTNOSUPPORT","EADDRNOTAVAIL","ENETRESET","EISCONN","ENOTCONN","ETOOMANYREFS","EUSERS","EDQUOT","ESTALE","ENOTSUP","ENOMEDIUM","EILSEQ","EOVERFLOW","ECANCELED","ENOTRECOVERABLE","EOWNERDEAD","ESTRPIPE","mounts","devices","streams","nextInode","nameTable","currentPath","initialized","ignorePermissions","trackingDelegate","tracking","openFlags","READ","WRITE","filesystems","syncFSRequests","handleFSError","defaults","follow_mount","recurse_count","current","current_path","islast","isMountpoint","mounted","follow","count","getPath","isRoot","hashName","parentid","hash","hashAddNode","name_next","hashRemoveNode","mayLookup","nodeName","FSNode","readMode","writeMode","defineProperties","isFolder","isDevice","destroyNode","isSocket","flagModes","rs","w","wx","xw","a","ax","xa","modeStringToFlags","flagsToPermissionString","flag","perms","nodePermissions","mayCreate","mayDelete","isdir","mayOpen","MAX_OPEN_FDS","nextfd","fd_start","fd_end","getStream","createStream","FSStream","object","isRead","isWrite","isAppend","newStream","closeStream","device","getDevice","major","minor","makedev","ma","mi","getMounts","m","completed","doCallback","pseudo","mountRoot","unmount","next","mkdirTree","dirs","d","mkdev","newpath","old_path","new_path","old_dir","old_dirname","new_dirname","old_name","message","dontFollow","lstat","lchmod","fchmod","chown","lchown","fchown","truncate","ftruncate","created","ungotten","readFiles","trackingFlags","isClosed","getdents","seeking","bytesWritten","munmap","ioctl","cmd","readFile","encoding","actualNumBytes","isView","chdir","createDefaultDirectories","createDefaultDevices","random_device","crypto","randomBuffer","getRandomValues","crypto_module","createDevice","createSpecialDirectories","createStandardStreams","stdout","stderr","ensureErrnoError","setErrno","writable","constructor","fflush","canRead","canWrite","joinPath","forceRelative","absolutePath","standardizePath","findObject","dontResolveLastLink","analyzePath","exists","parentExists","parentPath","parentObject","createFolder","createPath","part","createFile","properties","createDataFile","createLink","forceLoadFile","success","createLazyFile","LazyUint8Array","lengthKnown","chunks","chunkOffset","chunkSize","chunkNum","getter","setDataGetter","cacheLength","header","datalength","Number","getResponseHeader","hasByteServing","usesGzip","lazyArray","setRequestHeader","doXHR","_length","_chunkSize","fn","createPreloadedFile","dontCreateFile","preFinish","Browser","fullname","processData","byteArray","finish","handled","plugin","asyncLoad","DB_NAME","pathname","saveFilesToDB","openRequest","ok","fail","putRequest","loadFilesFromDB","getRequest","_emscripten_set_main_loop_timing","mainLoop","timingMode","timingValue","scheduler","timeUntilNextTick","tickStartTime","_emscripten_get_now","setTimeout","runner","method","requestAnimationFrame","setImmediate","setImmediates","emscriptenMainLoopMessageId","addEventListener","stopPropagation","postMessage","currentlyRunningMainloop","currentFrameNumber","queue","pause","resume","fps","simulateInfiniteLoop","noSetTiming","browserIterationFunc","thisMainLoopId","blocker","remainingBlockers","remaining","counted","updateStatus","GL","newRenderingFrameStarted","ctx","runIter","SDL","audio","queueNewAudioData","_emscripten_set_main_loop","expected","expectedBlockers","isFullscreen","pointerLock","moduleContextCreatedCallbacks","workers","initted","Blob","hasBlobConstructor","BlobBuilder","MozBlobBuilder","WebKitBlobBuilder","URLObject","webkitURL","noImageDecoding","imagePlugin","test","b","getMimetype","bb","append","getBlob","createObjectURL","img","Image","complete","canvas","createElement","width","height","getContext","drawImage","revokeObjectURL","audioPlugin","noAudioDecoding","Audio","BASE","leftchar","leftbits","PAD","encode64","safeSetTimeout","requestPointerLock","exitPointerLock","pointerLockChange","ev","createContext","useWebGL","setInModule","webGLContextAttributes","contextHandle","contextAttributes","antialias","alpha","majorVersion","attribute","GLctx","makeContextCurrent","destroyContext","fullscreenHandlersInstalled","lockPointer","resizeCanvas","requestFullscreen","vrDevice","fullscreenChange","canvasContainer","parentNode","exitFullscreen","setFullscreenCanvasSize","updateCanvasDimensions","insertBefore","removeChild","setWindowedCanvasSize","appendChild","Element","vrDisplay","requestFullScreen","nextRAF","fakeRequestAnimationFrame","delay","RAF","safeCallback","allowAsyncCallbacks","queuedAsyncCallbacks","pauseAsyncCallbacks","resumeAsyncCallbacks","safeRequestAnimationFrame","timeout","safeSetInterval","jpg","jpeg","png","bmp","ogg","wav","mp3","getUserMedia","getMovementX","getMovementY","getMouseWheelDelta","delta","detail","wheelDelta","deltaY","deltaMode","mouseX","mouseY","mouseMovementX","mouseMovementY","touches","lastTouches","calculateMouseEvent","rect","getBoundingClientRect","cw","scrollX","pageXOffset","scrollY","pageYOffset","touch","adjustedX","pageX","left","adjustedY","pageY","top","coords","identifier","noRunDep","resizeListeners","updateResizeListeners","listener","setCanvasSize","noUpdates","windowedWidth","windowedHeight","screen","wNative","hNative","widthNative","heightNative","h","round","factor","removeProperty","setProperty","wgetRequests","nextWgetRequestHandle","getNextWgetRequestHandle","handle","copyOnLock","discardOnLock","opaqueFrontBuffer","version","surfaces","canvasPool","events","fonts","audios","rwops","music","volume","mixerFrequency","mixerFormat","mixerNumChannels","mixerChunkSize","channelMinimumNumber","glAttributes","keyboardState","keyboardMap","canRequestFullscreen","isRequestingFullscreen","textInput","startTime","initFlags","buttonState","modState","DOMButtons","DOMEventToSDLEvent","TOUCH_DEFAULT_ID","eventHandler","eventHandlerContext","eventHandlerTemp","keyCodes","scanCodes","loadRect","updateRect","intersectionOfRects","first","second","leftX","leftY","rightX","rightY","checkPixelFormat","fmt","loadColorToCSSRGB","color","rgba","loadColorToCSSRGBA","translateColorToCSSRGBA","translateRGBAToCSSRGBA","g","translateRGBAToColor","makeSurface","usePageCanvas","rmask","gmask","bmask","amask","is_SDL_HWSURFACE","is_SDL_HWPALETTE","is_SDL_OPENGL","surf","pixelFormat","bpp","depth","stencil","locked","isFlagSet","copyIndexedColorData","surfData","rX","rY","rW","rH","colors","fullWidth","fullHeight","startX","startY","endX","endY","image","data32","colors32","freeSurface","refcountPointer","refcount","_free","blitSurface","srcrect","dstrect","scale","sr","dr","blitw","blith","srcData","dstData","clipRect","widthScale","heightScale","oldAlpha","globalAlpha","screenIsReadOnly","createImageData","getImageData","num","_SDL_LockSurface","downFingers","savedKeydown","receiveEvent","unpressAllPressedKeys","keyCode","firstTouch","mouseEventType","mouseEvent","button","clientX","clientY","changedTouches","deltaX","deviceID","unicode","keypressCharCode","charCode","visible","hidden","flushEventsToHandler","lookupKeyCodeForEvent","KeyboardEvent","DOM_KEY_LOCATION_RIGHT","handleEvent","down","pollEvent","joystickEventState","queryJoysticks","makeCEvent","_memcpy","scan","cStr","dx","dy","force","state","axis","joystickAxisValueConversion","visibilityEventID","makeFontString","fontName","estimateTextWidth","fontData","fontString","tempCtx","ttfContext","font","measureText","allocateChannels","numChannels","channels","setGetVolume","webAudioGainNode","setPannerPosition","z","webAudioPannerNode","playWebAudio","webAudioNode","webAudioAvailable","webAudio","resource","paused","decodedBuffer","onDecodeComplete","audioContext","loop","currentPosition","pauseWebAudio","duration","openAudioContext","fillWebAudioBufferFromHeap","heapPtr","sizeSamplesPerChannel","dstAudioBuffer","c","channelData","format","debugSurface","lastJoystickState","joystickNamePool","recordJoystickState","joystick","buttons","getJoystickButtonState","axes","getGamepad","prevState","getGamepads","fcn","webkitGamepads","mozGamepads","gamepads","webkitGetGamepads","deviceIndex","ENV","___buildEnvironment","environ","poolPtr","envPtr","called","languages","MAX_ENV_VALUES","strings","totalSize","line","_clock_gettime","clk_id","tp","dateNow","performance","___exception_infos","SYSCALLS","DEFAULT_POLLMASK","mappings","umask","calculateAt","dirfd","dirstream","doStat","doMsync","addr","doMkdir","doMknod","doReadlink","endChar","doAccess","amode","doDup","suggestFD","suggest","doReadv","iov","iovcnt","doWritev","varargs","getStr","getStreamFromFD","get64","low","high","getZero","___syscall202","which","PROCINFO","PIPEFS","BUCKET_BUFFER_SIZE","createPipe","pipe","buckets","roffset","rName","nextname","wName","rNode","wNode","readableStream","writableStream","readable_fd","writable_fd","poll","bucket","request","fsync","currentLength","toRead","totalRead","toRemove","currBucket","bucketSize","tmpSlice","dataLen","freeBytesInCurrBuffer","numBuckets","remElements","newBucket","_exit","implicit","has","checkUnflushedContent","exit","_ceil","_dlopen","_longjmp","_setThrew","_execl","_fabs","_floor","counter","lastError","buffers","mappedBuffers","programs","framebuffers","renderbuffers","textures","uniforms","shaders","vaos","contexts","currentContext","offscreenCanvases","timerQueriesEXT","currArrayBuffer","currElementArrayBuffer","byteSizeByTypeRoot","byteSizeByType","programInfos","stringCache","unpackAlignment","createLog2ceilLookup","MAX_TEMP_BUFFER_SIZE","miniTempBuffer","MINI_TEMP_BUFFER_SIZE","miniTempBufferViews","recordError","errorCode","getNewId","table","numTempVertexBuffersPerSize","log2ceilLookup","maxValue","log2","pow2","generateTempBuffers","quads","context","largestIndex","tempVertexBufferCounters1","tempVertexBufferCounters2","tempVertexBuffers1","tempVertexBuffers2","tempIndexBuffers","ringbufferLength","ringbuffer1","ringbuffer2","tempQuadIndexBuffer","bindBuffer","ELEMENT_ARRAY_BUFFER","numIndexes","quadIndexes","bufferData","STATIC_DRAW","getTempVertexBuffer","sizeBytes","ringbuffer","nextFreeBufferIndex","vbo","prevVBO","getParameter","ARRAY_BUFFER_BINDING","ARRAY_BUFFER","DYNAMIC_DRAW","getTempIndexBuffer","ibo","prevIBO","ELEMENT_ARRAY_BUFFER_BINDING","vb","getSource","shader","getShaderParameter","GLEmulation","findToken","getExtension","registerContext","attributes","GLctxObject","enableExtensionsByDefault","initExtensions","deleteContext","JSEvents","removeAllHandlersOnTarget","acquireInstancedArraysExtension","ext","divisor","primcount","indices","acquireVertexArrayObjectExtension","vao","acquireDrawBuffersExtension","n","bufs","initExtensionsDone","compressionExt","anisotropicExt","disjointTimerQueryExt","automaticallyEnabledExtensions","exts","getSupportedExtensions","populateUniformTable","program","ptable","maxUniformLength","maxAttributeLength","maxUniformBlockNameLength","utable","numUniforms","getProgramParameter","getActiveUniform","loc","getUniformLocation","_glEnable","x0","_glDisable","emscriptenWebGLGet","name_","formats","_glGetBooleanv","_glGetIntegerv","stringToNewUTF8","jsString","cString","_glGetString","gl_exts","glVersion","VERSION","glslVersion","SHADING_LANGUAGE_VERSION","ver_num","_glCreateShader","shaderType","createShader","_glAttachShader","attachShader","_glDetachShader","detachShader","_glUseProgram","useProgram","_glDeleteProgram","deleteProgram","_glBindAttribLocation","bindAttribLocation","_glLinkProgram","linkProgram","_glBindBuffer","GLImmediate","lastArrayBuffer","_glGetFloatv","_glHint","x1","_glEnableVertexAttribArray","enableVertexAttribArray","_glDisableVertexAttribArray","disableVertexAttribArray","_glVertexAttribPointer","normalized","stride","vertexAttribPointer","_glActiveTexture","vec3","mat3","mat4","quat4","MatrixArray","fogStart","fogEnd","fogDensity","fogColor","fogMode","fogEnabled","currentVao","enabledVertexAttribArrays","hasRunInit","token","isIdentChar","validCapabilities","glEnable","cap","lastRenderer","cleanup","currentRenderer","glDisable","glGetBooleanv","pname","attrib","getAttributeFromCapability","enabledClientAttributes","glGetIntegerv","params","MAX_TEXTURE_IMAGE_UNITS","MAX_VERTEX_UNIFORM_VECTORS","MAX_FRAGMENT_UNIFORM_VECTORS","MAX_VARYING_VECTORS","MAX_COMBINED_TEXTURE_IMAGE_UNITS","clientAttributes","VERTEX","COLOR","TEXTURE0","clientActiveTexture","glGetString","shaderInfos","glCreateShader","ftransform","programShaders","glAttachShader","glDetachShader","programShader","glUseProgram","currProgram","fixedFunctionProgram","glDeleteProgram","zeroUsedPrograms","glBindAttribLocation","glLinkProgram","glBindBuffer","elementArrayBuffer","glGetFloatv","matrix","glHint","glEnableVertexAttribArray","glDisableVertexAttribArray","glVertexAttribPointer","pointer","vertexAttribPointers","NORMAL","MapTreeLib","spawnMapTreeLib","CNaiveListMap","__contains_i","__get_i","list","insert","CMapTree","CNLNode","child","keyFrag","CKeyView","cur","reset","staticKeyView","createKeyView","clear","getStaticKeyView","TexEnvJIT","spawnTexEnvJIT","GL_TEXTURE_1D","GL_TEXTURE_2D","GL_TEXTURE_3D","GL_TEXTURE_CUBE_MAP","GL_TEXTURE_ENV","GL_TEXTURE_ENV_COLOR","GL_RGB_SCALE","GL_ALPHA_SCALE","GL_REPLACE","GL_MODULATE","GL_TEXTURE","GL_CONSTANT","GL_PREVIOUS","GL_SRC_COLOR","GL_SRC_ALPHA","TEXENVJIT_NAMESPACE_PREFIX","TEX_UNIT_UNIFORM_PREFIX","TEX_COORD_VARYING_PREFIX","PRIM_COLOR_VARYING","TEX_MATRIX_UNIFORM_PREFIX","s_texUnits","s_activeTexture","s_requiredTexUnitsForPass","abort_noSupport","abort_sanity","genTexUnitSampleExpr","texUnitID","texType","getTexType","texCoordExpr","getCurTexUnit","genCombinerSourceExpr","constantExpr","previousVar","op","srcExpr","expr","valToFloatLiteral","CTexEnv","colorCombiner","alphaCombiner","colorScale","alphaScale","envColor","colorSrc","alphaSrc","colorOp","alphaOp","traverseKey","key0","key1","key2","computeKey0","computeKey1","computeKey2","recomputeKey","invalidateKey","CTexUnit","enabled_tex1D","enabled_tex2D","enabled_tex3D","enabled_texCube","texTypesEnabled","traverseState","keyView","enabled","genPassLines","passOutputVar","passInputVar","load","lines","texLoadLines","texLoadRegex","loadCounter","texLoadExpr","texLoadVar","colorVar","prefix","alphaVar","texVar","colorLines","genCombinerLines","alphaLines","isColor","outputVar","combiner","srcArr","opArr","argsNeeded","src0Expr","src1Expr","src2Expr","outputType","arg2Var","getTypeFromCombineOp","gl","specifiedMaxTextureImageUnits","maxTexUnits","setGLSLVars","uTexUnitPrefix","vTexCoordPrefix","vPrimColor","uTexMatrixPrefix","genAllPassLines","resultDest","indentSize","lastPassVar","newLines","indent","getUsedTexUnitList","getTexUnitType","hook_activeTexture","texture","hook_enable","hook_disable","hook_texEnvf","param","hook_texEnvi","hook_texEnvfv","hook_getTexEnviv","hook_getTexEnvfv","vertexData","vertexDataU8","tempData","indexData","vertexCounter","rendererCache","rendererComponents","rendererComponentPointer","lastProgram","lastStride","matrixStack","currentMatrix","tempMatrix","matricesModified","useTextureMatrix","NUM_ATTRIBUTES","MAX_TEXTURES","totalEnabledClientAttributes","liveClientAttributes","modifiedClientAttributes","clientColor","usedTexUnitList","setClientAttribute","addRendererComponent","disableBeginEndClientAttributes","getRenderer","enabledAttributesKey","fogParam","renderer","createRenderer","useCurrProgram","hasTextures","texAttribName","aTexCoordPrefix","VERTEX_SHADER","vertexShader","fragmentShader","fogFormula","fsTexEnvPass","texUnitAttribList","texUnitVaryingList","texUnitUniformList","vsTexCoordInits","texUnit","vsFogVaryingInit","vsSource","shaderSource","compileShader","fogHeaderIfNeeded","fogPass","fsSource","FRAGMENT_SHADER","createProgram","maxVertexAttribs","MAX_VERTEX_ATTRIBS","textureMatrixVersion","positionLocation","getAttribLocation","texCoordLocations","colorLocation","prevBoundProg","CURRENT_PROGRAM","texSamplerLoc","uniform1i","vertexAttrib4fv","textureMatrixLocations","normalLocation","modelViewLocation","projectionLocation","hasNormal","hasColor","floatType","FLOAT","fogColorLocation","fogEndLocation","fogScaleLocation","fogDensityLocation","hasFog","prepare","firstVertex","lastVertex","bufferSubData","modelViewMatrixVersion","matrixVersion","uniformMatrix4fv","projectionMatrixVersion","posAttr","normalAttr","attribLoc","texAttr","vertexAttrib4f","t","colorAttr","uniform4fv","uniform1f","setupFuncs","setupHooks","glActiveTexture","_glTexEnvf","_glTexEnvi","enabledClientAttribIndices","matrixLib","identity","prepareClientAttributes","beginEnd","clientStartPointer","bytes","minStride","maxStride","restrideBuffer","srcStride","size4","srcStride4","vertexPointer","numProvidedIndexes","startIndex","numVertexes","emulatedElementArrayBuffer","currIndex","indexBuffer","drawElements","TRIANGLES","UNSIGNED_SHORT","drawArrays","vec","dest","add","vec2","subtract","multiply","negate","cross","x2","y2","z2","dot","direction","lerp","dist","unproject","view","proj","viewport","inverse","multiplyVec4","mat","transpose","a01","a02","a12","toMat4","a03","a13","a23","determinant","a00","a10","a11","a20","a21","a22","a30","a31","a32","a33","invDet","b00","b01","b02","b03","b04","b05","b06","b07","b08","b09","b10","b11","toRotationMat","toMat3","toInverseMat3","b21","mat2","b12","b13","b20","b22","b23","b30","b31","b32","b33","multiplyVec3","translate","rotate","angle","rotateX","rotateY","rotateZ","frustum","right","bottom","near","far","rl","tb","perspective","fovy","aspect","tan","PI","ortho","lookAt","eye","center","y0","y1","z0","z1","eyex","eyey","eyez","upx","upy","upz","centerx","centery","centerz","fromRotationTranslation","quat","xx","xy","xz","yy","yz","zz","wy","wz","calculateW","quat2","q0","q1","q2","q3","invDot","conjugate","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","qx","qy","qz","qw","ix","iy","iz","iw","slerp","halfTheta","sinHalfTheta","ratioA","ratioB","cosHalfTheta","acos","_llvm_cos_f64","_llvm_sin_f64","_llvm_stacksave","LLVM_SAVEDSTACKS","_llvm_trunc_f64","_tzset","__get_timezone","getTimezoneOffset","winter","summer","__get_daylight","winterName","extractZone","summerName","winterNamePtr","summerNamePtr","__get_tzname","toTimeString","_localtime_r","time","tmPtr","getSeconds","getMinutes","getHours","getDate","getMonth","getFullYear","getDay","yday","summerOffset","winterOffset","zonePtr","_usleep","useconds","msec","abortOnCannotGrowMemory","requestedSize","_sqrt","__isLeapYear","year","__arraySum","sum","__MONTH_DAYS_LEAP","__MONTH_DAYS_REGULAR","__addDays","days","newDate","leap","currentMonth","daysInCurrentMonth","setDate","setMonth","setFullYear","_strftime","maxsize","tm","tm_zone","tm_sec","tm_min","tm_hour","tm_mday","tm_mon","tm_year","tm_wday","tm_yday","tm_isdst","tm_gmtoff","pattern","EXPANSION_RULES_1","rule","RegExp","WEEKDAYS","MONTHS","leadingSomething","digits","character","leadingNulls","compareByDay","date1","date2","sgn","compare","getFirstWeekStartDate","janFourth","getWeekBasedYear","thisDate","janFourthThisYear","janFourthNextYear","firstWeekStartThisYear","firstWeekStartNextYear","EXPANSION_RULES_2","substring","twelveHour","janFirst","firstSunday","endDate","februaryFirstUntilEndMonth","daysDifference","firstMonday","off","ahead","_wait","stat_loc","ASSERTIONS","stringy","u8array","numBytesWritten","chr","decodeBase64","atob","chr1","chr2","chr3","enc2","enc3","enc4","keyStr","_","decoded","intArrayFromBase64","asmLibraryArg","allocSize","kb","$a","Qa","Ga","Hd","Dd","xd","rd","hd","ad","Vc","Rc","Ic","Dc","xc","rc","lc","gc","$b","Vb","Sb","Rb","Qb","Pb","Ob","Nb","Mb","Lb","Kb","Jb","Ib","Hb","Gb","Fb","Eb","Db","Cb","Bb","Ab","zb","yb","xb","wb","ub","sb","rb","qb","pb","ob","nb","mb","lb","jb","ib","hb","gb","fb","eb","_a","Za","Ya","Xa","Wa","Va","Ua","Ta","Sa","Ra","Pa","Oa","Na","Ma","La","Ka","Ja","Ia","Ha","H","a1","sp","dynCall_dd","W","dynCall_di","dynCall_i","dynCall_ii","Fa","a2","a3","dynCall_iidi","dynCall_iii","dynCall_iiii","N","a4","dynCall_iiiii","ha","a5","dynCall_iiiiii","dynCall_v","dynCall_vi","o","dynCall_vii","na","dynCall_viid","dynCall_viii","A","dynCall_viiidd","M","dynCall_viiii","ga","dynCall_viiiii","Gd","L","doSwapBuffers","Fd","errorMessage","Ed","keyboardListeningElement","_memset","K","_SDL_AudioQuit","removeEventListener","Cd","Bd","a0","Ad","destructor","adjusted","caught","rethrown","__ZSt18uncaught_exceptionv","uncaught_exceptions","zd","yd","Ea","la","wd","vd","Da","offset_high","offset_low","DOUBLE_LIMIT","ud","Ca","td","sd","rlim","Ba","qd","pd","od","nd","md","ld","dirp","struct_size","V","kd","jd","old_limit","gd","ed","Aa","dd","old","cd","fdPtr","res","fa","ea","argp","R","bd","$c","usage","_c","linkpath","Zc","Yc","malloc","__emscripten_syscall_munmap","U","$","Xc","Wc","_clock","Uc","time1","time0","Tc","za","da","ka","ya","Q","Sc","Qc","Pc","Oc","Nc","Mc","Lc","ja","F","Kc","Jc","Hc","E","_getenv","wa","Gc","ca","enabledClientAttributes_preBegin","clientAttributes_preBegin","components","Fc","Ec","va","x3","UNSIGNED_BYTE","_emscripten_glColor4f","Cc","C","q","Bc","Ac","zc","top_","nearVal","farVal","yc","B","T","G","wc","vc","uc","tc","ba","aa","sc","ta","qc","pc","sa","ra","D","oc","nc","no","addedResizeListener","settingVideoMode","mc","pid","Tb","retl","_llvm_bswap_i32","reth","S","kc","pow","LN10","jc","LN2","P","Z","J","ic","hc","fc","mp_interrupt_char","O","ec","rqtp","rmtp","seconds","nanoseconds","ia","dc","I","cc","envname","envval","overwrite","__get_environ","bc","signum","act","oldact","ac","_b","Zb","Yb","qa","Y","command","X","Xb","pa","Wb","times","oa","Ub","asm","run","doRun","postRun","preRun","lastChar","runCaller","abortDecorators","what","decorator"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"vendors-node_modules_basthon_xcas-wasm_src_index_js.js","mappings":"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EAAQmyB,GACvC,OAAOF,GAAU7yD,EAAG8yD,EAASlyB,EAAQmyB,EACvC,EAshCEuW,GArhCF,SAAkBxgE,GAChB,OAAQA,GACN,KAAK,GAiIL,KAAK,GACH,OAAO,MAhIT,KAAK,GAGH,OADcrS,EAAO1H,OArlZX,MAulZZ,KAAK,IACL,KAAK,IACL,KAAK,GACL,KAAK,IACL,KAAK,IACL,KAAK,GACL,KAAK,IACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,IACL,KAAK,EACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,IACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACH,OAAO,OACT,KAAK,GACH,OAAO,EACT,KAAK,GACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,GACH,OAAQ,EACV,KAAK,IACL,KAAK,IACL,KAAK,EACL,KAAK,IACL,KAAK,EACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,GACL,KAAK,GACH,OAAO,EACT,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,EACH,OAAO,KACT,KAAK,GACL,KAAK,GACL,KAAK,GACH,OAAO,GACT,KAAK,GACL,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","sources":["webpack://@basthon/browser-bundle/../../node_modules/@basthon/xcas-wasm/src/index.js"],"sourcesContent":["var _emscripten_glEnable,\n _emscripten_glDisable,\n _emscripten_glIsEnabled,\n _emscripten_glGetBooleanv,\n _emscripten_glGetIntegerv,\n _emscripten_glGetString,\n _emscripten_glCreateShader,\n _emscripten_glShaderSource,\n _emscripten_glCompileShader,\n _emscripten_glAttachShader,\n _emscripten_glDetachShader,\n _emscripten_glUseProgram,\n _emscripten_glDeleteProgram,\n _emscripten_glBindAttribLocation,\n _emscripten_glLinkProgram,\n _emscripten_glBindBuffer,\n _emscripten_glGetFloatv,\n _emscripten_glHint,\n _emscripten_glEnableVertexAttribArray,\n _emscripten_glDisableVertexAttribArray,\n _emscripten_glVertexAttribPointer,\n _emscripten_glActiveTexture,\n _emscripten_glTexEnvf,\n _emscripten_glTexEnvi,\n _emscripten_glTexEnvfv,\n _emscripten_glGetIntegerv,\n _glTexEnvf,\n _glTexEnvi,\n _glTexEnvfv,\n _glGetTexEnviv,\n _glGetTexEnvfv;\n\nvar UI = {\n disable3d: 0, // -1==3d not supported\n tableaucm: 0, // 1 if codemirror focused\n debug: 0,\n Datestart: Date.now(),\n ready: false,\n colorinit: false,\n usemathjax: false,\n prettyprint: true,\n histcount: 0,\n selection: \"\",\n langue: -1,\n calc: 1, // 1 KhiCAS, 2 Numworks, 3 TI Nspire CX\n xwaspy_shift: 33, // must be >32 for space encoding, and <=35 for a..z encoding\n gr2d_ncanvas: 0,\n initconfigstring: \"\",\n python_mode: 0,\n python_indent: 4,\n warnpy: true, // set to false if you do not want Python compat warning\n};\n\n// @basthon\n// innerWidth is used by giac in gen.cc for svg generation\n// in the emscripten compilation context but is not available\n// in a webworker context so ... monkey patch\nwindow.innerWidth ??= 1080;\n\nvar Module = typeof Module !== \"undefined\" ? Module : {};\n// @basthon\nModule[\"print\"] = (...args) => console.log(...args);\nModule[\"printErr\"] = (...args) => console.error(...args);\nvar moduleOverrides = {};\nvar key;\nfor (key in Module) {\n if (Module.hasOwnProperty(key)) {\n moduleOverrides[key] = Module[key];\n }\n}\nvar arguments_ = [];\nvar thisProgram = \"./this.program\";\nvar quit_ = function (status, toThrow) {\n throw toThrow;\n};\nvar ENVIRONMENT_IS_WEB = false;\nvar ENVIRONMENT_IS_WORKER = false;\nvar ENVIRONMENT_IS_NODE = false;\nvar ENVIRONMENT_HAS_NODE = false;\nvar ENVIRONMENT_IS_SHELL = false;\nENVIRONMENT_IS_WEB = typeof window === \"object\";\nENVIRONMENT_IS_WORKER = typeof importScripts === \"function\";\nENVIRONMENT_HAS_NODE =\n typeof process === \"object\" &&\n typeof process.versions === \"object\" &&\n typeof process.versions.node === \"string\";\nENVIRONMENT_IS_NODE =\n ENVIRONMENT_HAS_NODE && !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER;\nENVIRONMENT_IS_SHELL =\n !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;\nif (Module[\"ENVIRONMENT\"]) {\n throw new Error(\n \"Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)\",\n );\n}\nvar scriptDirectory = \"\";\nfunction locateFile(path) {\n if (Module[\"locateFile\"]) {\n return Module[\"locateFile\"](path, scriptDirectory);\n }\n return path;\n}\nvar read_, readAsync, readBinary, setWindowTitle;\nif (ENVIRONMENT_IS_NODE) {\n scriptDirectory = __dirname + \"/\";\n var nodeFS;\n var nodePath;\n read_ = function shell_read(filename, binary) {\n var ret;\n ret = tryParseAsDataURI(filename);\n if (!ret) {\n if (!nodeFS) nodeFS = require(\"fs\");\n if (!nodePath) nodePath = require(\"path\");\n filename = nodePath[\"normalize\"](filename);\n ret = nodeFS[\"readFileSync\"](filename);\n }\n return binary ? ret : ret.toString();\n };\n readBinary = function readBinary(filename) {\n var ret = read_(filename, true);\n if (!ret.buffer) {\n ret = new Uint8Array(ret);\n }\n assert(ret.buffer);\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 if (typeof module !== \"undefined\") {\n module[\"exports\"] = Module;\n }\n process[\"on\"](\"uncaughtException\", function (ex) {\n if (!(ex instanceof ExitStatus)) {\n throw ex;\n }\n });\n process[\"on\"](\"unhandledRejection\", abort);\n quit_ = function (status) {\n process[\"exit\"](status);\n };\n Module[\"inspect\"] = function () {\n return \"[Emscripten Module object]\";\n };\n} else if (ENVIRONMENT_IS_SHELL) {\n if (typeof read != \"undefined\") {\n read_ = function shell_read(f) {\n var data = tryParseAsDataURI(f);\n if (data) {\n return intArrayToString(data);\n }\n return read(f);\n };\n }\n readBinary = function readBinary(f) {\n var data;\n data = tryParseAsDataURI(f);\n if (data) {\n return data;\n }\n if (typeof readbuffer === \"function\") {\n return new Uint8Array(readbuffer(f));\n }\n data = read(f, \"binary\");\n assert(typeof data === \"object\");\n return data;\n };\n if (typeof scriptArgs != \"undefined\") {\n arguments_ = scriptArgs;\n } else if (typeof arguments != \"undefined\") {\n arguments_ = arguments;\n }\n if (typeof quit === \"function\") {\n quit_ = function (status) {\n quit(status);\n };\n }\n if (typeof print !== \"undefined\") {\n if (typeof console === \"undefined\") console = {};\n console.log = print;\n console.warn = console.error =\n typeof printErr !== \"undefined\" ? printErr : print;\n }\n} else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) {\n scriptDirectory = self.location.href;\n } else if (document.currentScript) {\n scriptDirectory = document.currentScript.src;\n }\n if (scriptDirectory.indexOf(\"blob:\") !== 0) {\n scriptDirectory = scriptDirectory.substr(\n 0,\n scriptDirectory.lastIndexOf(\"/\") + 1,\n );\n } else {\n scriptDirectory = \"\";\n }\n read_ = function shell_read(url) {\n try {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n } catch (err) {\n var data = tryParseAsDataURI(url);\n if (data) {\n return intArrayToString(data);\n }\n throw err;\n }\n };\n if (ENVIRONMENT_IS_WORKER) {\n readBinary = function readBinary(url) {\n try {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n } catch (err) {\n var data = tryParseAsDataURI(url);\n if (data) {\n return data;\n }\n throw err;\n }\n };\n }\n readAsync = function readAsync(url, onload, onerror) {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = function xhr_onload() {\n if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) {\n onload(xhr.response);\n return;\n }\n var data = tryParseAsDataURI(url);\n if (data) {\n onload(data.buffer);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n setWindowTitle = function (title) {\n document.title = title;\n };\n} else {\n throw new Error(\"environment detection error\");\n}\nvar out = Module[\"print\"] || console.log.bind(console);\nvar err = Module[\"printErr\"] || console.warn.bind(console);\nfor (key in moduleOverrides) {\n if (moduleOverrides.hasOwnProperty(key)) {\n Module[key] = moduleOverrides[key];\n }\n}\nmoduleOverrides = null;\nif (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\nif (!Object.getOwnPropertyDescriptor(Module, \"arguments\"))\n Object.defineProperty(Module, \"arguments\", {\n get: function () {\n abort(\"Module.arguments has been replaced with plain arguments_\");\n },\n });\nif (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\nif (!Object.getOwnPropertyDescriptor(Module, \"thisProgram\"))\n Object.defineProperty(Module, \"thisProgram\", {\n get: function () {\n abort(\"Module.thisProgram has been replaced with plain thisProgram\");\n },\n });\nif (Module[\"quit\"]) quit_ = Module[\"quit\"];\nif (!Object.getOwnPropertyDescriptor(Module, \"quit\"))\n Object.defineProperty(Module, \"quit\", {\n get: function () {\n abort(\"Module.quit has been replaced with plain quit_\");\n },\n });\nassert(\n typeof Module[\"memoryInitializerPrefixURL\"] === \"undefined\",\n \"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead\",\n);\nassert(\n typeof Module[\"pthreadMainPrefixURL\"] === \"undefined\",\n \"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead\",\n);\nassert(\n typeof Module[\"cdInitializerPrefixURL\"] === \"undefined\",\n \"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead\",\n);\nassert(\n typeof Module[\"filePackagePrefixURL\"] === \"undefined\",\n \"Module.filePackagePrefixURL option was removed, use Module.locateFile instead\",\n);\nassert(\n typeof Module[\"read\"] === \"undefined\",\n \"Module.read option was removed (modify read_ in JS)\",\n);\nassert(\n typeof Module[\"readAsync\"] === \"undefined\",\n \"Module.readAsync option was removed (modify readAsync in JS)\",\n);\nassert(\n typeof Module[\"readBinary\"] === \"undefined\",\n \"Module.readBinary option was removed (modify readBinary in JS)\",\n);\nassert(\n typeof Module[\"setWindowTitle\"] === \"undefined\",\n \"Module.setWindowTitle option was removed (modify setWindowTitle in JS)\",\n);\nif (!Object.getOwnPropertyDescriptor(Module, \"read\"))\n Object.defineProperty(Module, \"read\", {\n get: function () {\n abort(\"Module.read has been replaced with plain read_\");\n },\n });\nif (!Object.getOwnPropertyDescriptor(Module, \"readAsync\"))\n Object.defineProperty(Module, \"readAsync\", {\n get: function () {\n abort(\"Module.readAsync has been replaced with plain readAsync\");\n },\n });\nif (!Object.getOwnPropertyDescriptor(Module, \"readBinary\"))\n Object.defineProperty(Module, \"readBinary\", {\n get: function () {\n abort(\"Module.readBinary has been replaced with plain readBinary\");\n },\n });\nstackSave =\n stackRestore =\n stackAlloc =\n function () {\n abort(\n \"cannot use the stack before compiled code is ready to run, and has provided stack access\",\n );\n };\nfunction dynamicAlloc(size) {\n assert(DYNAMICTOP_PTR);\n var ret = HEAP32[DYNAMICTOP_PTR >> 2];\n var end = (ret + size + 15) & -16;\n if (end > _emscripten_get_heap_size()) {\n abort(\n \"failure to dynamicAlloc - memory growth etc. is not supported there, call malloc/sbrk directly\",\n );\n }\n HEAP32[DYNAMICTOP_PTR >> 2] = end;\n return ret;\n}\nfunction getNativeTypeSize(type) {\n switch (type) {\n case \"i1\":\n case \"i8\":\n return 1;\n case \"i16\":\n return 2;\n case \"i32\":\n return 4;\n case \"i64\":\n return 8;\n case \"float\":\n return 4;\n case \"double\":\n return 8;\n default: {\n if (type[type.length - 1] === \"*\") {\n return 4;\n } else if (type[0] === \"i\") {\n var bits = parseInt(type.substr(1));\n assert(\n bits % 8 === 0,\n \"getNativeTypeSize invalid bits \" + bits + \", type \" + type,\n );\n return bits / 8;\n } else {\n return 0;\n }\n }\n }\n}\nfunction warnOnce(text) {\n if (!warnOnce.shown) warnOnce.shown = {};\n if (!warnOnce.shown[text]) {\n warnOnce.shown[text] = 1;\n err(text);\n }\n}\nvar asm2wasmImports = {\n \"f64-rem\": function (x, y) {\n return x % y;\n },\n debugger: function () {\n debugger;\n },\n};\nvar functionPointers = new Array(0);\nvar tempRet0 = 0;\nvar setTempRet0 = function (value) {\n tempRet0 = value;\n};\nvar getTempRet0 = function () {\n return tempRet0;\n};\nvar wasmBinary;\nif (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\nif (!Object.getOwnPropertyDescriptor(Module, \"wasmBinary\"))\n Object.defineProperty(Module, \"wasmBinary\", {\n get: function () {\n abort(\"Module.wasmBinary has been replaced with plain wasmBinary\");\n },\n });\nif (typeof WebAssembly !== \"object\") {\n abort(\n \"No WebAssembly support found. Build with -s WASM=0 to target JavaScript instead.\",\n );\n}\nfunction setValue(ptr, value, type, noSafe) {\n type = type || \"i8\";\n if (type.charAt(type.length - 1) === \"*\") type = \"i32\";\n switch (type) {\n case \"i1\":\n HEAP8[ptr >> 0] = value;\n break;\n case \"i8\":\n HEAP8[ptr >> 0] = value;\n break;\n case \"i16\":\n HEAP16[ptr >> 1] = value;\n break;\n case \"i32\":\n HEAP32[ptr >> 2] = value;\n break;\n case \"i64\":\n ((tempI64 = [\n value >>> 0,\n ((tempDouble = value),\n +Math_abs(tempDouble) >= 1\n ? tempDouble > 0\n ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) |\n 0) >>>\n 0\n : ~~+Math_ceil(\n (tempDouble - +(~~tempDouble >>> 0)) / 4294967296,\n ) >>> 0\n : 0),\n ]),\n (HEAP32[ptr >> 2] = tempI64[0]),\n (HEAP32[(ptr + 4) >> 2] = tempI64[1]));\n break;\n case \"float\":\n HEAPF32[ptr >> 2] = value;\n break;\n case \"double\":\n HEAPF64[ptr >> 3] = value;\n break;\n default:\n abort(\"invalid type for setValue: \" + type);\n }\n}\nvar wasmMemory;\nvar wasmTable;\nvar ABORT = false;\nvar EXITSTATUS = 0;\nfunction assert(condition, text) {\n if (!condition) {\n abort(\"Assertion failed: \" + text);\n }\n}\nfunction getCFunc(ident) {\n var func = Module[\"_\" + ident];\n assert(\n func,\n \"Cannot call unknown function \" + ident + \", make sure it is exported\",\n );\n return func;\n}\nfunction ccall(ident, returnType, argTypes, args, opts) {\n var toC = {\n string: function (str) {\n var ret = 0;\n if (str !== null && str !== undefined && str !== 0) {\n var len = (str.length << 2) + 1;\n ret = stackAlloc(len);\n stringToUTF8(str, ret, len);\n }\n return ret;\n },\n array: function (arr) {\n var ret = stackAlloc(arr.length);\n writeArrayToMemory(arr, ret);\n return ret;\n },\n };\n function convertReturnValue(ret) {\n if (returnType === \"string\") return UTF8ToString(ret);\n if (returnType === \"boolean\") return Boolean(ret);\n return ret;\n }\n var func = getCFunc(ident);\n var cArgs = [];\n var stack = 0;\n assert(returnType !== \"array\", 'Return type should not be \"array\".');\n if (args) {\n for (var i = 0; i < args.length; i++) {\n var converter = toC[argTypes[i]];\n if (converter) {\n if (stack === 0) stack = stackSave();\n cArgs[i] = converter(args[i]);\n } else {\n cArgs[i] = args[i];\n }\n }\n }\n var ret = func.apply(null, cArgs);\n assert(\n !(opts && opts.async),\n \"async call is only supported with Emterpretify for now, see #9029\",\n );\n ret = convertReturnValue(ret);\n if (stack !== 0) stackRestore(stack);\n return ret;\n}\nfunction cwrap(ident, returnType, argTypes, opts) {\n return function () {\n return ccall(ident, returnType, argTypes, arguments, opts);\n };\n}\nvar ALLOC_NORMAL = 0;\nvar ALLOC_NONE = 3;\nfunction allocate(slab, types, allocator, ptr) {\n var zeroinit, size;\n if (typeof slab === \"number\") {\n zeroinit = true;\n size = slab;\n } else {\n zeroinit = false;\n size = slab.length;\n }\n var singleType = typeof types === \"string\" ? types : null;\n var ret;\n if (allocator == ALLOC_NONE) {\n ret = ptr;\n } else {\n ret = [_malloc, stackAlloc, dynamicAlloc][allocator](\n Math.max(size, singleType ? 1 : types.length),\n );\n }\n if (zeroinit) {\n var stop;\n ptr = ret;\n assert((ret & 3) == 0);\n stop = ret + (size & ~3);\n for (; ptr < stop; ptr += 4) {\n HEAP32[ptr >> 2] = 0;\n }\n stop = ret + size;\n while (ptr < stop) {\n HEAP8[ptr++ >> 0] = 0;\n }\n return ret;\n }\n if (singleType === \"i8\") {\n if (slab.subarray || slab.slice) {\n HEAPU8.set(slab, ret);\n } else {\n HEAPU8.set(new Uint8Array(slab), ret);\n }\n return ret;\n }\n var i = 0,\n type,\n typeSize,\n previousType;\n while (i < size) {\n var curr = slab[i];\n type = singleType || types[i];\n if (type === 0) {\n i++;\n continue;\n }\n assert(type, \"Must know what type to store in allocate!\");\n if (type == \"i64\") type = \"i32\";\n setValue(ret + i, curr, type);\n if (previousType !== type) {\n typeSize = getNativeTypeSize(type);\n previousType = type;\n }\n i += typeSize;\n }\n return ret;\n}\nfunction getMemory(size) {\n if (!runtimeInitialized) return dynamicAlloc(size);\n return _malloc(size);\n}\nfunction Pointer_stringify(ptr, length) {\n abort(\n \"this function has been removed - you should use UTF8ToString(ptr, maxBytesToRead) instead!\",\n );\n}\nvar UTF8Decoder =\n typeof TextDecoder !== \"undefined\" ? new TextDecoder(\"utf8\") : undefined;\nfunction UTF8ArrayToString(u8Array, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while (u8Array[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n if (endPtr - idx > 16 && u8Array.subarray && UTF8Decoder) {\n return UTF8Decoder.decode(u8Array.subarray(idx, endPtr));\n } else {\n var str = \"\";\n while (idx < endPtr) {\n var u0 = u8Array[idx++];\n if (!(u0 & 128)) {\n str += String.fromCharCode(u0);\n continue;\n }\n var u1 = u8Array[idx++] & 63;\n if ((u0 & 224) == 192) {\n str += String.fromCharCode(((u0 & 31) << 6) | u1);\n continue;\n }\n var u2 = u8Array[idx++] & 63;\n if ((u0 & 240) == 224) {\n u0 = ((u0 & 15) << 12) | (u1 << 6) | u2;\n } else {\n if ((u0 & 248) != 240)\n warnOnce(\n \"Invalid UTF-8 leading byte 0x\" +\n u0.toString(16) +\n \" encountered when deserializing a UTF-8 string on the asm.js/wasm heap to a JS string!\",\n );\n u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (u8Array[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 }\n return str;\n}\nfunction UTF8ToString(ptr, maxBytesToRead) {\n return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : \"\";\n}\nfunction stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = (65536 + ((u & 1023) << 10)) | (u1 & 1023);\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n outU8Array[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n outU8Array[outIdx++] = 192 | (u >> 6);\n outU8Array[outIdx++] = 128 | (u & 63);\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n outU8Array[outIdx++] = 224 | (u >> 12);\n outU8Array[outIdx++] = 128 | ((u >> 6) & 63);\n outU8Array[outIdx++] = 128 | (u & 63);\n } else {\n if (outIdx + 3 >= endIdx) break;\n if (u >= 2097152)\n warnOnce(\n \"Invalid Unicode code point 0x\" +\n u.toString(16) +\n \" encountered when serializing a JS string to an UTF-8 string on the asm.js/wasm heap! (Valid unicode code points should be in range 0-0x1FFFFF).\",\n );\n outU8Array[outIdx++] = 240 | (u >> 18);\n outU8Array[outIdx++] = 128 | ((u >> 12) & 63);\n outU8Array[outIdx++] = 128 | ((u >> 6) & 63);\n outU8Array[outIdx++] = 128 | (u & 63);\n }\n }\n outU8Array[outIdx] = 0;\n return outIdx - startIdx;\n}\nfunction stringToUTF8(str, outPtr, maxBytesToWrite) {\n assert(\n typeof maxBytesToWrite == \"number\",\n \"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!\",\n );\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n}\nfunction lengthBytesUTF8(str) {\n var len = 0;\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343)\n u = (65536 + ((u & 1023) << 10)) | (str.charCodeAt(++i) & 1023);\n if (u <= 127) ++len;\n else if (u <= 2047) len += 2;\n else if (u <= 65535) len += 3;\n else len += 4;\n }\n return len;\n}\nvar UTF16Decoder =\n typeof TextDecoder !== \"undefined\" ? new TextDecoder(\"utf-16le\") : undefined;\nfunction allocateUTF8(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = _malloc(size);\n if (ret) stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n}\nfunction writeStringToMemory(string, buffer, dontAddNull) {\n warnOnce(\n \"writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!\",\n );\n var lastChar, end;\n if (dontAddNull) {\n end = buffer + lengthBytesUTF8(string);\n lastChar = HEAP8[end];\n }\n stringToUTF8(string, buffer, Infinity);\n if (dontAddNull) HEAP8[end] = lastChar;\n}\nfunction writeArrayToMemory(array, buffer) {\n assert(\n array.length >= 0,\n \"writeArrayToMemory array must have a length (should be an array or typed array)\",\n );\n HEAP8.set(array, buffer);\n}\nfunction writeAsciiToMemory(str, buffer, dontAddNull) {\n for (var i = 0; i < str.length; ++i) {\n assert((str.charCodeAt(i) === str.charCodeAt(i)) & 255);\n HEAP8[buffer++ >> 0] = str.charCodeAt(i);\n }\n if (!dontAddNull) HEAP8[buffer >> 0] = 0;\n}\nvar PAGE_SIZE = 16384;\nvar WASM_PAGE_SIZE = 65536;\nvar buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\nfunction updateGlobalBufferViews() {\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(buffer);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(buffer);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(buffer);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(buffer);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(buffer);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(buffer);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(buffer);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(buffer);\n}\nvar STACK_BASE = 5314e3,\n STACK_MAX = 10556880,\n DYNAMIC_BASE = 10556880,\n DYNAMICTOP_PTR = 5313968;\nassert(STACK_BASE % 16 === 0, \"stack must start aligned\");\nassert(DYNAMIC_BASE % 16 === 0, \"heap must start aligned\");\nvar TOTAL_STACK = 5242880;\nif (Module[\"TOTAL_STACK\"])\n assert(\n TOTAL_STACK === Module[\"TOTAL_STACK\"],\n \"the stack size can no longer be determined at runtime\",\n );\nvar INITIAL_TOTAL_MEMORY = Module[\"TOTAL_MEMORY\"] || 268435456;\nif (!Object.getOwnPropertyDescriptor(Module, \"TOTAL_MEMORY\"))\n Object.defineProperty(Module, \"TOTAL_MEMORY\", {\n get: function () {\n abort(\n \"Module.TOTAL_MEMORY has been replaced with plain INITIAL_TOTAL_MEMORY\",\n );\n },\n });\nassert(\n INITIAL_TOTAL_MEMORY >= TOTAL_STACK,\n \"TOTAL_MEMORY should be larger than TOTAL_STACK, was \" +\n INITIAL_TOTAL_MEMORY +\n \"! (TOTAL_STACK=\" +\n TOTAL_STACK +\n \")\",\n);\nassert(\n typeof Int32Array !== \"undefined\" &&\n typeof Float64Array !== \"undefined\" &&\n Int32Array.prototype.subarray !== undefined &&\n Int32Array.prototype.set !== undefined,\n \"JS engine does not provide full typed array support\",\n);\nif (Module[\"wasmMemory\"]) {\n wasmMemory = Module[\"wasmMemory\"];\n} else {\n wasmMemory = new WebAssembly.Memory({\n initial: INITIAL_TOTAL_MEMORY / WASM_PAGE_SIZE,\n maximum: INITIAL_TOTAL_MEMORY / WASM_PAGE_SIZE,\n });\n}\nif (wasmMemory) {\n buffer = wasmMemory.buffer;\n}\nINITIAL_TOTAL_MEMORY = buffer.byteLength;\nassert(INITIAL_TOTAL_MEMORY % WASM_PAGE_SIZE === 0);\nupdateGlobalBufferViews();\nHEAP32[DYNAMICTOP_PTR >> 2] = DYNAMIC_BASE;\nfunction writeStackCookie() {\n assert((STACK_MAX & 3) == 0);\n HEAPU32[(STACK_MAX >> 2) - 1] = 34821223;\n HEAPU32[(STACK_MAX >> 2) - 2] = 2310721022;\n}\nfunction checkStackCookie() {\n var cookie1 = HEAPU32[(STACK_MAX >> 2) - 1];\n var cookie2 = HEAPU32[(STACK_MAX >> 2) - 2];\n if (cookie1 != 34821223 || cookie2 != 2310721022) {\n abort(\n \"Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x02135467, but received 0x\" +\n cookie2.toString(16) +\n \" \" +\n cookie1.toString(16),\n );\n }\n if (HEAP32[0] !== 1668509029)\n abort(\n \"Runtime error: The application has corrupted its heap memory area (address zero)!\",\n );\n}\nfunction abortStackOverflow(allocSize) {\n abort(\n \"Stack overflow! Attempted to allocate \" +\n allocSize +\n \" bytes on the stack, but stack has only \" +\n (STACK_MAX - stackSave() + allocSize) +\n \" bytes available!\",\n );\n}\nHEAP32[0] = 1668509029;\nHEAP16[1] = 25459;\nif (HEAPU8[2] !== 115 || HEAPU8[3] !== 99)\n throw \"Runtime error: expected the system to be little-endian!\";\nfunction abortFnPtrError(ptr, sig) {\n abort(\n \"Invalid function pointer \" +\n ptr +\n \" called with signature '\" +\n sig +\n \"'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this). Build with ASSERTIONS=2 for more info.\",\n );\n}\nfunction callRuntimeCallbacks(callbacks) {\n while (callbacks.length > 0) {\n var callback = callbacks.shift();\n if (typeof callback == \"function\") {\n callback();\n continue;\n }\n var func = callback.func;\n if (typeof func === \"number\") {\n if (callback.arg === undefined) {\n Module[\"dynCall_v\"](func);\n } else {\n Module[\"dynCall_vi\"](func, callback.arg);\n }\n } else {\n func(callback.arg === undefined ? null : callback.arg);\n }\n }\n}\nvar __ATPRERUN__ = [];\nvar __ATINIT__ = [];\nvar __ATMAIN__ = [];\nvar __ATEXIT__ = [];\nvar __ATPOSTRUN__ = [];\nvar runtimeInitialized = false;\nvar runtimeExited = false;\nfunction preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\")\n Module[\"preRun\"] = [Module[\"preRun\"]];\n while (Module[\"preRun\"].length) {\n addOnPreRun(Module[\"preRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPRERUN__);\n}\nfunction initRuntime() {\n checkStackCookie();\n assert(!runtimeInitialized);\n runtimeInitialized = true;\n if (!Module[\"noFSInit\"] && !FS.init.initialized) FS.init();\n TTY.init();\n PIPEFS.root = FS.mount(PIPEFS, {}, null);\n callRuntimeCallbacks(__ATINIT__);\n}\nfunction preMain() {\n checkStackCookie();\n FS.ignorePermissions = false;\n callRuntimeCallbacks(__ATMAIN__);\n}\nfunction exitRuntime() {\n checkStackCookie();\n runtimeExited = true;\n}\nfunction postRun() {\n checkStackCookie();\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\")\n Module[\"postRun\"] = [Module[\"postRun\"]];\n while (Module[\"postRun\"].length) {\n addOnPostRun(Module[\"postRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n}\nfunction addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n}\nfunction addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n}\nassert(\n Math.imul,\n \"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\",\n);\nassert(\n Math.fround,\n \"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\",\n);\nassert(\n Math.clz32,\n \"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\",\n);\nassert(\n Math.trunc,\n \"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\",\n);\nvar Math_abs = Math.abs;\nvar Math_cos = Math.cos;\nvar Math_sin = Math.sin;\nvar Math_sqrt = Math.sqrt;\nvar Math_ceil = Math.ceil;\nvar Math_floor = Math.floor;\nvar Math_min = Math.min;\nvar Math_trunc = Math.trunc;\nvar runDependencies = 0;\nvar runDependencyWatcher = null;\nvar dependenciesFulfilled = null;\nvar runDependencyTracking = {};\nfunction getUniqueRunDependency(id) {\n var orig = id;\n while (1) {\n if (!runDependencyTracking[id]) return id;\n id = orig + Math.random();\n }\n return id;\n}\nfunction addRunDependency(id) {\n runDependencies++;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n if (id) {\n assert(!runDependencyTracking[id]);\n runDependencyTracking[id] = 1;\n if (runDependencyWatcher === null && typeof setInterval !== \"undefined\") {\n runDependencyWatcher = setInterval(function () {\n if (ABORT) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n return;\n }\n var shown = false;\n for (var dep in runDependencyTracking) {\n if (!shown) {\n shown = true;\n err(\"still waiting on run dependencies:\");\n }\n err(\"dependency: \" + dep);\n }\n if (shown) {\n err(\"(end of list)\");\n }\n }, 1e4);\n }\n } else {\n err(\"warning: run dependency added without ID\");\n }\n}\nfunction removeRunDependency(id) {\n runDependencies--;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n if (id) {\n assert(runDependencyTracking[id]);\n delete runDependencyTracking[id];\n } else {\n err(\"warning: run dependency removed without ID\");\n }\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n}\nModule[\"preloadedImages\"] = {};\nModule[\"preloadedAudios\"] = {};\nvar dataURIPrefix = \"data:application/wasm;base64,\";\nfunction isDataURI(filename) {\n return String.prototype.startsWith\n ? filename.startsWith(dataURIPrefix)\n : filename.indexOf(dataURIPrefix) === 0;\n}\nvar wasmBinaryFile = new URL(\"./giac.wasm\", import.meta.url).href;\nif (!isDataURI(wasmBinaryFile)) {\n wasmBinaryFile = locateFile(wasmBinaryFile);\n}\nfunction getBinary() {\n try {\n if (wasmBinary) {\n return new Uint8Array(wasmBinary);\n }\n var binary = tryParseAsDataURI(wasmBinaryFile);\n if (binary) {\n return binary;\n }\n if (readBinary) {\n return readBinary(wasmBinaryFile);\n } else {\n throw \"both async and sync fetching of the wasm failed\";\n }\n } catch (err) {\n abort(err);\n }\n}\nfunction getBinaryPromise() {\n if (\n !wasmBinary &&\n (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) &&\n typeof fetch === \"function\"\n ) {\n return fetch(wasmBinaryFile, { credentials: \"same-origin\" })\n .then(function (response) {\n if (!response[\"ok\"]) {\n throw \"failed to load wasm binary file at '\" + wasmBinaryFile + \"'\";\n }\n return response[\"arrayBuffer\"]();\n })\n .catch(function () {\n return getBinary();\n });\n }\n return new Promise(function (resolve, reject) {\n resolve(getBinary());\n });\n}\nfunction createWasm(env) {\n var info = {\n env: env,\n global: { NaN: NaN, Infinity: Infinity },\n \"global.Math\": Math,\n asm2wasm: asm2wasmImports,\n };\n function receiveInstance(instance, module) {\n var exports = instance.exports;\n Module[\"asm\"] = exports;\n removeRunDependency(\"wasm-instantiate\");\n }\n addRunDependency(\"wasm-instantiate\");\n var trueModule = Module;\n function receiveInstantiatedSource(output) {\n assert(\n Module === trueModule,\n \"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?\",\n );\n trueModule = null;\n receiveInstance(output[\"instance\"]);\n }\n function instantiateArrayBuffer(receiver) {\n return getBinaryPromise()\n .then(function (binary) {\n return WebAssembly.instantiate(binary, info);\n })\n .then(receiver, function (reason) {\n err(\"failed to asynchronously prepare wasm: \" + reason);\n abort(reason);\n });\n }\n function instantiateAsync() {\n if (\n !wasmBinary &&\n typeof WebAssembly.instantiateStreaming === \"function\" &&\n !isDataURI(wasmBinaryFile) &&\n typeof fetch === \"function\"\n ) {\n fetch(wasmBinaryFile, { credentials: \"same-origin\" }).then(\n function (response) {\n var result = WebAssembly.instantiateStreaming(response, info);\n return result.then(receiveInstantiatedSource, function (reason) {\n err(\"wasm streaming compile failed: \" + reason);\n err(\"falling back to ArrayBuffer instantiation\");\n instantiateArrayBuffer(receiveInstantiatedSource);\n });\n },\n );\n } else {\n return instantiateArrayBuffer(receiveInstantiatedSource);\n }\n }\n if (Module[\"instantiateWasm\"]) {\n try {\n var exports = Module[\"instantiateWasm\"](info, receiveInstance);\n return exports;\n } catch (e) {\n err(\"Module.instantiateWasm callback failed with error: \" + e);\n return false;\n }\n }\n instantiateAsync();\n return {};\n}\nModule[\"asm\"] = function (global, env, providedBuffer) {\n env[\"memory\"] = wasmMemory;\n env[\"table\"] = wasmTable = new WebAssembly.Table({\n initial: 10295,\n maximum: 10295,\n element: \"anyfunc\",\n });\n env[\"__memory_base\"] = 1024;\n env[\"__table_base\"] = 0;\n var exports = createWasm(env);\n assert(exports, \"binaryen setup failed (no wasm support?)\");\n return exports;\n};\nvar tempDouble;\nvar tempI64;\nvar ASM_CONSTS = [\n function () {\n if (typeof UI !== \"undefined\") {\n var hw = Date.now() - UI.Datestart;\n return hw;\n } else return Date.now();\n },\n function () {\n if (Module.worker) return 0;\n var ua = window.navigator.userAgent;\n var old_ie = ua.indexOf(\"MSIE \");\n var new_ie = ua.indexOf(\"Trident/\");\n if (old_ie > -1 || new_ie > -1) return 1;\n else return 0;\n },\n function ($0, $1, $2) {\n var url = UTF8ToString($0);\n console.log(\"url:\" + url);\n var req = new XMLHttpRequest();\n var bufsize = $2;\n req.open(\"GET\", url, false);\n req.overrideMimeType(\"application/octet-stream\");\n req.send(null);\n if (req.status === 200) {\n console.log(\"Réponse reçue: %s\", req.responseText);\n var s = req.responseText;\n if (s.length >= bufsize - 1) s = s.substr(0, bufsize - 1);\n Module.writeStringToMemory(s, $1);\n } else {\n console.log(\"Status de la réponse: %d (%s)\", req.status, req.statusText);\n Module.writeStringToMemory(\"ERROR\", $1);\n }\n },\n function ($0) {\n var msg = UTF8ToString($0);\n var tst = prompt(msg, \" \");\n if (tst == null) return 0;\n return allocate(intArrayFromString(tst), \"i8\", ALLOC_NORMAL);\n },\n function ($0) {\n return UI.assistant_matr_maxrows;\n },\n function ($0) {\n return UI.assistant_matr_maxcols;\n },\n function ($0) {\n var s = \" \";\n UI.sheet_recompute(s.substr(0, 0));\n UI.open_sheet(true);\n },\n function ($0, $1, $2) {\n var s = UTF8ToString($0);\n console.log(s);\n UI.sheet_set_ij(s, $1, $2);\n },\n function ($0) {\n var msg = UTF8ToString($0);\n var tst = prompt(msg, \"n\");\n if (tst == null) return -4;\n if (tst == \"next\" || tst == \"n\" || tst == \"sst\") return -1;\n if (tst == \"sst_in\" || tst == \"s\") return -2;\n if (tst == \"cont\" || tst == \"c\") return -3;\n if (tst == \"kill\" || tst == \"k\") return -4;\n if (tst == \"break\" || tst == \"b\") return -5;\n if (tst == \"delete\" || tst == \"d\") return -6;\n return allocate(intArrayFromString(tst), \"i8\", ALLOC_NORMAL);\n },\n function ($0) {\n if (typeof UI !== \"undefined\" && UI.warnpy) {\n var msg = UTF8ToString($0);\n alert(msg);\n }\n },\n function () {\n var hw = window.innerWidth;\n if (typeof svgwidth != \"undefined\") return svgwidth * 1;\n if (hw >= 1e3) return (9 * hw) / 1e3;\n else return hw / 60;\n },\n function () {\n if (\n typeof UI !== \"undefined\" &&\n typeof UI.disable3d !== \"undefined\" &&\n UI.disable3d\n )\n return UI.disable3d;\n if (Module.worker) return 1;\n else return 0;\n },\n function () {\n if (typeof UI !== \"undefined\" && typeof UI.add_evalf != \"undefined\")\n return UI.add_evalf * 1;\n return 1;\n },\n function () {\n if (typeof UI !== \"undefined\" && typeof UI.js_bigint != \"undefined\")\n return UI.js_bigint * 1;\n return 0;\n },\n function ($0, $1, $2, $3) {\n var nchannels;\n var nDataBytes;\n var nrate;\n var ptr;\n var data_size;\n nchannels = $0;\n nDataBytes = $1;\n nrate = $2;\n ptr = $3;\n data_size = nDataBytes / 4 / nchannels;\n var audioCtx = new (window.AudioContext || window.webkitAudioContext)();\n var SoundArrayBuffer = audioCtx.createBuffer(\n nchannels,\n nDataBytes,\n audioCtx.sampleRate,\n );\n var dataHeap = new Uint8Array(Module.HEAPU8.buffer, ptr, nDataBytes);\n var result = new Float32Array(\n dataHeap.buffer,\n dataHeap.byteOffset,\n nDataBytes / 4,\n );\n var j;\n var i;\n for (j = 0; j < nchannels; j++) {\n var v = SoundArrayBuffer.getChannelData(j);\n for (i = 0; i < data_size; ++i) v[i] = result[j * data_size + i];\n }\n var source = audioCtx.createBufferSource();\n source.buffer = SoundArrayBuffer;\n source.connect(audioCtx.destination);\n source.start();\n },\n function ($0) {\n var msg = UTF8ToString($0);\n console.log(msg);\n },\n function ($0, $1) {\n var text = UTF8ToString($0);\n text = text.substr(0, $1);\n UI.add_python_output(text);\n text = UI.clean_for_html(text);\n var tmp = document.getElementById(\"consolediv\");\n if (tmp != null && tmp.style.display != \"block\") {\n tmp.style.display = \"block\";\n UI.set_config_width();\n }\n var element = document.getElementById(\"output\");\n if (element != null) {\n element.style.display = \"inherit\";\n element.innerHTML += text;\n element.scrollTop = 99999;\n }\n },\n function ($0) {\n var msg = UTF8ToString($0);\n UI.python_output += msg;\n },\n];\nfunction _emscripten_asm_const_i(code) {\n return ASM_CONSTS[code]();\n}\nfunction _emscripten_asm_const_d(code) {\n return ASM_CONSTS[code]();\n}\nfunction _emscripten_asm_const_ii(code, a0) {\n return ASM_CONSTS[code](a0);\n}\nfunction _emscripten_asm_const_iiiii(code, a0, a1, a2, a3) {\n return ASM_CONSTS[code](a0, a1, a2, a3);\n}\nfunction _emscripten_asm_const_iiii(code, a0, a1, a2) {\n return ASM_CONSTS[code](a0, a1, a2);\n}\nfunction _emscripten_asm_const_iii(code, a0, a1) {\n return ASM_CONSTS[code](a0, a1);\n}\n__ATINIT__.push({\n func: function () {\n globalCtors();\n },\n});\nvar tempDoublePtr = 5313984;\nassert(tempDoublePtr % 8 == 0);\nfunction demangle(func) {\n warnOnce(\n \"warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling\",\n );\n return func;\n}\nfunction demangleAll(text) {\n var regex = /__Z[\\w\\d_]+/g;\n return text.replace(regex, function (x) {\n var y = demangle(x);\n return x === y ? x : y + \" [\" + x + \"]\";\n });\n}\nfunction jsStackTrace() {\n var err = new Error();\n if (!err.stack) {\n try {\n throw new Error(0);\n } catch (e) {\n err = e;\n }\n if (!err.stack) {\n return \"(no stack trace available)\";\n }\n }\n return err.stack.toString();\n}\nfunction stackTrace() {\n var js = jsStackTrace();\n if (Module[\"extraStackTrace\"]) js += \"\\n\" + Module[\"extraStackTrace\"]();\n return demangleAll(js);\n}\nfunction ___setErrNo(value) {\n if (Module[\"___errno_location\"])\n HEAP32[Module[\"___errno_location\"]() >> 2] = value;\n else err(\"failed to set errno from JS\");\n return value;\n}\nvar PATH = {\n splitPath: function (filename) {\n var splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n },\n normalizeArray: function (parts, allowAboveRoot) {\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === \".\") {\n parts.splice(i, 1);\n } else if (last === \"..\") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n if (allowAboveRoot) {\n for (; up; up--) {\n parts.unshift(\"..\");\n }\n }\n return parts;\n },\n normalize: function (path) {\n var isAbsolute = path.charAt(0) === \"/\",\n trailingSlash = path.substr(-1) === \"/\";\n path = PATH.normalizeArray(\n path.split(\"/\").filter(function (p) {\n return !!p;\n }),\n !isAbsolute,\n ).join(\"/\");\n if (!path && !isAbsolute) {\n path = \".\";\n }\n if (path && trailingSlash) {\n path += \"/\";\n }\n return (isAbsolute ? \"/\" : \"\") + path;\n },\n dirname: function (path) {\n var result = PATH.splitPath(path),\n root = result[0],\n dir = result[1];\n if (!root && !dir) {\n return \".\";\n }\n if (dir) {\n dir = dir.substr(0, dir.length - 1);\n }\n return root + dir;\n },\n basename: function (path) {\n if (path === \"/\") return \"/\";\n var lastSlash = path.lastIndexOf(\"/\");\n if (lastSlash === -1) return path;\n return path.substr(lastSlash + 1);\n },\n extname: function (path) {\n return PATH.splitPath(path)[3];\n },\n join: function () {\n var paths = Array.prototype.slice.call(arguments, 0);\n return PATH.normalize(paths.join(\"/\"));\n },\n join2: function (l, r) {\n return PATH.normalize(l + \"/\" + r);\n },\n};\nvar PATH_FS = {\n resolve: function () {\n var resolvedPath = \"\",\n resolvedAbsolute = false;\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = i >= 0 ? arguments[i] : 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.charAt(0) === \"/\";\n }\n resolvedPath = PATH.normalizeArray(\n resolvedPath.split(\"/\").filter(function (p) {\n return !!p;\n }),\n !resolvedAbsolute,\n ).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n },\n relative: function (from, to) {\n from = PATH_FS.resolve(from).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== \"\") break;\n }\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== \"\") break;\n }\n if (start > end) return [];\n return arr.slice(start, end - start + 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 i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push(\"..\");\n }\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n },\n};\nvar TTY = {\n ttys: [],\n init: function () {},\n shutdown: function () {},\n register: function (dev, ops) {\n TTY.ttys[dev] = { input: [], output: [], ops: ops };\n FS.registerDevice(dev, TTY.stream_ops);\n },\n stream_ops: {\n open: function (stream) {\n var tty = TTY.ttys[stream.node.rdev];\n if (!tty) {\n throw new FS.ErrnoError(19);\n }\n stream.tty = tty;\n stream.seekable = false;\n },\n close: function (stream) {\n stream.tty.ops.flush(stream.tty);\n },\n flush: function (stream) {\n stream.tty.ops.flush(stream.tty);\n },\n read: function (stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) {\n throw new FS.ErrnoError(6);\n }\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(5);\n }\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(11);\n }\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n },\n write: function (stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) {\n throw new FS.ErrnoError(6);\n }\n try {\n for (var i = 0; i < length; i++) {\n stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n }\n } catch (e) {\n throw new FS.ErrnoError(5);\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n },\n },\n default_tty_ops: {\n get_char: function (tty) {\n if (!tty.input.length) {\n var result = null;\n if (ENVIRONMENT_IS_NODE) {\n var BUFSIZE = 256;\n var buf = Buffer.alloc ? Buffer.alloc(BUFSIZE) : new Buffer(BUFSIZE);\n var bytesRead = 0;\n var isPosixPlatform = process.platform != \"win32\";\n var fd = process.stdin.fd;\n if (isPosixPlatform) {\n var usingDevice = false;\n try {\n fd = fs.openSync(\"/dev/stdin\", \"r\");\n usingDevice = true;\n } catch (e) {}\n }\n try {\n bytesRead = fs.readSync(fd, buf, 0, BUFSIZE, null);\n } catch (e) {\n if (e.toString().indexOf(\"EOF\") != -1) bytesRead = 0;\n else throw e;\n }\n if (usingDevice) {\n fs.closeSync(fd);\n }\n if (bytesRead > 0) {\n result = buf.slice(0, bytesRead).toString(\"utf-8\");\n } else {\n result = null;\n }\n } else if (\n typeof window != \"undefined\" &&\n typeof window.prompt == \"function\"\n ) {\n result = window.prompt(\"Input: \");\n if (result !== null) {\n result += \"\\n\";\n }\n } else if (typeof readline == \"function\") {\n result = readline();\n if (result !== null) {\n result += \"\\n\";\n }\n }\n if (!result) {\n return null;\n }\n tty.input = intArrayFromString(result, true);\n }\n return tty.input.shift();\n },\n put_char: function (tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n flush: function (tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n },\n },\n default_tty1_ops: {\n put_char: function (tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n flush: function (tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n },\n },\n};\nvar MEMFS = {\n ops_table: null,\n mount: function (mount) {\n return MEMFS.createNode(null, \"/\", 16384 | 511, 0);\n },\n createNode: function (parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {\n throw new FS.ErrnoError(1);\n }\n if (!MEMFS.ops_table) {\n MEMFS.ops_table = {\n dir: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n lookup: MEMFS.node_ops.lookup,\n mknod: MEMFS.node_ops.mknod,\n rename: MEMFS.node_ops.rename,\n unlink: MEMFS.node_ops.unlink,\n rmdir: MEMFS.node_ops.rmdir,\n readdir: MEMFS.node_ops.readdir,\n symlink: MEMFS.node_ops.symlink,\n },\n stream: { llseek: MEMFS.stream_ops.llseek },\n },\n file: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek,\n read: MEMFS.stream_ops.read,\n write: MEMFS.stream_ops.write,\n allocate: MEMFS.stream_ops.allocate,\n mmap: MEMFS.stream_ops.mmap,\n msync: MEMFS.stream_ops.msync,\n },\n },\n link: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n readlink: MEMFS.node_ops.readlink,\n },\n stream: {},\n },\n chrdev: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n },\n stream: FS.chrdev_stream_ops,\n },\n };\n }\n var node = FS.createNode(parent, name, 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 = null;\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.timestamp = Date.now();\n if (parent) {\n parent.contents[name] = node;\n }\n return node;\n },\n getFileDataAsRegularArray: function (node) {\n if (node.contents && node.contents.subarray) {\n var arr = [];\n for (var i = 0; i < node.usedBytes; ++i) arr.push(node.contents[i]);\n return arr;\n }\n return node.contents;\n },\n getFileDataAsTypedArray: function (node) {\n if (!node.contents) return new Uint8Array();\n if (node.contents.subarray)\n return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n },\n expandFileStorage: function (node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity) return;\n var CAPACITY_DOUBLING_MAX = 1024 * 1024;\n newCapacity = Math.max(\n newCapacity,\n (prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125)) | 0,\n );\n if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0)\n node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n return;\n },\n resizeFileStorage: function (node, newSize) {\n if (node.usedBytes == newSize) return;\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n return;\n }\n if (!node.contents || node.contents.subarray) {\n var oldContents = node.contents;\n node.contents = new Uint8Array(new ArrayBuffer(newSize));\n if (oldContents) {\n node.contents.set(\n oldContents.subarray(0, Math.min(newSize, node.usedBytes)),\n );\n }\n node.usedBytes = newSize;\n return;\n }\n if (!node.contents) node.contents = [];\n if (node.contents.length > newSize) node.contents.length = newSize;\n else while (node.contents.length < newSize) node.contents.push(0);\n node.usedBytes = newSize;\n },\n node_ops: {\n getattr: function (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.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n },\n setattr: function (node, attr) {\n if (attr.mode !== undefined) {\n node.mode = attr.mode;\n }\n if (attr.timestamp !== undefined) {\n node.timestamp = attr.timestamp;\n }\n if (attr.size !== undefined) {\n MEMFS.resizeFileStorage(node, attr.size);\n }\n },\n lookup: function (parent, name) {\n throw FS.genericErrors[2];\n },\n mknod: function (parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n },\n rename: function (old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (new_node) {\n for (var i in new_node.contents) {\n throw new FS.ErrnoError(39);\n }\n }\n }\n delete old_node.parent.contents[old_node.name];\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n old_node.parent = new_dir;\n },\n unlink: function (parent, name) {\n delete parent.contents[name];\n },\n rmdir: function (parent, name) {\n var node = FS.lookupNode(parent, name);\n for (var i in node.contents) {\n throw new FS.ErrnoError(39);\n }\n delete parent.contents[name];\n },\n readdir: function (node) {\n var entries = [\".\", \"..\"];\n for (var key in node.contents) {\n if (!node.contents.hasOwnProperty(key)) {\n continue;\n }\n entries.push(key);\n }\n return entries;\n },\n symlink: function (parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);\n node.link = oldpath;\n return node;\n },\n readlink: function (node) {\n if (!FS.isLink(node.mode)) {\n throw new FS.ErrnoError(22);\n }\n return node.link;\n },\n },\n stream_ops: {\n read: function (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 assert(size >= 0);\n if (size > 8 && contents.subarray) {\n buffer.set(contents.subarray(position, position + size), offset);\n } else {\n for (var i = 0; i < size; i++)\n buffer[offset + i] = contents[position + i];\n }\n return size;\n },\n write: function (stream, buffer, offset, length, position, canOwn) {\n if (!length) return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n assert(\n position === 0,\n \"canOwn must imply no weird position inside the file\",\n );\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = new Uint8Array(\n buffer.subarray(offset, offset + length),\n );\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer.subarray)\n node.contents.set(buffer.subarray(offset, offset + length), position);\n else {\n for (var i = 0; i < length; i++) {\n node.contents[position + i] = buffer[offset + i];\n }\n }\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n },\n llseek: function (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(22);\n }\n return position;\n },\n allocate: function (stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n },\n mmap: function (stream, buffer, offset, length, position, prot, flags) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(19);\n }\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n if (\n !(flags & 2) &&\n (contents.buffer === buffer || contents.buffer === buffer.buffer)\n ) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n if (position > 0 || position + length < stream.node.usedBytes) {\n if (contents.subarray) {\n contents = contents.subarray(position, position + length);\n } else {\n contents = Array.prototype.slice.call(\n contents,\n position,\n position + length,\n );\n }\n }\n allocated = true;\n var fromHeap = buffer.buffer == HEAP8.buffer;\n ptr = _malloc(length);\n if (!ptr) {\n throw new FS.ErrnoError(12);\n }\n (fromHeap ? HEAP8 : buffer).set(contents, ptr);\n }\n return { ptr: ptr, allocated: allocated };\n },\n msync: function (stream, buffer, offset, length, mmapFlags) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(19);\n }\n if (mmapFlags & 2) {\n return 0;\n }\n var bytesWritten = MEMFS.stream_ops.write(\n stream,\n buffer,\n 0,\n length,\n offset,\n false,\n );\n return 0;\n },\n },\n};\nvar IDBFS = {\n dbs: {},\n indexedDB: function () {\n if (typeof indexedDB !== \"undefined\") return indexedDB;\n var ret = null;\n if (typeof window === \"object\")\n ret =\n window.indexedDB ||\n window.mozIndexedDB ||\n window.webkitIndexedDB ||\n window.msIndexedDB;\n assert(ret, \"IDBFS used, but indexedDB not supported\");\n return ret;\n },\n DB_VERSION: 21,\n DB_STORE_NAME: \"FILE_DATA\",\n mount: function (mount) {\n return MEMFS.mount.apply(null, arguments);\n },\n syncfs: function (mount, populate, callback) {\n IDBFS.getLocalSet(mount, function (err, local) {\n if (err) return callback(err);\n IDBFS.getRemoteSet(mount, function (err, remote) {\n if (err) return callback(err);\n var src = populate ? remote : local;\n var dst = populate ? local : remote;\n IDBFS.reconcile(src, dst, callback);\n });\n });\n },\n getDB: function (name, callback) {\n var db = IDBFS.dbs[name];\n if (db) {\n return callback(null, db);\n }\n var req;\n try {\n req = IDBFS.indexedDB().open(name, 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 = function (e) {\n var db = e.target.result;\n var transaction = e.target.transaction;\n var fileStore;\n if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) {\n fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME);\n } else {\n fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME);\n }\n if (!fileStore.indexNames.contains(\"timestamp\")) {\n fileStore.createIndex(\"timestamp\", \"timestamp\", { unique: false });\n }\n };\n req.onsuccess = function () {\n db = req.result;\n IDBFS.dbs[name] = db;\n callback(null, db);\n };\n req.onerror = function (e) {\n callback(this.error);\n e.preventDefault();\n };\n },\n getLocalSet: function (mount, callback) {\n var entries = {};\n function isRealDir(p) {\n return p !== \".\" && p !== \"..\";\n }\n function toAbsolute(root) {\n return function (p) {\n return PATH.join2(root, p);\n };\n }\n var check = FS.readdir(mount.mountpoint)\n .filter(isRealDir)\n .map(toAbsolute(mount.mountpoint));\n while (check.length) {\n var path = check.pop();\n var stat;\n try {\n stat = FS.stat(path);\n } catch (e) {\n return callback(e);\n }\n if (FS.isDir(stat.mode)) {\n check.push.apply(\n check,\n FS.readdir(path).filter(isRealDir).map(toAbsolute(path)),\n );\n }\n entries[path] = { timestamp: stat.mtime };\n }\n return callback(null, { type: \"local\", entries: entries });\n },\n getRemoteSet: function (mount, callback) {\n var entries = {};\n IDBFS.getDB(mount.mountpoint, function (err, db) {\n if (err) return callback(err);\n try {\n var transaction = db.transaction([IDBFS.DB_STORE_NAME], \"readonly\");\n transaction.onerror = function (e) {\n callback(this.error);\n e.preventDefault();\n };\n var store = transaction.objectStore(IDBFS.DB_STORE_NAME);\n var index = store.index(\"timestamp\");\n index.openKeyCursor().onsuccess = function (event) {\n var cursor = event.target.result;\n if (!cursor) {\n return callback(null, { type: \"remote\", db: db, entries: entries });\n }\n entries[cursor.primaryKey] = { timestamp: cursor.key };\n cursor.continue();\n };\n } catch (e) {\n return callback(e);\n }\n });\n },\n loadLocalEntry: function (path, callback) {\n var stat, node;\n try {\n var lookup = FS.lookupPath(path);\n node = lookup.node;\n stat = FS.stat(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.isFile(stat.mode)) {\n node.contents = MEMFS.getFileDataAsTypedArray(node);\n return callback(null, {\n timestamp: stat.mtime,\n mode: stat.mode,\n contents: node.contents,\n });\n } else {\n return callback(new Error(\"node type not supported\"));\n }\n },\n storeLocalEntry: function (path, entry, callback) {\n try {\n if (FS.isDir(entry.mode)) {\n FS.mkdir(path, entry.mode);\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 },\n removeLocalEntry: function (path, callback) {\n try {\n var lookup = FS.lookupPath(path);\n var stat = FS.stat(path);\n if (FS.isDir(stat.mode)) {\n FS.rmdir(path);\n } else if (FS.isFile(stat.mode)) {\n FS.unlink(path);\n }\n } catch (e) {\n return callback(e);\n }\n callback(null);\n },\n loadRemoteEntry: function (store, path, callback) {\n var req = store.get(path);\n req.onsuccess = function (event) {\n callback(null, event.target.result);\n };\n req.onerror = function (e) {\n callback(this.error);\n e.preventDefault();\n };\n },\n storeRemoteEntry: function (store, path, entry, callback) {\n var req = store.put(entry, path);\n req.onsuccess = function () {\n callback(null);\n };\n req.onerror = function (e) {\n callback(this.error);\n e.preventDefault();\n };\n },\n removeRemoteEntry: function (store, path, callback) {\n var req = store.delete(path);\n req.onsuccess = function () {\n callback(null);\n };\n req.onerror = function (e) {\n callback(this.error);\n e.preventDefault();\n };\n },\n reconcile: function (src, dst, callback) {\n var total = 0;\n var create = [];\n Object.keys(src.entries).forEach(function (key) {\n var e = src.entries[key];\n var e2 = dst.entries[key];\n if (!e2 || e.timestamp > e2.timestamp) {\n create.push(key);\n total++;\n }\n });\n var remove = [];\n Object.keys(dst.entries).forEach(function (key) {\n var e = dst.entries[key];\n var e2 = src.entries[key];\n if (!e2) {\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(err) {\n if (err && !errored) {\n errored = true;\n return callback(err);\n }\n }\n transaction.onerror = function (e) {\n done(this.error);\n e.preventDefault();\n };\n transaction.oncomplete = function (e) {\n if (!errored) {\n callback(null);\n }\n };\n create.sort().forEach(function (path) {\n if (dst.type === \"local\") {\n IDBFS.loadRemoteEntry(store, path, function (err, entry) {\n if (err) return done(err);\n IDBFS.storeLocalEntry(path, entry, done);\n });\n } else {\n IDBFS.loadLocalEntry(path, function (err, entry) {\n if (err) return done(err);\n IDBFS.storeRemoteEntry(store, path, entry, done);\n });\n }\n });\n remove\n .sort()\n .reverse()\n .forEach(function (path) {\n if (dst.type === \"local\") {\n IDBFS.removeLocalEntry(path, done);\n } else {\n IDBFS.removeRemoteEntry(store, path, done);\n }\n });\n },\n};\nvar NODEFS = {\n isWindows: false,\n staticInit: function () {\n NODEFS.isWindows = !!process.platform.match(/^win/);\n var flags = process[\"binding\"](\"constants\");\n if (flags[\"fs\"]) {\n flags = flags[\"fs\"];\n }\n NODEFS.flagsForNodeMap = {\n 1024: flags[\"O_APPEND\"],\n 64: flags[\"O_CREAT\"],\n 128: flags[\"O_EXCL\"],\n 0: flags[\"O_RDONLY\"],\n 2: flags[\"O_RDWR\"],\n 4096: flags[\"O_SYNC\"],\n 512: flags[\"O_TRUNC\"],\n 1: flags[\"O_WRONLY\"],\n };\n },\n bufferFrom: function (arrayBuffer) {\n return Buffer.alloc ? Buffer.from(arrayBuffer) : new Buffer(arrayBuffer);\n },\n mount: function (mount) {\n assert(ENVIRONMENT_HAS_NODE);\n return NODEFS.createNode(null, \"/\", NODEFS.getMode(mount.opts.root), 0);\n },\n createNode: function (parent, name, mode, dev) {\n if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) {\n throw new FS.ErrnoError(22);\n }\n var node = FS.createNode(parent, name, mode);\n node.node_ops = NODEFS.node_ops;\n node.stream_ops = NODEFS.stream_ops;\n return node;\n },\n getMode: function (path) {\n var stat;\n try {\n stat = fs.lstatSync(path);\n if (NODEFS.isWindows) {\n stat.mode = stat.mode | ((stat.mode & 292) >> 2);\n }\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(-e.errno);\n }\n return stat.mode;\n },\n realPath: function (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.apply(null, parts);\n },\n flagsForNode: function (flags) {\n flags &= ~2097152;\n flags &= ~2048;\n flags &= ~32768;\n flags &= ~524288;\n var newFlags = 0;\n for (var k in NODEFS.flagsForNodeMap) {\n if (flags & k) {\n newFlags |= NODEFS.flagsForNodeMap[k];\n flags ^= k;\n }\n }\n if (!flags) {\n return newFlags;\n } else {\n throw new FS.ErrnoError(22);\n }\n },\n node_ops: {\n getattr: function (node) {\n var path = NODEFS.realPath(node);\n var stat;\n try {\n stat = fs.lstatSync(path);\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(-e.errno);\n }\n if (NODEFS.isWindows && !stat.blksize) {\n stat.blksize = 4096;\n }\n if (NODEFS.isWindows && !stat.blocks) {\n stat.blocks = ((stat.size + stat.blksize - 1) / stat.blksize) | 0;\n }\n return {\n dev: stat.dev,\n ino: stat.ino,\n mode: stat.mode,\n nlink: stat.nlink,\n uid: stat.uid,\n gid: stat.gid,\n rdev: stat.rdev,\n size: stat.size,\n atime: stat.atime,\n mtime: stat.mtime,\n ctime: stat.ctime,\n blksize: stat.blksize,\n blocks: stat.blocks,\n };\n },\n setattr: function (node, attr) {\n var path = NODEFS.realPath(node);\n try {\n if (attr.mode !== undefined) {\n fs.chmodSync(path, attr.mode);\n node.mode = attr.mode;\n }\n if (attr.timestamp !== undefined) {\n var date = new Date(attr.timestamp);\n fs.utimesSync(path, date, date);\n }\n if (attr.size !== undefined) {\n fs.truncateSync(path, attr.size);\n }\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(-e.errno);\n }\n },\n lookup: function (parent, name) {\n var path = PATH.join2(NODEFS.realPath(parent), name);\n var mode = NODEFS.getMode(path);\n return NODEFS.createNode(parent, name, mode);\n },\n mknod: function (parent, name, mode, dev) {\n var node = NODEFS.createNode(parent, name, mode, dev);\n var path = NODEFS.realPath(node);\n try {\n if (FS.isDir(node.mode)) {\n fs.mkdirSync(path, node.mode);\n } else {\n fs.writeFileSync(path, \"\", { mode: node.mode });\n }\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(-e.errno);\n }\n return node;\n },\n rename: function (oldNode, newDir, newName) {\n var oldPath = NODEFS.realPath(oldNode);\n var newPath = PATH.join2(NODEFS.realPath(newDir), newName);\n try {\n fs.renameSync(oldPath, newPath);\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(-e.errno);\n }\n },\n unlink: function (parent, name) {\n var path = PATH.join2(NODEFS.realPath(parent), name);\n try {\n fs.unlinkSync(path);\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(-e.errno);\n }\n },\n rmdir: function (parent, name) {\n var path = PATH.join2(NODEFS.realPath(parent), name);\n try {\n fs.rmdirSync(path);\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(-e.errno);\n }\n },\n readdir: function (node) {\n var path = NODEFS.realPath(node);\n try {\n return fs.readdirSync(path);\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(-e.errno);\n }\n },\n symlink: function (parent, newName, oldPath) {\n var newPath = PATH.join2(NODEFS.realPath(parent), newName);\n try {\n fs.symlinkSync(oldPath, newPath);\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(-e.errno);\n }\n },\n readlink: function (node) {\n var path = NODEFS.realPath(node);\n try {\n path = fs.readlinkSync(path);\n path = NODEJS_PATH.relative(\n NODEJS_PATH.resolve(node.mount.opts.root),\n path,\n );\n return path;\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(-e.errno);\n }\n },\n },\n stream_ops: {\n open: function (stream) {\n var path = NODEFS.realPath(stream.node);\n try {\n if (FS.isFile(stream.node.mode)) {\n stream.nfd = fs.openSync(path, NODEFS.flagsForNode(stream.flags));\n }\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(-e.errno);\n }\n },\n close: function (stream) {\n try {\n if (FS.isFile(stream.node.mode) && stream.nfd) {\n fs.closeSync(stream.nfd);\n }\n } catch (e) {\n if (!e.code) throw e;\n throw new FS.ErrnoError(-e.errno);\n }\n },\n read: function (stream, buffer, offset, length, position) {\n if (length === 0) return 0;\n try {\n return fs.readSync(\n stream.nfd,\n NODEFS.bufferFrom(buffer.buffer),\n offset,\n length,\n position,\n );\n } catch (e) {\n throw new FS.ErrnoError(-e.errno);\n }\n },\n write: function (stream, buffer, offset, length, position) {\n try {\n return fs.writeSync(\n stream.nfd,\n NODEFS.bufferFrom(buffer.buffer),\n offset,\n length,\n position,\n );\n } catch (e) {\n throw new FS.ErrnoError(-e.errno);\n }\n },\n llseek: function (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 = fs.fstatSync(stream.nfd);\n position += stat.size;\n } catch (e) {\n throw new FS.ErrnoError(-e.errno);\n }\n }\n }\n if (position < 0) {\n throw new FS.ErrnoError(22);\n }\n return position;\n },\n },\n};\nvar WORKERFS = {\n DIR_MODE: 16895,\n FILE_MODE: 33279,\n reader: null,\n mount: function (mount) {\n assert(ENVIRONMENT_IS_WORKER);\n if (!WORKERFS.reader) 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 i = 0; i < parts.length - 1; i++) {\n var curr = parts.slice(0, i + 1).join(\"/\");\n if (!createdParents[curr]) {\n createdParents[curr] = WORKERFS.createNode(\n parent,\n parts[i],\n WORKERFS.DIR_MODE,\n 0,\n );\n }\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 Array.prototype.forEach.call(mount.opts[\"files\"] || [], function (file) {\n WORKERFS.createNode(\n ensureParent(file.name),\n base(file.name),\n WORKERFS.FILE_MODE,\n 0,\n file,\n file.lastModifiedDate,\n );\n });\n (mount.opts[\"blobs\"] || []).forEach(function (obj) {\n WORKERFS.createNode(\n ensureParent(obj[\"name\"]),\n base(obj[\"name\"]),\n WORKERFS.FILE_MODE,\n 0,\n obj[\"data\"],\n );\n });\n (mount.opts[\"packages\"] || []).forEach(function (pack) {\n pack[\"metadata\"].files.forEach(function (file) {\n var name = file.filename.substr(1);\n WORKERFS.createNode(\n ensureParent(name),\n base(name),\n WORKERFS.FILE_MODE,\n 0,\n pack[\"blob\"].slice(file.start, file.end),\n );\n });\n });\n return root;\n },\n createNode: function (parent, name, mode, dev, contents, mtime) {\n var node = FS.createNode(parent, name, mode);\n node.mode = mode;\n node.node_ops = WORKERFS.node_ops;\n node.stream_ops = WORKERFS.stream_ops;\n node.timestamp = (mtime || 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[name] = node;\n }\n return node;\n },\n node_ops: {\n getattr: function (node) {\n return {\n dev: 1,\n ino: undefined,\n mode: node.mode,\n nlink: 1,\n uid: 0,\n gid: 0,\n rdev: undefined,\n size: node.size,\n atime: new Date(node.timestamp),\n mtime: new Date(node.timestamp),\n ctime: new Date(node.timestamp),\n blksize: 4096,\n blocks: Math.ceil(node.size / 4096),\n };\n },\n setattr: function (node, attr) {\n if (attr.mode !== undefined) {\n node.mode = attr.mode;\n }\n if (attr.timestamp !== undefined) {\n node.timestamp = attr.timestamp;\n }\n },\n lookup: function (parent, name) {\n throw new FS.ErrnoError(2);\n },\n mknod: function (parent, name, mode, dev) {\n throw new FS.ErrnoError(1);\n },\n rename: function (oldNode, newDir, newName) {\n throw new FS.ErrnoError(1);\n },\n unlink: function (parent, name) {\n throw new FS.ErrnoError(1);\n },\n rmdir: function (parent, name) {\n throw new FS.ErrnoError(1);\n },\n readdir: function (node) {\n var entries = [\".\", \"..\"];\n for (var key in node.contents) {\n if (!node.contents.hasOwnProperty(key)) {\n continue;\n }\n entries.push(key);\n }\n return entries;\n },\n symlink: function (parent, newName, oldPath) {\n throw new FS.ErrnoError(1);\n },\n readlink: function (node) {\n throw new FS.ErrnoError(1);\n },\n },\n stream_ops: {\n read: function (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 },\n write: function (stream, buffer, offset, length, position) {\n throw new FS.ErrnoError(5);\n },\n llseek: function (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(22);\n }\n return position;\n },\n },\n};\nvar ERRNO_MESSAGES = {\n 0: \"Success\",\n 1: \"Not super-user\",\n 2: \"No such file or directory\",\n 3: \"No such process\",\n 4: \"Interrupted system call\",\n 5: \"I/O error\",\n 6: \"No such device or address\",\n 7: \"Arg list too long\",\n 8: \"Exec format error\",\n 9: \"Bad file number\",\n 10: \"No children\",\n 11: \"No more processes\",\n 12: \"Not enough core\",\n 13: \"Permission denied\",\n 14: \"Bad address\",\n 15: \"Block device required\",\n 16: \"Mount device busy\",\n 17: \"File exists\",\n 18: \"Cross-device link\",\n 19: \"No such device\",\n 20: \"Not a directory\",\n 21: \"Is a directory\",\n 22: \"Invalid argument\",\n 23: \"Too many open files in system\",\n 24: \"Too many open files\",\n 25: \"Not a typewriter\",\n 26: \"Text file busy\",\n 27: \"File too large\",\n 28: \"No space left on device\",\n 29: \"Illegal seek\",\n 30: \"Read only file system\",\n 31: \"Too many links\",\n 32: \"Broken pipe\",\n 33: \"Math arg out of domain of func\",\n 34: \"Math result not representable\",\n 35: \"File locking deadlock error\",\n 36: \"File or path name too long\",\n 37: \"No record locks available\",\n 38: \"Function not implemented\",\n 39: \"Directory not empty\",\n 40: \"Too many symbolic links\",\n 42: \"No message of desired type\",\n 43: \"Identifier removed\",\n 44: \"Channel number out of range\",\n 45: \"Level 2 not synchronized\",\n 46: \"Level 3 halted\",\n 47: \"Level 3 reset\",\n 48: \"Link number out of range\",\n 49: \"Protocol driver not attached\",\n 50: \"No CSI structure available\",\n 51: \"Level 2 halted\",\n 52: \"Invalid exchange\",\n 53: \"Invalid request descriptor\",\n 54: \"Exchange full\",\n 55: \"No anode\",\n 56: \"Invalid request code\",\n 57: \"Invalid slot\",\n 59: \"Bad font file fmt\",\n 60: \"Device not a stream\",\n 61: \"No data (for no delay io)\",\n 62: \"Timer expired\",\n 63: \"Out of streams resources\",\n 64: \"Machine is not on the network\",\n 65: \"Package not installed\",\n 66: \"The object is remote\",\n 67: \"The link has been severed\",\n 68: \"Advertise error\",\n 69: \"Srmount error\",\n 70: \"Communication error on send\",\n 71: \"Protocol error\",\n 72: \"Multihop attempted\",\n 73: \"Cross mount point (not really error)\",\n 74: \"Trying to read unreadable message\",\n 75: \"Value too large for defined data type\",\n 76: \"Given log. name not unique\",\n 77: \"f.d. invalid for this operation\",\n 78: \"Remote address changed\",\n 79: \"Can access a needed shared lib\",\n 80: \"Accessing a corrupted shared lib\",\n 81: \".lib section in a.out corrupted\",\n 82: \"Attempting to link in too many libs\",\n 83: \"Attempting to exec a shared library\",\n 84: \"Illegal byte sequence\",\n 86: \"Streams pipe error\",\n 87: \"Too many users\",\n 88: \"Socket operation on non-socket\",\n 89: \"Destination address required\",\n 90: \"Message too long\",\n 91: \"Protocol wrong type for socket\",\n 92: \"Protocol not available\",\n 93: \"Unknown protocol\",\n 94: \"Socket type not supported\",\n 95: \"Not supported\",\n 96: \"Protocol family not supported\",\n 97: \"Address family not supported by protocol family\",\n 98: \"Address already in use\",\n 99: \"Address not available\",\n 100: \"Network interface is not configured\",\n 101: \"Network is unreachable\",\n 102: \"Connection reset by network\",\n 103: \"Connection aborted\",\n 104: \"Connection reset by peer\",\n 105: \"No buffer space available\",\n 106: \"Socket is already connected\",\n 107: \"Socket is not connected\",\n 108: \"Can't send after socket shutdown\",\n 109: \"Too many references\",\n 110: \"Connection timed out\",\n 111: \"Connection refused\",\n 112: \"Host is down\",\n 113: \"Host is unreachable\",\n 114: \"Socket already connected\",\n 115: \"Connection already in progress\",\n 116: \"Stale file handle\",\n 122: \"Quota exceeded\",\n 123: \"No medium (in tape drive)\",\n 125: \"Operation canceled\",\n 130: \"Previous owner died\",\n 131: \"State not recoverable\",\n};\nvar ERRNO_CODES = {\n EPERM: 1,\n ENOENT: 2,\n ESRCH: 3,\n EINTR: 4,\n EIO: 5,\n ENXIO: 6,\n E2BIG: 7,\n ENOEXEC: 8,\n EBADF: 9,\n ECHILD: 10,\n EAGAIN: 11,\n EWOULDBLOCK: 11,\n ENOMEM: 12,\n EACCES: 13,\n EFAULT: 14,\n ENOTBLK: 15,\n EBUSY: 16,\n EEXIST: 17,\n EXDEV: 18,\n ENODEV: 19,\n ENOTDIR: 20,\n EISDIR: 21,\n EINVAL: 22,\n ENFILE: 23,\n EMFILE: 24,\n ENOTTY: 25,\n ETXTBSY: 26,\n EFBIG: 27,\n ENOSPC: 28,\n ESPIPE: 29,\n EROFS: 30,\n EMLINK: 31,\n EPIPE: 32,\n EDOM: 33,\n ERANGE: 34,\n ENOMSG: 42,\n EIDRM: 43,\n ECHRNG: 44,\n EL2NSYNC: 45,\n EL3HLT: 46,\n EL3RST: 47,\n ELNRNG: 48,\n EUNATCH: 49,\n ENOCSI: 50,\n EL2HLT: 51,\n EDEADLK: 35,\n ENOLCK: 37,\n EBADE: 52,\n EBADR: 53,\n EXFULL: 54,\n ENOANO: 55,\n EBADRQC: 56,\n EBADSLT: 57,\n EDEADLOCK: 35,\n EBFONT: 59,\n ENOSTR: 60,\n ENODATA: 61,\n ETIME: 62,\n ENOSR: 63,\n ENONET: 64,\n ENOPKG: 65,\n EREMOTE: 66,\n ENOLINK: 67,\n EADV: 68,\n ESRMNT: 69,\n ECOMM: 70,\n EPROTO: 71,\n EMULTIHOP: 72,\n EDOTDOT: 73,\n EBADMSG: 74,\n ENOTUNIQ: 76,\n EBADFD: 77,\n EREMCHG: 78,\n ELIBACC: 79,\n ELIBBAD: 80,\n ELIBSCN: 81,\n ELIBMAX: 82,\n ELIBEXEC: 83,\n ENOSYS: 38,\n ENOTEMPTY: 39,\n ENAMETOOLONG: 36,\n ELOOP: 40,\n EOPNOTSUPP: 95,\n EPFNOSUPPORT: 96,\n ECONNRESET: 104,\n ENOBUFS: 105,\n EAFNOSUPPORT: 97,\n EPROTOTYPE: 91,\n ENOTSOCK: 88,\n ENOPROTOOPT: 92,\n ESHUTDOWN: 108,\n ECONNREFUSED: 111,\n EADDRINUSE: 98,\n ECONNABORTED: 103,\n ENETUNREACH: 101,\n ENETDOWN: 100,\n ETIMEDOUT: 110,\n EHOSTDOWN: 112,\n EHOSTUNREACH: 113,\n EINPROGRESS: 115,\n EALREADY: 114,\n EDESTADDRREQ: 89,\n EMSGSIZE: 90,\n EPROTONOSUPPORT: 93,\n ESOCKTNOSUPPORT: 94,\n EADDRNOTAVAIL: 99,\n ENETRESET: 102,\n EISCONN: 106,\n ENOTCONN: 107,\n ETOOMANYREFS: 109,\n EUSERS: 87,\n EDQUOT: 122,\n ESTALE: 116,\n ENOTSUP: 95,\n ENOMEDIUM: 123,\n EILSEQ: 84,\n EOVERFLOW: 75,\n ECANCELED: 125,\n ENOTRECOVERABLE: 131,\n EOWNERDEAD: 130,\n ESTRPIPE: 86,\n};\nvar FS = {\n root: null,\n mounts: [],\n devices: {},\n streams: [],\n nextInode: 1,\n nameTable: null,\n currentPath: \"/\",\n initialized: false,\n ignorePermissions: true,\n trackingDelegate: {},\n tracking: { openFlags: { READ: 1, WRITE: 2 } },\n ErrnoError: null,\n genericErrors: {},\n filesystems: null,\n syncFSRequests: 0,\n handleFSError: function (e) {\n if (!(e instanceof FS.ErrnoError)) throw e + \" : \" + stackTrace();\n return ___setErrNo(e.errno);\n },\n lookupPath: function (path, opts) {\n path = PATH_FS.resolve(FS.cwd(), path);\n opts = opts || {};\n if (!path) return { path: \"\", node: null };\n var defaults = { follow_mount: true, recurse_count: 0 };\n for (var key in defaults) {\n if (opts[key] === undefined) {\n opts[key] = defaults[key];\n }\n }\n if (opts.recurse_count > 8) {\n throw new FS.ErrnoError(40);\n }\n var parts = PATH.normalizeArray(\n path.split(\"/\").filter(function (p) {\n return !!p;\n }),\n false,\n );\n var current = FS.root;\n var current_path = \"/\";\n for (var i = 0; i < parts.length; i++) {\n var islast = i === parts.length - 1;\n if (islast && opts.parent) {\n break;\n }\n current = FS.lookupNode(current, parts[i]);\n current_path = PATH.join2(current_path, parts[i]);\n if (FS.isMountpoint(current)) {\n if (!islast || (islast && opts.follow_mount)) {\n current = current.mounted.root;\n }\n }\n if (!islast || opts.follow) {\n var count = 0;\n while (FS.isLink(current.mode)) {\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n var lookup = FS.lookupPath(current_path, {\n recurse_count: opts.recurse_count,\n });\n current = lookup.node;\n if (count++ > 40) {\n throw new FS.ErrnoError(40);\n }\n }\n }\n }\n return { path: current_path, node: current };\n },\n getPath: function (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] !== \"/\"\n ? mount + \"/\" + path\n : mount + path;\n }\n path = path ? node.name + \"/\" + path : node.name;\n node = node.parent;\n }\n },\n hashName: function (parentid, name) {\n var hash = 0;\n for (var i = 0; i < name.length; i++) {\n hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0;\n }\n return ((parentid + hash) >>> 0) % FS.nameTable.length;\n },\n hashAddNode: function (node) {\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n },\n hashRemoveNode: function (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 },\n lookupNode: function (parent, name) {\n var err = FS.mayLookup(parent);\n if (err) {\n throw new FS.ErrnoError(err, parent);\n }\n var hash = FS.hashName(parent.id, name);\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 === name) {\n return node;\n }\n }\n return FS.lookup(parent, name);\n },\n createNode: function (parent, name, mode, rdev) {\n if (!FS.FSNode) {\n FS.FSNode = function (parent, name, mode, rdev) {\n if (!parent) {\n parent = this;\n }\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n };\n FS.FSNode.prototype = {};\n var readMode = 292 | 73;\n var writeMode = 146;\n Object.defineProperties(FS.FSNode.prototype, {\n read: {\n get: function () {\n return (this.mode & readMode) === readMode;\n },\n set: function (val) {\n val ? (this.mode |= readMode) : (this.mode &= ~readMode);\n },\n },\n write: {\n get: function () {\n return (this.mode & writeMode) === writeMode;\n },\n set: function (val) {\n val ? (this.mode |= writeMode) : (this.mode &= ~writeMode);\n },\n },\n isFolder: {\n get: function () {\n return FS.isDir(this.mode);\n },\n },\n isDevice: {\n get: function () {\n return FS.isChrdev(this.mode);\n },\n },\n });\n }\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n },\n destroyNode: function (node) {\n FS.hashRemoveNode(node);\n },\n isRoot: function (node) {\n return node === node.parent;\n },\n isMountpoint: function (node) {\n return !!node.mounted;\n },\n isFile: function (mode) {\n return (mode & 61440) === 32768;\n },\n isDir: function (mode) {\n return (mode & 61440) === 16384;\n },\n isLink: function (mode) {\n return (mode & 61440) === 40960;\n },\n isChrdev: function (mode) {\n return (mode & 61440) === 8192;\n },\n isBlkdev: function (mode) {\n return (mode & 61440) === 24576;\n },\n isFIFO: function (mode) {\n return (mode & 61440) === 4096;\n },\n isSocket: function (mode) {\n return (mode & 49152) === 49152;\n },\n flagModes: {\n r: 0,\n rs: 1052672,\n \"r+\": 2,\n w: 577,\n wx: 705,\n xw: 705,\n \"w+\": 578,\n \"wx+\": 706,\n \"xw+\": 706,\n a: 1089,\n ax: 1217,\n xa: 1217,\n \"a+\": 1090,\n \"ax+\": 1218,\n \"xa+\": 1218,\n },\n modeStringToFlags: function (str) {\n var flags = FS.flagModes[str];\n if (typeof flags === \"undefined\") {\n throw new Error(\"Unknown file open mode: \" + str);\n }\n return flags;\n },\n flagsToPermissionString: function (flag) {\n var perms = [\"r\", \"w\", \"rw\"][flag & 3];\n if (flag & 512) {\n perms += \"w\";\n }\n return perms;\n },\n nodePermissions: function (node, perms) {\n if (FS.ignorePermissions) {\n return 0;\n }\n if (perms.indexOf(\"r\") !== -1 && !(node.mode & 292)) {\n return 13;\n } else if (perms.indexOf(\"w\") !== -1 && !(node.mode & 146)) {\n return 13;\n } else if (perms.indexOf(\"x\") !== -1 && !(node.mode & 73)) {\n return 13;\n }\n return 0;\n },\n mayLookup: function (dir) {\n var err = FS.nodePermissions(dir, \"x\");\n if (err) return err;\n if (!dir.node_ops.lookup) return 13;\n return 0;\n },\n mayCreate: function (dir, name) {\n try {\n var node = FS.lookupNode(dir, name);\n return 17;\n } catch (e) {}\n return FS.nodePermissions(dir, \"wx\");\n },\n mayDelete: function (dir, name, isdir) {\n var node;\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n var err = FS.nodePermissions(dir, \"wx\");\n if (err) {\n return err;\n }\n if (isdir) {\n if (!FS.isDir(node.mode)) {\n return 20;\n }\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {\n return 16;\n }\n } else {\n if (FS.isDir(node.mode)) {\n return 21;\n }\n }\n return 0;\n },\n mayOpen: function (node, flags) {\n if (!node) {\n return 2;\n }\n if (FS.isLink(node.mode)) {\n return 40;\n } else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) {\n return 21;\n }\n }\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n },\n MAX_OPEN_FDS: 4096,\n nextfd: function (fd_start, fd_end) {\n fd_start = fd_start || 0;\n fd_end = fd_end || FS.MAX_OPEN_FDS;\n for (var fd = fd_start; fd <= fd_end; fd++) {\n if (!FS.streams[fd]) {\n return fd;\n }\n }\n throw new FS.ErrnoError(24);\n },\n getStream: function (fd) {\n return FS.streams[fd];\n },\n createStream: function (stream, fd_start, fd_end) {\n if (!FS.FSStream) {\n FS.FSStream = function () {};\n FS.FSStream.prototype = {};\n Object.defineProperties(FS.FSStream.prototype, {\n object: {\n get: function () {\n return this.node;\n },\n set: function (val) {\n this.node = val;\n },\n },\n isRead: {\n get: function () {\n return (this.flags & 2097155) !== 1;\n },\n },\n isWrite: {\n get: function () {\n return (this.flags & 2097155) !== 0;\n },\n },\n isAppend: {\n get: function () {\n return this.flags & 1024;\n },\n },\n });\n }\n var newStream = new FS.FSStream();\n for (var p in stream) {\n newStream[p] = stream[p];\n }\n stream = newStream;\n var fd = FS.nextfd(fd_start, fd_end);\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n },\n closeStream: function (fd) {\n FS.streams[fd] = null;\n },\n chrdev_stream_ops: {\n open: function (stream) {\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n },\n llseek: function () {\n throw new FS.ErrnoError(29);\n },\n },\n major: function (dev) {\n return dev >> 8;\n },\n minor: function (dev) {\n return dev & 255;\n },\n makedev: function (ma, mi) {\n return (ma << 8) | mi;\n },\n registerDevice: function (dev, ops) {\n FS.devices[dev] = { stream_ops: ops };\n },\n getDevice: function (dev) {\n return FS.devices[dev];\n },\n getMounts: function (mount) {\n var mounts = [];\n var check = [mount];\n while (check.length) {\n var m = check.pop();\n mounts.push(m);\n check.push.apply(check, m.mounts);\n }\n return mounts;\n },\n syncfs: function (populate, callback) {\n if (typeof populate === \"function\") {\n callback = populate;\n populate = false;\n }\n FS.syncFSRequests++;\n if (FS.syncFSRequests > 1) {\n console.log(\n \"warning: \" +\n FS.syncFSRequests +\n \" FS.syncfs operations in flight at once, probably just doing extra work\",\n );\n }\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n function doCallback(err) {\n assert(FS.syncFSRequests > 0);\n FS.syncFSRequests--;\n return callback(err);\n }\n function done(err) {\n if (err) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(err);\n }\n return;\n }\n if (++completed >= mounts.length) {\n doCallback(null);\n }\n }\n mounts.forEach(function (mount) {\n if (!mount.type.syncfs) {\n return done(null);\n }\n mount.type.syncfs(mount, populate, done);\n });\n },\n mount: function (type, opts, mountpoint) {\n var root = mountpoint === \"/\";\n var pseudo = !mountpoint;\n var node;\n if (root && FS.root) {\n throw new FS.ErrnoError(16);\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(16);\n }\n if (!FS.isDir(node.mode)) {\n throw new FS.ErrnoError(20);\n }\n }\n var mount = { type: type, opts: opts, mountpoint: 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 },\n unmount: function (mountpoint) {\n var lookup = FS.lookupPath(mountpoint, { follow_mount: false });\n if (!FS.isMountpoint(lookup.node)) {\n throw new FS.ErrnoError(22);\n }\n var node = lookup.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach(function (hash) {\n var current = FS.nameTable[hash];\n while (current) {\n var next = current.name_next;\n if (mounts.indexOf(current.mount) !== -1) {\n FS.destroyNode(current);\n }\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n assert(idx !== -1);\n node.mount.mounts.splice(idx, 1);\n },\n lookup: function (parent, name) {\n return parent.node_ops.lookup(parent, name);\n },\n mknod: function (path, mode, dev) {\n var lookup = FS.lookupPath(path, { parent: true });\n var parent = lookup.node;\n var name = PATH.basename(path);\n if (!name || name === \".\" || name === \"..\") {\n throw new FS.ErrnoError(22);\n }\n var err = FS.mayCreate(parent, name);\n if (err) {\n throw new FS.ErrnoError(err);\n }\n if (!parent.node_ops.mknod) {\n throw new FS.ErrnoError(1);\n }\n return parent.node_ops.mknod(parent, name, mode, dev);\n },\n create: function (path, mode) {\n mode = mode !== undefined ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n },\n mkdir: function (path, mode) {\n mode = mode !== undefined ? mode : 511;\n mode &= 511 | 512;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n },\n mkdirTree: function (path, mode) {\n var dirs = path.split(\"/\");\n var d = \"\";\n for (var i = 0; i < dirs.length; ++i) {\n if (!dirs[i]) continue;\n d += \"/\" + dirs[i];\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 17) throw e;\n }\n }\n },\n mkdev: function (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 },\n symlink: function (oldpath, newpath) {\n if (!PATH_FS.resolve(oldpath)) {\n throw new FS.ErrnoError(2);\n }\n var lookup = FS.lookupPath(newpath, { parent: true });\n var parent = lookup.node;\n if (!parent) {\n throw new FS.ErrnoError(2);\n }\n var newname = PATH.basename(newpath);\n var err = FS.mayCreate(parent, newname);\n if (err) {\n throw new FS.ErrnoError(err);\n }\n if (!parent.node_ops.symlink) {\n throw new FS.ErrnoError(1);\n }\n return parent.node_ops.symlink(parent, newname, oldpath);\n },\n rename: function (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 try {\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 } catch (e) {\n throw new FS.ErrnoError(16);\n }\n if (!old_dir || !new_dir) throw new FS.ErrnoError(2);\n if (old_dir.mount !== new_dir.mount) {\n throw new FS.ErrnoError(18);\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(22);\n }\n relative = PATH_FS.relative(new_path, old_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(39);\n }\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (old_node === new_node) {\n return;\n }\n var isdir = FS.isDir(old_node.mode);\n var err = FS.mayDelete(old_dir, old_name, isdir);\n if (err) {\n throw new FS.ErrnoError(err);\n }\n err = new_node\n ? FS.mayDelete(new_dir, new_name, isdir)\n : FS.mayCreate(new_dir, new_name);\n if (err) {\n throw new FS.ErrnoError(err);\n }\n if (!old_dir.node_ops.rename) {\n throw new FS.ErrnoError(1);\n }\n if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) {\n throw new FS.ErrnoError(16);\n }\n if (new_dir !== old_dir) {\n err = FS.nodePermissions(old_dir, \"w\");\n if (err) {\n throw new FS.ErrnoError(err);\n }\n }\n try {\n if (FS.trackingDelegate[\"willMovePath\"]) {\n FS.trackingDelegate[\"willMovePath\"](old_path, new_path);\n }\n } catch (e) {\n console.log(\n \"FS.trackingDelegate['willMovePath']('\" +\n old_path +\n \"', '\" +\n new_path +\n \"') threw an exception: \" +\n e.message,\n );\n }\n FS.hashRemoveNode(old_node);\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n } catch (e) {\n throw e;\n } finally {\n FS.hashAddNode(old_node);\n }\n try {\n if (FS.trackingDelegate[\"onMovePath\"])\n FS.trackingDelegate[\"onMovePath\"](old_path, new_path);\n } catch (e) {\n console.log(\n \"FS.trackingDelegate['onMovePath']('\" +\n old_path +\n \"', '\" +\n new_path +\n \"') threw an exception: \" +\n e.message,\n );\n }\n },\n rmdir: function (path) {\n var lookup = FS.lookupPath(path, { parent: true });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var err = FS.mayDelete(parent, name, true);\n if (err) {\n throw new FS.ErrnoError(err);\n }\n if (!parent.node_ops.rmdir) {\n throw new FS.ErrnoError(1);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(16);\n }\n try {\n if (FS.trackingDelegate[\"willDeletePath\"]) {\n FS.trackingDelegate[\"willDeletePath\"](path);\n }\n } catch (e) {\n console.log(\n \"FS.trackingDelegate['willDeletePath']('\" +\n path +\n \"') threw an exception: \" +\n e.message,\n );\n }\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n try {\n if (FS.trackingDelegate[\"onDeletePath\"])\n FS.trackingDelegate[\"onDeletePath\"](path);\n } catch (e) {\n console.log(\n \"FS.trackingDelegate['onDeletePath']('\" +\n path +\n \"') threw an exception: \" +\n e.message,\n );\n }\n },\n readdir: function (path) {\n var lookup = FS.lookupPath(path, { follow: true });\n var node = lookup.node;\n if (!node.node_ops.readdir) {\n throw new FS.ErrnoError(20);\n }\n return node.node_ops.readdir(node);\n },\n unlink: function (path) {\n var lookup = FS.lookupPath(path, { parent: true });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var err = FS.mayDelete(parent, name, false);\n if (err) {\n throw new FS.ErrnoError(err);\n }\n if (!parent.node_ops.unlink) {\n throw new FS.ErrnoError(1);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(16);\n }\n try {\n if (FS.trackingDelegate[\"willDeletePath\"]) {\n FS.trackingDelegate[\"willDeletePath\"](path);\n }\n } catch (e) {\n console.log(\n \"FS.trackingDelegate['willDeletePath']('\" +\n path +\n \"') threw an exception: \" +\n e.message,\n );\n }\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n try {\n if (FS.trackingDelegate[\"onDeletePath\"])\n FS.trackingDelegate[\"onDeletePath\"](path);\n } catch (e) {\n console.log(\n \"FS.trackingDelegate['onDeletePath']('\" +\n path +\n \"') threw an exception: \" +\n e.message,\n );\n }\n },\n readlink: function (path) {\n var lookup = FS.lookupPath(path);\n var link = lookup.node;\n if (!link) {\n throw new FS.ErrnoError(2);\n }\n if (!link.node_ops.readlink) {\n throw new FS.ErrnoError(22);\n }\n return PATH_FS.resolve(\n FS.getPath(link.parent),\n link.node_ops.readlink(link),\n );\n },\n stat: function (path, dontFollow) {\n var lookup = FS.lookupPath(path, { follow: !dontFollow });\n var node = lookup.node;\n if (!node) {\n throw new FS.ErrnoError(2);\n }\n if (!node.node_ops.getattr) {\n throw new FS.ErrnoError(1);\n }\n return node.node_ops.getattr(node);\n },\n lstat: function (path) {\n return FS.stat(path, true);\n },\n chmod: function (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 if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(1);\n }\n node.node_ops.setattr(node, {\n mode: (mode & 4095) | (node.mode & ~4095),\n timestamp: Date.now(),\n });\n },\n lchmod: function (path, mode) {\n FS.chmod(path, mode, true);\n },\n fchmod: function (fd, mode) {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(9);\n }\n FS.chmod(stream.node, mode);\n },\n chown: function (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 if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(1);\n }\n node.node_ops.setattr(node, { timestamp: Date.now() });\n },\n lchown: function (path, uid, gid) {\n FS.chown(path, uid, gid, true);\n },\n fchown: function (fd, uid, gid) {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(9);\n }\n FS.chown(stream.node, uid, gid);\n },\n truncate: function (path, len) {\n if (len < 0) {\n throw new FS.ErrnoError(22);\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 if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(1);\n }\n if (FS.isDir(node.mode)) {\n throw new FS.ErrnoError(21);\n }\n if (!FS.isFile(node.mode)) {\n throw new FS.ErrnoError(22);\n }\n var err = FS.nodePermissions(node, \"w\");\n if (err) {\n throw new FS.ErrnoError(err);\n }\n node.node_ops.setattr(node, { size: len, timestamp: Date.now() });\n },\n ftruncate: function (fd, len) {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(9);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(22);\n }\n FS.truncate(stream.node, len);\n },\n utime: function (path, atime, mtime) {\n var lookup = FS.lookupPath(path, { follow: true });\n var node = lookup.node;\n node.node_ops.setattr(node, { timestamp: Math.max(atime, mtime) });\n },\n open: function (path, flags, mode, fd_start, fd_end) {\n if (path === \"\") {\n throw new FS.ErrnoError(2);\n }\n flags = typeof flags === \"string\" ? FS.modeStringToFlags(flags) : flags;\n mode = typeof mode === \"undefined\" ? 438 : mode;\n if (flags & 64) {\n mode = (mode & 4095) | 32768;\n } else {\n mode = 0;\n }\n var node;\n if (typeof path === \"object\") {\n node = path;\n } else {\n path = PATH.normalize(path);\n try {\n var lookup = FS.lookupPath(path, { follow: !(flags & 131072) });\n node = lookup.node;\n } catch (e) {}\n }\n var created = false;\n if (flags & 64) {\n if (node) {\n if (flags & 128) {\n throw new FS.ErrnoError(17);\n }\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n }\n if (!node) {\n throw new FS.ErrnoError(2);\n }\n if (FS.isChrdev(node.mode)) {\n flags &= ~512;\n }\n if (flags & 65536 && !FS.isDir(node.mode)) {\n throw new FS.ErrnoError(20);\n }\n if (!created) {\n var err = FS.mayOpen(node, flags);\n if (err) {\n throw new FS.ErrnoError(err);\n }\n }\n if (flags & 512) {\n FS.truncate(node, 0);\n }\n flags &= ~(128 | 512);\n var stream = FS.createStream(\n {\n node: node,\n path: FS.getPath(node),\n flags: flags,\n seekable: true,\n position: 0,\n stream_ops: node.stream_ops,\n ungotten: [],\n error: false,\n },\n fd_start,\n fd_end,\n );\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n if (Module[\"logReadFiles\"] && !(flags & 1)) {\n if (!FS.readFiles) FS.readFiles = {};\n if (!(path in FS.readFiles)) {\n FS.readFiles[path] = 1;\n console.log(\"FS.trackingDelegate error on read file: \" + path);\n }\n }\n try {\n if (FS.trackingDelegate[\"onOpenFile\"]) {\n var trackingFlags = 0;\n if ((flags & 2097155) !== 1) {\n trackingFlags |= FS.tracking.openFlags.READ;\n }\n if ((flags & 2097155) !== 0) {\n trackingFlags |= FS.tracking.openFlags.WRITE;\n }\n FS.trackingDelegate[\"onOpenFile\"](path, trackingFlags);\n }\n } catch (e) {\n console.log(\n \"FS.trackingDelegate['onOpenFile']('\" +\n path +\n \"', flags) threw an exception: \" +\n e.message,\n );\n }\n return stream;\n },\n close: function (stream) {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(9);\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 },\n isClosed: function (stream) {\n return stream.fd === null;\n },\n llseek: function (stream, offset, whence) {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(9);\n }\n if (!stream.seekable || !stream.stream_ops.llseek) {\n throw new FS.ErrnoError(29);\n }\n if (whence != 0 && whence != 1 && whence != 2) {\n throw new FS.ErrnoError(22);\n }\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n },\n read: function (stream, buffer, offset, length, position) {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(22);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(9);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(9);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(21);\n }\n if (!stream.stream_ops.read) {\n throw new FS.ErrnoError(22);\n }\n var seeking = typeof position !== \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(29);\n }\n var bytesRead = stream.stream_ops.read(\n stream,\n buffer,\n offset,\n length,\n position,\n );\n if (!seeking) stream.position += bytesRead;\n return bytesRead;\n },\n write: function (stream, buffer, offset, length, position, canOwn) {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(22);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(9);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(9);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(21);\n }\n if (!stream.stream_ops.write) {\n throw new FS.ErrnoError(22);\n }\n if (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(29);\n }\n var bytesWritten = stream.stream_ops.write(\n stream,\n buffer,\n offset,\n length,\n position,\n canOwn,\n );\n if (!seeking) stream.position += bytesWritten;\n try {\n if (stream.path && FS.trackingDelegate[\"onWriteToFile\"])\n FS.trackingDelegate[\"onWriteToFile\"](stream.path);\n } catch (e) {\n console.log(\n \"FS.trackingDelegate['onWriteToFile']('\" +\n stream.path +\n \"') threw an exception: \" +\n e.message,\n );\n }\n return bytesWritten;\n },\n allocate: function (stream, offset, length) {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(9);\n }\n if (offset < 0 || length <= 0) {\n throw new FS.ErrnoError(22);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(9);\n }\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(19);\n }\n if (!stream.stream_ops.allocate) {\n throw new FS.ErrnoError(95);\n }\n stream.stream_ops.allocate(stream, offset, length);\n },\n mmap: function (stream, buffer, offset, length, position, prot, flags) {\n if (\n (prot & 2) !== 0 &&\n (flags & 2) === 0 &&\n (stream.flags & 2097155) !== 2\n ) {\n throw new FS.ErrnoError(13);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(13);\n }\n if (!stream.stream_ops.mmap) {\n throw new FS.ErrnoError(19);\n }\n return stream.stream_ops.mmap(\n stream,\n buffer,\n offset,\n length,\n position,\n prot,\n flags,\n );\n },\n msync: function (stream, buffer, offset, length, mmapFlags) {\n if (!stream || !stream.stream_ops.msync) {\n return 0;\n }\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n },\n munmap: function (stream) {\n return 0;\n },\n ioctl: function (stream, cmd, arg) {\n if (!stream.stream_ops.ioctl) {\n throw new FS.ErrnoError(25);\n }\n return stream.stream_ops.ioctl(stream, cmd, arg);\n },\n readFile: function (path, opts) {\n opts = opts || {};\n opts.flags = opts.flags || \"r\";\n opts.encoding = opts.encoding || \"binary\";\n if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") {\n throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\n }\n var ret;\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 ret = UTF8ArrayToString(buf, 0);\n } else if (opts.encoding === \"binary\") {\n ret = buf;\n }\n FS.close(stream);\n return ret;\n },\n writeFile: function (path, data, opts) {\n opts = opts || {};\n opts.flags = opts.flags || \"w\";\n var stream = FS.open(path, opts.flags, opts.mode);\n if (typeof data === \"string\") {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) {\n FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn);\n } else {\n throw new Error(\"Unsupported data type\");\n }\n FS.close(stream);\n },\n cwd: function () {\n return FS.currentPath;\n },\n chdir: function (path) {\n var lookup = FS.lookupPath(path, { follow: true });\n if (lookup.node === null) {\n throw new FS.ErrnoError(2);\n }\n if (!FS.isDir(lookup.node.mode)) {\n throw new FS.ErrnoError(20);\n }\n var err = FS.nodePermissions(lookup.node, \"x\");\n if (err) {\n throw new FS.ErrnoError(err);\n }\n FS.currentPath = lookup.path;\n },\n createDefaultDirectories: function () {\n FS.mkdir(\"/tmp\");\n FS.mkdir(\"/home\");\n FS.mkdir(\"/home/web_user\");\n },\n createDefaultDevices: function () {\n FS.mkdir(\"/dev\");\n FS.registerDevice(FS.makedev(1, 3), {\n read: function () {\n return 0;\n },\n write: function (stream, buffer, offset, length, pos) {\n return length;\n },\n });\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 random_device;\n if (\n typeof crypto === \"object\" &&\n typeof crypto[\"getRandomValues\"] === \"function\"\n ) {\n var randomBuffer = new Uint8Array(1);\n random_device = function () {\n crypto.getRandomValues(randomBuffer);\n return randomBuffer[0];\n };\n } else if (ENVIRONMENT_IS_NODE) {\n try {\n var crypto_module = require(\"crypto\");\n random_device = function () {\n return crypto_module[\"randomBytes\"](1)[0];\n };\n } catch (e) {}\n } else {\n }\n if (!random_device) {\n random_device = function () {\n abort(\n \"no cryptographic support found for random_device. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };\",\n );\n };\n }\n FS.createDevice(\"/dev\", \"random\", random_device);\n FS.createDevice(\"/dev\", \"urandom\", random_device);\n FS.mkdir(\"/dev/shm\");\n FS.mkdir(\"/dev/shm/tmp\");\n },\n createSpecialDirectories: function () {\n FS.mkdir(\"/proc\");\n FS.mkdir(\"/proc/self\");\n FS.mkdir(\"/proc/self/fd\");\n FS.mount(\n {\n mount: function () {\n var node = FS.createNode(\"/proc/self\", \"fd\", 16384 | 511, 73);\n node.node_ops = {\n lookup: function (parent, name) {\n var fd = +name;\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(9);\n var ret = {\n parent: null,\n mount: { mountpoint: \"fake\" },\n node_ops: {\n readlink: function () {\n return stream.path;\n },\n },\n };\n ret.parent = ret;\n return ret;\n },\n };\n return node;\n },\n },\n {},\n \"/proc/self/fd\",\n );\n },\n createStandardStreams: function () {\n if (Module[\"stdin\"]) {\n FS.createDevice(\"/dev\", \"stdin\", Module[\"stdin\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n }\n if (Module[\"stdout\"]) {\n FS.createDevice(\"/dev\", \"stdout\", null, Module[\"stdout\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n }\n if (Module[\"stderr\"]) {\n FS.createDevice(\"/dev\", \"stderr\", null, Module[\"stderr\"]);\n } else {\n FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n }\n var stdin = FS.open(\"/dev/stdin\", \"r\");\n var stdout = FS.open(\"/dev/stdout\", \"w\");\n var stderr = FS.open(\"/dev/stderr\", \"w\");\n assert(stdin.fd === 0, \"invalid handle for stdin (\" + stdin.fd + \")\");\n assert(stdout.fd === 1, \"invalid handle for stdout (\" + stdout.fd + \")\");\n assert(stderr.fd === 2, \"invalid handle for stderr (\" + stderr.fd + \")\");\n },\n ensureErrnoError: function () {\n if (FS.ErrnoError) return;\n FS.ErrnoError = function ErrnoError(errno, node) {\n this.node = node;\n this.setErrno = function (errno) {\n this.errno = errno;\n for (var key in ERRNO_CODES) {\n if (ERRNO_CODES[key] === errno) {\n this.code = key;\n break;\n }\n }\n };\n this.setErrno(errno);\n this.message = ERRNO_MESSAGES[errno];\n if (this.stack)\n Object.defineProperty(this, \"stack\", {\n value: new Error().stack,\n writable: true,\n });\n if (this.stack) this.stack = demangleAll(this.stack);\n };\n FS.ErrnoError.prototype = new Error();\n FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n [2].forEach(function (code) {\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = \"<generic error, no stack>\";\n });\n },\n staticInit: function () {\n FS.ensureErrnoError();\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, \"/\");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = {\n MEMFS: MEMFS,\n IDBFS: IDBFS,\n NODEFS: NODEFS,\n WORKERFS: WORKERFS,\n };\n },\n init: function (input, output, error) {\n assert(\n !FS.init.initialized,\n \"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)\",\n );\n FS.init.initialized = true;\n FS.ensureErrnoError();\n Module[\"stdin\"] = input || Module[\"stdin\"];\n Module[\"stdout\"] = output || Module[\"stdout\"];\n Module[\"stderr\"] = error || Module[\"stderr\"];\n FS.createStandardStreams();\n },\n quit: function () {\n FS.init.initialized = false;\n var fflush = Module[\"_fflush\"];\n if (fflush) fflush(0);\n for (var i = 0; i < FS.streams.length; i++) {\n var stream = FS.streams[i];\n if (!stream) {\n continue;\n }\n FS.close(stream);\n }\n },\n getMode: function (canRead, canWrite) {\n var mode = 0;\n if (canRead) mode |= 292 | 73;\n if (canWrite) mode |= 146;\n return mode;\n },\n joinPath: function (parts, forceRelative) {\n var path = PATH.join.apply(null, parts);\n if (forceRelative && path[0] == \"/\") path = path.substr(1);\n return path;\n },\n absolutePath: function (relative, base) {\n return PATH_FS.resolve(base, relative);\n },\n standardizePath: function (path) {\n return PATH.normalize(path);\n },\n findObject: function (path, dontResolveLastLink) {\n var ret = FS.analyzePath(path, dontResolveLastLink);\n if (ret.exists) {\n return ret.object;\n } else {\n ___setErrNo(ret.error);\n return null;\n }\n },\n analyzePath: function (path, dontResolveLastLink) {\n try {\n var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });\n path = lookup.path;\n } catch (e) {}\n var ret = {\n isRoot: false,\n exists: false,\n error: 0,\n name: null,\n path: null,\n object: null,\n parentExists: false,\n parentPath: null,\n parentObject: null,\n };\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 },\n createFolder: function (parent, name, canRead, canWrite) {\n var path = PATH.join2(\n typeof parent === \"string\" ? parent : FS.getPath(parent),\n name,\n );\n var mode = FS.getMode(canRead, canWrite);\n return FS.mkdir(path, mode);\n },\n createPath: function (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 parent = current;\n }\n return current;\n },\n createFile: function (parent, name, properties, canRead, canWrite) {\n var path = PATH.join2(\n typeof parent === \"string\" ? parent : FS.getPath(parent),\n name,\n );\n var mode = FS.getMode(canRead, canWrite);\n return FS.create(path, mode);\n },\n createDataFile: function (parent, name, data, canRead, canWrite, canOwn) {\n var path = name\n ? PATH.join2(\n typeof parent === \"string\" ? parent : FS.getPath(parent),\n name,\n )\n : parent;\n var mode = FS.getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n if (data) {\n if (typeof data === \"string\") {\n var arr = new Array(data.length);\n for (var i = 0, len = data.length; i < len; ++i)\n arr[i] = data.charCodeAt(i);\n data = arr;\n }\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, \"w\");\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n return node;\n },\n createDevice: function (parent, name, input, output) {\n var path = PATH.join2(\n typeof parent === \"string\" ? parent : FS.getPath(parent),\n name,\n );\n var mode = FS.getMode(!!input, !!output);\n if (!FS.createDevice.major) FS.createDevice.major = 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, {\n open: function (stream) {\n stream.seekable = false;\n },\n close: function (stream) {\n if (output && output.buffer && output.buffer.length) {\n output(10);\n }\n },\n read: function (stream, buffer, offset, length, pos) {\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(5);\n }\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(11);\n }\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n },\n write: function (stream, buffer, offset, length, pos) {\n for (var i = 0; i < length; i++) {\n try {\n output(buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(5);\n }\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n },\n });\n return FS.mkdev(path, mode, dev);\n },\n createLink: function (parent, name, target, canRead, canWrite) {\n var path = PATH.join2(\n typeof parent === \"string\" ? parent : FS.getPath(parent),\n name,\n );\n return FS.symlink(target, path);\n },\n forceLoadFile: function (obj) {\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n var success = true;\n if (typeof XMLHttpRequest !== \"undefined\") {\n throw new Error(\n \"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 );\n } else if (read_) {\n try {\n obj.contents = intArrayFromString(read_(obj.url), true);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n success = false;\n }\n } else {\n throw new Error(\"Cannot load without read() or XMLHttpRequest.\");\n }\n if (!success) ___setErrNo(5);\n return success;\n },\n createLazyFile: function (parent, name, url, canRead, canWrite) {\n function LazyUint8Array() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n if (idx > this.length - 1 || idx < 0) {\n return undefined;\n }\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = (idx / this.chunkSize) | 0;\n return this.getter(chunkNum)[chunkOffset];\n };\n LazyUint8Array.prototype.setDataGetter =\n function LazyUint8Array_setDataGetter(getter) {\n this.getter = getter;\n };\n LazyUint8Array.prototype.cacheLength =\n function LazyUint8Array_cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false);\n xhr.send(null);\n if (!((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304))\n throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n var header;\n var hasByteServing =\n (header = xhr.getResponseHeader(\"Accept-Ranges\")) &&\n header === \"bytes\";\n var usesGzip =\n (header = xhr.getResponseHeader(\"Content-Encoding\")) &&\n header === \"gzip\";\n var chunkSize = 1024 * 1024;\n if (!hasByteServing) chunkSize = datalength;\n var doXHR = function (from, to) {\n if (from > to)\n throw new Error(\n \"invalid range (\" + from + \", \" + to + \") or no bytes requested!\",\n );\n if (to > datalength - 1)\n throw new Error(\n \"only \" + datalength + \" bytes available! programmer error!\",\n );\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n if (datalength !== chunkSize)\n xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n if (typeof Uint8Array != \"undefined\")\n xhr.responseType = \"arraybuffer\";\n if (xhr.overrideMimeType) {\n xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n }\n xhr.send(null);\n if (!((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304))\n throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n if (xhr.response !== undefined) {\n return new Uint8Array(xhr.response || []);\n } else {\n return intArrayFromString(xhr.responseText || \"\", true);\n }\n };\n var lazyArray = this;\n lazyArray.setDataGetter(function (chunkNum) {\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n if (typeof lazyArray.chunks[chunkNum] === \"undefined\") {\n lazyArray.chunks[chunkNum] = doXHR(start, end);\n }\n if (typeof lazyArray.chunks[chunkNum] === \"undefined\")\n throw new Error(\"doXHR failed!\");\n return lazyArray.chunks[chunkNum];\n });\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n console.log(\n \"LazyFiles on gzip forces download of the whole file when length is accessed\",\n );\n }\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n };\n if (typeof XMLHttpRequest !== \"undefined\") {\n if (!ENVIRONMENT_IS_WORKER)\n throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n var lazyArray = new LazyUint8Array();\n Object.defineProperties(lazyArray, {\n length: {\n get: function () {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._length;\n },\n },\n chunkSize: {\n get: function () {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._chunkSize;\n },\n },\n });\n var properties = { isDevice: false, contents: lazyArray };\n } else {\n var properties = { isDevice: false, url: url };\n }\n var node = FS.createFile(parent, name, 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, {\n usedBytes: {\n get: function () {\n return this.contents.length;\n },\n },\n });\n var stream_ops = {};\n var keys = Object.keys(node.stream_ops);\n keys.forEach(function (key) {\n var fn = node.stream_ops[key];\n stream_ops[key] = function forceLoadLazyFile() {\n if (!FS.forceLoadFile(node)) {\n throw new FS.ErrnoError(5);\n }\n return fn.apply(null, arguments);\n };\n });\n stream_ops.read = function stream_ops_read(\n stream,\n buffer,\n offset,\n length,\n position,\n ) {\n if (!FS.forceLoadFile(node)) {\n throw new FS.ErrnoError(5);\n }\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n assert(size >= 0);\n if (contents.slice) {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents[position + i];\n }\n } else {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents.get(position + i);\n }\n }\n return size;\n };\n node.stream_ops = stream_ops;\n return node;\n },\n createPreloadedFile: function (\n parent,\n name,\n url,\n canRead,\n canWrite,\n onload,\n onerror,\n dontCreateFile,\n canOwn,\n preFinish,\n ) {\n Browser.init();\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n var dep = getUniqueRunDependency(\"cp \" + fullname);\n function processData(byteArray) {\n function finish(byteArray) {\n if (preFinish) preFinish();\n if (!dontCreateFile) {\n FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n }\n if (onload) onload();\n removeRunDependency(dep);\n }\n var handled = false;\n Module[\"preloadPlugins\"].forEach(function (plugin) {\n if (handled) return;\n if (plugin[\"canHandle\"](fullname)) {\n plugin[\"handle\"](byteArray, fullname, finish, function () {\n if (onerror) onerror();\n removeRunDependency(dep);\n });\n handled = true;\n }\n });\n if (!handled) finish(byteArray);\n }\n addRunDependency(dep);\n if (typeof url == \"string\") {\n Browser.asyncLoad(\n url,\n function (byteArray) {\n processData(byteArray);\n },\n onerror,\n );\n } else {\n processData(url);\n }\n },\n indexedDB: function () {\n return (\n window.indexedDB ||\n window.mozIndexedDB ||\n window.webkitIndexedDB ||\n window.msIndexedDB\n );\n },\n DB_NAME: function () {\n return \"EM_FS_\" + window.location.pathname;\n },\n DB_VERSION: 20,\n DB_STORE_NAME: \"FILE_DATA\",\n saveFilesToDB: function (paths, onload, onerror) {\n onload = onload || function () {};\n onerror = onerror || function () {};\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = function openRequest_onupgradeneeded() {\n console.log(\"creating db\");\n var db = openRequest.result;\n db.createObjectStore(FS.DB_STORE_NAME);\n };\n openRequest.onsuccess = function openRequest_onsuccess() {\n var db = openRequest.result;\n var transaction = db.transaction([FS.DB_STORE_NAME], \"readwrite\");\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0,\n fail = 0,\n total = paths.length;\n function finish() {\n if (fail == 0) onload();\n else onerror();\n }\n paths.forEach(function (path) {\n var putRequest = files.put(FS.analyzePath(path).object.contents, path);\n putRequest.onsuccess = function putRequest_onsuccess() {\n ok++;\n if (ok + fail == total) finish();\n };\n putRequest.onerror = function putRequest_onerror() {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n },\n loadFilesFromDB: function (paths, onload, onerror) {\n onload = onload || function () {};\n onerror = onerror || function () {};\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = onerror;\n openRequest.onsuccess = function openRequest_onsuccess() {\n var db = openRequest.result;\n try {\n var transaction = db.transaction([FS.DB_STORE_NAME], \"readonly\");\n } catch (e) {\n onerror(e);\n return;\n }\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0,\n fail = 0,\n total = paths.length;\n function finish() {\n if (fail == 0) onload();\n else onerror();\n }\n paths.forEach(function (path) {\n var getRequest = files.get(path);\n getRequest.onsuccess = function getRequest_onsuccess() {\n if (FS.analyzePath(path).exists) {\n FS.unlink(path);\n }\n FS.createDataFile(\n PATH.dirname(path),\n PATH.basename(path),\n getRequest.result,\n true,\n true,\n true,\n );\n ok++;\n if (ok + fail == total) finish();\n };\n getRequest.onerror = function getRequest_onerror() {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n },\n};\nfunction _emscripten_set_main_loop_timing(mode, value) {\n Browser.mainLoop.timingMode = mode;\n Browser.mainLoop.timingValue = value;\n if (!Browser.mainLoop.func) {\n console.error(\n \"emscripten_set_main_loop_timing: Cannot set timing mode for main loop since a main loop does not exist! Call emscripten_set_main_loop first to set one up.\",\n );\n return 1;\n }\n if (mode == 0) {\n Browser.mainLoop.scheduler =\n function Browser_mainLoop_scheduler_setTimeout() {\n var timeUntilNextTick =\n Math.max(\n 0,\n Browser.mainLoop.tickStartTime + value - _emscripten_get_now(),\n ) | 0;\n setTimeout(Browser.mainLoop.runner, timeUntilNextTick);\n };\n Browser.mainLoop.method = \"timeout\";\n } else if (mode == 1) {\n Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_rAF() {\n Browser.requestAnimationFrame(Browser.mainLoop.runner);\n };\n Browser.mainLoop.method = \"rAF\";\n } else if (mode == 2) {\n if (typeof setImmediate === \"undefined\") {\n var setImmediates = [];\n var emscriptenMainLoopMessageId = \"setimmediate\";\n var Browser_setImmediate_messageHandler = function (event) {\n if (\n event.data === emscriptenMainLoopMessageId ||\n event.data.target === emscriptenMainLoopMessageId\n ) {\n event.stopPropagation();\n setImmediates.shift()();\n }\n };\n addEventListener(\"message\", Browser_setImmediate_messageHandler, true);\n setImmediate = function Browser_emulated_setImmediate(func) {\n setImmediates.push(func);\n if (ENVIRONMENT_IS_WORKER) {\n if (Module[\"setImmediates\"] === undefined)\n Module[\"setImmediates\"] = [];\n Module[\"setImmediates\"].push(func);\n postMessage({ target: emscriptenMainLoopMessageId });\n } else postMessage(emscriptenMainLoopMessageId, \"*\");\n };\n }\n Browser.mainLoop.scheduler =\n function Browser_mainLoop_scheduler_setImmediate() {\n setImmediate(Browser.mainLoop.runner);\n };\n Browser.mainLoop.method = \"immediate\";\n }\n return 0;\n}\nfunction _emscripten_get_now() {\n abort();\n}\nfunction _emscripten_set_main_loop(\n func,\n fps,\n simulateInfiniteLoop,\n arg,\n noSetTiming,\n) {\n Module[\"noExitRuntime\"] = true;\n assert(\n !Browser.mainLoop.func,\n \"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.\",\n );\n Browser.mainLoop.func = func;\n Browser.mainLoop.arg = arg;\n var browserIterationFunc;\n if (typeof arg !== \"undefined\") {\n browserIterationFunc = function () {\n Module[\"dynCall_vi\"](func, arg);\n };\n } else {\n browserIterationFunc = function () {\n Module[\"dynCall_v\"](func);\n };\n }\n var thisMainLoopId = Browser.mainLoop.currentlyRunningMainloop;\n Browser.mainLoop.runner = function Browser_mainLoop_runner() {\n if (ABORT) return;\n if (Browser.mainLoop.queue.length > 0) {\n var start = Date.now();\n var blocker = Browser.mainLoop.queue.shift();\n blocker.func(blocker.arg);\n if (Browser.mainLoop.remainingBlockers) {\n var remaining = Browser.mainLoop.remainingBlockers;\n var next = remaining % 1 == 0 ? remaining - 1 : Math.floor(remaining);\n if (blocker.counted) {\n Browser.mainLoop.remainingBlockers = next;\n } else {\n next = next + 0.5;\n Browser.mainLoop.remainingBlockers = (8 * remaining + next) / 9;\n }\n }\n console.log(\n 'main loop blocker \"' +\n blocker.name +\n '\" took ' +\n (Date.now() - start) +\n \" ms\",\n );\n Browser.mainLoop.updateStatus();\n if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return;\n setTimeout(Browser.mainLoop.runner, 0);\n return;\n }\n if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return;\n Browser.mainLoop.currentFrameNumber =\n (Browser.mainLoop.currentFrameNumber + 1) | 0;\n if (\n Browser.mainLoop.timingMode == 1 &&\n Browser.mainLoop.timingValue > 1 &&\n Browser.mainLoop.currentFrameNumber % Browser.mainLoop.timingValue != 0\n ) {\n Browser.mainLoop.scheduler();\n return;\n } else if (Browser.mainLoop.timingMode == 0) {\n Browser.mainLoop.tickStartTime = _emscripten_get_now();\n }\n GL.newRenderingFrameStarted();\n if (Browser.mainLoop.method === \"timeout\" && Module.ctx) {\n err(\n \"Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!\",\n );\n Browser.mainLoop.method = \"\";\n }\n Browser.mainLoop.runIter(browserIterationFunc);\n checkStackCookie();\n if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return;\n if (typeof SDL === \"object\" && SDL.audio && SDL.audio.queueNewAudioData)\n SDL.audio.queueNewAudioData();\n Browser.mainLoop.scheduler();\n };\n if (!noSetTiming) {\n if (fps && fps > 0) _emscripten_set_main_loop_timing(0, 1e3 / fps);\n else _emscripten_set_main_loop_timing(1, 1);\n Browser.mainLoop.scheduler();\n }\n if (simulateInfiniteLoop) {\n throw \"SimulateInfiniteLoop\";\n }\n}\nvar Browser = {\n mainLoop: {\n scheduler: null,\n method: \"\",\n currentlyRunningMainloop: 0,\n func: null,\n arg: 0,\n timingMode: 0,\n timingValue: 0,\n currentFrameNumber: 0,\n queue: [],\n pause: function () {\n Browser.mainLoop.scheduler = null;\n Browser.mainLoop.currentlyRunningMainloop++;\n },\n resume: function () {\n Browser.mainLoop.currentlyRunningMainloop++;\n var timingMode = Browser.mainLoop.timingMode;\n var timingValue = Browser.mainLoop.timingValue;\n var func = Browser.mainLoop.func;\n Browser.mainLoop.func = null;\n _emscripten_set_main_loop(func, 0, false, Browser.mainLoop.arg, true);\n _emscripten_set_main_loop_timing(timingMode, timingValue);\n Browser.mainLoop.scheduler();\n },\n updateStatus: function () {\n if (Module[\"setStatus\"]) {\n var message = Module[\"statusMessage\"] || \"Please wait...\";\n var remaining = Browser.mainLoop.remainingBlockers;\n var expected = Browser.mainLoop.expectedBlockers;\n if (remaining) {\n if (remaining < expected) {\n Module[\"setStatus\"](\n message + \" (\" + (expected - remaining) + \"/\" + expected + \")\",\n );\n } else {\n Module[\"setStatus\"](message);\n }\n } else {\n Module[\"setStatus\"](\"\");\n }\n }\n },\n runIter: function (func) {\n if (ABORT) return;\n if (Module[\"preMainLoop\"]) {\n var preRet = Module[\"preMainLoop\"]();\n if (preRet === false) {\n return;\n }\n }\n try {\n func();\n } catch (e) {\n if (e instanceof ExitStatus) {\n return;\n } else {\n if (e && typeof e === \"object\" && e.stack)\n err(\"exception thrown: \" + [e, e.stack]);\n throw e;\n }\n }\n if (Module[\"postMainLoop\"]) Module[\"postMainLoop\"]();\n },\n },\n isFullscreen: false,\n pointerLock: false,\n moduleContextCreatedCallbacks: [],\n workers: [],\n init: function () {\n if (!Module[\"preloadPlugins\"]) Module[\"preloadPlugins\"] = [];\n if (Browser.initted) return;\n Browser.initted = true;\n try {\n new Blob();\n Browser.hasBlobConstructor = true;\n } catch (e) {\n Browser.hasBlobConstructor = false;\n console.log(\n \"warning: no blob constructor, cannot create blobs with mimetypes\",\n );\n }\n Browser.BlobBuilder =\n typeof MozBlobBuilder != \"undefined\"\n ? MozBlobBuilder\n : typeof WebKitBlobBuilder != \"undefined\"\n ? WebKitBlobBuilder\n : !Browser.hasBlobConstructor\n ? console.log(\"warning: no BlobBuilder\")\n : null;\n Browser.URLObject =\n typeof window != \"undefined\"\n ? window.URL\n ? window.URL\n : window.webkitURL\n : undefined;\n if (!Module.noImageDecoding && typeof Browser.URLObject === \"undefined\") {\n console.log(\n \"warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.\",\n );\n Module.noImageDecoding = true;\n }\n var imagePlugin = {};\n imagePlugin[\"canHandle\"] = function imagePlugin_canHandle(name) {\n return !Module.noImageDecoding && /\\.(jpg|jpeg|png|bmp)$/i.test(name);\n };\n imagePlugin[\"handle\"] = function imagePlugin_handle(\n byteArray,\n name,\n onload,\n onerror,\n ) {\n var b = null;\n if (Browser.hasBlobConstructor) {\n try {\n b = new Blob([byteArray], { type: Browser.getMimetype(name) });\n if (b.size !== byteArray.length) {\n b = new Blob([new Uint8Array(byteArray).buffer], {\n type: Browser.getMimetype(name),\n });\n }\n } catch (e) {\n warnOnce(\n \"Blob constructor present but fails: \" +\n e +\n \"; falling back to blob builder\",\n );\n }\n }\n if (!b) {\n var bb = new Browser.BlobBuilder();\n bb.append(new Uint8Array(byteArray).buffer);\n b = bb.getBlob();\n }\n var url = Browser.URLObject.createObjectURL(b);\n assert(\n typeof url == \"string\",\n \"createObjectURL must return a url as a string\",\n );\n var img = new Image();\n img.onload = function img_onload() {\n assert(img.complete, \"Image \" + name + \" could not be decoded\");\n var canvas = document.createElement(\"canvas\");\n canvas.width = img.width;\n canvas.height = img.height;\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0);\n Module[\"preloadedImages\"][name] = canvas;\n Browser.URLObject.revokeObjectURL(url);\n if (onload) onload(byteArray);\n };\n img.onerror = function img_onerror(event) {\n console.log(\"Image \" + url + \" could not be decoded\");\n if (onerror) onerror();\n };\n img.src = url;\n };\n Module[\"preloadPlugins\"].push(imagePlugin);\n var audioPlugin = {};\n audioPlugin[\"canHandle\"] = function audioPlugin_canHandle(name) {\n return (\n !Module.noAudioDecoding &&\n name.substr(-4) in { \".ogg\": 1, \".wav\": 1, \".mp3\": 1 }\n );\n };\n audioPlugin[\"handle\"] = function audioPlugin_handle(\n byteArray,\n name,\n onload,\n onerror,\n ) {\n var done = false;\n function finish(audio) {\n if (done) return;\n done = true;\n Module[\"preloadedAudios\"][name] = audio;\n if (onload) onload(byteArray);\n }\n function fail() {\n if (done) return;\n done = true;\n Module[\"preloadedAudios\"][name] = new Audio();\n if (onerror) onerror();\n }\n if (Browser.hasBlobConstructor) {\n try {\n var b = new Blob([byteArray], { type: Browser.getMimetype(name) });\n } catch (e) {\n return fail();\n }\n var url = Browser.URLObject.createObjectURL(b);\n assert(\n typeof url == \"string\",\n \"createObjectURL must return a url as a string\",\n );\n var audio = new Audio();\n audio.addEventListener(\n \"canplaythrough\",\n function () {\n finish(audio);\n },\n false,\n );\n audio.onerror = function audio_onerror(event) {\n if (done) return;\n console.log(\n \"warning: browser could not fully decode audio \" +\n name +\n \", trying slower base64 approach\",\n );\n function encode64(data) {\n var BASE =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var PAD = \"=\";\n var ret = \"\";\n var leftchar = 0;\n var leftbits = 0;\n for (var i = 0; i < data.length; i++) {\n leftchar = (leftchar << 8) | data[i];\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 =\n \"data:audio/x-\" +\n name.substr(-3) +\n \";base64,\" +\n encode64(byteArray);\n finish(audio);\n };\n audio.src = url;\n Browser.safeSetTimeout(function () {\n finish(audio);\n }, 1e4);\n } else {\n return fail();\n }\n };\n Module[\"preloadPlugins\"].push(audioPlugin);\n function pointerLockChange() {\n Browser.pointerLock =\n document[\"pointerLockElement\"] === Module[\"canvas\"] ||\n document[\"mozPointerLockElement\"] === Module[\"canvas\"] ||\n document[\"webkitPointerLockElement\"] === Module[\"canvas\"] ||\n document[\"msPointerLockElement\"] === Module[\"canvas\"];\n }\n var canvas = Module[\"canvas\"];\n if (canvas) {\n canvas.requestPointerLock =\n canvas[\"requestPointerLock\"] ||\n canvas[\"mozRequestPointerLock\"] ||\n canvas[\"webkitRequestPointerLock\"] ||\n canvas[\"msRequestPointerLock\"] ||\n function () {};\n canvas.exitPointerLock =\n document[\"exitPointerLock\"] ||\n document[\"mozExitPointerLock\"] ||\n document[\"webkitExitPointerLock\"] ||\n document[\"msExitPointerLock\"] ||\n function () {};\n canvas.exitPointerLock = canvas.exitPointerLock.bind(document);\n document.addEventListener(\"pointerlockchange\", pointerLockChange, false);\n document.addEventListener(\n \"mozpointerlockchange\",\n pointerLockChange,\n false,\n );\n document.addEventListener(\n \"webkitpointerlockchange\",\n pointerLockChange,\n false,\n );\n document.addEventListener(\n \"mspointerlockchange\",\n pointerLockChange,\n false,\n );\n if (Module[\"elementPointerLock\"]) {\n canvas.addEventListener(\n \"click\",\n function (ev) {\n if (!Browser.pointerLock && Module[\"canvas\"].requestPointerLock) {\n Module[\"canvas\"].requestPointerLock();\n ev.preventDefault();\n }\n },\n false,\n );\n }\n }\n },\n createContext: function (\n canvas,\n useWebGL,\n setInModule,\n webGLContextAttributes,\n ) {\n if (useWebGL && Module.ctx && canvas == Module.canvas) return Module.ctx;\n var ctx;\n var contextHandle;\n if (useWebGL) {\n var contextAttributes = {\n antialias: false,\n alpha: false,\n majorVersion: 1,\n };\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 if (!useWebGL)\n assert(\n typeof GLctx === \"undefined\",\n \"cannot set in module if GLctx is used, but we are a non-GL context that would replace it\",\n );\n Module.ctx = ctx;\n if (useWebGL) GL.makeContextCurrent(contextHandle);\n Module.useWebGL = useWebGL;\n Browser.moduleContextCreatedCallbacks.forEach(function (callback) {\n callback();\n });\n Browser.init();\n }\n return ctx;\n },\n destroyContext: function (canvas, useWebGL, setInModule) {},\n fullscreenHandlersInstalled: false,\n lockPointer: undefined,\n resizeCanvas: undefined,\n requestFullscreen: function (lockPointer, resizeCanvas, vrDevice) {\n Browser.lockPointer = lockPointer;\n Browser.resizeCanvas = resizeCanvas;\n Browser.vrDevice = vrDevice;\n if (typeof Browser.lockPointer === \"undefined\") Browser.lockPointer = true;\n if (typeof Browser.resizeCanvas === \"undefined\")\n Browser.resizeCanvas = false;\n if (typeof Browser.vrDevice === \"undefined\") Browser.vrDevice = null;\n var canvas = Module[\"canvas\"];\n function fullscreenChange() {\n Browser.isFullscreen = false;\n var canvasContainer = canvas.parentNode;\n if (\n (document[\"fullscreenElement\"] ||\n document[\"mozFullScreenElement\"] ||\n document[\"msFullscreenElement\"] ||\n document[\"webkitFullscreenElement\"] ||\n document[\"webkitCurrentFullScreenElement\"]) === canvasContainer\n ) {\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 canvasContainer.parentNode.insertBefore(canvas, canvasContainer);\n canvasContainer.parentNode.removeChild(canvasContainer);\n if (Browser.resizeCanvas) {\n Browser.setWindowedCanvasSize();\n } else {\n Browser.updateCanvasDimensions(canvas);\n }\n }\n if (Module[\"onFullScreen\"]) Module[\"onFullScreen\"](Browser.isFullscreen);\n if (Module[\"onFullscreen\"]) 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(\n \"webkitfullscreenchange\",\n fullscreenChange,\n false,\n );\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 =\n canvasContainer[\"requestFullscreen\"] ||\n canvasContainer[\"mozRequestFullScreen\"] ||\n canvasContainer[\"msRequestFullscreen\"] ||\n (canvasContainer[\"webkitRequestFullscreen\"]\n ? function () {\n canvasContainer[\"webkitRequestFullscreen\"](\n Element[\"ALLOW_KEYBOARD_INPUT\"],\n );\n }\n : null) ||\n (canvasContainer[\"webkitRequestFullScreen\"]\n ? function () {\n canvasContainer[\"webkitRequestFullScreen\"](\n Element[\"ALLOW_KEYBOARD_INPUT\"],\n );\n }\n : null);\n if (vrDevice) {\n canvasContainer.requestFullscreen({ vrDisplay: vrDevice });\n } else {\n canvasContainer.requestFullscreen();\n }\n },\n requestFullScreen: function (lockPointer, resizeCanvas, vrDevice) {\n err(\n \"Browser.requestFullScreen() is deprecated. Please call Browser.requestFullscreen instead.\",\n );\n Browser.requestFullScreen = function (lockPointer, resizeCanvas, vrDevice) {\n return Browser.requestFullscreen(lockPointer, resizeCanvas, vrDevice);\n };\n return Browser.requestFullscreen(lockPointer, resizeCanvas, vrDevice);\n },\n exitFullscreen: function () {\n if (!Browser.isFullscreen) {\n return false;\n }\n var CFS =\n document[\"exitFullscreen\"] ||\n document[\"cancelFullScreen\"] ||\n document[\"mozCancelFullScreen\"] ||\n document[\"msExitFullscreen\"] ||\n document[\"webkitCancelFullScreen\"] ||\n function () {};\n CFS.apply(document, []);\n return true;\n },\n nextRAF: 0,\n fakeRequestAnimationFrame: function (func) {\n var now = Date.now();\n if (Browser.nextRAF === 0) {\n Browser.nextRAF = now + 1e3 / 60;\n } else {\n while (now + 2 >= Browser.nextRAF) {\n Browser.nextRAF += 1e3 / 60;\n }\n }\n var delay = Math.max(Browser.nextRAF - now, 0);\n setTimeout(func, delay);\n },\n requestAnimationFrame: function (func) {\n if (typeof requestAnimationFrame === \"function\") {\n requestAnimationFrame(func);\n return;\n }\n var RAF = Browser.fakeRequestAnimationFrame;\n RAF(func);\n },\n safeCallback: function (func) {\n return function () {\n if (!ABORT) return func.apply(null, arguments);\n };\n },\n allowAsyncCallbacks: true,\n queuedAsyncCallbacks: [],\n pauseAsyncCallbacks: function () {\n Browser.allowAsyncCallbacks = false;\n },\n resumeAsyncCallbacks: function () {\n Browser.allowAsyncCallbacks = true;\n if (Browser.queuedAsyncCallbacks.length > 0) {\n var callbacks = Browser.queuedAsyncCallbacks;\n Browser.queuedAsyncCallbacks = [];\n callbacks.forEach(function (func) {\n func();\n });\n }\n },\n safeRequestAnimationFrame: function (func) {\n return Browser.requestAnimationFrame(function () {\n if (ABORT) return;\n if (Browser.allowAsyncCallbacks) {\n func();\n } else {\n Browser.queuedAsyncCallbacks.push(func);\n }\n });\n },\n safeSetTimeout: function (func, timeout) {\n Module[\"noExitRuntime\"] = true;\n return setTimeout(function () {\n if (ABORT) return;\n if (Browser.allowAsyncCallbacks) {\n func();\n } else {\n Browser.queuedAsyncCallbacks.push(func);\n }\n }, timeout);\n },\n safeSetInterval: function (func, timeout) {\n Module[\"noExitRuntime\"] = true;\n return setInterval(function () {\n if (ABORT) return;\n if (Browser.allowAsyncCallbacks) {\n func();\n }\n }, timeout);\n },\n getMimetype: function (name) {\n return {\n jpg: \"image/jpeg\",\n jpeg: \"image/jpeg\",\n png: \"image/png\",\n bmp: \"image/bmp\",\n ogg: \"audio/ogg\",\n wav: \"audio/wav\",\n mp3: \"audio/mpeg\",\n }[name.substr(name.lastIndexOf(\".\") + 1)];\n },\n getUserMedia: function (func) {\n if (!window.getUserMedia) {\n window.getUserMedia =\n navigator[\"getUserMedia\"] || navigator[\"mozGetUserMedia\"];\n }\n window.getUserMedia(func);\n },\n getMovementX: function (event) {\n return (\n event[\"movementX\"] ||\n event[\"mozMovementX\"] ||\n event[\"webkitMovementX\"] ||\n 0\n );\n },\n getMovementY: function (event) {\n return (\n event[\"movementY\"] ||\n event[\"mozMovementY\"] ||\n event[\"webkitMovementY\"] ||\n 0\n );\n },\n getMouseWheelDelta: function (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 throw \"unrecognized mouse wheel delta mode: \" + event.deltaMode;\n }\n break;\n default:\n throw \"unrecognized mouse wheel event: \" + event.type;\n }\n return delta;\n },\n mouseX: 0,\n mouseY: 0,\n mouseMovementX: 0,\n mouseMovementY: 0,\n touches: {},\n lastTouches: {},\n calculateMouseEvent: function (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 if (typeof SDL != \"undefined\") {\n Browser.mouseX = SDL.mouseX + Browser.mouseMovementX;\n Browser.mouseY = SDL.mouseY + Browser.mouseMovementY;\n } else {\n Browser.mouseX += Browser.mouseMovementX;\n Browser.mouseY += Browser.mouseMovementY;\n }\n } else {\n var rect = Module[\"canvas\"].getBoundingClientRect();\n var cw = Module[\"canvas\"].width;\n var ch = Module[\"canvas\"].height;\n var scrollX =\n typeof window.scrollX !== \"undefined\"\n ? window.scrollX\n : window.pageXOffset;\n var scrollY =\n typeof window.scrollY !== \"undefined\"\n ? window.scrollY\n : window.pageYOffset;\n assert(\n typeof scrollX !== \"undefined\" && typeof scrollY !== \"undefined\",\n \"Unable to retrieve scroll position, mouse positions likely broken.\",\n );\n if (\n event.type === \"touchstart\" ||\n event.type === \"touchend\" ||\n event.type === \"touchmove\"\n ) {\n var touch = event.touch;\n if (touch === undefined) {\n return;\n }\n var adjustedX = touch.pageX - (scrollX + rect.left);\n var adjustedY = touch.pageY - (scrollY + rect.top);\n adjustedX = adjustedX * (cw / rect.width);\n adjustedY = adjustedY * (ch / rect.height);\n var coords = { x: adjustedX, y: adjustedY };\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 if (!last) last = coords;\n Browser.lastTouches[touch.identifier] = last;\n Browser.touches[touch.identifier] = coords;\n }\n return;\n }\n var x = event.pageX - (scrollX + rect.left);\n var y = event.pageY - (scrollY + rect.top);\n x = x * (cw / rect.width);\n y = y * (ch / rect.height);\n Browser.mouseMovementX = x - Browser.mouseX;\n Browser.mouseMovementY = y - Browser.mouseY;\n Browser.mouseX = x;\n Browser.mouseY = y;\n }\n },\n asyncLoad: function (url, onload, onerror, noRunDep) {\n var dep = !noRunDep ? getUniqueRunDependency(\"al \" + url) : \"\";\n readAsync(\n url,\n function (arrayBuffer) {\n assert(\n arrayBuffer,\n 'Loading data file \"' + url + '\" failed (no arrayBuffer).',\n );\n onload(new Uint8Array(arrayBuffer));\n if (dep) removeRunDependency(dep);\n },\n function (event) {\n if (onerror) {\n onerror();\n } else {\n throw 'Loading data file \"' + url + '\" failed.';\n }\n },\n );\n if (dep) addRunDependency(dep);\n },\n resizeListeners: [],\n updateResizeListeners: function () {\n var canvas = Module[\"canvas\"];\n Browser.resizeListeners.forEach(function (listener) {\n listener(canvas.width, canvas.height);\n });\n },\n setCanvasSize: function (width, height, noUpdates) {\n var canvas = Module[\"canvas\"];\n Browser.updateCanvasDimensions(canvas, width, height);\n if (!noUpdates) Browser.updateResizeListeners();\n },\n windowedWidth: 0,\n windowedHeight: 0,\n setFullscreenCanvasSize: function () {\n if (typeof SDL != \"undefined\") {\n var flags = HEAPU32[SDL.screen >> 2];\n flags = flags | 8388608;\n HEAP32[SDL.screen >> 2] = flags;\n }\n Browser.updateCanvasDimensions(Module[\"canvas\"]);\n Browser.updateResizeListeners();\n },\n setWindowedCanvasSize: function () {\n if (typeof SDL != \"undefined\") {\n var flags = HEAPU32[SDL.screen >> 2];\n flags = flags & ~8388608;\n HEAP32[SDL.screen >> 2] = flags;\n }\n Browser.updateCanvasDimensions(Module[\"canvas\"]);\n Browser.updateResizeListeners();\n },\n updateCanvasDimensions: function (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 w = wNative;\n var h = hNative;\n if (Module[\"forcedAspectRatio\"] && Module[\"forcedAspectRatio\"] > 0) {\n if (w / h < Module[\"forcedAspectRatio\"]) {\n w = Math.round(h * Module[\"forcedAspectRatio\"]);\n } else {\n h = Math.round(w / Module[\"forcedAspectRatio\"]);\n }\n }\n if (\n (document[\"fullscreenElement\"] ||\n document[\"mozFullScreenElement\"] ||\n document[\"msFullscreenElement\"] ||\n document[\"webkitFullscreenElement\"] ||\n document[\"webkitCurrentFullScreenElement\"]) === canvas.parentNode &&\n typeof screen != \"undefined\"\n ) {\n var factor = Math.min(screen.width / w, screen.height / h);\n w = Math.round(w * factor);\n h = Math.round(h * factor);\n }\n if (Browser.resizeCanvas) {\n if (canvas.width != w) canvas.width = w;\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 (w != wNative || h != hNative) {\n canvas.style.setProperty(\"width\", w + \"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 wgetRequests: {},\n nextWgetRequestHandle: 0,\n getNextWgetRequestHandle: function () {\n var handle = Browser.nextWgetRequestHandle;\n Browser.nextWgetRequestHandle++;\n return handle;\n },\n};\nfunction _SDL_GetTicks() {\n return (Date.now() - SDL.startTime) | 0;\n}\nfunction _SDL_LockSurface(surf) {\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 HEAP32[(surf + 20) >> 2] = surfData.buffer;\n }\n HEAP32[(surf + 20) >> 2] = 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(\n surfData.width,\n surfData.height,\n );\n }\n if (!SDL.defaults.opaqueFrontBuffer) return;\n } else {\n surfData.image = surfData.ctx.getImageData(\n 0,\n 0,\n surfData.width,\n surfData.height,\n );\n }\n if (surf == SDL.screen && SDL.defaults.opaqueFrontBuffer) {\n var data = surfData.image.data;\n var num = data.length;\n for (var i = 0; i < num / 4; i++) {\n data[i * 4 + 3] = 255;\n }\n }\n if (SDL.defaults.copyOnLock && !SDL.defaults.discardOnLock) {\n if (surfData.isFlagSet(2097152)) {\n throw (\n \"CopyOnLock is not supported for SDL_LockSurface with SDL_HWPALETTE flag set\" +\n new Error().stack\n );\n } else {\n HEAPU8.set(surfData.image.data, surfData.buffer);\n }\n }\n return 0;\n}\nvar SDL = {\n defaults: {\n width: 320,\n height: 200,\n copyOnLock: true,\n discardOnLock: false,\n opaqueFrontBuffer: true,\n },\n version: null,\n surfaces: {},\n canvasPool: [],\n events: [],\n fonts: [null],\n audios: [null],\n rwops: [null],\n music: { audio: null, volume: 1 },\n mixerFrequency: 22050,\n mixerFormat: 32784,\n mixerNumChannels: 2,\n mixerChunkSize: 1024,\n channelMinimumNumber: 0,\n GL: false,\n glAttributes: {\n 0: 3,\n 1: 3,\n 2: 2,\n 3: 0,\n 4: 0,\n 5: 1,\n 6: 16,\n 7: 0,\n 8: 0,\n 9: 0,\n 10: 0,\n 11: 0,\n 12: 0,\n 13: 0,\n 14: 0,\n 15: 1,\n 16: 0,\n 17: 0,\n 18: 0,\n },\n keyboardState: null,\n keyboardMap: {},\n canRequestFullscreen: false,\n isRequestingFullscreen: false,\n textInput: false,\n startTime: null,\n initFlags: 0,\n buttonState: 0,\n modState: 0,\n DOMButtons: [0, 0, 0],\n DOMEventToSDLEvent: {},\n TOUCH_DEFAULT_ID: 0,\n eventHandler: null,\n eventHandlerContext: null,\n eventHandlerTemp: 0,\n keyCodes: {\n 16: 1249,\n 17: 1248,\n 18: 1250,\n 20: 1081,\n 33: 1099,\n 34: 1102,\n 35: 1101,\n 36: 1098,\n 37: 1104,\n 38: 1106,\n 39: 1103,\n 40: 1105,\n 44: 316,\n 45: 1097,\n 46: 127,\n 91: 1251,\n 93: 1125,\n 96: 1122,\n 97: 1113,\n 98: 1114,\n 99: 1115,\n 100: 1116,\n 101: 1117,\n 102: 1118,\n 103: 1119,\n 104: 1120,\n 105: 1121,\n 106: 1109,\n 107: 1111,\n 109: 1110,\n 110: 1123,\n 111: 1108,\n 112: 1082,\n 113: 1083,\n 114: 1084,\n 115: 1085,\n 116: 1086,\n 117: 1087,\n 118: 1088,\n 119: 1089,\n 120: 1090,\n 121: 1091,\n 122: 1092,\n 123: 1093,\n 124: 1128,\n 125: 1129,\n 126: 1130,\n 127: 1131,\n 128: 1132,\n 129: 1133,\n 130: 1134,\n 131: 1135,\n 132: 1136,\n 133: 1137,\n 134: 1138,\n 135: 1139,\n 144: 1107,\n 160: 94,\n 161: 33,\n 162: 34,\n 163: 35,\n 164: 36,\n 165: 37,\n 166: 38,\n 167: 95,\n 168: 40,\n 169: 41,\n 170: 42,\n 171: 43,\n 172: 124,\n 173: 45,\n 174: 123,\n 175: 125,\n 176: 126,\n 181: 127,\n 182: 129,\n 183: 128,\n 188: 44,\n 190: 46,\n 191: 47,\n 192: 96,\n 219: 91,\n 220: 92,\n 221: 93,\n 222: 39,\n 224: 1251,\n },\n scanCodes: {\n 8: 42,\n 9: 43,\n 13: 40,\n 27: 41,\n 32: 44,\n 35: 204,\n 39: 53,\n 44: 54,\n 46: 55,\n 47: 56,\n 48: 39,\n 49: 30,\n 50: 31,\n 51: 32,\n 52: 33,\n 53: 34,\n 54: 35,\n 55: 36,\n 56: 37,\n 57: 38,\n 58: 203,\n 59: 51,\n 61: 46,\n 91: 47,\n 92: 49,\n 93: 48,\n 96: 52,\n 97: 4,\n 98: 5,\n 99: 6,\n 100: 7,\n 101: 8,\n 102: 9,\n 103: 10,\n 104: 11,\n 105: 12,\n 106: 13,\n 107: 14,\n 108: 15,\n 109: 16,\n 110: 17,\n 111: 18,\n 112: 19,\n 113: 20,\n 114: 21,\n 115: 22,\n 116: 23,\n 117: 24,\n 118: 25,\n 119: 26,\n 120: 27,\n 121: 28,\n 122: 29,\n 127: 76,\n 305: 224,\n 308: 226,\n 316: 70,\n },\n loadRect: function (rect) {\n return {\n x: HEAP32[(rect + 0) >> 2],\n y: HEAP32[(rect + 4) >> 2],\n w: HEAP32[(rect + 8) >> 2],\n h: HEAP32[(rect + 12) >> 2],\n };\n },\n updateRect: function (rect, r) {\n HEAP32[rect >> 2] = r.x;\n HEAP32[(rect + 4) >> 2] = r.y;\n HEAP32[(rect + 8) >> 2] = r.w;\n HEAP32[(rect + 12) >> 2] = r.h;\n },\n intersectionOfRects: function (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 {\n x: leftX,\n y: leftY,\n w: Math.max(leftX, rightX) - leftX,\n h: Math.max(leftY, rightY) - leftY,\n };\n },\n checkPixelFormat: function (fmt) {\n var format = HEAP32[fmt >> 2];\n if (format != -2042224636) {\n warnOnce(\"Unsupported pixel format!\");\n }\n },\n loadColorToCSSRGB: function (color) {\n var rgba = HEAP32[color >> 2];\n return (\n \"rgb(\" +\n (rgba & 255) +\n \",\" +\n ((rgba >> 8) & 255) +\n \",\" +\n ((rgba >> 16) & 255) +\n \")\"\n );\n },\n loadColorToCSSRGBA: function (color) {\n var rgba = HEAP32[color >> 2];\n return (\n \"rgba(\" +\n (rgba & 255) +\n \",\" +\n ((rgba >> 8) & 255) +\n \",\" +\n ((rgba >> 16) & 255) +\n \",\" +\n ((rgba >> 24) & 255) / 255 +\n \")\"\n );\n },\n translateColorToCSSRGBA: function (rgba) {\n return (\n \"rgba(\" +\n (rgba & 255) +\n \",\" +\n ((rgba >> 8) & 255) +\n \",\" +\n ((rgba >> 16) & 255) +\n \",\" +\n (rgba >>> 24) / 255 +\n \")\"\n );\n },\n translateRGBAToCSSRGBA: function (r, g, b, a) {\n return (\n \"rgba(\" +\n (r & 255) +\n \",\" +\n (g & 255) +\n \",\" +\n (b & 255) +\n \",\" +\n (a & 255) / 255 +\n \")\"\n );\n },\n translateRGBAToColor: function (r, g, b, a) {\n return r | (g << 8) | (b << 16) | (a << 24);\n },\n makeSurface: function (\n width,\n height,\n flags,\n usePageCanvas,\n source,\n rmask,\n gmask,\n bmask,\n amask,\n ) {\n flags = flags || 0;\n var is_SDL_HWSURFACE = flags & 1;\n var is_SDL_HWPALETTE = flags & 2097152;\n var is_SDL_OPENGL = flags & 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] = flags;\n HEAP32[(surf + 4) >> 2] = pixelFormat;\n HEAP32[(surf + 8) >> 2] = width;\n HEAP32[(surf + 12) >> 2] = height;\n HEAP32[(surf + 16) >> 2] = width * bpp;\n HEAP32[(surf + 20) >> 2] = buffer;\n HEAP32[(surf + 36) >> 2] = 0;\n HEAP32[(surf + 40) >> 2] = 0;\n HEAP32[(surf + 44) >> 2] = Module[\"canvas\"].width;\n HEAP32[(surf + 48) >> 2] = Module[\"canvas\"].height;\n HEAP32[(surf + 56) >> 2] = 1;\n HEAP32[pixelFormat >> 2] = -2042224636;\n HEAP32[(pixelFormat + 4) >> 2] = 0;\n HEAP8[(pixelFormat + 8) >> 0] = bpp * 8;\n HEAP8[(pixelFormat + 9) >> 0] = bpp;\n HEAP32[(pixelFormat + 12) >> 2] = rmask || 255;\n HEAP32[(pixelFormat + 16) >> 2] = gmask || 65280;\n HEAP32[(pixelFormat + 20) >> 2] = bmask || 16711680;\n HEAP32[(pixelFormat + 24) >> 2] = amask || 4278190080;\n SDL.GL = SDL.GL || is_SDL_OPENGL;\n var canvas;\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 } else {\n canvas = Module[\"canvas\"];\n }\n var webGLContextAttributes = {\n antialias: SDL.glAttributes[13] != 0 && SDL.glAttributes[14] > 1,\n depth: SDL.glAttributes[6] > 0,\n stencil: SDL.glAttributes[7] > 0,\n alpha: SDL.glAttributes[3] > 0,\n };\n var ctx = Browser.createContext(\n canvas,\n is_SDL_OPENGL,\n usePageCanvas,\n webGLContextAttributes,\n );\n SDL.surfaces[surf] = {\n width: width,\n height: height,\n canvas: canvas,\n ctx: ctx,\n surf: surf,\n buffer: buffer,\n pixelFormat: pixelFormat,\n alpha: 255,\n flags: flags,\n locked: 0,\n usePageCanvas: usePageCanvas,\n source: source,\n isFlagSet: function (flag) {\n return flags & flag;\n },\n };\n return surf;\n },\n copyIndexedColorData: function (surfData, rX, rY, rW, rH) {\n if (!surfData.colors) {\n return;\n }\n var fullWidth = Module[\"canvas\"].width;\n var fullHeight = Module[\"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 x = startX; x < endX; ++x) {\n data32[base + x] = colors32[HEAPU8[(buffer + base + x) >> 0]];\n }\n }\n },\n freeSurface: function (surf) {\n var refcountPointer = surf + 56;\n var refcount = HEAP32[refcountPointer >> 2];\n if (refcount > 1) {\n HEAP32[refcountPointer >> 2] = refcount - 1;\n return;\n }\n var info = SDL.surfaces[surf];\n if (!info.usePageCanvas && info.canvas) SDL.canvasPool.push(info.canvas);\n if (info.buffer) _free(info.buffer);\n _free(info.pixelFormat);\n _free(surf);\n SDL.surfaces[surf] = null;\n if (surf === SDL.screen) {\n SDL.screen = null;\n }\n },\n blitSurface: function (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(\n srcData.canvas,\n sr.x,\n sr.y,\n sr.w,\n sr.h,\n dr.x,\n dr.y,\n blitw,\n blith,\n );\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 },\n downFingers: {},\n savedKeydown: null,\n receiveEvent: function (event) {\n function unpressAllPressedKeys() {\n for (var code in SDL.keyboardMap) {\n SDL.events.push({ type: \"keyup\", keyCode: SDL.keyboardMap[code] });\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 i = 0; i < event.touches.length; i++) {\n var touch = event.touches[i];\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 = {\n type: mouseEventType,\n button: 0,\n pageX: firstTouch.clientX,\n pageY: firstTouch.clientY,\n };\n SDL.events.push(mouseEvent);\n }\n for (var i = 0; i < touches.length; i++) {\n var touch = touches[i];\n SDL.events.push({ type: event.type, touch: touch });\n }\n break;\n }\n case \"touchend\": {\n event.preventDefault();\n for (var i = 0; i < event.changedTouches.length; i++) {\n var touch = event.changedTouches[i];\n if (SDL.downFingers[touch.identifier] === true) {\n delete SDL.downFingers[touch.identifier];\n }\n }\n var mouseEvent = {\n type: \"mouseup\",\n button: 0,\n pageX: event.changedTouches[0].clientX,\n pageY: event.changedTouches[0].clientY,\n };\n SDL.DOMButtons[0] = 0;\n SDL.events.push(mouseEvent);\n for (var i = 0; i < event.changedTouches.length; i++) {\n var touch = event.changedTouches[i];\n SDL.events.push({ type: \"touchend\", touch: touch });\n }\n break;\n }\n case \"DOMMouseScroll\":\n case \"mousewheel\":\n case \"wheel\":\n var delta = -Browser.getMouseWheelDelta(event);\n delta =\n delta == 0 ? 0 : delta > 0 ? Math.max(delta, 1) : Math.min(delta, -1);\n var button = delta > 0 ? 3 : 4;\n SDL.events.push({\n type: \"mousedown\",\n button: button,\n pageX: event.pageX,\n pageY: event.pageY,\n });\n SDL.events.push({\n type: \"mouseup\",\n button: button,\n pageX: event.pageX,\n pageY: event.pageY,\n });\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({\n type: \"touchmove\",\n touch: {\n identifier: 0,\n deviceID: -1,\n pageX: event.pageX,\n pageY: event.pageY,\n },\n });\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 (\n event.type !== \"keydown\" ||\n (!SDL.unicode && !SDL.textInput) ||\n event.keyCode === 8 ||\n event.keyCode === 9\n ) {\n event.preventDefault();\n }\n if (event.type == \"mousedown\") {\n SDL.DOMButtons[event.button] = 1;\n SDL.events.push({\n type: \"touchstart\",\n touch: {\n identifier: 0,\n deviceID: -1,\n pageX: event.pageX,\n pageY: event.pageY,\n },\n });\n } else if (event.type == \"mouseup\") {\n if (!SDL.DOMButtons[event.button]) {\n return;\n }\n SDL.events.push({\n type: \"touchend\",\n touch: {\n identifier: 0,\n deviceID: -1,\n pageX: event.pageX,\n pageY: event.pageY,\n },\n });\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 i = 0; i < 3; i++) {\n if (SDL.DOMButtons[i]) {\n SDL.events.push({\n type: \"mouseup\",\n button: i,\n pageX: event.pageX,\n pageY: event.pageY,\n });\n SDL.DOMButtons[i] = 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({\n type: \"visibilitychange\",\n visible: !document.hidden,\n });\n unpressAllPressedKeys();\n event.preventDefault();\n break;\n case \"unload\":\n if (Browser.mainLoop.runner) {\n SDL.events.push(event);\n Browser.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 },\n lookupKeyCodeForEvent: function (event) {\n var code = event.keyCode;\n if (code >= 65 && code <= 90) {\n code += 32;\n } else {\n code = SDL.keyCodes[event.keyCode] || event.keyCode;\n if (\n event.location === KeyboardEvent.DOM_KEY_LOCATION_RIGHT &&\n code >= (224 | (1 << 10)) &&\n code <= (227 | (1 << 10))\n ) {\n code += 4;\n }\n }\n return code;\n },\n handleEvent: function (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 HEAP8[(SDL.keyboardState + code) >> 0] = down;\n SDL.modState =\n (HEAP8[(SDL.keyboardState + 1248) >> 0] ? 64 : 0) |\n (HEAP8[(SDL.keyboardState + 1249) >> 0] ? 1 : 0) |\n (HEAP8[(SDL.keyboardState + 1250) >> 0] ? 256 : 0) |\n (HEAP8[(SDL.keyboardState + 1252) >> 0] ? 128 : 0) |\n (HEAP8[(SDL.keyboardState + 1253) >> 0] ? 2 : 0) |\n (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 },\n flushEventsToHandler: function () {\n if (!SDL.eventHandler) return;\n while (SDL.pollEvent(SDL.eventHandlerTemp)) {\n Module[\"dynCall_iii\"](\n SDL.eventHandler,\n SDL.eventHandlerContext,\n SDL.eventHandlerTemp,\n );\n }\n },\n pollEvent: function (ptr) {\n if (SDL.initFlags & 512 && SDL.joystickEventState) {\n SDL.queryJoysticks();\n }\n if (ptr) {\n while (SDL.events.length > 0) {\n if (SDL.makeCEvent(SDL.events.shift(), ptr) !== false) return 1;\n }\n return 0;\n } else {\n return SDL.events.length > 0;\n }\n },\n makeCEvent: function (event, ptr) {\n if (typeof event === \"number\") {\n _memcpy(ptr, 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 var scan;\n if (key >= 1024) {\n scan = key - 1024;\n } else {\n scan = SDL.scanCodes[key] || key;\n }\n HEAP32[ptr >> 2] = SDL.DOMEventToSDLEvent[event.type];\n HEAP8[(ptr + 8) >> 0] = down ? 1 : 0;\n HEAP8[(ptr + 9) >> 0] = 0;\n HEAP32[(ptr + 12) >> 2] = scan;\n HEAP32[(ptr + 16) >> 2] = key;\n HEAP16[(ptr + 20) >> 1] = SDL.modState;\n HEAP32[(ptr + 24) >> 2] = event.keypressCharCode || key;\n break;\n }\n case \"keypress\": {\n HEAP32[ptr >> 2] = SDL.DOMEventToSDLEvent[event.type];\n var cStr = intArrayFromString(String.fromCharCode(event.charCode));\n for (var i = 0; i < cStr.length; ++i) {\n HEAP8[(ptr + (8 + i)) >> 0] = cStr[i];\n }\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[ptr >> 2] = SDL.DOMEventToSDLEvent[event.type];\n HEAP32[(ptr + 4) >> 2] = 0;\n HEAP32[(ptr + 8) >> 2] = 0;\n HEAP32[(ptr + 12) >> 2] = 0;\n HEAP8[(ptr + 16) >> 0] = event.button + 1;\n HEAP8[(ptr + 17) >> 0] = down ? 1 : 0;\n HEAP32[(ptr + 20) >> 2] = Browser.mouseX;\n HEAP32[(ptr + 24) >> 2] = Browser.mouseY;\n } else {\n HEAP32[ptr >> 2] = SDL.DOMEventToSDLEvent[event.type];\n HEAP32[(ptr + 4) >> 2] = 0;\n HEAP32[(ptr + 8) >> 2] = 0;\n HEAP32[(ptr + 12) >> 2] = 0;\n HEAP32[(ptr + 16) >> 2] = SDL.buttonState;\n HEAP32[(ptr + 20) >> 2] = Browser.mouseX;\n HEAP32[(ptr + 24) >> 2] = Browser.mouseY;\n HEAP32[(ptr + 28) >> 2] = Browser.mouseMovementX;\n HEAP32[(ptr + 32) >> 2] = Browser.mouseMovementY;\n }\n break;\n }\n case \"wheel\": {\n HEAP32[ptr >> 2] = SDL.DOMEventToSDLEvent[event.type];\n HEAP32[(ptr + 16) >> 2] = event.deltaX;\n HEAP32[(ptr + 20) >> 2] = 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 w = Module[\"canvas\"].width;\n var h = Module[\"canvas\"].height;\n var x = Browser.touches[touch.identifier].x / w;\n var y = Browser.touches[touch.identifier].y / h;\n var lx = Browser.lastTouches[touch.identifier].x / w;\n var ly = Browser.lastTouches[touch.identifier].y / h;\n var dx = x - lx;\n var dy = y - ly;\n if (touch[\"deviceID\"] === undefined)\n touch.deviceID = SDL.TOUCH_DEFAULT_ID;\n if (dx === 0 && dy === 0 && event.type === \"touchmove\") return false;\n HEAP32[ptr >> 2] = SDL.DOMEventToSDLEvent[event.type];\n HEAP32[(ptr + 4) >> 2] = _SDL_GetTicks();\n ((tempI64 = [\n touch.deviceID >>> 0,\n ((tempDouble = touch.deviceID),\n +Math_abs(tempDouble) >= 1\n ? tempDouble > 0\n ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) |\n 0) >>>\n 0\n : ~~+Math_ceil(\n (tempDouble - +(~~tempDouble >>> 0)) / 4294967296,\n ) >>> 0\n : 0),\n ]),\n (HEAP32[(ptr + 8) >> 2] = tempI64[0]),\n (HEAP32[(ptr + 12) >> 2] = tempI64[1]));\n ((tempI64 = [\n touch.identifier >>> 0,\n ((tempDouble = touch.identifier),\n +Math_abs(tempDouble) >= 1\n ? tempDouble > 0\n ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) |\n 0) >>>\n 0\n : ~~+Math_ceil(\n (tempDouble - +(~~tempDouble >>> 0)) / 4294967296,\n ) >>> 0\n : 0),\n ]),\n (HEAP32[(ptr + 16) >> 2] = tempI64[0]),\n (HEAP32[(ptr + 20) >> 2] = tempI64[1]));\n HEAPF32[(ptr + 24) >> 2] = x;\n HEAPF32[(ptr + 28) >> 2] = y;\n HEAPF32[(ptr + 32) >> 2] = dx;\n HEAPF32[(ptr + 36) >> 2] = dy;\n if (touch.force !== undefined) {\n HEAPF32[(ptr + 40) >> 2] = touch.force;\n } else {\n HEAPF32[(ptr + 40) >> 2] = event.type == \"touchend\" ? 0 : 1;\n }\n break;\n }\n case \"unload\": {\n HEAP32[ptr >> 2] = SDL.DOMEventToSDLEvent[event.type];\n break;\n }\n case \"resize\": {\n HEAP32[ptr >> 2] = SDL.DOMEventToSDLEvent[event.type];\n HEAP32[(ptr + 4) >> 2] = event.w;\n HEAP32[(ptr + 8) >> 2] = 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[ptr >> 2] = SDL.DOMEventToSDLEvent[event.type];\n HEAP8[(ptr + 4) >> 0] = event.index;\n HEAP8[(ptr + 5) >> 0] = event.button;\n HEAP8[(ptr + 6) >> 0] = state;\n break;\n }\n case \"joystick_axis_motion\": {\n HEAP32[ptr >> 2] = SDL.DOMEventToSDLEvent[event.type];\n HEAP8[(ptr + 4) >> 0] = event.index;\n HEAP8[(ptr + 5) >> 0] = event.axis;\n HEAP32[(ptr + 8) >> 2] = SDL.joystickAxisValueConversion(event.value);\n break;\n }\n case \"focus\": {\n var SDL_WINDOWEVENT_FOCUS_GAINED = 12;\n HEAP32[ptr >> 2] = SDL.DOMEventToSDLEvent[event.type];\n HEAP32[(ptr + 4) >> 2] = 0;\n HEAP8[(ptr + 8) >> 0] = SDL_WINDOWEVENT_FOCUS_GAINED;\n break;\n }\n case \"blur\": {\n var SDL_WINDOWEVENT_FOCUS_LOST = 13;\n HEAP32[ptr >> 2] = SDL.DOMEventToSDLEvent[event.type];\n HEAP32[(ptr + 4) >> 2] = 0;\n HEAP8[(ptr + 8) >> 0] = SDL_WINDOWEVENT_FOCUS_LOST;\n break;\n }\n case \"visibilitychange\": {\n var SDL_WINDOWEVENT_SHOWN = 1;\n var SDL_WINDOWEVENT_HIDDEN = 2;\n var visibilityEventID = event.visible\n ? SDL_WINDOWEVENT_SHOWN\n : SDL_WINDOWEVENT_HIDDEN;\n HEAP32[ptr >> 2] = SDL.DOMEventToSDLEvent[event.type];\n HEAP32[(ptr + 4) >> 2] = 0;\n HEAP8[(ptr + 8) >> 0] = visibilityEventID;\n break;\n }\n default:\n throw \"Unhandled SDL event: \" + event.type;\n }\n },\n makeFontString: function (height, fontName) {\n if (fontName.charAt(0) != \"'\" && fontName.charAt(0) != '\"') {\n fontName = '\"' + fontName + '\"';\n }\n return height + \"px \" + fontName + \", serif\";\n },\n estimateTextWidth: function (fontData, text) {\n var h = fontData.size;\n var fontString = SDL.makeFontString(h, fontData.name);\n var tempCtx = SDL.ttfContext;\n assert(tempCtx, \"TTF_Init must have been called\");\n tempCtx.font = fontString;\n var ret = tempCtx.measureText(text).width | 0;\n return ret;\n },\n allocateChannels: function (num) {\n if (SDL.numChannels && SDL.numChannels >= num && num != 0) return;\n SDL.numChannels = num;\n SDL.channels = [];\n for (var i = 0; i < num; i++) {\n SDL.channels[i] = { audio: null, volume: 1 };\n }\n },\n setGetVolume: function (info, volume) {\n if (!info) return 0;\n var ret = info.volume * 128;\n if (volume != -1) {\n info.volume = Math.min(Math.max(volume, 0), 128) / 128;\n if (info.audio) {\n try {\n info.audio.volume = info.volume;\n if (info.audio.webAudioGainNode)\n info.audio.webAudioGainNode[\"gain\"][\"value\"] = info.volume;\n } catch (e) {\n err(\"setGetVolume failed to set audio volume: \" + e);\n }\n }\n }\n return ret;\n },\n setPannerPosition: function (info, x, y, z) {\n if (!info) return;\n if (info.audio) {\n if (info.audio.webAudioPannerNode) {\n info.audio.webAudioPannerNode[\"setPosition\"](x, y, z);\n }\n }\n },\n playWebAudio: function (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 === undefined)\n abort(\"Cannot play back audio object that was not loaded\");\n webAudio.onDecodeComplete.push(function () {\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\"] = function () {\n audio[\"onended\"]();\n };\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 },\n pauseWebAudio: function (audio) {\n if (!audio) return;\n if (audio.webAudioNode) {\n try {\n audio.currentPosition =\n (SDL.audioContext[\"currentTime\"] - audio.startTime) %\n audio.resource.webAudio.decodedBuffer.duration;\n audio.webAudioNode[\"onended\"] = undefined;\n audio.webAudioNode.stop(0);\n audio.webAudioNode = undefined;\n } catch (e) {\n err(\"pauseWebAudio failed: \" + e);\n }\n }\n audio.paused = true;\n },\n openAudioContext: function () {\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: function () {\n return !!SDL.audioContext;\n },\n fillWebAudioBufferFromHeap: function (\n heapPtr,\n sizeSamplesPerChannel,\n dstAudioBuffer,\n ) {\n var numChannels = SDL.audio.channels;\n for (var c = 0; c < numChannels; ++c) {\n var channelData = dstAudioBuffer[\"getChannelData\"](c);\n if (channelData.length != sizeSamplesPerChannel) {\n throw (\n \"Web Audio output buffer length mismatch! Destination size: \" +\n channelData.length +\n \" samples vs expected \" +\n sizeSamplesPerChannel +\n \" samples!\"\n );\n }\n if (SDL.audio.format == 32784) {\n for (var j = 0; j < sizeSamplesPerChannel; ++j) {\n channelData[j] =\n HEAP16[(heapPtr + (j * numChannels + c) * 2) >> 1] / 32768;\n }\n } else if (SDL.audio.format == 8) {\n for (var j = 0; j < sizeSamplesPerChannel; ++j) {\n var v = HEAP8[(heapPtr + (j * numChannels + c)) >> 0];\n channelData[j] = (v >= 0 ? v - 128 : v + 128) / 128;\n }\n } else if (SDL.audio.format == 33056) {\n for (var j = 0; j < sizeSamplesPerChannel; ++j) {\n channelData[j] = HEAPF32[(heapPtr + (j * numChannels + c) * 4) >> 2];\n }\n } else {\n throw \"Invalid SDL audio format \" + SDL.audio.format + \"!\";\n }\n }\n },\n debugSurface: function (surfData) {\n console.log(\n \"dumping surface \" +\n [surfData.surf, surfData.source, surfData.width, surfData.height],\n );\n var image = surfData.ctx.getImageData(\n 0,\n 0,\n surfData.width,\n surfData.height,\n );\n var data = image.data;\n var num = Math.min(surfData.width, surfData.height);\n for (var i = 0; i < num; i++) {\n console.log(\n \" diagonal \" +\n i +\n \":\" +\n [\n data[i * surfData.width * 4 + i * 4 + 0],\n data[i * surfData.width * 4 + i * 4 + 1],\n data[i * surfData.width * 4 + i * 4 + 2],\n data[i * surfData.width * 4 + i * 4 + 3],\n ],\n );\n }\n },\n joystickEventState: 1,\n lastJoystickState: {},\n joystickNamePool: {},\n recordJoystickState: function (joystick, state) {\n var buttons = new Array(state.buttons.length);\n for (var i = 0; i < state.buttons.length; i++) {\n buttons[i] = SDL.getJoystickButtonState(state.buttons[i]);\n }\n SDL.lastJoystickState[joystick] = {\n buttons: buttons,\n axes: state.axes.slice(0),\n timestamp: state.timestamp,\n index: state.index,\n id: state.id,\n };\n },\n getJoystickButtonState: function (button) {\n if (typeof button === \"object\") {\n return button[\"pressed\"];\n } else {\n return button > 0;\n }\n },\n queryJoysticks: function () {\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 (\n typeof state.timestamp !== \"number\" ||\n state.timestamp !== prevState.timestamp ||\n !state.timestamp\n ) {\n var i;\n for (i = 0; i < state.buttons.length; i++) {\n var buttonState = SDL.getJoystickButtonState(state.buttons[i]);\n if (buttonState !== prevState.buttons[i]) {\n SDL.events.push({\n type: buttonState ? \"joystick_button_down\" : \"joystick_button_up\",\n joystick: joystick,\n index: joystick - 1,\n button: i,\n });\n }\n }\n for (i = 0; i < state.axes.length; i++) {\n if (state.axes[i] !== prevState.axes[i]) {\n SDL.events.push({\n type: \"joystick_axis_motion\",\n joystick: joystick,\n index: joystick - 1,\n axis: i,\n value: state.axes[i],\n });\n }\n }\n SDL.recordJoystickState(joystick, state);\n }\n }\n },\n joystickAxisValueConversion: function (value) {\n value = Math.min(1, Math.max(value, -1));\n return Math.ceil((value + 1) * 32767.5 - 32768);\n },\n getGamepads: function () {\n var fcn =\n navigator.getGamepads ||\n navigator.webkitGamepads ||\n navigator.mozGamepads ||\n navigator.gamepads ||\n navigator.webkitGetGamepads;\n if (fcn !== undefined) {\n return fcn.apply(navigator);\n } else {\n return [];\n }\n },\n getGamepad: function (deviceIndex) {\n var gamepads = SDL.getGamepads();\n if (gamepads.length > deviceIndex && deviceIndex >= 0) {\n return gamepads[deviceIndex];\n }\n return null;\n },\n};\nfunction _SDL_GL_SetAttribute(attr, value) {\n if (!(attr in SDL.glAttributes)) {\n abort(\n \"Unknown SDL GL attribute (\" +\n attr +\n \"). Please check if your SDL version is supported.\",\n );\n }\n SDL.glAttributes[attr] = value;\n}\nfunction _SDL_GL_SwapBuffers() {\n if (Browser.doSwapBuffers) Browser.doSwapBuffers();\n}\nfunction _SDL_GetError() {\n if (!SDL.errorMessage) {\n SDL.errorMessage = allocate(\n intArrayFromString(\"unknown SDL-emscripten error\"),\n \"i8\",\n ALLOC_NORMAL,\n );\n }\n return SDL.errorMessage;\n}\nfunction _SDL_Init(initFlags) {\n SDL.startTime = Date.now();\n SDL.initFlags = initFlags;\n if (!Module[\"doNotCaptureKeyboard\"]) {\n var keyboardListeningElement =\n 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 = _malloc(65536);\n _memset(SDL.keyboardState, 0, 65536);\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}\nfunction _SDL_AudioQuit() {\n for (var i = 0; i < SDL.numChannels; ++i) {\n if (SDL.channels[i].audio) {\n SDL.channels[i].audio.pause();\n SDL.channels[i].audio = undefined;\n }\n }\n if (SDL.music.audio) SDL.music.audio.pause();\n SDL.music.audio = undefined;\n}\nfunction _SDL_Quit() {\n _SDL_AudioQuit();\n var keyboardListeningElement = Module[\"keyboardListeningElement\"] || document;\n keyboardListeningElement.removeEventListener(\"keydown\", SDL.receiveEvent);\n keyboardListeningElement.removeEventListener(\"keyup\", SDL.receiveEvent);\n keyboardListeningElement.removeEventListener(\"keypress\", SDL.receiveEvent);\n}\nfunction ___assert_fail(condition, filename, line, func) {\n abort(\n \"Assertion failed: \" +\n UTF8ToString(condition) +\n \", at: \" +\n [\n filename ? UTF8ToString(filename) : \"unknown filename\",\n line,\n func ? UTF8ToString(func) : \"unknown function\",\n ],\n );\n}\nvar ENV = {};\nfunction ___buildEnvironment(environ) {\n var MAX_ENV_VALUES = 64;\n var TOTAL_ENV_SIZE = 1024;\n var poolPtr;\n var envPtr;\n if (!___buildEnvironment.called) {\n ___buildEnvironment.called = true;\n ENV[\"USER\"] = ENV[\"LOGNAME\"] = \"web_user\";\n ENV[\"PATH\"] = \"/\";\n ENV[\"PWD\"] = \"/\";\n ENV[\"HOME\"] = \"/home/web_user\";\n ENV[\"LANG\"] = \"C.UTF-8\";\n ENV[\"LANG\"] =\n (\n (typeof navigator === \"object\" &&\n navigator.languages &&\n navigator.languages[0]) ||\n \"C\"\n ).replace(\"-\", \"_\") + \".UTF-8\";\n ENV[\"_\"] = thisProgram;\n poolPtr = getMemory(TOTAL_ENV_SIZE);\n envPtr = getMemory(MAX_ENV_VALUES * 4);\n HEAP32[envPtr >> 2] = poolPtr;\n HEAP32[environ >> 2] = envPtr;\n } else {\n envPtr = HEAP32[environ >> 2];\n poolPtr = HEAP32[envPtr >> 2];\n }\n var strings = [];\n var totalSize = 0;\n for (var key in ENV) {\n if (typeof ENV[key] === \"string\") {\n var line = key + \"=\" + ENV[key];\n strings.push(line);\n totalSize += line.length;\n }\n }\n if (totalSize > TOTAL_ENV_SIZE) {\n throw new Error(\"Environment size exceeded TOTAL_ENV_SIZE!\");\n }\n var ptrSize = 4;\n for (var i = 0; i < strings.length; i++) {\n var line = strings[i];\n writeAsciiToMemory(line, poolPtr);\n HEAP32[(envPtr + i * ptrSize) >> 2] = poolPtr;\n poolPtr += line.length + 1;\n }\n HEAP32[(envPtr + strings.length * ptrSize) >> 2] = 0;\n}\nfunction _emscripten_get_now_is_monotonic() {\n return (\n 0 ||\n ENVIRONMENT_IS_NODE ||\n typeof dateNow !== \"undefined\" ||\n (typeof performance === \"object\" &&\n performance &&\n typeof performance[\"now\"] === \"function\")\n );\n}\nfunction _clock_gettime(clk_id, tp) {\n var now;\n if (clk_id === 0) {\n now = Date.now();\n } else if (clk_id === 1 && _emscripten_get_now_is_monotonic()) {\n now = _emscripten_get_now();\n } else {\n ___setErrNo(22);\n return -1;\n }\n HEAP32[tp >> 2] = (now / 1e3) | 0;\n HEAP32[(tp + 4) >> 2] = ((now % 1e3) * 1e3 * 1e3) | 0;\n return 0;\n}\nfunction ___clock_gettime(a0, a1) {\n return _clock_gettime(a0, a1);\n}\nfunction ___cxa_allocate_exception(size) {\n return _malloc(size);\n}\nvar ___exception_infos = {};\nfunction ___cxa_pure_virtual() {\n ABORT = true;\n throw \"Pure virtual function called!\";\n}\nvar ___exception_last = 0;\nfunction ___cxa_throw(ptr, type, destructor) {\n ___exception_infos[ptr] = {\n ptr: ptr,\n adjusted: [ptr],\n type: type,\n destructor: destructor,\n refcount: 0,\n caught: false,\n rethrown: false,\n };\n ___exception_last = ptr;\n if (!(\"uncaught_exception\" in __ZSt18uncaught_exceptionv)) {\n __ZSt18uncaught_exceptionv.uncaught_exceptions = 1;\n } else {\n __ZSt18uncaught_exceptionv.uncaught_exceptions++;\n }\n throw (\n ptr +\n \" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.\"\n );\n}\nfunction ___cxa_uncaught_exceptions() {\n return __ZSt18uncaught_exceptionv.uncaught_exceptions;\n}\nfunction ___lock() {}\nfunction ___map_file(pathname, size) {\n ___setErrNo(1);\n return -1;\n}\nvar SYSCALLS = {\n DEFAULT_POLLMASK: 5,\n mappings: {},\n umask: 511,\n calculateAt: function (dirfd, path) {\n if (path[0] !== \"/\") {\n var dir;\n if (dirfd === -100) {\n dir = FS.cwd();\n } else {\n var dirstream = FS.getStream(dirfd);\n if (!dirstream) throw new FS.ErrnoError(9);\n dir = dirstream.path;\n }\n path = PATH.join2(dir, path);\n }\n return path;\n },\n doStat: function (func, path, buf) {\n try {\n var stat = func(path);\n } catch (e) {\n if (\n e &&\n e.node &&\n PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))\n ) {\n return -20;\n }\n throw e;\n }\n HEAP32[buf >> 2] = stat.dev;\n HEAP32[(buf + 4) >> 2] = 0;\n HEAP32[(buf + 8) >> 2] = stat.ino;\n HEAP32[(buf + 12) >> 2] = stat.mode;\n HEAP32[(buf + 16) >> 2] = stat.nlink;\n HEAP32[(buf + 20) >> 2] = stat.uid;\n HEAP32[(buf + 24) >> 2] = stat.gid;\n HEAP32[(buf + 28) >> 2] = stat.rdev;\n HEAP32[(buf + 32) >> 2] = 0;\n ((tempI64 = [\n stat.size >>> 0,\n ((tempDouble = stat.size),\n +Math_abs(tempDouble) >= 1\n ? tempDouble > 0\n ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>>\n 0\n : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>>\n 0\n : 0),\n ]),\n (HEAP32[(buf + 40) >> 2] = tempI64[0]),\n (HEAP32[(buf + 44) >> 2] = tempI64[1]));\n HEAP32[(buf + 48) >> 2] = 4096;\n HEAP32[(buf + 52) >> 2] = stat.blocks;\n HEAP32[(buf + 56) >> 2] = (stat.atime.getTime() / 1e3) | 0;\n HEAP32[(buf + 60) >> 2] = 0;\n HEAP32[(buf + 64) >> 2] = (stat.mtime.getTime() / 1e3) | 0;\n HEAP32[(buf + 68) >> 2] = 0;\n HEAP32[(buf + 72) >> 2] = (stat.ctime.getTime() / 1e3) | 0;\n HEAP32[(buf + 76) >> 2] = 0;\n ((tempI64 = [\n stat.ino >>> 0,\n ((tempDouble = stat.ino),\n +Math_abs(tempDouble) >= 1\n ? tempDouble > 0\n ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>>\n 0\n : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>>\n 0\n : 0),\n ]),\n (HEAP32[(buf + 80) >> 2] = tempI64[0]),\n (HEAP32[(buf + 84) >> 2] = tempI64[1]));\n return 0;\n },\n doMsync: function (addr, stream, len, flags) {\n var buffer = new Uint8Array(HEAPU8.subarray(addr, addr + len));\n FS.msync(stream, buffer, 0, len, flags);\n },\n doMkdir: function (path, mode) {\n path = PATH.normalize(path);\n if (path[path.length - 1] === \"/\") path = path.substr(0, path.length - 1);\n FS.mkdir(path, mode, 0);\n return 0;\n },\n doMknod: function (path, mode, dev) {\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 -22;\n }\n FS.mknod(path, mode, dev);\n return 0;\n },\n doReadlink: function (path, buf, bufsize) {\n if (bufsize <= 0) return -22;\n var ret = FS.readlink(path);\n var len = Math.min(bufsize, lengthBytesUTF8(ret));\n var endChar = HEAP8[buf + len];\n stringToUTF8(ret, buf, bufsize + 1);\n HEAP8[buf + len] = endChar;\n return len;\n },\n doAccess: function (path, amode) {\n if (amode & ~7) {\n return -22;\n }\n var node;\n var lookup = FS.lookupPath(path, { follow: true });\n node = lookup.node;\n if (!node) {\n return -2;\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 -13;\n }\n return 0;\n },\n doDup: function (path, flags, suggestFD) {\n var suggest = FS.getStream(suggestFD);\n if (suggest) FS.close(suggest);\n return FS.open(path, flags, 0, suggestFD, suggestFD).fd;\n },\n doReadv: function (stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAP32[(iov + i * 8) >> 2];\n var len = HEAP32[(iov + (i * 8 + 4)) >> 2];\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n }\n return ret;\n },\n doWritev: function (stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAP32[(iov + i * 8) >> 2];\n var len = HEAP32[(iov + (i * 8 + 4)) >> 2];\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n }\n return ret;\n },\n varargs: 0,\n get: function (varargs) {\n SYSCALLS.varargs += 4;\n var ret = HEAP32[(SYSCALLS.varargs - 4) >> 2];\n return ret;\n },\n getStr: function () {\n var ret = UTF8ToString(SYSCALLS.get());\n return ret;\n },\n getStreamFromFD: function () {\n var stream = FS.getStream(SYSCALLS.get());\n if (!stream) throw new FS.ErrnoError(9);\n return stream;\n },\n get64: function () {\n var low = SYSCALLS.get(),\n high = SYSCALLS.get();\n if (low >= 0) assert(high === 0);\n else assert(high === -1);\n return low;\n },\n getZero: function () {\n assert(SYSCALLS.get() === 0);\n },\n};\nfunction ___syscall10(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var path = SYSCALLS.getStr();\n FS.unlink(path);\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall114(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n abort(\"cannot wait on child processes\");\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall12(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var path = SYSCALLS.getStr();\n FS.chdir(path);\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall140(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(),\n offset_high = SYSCALLS.get(),\n offset_low = SYSCALLS.get(),\n result = SYSCALLS.get(),\n whence = SYSCALLS.get();\n var HIGH_OFFSET = 4294967296;\n var offset = offset_high * HIGH_OFFSET + (offset_low >>> 0);\n var DOUBLE_LIMIT = 9007199254740992;\n if (offset <= -DOUBLE_LIMIT || offset >= DOUBLE_LIMIT) {\n return -75;\n }\n FS.llseek(stream, offset, whence);\n ((tempI64 = [\n stream.position >>> 0,\n ((tempDouble = stream.position),\n +Math_abs(tempDouble) >= 1\n ? tempDouble > 0\n ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>>\n 0\n : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>>\n 0\n : 0),\n ]),\n (HEAP32[result >> 2] = tempI64[0]),\n (HEAP32[(result + 4) >> 2] = tempI64[1]));\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall145(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(),\n iov = SYSCALLS.get(),\n iovcnt = SYSCALLS.get();\n return SYSCALLS.doReadv(stream, iov, iovcnt);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall146(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(),\n iov = SYSCALLS.get(),\n iovcnt = SYSCALLS.get();\n return SYSCALLS.doWritev(stream, iov, iovcnt);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall183(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var buf = SYSCALLS.get(),\n size = SYSCALLS.get();\n if (size === 0) return -22;\n var cwd = FS.cwd();\n var cwdLengthInBytes = lengthBytesUTF8(cwd);\n if (size < cwdLengthInBytes + 1) return -34;\n stringToUTF8(cwd, buf, size);\n return buf;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall191(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var resource = SYSCALLS.get(),\n rlim = SYSCALLS.get();\n HEAP32[rlim >> 2] = -1;\n HEAP32[(rlim + 4) >> 2] = -1;\n HEAP32[(rlim + 8) >> 2] = -1;\n HEAP32[(rlim + 12) >> 2] = -1;\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall195(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var path = SYSCALLS.getStr(),\n buf = SYSCALLS.get();\n return SYSCALLS.doStat(FS.stat, path, buf);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall196(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var path = SYSCALLS.getStr(),\n buf = SYSCALLS.get();\n return SYSCALLS.doStat(FS.lstat, path, buf);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall197(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(),\n buf = SYSCALLS.get();\n return SYSCALLS.doStat(FS.stat, stream.path, buf);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall202(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall199(a0, a1) {\n return ___syscall202(a0, a1);\n}\nvar PROCINFO = { ppid: 1, pid: 42, sid: 42, pgid: 42 };\nfunction ___syscall20(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n return PROCINFO.pid;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall201(a0, a1) {\n return ___syscall202(a0, a1);\n}\nfunction ___syscall220(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(),\n dirp = SYSCALLS.get(),\n count = SYSCALLS.get();\n if (!stream.getdents) {\n stream.getdents = FS.readdir(stream.path);\n }\n var struct_size = 280;\n var pos = 0;\n var off = FS.llseek(stream, 0, 1);\n var idx = Math.floor(off / struct_size);\n while (idx < stream.getdents.length && pos + struct_size <= count) {\n var id;\n var type;\n var name = stream.getdents[idx];\n if (name[0] === \".\") {\n id = 1;\n type = 4;\n } else {\n var child = FS.lookupNode(stream.node, name);\n id = child.id;\n type = FS.isChrdev(child.mode)\n ? 2\n : FS.isDir(child.mode)\n ? 4\n : FS.isLink(child.mode)\n ? 10\n : 8;\n }\n ((tempI64 = [\n id >>> 0,\n ((tempDouble = id),\n +Math_abs(tempDouble) >= 1\n ? tempDouble > 0\n ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) |\n 0) >>>\n 0\n : ~~+Math_ceil(\n (tempDouble - +(~~tempDouble >>> 0)) / 4294967296,\n ) >>> 0\n : 0),\n ]),\n (HEAP32[(dirp + pos) >> 2] = tempI64[0]),\n (HEAP32[(dirp + pos + 4) >> 2] = tempI64[1]));\n ((tempI64 = [\n ((idx + 1) * struct_size) >>> 0,\n ((tempDouble = (idx + 1) * struct_size),\n +Math_abs(tempDouble) >= 1\n ? tempDouble > 0\n ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) |\n 0) >>>\n 0\n : ~~+Math_ceil(\n (tempDouble - +(~~tempDouble >>> 0)) / 4294967296,\n ) >>> 0\n : 0),\n ]),\n (HEAP32[(dirp + pos + 8) >> 2] = tempI64[0]),\n (HEAP32[(dirp + pos + 12) >> 2] = tempI64[1]));\n HEAP16[(dirp + pos + 16) >> 1] = 280;\n HEAP8[(dirp + pos + 18) >> 0] = type;\n stringToUTF8(name, dirp + pos + 19, 256);\n pos += struct_size;\n idx += 1;\n }\n FS.llseek(stream, idx * struct_size, 0);\n return pos;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall221(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(),\n cmd = SYSCALLS.get();\n switch (cmd) {\n case 0: {\n var arg = SYSCALLS.get();\n if (arg < 0) {\n return -22;\n }\n var newStream;\n newStream = FS.open(stream.path, stream.flags, 0, arg);\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 arg = SYSCALLS.get();\n stream.flags |= arg;\n return 0;\n }\n case 12: {\n var arg = SYSCALLS.get();\n var offset = 0;\n HEAP16[(arg + offset) >> 1] = 2;\n return 0;\n }\n case 13:\n case 14:\n return 0;\n case 16:\n case 8:\n return -22;\n case 9:\n ___setErrNo(22);\n return -1;\n default: {\n return -22;\n }\n }\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall3(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(),\n buf = SYSCALLS.get(),\n count = SYSCALLS.get();\n return FS.read(stream, HEAP8, buf, count);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall33(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var path = SYSCALLS.getStr(),\n amode = SYSCALLS.get();\n return SYSCALLS.doAccess(path, amode);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall340(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var pid = SYSCALLS.get(),\n resource = SYSCALLS.get(),\n new_limit = SYSCALLS.get(),\n old_limit = SYSCALLS.get();\n if (old_limit) {\n HEAP32[old_limit >> 2] = -1;\n HEAP32[(old_limit + 4) >> 2] = -1;\n HEAP32[(old_limit + 8) >> 2] = -1;\n HEAP32[(old_limit + 12) >> 2] = -1;\n }\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall38(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var old_path = SYSCALLS.getStr(),\n new_path = SYSCALLS.getStr();\n FS.rename(old_path, new_path);\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall39(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var path = SYSCALLS.getStr(),\n mode = SYSCALLS.get();\n return SYSCALLS.doMkdir(path, mode);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall4(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(),\n buf = SYSCALLS.get(),\n count = SYSCALLS.get();\n return FS.write(stream, HEAP8, buf, count);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall40(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var path = SYSCALLS.getStr();\n FS.rmdir(path);\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall41(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var old = SYSCALLS.getStreamFromFD();\n return FS.open(old.path, old.flags, 0).fd;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nvar PIPEFS = {\n BUCKET_BUFFER_SIZE: 8192,\n mount: function (mount) {\n return FS.createNode(null, \"/\", 16384 | 511, 0);\n },\n createPipe: function () {\n var pipe = { buckets: [] };\n pipe.buckets.push({\n buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),\n offset: 0,\n roffset: 0,\n });\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({\n path: rName,\n node: rNode,\n flags: FS.modeStringToFlags(\"r\"),\n seekable: false,\n stream_ops: PIPEFS.stream_ops,\n });\n rNode.stream = readableStream;\n var writableStream = FS.createStream({\n path: wName,\n node: wNode,\n flags: FS.modeStringToFlags(\"w\"),\n seekable: false,\n stream_ops: PIPEFS.stream_ops,\n });\n wNode.stream = writableStream;\n return { readable_fd: readableStream.fd, writable_fd: writableStream.fd };\n },\n stream_ops: {\n poll: function (stream) {\n var pipe = stream.node.pipe;\n if ((stream.flags & 2097155) === 1) {\n return 256 | 4;\n } else {\n if (pipe.buckets.length > 0) {\n for (var i = 0; i < pipe.buckets.length; i++) {\n var bucket = pipe.buckets[i];\n if (bucket.offset - bucket.roffset > 0) {\n return 64 | 1;\n }\n }\n }\n }\n return 0;\n },\n ioctl: function (stream, request, varargs) {\n return ERRNO_CODES.EINVAL;\n },\n fsync: function (stream) {\n return ERRNO_CODES.EINVAL;\n },\n read: function (stream, buffer, offset, length, position) {\n var pipe = stream.node.pipe;\n var currentLength = 0;\n for (var i = 0; i < pipe.buckets.length; i++) {\n var bucket = pipe.buckets[i];\n currentLength += bucket.offset - bucket.roffset;\n }\n assert(buffer instanceof ArrayBuffer || ArrayBuffer.isView(buffer));\n var data = buffer.subarray(offset, offset + length);\n if (length <= 0) {\n return 0;\n }\n if (currentLength == 0) {\n throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);\n }\n var toRead = Math.min(currentLength, length);\n var totalRead = toRead;\n var toRemove = 0;\n for (var i = 0; i < pipe.buckets.length; i++) {\n var currBucket = pipe.buckets[i];\n var bucketSize = currBucket.offset - currBucket.roffset;\n if (toRead <= bucketSize) {\n var tmpSlice = currBucket.buffer.subarray(\n currBucket.roffset,\n currBucket.offset,\n );\n if (toRead < bucketSize) {\n tmpSlice = tmpSlice.subarray(0, toRead);\n currBucket.roffset += toRead;\n } else {\n toRemove++;\n }\n data.set(tmpSlice);\n break;\n } else {\n var tmpSlice = currBucket.buffer.subarray(\n currBucket.roffset,\n currBucket.offset,\n );\n data.set(tmpSlice);\n data = data.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 },\n write: function (stream, buffer, offset, length, position) {\n var pipe = stream.node.pipe;\n assert(buffer instanceof ArrayBuffer || ArrayBuffer.isView(buffer));\n var data = buffer.subarray(offset, offset + length);\n var dataLen = data.byteLength;\n if (dataLen <= 0) {\n return 0;\n }\n var currBucket = null;\n if (pipe.buckets.length == 0) {\n currBucket = {\n buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),\n offset: 0,\n roffset: 0,\n };\n pipe.buckets.push(currBucket);\n } else {\n currBucket = pipe.buckets[pipe.buckets.length - 1];\n }\n assert(currBucket.offset <= PIPEFS.BUCKET_BUFFER_SIZE);\n var freeBytesInCurrBuffer = PIPEFS.BUCKET_BUFFER_SIZE - currBucket.offset;\n if (freeBytesInCurrBuffer >= dataLen) {\n currBucket.buffer.set(data, currBucket.offset);\n currBucket.offset += dataLen;\n return dataLen;\n } else if (freeBytesInCurrBuffer > 0) {\n currBucket.buffer.set(\n data.subarray(0, freeBytesInCurrBuffer),\n currBucket.offset,\n );\n currBucket.offset += freeBytesInCurrBuffer;\n data = data.subarray(freeBytesInCurrBuffer, data.byteLength);\n }\n var numBuckets = (data.byteLength / PIPEFS.BUCKET_BUFFER_SIZE) | 0;\n var remElements = data.byteLength % PIPEFS.BUCKET_BUFFER_SIZE;\n for (var i = 0; i < numBuckets; i++) {\n var newBucket = {\n buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),\n offset: PIPEFS.BUCKET_BUFFER_SIZE,\n roffset: 0,\n };\n pipe.buckets.push(newBucket);\n newBucket.buffer.set(data.subarray(0, PIPEFS.BUCKET_BUFFER_SIZE));\n data = data.subarray(PIPEFS.BUCKET_BUFFER_SIZE, data.byteLength);\n }\n if (remElements > 0) {\n var newBucket = {\n buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),\n offset: data.byteLength,\n roffset: 0,\n };\n pipe.buckets.push(newBucket);\n newBucket.buffer.set(data);\n }\n return dataLen;\n },\n close: function (stream) {\n var pipe = stream.node.pipe;\n pipe.buckets = null;\n },\n },\n nextname: function () {\n if (!PIPEFS.nextname.current) {\n PIPEFS.nextname.current = 0;\n }\n return \"pipe[\" + PIPEFS.nextname.current++ + \"]\";\n },\n};\nfunction ___syscall42(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var fdPtr = SYSCALLS.get();\n if (fdPtr == 0) {\n throw new FS.ErrnoError(14);\n }\n var res = PIPEFS.createPipe();\n HEAP32[fdPtr >> 2] = res.readable_fd;\n HEAP32[(fdPtr + 4) >> 2] = res.writable_fd;\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall5(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var pathname = SYSCALLS.getStr(),\n flags = SYSCALLS.get(),\n mode = SYSCALLS.get();\n var stream = FS.open(pathname, flags, mode);\n return stream.fd;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall54(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(),\n op = SYSCALLS.get();\n switch (op) {\n case 21509:\n case 21505: {\n if (!stream.tty) return -25;\n return 0;\n }\n case 21510:\n case 21511:\n case 21512:\n case 21506:\n case 21507:\n case 21508: {\n if (!stream.tty) return -25;\n return 0;\n }\n case 21519: {\n if (!stream.tty) return -25;\n var argp = SYSCALLS.get();\n HEAP32[argp >> 2] = 0;\n return 0;\n }\n case 21520: {\n if (!stream.tty) return -25;\n return -22;\n }\n case 21531: {\n var argp = SYSCALLS.get();\n return FS.ioctl(stream, op, argp);\n }\n case 21523: {\n if (!stream.tty) return -25;\n return 0;\n }\n case 21524: {\n if (!stream.tty) return -25;\n return 0;\n }\n default:\n abort(\"bad ioctl syscall \" + op);\n }\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall6(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD();\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall63(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var old = SYSCALLS.getStreamFromFD(),\n suggestFD = SYSCALLS.get();\n if (old.fd === suggestFD) return suggestFD;\n return SYSCALLS.doDup(old.path, old.flags, suggestFD);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall77(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var who = SYSCALLS.get(),\n usage = SYSCALLS.get();\n _memset(usage, 0, 136);\n HEAP32[usage >> 2] = 1;\n HEAP32[(usage + 4) >> 2] = 2;\n HEAP32[(usage + 8) >> 2] = 3;\n HEAP32[(usage + 12) >> 2] = 4;\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall83(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var target = SYSCALLS.getStr(),\n linkpath = SYSCALLS.getStr();\n FS.symlink(target, linkpath);\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___syscall85(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var path = SYSCALLS.getStr(),\n buf = SYSCALLS.get(),\n bufsize = SYSCALLS.get();\n return SYSCALLS.doReadlink(path, buf, bufsize);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction __emscripten_syscall_munmap(addr, len) {\n if (addr === -1 || len === 0) {\n return -22;\n }\n var info = SYSCALLS.mappings[addr];\n if (!info) return 0;\n if (len === info.len) {\n var stream = FS.getStream(info.fd);\n SYSCALLS.doMsync(addr, stream, len, info.flags);\n FS.munmap(stream);\n SYSCALLS.mappings[addr] = null;\n if (info.allocated) {\n _free(info.malloc);\n }\n }\n return 0;\n}\nfunction ___syscall91(which, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var addr = SYSCALLS.get(),\n len = SYSCALLS.get();\n return __emscripten_syscall_munmap(addr, len);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___unlock() {}\nfunction _exit(status) {\n exit(status);\n}\nfunction __exit(a0) {\n return _exit(a0);\n}\nfunction _abort() {\n Module[\"abort\"]();\n}\nfunction _atexit(func, arg) {\n warnOnce(\n \"atexit() called, but EXIT_RUNTIME is not set, so atexits() will not be called. set EXIT_RUNTIME to 1 (see the FAQ)\",\n );\n __ATEXIT__.unshift({ func: func, arg: arg });\n}\nvar _ceil = Math_ceil;\nfunction _clock() {\n if (_clock.start === undefined) _clock.start = Date.now();\n return ((Date.now() - _clock.start) * (1e6 / 1e3)) | 0;\n}\nfunction _difftime(time1, time0) {\n return time1 - time0;\n}\nfunction _dlopen() {\n abort(\n \"To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking\",\n );\n}\nfunction _dlclose() {\n return _dlopen.apply(null, arguments);\n}\nfunction _dlerror() {\n return _dlopen.apply(null, arguments);\n}\nfunction _dlsym() {\n return _dlopen.apply(null, arguments);\n}\nfunction _emscripten_get_canvas_size(width, height, isFullscreen) {\n var canvas = Module[\"canvas\"];\n HEAP32[width >> 2] = canvas.width;\n HEAP32[height >> 2] = canvas.height;\n HEAP32[isFullscreen >> 2] = Browser.isFullscreen ? 1 : 0;\n}\nfunction _emscripten_get_heap_size() {\n return HEAP8.length;\n}\nfunction _longjmp(env, value) {\n _setThrew(env, value || 1);\n throw \"longjmp\";\n}\nfunction _emscripten_longjmp(env, value) {\n _longjmp(env, value);\n}\nfunction _execl() {\n ___setErrNo(8);\n return -1;\n}\nfunction _execve() {\n return _execl.apply(null, arguments);\n}\nvar _fabs = Math_abs;\nvar _floor = Math_floor;\nfunction _fork() {\n ___setErrNo(11);\n return -1;\n}\nfunction _getenv(name) {\n if (name === 0) return 0;\n name = UTF8ToString(name);\n if (!ENV.hasOwnProperty(name)) return 0;\n if (_getenv.ret) _free(_getenv.ret);\n _getenv.ret = allocateUTF8(ENV[name]);\n return _getenv.ret;\n}\nfunction _getpwnam() {\n throw \"getpwnam: TODO\";\n}\nfunction _getpwuid(uid) {\n return 0;\n}\nfunction _gettimeofday(ptr) {\n var now = Date.now();\n HEAP32[ptr >> 2] = (now / 1e3) | 0;\n HEAP32[(ptr + 4) >> 2] = ((now % 1e3) * 1e3) | 0;\n return 0;\n}\nvar GL = {\n counter: 1,\n lastError: 0,\n buffers: [],\n mappedBuffers: {},\n programs: [],\n framebuffers: [],\n renderbuffers: [],\n textures: [],\n uniforms: [],\n shaders: [],\n vaos: [],\n contexts: {},\n currentContext: null,\n offscreenCanvases: {},\n timerQueriesEXT: [],\n currArrayBuffer: 0,\n currElementArrayBuffer: 0,\n byteSizeByTypeRoot: 5120,\n byteSizeByType: [1, 1, 2, 2, 4, 4, 4, 2, 3, 4, 8],\n programInfos: {},\n stringCache: {},\n unpackAlignment: 4,\n init: function () {\n GL.createLog2ceilLookup(GL.MAX_TEMP_BUFFER_SIZE);\n GL.miniTempBuffer = new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);\n for (var i = 0; i < GL.MINI_TEMP_BUFFER_SIZE; i++) {\n GL.miniTempBufferViews[i] = GL.miniTempBuffer.subarray(0, i + 1);\n }\n },\n recordError: function recordError(errorCode) {\n if (!GL.lastError) {\n GL.lastError = errorCode;\n }\n },\n getNewId: function (table) {\n var ret = GL.counter++;\n for (var i = table.length; i < ret; i++) {\n table[i] = null;\n }\n return ret;\n },\n MINI_TEMP_BUFFER_SIZE: 256,\n miniTempBuffer: null,\n miniTempBufferViews: [0],\n MAX_TEMP_BUFFER_SIZE: 2097152,\n numTempVertexBuffersPerSize: 64,\n log2ceilLookup: null,\n createLog2ceilLookup: function (maxValue) {\n GL.log2ceilLookup = new Uint8Array(maxValue + 1);\n var log2 = 0;\n var pow2 = 1;\n GL.log2ceilLookup[0] = 0;\n for (var i = 1; i <= maxValue; ++i) {\n if (i > pow2) {\n pow2 <<= 1;\n ++log2;\n }\n GL.log2ceilLookup[i] = log2;\n }\n },\n generateTempBuffers: function (quads, context) {\n var largestIndex = GL.log2ceilLookup[GL.MAX_TEMP_BUFFER_SIZE];\n context.tempVertexBufferCounters1 = [];\n context.tempVertexBufferCounters2 = [];\n context.tempVertexBufferCounters1.length =\n context.tempVertexBufferCounters2.length = largestIndex + 1;\n context.tempVertexBuffers1 = [];\n context.tempVertexBuffers2 = [];\n context.tempVertexBuffers1.length = context.tempVertexBuffers2.length =\n largestIndex + 1;\n context.tempIndexBuffers = [];\n context.tempIndexBuffers.length = largestIndex + 1;\n for (var i = 0; i <= largestIndex; ++i) {\n context.tempIndexBuffers[i] = null;\n context.tempVertexBufferCounters1[i] = context.tempVertexBufferCounters2[\n i\n ] = 0;\n var ringbufferLength = GL.numTempVertexBuffersPerSize;\n context.tempVertexBuffers1[i] = [];\n context.tempVertexBuffers2[i] = [];\n var ringbuffer1 = context.tempVertexBuffers1[i];\n var ringbuffer2 = context.tempVertexBuffers2[i];\n ringbuffer1.length = ringbuffer2.length = ringbufferLength;\n for (var j = 0; j < ringbufferLength; ++j) {\n ringbuffer1[j] = ringbuffer2[j] = null;\n }\n }\n if (quads) {\n context.tempQuadIndexBuffer = GLctx.createBuffer();\n context.GLctx.bindBuffer(\n context.GLctx.ELEMENT_ARRAY_BUFFER,\n context.tempQuadIndexBuffer,\n );\n var numIndexes = GL.MAX_TEMP_BUFFER_SIZE >> 1;\n var quadIndexes = new Uint16Array(numIndexes);\n var i = 0,\n v = 0;\n while (1) {\n quadIndexes[i++] = v;\n if (i >= numIndexes) break;\n quadIndexes[i++] = v + 1;\n if (i >= numIndexes) break;\n quadIndexes[i++] = v + 2;\n if (i >= numIndexes) break;\n quadIndexes[i++] = v;\n if (i >= numIndexes) break;\n quadIndexes[i++] = v + 2;\n if (i >= numIndexes) break;\n quadIndexes[i++] = v + 3;\n if (i >= numIndexes) break;\n v += 4;\n }\n context.GLctx.bufferData(\n context.GLctx.ELEMENT_ARRAY_BUFFER,\n quadIndexes,\n context.GLctx.STATIC_DRAW,\n );\n context.GLctx.bindBuffer(context.GLctx.ELEMENT_ARRAY_BUFFER, null);\n }\n },\n getTempVertexBuffer: function getTempVertexBuffer(sizeBytes) {\n var idx = GL.log2ceilLookup[sizeBytes];\n var ringbuffer = GL.currentContext.tempVertexBuffers1[idx];\n var nextFreeBufferIndex = GL.currentContext.tempVertexBufferCounters1[idx];\n GL.currentContext.tempVertexBufferCounters1[idx] =\n (GL.currentContext.tempVertexBufferCounters1[idx] + 1) &\n (GL.numTempVertexBuffersPerSize - 1);\n var vbo = ringbuffer[nextFreeBufferIndex];\n if (vbo) {\n return vbo;\n }\n var prevVBO = GLctx.getParameter(GLctx.ARRAY_BUFFER_BINDING);\n ringbuffer[nextFreeBufferIndex] = GLctx.createBuffer();\n GLctx.bindBuffer(GLctx.ARRAY_BUFFER, ringbuffer[nextFreeBufferIndex]);\n GLctx.bufferData(GLctx.ARRAY_BUFFER, 1 << idx, GLctx.DYNAMIC_DRAW);\n GLctx.bindBuffer(GLctx.ARRAY_BUFFER, prevVBO);\n return ringbuffer[nextFreeBufferIndex];\n },\n getTempIndexBuffer: function getTempIndexBuffer(sizeBytes) {\n var idx = GL.log2ceilLookup[sizeBytes];\n var ibo = GL.currentContext.tempIndexBuffers[idx];\n if (ibo) {\n return ibo;\n }\n var prevIBO = GLctx.getParameter(GLctx.ELEMENT_ARRAY_BUFFER_BINDING);\n GL.currentContext.tempIndexBuffers[idx] = GLctx.createBuffer();\n GLctx.bindBuffer(\n GLctx.ELEMENT_ARRAY_BUFFER,\n GL.currentContext.tempIndexBuffers[idx],\n );\n GLctx.bufferData(GLctx.ELEMENT_ARRAY_BUFFER, 1 << idx, GLctx.DYNAMIC_DRAW);\n GLctx.bindBuffer(GLctx.ELEMENT_ARRAY_BUFFER, prevIBO);\n return GL.currentContext.tempIndexBuffers[idx];\n },\n newRenderingFrameStarted: function newRenderingFrameStarted() {\n if (!GL.currentContext) {\n return;\n }\n var vb = GL.currentContext.tempVertexBuffers1;\n GL.currentContext.tempVertexBuffers1 = GL.currentContext.tempVertexBuffers2;\n GL.currentContext.tempVertexBuffers2 = vb;\n vb = GL.currentContext.tempVertexBufferCounters1;\n GL.currentContext.tempVertexBufferCounters1 =\n GL.currentContext.tempVertexBufferCounters2;\n GL.currentContext.tempVertexBufferCounters2 = vb;\n var largestIndex = GL.log2ceilLookup[GL.MAX_TEMP_BUFFER_SIZE];\n for (var i = 0; i <= largestIndex; ++i) {\n GL.currentContext.tempVertexBufferCounters1[i] = 0;\n }\n },\n getSource: function (shader, count, string, length) {\n var source = \"\";\n for (var i = 0; i < count; ++i) {\n var len = length ? HEAP32[(length + i * 4) >> 2] : -1;\n source += UTF8ToString(\n HEAP32[(string + i * 4) >> 2],\n len < 0 ? undefined : len,\n );\n }\n var type = GLctx.getShaderParameter(GL.shaders[shader], 35663);\n if (type == 35632) {\n if (\n GLEmulation.findToken(source, \"dFdx\") ||\n GLEmulation.findToken(source, \"dFdy\") ||\n GLEmulation.findToken(source, \"fwidth\")\n ) {\n source = \"#extension GL_OES_standard_derivatives : enable\\n\" + source;\n var extension = GLctx.getExtension(\"OES_standard_derivatives\");\n }\n }\n return source;\n },\n createContext: function (canvas, webGLContextAttributes) {\n var ctx =\n canvas.getContext(\"webgl\", webGLContextAttributes) ||\n canvas.getContext(\"experimental-webgl\", webGLContextAttributes);\n return ctx ? GL.registerContext(ctx, webGLContextAttributes) : 0;\n },\n registerContext: function (ctx, webGLContextAttributes) {\n var handle = _malloc(8);\n var context = {\n handle: handle,\n attributes: webGLContextAttributes,\n version: webGLContextAttributes.majorVersion,\n GLctx: ctx,\n };\n if (ctx.canvas) ctx.canvas.GLctxObject = context;\n GL.contexts[handle] = context;\n if (\n typeof webGLContextAttributes.enableExtensionsByDefault === \"undefined\" ||\n webGLContextAttributes.enableExtensionsByDefault\n ) {\n GL.initExtensions(context);\n }\n return handle;\n },\n makeContextCurrent: function (contextHandle) {\n GL.currentContext = GL.contexts[contextHandle];\n Module.ctx = GLctx = GL.currentContext && GL.currentContext.GLctx;\n return !(contextHandle && !GLctx);\n },\n getContext: function (contextHandle) {\n return GL.contexts[contextHandle];\n },\n deleteContext: function (contextHandle) {\n if (GL.currentContext === GL.contexts[contextHandle])\n GL.currentContext = null;\n if (typeof JSEvents === \"object\")\n JSEvents.removeAllHandlersOnTarget(\n GL.contexts[contextHandle].GLctx.canvas,\n );\n if (GL.contexts[contextHandle] && GL.contexts[contextHandle].GLctx.canvas)\n GL.contexts[contextHandle].GLctx.canvas.GLctxObject = undefined;\n _free(GL.contexts[contextHandle]);\n GL.contexts[contextHandle] = null;\n },\n acquireInstancedArraysExtension: function (ctx) {\n var ext = ctx.getExtension(\"ANGLE_instanced_arrays\");\n if (ext) {\n ctx[\"vertexAttribDivisor\"] = function (index, divisor) {\n ext[\"vertexAttribDivisorANGLE\"](index, divisor);\n };\n ctx[\"drawArraysInstanced\"] = function (mode, first, count, primcount) {\n ext[\"drawArraysInstancedANGLE\"](mode, first, count, primcount);\n };\n ctx[\"drawElementsInstanced\"] = function (\n mode,\n count,\n type,\n indices,\n primcount,\n ) {\n ext[\"drawElementsInstancedANGLE\"](\n mode,\n count,\n type,\n indices,\n primcount,\n );\n };\n }\n },\n acquireVertexArrayObjectExtension: function (ctx) {\n var ext = ctx.getExtension(\"OES_vertex_array_object\");\n if (ext) {\n ctx[\"createVertexArray\"] = function () {\n return ext[\"createVertexArrayOES\"]();\n };\n ctx[\"deleteVertexArray\"] = function (vao) {\n ext[\"deleteVertexArrayOES\"](vao);\n };\n ctx[\"bindVertexArray\"] = function (vao) {\n ext[\"bindVertexArrayOES\"](vao);\n };\n ctx[\"isVertexArray\"] = function (vao) {\n return ext[\"isVertexArrayOES\"](vao);\n };\n }\n },\n acquireDrawBuffersExtension: function (ctx) {\n var ext = ctx.getExtension(\"WEBGL_draw_buffers\");\n if (ext) {\n ctx[\"drawBuffers\"] = function (n, bufs) {\n ext[\"drawBuffersWEBGL\"](n, bufs);\n };\n }\n },\n initExtensions: function (context) {\n if (!context) context = GL.currentContext;\n if (context.initExtensionsDone) return;\n context.initExtensionsDone = true;\n var GLctx = context.GLctx;\n context.compressionExt = GLctx.getExtension(\n \"WEBGL_compressed_texture_s3tc\",\n );\n context.anisotropicExt = GLctx.getExtension(\n \"EXT_texture_filter_anisotropic\",\n );\n if (context.version < 2) {\n GL.acquireInstancedArraysExtension(GLctx);\n GL.acquireVertexArrayObjectExtension(GLctx);\n GL.acquireDrawBuffersExtension(GLctx);\n }\n GLctx.disjointTimerQueryExt = GLctx.getExtension(\n \"EXT_disjoint_timer_query\",\n );\n var automaticallyEnabledExtensions = [\n \"OES_texture_float\",\n \"OES_texture_half_float\",\n \"OES_standard_derivatives\",\n \"OES_vertex_array_object\",\n \"WEBGL_compressed_texture_s3tc\",\n \"WEBGL_depth_texture\",\n \"OES_element_index_uint\",\n \"EXT_texture_filter_anisotropic\",\n \"EXT_frag_depth\",\n \"WEBGL_draw_buffers\",\n \"ANGLE_instanced_arrays\",\n \"OES_texture_float_linear\",\n \"OES_texture_half_float_linear\",\n \"EXT_blend_minmax\",\n \"EXT_shader_texture_lod\",\n \"WEBGL_compressed_texture_pvrtc\",\n \"EXT_color_buffer_half_float\",\n \"WEBGL_color_buffer_float\",\n \"EXT_sRGB\",\n \"WEBGL_compressed_texture_etc1\",\n \"EXT_disjoint_timer_query\",\n \"WEBGL_compressed_texture_etc\",\n \"WEBGL_compressed_texture_astc\",\n \"EXT_color_buffer_float\",\n \"WEBGL_compressed_texture_s3tc_srgb\",\n \"EXT_disjoint_timer_query_webgl2\",\n ];\n var exts = GLctx.getSupportedExtensions();\n if (exts && exts.length > 0) {\n GLctx.getSupportedExtensions().forEach(function (ext) {\n if (automaticallyEnabledExtensions.indexOf(ext) != -1) {\n GLctx.getExtension(ext);\n }\n });\n }\n },\n populateUniformTable: function (program) {\n var p = GL.programs[program];\n var ptable = (GL.programInfos[program] = {\n uniforms: {},\n maxUniformLength: 0,\n maxAttributeLength: -1,\n maxUniformBlockNameLength: -1,\n });\n var utable = ptable.uniforms;\n var numUniforms = GLctx.getProgramParameter(p, 35718);\n for (var i = 0; i < numUniforms; ++i) {\n var u = GLctx.getActiveUniform(p, i);\n var name = u.name;\n ptable.maxUniformLength = Math.max(\n ptable.maxUniformLength,\n name.length + 1,\n );\n if (name.slice(-1) == \"]\") {\n name = name.slice(0, name.lastIndexOf(\"[\"));\n }\n var loc = GLctx.getUniformLocation(p, name);\n if (loc) {\n var id = GL.getNewId(GL.uniforms);\n utable[name] = [u.size, id];\n GL.uniforms[id] = loc;\n for (var j = 1; j < u.size; ++j) {\n var n = name + \"[\" + j + \"]\";\n loc = GLctx.getUniformLocation(p, n);\n id = GL.getNewId(GL.uniforms);\n GL.uniforms[id] = loc;\n }\n }\n }\n },\n};\nfunction _glEnable(x0) {\n GLctx[\"enable\"](x0);\n}\nfunction _glDisable(x0) {\n GLctx[\"disable\"](x0);\n}\nfunction _glIsEnabled(x0) {\n return GLctx[\"isEnabled\"](x0);\n}\nfunction emscriptenWebGLGet(name_, p, type) {\n if (!p) {\n GL.recordError(1281);\n return;\n }\n var ret = undefined;\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 36345:\n ret = 0;\n break;\n case 34466:\n var formats = GLctx.getParameter(34467);\n ret = formats ? formats.length : 0;\n break;\n }\n if (ret === undefined) {\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 34068: {\n ret = 0;\n break;\n }\n default: {\n GL.recordError(1280);\n return;\n }\n }\n } else if (\n result instanceof Float32Array ||\n result instanceof Uint32Array ||\n result instanceof Int32Array ||\n result instanceof Array\n ) {\n for (var i = 0; i < result.length; ++i) {\n switch (type) {\n case 0:\n HEAP32[(p + i * 4) >> 2] = result[i];\n break;\n case 2:\n HEAPF32[(p + i * 4) >> 2] = result[i];\n break;\n case 4:\n HEAP8[(p + i) >> 0] = result[i] ? 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(\n \"GL_INVALID_ENUM in glGet\" +\n type +\n \"v: Unknown object returned from WebGL getParameter(\" +\n name_ +\n \")! (error: \" +\n e +\n \")\",\n );\n return;\n }\n }\n break;\n default:\n GL.recordError(1280);\n err(\n \"GL_INVALID_ENUM in glGet\" +\n type +\n \"v: Native code calling glGet\" +\n type +\n \"v(\" +\n name_ +\n \") and it returns \" +\n result +\n \" of type \" +\n typeof result +\n \"!\",\n );\n return;\n }\n }\n switch (type) {\n case 1:\n ((tempI64 = [\n ret >>> 0,\n ((tempDouble = ret),\n +Math_abs(tempDouble) >= 1\n ? tempDouble > 0\n ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) |\n 0) >>>\n 0\n : ~~+Math_ceil(\n (tempDouble - +(~~tempDouble >>> 0)) / 4294967296,\n ) >>> 0\n : 0),\n ]),\n (HEAP32[p >> 2] = tempI64[0]),\n (HEAP32[(p + 4) >> 2] = tempI64[1]));\n break;\n case 0:\n HEAP32[p >> 2] = ret;\n break;\n case 2:\n HEAPF32[p >> 2] = ret;\n break;\n case 4:\n HEAP8[p >> 0] = ret ? 1 : 0;\n break;\n }\n}\nfunction _glGetBooleanv(name_, p) {\n emscriptenWebGLGet(name_, p, 4);\n}\nfunction _glGetIntegerv(name_, p) {\n emscriptenWebGLGet(name_, p, 0);\n}\nfunction stringToNewUTF8(jsString) {\n var length = lengthBytesUTF8(jsString) + 1;\n var cString = _malloc(length);\n stringToUTF8(jsString, cString, length);\n return cString;\n}\nfunction _glGetString(name_) {\n if (GL.stringCache[name_]) return GL.stringCache[name_];\n var ret;\n switch (name_) {\n case 7939:\n var exts = GLctx.getSupportedExtensions();\n var gl_exts = [];\n for (var i = 0; i < exts.length; ++i) {\n gl_exts.push(exts[i]);\n gl_exts.push(\"GL_\" + exts[i]);\n }\n ret = stringToNewUTF8(gl_exts.join(\" \"));\n break;\n case 7936:\n case 7937:\n case 37445:\n case 37446:\n var s = GLctx.getParameter(name_);\n if (!s) {\n GL.recordError(1280);\n }\n ret = stringToNewUTF8(s);\n break;\n case 7938:\n var glVersion = GLctx.getParameter(GLctx.VERSION);\n {\n glVersion = \"OpenGL ES 2.0 (\" + glVersion + \")\";\n }\n ret = stringToNewUTF8(glVersion);\n break;\n case 35724:\n var glslVersion = GLctx.getParameter(GLctx.SHADING_LANGUAGE_VERSION);\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 =\n \"OpenGL ES GLSL ES \" + ver_num[1] + \" (\" + glslVersion + \")\";\n }\n ret = stringToNewUTF8(glslVersion);\n break;\n default:\n GL.recordError(1280);\n return 0;\n }\n GL.stringCache[name_] = ret;\n return ret;\n}\nfunction _glCreateShader(shaderType) {\n var id = GL.getNewId(GL.shaders);\n GL.shaders[id] = GLctx.createShader(shaderType);\n return id;\n}\nfunction _glShaderSource(shader, count, string, length) {\n var source = GL.getSource(shader, count, string, length);\n GLctx.shaderSource(GL.shaders[shader], source);\n}\nfunction _glCompileShader(shader) {\n GLctx.compileShader(GL.shaders[shader]);\n}\nfunction _glAttachShader(program, shader) {\n GLctx.attachShader(GL.programs[program], GL.shaders[shader]);\n}\nfunction _glDetachShader(program, shader) {\n GLctx.detachShader(GL.programs[program], GL.shaders[shader]);\n}\nfunction _glUseProgram(program) {\n GLctx.useProgram(GL.programs[program]);\n}\nfunction _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 GL.programInfos[id] = null;\n}\nfunction _glBindAttribLocation(program, index, name) {\n GLctx.bindAttribLocation(GL.programs[program], index, UTF8ToString(name));\n}\nfunction _glLinkProgram(program) {\n GLctx.linkProgram(GL.programs[program]);\n GL.populateUniformTable(program);\n}\nfunction _glBindBuffer(target, buffer) {\n if (target == GLctx.ARRAY_BUFFER) {\n GL.currArrayBuffer = buffer;\n GLImmediate.lastArrayBuffer = buffer;\n } else if (target == GLctx.ELEMENT_ARRAY_BUFFER) {\n GL.currElementArrayBuffer = buffer;\n }\n GLctx.bindBuffer(target, GL.buffers[buffer]);\n}\nfunction _glGetFloatv(name_, p) {\n emscriptenWebGLGet(name_, p, 2);\n}\nfunction _glHint(x0, x1) {\n GLctx[\"hint\"](x0, x1);\n}\nfunction _glEnableVertexAttribArray(index) {\n GLctx.enableVertexAttribArray(index);\n}\nfunction _glDisableVertexAttribArray(index) {\n GLctx.disableVertexAttribArray(index);\n}\nfunction _glVertexAttribPointer(index, size, type, normalized, stride, ptr) {\n GLctx.vertexAttribPointer(index, size, type, !!normalized, stride, ptr);\n}\nfunction _glActiveTexture(x0) {\n GLctx[\"activeTexture\"](x0);\n}\nvar GLEmulation = {\n fogStart: 0,\n fogEnd: 1,\n fogDensity: 1,\n fogColor: null,\n fogMode: 2048,\n fogEnabled: false,\n vaos: [],\n currentVao: null,\n enabledVertexAttribArrays: {},\n hasRunInit: false,\n findToken: function (source, token) {\n function isIdentChar(ch) {\n if (ch >= 48 && ch <= 57) return true;\n if (ch >= 65 && ch <= 90) return true;\n if (ch >= 97 && ch <= 122) return true;\n return false;\n }\n var i = -1;\n do {\n i = source.indexOf(token, i + 1);\n if (i < 0) {\n break;\n }\n if (i > 0 && isIdentChar(source[i - 1])) {\n continue;\n }\n i += token.length;\n if (i < source.length - 1 && isIdentChar(source[i + 1])) {\n continue;\n }\n return true;\n } while (true);\n return false;\n },\n init: function () {\n if (GLEmulation.hasRunInit) {\n return;\n }\n GLEmulation.hasRunInit = true;\n GLEmulation.fogColor = new Float32Array(4);\n err(\n \"WARNING: using emscripten GL emulation. This is a collection of limited workarounds, do not expect it to work.\",\n );\n var validCapabilities = {\n 2884: 1,\n 3042: 1,\n 3024: 1,\n 2960: 1,\n 2929: 1,\n 3089: 1,\n 32823: 1,\n 32926: 1,\n 32928: 1,\n };\n var glEnable = _glEnable;\n _glEnable = _emscripten_glEnable = function _glEnable(cap) {\n if (GLImmediate.lastRenderer) GLImmediate.lastRenderer.cleanup();\n if (cap == 2912) {\n if (GLEmulation.fogEnabled != true) {\n GLImmediate.currentRenderer = null;\n GLEmulation.fogEnabled = true;\n }\n return;\n } else if (cap == 3553) {\n return;\n } else if (!(cap in validCapabilities)) {\n return;\n }\n glEnable(cap);\n };\n var glDisable = _glDisable;\n _glDisable = _emscripten_glDisable = function _glDisable(cap) {\n if (GLImmediate.lastRenderer) GLImmediate.lastRenderer.cleanup();\n if (cap == 2912) {\n if (GLEmulation.fogEnabled != false) {\n GLImmediate.currentRenderer = null;\n GLEmulation.fogEnabled = false;\n }\n return;\n } else if (cap == 3553) {\n return;\n } else if (!(cap in validCapabilities)) {\n return;\n }\n glDisable(cap);\n };\n _glIsEnabled = _emscripten_glIsEnabled = function _glIsEnabled(cap) {\n if (cap == 2912) {\n return GLEmulation.fogEnabled ? 1 : 0;\n } else if (!(cap in validCapabilities)) {\n return 0;\n }\n return GLctx.isEnabled(cap);\n };\n var glGetBooleanv = _glGetBooleanv;\n _glGetBooleanv = _emscripten_glGetBooleanv = function _glGetBooleanv(\n pname,\n p,\n ) {\n var attrib = GLEmulation.getAttributeFromCapability(pname);\n if (attrib !== null) {\n var result = GLImmediate.enabledClientAttributes[attrib];\n HEAP8[p >> 0] = result === true ? 1 : 0;\n return;\n }\n glGetBooleanv(pname, p);\n };\n var glGetIntegerv = _glGetIntegerv;\n _glGetIntegerv = _emscripten_glGetIntegerv = function _glGetIntegerv(\n pname,\n params,\n ) {\n switch (pname) {\n case 34018:\n pname = GLctx.MAX_TEXTURE_IMAGE_UNITS;\n break;\n case 35658: {\n var result = GLctx.getParameter(GLctx.MAX_VERTEX_UNIFORM_VECTORS);\n HEAP32[params >> 2] = result * 4;\n return;\n }\n case 35657: {\n var result = GLctx.getParameter(GLctx.MAX_FRAGMENT_UNIFORM_VECTORS);\n HEAP32[params >> 2] = result * 4;\n return;\n }\n case 35659: {\n var result = GLctx.getParameter(GLctx.MAX_VARYING_VECTORS);\n HEAP32[params >> 2] = result * 4;\n return;\n }\n case 34929:\n pname = GLctx.MAX_COMBINED_TEXTURE_IMAGE_UNITS;\n break;\n case 32890: {\n var attribute = GLImmediate.clientAttributes[GLImmediate.VERTEX];\n HEAP32[params >> 2] = attribute ? attribute.size : 0;\n return;\n }\n case 32891: {\n var attribute = GLImmediate.clientAttributes[GLImmediate.VERTEX];\n HEAP32[params >> 2] = attribute ? attribute.type : 0;\n return;\n }\n case 32892: {\n var attribute = GLImmediate.clientAttributes[GLImmediate.VERTEX];\n HEAP32[params >> 2] = attribute ? attribute.stride : 0;\n return;\n }\n case 32897: {\n var attribute = GLImmediate.clientAttributes[GLImmediate.COLOR];\n HEAP32[params >> 2] = attribute ? attribute.size : 0;\n return;\n }\n case 32898: {\n var attribute = GLImmediate.clientAttributes[GLImmediate.COLOR];\n HEAP32[params >> 2] = attribute ? attribute.type : 0;\n return;\n }\n case 32899: {\n var attribute = GLImmediate.clientAttributes[GLImmediate.COLOR];\n HEAP32[params >> 2] = attribute ? attribute.stride : 0;\n return;\n }\n case 32904: {\n var attribute =\n GLImmediate.clientAttributes[\n GLImmediate.TEXTURE0 + GLImmediate.clientActiveTexture\n ];\n HEAP32[params >> 2] = attribute ? attribute.size : 0;\n return;\n }\n case 32905: {\n var attribute =\n GLImmediate.clientAttributes[\n GLImmediate.TEXTURE0 + GLImmediate.clientActiveTexture\n ];\n HEAP32[params >> 2] = attribute ? attribute.type : 0;\n return;\n }\n case 32906: {\n var attribute =\n GLImmediate.clientAttributes[\n GLImmediate.TEXTURE0 + GLImmediate.clientActiveTexture\n ];\n HEAP32[params >> 2] = attribute ? attribute.stride : 0;\n return;\n }\n }\n glGetIntegerv(pname, params);\n };\n var glGetString = _glGetString;\n _glGetString = _emscripten_glGetString = function _glGetString(name_) {\n if (GL.stringCache[name_]) return GL.stringCache[name_];\n switch (name_) {\n case 7939:\n var ret = stringToNewUTF8(\n GLctx.getSupportedExtensions().join(\" \") +\n \" GL_EXT_texture_env_combine GL_ARB_texture_env_crossbar GL_ATI_texture_env_combine3 GL_NV_texture_env_combine4 GL_EXT_texture_env_dot3 GL_ARB_multitexture GL_ARB_vertex_buffer_object GL_EXT_framebuffer_object GL_ARB_vertex_program GL_ARB_fragment_program GL_ARB_shading_language_100 GL_ARB_shader_objects GL_ARB_vertex_shader GL_ARB_fragment_shader GL_ARB_texture_cube_map GL_EXT_draw_range_elements\" +\n (GL.currentContext.compressionExt\n ? \" GL_ARB_texture_compression GL_EXT_texture_compression_s3tc\"\n : \"\") +\n (GL.currentContext.anisotropicExt\n ? \" GL_EXT_texture_filter_anisotropic\"\n : \"\"),\n );\n GL.stringCache[name_] = ret;\n return ret;\n }\n return glGetString(name_);\n };\n GL.shaderInfos = {};\n var glCreateShader = _glCreateShader;\n _glCreateShader = _emscripten_glCreateShader = function _glCreateShader(\n shaderType,\n ) {\n var id = glCreateShader(shaderType);\n GL.shaderInfos[id] = { type: shaderType, ftransform: false };\n return id;\n };\n function ensurePrecision(source) {\n if (!/precision +(low|medium|high)p +float *;/.test(source)) {\n source =\n \"#ifdef GL_FRAGMENT_PRECISION_HIGH\\nprecision highp float;\\n#else\\nprecision mediump float;\\n#endif\\n\" +\n source;\n }\n return source;\n }\n _glShaderSource = _emscripten_glShaderSource = function _glShaderSource(\n shader,\n count,\n string,\n length,\n ) {\n var source = GL.getSource(shader, count, string, length);\n if (GL.shaderInfos[shader].type == GLctx.VERTEX_SHADER) {\n var has_pm = source.search(/u_projection/) >= 0;\n var has_mm = source.search(/u_modelView/) >= 0;\n var has_pv = source.search(/a_position/) >= 0;\n var need_pm = 0,\n need_mm = 0,\n need_pv = 0;\n var old = source;\n source = source.replace(\n /ftransform\\(\\)/g,\n \"(u_projection * u_modelView * a_position)\",\n );\n if (old != source) need_pm = need_mm = need_pv = 1;\n old = source;\n source = source.replace(/gl_ProjectionMatrix/g, \"u_projection\");\n if (old != source) need_pm = 1;\n old = source;\n source = source.replace(\n /gl_ModelViewMatrixTranspose\\[2\\]/g,\n \"vec4(u_modelView[0][2], u_modelView[1][2], u_modelView[2][2], u_modelView[3][2])\",\n );\n if (old != source) need_mm = 1;\n old = source;\n source = source.replace(/gl_ModelViewMatrix/g, \"u_modelView\");\n if (old != source) need_mm = 1;\n old = source;\n source = source.replace(/gl_Vertex/g, \"a_position\");\n if (old != source) need_pv = 1;\n old = source;\n source = source.replace(\n /gl_ModelViewProjectionMatrix/g,\n \"(u_projection * u_modelView)\",\n );\n if (old != source) need_pm = need_mm = 1;\n if (need_pv && !has_pv)\n source = \"attribute vec4 a_position; \\n\" + source;\n if (need_mm && !has_mm)\n source = \"uniform mat4 u_modelView; \\n\" + source;\n if (need_pm && !has_pm)\n source = \"uniform mat4 u_projection; \\n\" + source;\n GL.shaderInfos[shader].ftransform = need_pm || need_mm || need_pv;\n for (var i = 0; i < GLImmediate.MAX_TEXTURES; i++) {\n old = source;\n var need_vtc = source.search(\"v_texCoord\" + i) == -1;\n source = source\n .replace(\n new RegExp(\"gl_TexCoord\\\\[\" + i + \"\\\\]\", \"g\"),\n \"v_texCoord\" + i,\n )\n .replace(new RegExp(\"gl_MultiTexCoord\" + i, \"g\"), \"a_texCoord\" + i);\n if (source != old) {\n source = \"attribute vec4 a_texCoord\" + i + \"; \\n\" + source;\n if (need_vtc) {\n source = \"varying vec4 v_texCoord\" + i + \"; \\n\" + source;\n }\n }\n old = source;\n source = source.replace(\n new RegExp(\"gl_TextureMatrix\\\\[\" + i + \"\\\\]\", \"g\"),\n \"u_textureMatrix\" + i,\n );\n if (source != old) {\n source = \"uniform mat4 u_textureMatrix\" + i + \"; \\n\" + source;\n }\n }\n if (source.indexOf(\"gl_FrontColor\") >= 0) {\n source =\n \"varying vec4 v_color; \\n\" +\n source.replace(/gl_FrontColor/g, \"v_color\");\n }\n if (source.indexOf(\"gl_Color\") >= 0) {\n source =\n \"attribute vec4 a_color; \\n\" +\n source.replace(/gl_Color/g, \"a_color\");\n }\n if (source.indexOf(\"gl_Normal\") >= 0) {\n source =\n \"attribute vec3 a_normal; \\n\" +\n source.replace(/gl_Normal/g, \"a_normal\");\n }\n if (source.indexOf(\"gl_FogFragCoord\") >= 0) {\n source =\n \"varying float v_fogFragCoord; \\n\" +\n source.replace(/gl_FogFragCoord/g, \"v_fogFragCoord\");\n }\n } else {\n for (i = 0; i < GLImmediate.MAX_TEXTURES; i++) {\n old = source;\n source = source.replace(\n new RegExp(\"gl_TexCoord\\\\[\" + i + \"\\\\]\", \"g\"),\n \"v_texCoord\" + i,\n );\n if (source != old) {\n source = \"varying vec4 v_texCoord\" + i + \"; \\n\" + source;\n }\n }\n if (source.indexOf(\"gl_Color\") >= 0) {\n source =\n \"varying vec4 v_color; \\n\" + source.replace(/gl_Color/g, \"v_color\");\n }\n if (source.indexOf(\"gl_Fog.color\") >= 0) {\n source =\n \"uniform vec4 u_fogColor; \\n\" +\n source.replace(/gl_Fog.color/g, \"u_fogColor\");\n }\n if (source.indexOf(\"gl_Fog.end\") >= 0) {\n source =\n \"uniform float u_fogEnd; \\n\" +\n source.replace(/gl_Fog.end/g, \"u_fogEnd\");\n }\n if (source.indexOf(\"gl_Fog.scale\") >= 0) {\n source =\n \"uniform float u_fogScale; \\n\" +\n source.replace(/gl_Fog.scale/g, \"u_fogScale\");\n }\n if (source.indexOf(\"gl_Fog.density\") >= 0) {\n source =\n \"uniform float u_fogDensity; \\n\" +\n source.replace(/gl_Fog.density/g, \"u_fogDensity\");\n }\n if (source.indexOf(\"gl_FogFragCoord\") >= 0) {\n source =\n \"varying float v_fogFragCoord; \\n\" +\n source.replace(/gl_FogFragCoord/g, \"v_fogFragCoord\");\n }\n source = ensurePrecision(source);\n }\n GLctx.shaderSource(GL.shaders[shader], source);\n };\n _glCompileShader = _emscripten_glCompileShader = function _glCompileShader(\n shader,\n ) {\n GLctx.compileShader(GL.shaders[shader]);\n };\n GL.programShaders = {};\n var glAttachShader = _glAttachShader;\n _glAttachShader = _emscripten_glAttachShader = function _glAttachShader(\n program,\n shader,\n ) {\n if (!GL.programShaders[program]) GL.programShaders[program] = [];\n GL.programShaders[program].push(shader);\n glAttachShader(program, shader);\n };\n var glDetachShader = _glDetachShader;\n _glDetachShader = _emscripten_glDetachShader = function _glDetachShader(\n program,\n shader,\n ) {\n var programShader = GL.programShaders[program];\n if (!programShader) {\n err(\"WARNING: _glDetachShader received invalid program: \" + program);\n return;\n }\n var index = programShader.indexOf(shader);\n programShader.splice(index, 1);\n glDetachShader(program, shader);\n };\n var glUseProgram = _glUseProgram;\n _glUseProgram = _emscripten_glUseProgram = function _glUseProgram(program) {\n if (GL.currProgram != program) {\n GLImmediate.currentRenderer = null;\n GL.currProgram = program;\n GLImmediate.fixedFunctionProgram = 0;\n glUseProgram(program);\n }\n };\n var glDeleteProgram = _glDeleteProgram;\n _glDeleteProgram = _emscripten_glDeleteProgram = function _glDeleteProgram(\n program,\n ) {\n glDeleteProgram(program);\n if (program == GL.currProgram) {\n GLImmediate.currentRenderer = null;\n GL.currProgram = 0;\n }\n };\n var zeroUsedPrograms = {};\n var glBindAttribLocation = _glBindAttribLocation;\n _glBindAttribLocation = _emscripten_glBindAttribLocation =\n function _glBindAttribLocation(program, index, name) {\n if (index == 0) zeroUsedPrograms[program] = true;\n glBindAttribLocation(program, index, name);\n };\n var glLinkProgram = _glLinkProgram;\n _glLinkProgram = _emscripten_glLinkProgram = function _glLinkProgram(\n program,\n ) {\n if (!(program in zeroUsedPrograms)) {\n GLctx.bindAttribLocation(GL.programs[program], 0, \"a_position\");\n }\n glLinkProgram(program);\n };\n var glBindBuffer = _glBindBuffer;\n _glBindBuffer = _emscripten_glBindBuffer = function _glBindBuffer(\n target,\n buffer,\n ) {\n glBindBuffer(target, buffer);\n if (target == GLctx.ARRAY_BUFFER) {\n if (GLEmulation.currentVao) {\n assert(\n GLEmulation.currentVao.arrayBuffer == buffer ||\n GLEmulation.currentVao.arrayBuffer == 0 ||\n buffer == 0,\n \"TODO: support for multiple array buffers in vao\",\n );\n GLEmulation.currentVao.arrayBuffer = buffer;\n }\n } else if (target == GLctx.ELEMENT_ARRAY_BUFFER) {\n if (GLEmulation.currentVao)\n GLEmulation.currentVao.elementArrayBuffer = buffer;\n }\n };\n var glGetFloatv = _glGetFloatv;\n _glGetFloatv = _emscripten_glGetFloatv = function _glGetFloatv(\n pname,\n params,\n ) {\n if (pname == 2982) {\n HEAPF32.set(GLImmediate.matrix[0], params >> 2);\n } else if (pname == 2983) {\n HEAPF32.set(GLImmediate.matrix[1], params >> 2);\n } else if (pname == 2984) {\n HEAPF32.set(\n GLImmediate.matrix[2 + GLImmediate.clientActiveTexture],\n params >> 2,\n );\n } else if (pname == 2918) {\n HEAPF32.set(GLEmulation.fogColor, params >> 2);\n } else if (pname == 2915) {\n HEAPF32[params >> 2] = GLEmulation.fogStart;\n } else if (pname == 2916) {\n HEAPF32[params >> 2] = GLEmulation.fogEnd;\n } else if (pname == 2914) {\n HEAPF32[params >> 2] = GLEmulation.fogDensity;\n } else if (pname == 2917) {\n HEAPF32[params >> 2] = GLEmulation.fogMode;\n } else {\n glGetFloatv(pname, params);\n }\n };\n var glHint = _glHint;\n _glHint = _emscripten_glHint = function _glHint(target, mode) {\n if (target == 34031) {\n return;\n }\n glHint(target, mode);\n };\n var glEnableVertexAttribArray = _glEnableVertexAttribArray;\n _glEnableVertexAttribArray = _emscripten_glEnableVertexAttribArray =\n function _glEnableVertexAttribArray(index) {\n glEnableVertexAttribArray(index);\n GLEmulation.enabledVertexAttribArrays[index] = 1;\n if (GLEmulation.currentVao)\n GLEmulation.currentVao.enabledVertexAttribArrays[index] = 1;\n };\n var glDisableVertexAttribArray = _glDisableVertexAttribArray;\n _glDisableVertexAttribArray = _emscripten_glDisableVertexAttribArray =\n function _glDisableVertexAttribArray(index) {\n glDisableVertexAttribArray(index);\n delete GLEmulation.enabledVertexAttribArrays[index];\n if (GLEmulation.currentVao)\n delete GLEmulation.currentVao.enabledVertexAttribArrays[index];\n };\n var glVertexAttribPointer = _glVertexAttribPointer;\n _glVertexAttribPointer = _emscripten_glVertexAttribPointer =\n function _glVertexAttribPointer(\n index,\n size,\n type,\n normalized,\n stride,\n pointer,\n ) {\n glVertexAttribPointer(index, size, type, normalized, stride, pointer);\n if (GLEmulation.currentVao) {\n GLEmulation.currentVao.vertexAttribPointers[index] = [\n index,\n size,\n type,\n normalized,\n stride,\n pointer,\n ];\n }\n };\n },\n getAttributeFromCapability: function (cap) {\n var attrib = null;\n switch (cap) {\n case 3553:\n abort(\n \"GL_TEXTURE_2D is not a spec-defined capability for gl{Enable,Disable}ClientState.\",\n );\n case 32888:\n attrib = GLImmediate.TEXTURE0 + GLImmediate.clientActiveTexture;\n break;\n case 32884:\n attrib = GLImmediate.VERTEX;\n break;\n case 32885:\n attrib = GLImmediate.NORMAL;\n break;\n case 32886:\n attrib = GLImmediate.COLOR;\n break;\n }\n return attrib;\n },\n};\nvar GLImmediate = {\n MapTreeLib: null,\n spawnMapTreeLib: function () {\n function CNaiveListMap() {\n var list = [];\n this.insert = function CNaiveListMap_insert(key, val) {\n if (this.contains(key | 0)) return false;\n list.push([key, val]);\n return true;\n };\n var __contains_i;\n this.contains = function CNaiveListMap_contains(key) {\n for (__contains_i = 0; __contains_i < list.length; ++__contains_i) {\n if (list[__contains_i][0] === key) return true;\n }\n return false;\n };\n var __get_i;\n this.get = function CNaiveListMap_get(key) {\n for (__get_i = 0; __get_i < list.length; ++__get_i) {\n if (list[__get_i][0] === key) return list[__get_i][1];\n }\n return undefined;\n };\n }\n function CMapTree() {\n function CNLNode() {\n var map = new CNaiveListMap();\n this.child = function CNLNode_child(keyFrag) {\n if (!map.contains(keyFrag | 0)) {\n map.insert(keyFrag | 0, new CNLNode());\n }\n return map.get(keyFrag | 0);\n };\n this.value = undefined;\n this.get = function CNLNode_get() {\n return this.value;\n };\n this.set = function CNLNode_set(val) {\n this.value = val;\n };\n }\n function CKeyView(root) {\n var cur;\n this.reset = function CKeyView_reset() {\n cur = root;\n return this;\n };\n this.reset();\n this.next = function CKeyView_next(keyFrag) {\n cur = cur.child(keyFrag);\n return this;\n };\n this.get = function CKeyView_get() {\n return cur.get();\n };\n this.set = function CKeyView_set(val) {\n cur.set(val);\n };\n }\n var root;\n var staticKeyView;\n this.createKeyView = function CNLNode_createKeyView() {\n return new CKeyView(root);\n };\n this.clear = function CNLNode_clear() {\n root = new CNLNode();\n staticKeyView = this.createKeyView();\n };\n this.clear();\n this.getStaticKeyView = function CNLNode_getStaticKeyView() {\n staticKeyView.reset();\n return staticKeyView;\n };\n }\n return {\n create: function () {\n return new CMapTree();\n },\n };\n },\n TexEnvJIT: null,\n spawnTexEnvJIT: function () {\n var GL_TEXTURE0 = 33984;\n var GL_TEXTURE_1D = 3552;\n var GL_TEXTURE_2D = 3553;\n var GL_TEXTURE_3D = 32879;\n var GL_TEXTURE_CUBE_MAP = 34067;\n var GL_TEXTURE_ENV = 8960;\n var GL_TEXTURE_ENV_MODE = 8704;\n var GL_TEXTURE_ENV_COLOR = 8705;\n var GL_SRC0_RGB = 34176;\n var GL_SRC1_RGB = 34177;\n var GL_SRC2_RGB = 34178;\n var GL_SRC0_ALPHA = 34184;\n var GL_SRC1_ALPHA = 34185;\n var GL_SRC2_ALPHA = 34186;\n var GL_OPERAND0_RGB = 34192;\n var GL_OPERAND1_RGB = 34193;\n var GL_OPERAND2_RGB = 34194;\n var GL_OPERAND0_ALPHA = 34200;\n var GL_OPERAND1_ALPHA = 34201;\n var GL_OPERAND2_ALPHA = 34202;\n var GL_COMBINE_RGB = 34161;\n var GL_COMBINE_ALPHA = 34162;\n var GL_RGB_SCALE = 34163;\n var GL_ALPHA_SCALE = 3356;\n var GL_ADD = 260;\n var GL_BLEND = 3042;\n var GL_REPLACE = 7681;\n var GL_MODULATE = 8448;\n var GL_DECAL = 8449;\n var GL_COMBINE = 34160;\n var GL_SUBTRACT = 34023;\n var GL_INTERPOLATE = 34165;\n var GL_TEXTURE = 5890;\n var GL_CONSTANT = 34166;\n var GL_PRIMARY_COLOR = 34167;\n var GL_PREVIOUS = 34168;\n var GL_SRC_COLOR = 768;\n var GL_ONE_MINUS_SRC_COLOR = 769;\n var GL_SRC_ALPHA = 770;\n var GL_ONE_MINUS_SRC_ALPHA = 771;\n var TEXENVJIT_NAMESPACE_PREFIX = \"tej_\";\n var TEX_UNIT_UNIFORM_PREFIX = \"uTexUnit\";\n var TEX_COORD_VARYING_PREFIX = \"vTexCoord\";\n var PRIM_COLOR_VARYING = \"vPrimColor\";\n var TEX_MATRIX_UNIFORM_PREFIX = \"uTexMatrix\";\n var s_texUnits = null;\n var s_activeTexture = 0;\n var s_requiredTexUnitsForPass = [];\n function abort(info) {\n assert(false, \"[TexEnvJIT] ABORT: \" + info);\n }\n function abort_noSupport(info) {\n abort(\"No support: \" + info);\n }\n function abort_sanity(info) {\n abort(\"Sanity failure: \" + info);\n }\n function genTexUnitSampleExpr(texUnitID) {\n var texUnit = s_texUnits[texUnitID];\n var texType = texUnit.getTexType();\n var func = null;\n switch (texType) {\n case GL_TEXTURE_1D:\n func = \"texture2D\";\n break;\n case GL_TEXTURE_2D:\n func = \"texture2D\";\n break;\n case GL_TEXTURE_3D:\n return abort_noSupport(\"No support for 3D textures.\");\n case GL_TEXTURE_CUBE_MAP:\n func = \"textureCube\";\n break;\n default:\n return abort_sanity(\"Unknown texType: 0x\" + texType.toString(16));\n }\n var texCoordExpr = TEX_COORD_VARYING_PREFIX + texUnitID;\n if (TEX_MATRIX_UNIFORM_PREFIX != null) {\n texCoordExpr =\n \"(\" +\n TEX_MATRIX_UNIFORM_PREFIX +\n texUnitID +\n \" * \" +\n texCoordExpr +\n \")\";\n }\n return (\n func +\n \"(\" +\n TEX_UNIT_UNIFORM_PREFIX +\n texUnitID +\n \", \" +\n texCoordExpr +\n \".xy)\"\n );\n }\n function getTypeFromCombineOp(op) {\n switch (op) {\n case GL_SRC_COLOR:\n case GL_ONE_MINUS_SRC_COLOR:\n return \"vec3\";\n case GL_SRC_ALPHA:\n case GL_ONE_MINUS_SRC_ALPHA:\n return \"float\";\n }\n return abort_noSupport(\"Unsupported combiner op: 0x\" + op.toString(16));\n }\n function getCurTexUnit() {\n return s_texUnits[s_activeTexture];\n }\n function genCombinerSourceExpr(\n texUnitID,\n constantExpr,\n previousVar,\n src,\n op,\n ) {\n var srcExpr = null;\n switch (src) {\n case GL_TEXTURE:\n srcExpr = genTexUnitSampleExpr(texUnitID);\n break;\n case GL_CONSTANT:\n srcExpr = constantExpr;\n break;\n case GL_PRIMARY_COLOR:\n srcExpr = PRIM_COLOR_VARYING;\n break;\n case GL_PREVIOUS:\n srcExpr = previousVar;\n break;\n default:\n return abort_noSupport(\n \"Unsupported combiner src: 0x\" + src.toString(16),\n );\n }\n var expr = null;\n switch (op) {\n case GL_SRC_COLOR:\n expr = srcExpr + \".rgb\";\n break;\n case GL_ONE_MINUS_SRC_COLOR:\n expr = \"(vec3(1.0) - \" + srcExpr + \".rgb)\";\n break;\n case GL_SRC_ALPHA:\n expr = srcExpr + \".a\";\n break;\n case GL_ONE_MINUS_SRC_ALPHA:\n expr = \"(1.0 - \" + srcExpr + \".a)\";\n break;\n default:\n return abort_noSupport(\n \"Unsupported combiner op: 0x\" + op.toString(16),\n );\n }\n return expr;\n }\n function valToFloatLiteral(val) {\n if (val == Math.round(val)) return val + \".0\";\n return val;\n }\n function CTexEnv() {\n this.mode = GL_MODULATE;\n this.colorCombiner = GL_MODULATE;\n this.alphaCombiner = GL_MODULATE;\n this.colorScale = 1;\n this.alphaScale = 1;\n this.envColor = [0, 0, 0, 0];\n this.colorSrc = [GL_TEXTURE, GL_PREVIOUS, GL_CONSTANT];\n this.alphaSrc = [GL_TEXTURE, GL_PREVIOUS, GL_CONSTANT];\n this.colorOp = [GL_SRC_COLOR, GL_SRC_COLOR, GL_SRC_ALPHA];\n this.alphaOp = [GL_SRC_ALPHA, GL_SRC_ALPHA, GL_SRC_ALPHA];\n this.traverseKey = {\n 7681: 0,\n 8448: 1,\n 260: 2,\n 3042: 3,\n 8449: 4,\n 34160: 5,\n 34023: 3,\n 34165: 4,\n 5890: 0,\n 34166: 1,\n 34167: 2,\n 34168: 3,\n 768: 0,\n 769: 1,\n 770: 2,\n 771: 3,\n };\n this.key0 = -1;\n this.key1 = 0;\n this.key2 = 0;\n this.computeKey0 = function () {\n var k = this.traverseKey;\n var key = k[this.mode] * 1638400;\n key += k[this.colorCombiner] * 327680;\n key += k[this.alphaCombiner] * 65536;\n key += (this.colorScale - 1) * 16384;\n key += (this.alphaScale - 1) * 4096;\n key += k[this.colorSrc[0]] * 1024;\n key += k[this.colorSrc[1]] * 256;\n key += k[this.colorSrc[2]] * 64;\n key += k[this.alphaSrc[0]] * 16;\n key += k[this.alphaSrc[1]] * 4;\n key += k[this.alphaSrc[2]];\n return key;\n };\n this.computeKey1 = function () {\n var k = this.traverseKey;\n key = k[this.colorOp[0]] * 4096;\n key += k[this.colorOp[1]] * 1024;\n key += k[this.colorOp[2]] * 256;\n key += k[this.alphaOp[0]] * 16;\n key += k[this.alphaOp[1]] * 4;\n key += k[this.alphaOp[2]];\n return key;\n };\n this.computeKey2 = function () {\n return (\n this.envColor[0] * 16777216 +\n this.envColor[1] * 65536 +\n this.envColor[2] * 256 +\n 1 +\n this.envColor[3]\n );\n };\n this.recomputeKey = function () {\n this.key0 = this.computeKey0();\n this.key1 = this.computeKey1();\n this.key2 = this.computeKey2();\n };\n this.invalidateKey = function () {\n this.key0 = -1;\n GLImmediate.currentRenderer = null;\n };\n }\n function CTexUnit() {\n this.env = new CTexEnv();\n this.enabled_tex1D = false;\n this.enabled_tex2D = false;\n this.enabled_tex3D = false;\n this.enabled_texCube = false;\n this.texTypesEnabled = 0;\n this.traverseState = function CTexUnit_traverseState(keyView) {\n if (this.texTypesEnabled) {\n if (this.env.key0 == -1) {\n this.env.recomputeKey();\n }\n keyView.next(this.texTypesEnabled | (this.env.key0 << 4));\n keyView.next(this.env.key1);\n keyView.next(this.env.key2);\n } else {\n keyView.next(0);\n }\n };\n }\n CTexUnit.prototype.enabled = function CTexUnit_enabled() {\n return this.texTypesEnabled;\n };\n CTexUnit.prototype.genPassLines = function CTexUnit_genPassLines(\n passOutputVar,\n passInputVar,\n texUnitID,\n ) {\n if (!this.enabled()) {\n return [\"vec4 \" + passOutputVar + \" = \" + passInputVar + \";\"];\n }\n var lines = this.env\n .genPassLines(passOutputVar, passInputVar, texUnitID)\n .join(\"\\n\");\n var texLoadLines = \"\";\n var texLoadRegex = /(texture.*?\\(.*?\\))/g;\n var loadCounter = 0;\n var load;\n while ((load = texLoadRegex.exec(lines))) {\n var texLoadExpr = load[1];\n var secondOccurrence = lines.slice(load.index + 1).indexOf(texLoadExpr);\n if (secondOccurrence != -1) {\n var prefix = TEXENVJIT_NAMESPACE_PREFIX + \"env\" + texUnitID + \"_\";\n var texLoadVar = prefix + \"texload\" + loadCounter++;\n var texLoadLine = \"vec4 \" + texLoadVar + \" = \" + texLoadExpr + \";\\n\";\n texLoadLines += texLoadLine + \"\\n\";\n lines = lines.split(texLoadExpr).join(texLoadVar);\n texLoadRegex = /(texture.*\\(.*\\))/g;\n }\n }\n return [texLoadLines + lines];\n };\n CTexUnit.prototype.getTexType = function CTexUnit_getTexType() {\n if (this.enabled_texCube) {\n return GL_TEXTURE_CUBE_MAP;\n } else if (this.enabled_tex3D) {\n return GL_TEXTURE_3D;\n } else if (this.enabled_tex2D) {\n return GL_TEXTURE_2D;\n } else if (this.enabled_tex1D) {\n return GL_TEXTURE_1D;\n }\n return 0;\n };\n CTexEnv.prototype.genPassLines = function CTexEnv_genPassLines(\n passOutputVar,\n passInputVar,\n texUnitID,\n ) {\n switch (this.mode) {\n case GL_REPLACE: {\n return [\n \"vec4 \" +\n passOutputVar +\n \" = \" +\n genTexUnitSampleExpr(texUnitID) +\n \";\",\n ];\n }\n case GL_ADD: {\n var prefix = TEXENVJIT_NAMESPACE_PREFIX + \"env\" + texUnitID + \"_\";\n var texVar = prefix + \"tex\";\n var colorVar = prefix + \"color\";\n var alphaVar = prefix + \"alpha\";\n return [\n \"vec4 \" + texVar + \" = \" + genTexUnitSampleExpr(texUnitID) + \";\",\n \"vec3 \" +\n colorVar +\n \" = \" +\n passInputVar +\n \".rgb + \" +\n texVar +\n \".rgb;\",\n \"float \" +\n alphaVar +\n \" = \" +\n passInputVar +\n \".a * \" +\n texVar +\n \".a;\",\n \"vec4 \" +\n passOutputVar +\n \" = vec4(\" +\n colorVar +\n \", \" +\n alphaVar +\n \");\",\n ];\n }\n case GL_MODULATE: {\n var line = [\n \"vec4 \" + passOutputVar,\n \" = \",\n passInputVar,\n \" * \",\n genTexUnitSampleExpr(texUnitID),\n \";\",\n ];\n return [line.join(\"\")];\n }\n case GL_DECAL: {\n var prefix = TEXENVJIT_NAMESPACE_PREFIX + \"env\" + texUnitID + \"_\";\n var texVar = prefix + \"tex\";\n var colorVar = prefix + \"color\";\n var alphaVar = prefix + \"alpha\";\n return [\n \"vec4 \" + texVar + \" = \" + genTexUnitSampleExpr(texUnitID) + \";\",\n [\n \"vec3 \" + colorVar + \" = \",\n passInputVar + \".rgb * (1.0 - \" + texVar + \".a)\",\n \" + \",\n texVar + \".rgb * \" + texVar + \".a\",\n \";\",\n ].join(\"\"),\n \"float \" + alphaVar + \" = \" + passInputVar + \".a;\",\n \"vec4 \" +\n passOutputVar +\n \" = vec4(\" +\n colorVar +\n \", \" +\n alphaVar +\n \");\",\n ];\n }\n case GL_BLEND: {\n var prefix = TEXENVJIT_NAMESPACE_PREFIX + \"env\" + texUnitID + \"_\";\n var texVar = prefix + \"tex\";\n var colorVar = prefix + \"color\";\n var alphaVar = prefix + \"alpha\";\n return [\n \"vec4 \" + texVar + \" = \" + genTexUnitSampleExpr(texUnitID) + \";\",\n [\n \"vec3 \" + colorVar + \" = \",\n passInputVar + \".rgb * (1.0 - \" + texVar + \".rgb)\",\n \" + \",\n PRIM_COLOR_VARYING + \".rgb * \" + texVar + \".rgb\",\n \";\",\n ].join(\"\"),\n \"float \" + alphaVar + \" = \" + texVar + \".a;\",\n \"vec4 \" +\n passOutputVar +\n \" = vec4(\" +\n colorVar +\n \", \" +\n alphaVar +\n \");\",\n ];\n }\n case GL_COMBINE: {\n var prefix = TEXENVJIT_NAMESPACE_PREFIX + \"env\" + texUnitID + \"_\";\n var colorVar = prefix + \"color\";\n var alphaVar = prefix + \"alpha\";\n var colorLines = this.genCombinerLines(\n true,\n colorVar,\n passInputVar,\n texUnitID,\n this.colorCombiner,\n this.colorSrc,\n this.colorOp,\n );\n var alphaLines = this.genCombinerLines(\n false,\n alphaVar,\n passInputVar,\n texUnitID,\n this.alphaCombiner,\n this.alphaSrc,\n this.alphaOp,\n );\n var scaledColor =\n this.colorScale == 1\n ? colorVar\n : colorVar + \" * \" + valToFloatLiteral(this.colorScale);\n var scaledAlpha =\n this.alphaScale == 1\n ? alphaVar\n : alphaVar + \" * \" + valToFloatLiteral(this.alphaScale);\n var line = [\n \"vec4 \" + passOutputVar,\n \" = \",\n \"vec4(\",\n scaledColor,\n \", \",\n scaledAlpha,\n \")\",\n \";\",\n ].join(\"\");\n return [].concat(colorLines, alphaLines, [line]);\n }\n }\n return abort_noSupport(\n \"Unsupported TexEnv mode: 0x\" + this.mode.toString(16),\n );\n };\n CTexEnv.prototype.genCombinerLines = function CTexEnv_getCombinerLines(\n isColor,\n outputVar,\n passInputVar,\n texUnitID,\n combiner,\n srcArr,\n opArr,\n ) {\n var argsNeeded = null;\n switch (combiner) {\n case GL_REPLACE:\n argsNeeded = 1;\n break;\n case GL_MODULATE:\n case GL_ADD:\n case GL_SUBTRACT:\n argsNeeded = 2;\n break;\n case GL_INTERPOLATE:\n argsNeeded = 3;\n break;\n default:\n return abort_noSupport(\n \"Unsupported combiner: 0x\" + combiner.toString(16),\n );\n }\n var constantExpr = [\n \"vec4(\",\n valToFloatLiteral(this.envColor[0]),\n \", \",\n valToFloatLiteral(this.envColor[1]),\n \", \",\n valToFloatLiteral(this.envColor[2]),\n \", \",\n valToFloatLiteral(this.envColor[3]),\n \")\",\n ].join(\"\");\n var src0Expr =\n argsNeeded >= 1\n ? genCombinerSourceExpr(\n texUnitID,\n constantExpr,\n passInputVar,\n srcArr[0],\n opArr[0],\n )\n : null;\n var src1Expr =\n argsNeeded >= 2\n ? genCombinerSourceExpr(\n texUnitID,\n constantExpr,\n passInputVar,\n srcArr[1],\n opArr[1],\n )\n : null;\n var src2Expr =\n argsNeeded >= 3\n ? genCombinerSourceExpr(\n texUnitID,\n constantExpr,\n passInputVar,\n srcArr[2],\n opArr[2],\n )\n : null;\n var outputType = isColor ? \"vec3\" : \"float\";\n var lines = null;\n switch (combiner) {\n case GL_REPLACE: {\n var line = [outputType + \" \" + outputVar, \" = \", src0Expr, \";\"];\n lines = [line.join(\"\")];\n break;\n }\n case GL_MODULATE: {\n var line = [\n outputType + \" \" + outputVar + \" = \",\n src0Expr + \" * \" + src1Expr,\n \";\",\n ];\n lines = [line.join(\"\")];\n break;\n }\n case GL_ADD: {\n var line = [\n outputType + \" \" + outputVar + \" = \",\n src0Expr + \" + \" + src1Expr,\n \";\",\n ];\n lines = [line.join(\"\")];\n break;\n }\n case GL_SUBTRACT: {\n var line = [\n outputType + \" \" + outputVar + \" = \",\n src0Expr + \" - \" + src1Expr,\n \";\",\n ];\n lines = [line.join(\"\")];\n break;\n }\n case GL_INTERPOLATE: {\n var prefix = TEXENVJIT_NAMESPACE_PREFIX + \"env\" + texUnitID + \"_\";\n var arg2Var = prefix + \"colorSrc2\";\n var arg2Line =\n getTypeFromCombineOp(this.colorOp[2]) +\n \" \" +\n arg2Var +\n \" = \" +\n src2Expr +\n \";\";\n var line = [\n outputType + \" \" + outputVar,\n \" = \",\n src0Expr + \" * \" + arg2Var,\n \" + \",\n src1Expr + \" * (1.0 - \" + arg2Var + \")\",\n \";\",\n ];\n lines = [arg2Line, line.join(\"\")];\n break;\n }\n default:\n return abort_sanity(\"Unmatched TexEnv.colorCombiner?\");\n }\n return lines;\n };\n return {\n init: function (gl, specifiedMaxTextureImageUnits) {\n var maxTexUnits = 0;\n if (specifiedMaxTextureImageUnits) {\n maxTexUnits = specifiedMaxTextureImageUnits;\n } else if (gl) {\n maxTexUnits = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);\n }\n assert(maxTexUnits > 0);\n s_texUnits = [];\n for (var i = 0; i < maxTexUnits; i++) {\n s_texUnits.push(new CTexUnit());\n }\n },\n setGLSLVars: function (\n uTexUnitPrefix,\n vTexCoordPrefix,\n vPrimColor,\n uTexMatrixPrefix,\n ) {\n TEX_UNIT_UNIFORM_PREFIX = uTexUnitPrefix;\n TEX_COORD_VARYING_PREFIX = vTexCoordPrefix;\n PRIM_COLOR_VARYING = vPrimColor;\n TEX_MATRIX_UNIFORM_PREFIX = uTexMatrixPrefix;\n },\n genAllPassLines: function (resultDest, indentSize) {\n indentSize = indentSize || 0;\n s_requiredTexUnitsForPass.length = 0;\n var lines = [];\n var lastPassVar = PRIM_COLOR_VARYING;\n for (var i = 0; i < s_texUnits.length; i++) {\n if (!s_texUnits[i].enabled()) continue;\n s_requiredTexUnitsForPass.push(i);\n var prefix = TEXENVJIT_NAMESPACE_PREFIX + \"env\" + i + \"_\";\n var passOutputVar = prefix + \"result\";\n var newLines = s_texUnits[i].genPassLines(\n passOutputVar,\n lastPassVar,\n i,\n );\n lines = lines.concat(newLines, [\"\"]);\n lastPassVar = passOutputVar;\n }\n lines.push(resultDest + \" = \" + lastPassVar + \";\");\n var indent = \"\";\n for (var i = 0; i < indentSize; i++) indent += \" \";\n var output = indent + lines.join(\"\\n\" + indent);\n return output;\n },\n getUsedTexUnitList: function () {\n return s_requiredTexUnitsForPass;\n },\n traverseState: function (keyView) {\n for (var i = 0; i < s_texUnits.length; i++) {\n s_texUnits[i].traverseState(keyView);\n }\n },\n getTexUnitType: function (texUnitID) {\n assert(texUnitID >= 0 && texUnitID < s_texUnits.length);\n return s_texUnits[texUnitID].getTexType();\n },\n hook_activeTexture: function (texture) {\n s_activeTexture = texture - GL_TEXTURE0;\n },\n hook_enable: function (cap) {\n var cur = getCurTexUnit();\n switch (cap) {\n case GL_TEXTURE_1D:\n if (!cur.enabled_tex1D) {\n GLImmediate.currentRenderer = null;\n cur.enabled_tex1D = true;\n cur.texTypesEnabled |= 1;\n }\n break;\n case GL_TEXTURE_2D:\n if (!cur.enabled_tex2D) {\n GLImmediate.currentRenderer = null;\n cur.enabled_tex2D = true;\n cur.texTypesEnabled |= 2;\n }\n break;\n case GL_TEXTURE_3D:\n if (!cur.enabled_tex3D) {\n GLImmediate.currentRenderer = null;\n cur.enabled_tex3D = true;\n cur.texTypesEnabled |= 4;\n }\n break;\n case GL_TEXTURE_CUBE_MAP:\n if (!cur.enabled_texCube) {\n GLImmediate.currentRenderer = null;\n cur.enabled_texCube = true;\n cur.texTypesEnabled |= 8;\n }\n break;\n }\n },\n hook_disable: function (cap) {\n var cur = getCurTexUnit();\n switch (cap) {\n case GL_TEXTURE_1D:\n if (cur.enabled_tex1D) {\n GLImmediate.currentRenderer = null;\n cur.enabled_tex1D = false;\n cur.texTypesEnabled &= ~1;\n }\n break;\n case GL_TEXTURE_2D:\n if (cur.enabled_tex2D) {\n GLImmediate.currentRenderer = null;\n cur.enabled_tex2D = false;\n cur.texTypesEnabled &= ~2;\n }\n break;\n case GL_TEXTURE_3D:\n if (cur.enabled_tex3D) {\n GLImmediate.currentRenderer = null;\n cur.enabled_tex3D = false;\n cur.texTypesEnabled &= ~4;\n }\n break;\n case GL_TEXTURE_CUBE_MAP:\n if (cur.enabled_texCube) {\n GLImmediate.currentRenderer = null;\n cur.enabled_texCube = false;\n cur.texTypesEnabled &= ~8;\n }\n break;\n }\n },\n hook_texEnvf: function (target, pname, param) {\n if (target != GL_TEXTURE_ENV) return;\n var env = getCurTexUnit().env;\n switch (pname) {\n case GL_RGB_SCALE:\n if (env.colorScale != param) {\n env.invalidateKey();\n env.colorScale = param;\n }\n break;\n case GL_ALPHA_SCALE:\n if (env.alphaScale != param) {\n env.invalidateKey();\n env.alphaScale = param;\n }\n break;\n default:\n err(\"WARNING: Unhandled `pname` in call to `glTexEnvf`.\");\n }\n },\n hook_texEnvi: function (target, pname, param) {\n if (target != GL_TEXTURE_ENV) return;\n var env = getCurTexUnit().env;\n switch (pname) {\n case GL_TEXTURE_ENV_MODE:\n if (env.mode != param) {\n env.invalidateKey();\n env.mode = param;\n }\n break;\n case GL_COMBINE_RGB:\n if (env.colorCombiner != param) {\n env.invalidateKey();\n env.colorCombiner = param;\n }\n break;\n case GL_COMBINE_ALPHA:\n if (env.alphaCombiner != param) {\n env.invalidateKey();\n env.alphaCombiner = param;\n }\n break;\n case GL_SRC0_RGB:\n if (env.colorSrc[0] != param) {\n env.invalidateKey();\n env.colorSrc[0] = param;\n }\n break;\n case GL_SRC1_RGB:\n if (env.colorSrc[1] != param) {\n env.invalidateKey();\n env.colorSrc[1] = param;\n }\n break;\n case GL_SRC2_RGB:\n if (env.colorSrc[2] != param) {\n env.invalidateKey();\n env.colorSrc[2] = param;\n }\n break;\n case GL_SRC0_ALPHA:\n if (env.alphaSrc[0] != param) {\n env.invalidateKey();\n env.alphaSrc[0] = param;\n }\n break;\n case GL_SRC1_ALPHA:\n if (env.alphaSrc[1] != param) {\n env.invalidateKey();\n env.alphaSrc[1] = param;\n }\n break;\n case GL_SRC2_ALPHA:\n if (env.alphaSrc[2] != param) {\n env.invalidateKey();\n env.alphaSrc[2] = param;\n }\n break;\n case GL_OPERAND0_RGB:\n if (env.colorOp[0] != param) {\n env.invalidateKey();\n env.colorOp[0] = param;\n }\n break;\n case GL_OPERAND1_RGB:\n if (env.colorOp[1] != param) {\n env.invalidateKey();\n env.colorOp[1] = param;\n }\n break;\n case GL_OPERAND2_RGB:\n if (env.colorOp[2] != param) {\n env.invalidateKey();\n env.colorOp[2] = param;\n }\n break;\n case GL_OPERAND0_ALPHA:\n if (env.alphaOp[0] != param) {\n env.invalidateKey();\n env.alphaOp[0] = param;\n }\n break;\n case GL_OPERAND1_ALPHA:\n if (env.alphaOp[1] != param) {\n env.invalidateKey();\n env.alphaOp[1] = param;\n }\n break;\n case GL_OPERAND2_ALPHA:\n if (env.alphaOp[2] != param) {\n env.invalidateKey();\n env.alphaOp[2] = param;\n }\n break;\n case GL_RGB_SCALE:\n if (env.colorScale != param) {\n env.invalidateKey();\n env.colorScale = param;\n }\n break;\n case GL_ALPHA_SCALE:\n if (env.alphaScale != param) {\n env.invalidateKey();\n env.alphaScale = param;\n }\n break;\n default:\n err(\"WARNING: Unhandled `pname` in call to `glTexEnvi`.\");\n }\n },\n hook_texEnvfv: function (target, pname, params) {\n if (target != GL_TEXTURE_ENV) return;\n var env = getCurTexUnit().env;\n switch (pname) {\n case GL_TEXTURE_ENV_COLOR: {\n for (var i = 0; i < 4; i++) {\n var param = HEAPF32[(params + i * 4) >> 2];\n if (env.envColor[i] != param) {\n env.invalidateKey();\n env.envColor[i] = param;\n }\n }\n break;\n }\n default:\n err(\"WARNING: Unhandled `pname` in call to `glTexEnvfv`.\");\n }\n },\n hook_getTexEnviv: function (target, pname, param) {\n if (target != GL_TEXTURE_ENV) return;\n var env = getCurTexUnit().env;\n switch (pname) {\n case GL_TEXTURE_ENV_MODE:\n HEAP32[param >> 2] = env.mode;\n return;\n case GL_TEXTURE_ENV_COLOR:\n HEAP32[param >> 2] = Math.max(\n Math.min(env.envColor[0] * 255, 255, -255),\n );\n HEAP32[(param + 1) >> 2] = Math.max(\n Math.min(env.envColor[1] * 255, 255, -255),\n );\n HEAP32[(param + 2) >> 2] = Math.max(\n Math.min(env.envColor[2] * 255, 255, -255),\n );\n HEAP32[(param + 3) >> 2] = Math.max(\n Math.min(env.envColor[3] * 255, 255, -255),\n );\n return;\n case GL_COMBINE_RGB:\n HEAP32[param >> 2] = env.colorCombiner;\n return;\n case GL_COMBINE_ALPHA:\n HEAP32[param >> 2] = env.alphaCombiner;\n return;\n case GL_SRC0_RGB:\n HEAP32[param >> 2] = env.colorSrc[0];\n return;\n case GL_SRC1_RGB:\n HEAP32[param >> 2] = env.colorSrc[1];\n return;\n case GL_SRC2_RGB:\n HEAP32[param >> 2] = env.colorSrc[2];\n return;\n case GL_SRC0_ALPHA:\n HEAP32[param >> 2] = env.alphaSrc[0];\n return;\n case GL_SRC1_ALPHA:\n HEAP32[param >> 2] = env.alphaSrc[1];\n return;\n case GL_SRC2_ALPHA:\n HEAP32[param >> 2] = env.alphaSrc[2];\n return;\n case GL_OPERAND0_RGB:\n HEAP32[param >> 2] = env.colorOp[0];\n return;\n case GL_OPERAND1_RGB:\n HEAP32[param >> 2] = env.colorOp[1];\n return;\n case GL_OPERAND2_RGB:\n HEAP32[param >> 2] = env.colorOp[2];\n return;\n case GL_OPERAND0_ALPHA:\n HEAP32[param >> 2] = env.alphaOp[0];\n return;\n case GL_OPERAND1_ALPHA:\n HEAP32[param >> 2] = env.alphaOp[1];\n return;\n case GL_OPERAND2_ALPHA:\n HEAP32[param >> 2] = env.alphaOp[2];\n return;\n case GL_RGB_SCALE:\n HEAP32[param >> 2] = env.colorScale;\n return;\n case GL_ALPHA_SCALE:\n HEAP32[param >> 2] = env.alphaScale;\n return;\n default:\n err(\"WARNING: Unhandled `pname` in call to `glGetTexEnvi`.\");\n }\n },\n hook_getTexEnvfv: function (target, pname, param) {\n if (target != GL_TEXTURE_ENV) return;\n var env = getCurTexUnit().env;\n switch (pname) {\n case GL_TEXTURE_ENV_COLOR:\n HEAPF32[param >> 2] = env.envColor[0];\n HEAPF32[(param + 4) >> 2] = env.envColor[1];\n HEAPF32[(param + 8) >> 2] = env.envColor[2];\n HEAPF32[(param + 12) >> 2] = env.envColor[3];\n return;\n }\n },\n };\n },\n vertexData: null,\n vertexDataU8: null,\n tempData: null,\n indexData: null,\n vertexCounter: 0,\n mode: -1,\n rendererCache: null,\n rendererComponents: [],\n rendererComponentPointer: 0,\n lastRenderer: null,\n lastArrayBuffer: null,\n lastProgram: null,\n lastStride: -1,\n matrix: [],\n matrixStack: [],\n currentMatrix: 0,\n tempMatrix: null,\n matricesModified: false,\n useTextureMatrix: false,\n VERTEX: 0,\n NORMAL: 1,\n COLOR: 2,\n TEXTURE0: 3,\n NUM_ATTRIBUTES: -1,\n MAX_TEXTURES: -1,\n totalEnabledClientAttributes: 0,\n enabledClientAttributes: [0, 0],\n clientAttributes: [],\n liveClientAttributes: [],\n currentRenderer: null,\n modifiedClientAttributes: false,\n clientActiveTexture: 0,\n clientColor: null,\n usedTexUnitList: [],\n fixedFunctionProgram: null,\n setClientAttribute: function setClientAttribute(\n name,\n size,\n type,\n stride,\n pointer,\n ) {\n var attrib = GLImmediate.clientAttributes[name];\n if (!attrib) {\n for (var i = 0; i <= name; i++) {\n if (!GLImmediate.clientAttributes[i]) {\n GLImmediate.clientAttributes[i] = {\n name: name,\n size: size,\n type: type,\n stride: stride,\n pointer: pointer,\n offset: 0,\n };\n }\n }\n } else {\n attrib.name = name;\n attrib.size = size;\n attrib.type = type;\n attrib.stride = stride;\n attrib.pointer = pointer;\n attrib.offset = 0;\n }\n GLImmediate.modifiedClientAttributes = true;\n },\n addRendererComponent: function addRendererComponent(name, size, type) {\n if (!GLImmediate.rendererComponents[name]) {\n GLImmediate.rendererComponents[name] = 1;\n if (GLImmediate.enabledClientAttributes[name]) {\n console.log(\n \"Warning: glTexCoord used after EnableClientState for TEXTURE_COORD_ARRAY for TEXTURE0. Disabling TEXTURE_COORD_ARRAY...\",\n );\n }\n GLImmediate.enabledClientAttributes[name] = true;\n GLImmediate.setClientAttribute(\n name,\n size,\n type,\n 0,\n GLImmediate.rendererComponentPointer,\n );\n GLImmediate.rendererComponentPointer +=\n size * GL.byteSizeByType[type - GL.byteSizeByTypeRoot];\n } else {\n GLImmediate.rendererComponents[name]++;\n }\n },\n disableBeginEndClientAttributes: function disableBeginEndClientAttributes() {\n for (var i = 0; i < GLImmediate.NUM_ATTRIBUTES; i++) {\n if (GLImmediate.rendererComponents[i])\n GLImmediate.enabledClientAttributes[i] = false;\n }\n },\n getRenderer: function getRenderer() {\n if (GLImmediate.currentRenderer) {\n return GLImmediate.currentRenderer;\n }\n var attributes = GLImmediate.liveClientAttributes;\n var cacheMap = GLImmediate.rendererCache;\n var keyView = cacheMap.getStaticKeyView().reset();\n var enabledAttributesKey = 0;\n for (var i = 0; i < attributes.length; i++) {\n enabledAttributesKey |= 1 << attributes[i].name;\n }\n var fogParam = 0;\n if (GLEmulation.fogEnabled) {\n switch (GLEmulation.fogMode) {\n case 2049:\n fogParam = 1;\n break;\n case 9729:\n fogParam = 2;\n break;\n default:\n fogParam = 3;\n break;\n }\n }\n keyView.next((enabledAttributesKey << 2) | fogParam);\n keyView.next(GL.currProgram);\n if (!GL.currProgram) {\n GLImmediate.TexEnvJIT.traverseState(keyView);\n }\n var renderer = keyView.get();\n if (!renderer) {\n renderer = GLImmediate.createRenderer();\n GLImmediate.currentRenderer = renderer;\n keyView.set(renderer);\n return renderer;\n }\n GLImmediate.currentRenderer = renderer;\n return renderer;\n },\n createRenderer: function createRenderer(renderer) {\n var useCurrProgram = !!GL.currProgram;\n var hasTextures = false;\n for (var i = 0; i < GLImmediate.MAX_TEXTURES; i++) {\n var texAttribName = GLImmediate.TEXTURE0 + i;\n if (!GLImmediate.enabledClientAttributes[texAttribName]) continue;\n if (!useCurrProgram) {\n if (GLImmediate.TexEnvJIT.getTexUnitType(i) == 0) {\n warnOnce(\n \"GL_TEXTURE\" +\n i +\n \" coords are supplied, but that texture unit is disabled in the fixed-function pipeline.\",\n );\n }\n }\n hasTextures = true;\n }\n var ret = {\n init: function init() {\n var uTexUnitPrefix = \"u_texUnit\";\n var aTexCoordPrefix = \"a_texCoord\";\n var vTexCoordPrefix = \"v_texCoord\";\n var vPrimColor = \"v_color\";\n var uTexMatrixPrefix = GLImmediate.useTextureMatrix\n ? \"u_textureMatrix\"\n : null;\n if (useCurrProgram) {\n if (\n GL.shaderInfos[GL.programShaders[GL.currProgram][0]].type ==\n GLctx.VERTEX_SHADER\n ) {\n this.vertexShader =\n GL.shaders[GL.programShaders[GL.currProgram][0]];\n this.fragmentShader =\n GL.shaders[GL.programShaders[GL.currProgram][1]];\n } else {\n this.vertexShader =\n GL.shaders[GL.programShaders[GL.currProgram][1]];\n this.fragmentShader =\n GL.shaders[GL.programShaders[GL.currProgram][0]];\n }\n this.program = GL.programs[GL.currProgram];\n this.usedTexUnitList = [];\n } else {\n if (GLEmulation.fogEnabled) {\n switch (GLEmulation.fogMode) {\n case 2049:\n var fogFormula =\n \" float fog = exp(-u_fogDensity * u_fogDensity * ecDistance * ecDistance); \\n\";\n break;\n case 9729:\n var fogFormula =\n \" float fog = (u_fogEnd - ecDistance) * u_fogScale; \\n\";\n break;\n default:\n var fogFormula =\n \" float fog = exp(-u_fogDensity * ecDistance); \\n\";\n break;\n }\n }\n GLImmediate.TexEnvJIT.setGLSLVars(\n uTexUnitPrefix,\n vTexCoordPrefix,\n vPrimColor,\n uTexMatrixPrefix,\n );\n var fsTexEnvPass = GLImmediate.TexEnvJIT.genAllPassLines(\n \"gl_FragColor\",\n 2,\n );\n var texUnitAttribList = \"\";\n var texUnitVaryingList = \"\";\n var texUnitUniformList = \"\";\n var vsTexCoordInits = \"\";\n this.usedTexUnitList = GLImmediate.TexEnvJIT.getUsedTexUnitList();\n for (var i = 0; i < this.usedTexUnitList.length; i++) {\n var texUnit = this.usedTexUnitList[i];\n texUnitAttribList +=\n \"attribute vec4 \" + aTexCoordPrefix + texUnit + \";\\n\";\n texUnitVaryingList +=\n \"varying vec4 \" + vTexCoordPrefix + texUnit + \";\\n\";\n texUnitUniformList +=\n \"uniform sampler2D \" + uTexUnitPrefix + texUnit + \";\\n\";\n vsTexCoordInits +=\n \" \" +\n vTexCoordPrefix +\n texUnit +\n \" = \" +\n aTexCoordPrefix +\n texUnit +\n \";\\n\";\n if (GLImmediate.useTextureMatrix) {\n texUnitUniformList +=\n \"uniform mat4 \" + uTexMatrixPrefix + texUnit + \";\\n\";\n }\n }\n var vsFogVaryingInit = null;\n if (GLEmulation.fogEnabled) {\n vsFogVaryingInit = \" v_fogFragCoord = abs(ecPosition.z);\\n\";\n }\n var vsSource = [\n \"attribute vec4 a_position;\",\n \"attribute vec4 a_color;\",\n \"varying vec4 v_color;\",\n texUnitAttribList,\n texUnitVaryingList,\n GLEmulation.fogEnabled ? \"varying float v_fogFragCoord;\" : null,\n \"uniform mat4 u_modelView;\",\n \"uniform mat4 u_projection;\",\n \"void main()\",\n \"{\",\n \" vec4 ecPosition = u_modelView * a_position;\",\n \" gl_Position = u_projection * ecPosition;\",\n \" v_color = a_color;\",\n vsTexCoordInits,\n vsFogVaryingInit,\n \"}\",\n \"\",\n ]\n .join(\"\\n\")\n .replace(/\\n\\n+/g, \"\\n\");\n this.vertexShader = GLctx.createShader(GLctx.VERTEX_SHADER);\n GLctx.shaderSource(this.vertexShader, vsSource);\n GLctx.compileShader(this.vertexShader);\n var fogHeaderIfNeeded = null;\n if (GLEmulation.fogEnabled) {\n fogHeaderIfNeeded = [\n \"\",\n \"varying float v_fogFragCoord; \",\n \"uniform vec4 u_fogColor; \",\n \"uniform float u_fogEnd; \",\n \"uniform float u_fogScale; \",\n \"uniform float u_fogDensity; \",\n \"float ffog(in float ecDistance) { \",\n fogFormula,\n \" fog = clamp(fog, 0.0, 1.0); \",\n \" return fog; \",\n \"}\",\n \"\",\n ].join(\"\\n\");\n }\n var fogPass = null;\n if (GLEmulation.fogEnabled) {\n fogPass =\n \"gl_FragColor = vec4(mix(u_fogColor.rgb, gl_FragColor.rgb, ffog(v_fogFragCoord)), gl_FragColor.a);\\n\";\n }\n var fsSource = [\n \"precision mediump float;\",\n texUnitVaryingList,\n texUnitUniformList,\n \"varying vec4 v_color;\",\n fogHeaderIfNeeded,\n \"void main()\",\n \"{\",\n fsTexEnvPass,\n fogPass,\n \"}\",\n \"\",\n ]\n .join(\"\\n\")\n .replace(/\\n\\n+/g, \"\\n\");\n this.fragmentShader = GLctx.createShader(GLctx.FRAGMENT_SHADER);\n GLctx.shaderSource(this.fragmentShader, fsSource);\n GLctx.compileShader(this.fragmentShader);\n this.program = GLctx.createProgram();\n GLctx.attachShader(this.program, this.vertexShader);\n GLctx.attachShader(this.program, this.fragmentShader);\n GLctx.bindAttribLocation(\n this.program,\n GLImmediate.VERTEX,\n \"a_position\",\n );\n GLctx.bindAttribLocation(this.program, GLImmediate.COLOR, \"a_color\");\n GLctx.bindAttribLocation(\n this.program,\n GLImmediate.NORMAL,\n \"a_normal\",\n );\n var maxVertexAttribs = GLctx.getParameter(GLctx.MAX_VERTEX_ATTRIBS);\n for (\n var i = 0;\n i < GLImmediate.MAX_TEXTURES &&\n GLImmediate.TEXTURE0 + i < maxVertexAttribs;\n i++\n ) {\n GLctx.bindAttribLocation(\n this.program,\n GLImmediate.TEXTURE0 + i,\n \"a_texCoord\" + i,\n );\n GLctx.bindAttribLocation(\n this.program,\n GLImmediate.TEXTURE0 + i,\n aTexCoordPrefix + i,\n );\n }\n GLctx.linkProgram(this.program);\n }\n this.textureMatrixVersion = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n ];\n this.positionLocation = GLctx.getAttribLocation(\n this.program,\n \"a_position\",\n );\n this.texCoordLocations = [];\n for (var i = 0; i < GLImmediate.MAX_TEXTURES; i++) {\n if (!GLImmediate.enabledClientAttributes[GLImmediate.TEXTURE0 + i]) {\n this.texCoordLocations[i] = -1;\n continue;\n }\n if (useCurrProgram) {\n this.texCoordLocations[i] = GLctx.getAttribLocation(\n this.program,\n \"a_texCoord\" + i,\n );\n } else {\n this.texCoordLocations[i] = GLctx.getAttribLocation(\n this.program,\n aTexCoordPrefix + i,\n );\n }\n }\n this.colorLocation = GLctx.getAttribLocation(this.program, \"a_color\");\n if (!useCurrProgram) {\n var prevBoundProg = GLctx.getParameter(GLctx.CURRENT_PROGRAM);\n GLctx.useProgram(this.program);\n {\n for (var i = 0; i < this.usedTexUnitList.length; i++) {\n var texUnitID = this.usedTexUnitList[i];\n var texSamplerLoc = GLctx.getUniformLocation(\n this.program,\n uTexUnitPrefix + texUnitID,\n );\n GLctx.uniform1i(texSamplerLoc, texUnitID);\n }\n }\n GLctx.vertexAttrib4fv(this.colorLocation, [1, 1, 1, 1]);\n GLctx.useProgram(prevBoundProg);\n }\n this.textureMatrixLocations = [];\n for (var i = 0; i < GLImmediate.MAX_TEXTURES; i++) {\n this.textureMatrixLocations[i] = GLctx.getUniformLocation(\n this.program,\n \"u_textureMatrix\" + i,\n );\n }\n this.normalLocation = GLctx.getAttribLocation(this.program, \"a_normal\");\n this.modelViewLocation = GLctx.getUniformLocation(\n this.program,\n \"u_modelView\",\n );\n this.projectionLocation = GLctx.getUniformLocation(\n this.program,\n \"u_projection\",\n );\n this.hasTextures = hasTextures;\n this.hasNormal =\n GLImmediate.enabledClientAttributes[GLImmediate.NORMAL] &&\n GLImmediate.clientAttributes[GLImmediate.NORMAL].size > 0 &&\n this.normalLocation >= 0;\n this.hasColor = this.colorLocation === 0 || this.colorLocation > 0;\n this.floatType = GLctx.FLOAT;\n this.fogColorLocation = GLctx.getUniformLocation(\n this.program,\n \"u_fogColor\",\n );\n this.fogEndLocation = GLctx.getUniformLocation(\n this.program,\n \"u_fogEnd\",\n );\n this.fogScaleLocation = GLctx.getUniformLocation(\n this.program,\n \"u_fogScale\",\n );\n this.fogDensityLocation = GLctx.getUniformLocation(\n this.program,\n \"u_fogDensity\",\n );\n this.hasFog = !!(\n this.fogColorLocation ||\n this.fogEndLocation ||\n this.fogScaleLocation ||\n this.fogDensityLocation\n );\n },\n prepare: function prepare() {\n var arrayBuffer;\n if (!GL.currArrayBuffer) {\n var start = GLImmediate.firstVertex * GLImmediate.stride;\n var end = GLImmediate.lastVertex * GLImmediate.stride;\n assert(end <= GL.MAX_TEMP_BUFFER_SIZE, \"too much vertex data\");\n arrayBuffer = GL.getTempVertexBuffer(end);\n } else {\n arrayBuffer = GL.currArrayBuffer;\n }\n if (!GL.currArrayBuffer) {\n if (arrayBuffer != GLImmediate.lastArrayBuffer) {\n GLctx.bindBuffer(GLctx.ARRAY_BUFFER, arrayBuffer);\n GLImmediate.lastArrayBuffer = arrayBuffer;\n }\n GLctx.bufferSubData(\n GLctx.ARRAY_BUFFER,\n start,\n GLImmediate.vertexData.subarray(start >> 2, end >> 2),\n );\n }\n if (!GL.currProgram) {\n if (GLImmediate.fixedFunctionProgram != this.program) {\n GLctx.useProgram(this.program);\n GLImmediate.fixedFunctionProgram = this.program;\n }\n }\n if (\n this.modelViewLocation &&\n this.modelViewMatrixVersion != GLImmediate.matrixVersion[0]\n ) {\n this.modelViewMatrixVersion = GLImmediate.matrixVersion[0];\n GLctx.uniformMatrix4fv(\n this.modelViewLocation,\n false,\n GLImmediate.matrix[0],\n );\n }\n if (\n this.projectionLocation &&\n this.projectionMatrixVersion != GLImmediate.matrixVersion[1]\n ) {\n this.projectionMatrixVersion = GLImmediate.matrixVersion[1];\n GLctx.uniformMatrix4fv(\n this.projectionLocation,\n false,\n GLImmediate.matrix[1],\n );\n }\n var clientAttributes = GLImmediate.clientAttributes;\n var posAttr = clientAttributes[GLImmediate.VERTEX];\n GLctx.vertexAttribPointer(\n this.positionLocation,\n posAttr.size,\n posAttr.type,\n false,\n GLImmediate.stride,\n posAttr.offset,\n );\n GLctx.enableVertexAttribArray(this.positionLocation);\n if (this.hasNormal) {\n var normalAttr = clientAttributes[GLImmediate.NORMAL];\n GLctx.vertexAttribPointer(\n this.normalLocation,\n normalAttr.size,\n normalAttr.type,\n true,\n GLImmediate.stride,\n normalAttr.offset,\n );\n GLctx.enableVertexAttribArray(this.normalLocation);\n }\n if (this.hasTextures) {\n for (var i = 0; i < GLImmediate.MAX_TEXTURES; i++) {\n var attribLoc = this.texCoordLocations[i];\n if (attribLoc === undefined || attribLoc < 0) continue;\n var texAttr = clientAttributes[GLImmediate.TEXTURE0 + i];\n if (texAttr.size) {\n GLctx.vertexAttribPointer(\n attribLoc,\n texAttr.size,\n texAttr.type,\n false,\n GLImmediate.stride,\n texAttr.offset,\n );\n GLctx.enableVertexAttribArray(attribLoc);\n } else {\n GLctx.vertexAttrib4f(attribLoc, 0, 0, 0, 1);\n GLctx.disableVertexAttribArray(attribLoc);\n }\n var t = 2 + i;\n if (\n this.textureMatrixLocations[i] &&\n this.textureMatrixVersion[t] != GLImmediate.matrixVersion[t]\n ) {\n this.textureMatrixVersion[t] = GLImmediate.matrixVersion[t];\n GLctx.uniformMatrix4fv(\n this.textureMatrixLocations[i],\n false,\n GLImmediate.matrix[t],\n );\n }\n }\n }\n if (GLImmediate.enabledClientAttributes[GLImmediate.COLOR]) {\n var colorAttr = clientAttributes[GLImmediate.COLOR];\n GLctx.vertexAttribPointer(\n this.colorLocation,\n colorAttr.size,\n colorAttr.type,\n true,\n GLImmediate.stride,\n colorAttr.offset,\n );\n GLctx.enableVertexAttribArray(this.colorLocation);\n } else if (this.hasColor) {\n GLctx.disableVertexAttribArray(this.colorLocation);\n GLctx.vertexAttrib4fv(this.colorLocation, GLImmediate.clientColor);\n }\n if (this.hasFog) {\n if (this.fogColorLocation)\n GLctx.uniform4fv(this.fogColorLocation, GLEmulation.fogColor);\n if (this.fogEndLocation)\n GLctx.uniform1f(this.fogEndLocation, GLEmulation.fogEnd);\n if (this.fogScaleLocation)\n GLctx.uniform1f(\n this.fogScaleLocation,\n 1 / (GLEmulation.fogEnd - GLEmulation.fogStart),\n );\n if (this.fogDensityLocation)\n GLctx.uniform1f(this.fogDensityLocation, GLEmulation.fogDensity);\n }\n },\n cleanup: function cleanup() {\n GLctx.disableVertexAttribArray(this.positionLocation);\n if (this.hasTextures) {\n for (var i = 0; i < GLImmediate.MAX_TEXTURES; i++) {\n if (\n GLImmediate.enabledClientAttributes[GLImmediate.TEXTURE0 + i] &&\n this.texCoordLocations[i] >= 0\n ) {\n GLctx.disableVertexAttribArray(this.texCoordLocations[i]);\n }\n }\n }\n if (this.hasColor) {\n GLctx.disableVertexAttribArray(this.colorLocation);\n }\n if (this.hasNormal) {\n GLctx.disableVertexAttribArray(this.normalLocation);\n }\n if (!GL.currProgram) {\n GLctx.useProgram(null);\n GLImmediate.fixedFunctionProgram = 0;\n }\n if (!GL.currArrayBuffer) {\n GLctx.bindBuffer(GLctx.ARRAY_BUFFER, null);\n GLImmediate.lastArrayBuffer = null;\n }\n GLImmediate.matricesModified = true;\n },\n };\n ret.init();\n return ret;\n },\n setupFuncs: function () {\n GLImmediate.MapTreeLib = GLImmediate.spawnMapTreeLib();\n GLImmediate.spawnMapTreeLib = null;\n GLImmediate.TexEnvJIT = GLImmediate.spawnTexEnvJIT();\n GLImmediate.spawnTexEnvJIT = null;\n GLImmediate.setupHooks();\n },\n setupHooks: function () {\n if (!GLEmulation.hasRunInit) {\n GLEmulation.init();\n }\n var glActiveTexture = _glActiveTexture;\n _glActiveTexture = _emscripten_glActiveTexture = function _glActiveTexture(\n texture,\n ) {\n GLImmediate.TexEnvJIT.hook_activeTexture(texture);\n glActiveTexture(texture);\n };\n var glEnable = _glEnable;\n _glEnable = _emscripten_glEnable = function _glEnable(cap) {\n GLImmediate.TexEnvJIT.hook_enable(cap);\n glEnable(cap);\n };\n var glDisable = _glDisable;\n _glDisable = _emscripten_glDisable = function _glDisable(cap) {\n GLImmediate.TexEnvJIT.hook_disable(cap);\n glDisable(cap);\n };\n var glTexEnvf =\n typeof _glTexEnvf != \"undefined\" ? _glTexEnvf : function () {};\n _glTexEnvf = _emscripten_glTexEnvf = function _glTexEnvf(\n target,\n pname,\n param,\n ) {\n GLImmediate.TexEnvJIT.hook_texEnvf(target, pname, param);\n };\n var glTexEnvi =\n typeof _glTexEnvi != \"undefined\" ? _glTexEnvi : function () {};\n _glTexEnvi = _emscripten_glTexEnvi = function _glTexEnvi(\n target,\n pname,\n param,\n ) {\n GLImmediate.TexEnvJIT.hook_texEnvi(target, pname, param);\n };\n var glTexEnvfv =\n typeof _glTexEnvfv != \"undefined\" ? _glTexEnvfv : function () {};\n _glTexEnvfv = _emscripten_glTexEnvfv = function _glTexEnvfv(\n target,\n pname,\n param,\n ) {\n GLImmediate.TexEnvJIT.hook_texEnvfv(target, pname, param);\n };\n _glGetTexEnviv = function _glGetTexEnviv(target, pname, param) {\n GLImmediate.TexEnvJIT.hook_getTexEnviv(target, pname, param);\n };\n _glGetTexEnvfv = function _glGetTexEnvfv(target, pname, param) {\n GLImmediate.TexEnvJIT.hook_getTexEnvfv(target, pname, param);\n };\n var glGetIntegerv = _glGetIntegerv;\n _glGetIntegerv = _emscripten_glGetIntegerv = function _glGetIntegerv(\n pname,\n params,\n ) {\n switch (pname) {\n case 35725: {\n var cur = GLctx.getParameter(GLctx.CURRENT_PROGRAM);\n if (cur == GLImmediate.fixedFunctionProgram) {\n HEAP32[params >> 2] = 0;\n return;\n }\n break;\n }\n }\n glGetIntegerv(pname, params);\n };\n },\n initted: false,\n init: function () {\n err(\n \"WARNING: using emscripten GL immediate mode emulation. This is very limited in what it supports\",\n );\n GLImmediate.initted = true;\n if (!Module.useWebGL) return;\n GLImmediate.MAX_TEXTURES =\n Module[\"GL_MAX_TEXTURE_IMAGE_UNITS\"] ||\n GLctx.getParameter(GLctx.MAX_TEXTURE_IMAGE_UNITS);\n GLImmediate.TexEnvJIT.init(GLctx, GLImmediate.MAX_TEXTURES);\n GLImmediate.NUM_ATTRIBUTES = 3 + GLImmediate.MAX_TEXTURES;\n GLImmediate.clientAttributes = [];\n GLEmulation.enabledClientAttribIndices = [];\n for (var i = 0; i < GLImmediate.NUM_ATTRIBUTES; i++) {\n GLImmediate.clientAttributes.push({});\n GLEmulation.enabledClientAttribIndices.push(false);\n }\n GLImmediate.matrix = [];\n GLImmediate.matrixStack = [];\n GLImmediate.matrixVersion = [];\n for (var i = 0; i < 2 + GLImmediate.MAX_TEXTURES; i++) {\n GLImmediate.matrixStack.push([]);\n GLImmediate.matrixVersion.push(0);\n GLImmediate.matrix.push(GLImmediate.matrixLib.mat4.create());\n GLImmediate.matrixLib.mat4.identity(GLImmediate.matrix[i]);\n }\n GLImmediate.rendererCache = GLImmediate.MapTreeLib.create();\n GLImmediate.tempData = new Float32Array(GL.MAX_TEMP_BUFFER_SIZE >> 2);\n GLImmediate.indexData = new Uint16Array(GL.MAX_TEMP_BUFFER_SIZE >> 1);\n GLImmediate.vertexDataU8 = new Uint8Array(GLImmediate.tempData.buffer);\n GL.generateTempBuffers(true, GL.currentContext);\n GLImmediate.clientColor = new Float32Array([1, 1, 1, 1]);\n },\n prepareClientAttributes: function prepareClientAttributes(count, beginEnd) {\n if (!GLImmediate.modifiedClientAttributes) {\n GLImmediate.vertexCounter = (GLImmediate.stride * count) / 4;\n return;\n }\n GLImmediate.modifiedClientAttributes = false;\n var clientStartPointer = 2147483647;\n var bytes = 0;\n var minStride = 2147483647;\n var maxStride = 0;\n var attributes = GLImmediate.liveClientAttributes;\n attributes.length = 0;\n for (var i = 0; i < 3 + GLImmediate.MAX_TEXTURES; i++) {\n if (GLImmediate.enabledClientAttributes[i]) {\n var attr = GLImmediate.clientAttributes[i];\n attributes.push(attr);\n clientStartPointer = Math.min(clientStartPointer, attr.pointer);\n attr.sizeBytes =\n attr.size * GL.byteSizeByType[attr.type - GL.byteSizeByTypeRoot];\n bytes += attr.sizeBytes;\n minStride = Math.min(minStride, attr.stride);\n maxStride = Math.max(maxStride, attr.stride);\n }\n }\n if ((minStride != maxStride || maxStride < bytes) && !beginEnd) {\n if (!GLImmediate.restrideBuffer)\n GLImmediate.restrideBuffer = _malloc(GL.MAX_TEMP_BUFFER_SIZE);\n var start = GLImmediate.restrideBuffer;\n bytes = 0;\n for (var i = 0; i < attributes.length; i++) {\n var attr = attributes[i];\n var size = attr.sizeBytes;\n if (size % 4 != 0) size += 4 - (size % 4);\n attr.offset = bytes;\n bytes += size;\n }\n for (var i = 0; i < attributes.length; i++) {\n var attr = attributes[i];\n var srcStride = Math.max(attr.sizeBytes, attr.stride);\n if ((srcStride & 3) == 0 && (attr.sizeBytes & 3) == 0) {\n var size4 = attr.sizeBytes >> 2;\n var srcStride4 = Math.max(attr.sizeBytes, attr.stride) >> 2;\n for (var j = 0; j < count; j++) {\n for (var k = 0; k < size4; k++) {\n HEAP32[((start + attr.offset + bytes * j) >> 2) + k] =\n HEAP32[(attr.pointer >> 2) + j * srcStride4 + k];\n }\n }\n } else {\n for (var j = 0; j < count; j++) {\n for (var k = 0; k < attr.sizeBytes; k++) {\n HEAP8[start + attr.offset + bytes * j + k] =\n HEAP8[attr.pointer + j * srcStride + k];\n }\n }\n }\n attr.pointer = start + attr.offset;\n }\n GLImmediate.stride = bytes;\n GLImmediate.vertexPointer = start;\n } else {\n if (GL.currArrayBuffer) {\n GLImmediate.vertexPointer = 0;\n } else {\n GLImmediate.vertexPointer = clientStartPointer;\n }\n for (var i = 0; i < attributes.length; i++) {\n var attr = attributes[i];\n attr.offset = attr.pointer - GLImmediate.vertexPointer;\n }\n GLImmediate.stride = Math.max(maxStride, bytes);\n }\n if (!beginEnd) {\n GLImmediate.vertexCounter = (GLImmediate.stride * count) / 4;\n }\n },\n flush: function flush(numProvidedIndexes, startIndex, ptr) {\n assert(numProvidedIndexes >= 0 || !numProvidedIndexes);\n startIndex = startIndex || 0;\n ptr = ptr || 0;\n var renderer = GLImmediate.getRenderer();\n var numVertexes = (4 * GLImmediate.vertexCounter) / GLImmediate.stride;\n if (!numVertexes) return;\n assert(numVertexes % 1 == 0, \"`numVertexes` must be an integer.\");\n var emulatedElementArrayBuffer = false;\n var numIndexes = 0;\n if (numProvidedIndexes) {\n numIndexes = numProvidedIndexes;\n if (\n !GL.currArrayBuffer &&\n GLImmediate.firstVertex > GLImmediate.lastVertex\n ) {\n assert(!GL.currElementArrayBuffer);\n for (var i = 0; i < numProvidedIndexes; i++) {\n var currIndex = HEAPU16[(ptr + i * 2) >> 1];\n GLImmediate.firstVertex = Math.min(\n GLImmediate.firstVertex,\n currIndex,\n );\n GLImmediate.lastVertex = Math.max(\n GLImmediate.lastVertex,\n currIndex + 1,\n );\n }\n }\n if (!GL.currElementArrayBuffer) {\n assert(\n numProvidedIndexes << 1 <= GL.MAX_TEMP_BUFFER_SIZE,\n \"too many immediate mode indexes (a)\",\n );\n var indexBuffer = GL.getTempIndexBuffer(numProvidedIndexes << 1);\n GLctx.bindBuffer(GLctx.ELEMENT_ARRAY_BUFFER, indexBuffer);\n GLctx.bufferSubData(\n GLctx.ELEMENT_ARRAY_BUFFER,\n 0,\n HEAPU16.subarray(ptr >> 1, (ptr + (numProvidedIndexes << 1)) >> 1),\n );\n ptr = 0;\n emulatedElementArrayBuffer = true;\n }\n } else if (GLImmediate.mode > 6) {\n if (GLImmediate.mode != 7)\n throw \"unsupported immediate mode \" + GLImmediate.mode;\n assert(GLImmediate.firstVertex % 4 == 0);\n ptr = GLImmediate.firstVertex * 3;\n var numQuads = numVertexes / 4;\n numIndexes = numQuads * 6;\n assert(\n ptr + (numIndexes << 1) <= GL.MAX_TEMP_BUFFER_SIZE,\n \"too many immediate mode indexes (b)\",\n );\n GLctx.bindBuffer(\n GLctx.ELEMENT_ARRAY_BUFFER,\n GL.currentContext.tempQuadIndexBuffer,\n );\n emulatedElementArrayBuffer = true;\n }\n renderer.prepare();\n if (numIndexes) {\n GLctx.drawElements(\n GLctx.TRIANGLES,\n numIndexes,\n GLctx.UNSIGNED_SHORT,\n ptr,\n );\n } else {\n GLctx.drawArrays(GLImmediate.mode, startIndex, numVertexes);\n }\n if (emulatedElementArrayBuffer) {\n GLctx.bindBuffer(\n GLctx.ELEMENT_ARRAY_BUFFER,\n GL.buffers[GL.currElementArrayBuffer] || null,\n );\n }\n renderer.cleanup();\n },\n};\nGLImmediate.matrixLib = (function () {\n var vec3 = {};\n var mat3 = {};\n var mat4 = {};\n var quat4 = {};\n var MatrixArray = Float32Array;\n vec3.create = function (vec) {\n var dest = new MatrixArray(3);\n if (vec) {\n dest[0] = vec[0];\n dest[1] = vec[1];\n dest[2] = vec[2];\n } else {\n dest[0] = dest[1] = dest[2] = 0;\n }\n return dest;\n };\n vec3.set = function (vec, dest) {\n dest[0] = vec[0];\n dest[1] = vec[1];\n dest[2] = vec[2];\n return dest;\n };\n vec3.add = function (vec, vec2, dest) {\n if (!dest || vec === dest) {\n vec[0] += vec2[0];\n vec[1] += vec2[1];\n vec[2] += vec2[2];\n return vec;\n }\n dest[0] = vec[0] + vec2[0];\n dest[1] = vec[1] + vec2[1];\n dest[2] = vec[2] + vec2[2];\n return dest;\n };\n vec3.subtract = function (vec, vec2, dest) {\n if (!dest || vec === dest) {\n vec[0] -= vec2[0];\n vec[1] -= vec2[1];\n vec[2] -= vec2[2];\n return vec;\n }\n dest[0] = vec[0] - vec2[0];\n dest[1] = vec[1] - vec2[1];\n dest[2] = vec[2] - vec2[2];\n return dest;\n };\n vec3.multiply = function (vec, vec2, dest) {\n if (!dest || vec === dest) {\n vec[0] *= vec2[0];\n vec[1] *= vec2[1];\n vec[2] *= vec2[2];\n return vec;\n }\n dest[0] = vec[0] * vec2[0];\n dest[1] = vec[1] * vec2[1];\n dest[2] = vec[2] * vec2[2];\n return dest;\n };\n vec3.negate = function (vec, dest) {\n if (!dest) {\n dest = vec;\n }\n dest[0] = -vec[0];\n dest[1] = -vec[1];\n dest[2] = -vec[2];\n return dest;\n };\n vec3.scale = function (vec, val, dest) {\n if (!dest || vec === dest) {\n vec[0] *= val;\n vec[1] *= val;\n vec[2] *= val;\n return vec;\n }\n dest[0] = vec[0] * val;\n dest[1] = vec[1] * val;\n dest[2] = vec[2] * val;\n return dest;\n };\n vec3.normalize = function (vec, dest) {\n if (!dest) {\n dest = vec;\n }\n var x = vec[0],\n y = vec[1],\n z = vec[2],\n len = Math.sqrt(x * x + y * y + z * z);\n if (!len) {\n dest[0] = 0;\n dest[1] = 0;\n dest[2] = 0;\n return dest;\n } else if (len === 1) {\n dest[0] = x;\n dest[1] = y;\n dest[2] = z;\n return dest;\n }\n len = 1 / len;\n dest[0] = x * len;\n dest[1] = y * len;\n dest[2] = z * len;\n return dest;\n };\n vec3.cross = function (vec, vec2, dest) {\n if (!dest) {\n dest = vec;\n }\n var x = vec[0],\n y = vec[1],\n z = vec[2],\n x2 = vec2[0],\n y2 = vec2[1],\n z2 = vec2[2];\n dest[0] = y * z2 - z * y2;\n dest[1] = z * x2 - x * z2;\n dest[2] = x * y2 - y * x2;\n return dest;\n };\n vec3.length = function (vec) {\n var x = vec[0],\n y = vec[1],\n z = vec[2];\n return Math.sqrt(x * x + y * y + z * z);\n };\n vec3.dot = function (vec, vec2) {\n return vec[0] * vec2[0] + vec[1] * vec2[1] + vec[2] * vec2[2];\n };\n vec3.direction = function (vec, vec2, dest) {\n if (!dest) {\n dest = vec;\n }\n var x = vec[0] - vec2[0],\n y = vec[1] - vec2[1],\n z = vec[2] - vec2[2],\n len = Math.sqrt(x * x + y * y + z * z);\n if (!len) {\n dest[0] = 0;\n dest[1] = 0;\n dest[2] = 0;\n return dest;\n }\n len = 1 / len;\n dest[0] = x * len;\n dest[1] = y * len;\n dest[2] = z * len;\n return dest;\n };\n vec3.lerp = function (vec, vec2, lerp, dest) {\n if (!dest) {\n dest = vec;\n }\n dest[0] = vec[0] + lerp * (vec2[0] - vec[0]);\n dest[1] = vec[1] + lerp * (vec2[1] - vec[1]);\n dest[2] = vec[2] + lerp * (vec2[2] - vec[2]);\n return dest;\n };\n vec3.dist = function (vec, vec2) {\n var x = vec2[0] - vec[0],\n y = vec2[1] - vec[1],\n z = vec2[2] - vec[2];\n return Math.sqrt(x * x + y * y + z * z);\n };\n vec3.unproject = function (vec, view, proj, viewport, dest) {\n if (!dest) {\n dest = vec;\n }\n var m = mat4.create();\n var v = new MatrixArray(4);\n v[0] = ((vec[0] - viewport[0]) * 2) / viewport[2] - 1;\n v[1] = ((vec[1] - viewport[1]) * 2) / viewport[3] - 1;\n v[2] = 2 * vec[2] - 1;\n v[3] = 1;\n mat4.multiply(proj, view, m);\n if (!mat4.inverse(m)) {\n return null;\n }\n mat4.multiplyVec4(m, v);\n if (v[3] === 0) {\n return null;\n }\n dest[0] = v[0] / v[3];\n dest[1] = v[1] / v[3];\n dest[2] = v[2] / v[3];\n return dest;\n };\n vec3.str = function (vec) {\n return \"[\" + vec[0] + \", \" + vec[1] + \", \" + vec[2] + \"]\";\n };\n mat3.create = function (mat) {\n var dest = new MatrixArray(9);\n if (mat) {\n dest[0] = mat[0];\n dest[1] = mat[1];\n dest[2] = mat[2];\n dest[3] = mat[3];\n dest[4] = mat[4];\n dest[5] = mat[5];\n dest[6] = mat[6];\n dest[7] = mat[7];\n dest[8] = mat[8];\n }\n return dest;\n };\n mat3.set = function (mat, dest) {\n dest[0] = mat[0];\n dest[1] = mat[1];\n dest[2] = mat[2];\n dest[3] = mat[3];\n dest[4] = mat[4];\n dest[5] = mat[5];\n dest[6] = mat[6];\n dest[7] = mat[7];\n dest[8] = mat[8];\n return dest;\n };\n mat3.identity = function (dest) {\n if (!dest) {\n dest = mat3.create();\n }\n dest[0] = 1;\n dest[1] = 0;\n dest[2] = 0;\n dest[3] = 0;\n dest[4] = 1;\n dest[5] = 0;\n dest[6] = 0;\n dest[7] = 0;\n dest[8] = 1;\n return dest;\n };\n mat3.transpose = function (mat, dest) {\n if (!dest || mat === dest) {\n var a01 = mat[1],\n a02 = mat[2],\n a12 = mat[5];\n mat[1] = mat[3];\n mat[2] = mat[6];\n mat[3] = a01;\n mat[5] = mat[7];\n mat[6] = a02;\n mat[7] = a12;\n return mat;\n }\n dest[0] = mat[0];\n dest[1] = mat[3];\n dest[2] = mat[6];\n dest[3] = mat[1];\n dest[4] = mat[4];\n dest[5] = mat[7];\n dest[6] = mat[2];\n dest[7] = mat[5];\n dest[8] = mat[8];\n return dest;\n };\n mat3.toMat4 = function (mat, dest) {\n if (!dest) {\n dest = mat4.create();\n }\n dest[15] = 1;\n dest[14] = 0;\n dest[13] = 0;\n dest[12] = 0;\n dest[11] = 0;\n dest[10] = mat[8];\n dest[9] = mat[7];\n dest[8] = mat[6];\n dest[7] = 0;\n dest[6] = mat[5];\n dest[5] = mat[4];\n dest[4] = mat[3];\n dest[3] = 0;\n dest[2] = mat[2];\n dest[1] = mat[1];\n dest[0] = mat[0];\n return dest;\n };\n mat3.str = function (mat) {\n return (\n \"[\" +\n mat[0] +\n \", \" +\n mat[1] +\n \", \" +\n mat[2] +\n \", \" +\n mat[3] +\n \", \" +\n mat[4] +\n \", \" +\n mat[5] +\n \", \" +\n mat[6] +\n \", \" +\n mat[7] +\n \", \" +\n mat[8] +\n \"]\"\n );\n };\n mat4.create = function (mat) {\n var dest = new MatrixArray(16);\n if (mat) {\n dest[0] = mat[0];\n dest[1] = mat[1];\n dest[2] = mat[2];\n dest[3] = mat[3];\n dest[4] = mat[4];\n dest[5] = mat[5];\n dest[6] = mat[6];\n dest[7] = mat[7];\n dest[8] = mat[8];\n dest[9] = mat[9];\n dest[10] = mat[10];\n dest[11] = mat[11];\n dest[12] = mat[12];\n dest[13] = mat[13];\n dest[14] = mat[14];\n dest[15] = mat[15];\n }\n return dest;\n };\n mat4.set = function (mat, dest) {\n dest[0] = mat[0];\n dest[1] = mat[1];\n dest[2] = mat[2];\n dest[3] = mat[3];\n dest[4] = mat[4];\n dest[5] = mat[5];\n dest[6] = mat[6];\n dest[7] = mat[7];\n dest[8] = mat[8];\n dest[9] = mat[9];\n dest[10] = mat[10];\n dest[11] = mat[11];\n dest[12] = mat[12];\n dest[13] = mat[13];\n dest[14] = mat[14];\n dest[15] = mat[15];\n return dest;\n };\n mat4.identity = function (dest) {\n if (!dest) {\n dest = mat4.create();\n }\n dest[0] = 1;\n dest[1] = 0;\n dest[2] = 0;\n dest[3] = 0;\n dest[4] = 0;\n dest[5] = 1;\n dest[6] = 0;\n dest[7] = 0;\n dest[8] = 0;\n dest[9] = 0;\n dest[10] = 1;\n dest[11] = 0;\n dest[12] = 0;\n dest[13] = 0;\n dest[14] = 0;\n dest[15] = 1;\n return dest;\n };\n mat4.transpose = function (mat, dest) {\n if (!dest || mat === dest) {\n var a01 = mat[1],\n a02 = mat[2],\n a03 = mat[3],\n a12 = mat[6],\n a13 = mat[7],\n a23 = mat[11];\n mat[1] = mat[4];\n mat[2] = mat[8];\n mat[3] = mat[12];\n mat[4] = a01;\n mat[6] = mat[9];\n mat[7] = mat[13];\n mat[8] = a02;\n mat[9] = a12;\n mat[11] = mat[14];\n mat[12] = a03;\n mat[13] = a13;\n mat[14] = a23;\n return mat;\n }\n dest[0] = mat[0];\n dest[1] = mat[4];\n dest[2] = mat[8];\n dest[3] = mat[12];\n dest[4] = mat[1];\n dest[5] = mat[5];\n dest[6] = mat[9];\n dest[7] = mat[13];\n dest[8] = mat[2];\n dest[9] = mat[6];\n dest[10] = mat[10];\n dest[11] = mat[14];\n dest[12] = mat[3];\n dest[13] = mat[7];\n dest[14] = mat[11];\n dest[15] = mat[15];\n return dest;\n };\n mat4.determinant = function (mat) {\n var a00 = mat[0],\n a01 = mat[1],\n a02 = mat[2],\n a03 = mat[3],\n a10 = mat[4],\n a11 = mat[5],\n a12 = mat[6],\n a13 = mat[7],\n a20 = mat[8],\n a21 = mat[9],\n a22 = mat[10],\n a23 = mat[11],\n a30 = mat[12],\n a31 = mat[13],\n a32 = mat[14],\n a33 = mat[15];\n return (\n a30 * a21 * a12 * a03 -\n a20 * a31 * a12 * a03 -\n a30 * a11 * a22 * a03 +\n a10 * a31 * a22 * a03 +\n a20 * a11 * a32 * a03 -\n a10 * a21 * a32 * a03 -\n a30 * a21 * a02 * a13 +\n a20 * a31 * a02 * a13 +\n a30 * a01 * a22 * a13 -\n a00 * a31 * a22 * a13 -\n a20 * a01 * a32 * a13 +\n a00 * a21 * a32 * a13 +\n a30 * a11 * a02 * a23 -\n a10 * a31 * a02 * a23 -\n a30 * a01 * a12 * a23 +\n a00 * a31 * a12 * a23 +\n a10 * a01 * a32 * a23 -\n a00 * a11 * a32 * a23 -\n a20 * a11 * a02 * a33 +\n a10 * a21 * a02 * a33 +\n a20 * a01 * a12 * a33 -\n a00 * a21 * a12 * a33 -\n a10 * a01 * a22 * a33 +\n a00 * a11 * a22 * a33\n );\n };\n mat4.inverse = function (mat, dest) {\n if (!dest) {\n dest = mat;\n }\n var a00 = mat[0],\n a01 = mat[1],\n a02 = mat[2],\n a03 = mat[3],\n a10 = mat[4],\n a11 = mat[5],\n a12 = mat[6],\n a13 = mat[7],\n a20 = mat[8],\n a21 = mat[9],\n a22 = mat[10],\n a23 = mat[11],\n a30 = mat[12],\n a31 = mat[13],\n a32 = mat[14],\n a33 = mat[15],\n b00 = a00 * a11 - a01 * a10,\n b01 = a00 * a12 - a02 * a10,\n b02 = a00 * a13 - a03 * a10,\n b03 = a01 * a12 - a02 * a11,\n b04 = a01 * a13 - a03 * a11,\n b05 = a02 * a13 - a03 * a12,\n b06 = a20 * a31 - a21 * a30,\n b07 = a20 * a32 - a22 * a30,\n b08 = a20 * a33 - a23 * a30,\n b09 = a21 * a32 - a22 * a31,\n b10 = a21 * a33 - a23 * a31,\n b11 = a22 * a33 - a23 * a32,\n d = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06,\n invDet;\n if (!d) {\n return null;\n }\n invDet = 1 / d;\n dest[0] = (a11 * b11 - a12 * b10 + a13 * b09) * invDet;\n dest[1] = (-a01 * b11 + a02 * b10 - a03 * b09) * invDet;\n dest[2] = (a31 * b05 - a32 * b04 + a33 * b03) * invDet;\n dest[3] = (-a21 * b05 + a22 * b04 - a23 * b03) * invDet;\n dest[4] = (-a10 * b11 + a12 * b08 - a13 * b07) * invDet;\n dest[5] = (a00 * b11 - a02 * b08 + a03 * b07) * invDet;\n dest[6] = (-a30 * b05 + a32 * b02 - a33 * b01) * invDet;\n dest[7] = (a20 * b05 - a22 * b02 + a23 * b01) * invDet;\n dest[8] = (a10 * b10 - a11 * b08 + a13 * b06) * invDet;\n dest[9] = (-a00 * b10 + a01 * b08 - a03 * b06) * invDet;\n dest[10] = (a30 * b04 - a31 * b02 + a33 * b00) * invDet;\n dest[11] = (-a20 * b04 + a21 * b02 - a23 * b00) * invDet;\n dest[12] = (-a10 * b09 + a11 * b07 - a12 * b06) * invDet;\n dest[13] = (a00 * b09 - a01 * b07 + a02 * b06) * invDet;\n dest[14] = (-a30 * b03 + a31 * b01 - a32 * b00) * invDet;\n dest[15] = (a20 * b03 - a21 * b01 + a22 * b00) * invDet;\n return dest;\n };\n mat4.toRotationMat = function (mat, dest) {\n if (!dest) {\n dest = mat4.create();\n }\n dest[0] = mat[0];\n dest[1] = mat[1];\n dest[2] = mat[2];\n dest[3] = mat[3];\n dest[4] = mat[4];\n dest[5] = mat[5];\n dest[6] = mat[6];\n dest[7] = mat[7];\n dest[8] = mat[8];\n dest[9] = mat[9];\n dest[10] = mat[10];\n dest[11] = mat[11];\n dest[12] = 0;\n dest[13] = 0;\n dest[14] = 0;\n dest[15] = 1;\n return dest;\n };\n mat4.toMat3 = function (mat, dest) {\n if (!dest) {\n dest = mat3.create();\n }\n dest[0] = mat[0];\n dest[1] = mat[1];\n dest[2] = mat[2];\n dest[3] = mat[4];\n dest[4] = mat[5];\n dest[5] = mat[6];\n dest[6] = mat[8];\n dest[7] = mat[9];\n dest[8] = mat[10];\n return dest;\n };\n mat4.toInverseMat3 = function (mat, dest) {\n var a00 = mat[0],\n a01 = mat[1],\n a02 = mat[2],\n a10 = mat[4],\n a11 = mat[5],\n a12 = mat[6],\n a20 = mat[8],\n a21 = mat[9],\n a22 = mat[10],\n b01 = a22 * a11 - a12 * a21,\n b11 = -a22 * a10 + a12 * a20,\n b21 = a21 * a10 - a11 * a20,\n d = a00 * b01 + a01 * b11 + a02 * b21,\n id;\n if (!d) {\n return null;\n }\n id = 1 / d;\n if (!dest) {\n dest = mat3.create();\n }\n dest[0] = b01 * id;\n dest[1] = (-a22 * a01 + a02 * a21) * id;\n dest[2] = (a12 * a01 - a02 * a11) * id;\n dest[3] = b11 * id;\n dest[4] = (a22 * a00 - a02 * a20) * id;\n dest[5] = (-a12 * a00 + a02 * a10) * id;\n dest[6] = b21 * id;\n dest[7] = (-a21 * a00 + a01 * a20) * id;\n dest[8] = (a11 * a00 - a01 * a10) * id;\n return dest;\n };\n mat4.multiply = function (mat, mat2, dest) {\n if (!dest) {\n dest = mat;\n }\n var a00 = mat[0],\n a01 = mat[1],\n a02 = mat[2],\n a03 = mat[3],\n a10 = mat[4],\n a11 = mat[5],\n a12 = mat[6],\n a13 = mat[7],\n a20 = mat[8],\n a21 = mat[9],\n a22 = mat[10],\n a23 = mat[11],\n a30 = mat[12],\n a31 = mat[13],\n a32 = mat[14],\n a33 = mat[15],\n b00 = mat2[0],\n b01 = mat2[1],\n b02 = mat2[2],\n b03 = mat2[3],\n b10 = mat2[4],\n b11 = mat2[5],\n b12 = mat2[6],\n b13 = mat2[7],\n b20 = mat2[8],\n b21 = mat2[9],\n b22 = mat2[10],\n b23 = mat2[11],\n b30 = mat2[12],\n b31 = mat2[13],\n b32 = mat2[14],\n b33 = mat2[15];\n dest[0] = b00 * a00 + b01 * a10 + b02 * a20 + b03 * a30;\n dest[1] = b00 * a01 + b01 * a11 + b02 * a21 + b03 * a31;\n dest[2] = b00 * a02 + b01 * a12 + b02 * a22 + b03 * a32;\n dest[3] = b00 * a03 + b01 * a13 + b02 * a23 + b03 * a33;\n dest[4] = b10 * a00 + b11 * a10 + b12 * a20 + b13 * a30;\n dest[5] = b10 * a01 + b11 * a11 + b12 * a21 + b13 * a31;\n dest[6] = b10 * a02 + b11 * a12 + b12 * a22 + b13 * a32;\n dest[7] = b10 * a03 + b11 * a13 + b12 * a23 + b13 * a33;\n dest[8] = b20 * a00 + b21 * a10 + b22 * a20 + b23 * a30;\n dest[9] = b20 * a01 + b21 * a11 + b22 * a21 + b23 * a31;\n dest[10] = b20 * a02 + b21 * a12 + b22 * a22 + b23 * a32;\n dest[11] = b20 * a03 + b21 * a13 + b22 * a23 + b23 * a33;\n dest[12] = b30 * a00 + b31 * a10 + b32 * a20 + b33 * a30;\n dest[13] = b30 * a01 + b31 * a11 + b32 * a21 + b33 * a31;\n dest[14] = b30 * a02 + b31 * a12 + b32 * a22 + b33 * a32;\n dest[15] = b30 * a03 + b31 * a13 + b32 * a23 + b33 * a33;\n return dest;\n };\n mat4.multiplyVec3 = function (mat, vec, dest) {\n if (!dest) {\n dest = vec;\n }\n var x = vec[0],\n y = vec[1],\n z = vec[2];\n dest[0] = mat[0] * x + mat[4] * y + mat[8] * z + mat[12];\n dest[1] = mat[1] * x + mat[5] * y + mat[9] * z + mat[13];\n dest[2] = mat[2] * x + mat[6] * y + mat[10] * z + mat[14];\n return dest;\n };\n mat4.multiplyVec4 = function (mat, vec, dest) {\n if (!dest) {\n dest = vec;\n }\n var x = vec[0],\n y = vec[1],\n z = vec[2],\n w = vec[3];\n dest[0] = mat[0] * x + mat[4] * y + mat[8] * z + mat[12] * w;\n dest[1] = mat[1] * x + mat[5] * y + mat[9] * z + mat[13] * w;\n dest[2] = mat[2] * x + mat[6] * y + mat[10] * z + mat[14] * w;\n dest[3] = mat[3] * x + mat[7] * y + mat[11] * z + mat[15] * w;\n return dest;\n };\n mat4.translate = function (mat, vec, dest) {\n var x = vec[0],\n y = vec[1],\n z = vec[2],\n a00,\n a01,\n a02,\n a03,\n a10,\n a11,\n a12,\n a13,\n a20,\n a21,\n a22,\n a23;\n if (!dest || mat === dest) {\n mat[12] = mat[0] * x + mat[4] * y + mat[8] * z + mat[12];\n mat[13] = mat[1] * x + mat[5] * y + mat[9] * z + mat[13];\n mat[14] = mat[2] * x + mat[6] * y + mat[10] * z + mat[14];\n mat[15] = mat[3] * x + mat[7] * y + mat[11] * z + mat[15];\n return mat;\n }\n a00 = mat[0];\n a01 = mat[1];\n a02 = mat[2];\n a03 = mat[3];\n a10 = mat[4];\n a11 = mat[5];\n a12 = mat[6];\n a13 = mat[7];\n a20 = mat[8];\n a21 = mat[9];\n a22 = mat[10];\n a23 = mat[11];\n dest[0] = a00;\n dest[1] = a01;\n dest[2] = a02;\n dest[3] = a03;\n dest[4] = a10;\n dest[5] = a11;\n dest[6] = a12;\n dest[7] = a13;\n dest[8] = a20;\n dest[9] = a21;\n dest[10] = a22;\n dest[11] = a23;\n dest[12] = a00 * x + a10 * y + a20 * z + mat[12];\n dest[13] = a01 * x + a11 * y + a21 * z + mat[13];\n dest[14] = a02 * x + a12 * y + a22 * z + mat[14];\n dest[15] = a03 * x + a13 * y + a23 * z + mat[15];\n return dest;\n };\n mat4.scale = function (mat, vec, dest) {\n var x = vec[0],\n y = vec[1],\n z = vec[2];\n if (!dest || mat === dest) {\n mat[0] *= x;\n mat[1] *= x;\n mat[2] *= x;\n mat[3] *= x;\n mat[4] *= y;\n mat[5] *= y;\n mat[6] *= y;\n mat[7] *= y;\n mat[8] *= z;\n mat[9] *= z;\n mat[10] *= z;\n mat[11] *= z;\n return mat;\n }\n dest[0] = mat[0] * x;\n dest[1] = mat[1] * x;\n dest[2] = mat[2] * x;\n dest[3] = mat[3] * x;\n dest[4] = mat[4] * y;\n dest[5] = mat[5] * y;\n dest[6] = mat[6] * y;\n dest[7] = mat[7] * y;\n dest[8] = mat[8] * z;\n dest[9] = mat[9] * z;\n dest[10] = mat[10] * z;\n dest[11] = mat[11] * z;\n dest[12] = mat[12];\n dest[13] = mat[13];\n dest[14] = mat[14];\n dest[15] = mat[15];\n return dest;\n };\n mat4.rotate = function (mat, angle, axis, dest) {\n var x = axis[0],\n y = axis[1],\n z = axis[2],\n len = Math.sqrt(x * x + y * y + z * z),\n s,\n c,\n t,\n a00,\n a01,\n a02,\n a03,\n a10,\n a11,\n a12,\n a13,\n a20,\n a21,\n a22,\n a23,\n b00,\n b01,\n b02,\n b10,\n b11,\n b12,\n b20,\n b21,\n b22;\n if (!len) {\n return null;\n }\n if (len !== 1) {\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n }\n s = Math.sin(angle);\n c = Math.cos(angle);\n t = 1 - c;\n a00 = mat[0];\n a01 = mat[1];\n a02 = mat[2];\n a03 = mat[3];\n a10 = mat[4];\n a11 = mat[5];\n a12 = mat[6];\n a13 = mat[7];\n a20 = mat[8];\n a21 = mat[9];\n a22 = mat[10];\n a23 = mat[11];\n b00 = x * x * t + c;\n b01 = y * x * t + z * s;\n b02 = z * x * t - y * s;\n b10 = x * y * t - z * s;\n b11 = y * y * t + c;\n b12 = z * y * t + x * s;\n b20 = x * z * t + y * s;\n b21 = y * z * t - x * s;\n b22 = z * z * t + c;\n if (!dest) {\n dest = mat;\n } else if (mat !== dest) {\n dest[12] = mat[12];\n dest[13] = mat[13];\n dest[14] = mat[14];\n dest[15] = mat[15];\n }\n dest[0] = a00 * b00 + a10 * b01 + a20 * b02;\n dest[1] = a01 * b00 + a11 * b01 + a21 * b02;\n dest[2] = a02 * b00 + a12 * b01 + a22 * b02;\n dest[3] = a03 * b00 + a13 * b01 + a23 * b02;\n dest[4] = a00 * b10 + a10 * b11 + a20 * b12;\n dest[5] = a01 * b10 + a11 * b11 + a21 * b12;\n dest[6] = a02 * b10 + a12 * b11 + a22 * b12;\n dest[7] = a03 * b10 + a13 * b11 + a23 * b12;\n dest[8] = a00 * b20 + a10 * b21 + a20 * b22;\n dest[9] = a01 * b20 + a11 * b21 + a21 * b22;\n dest[10] = a02 * b20 + a12 * b21 + a22 * b22;\n dest[11] = a03 * b20 + a13 * b21 + a23 * b22;\n return dest;\n };\n mat4.rotateX = function (mat, angle, dest) {\n var s = Math.sin(angle),\n c = Math.cos(angle),\n a10 = mat[4],\n a11 = mat[5],\n a12 = mat[6],\n a13 = mat[7],\n a20 = mat[8],\n a21 = mat[9],\n a22 = mat[10],\n a23 = mat[11];\n if (!dest) {\n dest = mat;\n } else if (mat !== dest) {\n dest[0] = mat[0];\n dest[1] = mat[1];\n dest[2] = mat[2];\n dest[3] = mat[3];\n dest[12] = mat[12];\n dest[13] = mat[13];\n dest[14] = mat[14];\n dest[15] = mat[15];\n }\n dest[4] = a10 * c + a20 * s;\n dest[5] = a11 * c + a21 * s;\n dest[6] = a12 * c + a22 * s;\n dest[7] = a13 * c + a23 * s;\n dest[8] = a10 * -s + a20 * c;\n dest[9] = a11 * -s + a21 * c;\n dest[10] = a12 * -s + a22 * c;\n dest[11] = a13 * -s + a23 * c;\n return dest;\n };\n mat4.rotateY = function (mat, angle, dest) {\n var s = Math.sin(angle),\n c = Math.cos(angle),\n a00 = mat[0],\n a01 = mat[1],\n a02 = mat[2],\n a03 = mat[3],\n a20 = mat[8],\n a21 = mat[9],\n a22 = mat[10],\n a23 = mat[11];\n if (!dest) {\n dest = mat;\n } else if (mat !== dest) {\n dest[4] = mat[4];\n dest[5] = mat[5];\n dest[6] = mat[6];\n dest[7] = mat[7];\n dest[12] = mat[12];\n dest[13] = mat[13];\n dest[14] = mat[14];\n dest[15] = mat[15];\n }\n dest[0] = a00 * c + a20 * -s;\n dest[1] = a01 * c + a21 * -s;\n dest[2] = a02 * c + a22 * -s;\n dest[3] = a03 * c + a23 * -s;\n dest[8] = a00 * s + a20 * c;\n dest[9] = a01 * s + a21 * c;\n dest[10] = a02 * s + a22 * c;\n dest[11] = a03 * s + a23 * c;\n return dest;\n };\n mat4.rotateZ = function (mat, angle, dest) {\n var s = Math.sin(angle),\n c = Math.cos(angle),\n a00 = mat[0],\n a01 = mat[1],\n a02 = mat[2],\n a03 = mat[3],\n a10 = mat[4],\n a11 = mat[5],\n a12 = mat[6],\n a13 = mat[7];\n if (!dest) {\n dest = mat;\n } else if (mat !== dest) {\n dest[8] = mat[8];\n dest[9] = mat[9];\n dest[10] = mat[10];\n dest[11] = mat[11];\n dest[12] = mat[12];\n dest[13] = mat[13];\n dest[14] = mat[14];\n dest[15] = mat[15];\n }\n dest[0] = a00 * c + a10 * s;\n dest[1] = a01 * c + a11 * s;\n dest[2] = a02 * c + a12 * s;\n dest[3] = a03 * c + a13 * s;\n dest[4] = a00 * -s + a10 * c;\n dest[5] = a01 * -s + a11 * c;\n dest[6] = a02 * -s + a12 * c;\n dest[7] = a03 * -s + a13 * c;\n return dest;\n };\n mat4.frustum = function (left, right, bottom, top, near, far, dest) {\n if (!dest) {\n dest = mat4.create();\n }\n var rl = right - left,\n tb = top - bottom,\n fn = far - near;\n dest[0] = (near * 2) / rl;\n dest[1] = 0;\n dest[2] = 0;\n dest[3] = 0;\n dest[4] = 0;\n dest[5] = (near * 2) / tb;\n dest[6] = 0;\n dest[7] = 0;\n dest[8] = (right + left) / rl;\n dest[9] = (top + bottom) / tb;\n dest[10] = -(far + near) / fn;\n dest[11] = -1;\n dest[12] = 0;\n dest[13] = 0;\n dest[14] = -(far * near * 2) / fn;\n dest[15] = 0;\n return dest;\n };\n mat4.perspective = function (fovy, aspect, near, far, dest) {\n var top = near * Math.tan((fovy * Math.PI) / 360),\n right = top * aspect;\n return mat4.frustum(-right, right, -top, top, near, far, dest);\n };\n mat4.ortho = function (left, right, bottom, top, near, far, dest) {\n if (!dest) {\n dest = mat4.create();\n }\n var rl = right - left,\n tb = top - bottom,\n fn = far - near;\n dest[0] = 2 / rl;\n dest[1] = 0;\n dest[2] = 0;\n dest[3] = 0;\n dest[4] = 0;\n dest[5] = 2 / tb;\n dest[6] = 0;\n dest[7] = 0;\n dest[8] = 0;\n dest[9] = 0;\n dest[10] = -2 / fn;\n dest[11] = 0;\n dest[12] = -(left + right) / rl;\n dest[13] = -(top + bottom) / tb;\n dest[14] = -(far + near) / fn;\n dest[15] = 1;\n return dest;\n };\n mat4.lookAt = function (eye, center, up, dest) {\n if (!dest) {\n dest = mat4.create();\n }\n var x0,\n x1,\n x2,\n y0,\n y1,\n y2,\n z0,\n z1,\n z2,\n len,\n eyex = eye[0],\n eyey = eye[1],\n eyez = eye[2],\n upx = up[0],\n upy = up[1],\n upz = up[2],\n centerx = center[0],\n centery = center[1],\n centerz = center[2];\n if (eyex === centerx && eyey === centery && eyez === centerz) {\n return mat4.identity(dest);\n }\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n len = 1 / Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2);\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n len = Math.sqrt(y0 * y0 + y1 * y1 + y2 * y2);\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n dest[0] = x0;\n dest[1] = y0;\n dest[2] = z0;\n dest[3] = 0;\n dest[4] = x1;\n dest[5] = y1;\n dest[6] = z1;\n dest[7] = 0;\n dest[8] = x2;\n dest[9] = y2;\n dest[10] = z2;\n dest[11] = 0;\n dest[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n dest[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n dest[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n dest[15] = 1;\n return dest;\n };\n mat4.fromRotationTranslation = function (quat, vec, dest) {\n if (!dest) {\n dest = mat4.create();\n }\n var x = quat[0],\n y = quat[1],\n z = quat[2],\n w = quat[3],\n x2 = x + x,\n y2 = y + y,\n z2 = z + z,\n xx = x * x2,\n xy = x * y2,\n xz = x * z2,\n yy = y * y2,\n yz = y * z2,\n zz = z * z2,\n wx = w * x2,\n wy = w * y2,\n wz = w * z2;\n dest[0] = 1 - (yy + zz);\n dest[1] = xy + wz;\n dest[2] = xz - wy;\n dest[3] = 0;\n dest[4] = xy - wz;\n dest[5] = 1 - (xx + zz);\n dest[6] = yz + wx;\n dest[7] = 0;\n dest[8] = xz + wy;\n dest[9] = yz - wx;\n dest[10] = 1 - (xx + yy);\n dest[11] = 0;\n dest[12] = vec[0];\n dest[13] = vec[1];\n dest[14] = vec[2];\n dest[15] = 1;\n return dest;\n };\n mat4.str = function (mat) {\n return (\n \"[\" +\n mat[0] +\n \", \" +\n mat[1] +\n \", \" +\n mat[2] +\n \", \" +\n mat[3] +\n \", \" +\n mat[4] +\n \", \" +\n mat[5] +\n \", \" +\n mat[6] +\n \", \" +\n mat[7] +\n \", \" +\n mat[8] +\n \", \" +\n mat[9] +\n \", \" +\n mat[10] +\n \", \" +\n mat[11] +\n \", \" +\n mat[12] +\n \", \" +\n mat[13] +\n \", \" +\n mat[14] +\n \", \" +\n mat[15] +\n \"]\"\n );\n };\n quat4.create = function (quat) {\n var dest = new MatrixArray(4);\n if (quat) {\n dest[0] = quat[0];\n dest[1] = quat[1];\n dest[2] = quat[2];\n dest[3] = quat[3];\n }\n return dest;\n };\n quat4.set = function (quat, dest) {\n dest[0] = quat[0];\n dest[1] = quat[1];\n dest[2] = quat[2];\n dest[3] = quat[3];\n return dest;\n };\n quat4.calculateW = function (quat, dest) {\n var x = quat[0],\n y = quat[1],\n z = quat[2];\n if (!dest || quat === dest) {\n quat[3] = -Math.sqrt(Math.abs(1 - x * x - y * y - z * z));\n return quat;\n }\n dest[0] = x;\n dest[1] = y;\n dest[2] = z;\n dest[3] = -Math.sqrt(Math.abs(1 - x * x - y * y - z * z));\n return dest;\n };\n quat4.dot = function (quat, quat2) {\n return (\n quat[0] * quat2[0] +\n quat[1] * quat2[1] +\n quat[2] * quat2[2] +\n quat[3] * quat2[3]\n );\n };\n quat4.inverse = function (quat, dest) {\n var q0 = quat[0],\n q1 = quat[1],\n q2 = quat[2],\n q3 = quat[3],\n dot = q0 * q0 + q1 * q1 + q2 * q2 + q3 * q3,\n invDot = dot ? 1 / dot : 0;\n if (!dest || quat === dest) {\n quat[0] *= -invDot;\n quat[1] *= -invDot;\n quat[2] *= -invDot;\n quat[3] *= invDot;\n return quat;\n }\n dest[0] = -quat[0] * invDot;\n dest[1] = -quat[1] * invDot;\n dest[2] = -quat[2] * invDot;\n dest[3] = quat[3] * invDot;\n return dest;\n };\n quat4.conjugate = function (quat, dest) {\n if (!dest || quat === dest) {\n quat[0] *= -1;\n quat[1] *= -1;\n quat[2] *= -1;\n return quat;\n }\n dest[0] = -quat[0];\n dest[1] = -quat[1];\n dest[2] = -quat[2];\n dest[3] = quat[3];\n return dest;\n };\n quat4.length = function (quat) {\n var x = quat[0],\n y = quat[1],\n z = quat[2],\n w = quat[3];\n return Math.sqrt(x * x + y * y + z * z + w * w);\n };\n quat4.normalize = function (quat, dest) {\n if (!dest) {\n dest = quat;\n }\n var x = quat[0],\n y = quat[1],\n z = quat[2],\n w = quat[3],\n len = Math.sqrt(x * x + y * y + z * z + w * w);\n if (len === 0) {\n dest[0] = 0;\n dest[1] = 0;\n dest[2] = 0;\n dest[3] = 0;\n return dest;\n }\n len = 1 / len;\n dest[0] = x * len;\n dest[1] = y * len;\n dest[2] = z * len;\n dest[3] = w * len;\n return dest;\n };\n quat4.add = function (quat, quat2, dest) {\n if (!dest || quat === dest) {\n quat[0] += quat2[0];\n quat[1] += quat2[1];\n quat[2] += quat2[2];\n quat[3] += quat2[3];\n return quat;\n }\n dest[0] = quat[0] + quat2[0];\n dest[1] = quat[1] + quat2[1];\n dest[2] = quat[2] + quat2[2];\n dest[3] = quat[3] + quat2[3];\n return dest;\n };\n quat4.multiply = function (quat, quat2, dest) {\n if (!dest) {\n dest = quat;\n }\n var qax = quat[0],\n qay = quat[1],\n qaz = quat[2],\n qaw = quat[3],\n qbx = quat2[0],\n qby = quat2[1],\n qbz = quat2[2],\n qbw = quat2[3];\n dest[0] = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n dest[1] = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n dest[2] = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n dest[3] = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n return dest;\n };\n quat4.multiplyVec3 = function (quat, vec, dest) {\n if (!dest) {\n dest = vec;\n }\n var x = vec[0],\n y = vec[1],\n z = vec[2],\n qx = quat[0],\n qy = quat[1],\n qz = quat[2],\n qw = quat[3],\n ix = qw * x + qy * z - qz * y,\n iy = qw * y + qz * x - qx * z,\n iz = qw * z + qx * y - qy * x,\n iw = -qx * x - qy * y - qz * z;\n dest[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n dest[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n dest[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n return dest;\n };\n quat4.scale = function (quat, val, dest) {\n if (!dest || quat === dest) {\n quat[0] *= val;\n quat[1] *= val;\n quat[2] *= val;\n quat[3] *= val;\n return quat;\n }\n dest[0] = quat[0] * val;\n dest[1] = quat[1] * val;\n dest[2] = quat[2] * val;\n dest[3] = quat[3] * val;\n return dest;\n };\n quat4.toMat3 = function (quat, dest) {\n if (!dest) {\n dest = mat3.create();\n }\n var x = quat[0],\n y = quat[1],\n z = quat[2],\n w = quat[3],\n x2 = x + x,\n y2 = y + y,\n z2 = z + z,\n xx = x * x2,\n xy = x * y2,\n xz = x * z2,\n yy = y * y2,\n yz = y * z2,\n zz = z * z2,\n wx = w * x2,\n wy = w * y2,\n wz = w * z2;\n dest[0] = 1 - (yy + zz);\n dest[1] = xy + wz;\n dest[2] = xz - wy;\n dest[3] = xy - wz;\n dest[4] = 1 - (xx + zz);\n dest[5] = yz + wx;\n dest[6] = xz + wy;\n dest[7] = yz - wx;\n dest[8] = 1 - (xx + yy);\n return dest;\n };\n quat4.toMat4 = function (quat, dest) {\n if (!dest) {\n dest = mat4.create();\n }\n var x = quat[0],\n y = quat[1],\n z = quat[2],\n w = quat[3],\n x2 = x + x,\n y2 = y + y,\n z2 = z + z,\n xx = x * x2,\n xy = x * y2,\n xz = x * z2,\n yy = y * y2,\n yz = y * z2,\n zz = z * z2,\n wx = w * x2,\n wy = w * y2,\n wz = w * z2;\n dest[0] = 1 - (yy + zz);\n dest[1] = xy + wz;\n dest[2] = xz - wy;\n dest[3] = 0;\n dest[4] = xy - wz;\n dest[5] = 1 - (xx + zz);\n dest[6] = yz + wx;\n dest[7] = 0;\n dest[8] = xz + wy;\n dest[9] = yz - wx;\n dest[10] = 1 - (xx + yy);\n dest[11] = 0;\n dest[12] = 0;\n dest[13] = 0;\n dest[14] = 0;\n dest[15] = 1;\n return dest;\n };\n quat4.slerp = function (quat, quat2, slerp, dest) {\n if (!dest) {\n dest = quat;\n }\n var cosHalfTheta =\n quat[0] * quat2[0] +\n quat[1] * quat2[1] +\n quat[2] * quat2[2] +\n quat[3] * quat2[3],\n halfTheta,\n sinHalfTheta,\n ratioA,\n ratioB;\n if (Math.abs(cosHalfTheta) >= 1) {\n if (dest !== quat) {\n dest[0] = quat[0];\n dest[1] = quat[1];\n dest[2] = quat[2];\n dest[3] = quat[3];\n }\n return dest;\n }\n halfTheta = Math.acos(cosHalfTheta);\n sinHalfTheta = Math.sqrt(1 - cosHalfTheta * cosHalfTheta);\n if (Math.abs(sinHalfTheta) < 0.001) {\n dest[0] = quat[0] * 0.5 + quat2[0] * 0.5;\n dest[1] = quat[1] * 0.5 + quat2[1] * 0.5;\n dest[2] = quat[2] * 0.5 + quat2[2] * 0.5;\n dest[3] = quat[3] * 0.5 + quat2[3] * 0.5;\n return dest;\n }\n ratioA = Math.sin((1 - slerp) * halfTheta) / sinHalfTheta;\n ratioB = Math.sin(slerp * halfTheta) / sinHalfTheta;\n dest[0] = quat[0] * ratioA + quat2[0] * ratioB;\n dest[1] = quat[1] * ratioA + quat2[1] * ratioB;\n dest[2] = quat[2] * ratioA + quat2[2] * ratioB;\n dest[3] = quat[3] * ratioA + quat2[3] * ratioB;\n return dest;\n };\n quat4.str = function (quat) {\n return (\n \"[\" + quat[0] + \", \" + quat[1] + \", \" + quat[2] + \", \" + quat[3] + \"]\"\n );\n };\n return { vec3: vec3, mat3: mat3, mat4: mat4, quat4: quat4 };\n})();\nfunction _glBegin(mode) {\n GLImmediate.enabledClientAttributes_preBegin =\n GLImmediate.enabledClientAttributes;\n GLImmediate.enabledClientAttributes = [];\n GLImmediate.clientAttributes_preBegin = GLImmediate.clientAttributes;\n GLImmediate.clientAttributes = [];\n for (var i = 0; i < GLImmediate.clientAttributes_preBegin.length; i++) {\n GLImmediate.clientAttributes.push({});\n }\n GLImmediate.mode = mode;\n GLImmediate.vertexCounter = 0;\n var components = (GLImmediate.rendererComponents = []);\n for (var i = 0; i < GLImmediate.NUM_ATTRIBUTES; i++) {\n components[i] = 0;\n }\n GLImmediate.rendererComponentPointer = 0;\n GLImmediate.vertexData = GLImmediate.tempData;\n}\nfunction _glBlendFunc(x0, x1) {\n GLctx[\"blendFunc\"](x0, x1);\n}\nfunction _glClear(x0) {\n GLctx[\"clear\"](x0);\n}\nfunction _glClearColor(x0, x1, x2, x3) {\n GLctx[\"clearColor\"](x0, x1, x2, x3);\n}\nfunction _emscripten_glColor4f(r, g, b, a) {\n r = Math.max(Math.min(r, 1), 0);\n g = Math.max(Math.min(g, 1), 0);\n b = Math.max(Math.min(b, 1), 0);\n a = Math.max(Math.min(a, 1), 0);\n if (GLImmediate.mode >= 0) {\n var start = GLImmediate.vertexCounter << 2;\n GLImmediate.vertexDataU8[start + 0] = r * 255;\n GLImmediate.vertexDataU8[start + 1] = g * 255;\n GLImmediate.vertexDataU8[start + 2] = b * 255;\n GLImmediate.vertexDataU8[start + 3] = a * 255;\n GLImmediate.vertexCounter++;\n GLImmediate.addRendererComponent(GLImmediate.COLOR, 4, GLctx.UNSIGNED_BYTE);\n } else {\n GLImmediate.clientColor[0] = r;\n GLImmediate.clientColor[1] = g;\n GLImmediate.clientColor[2] = b;\n GLImmediate.clientColor[3] = a;\n }\n}\nfunction _glColor3f(r, g, b) {\n _emscripten_glColor4f(r, g, b, 1);\n}\nfunction _glDepthFunc(x0) {\n GLctx[\"depthFunc\"](x0);\n}\nfunction _glEnd() {\n GLImmediate.prepareClientAttributes(\n GLImmediate.rendererComponents[GLImmediate.VERTEX],\n true,\n );\n GLImmediate.firstVertex = 0;\n GLImmediate.lastVertex =\n GLImmediate.vertexCounter / (GLImmediate.stride >> 2);\n GLImmediate.flush();\n GLImmediate.disableBeginEndClientAttributes();\n GLImmediate.mode = -1;\n GLImmediate.enabledClientAttributes =\n GLImmediate.enabledClientAttributes_preBegin;\n GLImmediate.clientAttributes = GLImmediate.clientAttributes_preBegin;\n GLImmediate.currentRenderer = null;\n GLImmediate.modifiedClientAttributes = true;\n}\nfunction _glFinish() {\n GLctx[\"finish\"]();\n}\nfunction _glFlush() {\n GLctx[\"flush\"]();\n}\nfunction _glFrustum(left, right, bottom, top_, nearVal, farVal) {\n GLImmediate.matricesModified = true;\n GLImmediate.matrixVersion[GLImmediate.currentMatrix] =\n (GLImmediate.matrixVersion[GLImmediate.currentMatrix] + 1) | 0;\n GLImmediate.matrixLib.mat4.multiply(\n GLImmediate.matrix[GLImmediate.currentMatrix],\n GLImmediate.matrixLib.mat4.frustum(\n left,\n right,\n bottom,\n top_,\n nearVal,\n farVal,\n ),\n );\n}\nfunction _glLightfv() {\n throw \"glLightfv: TODO\";\n}\nfunction _glLineWidth(x0) {\n GLctx[\"lineWidth\"](x0);\n}\nfunction _glLoadIdentity() {\n GLImmediate.matricesModified = true;\n GLImmediate.matrixVersion[GLImmediate.currentMatrix] =\n (GLImmediate.matrixVersion[GLImmediate.currentMatrix] + 1) | 0;\n GLImmediate.matrixLib.mat4.identity(\n GLImmediate.matrix[GLImmediate.currentMatrix],\n );\n}\nfunction _glMatrixMode(mode) {\n if (mode == 5888) {\n GLImmediate.currentMatrix = 0;\n } else if (mode == 5889) {\n GLImmediate.currentMatrix = 1;\n } else if (mode == 5890) {\n GLImmediate.useTextureMatrix = true;\n GLImmediate.currentMatrix = 2 + GLImmediate.clientActiveTexture;\n } else {\n throw \"Wrong mode \" + mode + \" passed to glMatrixMode\";\n }\n}\nfunction _glNormal3f() {}\nfunction _glOrtho(left, right, bottom, top_, nearVal, farVal) {\n GLImmediate.matricesModified = true;\n GLImmediate.matrixVersion[GLImmediate.currentMatrix] =\n (GLImmediate.matrixVersion[GLImmediate.currentMatrix] + 1) | 0;\n GLImmediate.matrixLib.mat4.multiply(\n GLImmediate.matrix[GLImmediate.currentMatrix],\n GLImmediate.matrixLib.mat4.ortho(\n left,\n right,\n bottom,\n top_,\n nearVal,\n farVal,\n ),\n );\n}\nfunction _glPolygonMode() {}\nfunction _glPolygonOffset(x0, x1) {\n GLctx[\"polygonOffset\"](x0, x1);\n}\nfunction _glPopMatrix() {\n if (GLImmediate.matrixStack[GLImmediate.currentMatrix].length == 0) {\n GL.recordError(1284);\n return;\n }\n GLImmediate.matricesModified = true;\n GLImmediate.matrixVersion[GLImmediate.currentMatrix] =\n (GLImmediate.matrixVersion[GLImmediate.currentMatrix] + 1) | 0;\n GLImmediate.matrix[GLImmediate.currentMatrix] =\n GLImmediate.matrixStack[GLImmediate.currentMatrix].pop();\n}\nfunction _glPushMatrix() {\n GLImmediate.matricesModified = true;\n GLImmediate.matrixVersion[GLImmediate.currentMatrix] =\n (GLImmediate.matrixVersion[GLImmediate.currentMatrix] + 1) | 0;\n GLImmediate.matrixStack[GLImmediate.currentMatrix].push(\n Array.prototype.slice.call(GLImmediate.matrix[GLImmediate.currentMatrix]),\n );\n}\nfunction _glRotated(angle, x, y, z) {\n GLImmediate.matricesModified = true;\n GLImmediate.matrixVersion[GLImmediate.currentMatrix] =\n (GLImmediate.matrixVersion[GLImmediate.currentMatrix] + 1) | 0;\n GLImmediate.matrixLib.mat4.rotate(\n GLImmediate.matrix[GLImmediate.currentMatrix],\n (angle * Math.PI) / 180,\n [x, y, z],\n );\n}\nfunction _glScaled(x, y, z) {\n GLImmediate.matricesModified = true;\n GLImmediate.matrixVersion[GLImmediate.currentMatrix] =\n (GLImmediate.matrixVersion[GLImmediate.currentMatrix] + 1) | 0;\n GLImmediate.matrixLib.mat4.scale(\n GLImmediate.matrix[GLImmediate.currentMatrix],\n [x, y, z],\n );\n}\nfunction _glScalef(x, y, z) {\n GLImmediate.matricesModified = true;\n GLImmediate.matrixVersion[GLImmediate.currentMatrix] =\n (GLImmediate.matrixVersion[GLImmediate.currentMatrix] + 1) | 0;\n GLImmediate.matrixLib.mat4.scale(\n GLImmediate.matrix[GLImmediate.currentMatrix],\n [x, y, z],\n );\n}\nfunction _glShadeModel() {\n warnOnce(\"TODO: glShadeModel\");\n}\nfunction _glTranslated(x, y, z) {\n GLImmediate.matricesModified = true;\n GLImmediate.matrixVersion[GLImmediate.currentMatrix] =\n (GLImmediate.matrixVersion[GLImmediate.currentMatrix] + 1) | 0;\n GLImmediate.matrixLib.mat4.translate(\n GLImmediate.matrix[GLImmediate.currentMatrix],\n [x, y, z],\n );\n}\nfunction _glTranslatef(x, y, z) {\n GLImmediate.matricesModified = true;\n GLImmediate.matrixVersion[GLImmediate.currentMatrix] =\n (GLImmediate.matrixVersion[GLImmediate.currentMatrix] + 1) | 0;\n GLImmediate.matrixLib.mat4.translate(\n GLImmediate.matrix[GLImmediate.currentMatrix],\n [x, y, z],\n );\n}\nfunction _glVertex3f(x, y, z) {\n assert(GLImmediate.mode >= 0);\n GLImmediate.vertexData[GLImmediate.vertexCounter++] = x;\n GLImmediate.vertexData[GLImmediate.vertexCounter++] = y;\n GLImmediate.vertexData[GLImmediate.vertexCounter++] = z;\n GLImmediate.vertexData[GLImmediate.vertexCounter++] = 1;\n assert(GLImmediate.vertexCounter << 2 < GL.MAX_TEMP_BUFFER_SIZE);\n GLImmediate.addRendererComponent(GLImmediate.VERTEX, 4, GLctx.FLOAT);\n}\nfunction _glViewport(x0, x1, x2, x3) {\n GLctx[\"viewport\"](x0, x1, x2, x3);\n}\nfunction _glinit(width, height, depth, flags, no) {\n var canvas;\n if (no == -1) canvas = Module[\"canvas\"];\n else canvas = document.getElementById(\"gl3d_\" + (no + 1));\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(function (w, h) {\n if (!SDL.settingVideoMode) {\n SDL.receiveEvent({ type: \"resize\", w: w, h: h });\n }\n });\n }\n if (width !== canvas.width || height !== canvas.height) {\n SDL.settingVideoMode = true;\n Browser.setCanvasSize(width, height);\n SDL.settingVideoMode = false;\n }\n if (SDL.screen) {\n SDL.freeSurface(SDL.screen);\n assert(!SDL.screen);\n }\n if (SDL.GL) flags = flags | 67108864;\n flags = flags || 0;\n var is_SDL_HWSURFACE = flags & 1;\n var is_SDL_HWPALETTE = flags & 2097152;\n var is_SDL_OPENGL = flags & 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] = flags;\n HEAP32[(surf + 4) >> 2] = pixelFormat;\n HEAP32[(surf + 8) >> 2] = width;\n HEAP32[(surf + 12) >> 2] = height;\n HEAP32[(surf + 16) >> 2] = width * bpp;\n HEAP32[(surf + 20) >> 2] = buffer;\n HEAP32[(surf + 36) >> 2] = 0;\n HEAP32[(surf + 40) >> 2] = 0;\n HEAP32[(surf + 44) >> 2] = Module[\"canvas\"].width;\n HEAP32[(surf + 48) >> 2] = Module[\"canvas\"].height;\n HEAP32[(surf + 56) >> 2] = 1;\n HEAP32[pixelFormat >> 2] = -2042224636;\n HEAP32[(pixelFormat + 4) >> 2] = 0;\n HEAP8[(pixelFormat + 8) >> 0] = bpp * 8;\n HEAP8[(pixelFormat + 9) >> 0] = bpp;\n SDL.GL = SDL.GL || is_SDL_OPENGL;\n var webGLContextAttributes = {\n antialias: SDL.glAttributes[13] != 0 && SDL.glAttributes[14] > 1,\n depth: SDL.glAttributes[6] > 0,\n stencil: SDL.glAttributes[7] > 0,\n };\n var ctx;\n var contextAttributes = { antialias: false, alpha: false };\n if (webGLContextAttributes) {\n for (var attribute in webGLContextAttributes) {\n contextAttributes[attribute] = webGLContextAttributes[attribute];\n }\n }\n var contextHandle = GL.createContext(canvas, contextAttributes);\n if (contextHandle) {\n ctx = GL.getContext(contextHandle).GLctx;\n }\n Module.ctx = ctx;\n GL.makeContextCurrent(contextHandle);\n Module.useWebGL = true;\n Browser.moduleContextCreatedCallbacks.forEach(function (callback) {\n callback();\n });\n Browser.init();\n SDL.surfaces[surf] = {\n width: width,\n height: height,\n canvas: canvas,\n ctx: ctx,\n surf: surf,\n buffer: buffer,\n pixelFormat: pixelFormat,\n alpha: 255,\n flags: flags,\n locked: 0,\n usePageCanvas: true,\n source: \"screen\",\n isFlagSet: function (flag) {\n return flags & flag;\n },\n };\n SDL.screen = surf;\n return contextHandle;\n}\nfunction _kill(pid, sig) {\n err(\"Calling stub instead of kill()\");\n ___setErrNo(ERRNO_CODES.EPERM);\n return -1;\n}\nfunction _llvm_bswap_i64(l, h) {\n var retl = _llvm_bswap_i32(h) >>> 0;\n var reth = _llvm_bswap_i32(l) >>> 0;\n return (setTempRet0(reth), retl) | 0;\n}\nvar _llvm_cos_f64 = Math_cos;\nfunction _llvm_exp2_f32(x) {\n return Math.pow(2, x);\n}\nfunction _llvm_exp2_f64(a0) {\n return _llvm_exp2_f32(a0);\n}\nfunction _llvm_log10_f32(x) {\n return Math.log(x) / Math.LN10;\n}\nfunction _llvm_log10_f64(a0) {\n return _llvm_log10_f32(a0);\n}\nfunction _llvm_log2_f32(x) {\n return Math.log(x) / Math.LN2;\n}\nfunction _llvm_log2_f64(a0) {\n return _llvm_log2_f32(a0);\n}\nvar _llvm_sin_f64 = Math_sin;\nfunction _llvm_stackrestore(p) {\n var self = _llvm_stacksave;\n var ret = self.LLVM_SAVEDSTACKS[p];\n self.LLVM_SAVEDSTACKS.splice(p, 1);\n stackRestore(ret);\n}\nfunction _llvm_stacksave() {\n var self = _llvm_stacksave;\n if (!self.LLVM_SAVEDSTACKS) {\n self.LLVM_SAVEDSTACKS = [];\n }\n self.LLVM_SAVEDSTACKS.push(stackSave());\n return self.LLVM_SAVEDSTACKS.length - 1;\n}\nfunction _llvm_trap() {\n abort(\"trap!\");\n}\nvar _llvm_trunc_f64 = Math_trunc;\nvar ___tm_current = 5313824;\nvar ___tm_timezone = (stringToUTF8(\"GMT\", 5313872, 4), 5313872);\nfunction _tzset() {\n if (_tzset.called) return;\n _tzset.called = true;\n HEAP32[__get_timezone() >> 2] = new Date().getTimezoneOffset() * 60;\n var winter = new Date(2e3, 0, 1);\n var summer = new Date(2e3, 6, 1);\n HEAP32[__get_daylight() >> 2] = Number(\n winter.getTimezoneOffset() != summer.getTimezoneOffset(),\n );\n function extractZone(date) {\n var match = date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);\n return match ? match[1] : \"GMT\";\n }\n var winterName = extractZone(winter);\n var summerName = extractZone(summer);\n var winterNamePtr = allocate(\n intArrayFromString(winterName),\n \"i8\",\n ALLOC_NORMAL,\n );\n var summerNamePtr = allocate(\n intArrayFromString(summerName),\n \"i8\",\n ALLOC_NORMAL,\n );\n if (summer.getTimezoneOffset() < winter.getTimezoneOffset()) {\n HEAP32[__get_tzname() >> 2] = winterNamePtr;\n HEAP32[(__get_tzname() + 4) >> 2] = summerNamePtr;\n } else {\n HEAP32[__get_tzname() >> 2] = summerNamePtr;\n HEAP32[(__get_tzname() + 4) >> 2] = winterNamePtr;\n }\n}\nfunction _localtime_r(time, tmPtr) {\n _tzset();\n var date = new Date(HEAP32[time >> 2] * 1e3);\n HEAP32[tmPtr >> 2] = date.getSeconds();\n HEAP32[(tmPtr + 4) >> 2] = date.getMinutes();\n HEAP32[(tmPtr + 8) >> 2] = date.getHours();\n HEAP32[(tmPtr + 12) >> 2] = date.getDate();\n HEAP32[(tmPtr + 16) >> 2] = date.getMonth();\n HEAP32[(tmPtr + 20) >> 2] = date.getFullYear() - 1900;\n HEAP32[(tmPtr + 24) >> 2] = date.getDay();\n var start = new Date(date.getFullYear(), 0, 1);\n var yday = ((date.getTime() - start.getTime()) / (1e3 * 60 * 60 * 24)) | 0;\n HEAP32[(tmPtr + 28) >> 2] = yday;\n HEAP32[(tmPtr + 36) >> 2] = -(date.getTimezoneOffset() * 60);\n var summerOffset = new Date(2e3, 6, 1).getTimezoneOffset();\n var winterOffset = start.getTimezoneOffset();\n var dst =\n (summerOffset != winterOffset &&\n date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;\n HEAP32[(tmPtr + 32) >> 2] = dst;\n var zonePtr = HEAP32[(__get_tzname() + (dst ? 4 : 0)) >> 2];\n HEAP32[(tmPtr + 40) >> 2] = zonePtr;\n return tmPtr;\n}\nfunction _localtime(time) {\n return _localtime_r(time, ___tm_current);\n}\nfunction _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.set(HEAPU8.subarray(src, src + num), dest);\n}\nfunction _mp_js_hook() {\n if (typeof window === \"undefined\") {\n var mp_interrupt_char = Module.ccall(\n \"mp_hal_get_interrupt_char\",\n \"number\",\n [\"number\"],\n [\"null\"],\n );\n var fs = require(\"fs\");\n var buf = Buffer.alloc(1);\n try {\n var n = fs.readSync(process.stdin.fd, buf, 0, 1);\n if (n > 0) {\n if (buf[0] == mp_interrupt_char) {\n Module.ccall(\"mp_keyboard_interrupt\", \"null\", [\"null\"], [\"null\"]);\n } else {\n process.stdout.write(String.fromCharCode(buf[0]));\n }\n }\n } catch (e) {\n if (e.code === \"EAGAIN\") {\n } else {\n throw e;\n }\n }\n }\n}\nfunction _mp_js_ticks_ms() {\n return new Date().getTime();\n}\nfunction _usleep(useconds) {\n var msec = useconds / 1e3;\n if (\n (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) &&\n self[\"performance\"] &&\n self[\"performance\"][\"now\"]\n ) {\n var start = self[\"performance\"][\"now\"]();\n while (self[\"performance\"][\"now\"]() - start < msec) {}\n } else {\n var start = Date.now();\n while (Date.now() - start < msec) {}\n }\n return 0;\n}\nfunction _nanosleep(rqtp, rmtp) {\n if (rqtp === 0) {\n ___setErrNo(22);\n return -1;\n }\n var seconds = HEAP32[rqtp >> 2];\n var nanoseconds = HEAP32[(rqtp + 4) >> 2];\n if (nanoseconds < 0 || nanoseconds > 999999999 || seconds < 0) {\n ___setErrNo(22);\n return -1;\n }\n if (rmtp !== 0) {\n HEAP32[rmtp >> 2] = 0;\n HEAP32[(rmtp + 4) >> 2] = 0;\n }\n return _usleep(seconds * 1e6 + nanoseconds / 1e3);\n}\nfunction _popen() {\n err(\"missing function: popen\");\n abort(-1);\n}\nfunction _pthread_cond_wait() {\n return 0;\n}\nfunction _raise(sig) {\n err(\"Calling stub instead of raise()\");\n ___setErrNo(ERRNO_CODES.ENOSYS);\n warnOnce(\"raise() returning an error as we do not support it\");\n return -1;\n}\nfunction abortOnCannotGrowMemory(requestedSize) {\n abort(\n \"Cannot enlarge memory arrays to size \" +\n requestedSize +\n \" bytes (OOM). Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value \" +\n HEAP8.length +\n \", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 \",\n );\n}\nfunction _emscripten_resize_heap(requestedSize) {\n abortOnCannotGrowMemory(requestedSize);\n}\nfunction _setenv(envname, envval, overwrite) {\n if (envname === 0) {\n ___setErrNo(22);\n return -1;\n }\n var name = UTF8ToString(envname);\n var val = UTF8ToString(envval);\n if (name === \"\" || name.indexOf(\"=\") !== -1) {\n ___setErrNo(22);\n return -1;\n }\n if (ENV.hasOwnProperty(name) && !overwrite) return 0;\n ENV[name] = val;\n ___buildEnvironment(__get_environ());\n return 0;\n}\nfunction _sigaction(signum, act, oldact) {\n err(\"Calling stub instead of sigaction()\");\n return 0;\n}\nfunction _sigemptyset(set) {\n HEAP32[set >> 2] = 0;\n return 0;\n}\nvar _sqrt = Math_sqrt;\nfunction __isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\nfunction __arraySum(array, index) {\n var sum = 0;\n for (var i = 0; i <= index; sum += array[i++]);\n return sum;\n}\nvar __MONTH_DAYS_LEAP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar __MONTH_DAYS_REGULAR = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction __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)[\n currentMonth\n ];\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}\nfunction _strftime(s, maxsize, format, tm) {\n var tm_zone = HEAP32[(tm + 40) >> 2];\n var date = {\n tm_sec: HEAP32[tm >> 2],\n tm_min: HEAP32[(tm + 4) >> 2],\n tm_hour: HEAP32[(tm + 8) >> 2],\n tm_mday: HEAP32[(tm + 12) >> 2],\n tm_mon: HEAP32[(tm + 16) >> 2],\n tm_year: HEAP32[(tm + 20) >> 2],\n tm_wday: HEAP32[(tm + 24) >> 2],\n tm_yday: HEAP32[(tm + 28) >> 2],\n tm_isdst: HEAP32[(tm + 32) >> 2],\n tm_gmtoff: HEAP32[(tm + 36) >> 2],\n tm_zone: tm_zone ? UTF8ToString(tm_zone) : \"\",\n };\n var pattern = UTF8ToString(format);\n var EXPANSION_RULES_1 = {\n \"%c\": \"%a %b %d %H:%M:%S %Y\",\n \"%D\": \"%m/%d/%y\",\n \"%F\": \"%Y-%m-%d\",\n \"%h\": \"%b\",\n \"%r\": \"%I:%M:%S %p\",\n \"%R\": \"%H:%M\",\n \"%T\": \"%H:%M:%S\",\n \"%x\": \"%m/%d/%y\",\n \"%X\": \"%H:%M:%S\",\n \"%Ec\": \"%c\",\n \"%EC\": \"%C\",\n \"%Ex\": \"%m/%d/%y\",\n \"%EX\": \"%H:%M:%S\",\n \"%Ey\": \"%y\",\n \"%EY\": \"%Y\",\n \"%Od\": \"%d\",\n \"%Oe\": \"%e\",\n \"%OH\": \"%H\",\n \"%OI\": \"%I\",\n \"%Om\": \"%m\",\n \"%OM\": \"%M\",\n \"%OS\": \"%S\",\n \"%Ou\": \"%u\",\n \"%OU\": \"%U\",\n \"%OV\": \"%V\",\n \"%Ow\": \"%w\",\n \"%OW\": \"%W\",\n \"%Oy\": \"%y\",\n };\n for (var rule in EXPANSION_RULES_1) {\n pattern = pattern.replace(new RegExp(rule, \"g\"), EXPANSION_RULES_1[rule]);\n }\n var WEEKDAYS = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ];\n var MONTHS = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ];\n function leadingSomething(value, digits, character) {\n var str = typeof value === \"number\" ? value.toString() : value || \"\";\n while (str.length < digits) {\n str = character[0] + str;\n }\n return str;\n }\n function leadingNulls(value, digits) {\n return leadingSomething(value, digits, \"0\");\n }\n function compareByDay(date1, date2) {\n function sgn(value) {\n return value < 0 ? -1 : value > 0 ? 1 : 0;\n }\n var compare;\n if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) {\n if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) {\n compare = sgn(date1.getDate() - date2.getDate());\n }\n }\n return compare;\n }\n function getFirstWeekStartDate(janFourth) {\n switch (janFourth.getDay()) {\n case 0:\n return new Date(janFourth.getFullYear() - 1, 11, 29);\n case 1:\n return janFourth;\n case 2:\n return new Date(janFourth.getFullYear(), 0, 3);\n case 3:\n return new Date(janFourth.getFullYear(), 0, 2);\n case 4:\n return new Date(janFourth.getFullYear(), 0, 1);\n case 5:\n return new Date(janFourth.getFullYear() - 1, 11, 31);\n case 6:\n return new Date(janFourth.getFullYear() - 1, 11, 30);\n }\n }\n function getWeekBasedYear(date) {\n var thisDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday);\n var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4);\n var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4);\n var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);\n var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);\n if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) {\n if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) {\n return thisDate.getFullYear() + 1;\n } else {\n return thisDate.getFullYear();\n }\n } else {\n return thisDate.getFullYear() - 1;\n }\n }\n var EXPANSION_RULES_2 = {\n \"%a\": function (date) {\n return WEEKDAYS[date.tm_wday].substring(0, 3);\n },\n \"%A\": function (date) {\n return WEEKDAYS[date.tm_wday];\n },\n \"%b\": function (date) {\n return MONTHS[date.tm_mon].substring(0, 3);\n },\n \"%B\": function (date) {\n return MONTHS[date.tm_mon];\n },\n \"%C\": function (date) {\n var year = date.tm_year + 1900;\n return leadingNulls((year / 100) | 0, 2);\n },\n \"%d\": function (date) {\n return leadingNulls(date.tm_mday, 2);\n },\n \"%e\": function (date) {\n return leadingSomething(date.tm_mday, 2, \" \");\n },\n \"%g\": function (date) {\n return getWeekBasedYear(date).toString().substring(2);\n },\n \"%G\": function (date) {\n return getWeekBasedYear(date);\n },\n \"%H\": function (date) {\n return leadingNulls(date.tm_hour, 2);\n },\n \"%I\": function (date) {\n var twelveHour = date.tm_hour;\n if (twelveHour == 0) twelveHour = 12;\n else if (twelveHour > 12) twelveHour -= 12;\n return leadingNulls(twelveHour, 2);\n },\n \"%j\": function (date) {\n return leadingNulls(\n date.tm_mday +\n __arraySum(\n __isLeapYear(date.tm_year + 1900)\n ? __MONTH_DAYS_LEAP\n : __MONTH_DAYS_REGULAR,\n date.tm_mon - 1,\n ),\n 3,\n );\n },\n \"%m\": function (date) {\n return leadingNulls(date.tm_mon + 1, 2);\n },\n \"%M\": function (date) {\n return leadingNulls(date.tm_min, 2);\n },\n \"%n\": function () {\n return \"\\n\";\n },\n \"%p\": function (date) {\n if (date.tm_hour >= 0 && date.tm_hour < 12) {\n return \"AM\";\n } else {\n return \"PM\";\n }\n },\n \"%S\": function (date) {\n return leadingNulls(date.tm_sec, 2);\n },\n \"%t\": function () {\n return \"\\t\";\n },\n \"%u\": function (date) {\n return date.tm_wday || 7;\n },\n \"%U\": function (date) {\n var janFirst = new Date(date.tm_year + 1900, 0, 1);\n var firstSunday =\n janFirst.getDay() === 0\n ? janFirst\n : __addDays(janFirst, 7 - janFirst.getDay());\n var endDate = new Date(date.tm_year + 1900, date.tm_mon, date.tm_mday);\n if (compareByDay(firstSunday, endDate) < 0) {\n var februaryFirstUntilEndMonth =\n __arraySum(\n __isLeapYear(endDate.getFullYear())\n ? __MONTH_DAYS_LEAP\n : __MONTH_DAYS_REGULAR,\n endDate.getMonth() - 1,\n ) - 31;\n var firstSundayUntilEndJanuary = 31 - firstSunday.getDate();\n var days =\n firstSundayUntilEndJanuary +\n februaryFirstUntilEndMonth +\n endDate.getDate();\n return leadingNulls(Math.ceil(days / 7), 2);\n }\n return compareByDay(firstSunday, janFirst) === 0 ? \"01\" : \"00\";\n },\n \"%V\": function (date) {\n var janFourthThisYear = new Date(date.tm_year + 1900, 0, 4);\n var janFourthNextYear = new Date(date.tm_year + 1901, 0, 4);\n var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);\n var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);\n var endDate = __addDays(\n new Date(date.tm_year + 1900, 0, 1),\n date.tm_yday,\n );\n if (compareByDay(endDate, firstWeekStartThisYear) < 0) {\n return \"53\";\n }\n if (compareByDay(firstWeekStartNextYear, endDate) <= 0) {\n return \"01\";\n }\n var daysDifference;\n if (firstWeekStartThisYear.getFullYear() < date.tm_year + 1900) {\n daysDifference = date.tm_yday + 32 - firstWeekStartThisYear.getDate();\n } else {\n daysDifference = date.tm_yday + 1 - firstWeekStartThisYear.getDate();\n }\n return leadingNulls(Math.ceil(daysDifference / 7), 2);\n },\n \"%w\": function (date) {\n return date.tm_wday;\n },\n \"%W\": function (date) {\n var janFirst = new Date(date.tm_year, 0, 1);\n var firstMonday =\n janFirst.getDay() === 1\n ? janFirst\n : __addDays(\n janFirst,\n janFirst.getDay() === 0 ? 1 : 7 - janFirst.getDay() + 1,\n );\n var endDate = new Date(date.tm_year + 1900, date.tm_mon, date.tm_mday);\n if (compareByDay(firstMonday, endDate) < 0) {\n var februaryFirstUntilEndMonth =\n __arraySum(\n __isLeapYear(endDate.getFullYear())\n ? __MONTH_DAYS_LEAP\n : __MONTH_DAYS_REGULAR,\n endDate.getMonth() - 1,\n ) - 31;\n var firstMondayUntilEndJanuary = 31 - firstMonday.getDate();\n var days =\n firstMondayUntilEndJanuary +\n februaryFirstUntilEndMonth +\n endDate.getDate();\n return leadingNulls(Math.ceil(days / 7), 2);\n }\n return compareByDay(firstMonday, janFirst) === 0 ? \"01\" : \"00\";\n },\n \"%y\": function (date) {\n return (date.tm_year + 1900).toString().substring(2);\n },\n \"%Y\": function (date) {\n return date.tm_year + 1900;\n },\n \"%z\": function (date) {\n var off = date.tm_gmtoff;\n var ahead = off >= 0;\n off = Math.abs(off) / 60;\n off = (off / 60) * 100 + (off % 60);\n return (ahead ? \"+\" : \"-\") + String(\"0000\" + off).slice(-4);\n },\n \"%Z\": function (date) {\n return date.tm_zone;\n },\n \"%%\": function () {\n return \"%\";\n },\n };\n for (var rule in EXPANSION_RULES_2) {\n if (pattern.indexOf(rule) >= 0) {\n pattern = pattern.replace(\n new RegExp(rule, \"g\"),\n EXPANSION_RULES_2[rule](date),\n );\n }\n }\n var bytes = intArrayFromString(pattern, false);\n if (bytes.length > maxsize) {\n return 0;\n }\n writeArrayToMemory(bytes, s);\n return bytes.length - 1;\n}\nfunction _strftime_l(s, maxsize, format, tm) {\n return _strftime(s, maxsize, format, tm);\n}\nfunction _sysconf(name) {\n switch (name) {\n case 30:\n return PAGE_SIZE;\n case 85:\n var maxHeapSize = 2 * 1024 * 1024 * 1024 - 65536;\n maxHeapSize = HEAPU8.length;\n return maxHeapSize / PAGE_SIZE;\n case 132:\n case 133:\n case 12:\n case 137:\n case 138:\n case 15:\n case 235:\n case 16:\n case 17:\n case 18:\n case 19:\n case 20:\n case 149:\n case 13:\n case 10:\n case 236:\n case 153:\n case 9:\n case 21:\n case 22:\n case 159:\n case 154:\n case 14:\n case 77:\n case 78:\n case 139:\n case 80:\n case 81:\n case 82:\n case 68:\n case 67:\n case 164:\n case 11:\n case 29:\n case 47:\n case 48:\n case 95:\n case 52:\n case 51:\n case 46:\n return 200809;\n case 79:\n return 0;\n case 27:\n case 246:\n case 127:\n case 128:\n case 23:\n case 24:\n case 160:\n case 161:\n case 181:\n case 182:\n case 242:\n case 183:\n case 184:\n case 243:\n case 244:\n case 245:\n case 165:\n case 178:\n case 179:\n case 49:\n case 50:\n case 168:\n case 169:\n case 175:\n case 170:\n case 171:\n case 172:\n case 97:\n case 76:\n case 32:\n case 173:\n case 35:\n return -1;\n case 176:\n case 177:\n case 7:\n case 155:\n case 8:\n case 157:\n case 125:\n case 126:\n case 92:\n case 93:\n case 129:\n case 130:\n case 131:\n case 94:\n case 91:\n return 1;\n case 74:\n case 60:\n case 69:\n case 70:\n case 4:\n return 1024;\n case 31:\n case 42:\n case 72:\n return 32;\n case 87:\n case 26:\n case 33:\n return 2147483647;\n case 34:\n case 1:\n return 47839;\n case 38:\n case 36:\n return 99;\n case 43:\n case 37:\n return 2048;\n case 0:\n return 2097152;\n case 3:\n return 65536;\n case 28:\n return 32768;\n case 44:\n return 32767;\n case 75:\n return 16384;\n case 39:\n return 1e3;\n case 89:\n return 700;\n case 71:\n return 256;\n case 40:\n return 255;\n case 2:\n return 100;\n case 180:\n return 64;\n case 25:\n return 20;\n case 5:\n return 16;\n case 6:\n return 6;\n case 73:\n return 4;\n case 84: {\n if (typeof navigator === \"object\")\n return navigator[\"hardwareConcurrency\"] || 1;\n return 1;\n }\n }\n ___setErrNo(22);\n return -1;\n}\nfunction _system(command) {\n ___setErrNo(11);\n return -1;\n}\nfunction _time(ptr) {\n var ret = (Date.now() / 1e3) | 0;\n if (ptr) {\n HEAP32[ptr >> 2] = ret;\n }\n return ret;\n}\nfunction _unsetenv(name) {\n if (name === 0) {\n ___setErrNo(22);\n return -1;\n }\n name = UTF8ToString(name);\n if (name === \"\" || name.indexOf(\"=\") !== -1) {\n ___setErrNo(22);\n return -1;\n }\n if (ENV.hasOwnProperty(name)) {\n delete ENV[name];\n ___buildEnvironment(__get_environ());\n }\n return 0;\n}\nfunction _utimes(path, times) {\n var time;\n if (times) {\n var offset = 8 + 0;\n time = HEAP32[(times + offset) >> 2] * 1e3;\n offset = 8 + 4;\n time += HEAP32[(times + offset) >> 2] / 1e3;\n } else {\n time = Date.now();\n }\n path = UTF8ToString(path);\n try {\n FS.utime(path, time, time);\n return 0;\n } catch (e) {\n FS.handleFSError(e);\n return -1;\n }\n}\nfunction _wait(stat_loc) {\n ___setErrNo(10);\n return -1;\n}\nfunction _waitpid() {\n return _wait.apply(null, arguments);\n}\nFS.staticInit();\nif (ENVIRONMENT_HAS_NODE) {\n var fs = require(\"fs\");\n var NODEJS_PATH = require(\"path\");\n NODEFS.staticInit();\n}\nModule[\"requestFullScreen\"] = function Module_requestFullScreen(\n lockPointer,\n resizeCanvas,\n vrDevice,\n) {\n err(\n \"Module.requestFullScreen is deprecated. Please call Module.requestFullscreen instead.\",\n );\n Module[\"requestFullScreen\"] = Module[\"requestFullscreen\"];\n Browser.requestFullScreen(lockPointer, resizeCanvas, vrDevice);\n};\nModule[\"requestFullscreen\"] = function Module_requestFullscreen(\n lockPointer,\n resizeCanvas,\n vrDevice,\n) {\n Browser.requestFullscreen(lockPointer, resizeCanvas, vrDevice);\n};\nModule[\"requestAnimationFrame\"] = function Module_requestAnimationFrame(func) {\n Browser.requestAnimationFrame(func);\n};\nModule[\"setCanvasSize\"] = function Module_setCanvasSize(\n width,\n height,\n noUpdates,\n) {\n Browser.setCanvasSize(width, height, noUpdates);\n};\nModule[\"pauseMainLoop\"] = function Module_pauseMainLoop() {\n Browser.mainLoop.pause();\n};\nModule[\"resumeMainLoop\"] = function Module_resumeMainLoop() {\n Browser.mainLoop.resume();\n};\nModule[\"getUserMedia\"] = function Module_getUserMedia() {\n Browser.getUserMedia();\n};\nModule[\"createContext\"] = function Module_createContext(\n canvas,\n useWebGL,\n setInModule,\n webGLContextAttributes,\n) {\n return Browser.createContext(\n canvas,\n useWebGL,\n setInModule,\n webGLContextAttributes,\n );\n};\nif (ENVIRONMENT_IS_NODE) {\n _emscripten_get_now = function _emscripten_get_now_actual() {\n var t = process[\"hrtime\"]();\n return t[0] * 1e3 + t[1] / 1e6;\n };\n} else if (typeof dateNow !== \"undefined\") {\n _emscripten_get_now = dateNow;\n} else if (\n typeof performance === \"object\" &&\n performance &&\n typeof performance[\"now\"] === \"function\"\n) {\n _emscripten_get_now = function () {\n return performance[\"now\"]();\n };\n} else {\n _emscripten_get_now = Date.now;\n}\nGLImmediate.setupFuncs();\nBrowser.moduleContextCreatedCallbacks.push(function () {\n GLImmediate.init();\n});\nvar GLctx;\nGL.init();\nGLEmulation.init();\nvar ASSERTIONS = true;\nfunction 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}\nfunction intArrayToString(array) {\n var ret = [];\n for (var i = 0; i < array.length; i++) {\n var chr = array[i];\n if (chr > 255) {\n if (ASSERTIONS) {\n assert(\n false,\n \"Character code \" +\n chr +\n \" (\" +\n String.fromCharCode(chr) +\n \") at offset \" +\n i +\n \" not in 0x00-0xFF.\",\n );\n }\n chr &= 255;\n }\n ret.push(String.fromCharCode(chr));\n }\n return ret.join(\"\");\n}\nvar decodeBase64 =\n typeof atob === \"function\"\n ? atob\n : function (input) {\n var keyStr =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n var output = \"\";\n var chr1, chr2, chr3;\n var enc1, enc2, enc3, enc4;\n var i = 0;\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n do {\n enc1 = keyStr.indexOf(input.charAt(i++));\n enc2 = keyStr.indexOf(input.charAt(i++));\n enc3 = keyStr.indexOf(input.charAt(i++));\n enc4 = keyStr.indexOf(input.charAt(i++));\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n output = output + String.fromCharCode(chr1);\n if (enc3 !== 64) {\n output = output + String.fromCharCode(chr2);\n }\n if (enc4 !== 64) {\n output = output + String.fromCharCode(chr3);\n }\n } while (i < input.length);\n return output;\n };\nfunction intArrayFromBase64(s) {\n if (typeof ENVIRONMENT_IS_NODE === \"boolean\" && ENVIRONMENT_IS_NODE) {\n var buf;\n try {\n buf = Buffer.from(s, \"base64\");\n } catch (_) {\n buf = new Buffer(s, \"base64\");\n }\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n try {\n var decoded = decodeBase64(s);\n var bytes = new Uint8Array(decoded.length);\n for (var i = 0; i < decoded.length; ++i) {\n bytes[i] = decoded.charCodeAt(i);\n }\n return bytes;\n } catch (_) {\n throw new Error(\"Converting base64 string to bytes failed.\");\n }\n}\nfunction tryParseAsDataURI(filename) {\n if (!isDataURI(filename)) {\n return;\n }\n return intArrayFromBase64(filename.slice(dataURIPrefix.length));\n}\nfunction nullFunc_dd(x) {\n abortFnPtrError(x, \"dd\");\n}\nfunction nullFunc_ddd(x) {\n abortFnPtrError(x, \"ddd\");\n}\nfunction nullFunc_di(x) {\n abortFnPtrError(x, \"di\");\n}\nfunction nullFunc_did(x) {\n abortFnPtrError(x, \"did\");\n}\nfunction nullFunc_i(x) {\n abortFnPtrError(x, \"i\");\n}\nfunction nullFunc_ii(x) {\n abortFnPtrError(x, \"ii\");\n}\nfunction nullFunc_iidi(x) {\n abortFnPtrError(x, \"iidi\");\n}\nfunction nullFunc_iidiiii(x) {\n abortFnPtrError(x, \"iidiiii\");\n}\nfunction nullFunc_iii(x) {\n abortFnPtrError(x, \"iii\");\n}\nfunction nullFunc_iiii(x) {\n abortFnPtrError(x, \"iiii\");\n}\nfunction nullFunc_iiiid(x) {\n abortFnPtrError(x, \"iiiid\");\n}\nfunction nullFunc_iiiii(x) {\n abortFnPtrError(x, \"iiiii\");\n}\nfunction nullFunc_iiiiid(x) {\n abortFnPtrError(x, \"iiiiid\");\n}\nfunction nullFunc_iiiiii(x) {\n abortFnPtrError(x, \"iiiiii\");\n}\nfunction nullFunc_iiiiiid(x) {\n abortFnPtrError(x, \"iiiiiid\");\n}\nfunction nullFunc_iiiiiii(x) {\n abortFnPtrError(x, \"iiiiiii\");\n}\nfunction nullFunc_iiiiiiii(x) {\n abortFnPtrError(x, \"iiiiiiii\");\n}\nfunction nullFunc_iiiiiiiii(x) {\n abortFnPtrError(x, \"iiiiiiiii\");\n}\nfunction nullFunc_iiiiiiiiii(x) {\n abortFnPtrError(x, \"iiiiiiiiii\");\n}\nfunction nullFunc_iiiiiiiiiii(x) {\n abortFnPtrError(x, \"iiiiiiiiiii\");\n}\nfunction nullFunc_iiiiiiiiiiii(x) {\n abortFnPtrError(x, \"iiiiiiiiiiii\");\n}\nfunction nullFunc_iiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"iiiiiiiiiiiii\");\n}\nfunction nullFunc_iiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"iiiiiiiiiiiiii\");\n}\nfunction nullFunc_iiiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"iiiiiiiiiiiiiii\");\n}\nfunction nullFunc_iiiiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"iiiiiiiiiiiiiiii\");\n}\nfunction nullFunc_iiiiiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"iiiiiiiiiiiiiiiii\");\n}\nfunction nullFunc_iiiiiiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"iiiiiiiiiiiiiiiiii\");\n}\nfunction nullFunc_iiiiiiiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"iiiiiiiiiiiiiiiiiii\");\n}\nfunction nullFunc_iiiiiiiiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"iiiiiiiiiiiiiiiiiiii\");\n}\nfunction nullFunc_iiiiiiiiiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"iiiiiiiiiiiiiiiiiiiii\");\n}\nfunction nullFunc_iiiiij(x) {\n abortFnPtrError(x, \"iiiiij\");\n}\nfunction nullFunc_iiiij(x) {\n abortFnPtrError(x, \"iiiij\");\n}\nfunction nullFunc_iiiijj(x) {\n abortFnPtrError(x, \"iiiijj\");\n}\nfunction nullFunc_iiiji(x) {\n abortFnPtrError(x, \"iiiji\");\n}\nfunction nullFunc_iiijj(x) {\n abortFnPtrError(x, \"iiijj\");\n}\nfunction nullFunc_iiji(x) {\n abortFnPtrError(x, \"iiji\");\n}\nfunction nullFunc_iijijji(x) {\n abortFnPtrError(x, \"iijijji\");\n}\nfunction nullFunc_iijijjji(x) {\n abortFnPtrError(x, \"iijijjji\");\n}\nfunction nullFunc_jii(x) {\n abortFnPtrError(x, \"jii\");\n}\nfunction nullFunc_jiii(x) {\n abortFnPtrError(x, \"jiii\");\n}\nfunction nullFunc_jiiii(x) {\n abortFnPtrError(x, \"jiiii\");\n}\nfunction nullFunc_jiiiii(x) {\n abortFnPtrError(x, \"jiiiii\");\n}\nfunction nullFunc_jiij(x) {\n abortFnPtrError(x, \"jiij\");\n}\nfunction nullFunc_jij(x) {\n abortFnPtrError(x, \"jij\");\n}\nfunction nullFunc_jiji(x) {\n abortFnPtrError(x, \"jiji\");\n}\nfunction nullFunc_jijii(x) {\n abortFnPtrError(x, \"jijii\");\n}\nfunction nullFunc_jijiii(x) {\n abortFnPtrError(x, \"jijiii\");\n}\nfunction nullFunc_jijiiii(x) {\n abortFnPtrError(x, \"jijiiii\");\n}\nfunction nullFunc_jijiiiii(x) {\n abortFnPtrError(x, \"jijiiiii\");\n}\nfunction nullFunc_jijij(x) {\n abortFnPtrError(x, \"jijij\");\n}\nfunction nullFunc_jijj(x) {\n abortFnPtrError(x, \"jijj\");\n}\nfunction nullFunc_jijji(x) {\n abortFnPtrError(x, \"jijji\");\n}\nfunction nullFunc_jijjiii(x) {\n abortFnPtrError(x, \"jijjiii\");\n}\nfunction nullFunc_v(x) {\n abortFnPtrError(x, \"v\");\n}\nfunction nullFunc_vi(x) {\n abortFnPtrError(x, \"vi\");\n}\nfunction nullFunc_vid(x) {\n abortFnPtrError(x, \"vid\");\n}\nfunction nullFunc_vidddiii(x) {\n abortFnPtrError(x, \"vidddiii\");\n}\nfunction nullFunc_vidi(x) {\n abortFnPtrError(x, \"vidi\");\n}\nfunction nullFunc_vii(x) {\n abortFnPtrError(x, \"vii\");\n}\nfunction nullFunc_viid(x) {\n abortFnPtrError(x, \"viid\");\n}\nfunction nullFunc_viii(x) {\n abortFnPtrError(x, \"viii\");\n}\nfunction nullFunc_viiidd(x) {\n abortFnPtrError(x, \"viiidd\");\n}\nfunction nullFunc_viiii(x) {\n abortFnPtrError(x, \"viiii\");\n}\nfunction nullFunc_viiiii(x) {\n abortFnPtrError(x, \"viiiii\");\n}\nfunction nullFunc_viiiiii(x) {\n abortFnPtrError(x, \"viiiiii\");\n}\nfunction nullFunc_viiiiiii(x) {\n abortFnPtrError(x, \"viiiiiii\");\n}\nfunction nullFunc_viiiiiiii(x) {\n abortFnPtrError(x, \"viiiiiiii\");\n}\nfunction nullFunc_viiiiiiiii(x) {\n abortFnPtrError(x, \"viiiiiiiii\");\n}\nfunction nullFunc_viiiiiiiiii(x) {\n abortFnPtrError(x, \"viiiiiiiiii\");\n}\nfunction nullFunc_viiiiiiiiiii(x) {\n abortFnPtrError(x, \"viiiiiiiiiii\");\n}\nfunction nullFunc_viiiiiiiiiiii(x) {\n abortFnPtrError(x, \"viiiiiiiiiiii\");\n}\nfunction nullFunc_viiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"viiiiiiiiiiiii\");\n}\nfunction nullFunc_viiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"viiiiiiiiiiiiii\");\n}\nfunction nullFunc_viiiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"viiiiiiiiiiiiiii\");\n}\nfunction nullFunc_viiiiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"viiiiiiiiiiiiiiii\");\n}\nfunction nullFunc_viiiiiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"viiiiiiiiiiiiiiiii\");\n}\nfunction nullFunc_viiiiiiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"viiiiiiiiiiiiiiiiii\");\n}\nfunction nullFunc_viiiiiiiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"viiiiiiiiiiiiiiiiiii\");\n}\nfunction nullFunc_viiiiiiiiiiiiiiiiiiii(x) {\n abortFnPtrError(x, \"viiiiiiiiiiiiiiiiiiii\");\n}\nfunction nullFunc_viijii(x) {\n abortFnPtrError(x, \"viijii\");\n}\nfunction nullFunc_vij(x) {\n abortFnPtrError(x, \"vij\");\n}\nfunction nullFunc_viji(x) {\n abortFnPtrError(x, \"viji\");\n}\nfunction nullFunc_vijjii(x) {\n abortFnPtrError(x, \"vijjii\");\n}\nfunction invoke_dd(index, a1) {\n var sp = stackSave();\n try {\n return dynCall_dd(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_di(index, a1) {\n var sp = stackSave();\n try {\n return dynCall_di(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_i(index) {\n var sp = stackSave();\n try {\n return dynCall_i(index);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_ii(index, a1) {\n var sp = stackSave();\n try {\n return dynCall_ii(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_iidi(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n return dynCall_iidi(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_iii(index, a1, a2) {\n var sp = stackSave();\n try {\n return dynCall_iii(index, a1, a2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_iiii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n return dynCall_iiii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_iiiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n return dynCall_iiiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_iiiiii(index, a1, a2, a3, a4, a5) {\n var sp = stackSave();\n try {\n return dynCall_iiiiii(index, a1, a2, a3, a4, a5);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_v(index) {\n var sp = stackSave();\n try {\n dynCall_v(index);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_vi(index, a1) {\n var sp = stackSave();\n try {\n dynCall_vi(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_vii(index, a1, a2) {\n var sp = stackSave();\n try {\n dynCall_vii(index, a1, a2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_viid(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n dynCall_viid(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_viii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n dynCall_viii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_viiidd(index, a1, a2, a3, a4, a5) {\n var sp = stackSave();\n try {\n dynCall_viiidd(index, a1, a2, a3, a4, a5);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_viiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n dynCall_viiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_viiiii(index, a1, a2, a3, a4, a5) {\n var sp = stackSave();\n try {\n dynCall_viiiii(index, a1, a2, a3, a4, a5);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== \"longjmp\") throw e;\n _setThrew(1, 0);\n }\n}\nvar asmGlobalArg = {};\nvar asmLibraryArg = {\n f: setTempRet0,\n d: getTempRet0,\n b: abortStackOverflow,\n kb: nullFunc_dd,\n $a: nullFunc_ddd,\n Qa: nullFunc_di,\n Ga: nullFunc_did,\n Hd: nullFunc_i,\n Dd: nullFunc_ii,\n xd: nullFunc_iidi,\n rd: nullFunc_iidiiii,\n hd: nullFunc_iii,\n ad: nullFunc_iiii,\n Vc: nullFunc_iiiid,\n Rc: nullFunc_iiiii,\n Ic: nullFunc_iiiiid,\n Dc: nullFunc_iiiiii,\n xc: nullFunc_iiiiiid,\n rc: nullFunc_iiiiiii,\n lc: nullFunc_iiiiiiii,\n gc: nullFunc_iiiiiiiii,\n $b: nullFunc_iiiiiiiiii,\n Vb: nullFunc_iiiiiiiiiii,\n Sb: nullFunc_iiiiiiiiiiii,\n Rb: nullFunc_iiiiiiiiiiiii,\n Qb: nullFunc_iiiiiiiiiiiiii,\n Pb: nullFunc_iiiiiiiiiiiiiii,\n Ob: nullFunc_iiiiiiiiiiiiiiii,\n Nb: nullFunc_iiiiiiiiiiiiiiiii,\n Mb: nullFunc_iiiiiiiiiiiiiiiiii,\n Lb: nullFunc_iiiiiiiiiiiiiiiiiii,\n Kb: nullFunc_iiiiiiiiiiiiiiiiiiii,\n Jb: nullFunc_iiiiiiiiiiiiiiiiiiiii,\n Ib: nullFunc_iiiiij,\n Hb: nullFunc_iiiij,\n Gb: nullFunc_iiiijj,\n Fb: nullFunc_iiiji,\n Eb: nullFunc_iiijj,\n Db: nullFunc_iiji,\n Cb: nullFunc_iijijji,\n Bb: nullFunc_iijijjji,\n Ab: nullFunc_jii,\n zb: nullFunc_jiii,\n yb: nullFunc_jiiii,\n xb: nullFunc_jiiiii,\n wb: nullFunc_jiij,\n vb: nullFunc_jij,\n ub: nullFunc_jiji,\n tb: nullFunc_jijii,\n sb: nullFunc_jijiii,\n rb: nullFunc_jijiiii,\n qb: nullFunc_jijiiiii,\n pb: nullFunc_jijij,\n ob: nullFunc_jijj,\n nb: nullFunc_jijji,\n mb: nullFunc_jijjiii,\n lb: nullFunc_v,\n jb: nullFunc_vi,\n ib: nullFunc_vid,\n hb: nullFunc_vidddiii,\n gb: nullFunc_vidi,\n fb: nullFunc_vii,\n eb: nullFunc_viid,\n db: nullFunc_viii,\n cb: nullFunc_viiidd,\n bb: nullFunc_viiii,\n ab: nullFunc_viiiii,\n _a: nullFunc_viiiiii,\n Za: nullFunc_viiiiiii,\n Ya: nullFunc_viiiiiiii,\n Xa: nullFunc_viiiiiiiii,\n Wa: nullFunc_viiiiiiiiii,\n Va: nullFunc_viiiiiiiiiii,\n Ua: nullFunc_viiiiiiiiiiii,\n Ta: nullFunc_viiiiiiiiiiiii,\n Sa: nullFunc_viiiiiiiiiiiiii,\n Ra: nullFunc_viiiiiiiiiiiiiii,\n Pa: nullFunc_viiiiiiiiiiiiiiii,\n Oa: nullFunc_viiiiiiiiiiiiiiiii,\n Na: nullFunc_viiiiiiiiiiiiiiiiii,\n Ma: nullFunc_viiiiiiiiiiiiiiiiiii,\n La: nullFunc_viiiiiiiiiiiiiiiiiiii,\n Ka: nullFunc_viijii,\n Ja: nullFunc_vij,\n Ia: nullFunc_viji,\n Ha: nullFunc_vijjii,\n H: invoke_dd,\n X: invoke_di,\n y: invoke_i,\n k: invoke_ii,\n Fa: invoke_iidi,\n i: invoke_iii,\n r: invoke_iiii,\n N: invoke_iiiii,\n ha: invoke_iiiiii,\n x: invoke_v,\n j: invoke_vi,\n o: invoke_vii,\n na: invoke_viid,\n l: invoke_viii,\n A: invoke_viiidd,\n M: invoke_viiii,\n ga: invoke_viiiii,\n Gd: _SDL_GL_SetAttribute,\n L: _SDL_GL_SwapBuffers,\n Fd: _SDL_GetError,\n Ed: _SDL_Init,\n K: _SDL_Quit,\n g: ___assert_fail,\n Cd: ___buildEnvironment,\n Bd: ___clock_gettime,\n n: ___cxa_allocate_exception,\n Ad: ___cxa_pure_virtual,\n m: ___cxa_throw,\n zd: ___cxa_uncaught_exceptions,\n ma: ___lock,\n yd: ___map_file,\n Ea: ___setErrNo,\n la: ___syscall10,\n wd: ___syscall114,\n vd: ___syscall12,\n Da: ___syscall140,\n ud: ___syscall145,\n Ca: ___syscall146,\n td: ___syscall183,\n sd: ___syscall191,\n Ba: ___syscall195,\n qd: ___syscall196,\n pd: ___syscall197,\n od: ___syscall199,\n nd: ___syscall20,\n md: ___syscall201,\n ld: ___syscall220,\n W: ___syscall221,\n kd: ___syscall3,\n jd: ___syscall33,\n id: ___syscall340,\n gd: ___syscall38,\n fd: ___syscall39,\n ed: ___syscall4,\n Aa: ___syscall40,\n dd: ___syscall41,\n cd: ___syscall42,\n fa: ___syscall5,\n ea: ___syscall54,\n R: ___syscall6,\n bd: ___syscall63,\n $c: ___syscall77,\n _c: ___syscall83,\n Zc: ___syscall85,\n Yc: ___syscall91,\n V: ___unlock,\n $: __exit,\n h: _abort,\n Xc: _atexit,\n Wc: _ceil,\n v: _clock,\n Uc: _difftime,\n Tc: _dlclose,\n za: _dlerror,\n da: _dlopen,\n ka: _dlsym,\n c: _emscripten_asm_const_d,\n ya: _emscripten_asm_const_i,\n Q: _emscripten_asm_const_ii,\n Sc: _emscripten_asm_const_iii,\n xa: _emscripten_asm_const_iiii,\n Qc: _emscripten_asm_const_iiiii,\n Pc: _emscripten_get_canvas_size,\n Oc: _emscripten_get_heap_size,\n Nc: _emscripten_longjmp,\n Mc: _emscripten_memcpy_big,\n Lc: _emscripten_resize_heap,\n ja: _execve,\n F: _exit,\n Kc: _fabs,\n Jc: _floor,\n Hc: _fork,\n D: _getenv,\n wa: _getpwnam,\n Gc: _getpwuid,\n ca: _gettimeofday,\n p: _glBegin,\n Fc: _glBlendFunc,\n Ec: _glClear,\n va: _glClearColor,\n w: _glColor3f,\n Cc: _glDepthFunc,\n C: _glDisable,\n z: _glEnable,\n q: _glEnd,\n Bc: _glFinish,\n Ac: _glFlush,\n zc: _glFrustum,\n yc: _glGetFloatv,\n ua: _glGetIntegerv,\n _: _glLightfv,\n B: _glLineWidth,\n U: _glLoadIdentity,\n G: _glMatrixMode,\n wc: _glNormal3f,\n vc: _glOrtho,\n uc: _glPolygonMode,\n tc: _glPolygonOffset,\n ba: _glPopMatrix,\n aa: _glPushMatrix,\n sc: _glRotated,\n ta: _glScaled,\n qc: _glScalef,\n pc: _glShadeModel,\n sa: _glTranslated,\n ra: _glTranslatef,\n E: _glVertex3f,\n oc: _glViewport,\n nc: _glinit,\n mc: _kill,\n Tb: _llvm_bswap_i64,\n T: _llvm_cos_f64,\n kc: _llvm_exp2_f64,\n u: _llvm_log10_f64,\n jc: _llvm_log2_f64,\n P: _llvm_sin_f64,\n s: _llvm_stackrestore,\n t: _llvm_stacksave,\n Z: _llvm_trap,\n J: _llvm_trunc_f64,\n ic: _localtime,\n hc: _localtime_r,\n e: _longjmp,\n fc: _mp_js_hook,\n O: _mp_js_ticks_ms,\n ec: _nanosleep,\n ia: _popen,\n dc: _pthread_cond_wait,\n I: _raise,\n cc: _setenv,\n bc: _sigaction,\n ac: _sigemptyset,\n _b: _sqrt,\n Zb: _strftime,\n Yb: _strftime_l,\n qa: _sysconf,\n S: _system,\n Y: _time,\n Xb: _unsetenv,\n pa: _usleep,\n Wb: _utimes,\n oa: _waitpid,\n Ub: abortOnCannotGrowMemory,\n a: DYNAMICTOP_PTR,\n};\nvar asm = Module[\"asm\"](asmGlobalArg, asmLibraryArg, buffer);\nModule[\"asm\"] = asm;\nvar __ZN4giac13giac_rendererEPKc = (Module[\"__ZN4giac13giac_rendererEPKc\"] =\n function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Id\"].apply(null, arguments);\n });\nvar __ZSt18uncaught_exceptionv = (Module[\"__ZSt18uncaught_exceptionv\"] =\n function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Jd\"].apply(null, arguments);\n });\nvar ___errno_location = (Module[\"___errno_location\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Kd\"].apply(null, arguments);\n});\nvar __get_daylight = (Module[\"__get_daylight\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Ld\"].apply(null, arguments);\n});\nvar __get_environ = (Module[\"__get_environ\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Md\"].apply(null, arguments);\n});\nvar __get_timezone = (Module[\"__get_timezone\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Nd\"].apply(null, arguments);\n});\nvar __get_tzname = (Module[\"__get_tzname\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Od\"].apply(null, arguments);\n});\nvar _caseval = (Module[\"_caseval\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Pd\"].apply(null, arguments);\n});\nvar _fflush = (Module[\"_fflush\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Qd\"].apply(null, arguments);\n});\nvar _free = (Module[\"_free\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Rd\"].apply(null, arguments);\n});\nvar _llvm_bswap_i32 = (Module[\"_llvm_bswap_i32\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Sd\"].apply(null, arguments);\n});\nvar _malloc = (Module[\"_malloc\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Td\"].apply(null, arguments);\n});\nvar _memcpy = (Module[\"_memcpy\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Ud\"].apply(null, arguments);\n});\nvar _memset = (Module[\"_memset\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Vd\"].apply(null, arguments);\n});\nvar _mp_js_do_str = (Module[\"_mp_js_do_str\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Wd\"].apply(null, arguments);\n});\nvar _mp_js_init = (Module[\"_mp_js_init\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Xd\"].apply(null, arguments);\n});\nvar _nws_caseval = (Module[\"_nws_caseval\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Yd\"].apply(null, arguments);\n});\nvar _quickjs_ck_eval = (Module[\"_quickjs_ck_eval\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"Zd\"].apply(null, arguments);\n});\nvar _setThrew = (Module[\"_setThrew\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"_d\"].apply(null, arguments);\n});\nvar establishStackSpace = (Module[\"establishStackSpace\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"qe\"].apply(null, arguments);\n});\nvar globalCtors = (Module[\"globalCtors\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"re\"].apply(null, arguments);\n});\nvar stackAlloc = (Module[\"stackAlloc\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"se\"].apply(null, arguments);\n});\nvar stackRestore = (Module[\"stackRestore\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"te\"].apply(null, arguments);\n});\nvar stackSave = (Module[\"stackSave\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"ue\"].apply(null, arguments);\n});\nvar dynCall_dd = (Module[\"dynCall_dd\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"$d\"].apply(null, arguments);\n});\nvar dynCall_di = (Module[\"dynCall_di\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"ae\"].apply(null, arguments);\n});\nvar dynCall_i = (Module[\"dynCall_i\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"be\"].apply(null, arguments);\n});\nvar dynCall_ii = (Module[\"dynCall_ii\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"ce\"].apply(null, arguments);\n});\nvar dynCall_iidi = (Module[\"dynCall_iidi\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"de\"].apply(null, arguments);\n});\nvar dynCall_iii = (Module[\"dynCall_iii\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"ee\"].apply(null, arguments);\n});\nvar dynCall_iiii = (Module[\"dynCall_iiii\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"fe\"].apply(null, arguments);\n});\nvar dynCall_iiiii = (Module[\"dynCall_iiiii\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"ge\"].apply(null, arguments);\n});\nvar dynCall_iiiiii = (Module[\"dynCall_iiiiii\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"he\"].apply(null, arguments);\n});\nvar dynCall_v = (Module[\"dynCall_v\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"ie\"].apply(null, arguments);\n});\nvar dynCall_vi = (Module[\"dynCall_vi\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"je\"].apply(null, arguments);\n});\nvar dynCall_vii = (Module[\"dynCall_vii\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"ke\"].apply(null, arguments);\n});\nvar dynCall_viid = (Module[\"dynCall_viid\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"le\"].apply(null, arguments);\n});\nvar dynCall_viii = (Module[\"dynCall_viii\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"me\"].apply(null, arguments);\n});\nvar dynCall_viiidd = (Module[\"dynCall_viiidd\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"ne\"].apply(null, arguments);\n});\nvar dynCall_viiii = (Module[\"dynCall_viiii\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"oe\"].apply(null, arguments);\n});\nvar dynCall_viiiii = (Module[\"dynCall_viiiii\"] = function () {\n assert(\n runtimeInitialized,\n \"you need to wait for the runtime to be ready (e.g. wait for main() to be called)\",\n );\n assert(\n !runtimeExited,\n \"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)\",\n );\n return Module[\"asm\"][\"pe\"].apply(null, arguments);\n});\nModule[\"asm\"] = asm;\nif (!Object.getOwnPropertyDescriptor(Module, \"intArrayFromString\"))\n Module[\"intArrayFromString\"] = function () {\n abort(\n \"'intArrayFromString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"intArrayToString\"))\n Module[\"intArrayToString\"] = function () {\n abort(\n \"'intArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nModule[\"ccall\"] = ccall;\nModule[\"cwrap\"] = cwrap;\nif (!Object.getOwnPropertyDescriptor(Module, \"setValue\"))\n Module[\"setValue\"] = function () {\n abort(\n \"'setValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"getValue\"))\n Module[\"getValue\"] = function () {\n abort(\n \"'getValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"allocate\"))\n Module[\"allocate\"] = function () {\n abort(\n \"'allocate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"getMemory\"))\n Module[\"getMemory\"] = function () {\n abort(\n \"'getMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"AsciiToString\"))\n Module[\"AsciiToString\"] = function () {\n abort(\n \"'AsciiToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"stringToAscii\"))\n Module[\"stringToAscii\"] = function () {\n abort(\n \"'stringToAscii' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"UTF8ArrayToString\"))\n Module[\"UTF8ArrayToString\"] = function () {\n abort(\n \"'UTF8ArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"UTF8ToString\"))\n Module[\"UTF8ToString\"] = function () {\n abort(\n \"'UTF8ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"stringToUTF8Array\"))\n Module[\"stringToUTF8Array\"] = function () {\n abort(\n \"'stringToUTF8Array' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"stringToUTF8\"))\n Module[\"stringToUTF8\"] = function () {\n abort(\n \"'stringToUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"lengthBytesUTF8\"))\n Module[\"lengthBytesUTF8\"] = function () {\n abort(\n \"'lengthBytesUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"UTF16ToString\"))\n Module[\"UTF16ToString\"] = function () {\n abort(\n \"'UTF16ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"stringToUTF16\"))\n Module[\"stringToUTF16\"] = function () {\n abort(\n \"'stringToUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"lengthBytesUTF16\"))\n Module[\"lengthBytesUTF16\"] = function () {\n abort(\n \"'lengthBytesUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"UTF32ToString\"))\n Module[\"UTF32ToString\"] = function () {\n abort(\n \"'UTF32ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"stringToUTF32\"))\n Module[\"stringToUTF32\"] = function () {\n abort(\n \"'stringToUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"lengthBytesUTF32\"))\n Module[\"lengthBytesUTF32\"] = function () {\n abort(\n \"'lengthBytesUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"allocateUTF8\"))\n Module[\"allocateUTF8\"] = function () {\n abort(\n \"'allocateUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"stackTrace\"))\n Module[\"stackTrace\"] = function () {\n abort(\n \"'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"addOnPreRun\"))\n Module[\"addOnPreRun\"] = function () {\n abort(\n \"'addOnPreRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"addOnInit\"))\n Module[\"addOnInit\"] = function () {\n abort(\n \"'addOnInit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"addOnPreMain\"))\n Module[\"addOnPreMain\"] = function () {\n abort(\n \"'addOnPreMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"addOnExit\"))\n Module[\"addOnExit\"] = function () {\n abort(\n \"'addOnExit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"addOnPostRun\"))\n Module[\"addOnPostRun\"] = function () {\n abort(\n \"'addOnPostRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nModule[\"writeStringToMemory\"] = writeStringToMemory;\nif (!Object.getOwnPropertyDescriptor(Module, \"writeArrayToMemory\"))\n Module[\"writeArrayToMemory\"] = function () {\n abort(\n \"'writeArrayToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"writeAsciiToMemory\"))\n Module[\"writeAsciiToMemory\"] = function () {\n abort(\n \"'writeAsciiToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"addRunDependency\"))\n Module[\"addRunDependency\"] = function () {\n abort(\n \"'addRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"removeRunDependency\"))\n Module[\"removeRunDependency\"] = function () {\n abort(\n \"'removeRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"ENV\"))\n Module[\"ENV\"] = function () {\n abort(\n \"'ENV' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"FS\"))\n Module[\"FS\"] = function () {\n abort(\n \"'FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"FS_createFolder\"))\n Module[\"FS_createFolder\"] = function () {\n abort(\n \"'FS_createFolder' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"FS_createPath\"))\n Module[\"FS_createPath\"] = function () {\n abort(\n \"'FS_createPath' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"FS_createDataFile\"))\n Module[\"FS_createDataFile\"] = function () {\n abort(\n \"'FS_createDataFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"FS_createPreloadedFile\"))\n Module[\"FS_createPreloadedFile\"] = function () {\n abort(\n \"'FS_createPreloadedFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"FS_createLazyFile\"))\n Module[\"FS_createLazyFile\"] = function () {\n abort(\n \"'FS_createLazyFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"FS_createLink\"))\n Module[\"FS_createLink\"] = function () {\n abort(\n \"'FS_createLink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"FS_createDevice\"))\n Module[\"FS_createDevice\"] = function () {\n abort(\n \"'FS_createDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"FS_unlink\"))\n Module[\"FS_unlink\"] = function () {\n abort(\n \"'FS_unlink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"GL\"))\n Module[\"GL\"] = function () {\n abort(\n \"'GL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"dynamicAlloc\"))\n Module[\"dynamicAlloc\"] = function () {\n abort(\n \"'dynamicAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"warnOnce\"))\n Module[\"warnOnce\"] = function () {\n abort(\n \"'warnOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"loadDynamicLibrary\"))\n Module[\"loadDynamicLibrary\"] = function () {\n abort(\n \"'loadDynamicLibrary' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"loadWebAssemblyModule\"))\n Module[\"loadWebAssemblyModule\"] = function () {\n abort(\n \"'loadWebAssemblyModule' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"getLEB\"))\n Module[\"getLEB\"] = function () {\n abort(\n \"'getLEB' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"getFunctionTables\"))\n Module[\"getFunctionTables\"] = function () {\n abort(\n \"'getFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"alignFunctionTables\"))\n Module[\"alignFunctionTables\"] = function () {\n abort(\n \"'alignFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"registerFunctions\"))\n Module[\"registerFunctions\"] = function () {\n abort(\n \"'registerFunctions' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"addFunction\"))\n Module[\"addFunction\"] = function () {\n abort(\n \"'addFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"removeFunction\"))\n Module[\"removeFunction\"] = function () {\n abort(\n \"'removeFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"getFuncWrapper\"))\n Module[\"getFuncWrapper\"] = function () {\n abort(\n \"'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"prettyPrint\"))\n Module[\"prettyPrint\"] = function () {\n abort(\n \"'prettyPrint' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"makeBigInt\"))\n Module[\"makeBigInt\"] = function () {\n abort(\n \"'makeBigInt' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"dynCall\"))\n Module[\"dynCall\"] = function () {\n abort(\n \"'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"getCompilerSetting\"))\n Module[\"getCompilerSetting\"] = function () {\n abort(\n \"'getCompilerSetting' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"stackSave\"))\n Module[\"stackSave\"] = function () {\n abort(\n \"'stackSave' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"stackRestore\"))\n Module[\"stackRestore\"] = function () {\n abort(\n \"'stackRestore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"stackAlloc\"))\n Module[\"stackAlloc\"] = function () {\n abort(\n \"'stackAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"establishStackSpace\"))\n Module[\"establishStackSpace\"] = function () {\n abort(\n \"'establishStackSpace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"print\"))\n Module[\"print\"] = function () {\n abort(\n \"'print' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"printErr\"))\n Module[\"printErr\"] = function () {\n abort(\n \"'printErr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"getTempRet0\"))\n Module[\"getTempRet0\"] = function () {\n abort(\n \"'getTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"setTempRet0\"))\n Module[\"setTempRet0\"] = function () {\n abort(\n \"'setTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"callMain\"))\n Module[\"callMain\"] = function () {\n abort(\n \"'callMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nModule[\"Pointer_stringify\"] = Pointer_stringify;\nif (!Object.getOwnPropertyDescriptor(Module, \"intArrayFromBase64\"))\n Module[\"intArrayFromBase64\"] = function () {\n abort(\n \"'intArrayFromBase64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"tryParseAsDataURI\"))\n Module[\"tryParseAsDataURI\"] = function () {\n abort(\n \"'tryParseAsDataURI' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n };\nif (!Object.getOwnPropertyDescriptor(Module, \"ALLOC_NORMAL\"))\n Object.defineProperty(Module, \"ALLOC_NORMAL\", {\n get: function () {\n abort(\n \"'ALLOC_NORMAL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n },\n });\nif (!Object.getOwnPropertyDescriptor(Module, \"ALLOC_STACK\"))\n Object.defineProperty(Module, \"ALLOC_STACK\", {\n get: function () {\n abort(\n \"'ALLOC_STACK' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n },\n });\nif (!Object.getOwnPropertyDescriptor(Module, \"ALLOC_DYNAMIC\"))\n Object.defineProperty(Module, \"ALLOC_DYNAMIC\", {\n get: function () {\n abort(\n \"'ALLOC_DYNAMIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n },\n });\nif (!Object.getOwnPropertyDescriptor(Module, \"ALLOC_NONE\"))\n Object.defineProperty(Module, \"ALLOC_NONE\", {\n get: function () {\n abort(\n \"'ALLOC_NONE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\",\n );\n },\n });\nfunction ExitStatus(status) {\n this.name = \"ExitStatus\";\n this.message = \"Program terminated with exit(\" + status + \")\";\n this.status = status;\n}\ndependenciesFulfilled = function runCaller() {\n if (!Module[\"calledRun\"]) run();\n if (!Module[\"calledRun\"]) dependenciesFulfilled = runCaller;\n};\nfunction run(args) {\n args = args || arguments_;\n if (runDependencies > 0) {\n return;\n }\n writeStackCookie();\n preRun();\n if (runDependencies > 0) return;\n if (Module[\"calledRun\"]) return;\n function doRun() {\n if (Module[\"calledRun\"]) return;\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n assert(\n !Module[\"_main\"],\n 'compiled without a main, but one is present. if you added it from JS, use Module[\"onRuntimeInitialized\"]',\n );\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function () {\n setTimeout(function () {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n checkStackCookie();\n}\nModule[\"run\"] = run;\nfunction checkUnflushedContent() {\n var print = out;\n var printErr = err;\n var has = false;\n out = err = function (x) {\n has = true;\n };\n try {\n var flush = Module[\"_fflush\"];\n if (flush) flush(0);\n [\"stdout\", \"stderr\"].forEach(function (name) {\n var info = FS.analyzePath(\"/dev/\" + name);\n if (!info) return;\n var stream = info.object;\n var rdev = stream.rdev;\n var tty = TTY.ttys[rdev];\n if (tty && tty.output && tty.output.length) {\n has = true;\n }\n });\n } catch (e) {}\n out = print;\n err = printErr;\n if (has) {\n warnOnce(\n \"stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc.\",\n );\n }\n}\nfunction exit(status, implicit) {\n checkUnflushedContent();\n if (implicit && Module[\"noExitRuntime\"] && status === 0) {\n return;\n }\n if (Module[\"noExitRuntime\"]) {\n if (!implicit) {\n err(\n \"exit(\" +\n status +\n \") called, but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)\",\n );\n }\n } else {\n ABORT = true;\n EXITSTATUS = status;\n exitRuntime();\n if (Module[\"onExit\"]) Module[\"onExit\"](status);\n }\n quit_(status, new ExitStatus(status));\n}\nvar abortDecorators = [];\nfunction abort(what) {\n if (Module[\"onAbort\"]) {\n Module[\"onAbort\"](what);\n }\n what += \"\";\n out(what);\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n var extra = \"\";\n var output = \"abort(\" + what + \") at \" + stackTrace() + extra;\n if (abortDecorators) {\n abortDecorators.forEach(function (decorator) {\n output = decorator(output, what);\n });\n }\n throw output;\n}\nModule[\"abort\"] = abort;\nif (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\")\n Module[\"preInit\"] = [Module[\"preInit\"]];\n while (Module[\"preInit\"].length > 0) {\n Module[\"preInit\"].pop()();\n }\n}\nModule[\"noExitRuntime\"] = true;\nexport default Module;\n"],"names":["UI","disable3d","tableaucm","debug","Datestart","Date","now","ready","colorinit","usemathjax","prettyprint","histcount","selection","langue","calc","xwaspy_shift","gr2d_ncanvas","initconfigstring","python_mode","python_indent","warnpy","window","innerWidth","Module","args","console","log","error","key","moduleOverrides","hasOwnProperty","ENVIRONMENT_IS_WEB","ENVIRONMENT_IS_WORKER","ENVIRONMENT_IS_NODE","ENVIRONMENT_HAS_NODE","ENVIRONMENT_IS_SHELL","arguments_","thisProgram","quit_","status","toThrow","importScripts","process","versions","node","Error","read_","readAsync","readBinary","nodeFS","nodePath","scriptDirectory","__dirname","filename","binary","ret","tryParseAsDataURI","toString","buffer","Uint8Array","assert","length","replace","slice","module","ex","ExitStatus","abort","read","f","data","intArrayToString","readbuffer","scriptArgs","arguments","quit","print","warn","printErr","self","location","href","document","currentScript","src","indexOf","substr","lastIndexOf","url","xhr","XMLHttpRequest","open","send","responseText","err","responseType","response","onload","onerror","out","bind","dynamicAlloc","size","DYNAMICTOP_PTR","HEAP32","end","_emscripten_get_heap_size","getNativeTypeSize","type","bits","parseInt","warnOnce","text","shown","Object","getOwnPropertyDescriptor","defineProperty","get","stackSave","stackRestore","stackAlloc","wasmBinary","wasmMemory","asm2wasmImports","x","y","debugger","tempRet0","Array","setTempRet0","value","setValue","ptr","noSafe","charAt","HEAP8","HEAP16","tempI64","tempDouble","Math_abs","Math_min","Math_floor","Math_ceil","HEAPF32","HEAPF64","WebAssembly","ABORT","condition","ccall","ident","returnType","argTypes","opts","toC","string","str","len","stringToUTF8","array","arr","writeArrayToMemory","func","getCFunc","cArgs","stack","i","converter","apply","async","UTF8ToString","Boolean","convertReturnValue","allocate","slab","types","allocator","zeroinit","singleType","_malloc","Math","max","stop","subarray","HEAPU8","set","typeSize","previousType","curr","getMemory","runtimeInitialized","UTF8Decoder","TextDecoder","undefined","UTF8ArrayToString","u8Array","idx","maxBytesToRead","endIdx","endPtr","decode","u0","u1","u2","String","fromCharCode","ch","stringToUTF8Array","outU8Array","outIdx","maxBytesToWrite","startIdx","u","charCodeAt","outPtr","lengthBytesUTF8","writeAsciiToMemory","dontAddNull","HEAPU16","HEAPU32","WASM_PAGE_SIZE","STACK_MAX","DYNAMIC_BASE","TOTAL_STACK","INITIAL_TOTAL_MEMORY","checkStackCookie","cookie1","cookie2","Int32Array","Float64Array","prototype","Memory","initial","maximum","byteLength","Int8Array","Int16Array","Uint16Array","Uint32Array","Float32Array","abortFnPtrError","sig","callRuntimeCallbacks","callbacks","callback","shift","arg","__ATPRERUN__","__ATINIT__","__ATMAIN__","__ATEXIT__","__ATPOSTRUN__","runtimeExited","addOnPreRun","cb","unshift","addOnPostRun","imul","fround","clz32","trunc","abs","Math_cos","cos","Math_sin","sin","Math_sqrt","sqrt","ceil","floor","min","Math_trunc","runDependencies","runDependencyWatcher","dependenciesFulfilled","runDependencyTracking","getUniqueRunDependency","id","orig","random","addRunDependency","setInterval","clearInterval","dep","removeRunDependency","dataURIPrefix","isDataURI","startsWith","path","wasmBinaryFile","URL","getBinary","createWasm","env","info","global","NaN","Infinity","asm2wasm","receiveInstance","instance","exports","trueModule","receiveInstantiatedSource","output","instantiateArrayBuffer","receiver","fetch","Promise","resolve","reject","credentials","then","catch","instantiate","reason","e","instantiateStreaming","instantiateAsync","providedBuffer","Table","element","ASM_CONSTS","worker","ua","navigator","userAgent","old_ie","new_ie","$0","$1","$2","req","bufsize","overrideMimeType","s","writeStringToMemory","statusText","msg","tst","prompt","intArrayFromString","assistant_matr_maxrows","assistant_matr_maxcols","sheet_recompute","open_sheet","sheet_set_ij","alert","hw","svgwidth","add_evalf","js_bigint","$3","nchannels","nDataBytes","data_size","j","audioCtx","AudioContext","webkitAudioContext","SoundArrayBuffer","createBuffer","sampleRate","dataHeap","result","byteOffset","v","getChannelData","source","createBufferSource","connect","destination","start","add_python_output","clean_for_html","tmp","getElementById","style","display","set_config_width","innerHTML","scrollTop","python_output","push","globalCtors","demangleAll","stackTrace","js","jsStackTrace","___setErrNo","PATH","splitPath","exec","normalizeArray","parts","allowAboveRoot","up","last","splice","normalize","isAbsolute","trailingSlash","split","filter","p","join","dirname","root","dir","basename","lastSlash","extname","paths","call","join2","l","r","PATH_FS","resolvedPath","resolvedAbsolute","FS","cwd","TypeError","relative","from","to","trim","fromParts","toParts","samePartsLength","outputParts","concat","TTY","ttys","init","shutdown","register","dev","ops","input","registerDevice","stream_ops","stream","tty","rdev","ErrnoError","seekable","close","flush","offset","pos","get_char","bytesRead","timestamp","write","put_char","default_tty_ops","buf","Buffer","alloc","isPosixPlatform","platform","fd","stdin","usingDevice","fs","openSync","readSync","closeSync","readline","val","default_tty1_ops","MEMFS","ops_table","mount","createNode","parent","name","mode","isBlkdev","isFIFO","getattr","node_ops","setattr","lookup","mknod","rename","unlink","rmdir","readdir","symlink","llseek","file","mmap","msync","link","readlink","chrdev","chrdev_stream_ops","isDir","contents","isFile","usedBytes","isLink","isChrdev","getFileDataAsRegularArray","getFileDataAsTypedArray","expandFileStorage","newCapacity","prevCapacity","oldContents","resizeFileStorage","newSize","ArrayBuffer","attr","ino","nlink","uid","gid","atime","mtime","ctime","blksize","blocks","genericErrors","old_node","new_dir","new_name","new_node","lookupNode","entries","newname","oldpath","position","canOwn","whence","prot","flags","allocated","fromHeap","mmapFlags","IDBFS","dbs","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","DB_VERSION","DB_STORE_NAME","syncfs","populate","getLocalSet","local","getRemoteSet","remote","dst","reconcile","getDB","db","onupgradeneeded","fileStore","target","transaction","objectStoreNames","contains","objectStore","createObjectStore","indexNames","createIndex","unique","onsuccess","this","preventDefault","isRealDir","toAbsolute","check","mountpoint","map","stat","pop","index","openKeyCursor","event","cursor","primaryKey","continue","loadLocalEntry","lookupPath","storeLocalEntry","entry","mkdir","writeFile","chmod","utime","removeLocalEntry","loadRemoteEntry","store","storeRemoteEntry","put","removeRemoteEntry","delete","total","create","keys","forEach","e2","remove","errored","done","oncomplete","sort","reverse","NODEFS","isWindows","staticInit","match","flagsForNodeMap","bufferFrom","arrayBuffer","getMode","lstatSync","code","errno","realPath","flagsForNode","newFlags","k","chmodSync","date","utimesSync","truncateSync","mkdirSync","writeFileSync","oldNode","newDir","newName","oldPath","newPath","renameSync","unlinkSync","rmdirSync","readdirSync","symlinkSync","readlinkSync","NODEJS_PATH","nfd","writeSync","fstatSync","WORKERFS","DIR_MODE","FILE_MODE","reader","FileReaderSync","createdParents","ensureParent","base","lastModifiedDate","obj","pack","files","getTime","chunk","ab","readAsArrayBuffer","ERRNO_MESSAGES","ERRNO_CODES","EPERM","ENOENT","ESRCH","EINTR","EIO","ENXIO","E2BIG","ENOEXEC","EBADF","ECHILD","EAGAIN","EWOULDBLOCK","ENOMEM","EACCES","EFAULT","ENOTBLK","EBUSY","EEXIST","EXDEV","ENODEV","ENOTDIR","EISDIR","EINVAL","ENFILE","EMFILE","ENOTTY","ETXTBSY","EFBIG","ENOSPC","ESPIPE","EROFS","EMLINK","EPIPE","EDOM","ERANGE","ENOMSG","EIDRM","ECHRNG","EL2NSYNC","EL3HLT","EL3RST","ELNRNG","EUNATCH","ENOCSI","EL2HLT","EDEADLK","ENOLCK","EBADE","EBADR","EXFULL","ENOANO","EBADRQC","EBADSLT","EDEADLOCK","EBFONT","ENOSTR","ENODATA","ETIME","ENOSR","ENONET","ENOPKG","EREMOTE","ENOLINK","EADV","ESRMNT","ECOMM","EPROTO","EMULTIHOP","EDOTDOT","EBADMSG","ENOTUNIQ","EBADFD","EREMCHG","ELIBACC","ELIBBAD","ELIBSCN","ELIBMAX","ELIBEXEC","ENOSYS","ENOTEMPTY","ENAMETOOLONG","ELOOP","EOPNOTSUPP","EPFNOSUPPORT","ECONNRESET","ENOBUFS","EAFNOSUPPORT","EPROTOTYPE","ENOTSOCK","ENOPROTOOPT","ESHUTDOWN","ECONNREFUSED","EADDRINUSE","ECONNABORTED","ENETUNREACH","ENETDOWN","ETIMEDOUT","EHOSTDOWN","EHOSTUNREACH","EINPROGRESS","EALREADY","EDESTADDRREQ","EMSGSIZE","EPROTONOSUPPORT","ESOCKTNOSUPPORT","EADDRNOTAVAIL","ENETRESET","EISCONN","ENOTCONN","ETOOMANYREFS","EUSERS","EDQUOT","ESTALE","ENOTSUP","ENOMEDIUM","EILSEQ","EOVERFLOW","ECANCELED","ENOTRECOVERABLE","EOWNERDEAD","ESTRPIPE","mounts","devices","streams","nextInode","nameTable","currentPath","initialized","ignorePermissions","trackingDelegate","tracking","openFlags","READ","WRITE","filesystems","syncFSRequests","handleFSError","defaults","follow_mount","recurse_count","current","current_path","islast","isMountpoint","mounted","follow","count","getPath","isRoot","hashName","parentid","hash","hashAddNode","name_next","hashRemoveNode","mayLookup","nodeName","FSNode","readMode","writeMode","defineProperties","isFolder","isDevice","destroyNode","isSocket","flagModes","rs","w","wx","xw","a","ax","xa","modeStringToFlags","flagsToPermissionString","flag","perms","nodePermissions","mayCreate","mayDelete","isdir","mayOpen","MAX_OPEN_FDS","nextfd","fd_start","fd_end","getStream","createStream","FSStream","object","isRead","isWrite","isAppend","newStream","closeStream","device","getDevice","major","minor","makedev","ma","mi","getMounts","m","completed","doCallback","pseudo","mountRoot","unmount","next","mkdirTree","dirs","d","mkdev","newpath","old_path","new_path","old_dir","old_dirname","new_dirname","old_name","message","dontFollow","lstat","lchmod","fchmod","chown","lchown","fchown","truncate","ftruncate","created","ungotten","readFiles","trackingFlags","isClosed","getdents","seeking","bytesWritten","munmap","ioctl","cmd","readFile","encoding","actualNumBytes","isView","chdir","createDefaultDirectories","createDefaultDevices","random_device","crypto","randomBuffer","getRandomValues","crypto_module","createDevice","createSpecialDirectories","createStandardStreams","stdout","stderr","ensureErrnoError","setErrno","writable","constructor","fflush","canRead","canWrite","joinPath","forceRelative","absolutePath","standardizePath","findObject","dontResolveLastLink","analyzePath","exists","parentExists","parentPath","parentObject","createFolder","createPath","part","createFile","properties","createDataFile","createLink","forceLoadFile","success","createLazyFile","LazyUint8Array","lengthKnown","chunks","chunkOffset","chunkSize","chunkNum","getter","setDataGetter","cacheLength","header","datalength","Number","getResponseHeader","hasByteServing","usesGzip","lazyArray","setRequestHeader","doXHR","_length","_chunkSize","fn","createPreloadedFile","dontCreateFile","preFinish","Browser","fullname","processData","byteArray","finish","handled","plugin","asyncLoad","DB_NAME","pathname","saveFilesToDB","openRequest","ok","fail","putRequest","loadFilesFromDB","getRequest","_emscripten_set_main_loop_timing","mainLoop","timingMode","timingValue","scheduler","timeUntilNextTick","tickStartTime","_emscripten_get_now","setTimeout","runner","method","requestAnimationFrame","setImmediate","setImmediates","emscriptenMainLoopMessageId","addEventListener","stopPropagation","postMessage","currentlyRunningMainloop","currentFrameNumber","queue","pause","resume","fps","simulateInfiniteLoop","noSetTiming","browserIterationFunc","thisMainLoopId","blocker","remainingBlockers","remaining","counted","updateStatus","GL","newRenderingFrameStarted","ctx","runIter","SDL","audio","queueNewAudioData","_emscripten_set_main_loop","expected","expectedBlockers","isFullscreen","pointerLock","moduleContextCreatedCallbacks","workers","initted","Blob","hasBlobConstructor","BlobBuilder","MozBlobBuilder","WebKitBlobBuilder","URLObject","webkitURL","noImageDecoding","imagePlugin","test","b","getMimetype","bb","append","getBlob","createObjectURL","img","Image","complete","canvas","createElement","width","height","getContext","drawImage","revokeObjectURL","audioPlugin","noAudioDecoding","Audio","BASE","leftchar","leftbits","PAD","encode64","safeSetTimeout","requestPointerLock","exitPointerLock","pointerLockChange","ev","createContext","useWebGL","setInModule","webGLContextAttributes","contextHandle","contextAttributes","antialias","alpha","majorVersion","attribute","GLctx","makeContextCurrent","destroyContext","fullscreenHandlersInstalled","lockPointer","resizeCanvas","requestFullscreen","vrDevice","fullscreenChange","canvasContainer","parentNode","exitFullscreen","setFullscreenCanvasSize","updateCanvasDimensions","insertBefore","removeChild","setWindowedCanvasSize","appendChild","Element","vrDisplay","requestFullScreen","nextRAF","fakeRequestAnimationFrame","delay","RAF","safeCallback","allowAsyncCallbacks","queuedAsyncCallbacks","pauseAsyncCallbacks","resumeAsyncCallbacks","safeRequestAnimationFrame","timeout","safeSetInterval","jpg","jpeg","png","bmp","ogg","wav","mp3","getUserMedia","getMovementX","getMovementY","getMouseWheelDelta","delta","detail","wheelDelta","deltaY","deltaMode","mouseX","mouseY","mouseMovementX","mouseMovementY","touches","lastTouches","calculateMouseEvent","rect","getBoundingClientRect","cw","scrollX","pageXOffset","scrollY","pageYOffset","touch","adjustedX","pageX","left","adjustedY","pageY","top","coords","identifier","noRunDep","resizeListeners","updateResizeListeners","listener","setCanvasSize","noUpdates","windowedWidth","windowedHeight","screen","wNative","hNative","widthNative","heightNative","h","round","factor","removeProperty","setProperty","wgetRequests","nextWgetRequestHandle","getNextWgetRequestHandle","handle","copyOnLock","discardOnLock","opaqueFrontBuffer","version","surfaces","canvasPool","events","fonts","audios","rwops","music","volume","mixerFrequency","mixerFormat","mixerNumChannels","mixerChunkSize","channelMinimumNumber","glAttributes","keyboardState","keyboardMap","canRequestFullscreen","isRequestingFullscreen","textInput","startTime","initFlags","buttonState","modState","DOMButtons","DOMEventToSDLEvent","TOUCH_DEFAULT_ID","eventHandler","eventHandlerContext","eventHandlerTemp","keyCodes","scanCodes","loadRect","updateRect","intersectionOfRects","first","second","leftX","leftY","rightX","rightY","checkPixelFormat","fmt","loadColorToCSSRGB","color","rgba","loadColorToCSSRGBA","translateColorToCSSRGBA","translateRGBAToCSSRGBA","g","translateRGBAToColor","makeSurface","usePageCanvas","rmask","gmask","bmask","amask","is_SDL_HWSURFACE","is_SDL_HWPALETTE","is_SDL_OPENGL","surf","pixelFormat","bpp","depth","stencil","locked","isFlagSet","copyIndexedColorData","surfData","rX","rY","rW","rH","colors","fullWidth","fullHeight","startX","startY","endX","endY","image","data32","colors32","freeSurface","refcountPointer","refcount","_free","blitSurface","srcrect","dstrect","scale","sr","dr","blitw","blith","srcData","dstData","clipRect","widthScale","heightScale","oldAlpha","globalAlpha","screenIsReadOnly","createImageData","getImageData","num","_SDL_LockSurface","downFingers","savedKeydown","receiveEvent","unpressAllPressedKeys","keyCode","firstTouch","mouseEventType","mouseEvent","button","clientX","clientY","changedTouches","deltaX","deviceID","unicode","keypressCharCode","charCode","visible","hidden","flushEventsToHandler","lookupKeyCodeForEvent","KeyboardEvent","DOM_KEY_LOCATION_RIGHT","handleEvent","down","pollEvent","joystickEventState","queryJoysticks","makeCEvent","_memcpy","scan","cStr","dx","dy","force","state","axis","joystickAxisValueConversion","visibilityEventID","makeFontString","fontName","estimateTextWidth","fontData","fontString","tempCtx","ttfContext","font","measureText","allocateChannels","numChannels","channels","setGetVolume","webAudioGainNode","setPannerPosition","z","webAudioPannerNode","playWebAudio","webAudioNode","webAudioAvailable","webAudio","resource","paused","decodedBuffer","onDecodeComplete","audioContext","loop","currentPosition","pauseWebAudio","duration","openAudioContext","fillWebAudioBufferFromHeap","heapPtr","sizeSamplesPerChannel","dstAudioBuffer","c","channelData","format","debugSurface","lastJoystickState","joystickNamePool","recordJoystickState","joystick","buttons","getJoystickButtonState","axes","getGamepad","prevState","getGamepads","fcn","webkitGamepads","mozGamepads","gamepads","webkitGetGamepads","deviceIndex","ENV","___buildEnvironment","environ","poolPtr","envPtr","called","languages","MAX_ENV_VALUES","strings","totalSize","line","_clock_gettime","clk_id","tp","dateNow","performance","___exception_infos","SYSCALLS","DEFAULT_POLLMASK","mappings","umask","calculateAt","dirfd","dirstream","doStat","doMsync","addr","doMkdir","doMknod","doReadlink","endChar","doAccess","amode","doDup","suggestFD","suggest","doReadv","iov","iovcnt","doWritev","varargs","getStr","getStreamFromFD","get64","low","high","getZero","___syscall202","which","PROCINFO","PIPEFS","BUCKET_BUFFER_SIZE","createPipe","pipe","buckets","roffset","rName","nextname","wName","rNode","wNode","readableStream","writableStream","readable_fd","writable_fd","poll","bucket","request","fsync","currentLength","toRead","totalRead","toRemove","currBucket","bucketSize","tmpSlice","dataLen","freeBytesInCurrBuffer","numBuckets","remElements","newBucket","_exit","implicit","has","checkUnflushedContent","exit","_ceil","_dlopen","_longjmp","_setThrew","_execl","_fabs","_floor","counter","lastError","buffers","mappedBuffers","programs","framebuffers","renderbuffers","textures","uniforms","shaders","vaos","contexts","currentContext","offscreenCanvases","timerQueriesEXT","currArrayBuffer","currElementArrayBuffer","byteSizeByTypeRoot","byteSizeByType","programInfos","stringCache","unpackAlignment","createLog2ceilLookup","MAX_TEMP_BUFFER_SIZE","miniTempBuffer","MINI_TEMP_BUFFER_SIZE","miniTempBufferViews","recordError","errorCode","getNewId","table","numTempVertexBuffersPerSize","log2ceilLookup","maxValue","log2","pow2","generateTempBuffers","quads","context","largestIndex","tempVertexBufferCounters1","tempVertexBufferCounters2","tempVertexBuffers1","tempVertexBuffers2","tempIndexBuffers","ringbufferLength","ringbuffer1","ringbuffer2","tempQuadIndexBuffer","bindBuffer","ELEMENT_ARRAY_BUFFER","numIndexes","quadIndexes","bufferData","STATIC_DRAW","getTempVertexBuffer","sizeBytes","ringbuffer","nextFreeBufferIndex","vbo","prevVBO","getParameter","ARRAY_BUFFER_BINDING","ARRAY_BUFFER","DYNAMIC_DRAW","getTempIndexBuffer","ibo","prevIBO","ELEMENT_ARRAY_BUFFER_BINDING","vb","getSource","shader","getShaderParameter","GLEmulation","findToken","getExtension","registerContext","attributes","GLctxObject","enableExtensionsByDefault","initExtensions","deleteContext","JSEvents","removeAllHandlersOnTarget","acquireInstancedArraysExtension","ext","divisor","primcount","indices","acquireVertexArrayObjectExtension","vao","acquireDrawBuffersExtension","n","bufs","initExtensionsDone","compressionExt","anisotropicExt","disjointTimerQueryExt","automaticallyEnabledExtensions","exts","getSupportedExtensions","populateUniformTable","program","ptable","maxUniformLength","maxAttributeLength","maxUniformBlockNameLength","utable","numUniforms","getProgramParameter","getActiveUniform","loc","getUniformLocation","_glEnable","x0","_glDisable","emscriptenWebGLGet","name_","formats","_glGetBooleanv","_glGetIntegerv","stringToNewUTF8","jsString","cString","_glGetString","gl_exts","glVersion","VERSION","glslVersion","SHADING_LANGUAGE_VERSION","ver_num","_glCreateShader","shaderType","createShader","_glAttachShader","attachShader","_glDetachShader","detachShader","_glUseProgram","useProgram","_glDeleteProgram","deleteProgram","_glBindAttribLocation","bindAttribLocation","_glLinkProgram","linkProgram","_glBindBuffer","GLImmediate","lastArrayBuffer","_glGetFloatv","_glHint","x1","_glEnableVertexAttribArray","enableVertexAttribArray","_glDisableVertexAttribArray","disableVertexAttribArray","_glVertexAttribPointer","normalized","stride","vertexAttribPointer","_glActiveTexture","vec3","mat3","mat4","quat4","MatrixArray","fogStart","fogEnd","fogDensity","fogColor","fogMode","fogEnabled","currentVao","enabledVertexAttribArrays","hasRunInit","token","isIdentChar","validCapabilities","glEnable","cap","lastRenderer","cleanup","currentRenderer","glDisable","glGetBooleanv","pname","attrib","getAttributeFromCapability","enabledClientAttributes","glGetIntegerv","params","MAX_TEXTURE_IMAGE_UNITS","MAX_VERTEX_UNIFORM_VECTORS","MAX_FRAGMENT_UNIFORM_VECTORS","MAX_VARYING_VECTORS","MAX_COMBINED_TEXTURE_IMAGE_UNITS","clientAttributes","VERTEX","COLOR","TEXTURE0","clientActiveTexture","glGetString","shaderInfos","glCreateShader","ftransform","programShaders","glAttachShader","glDetachShader","programShader","glUseProgram","currProgram","fixedFunctionProgram","glDeleteProgram","zeroUsedPrograms","glBindAttribLocation","glLinkProgram","glBindBuffer","elementArrayBuffer","glGetFloatv","matrix","glHint","glEnableVertexAttribArray","glDisableVertexAttribArray","glVertexAttribPointer","pointer","vertexAttribPointers","NORMAL","MapTreeLib","spawnMapTreeLib","CNaiveListMap","__contains_i","__get_i","list","insert","CMapTree","CNLNode","child","keyFrag","CKeyView","cur","reset","staticKeyView","createKeyView","clear","getStaticKeyView","TexEnvJIT","spawnTexEnvJIT","GL_TEXTURE_1D","GL_TEXTURE_2D","GL_TEXTURE_3D","GL_TEXTURE_CUBE_MAP","GL_TEXTURE_ENV","GL_TEXTURE_ENV_COLOR","GL_RGB_SCALE","GL_ALPHA_SCALE","GL_REPLACE","GL_MODULATE","GL_TEXTURE","GL_CONSTANT","GL_PREVIOUS","GL_SRC_COLOR","GL_SRC_ALPHA","TEXENVJIT_NAMESPACE_PREFIX","TEX_UNIT_UNIFORM_PREFIX","TEX_COORD_VARYING_PREFIX","PRIM_COLOR_VARYING","TEX_MATRIX_UNIFORM_PREFIX","s_texUnits","s_activeTexture","s_requiredTexUnitsForPass","abort_noSupport","abort_sanity","genTexUnitSampleExpr","texUnitID","texType","getTexType","texCoordExpr","getCurTexUnit","genCombinerSourceExpr","constantExpr","previousVar","op","srcExpr","expr","valToFloatLiteral","CTexEnv","colorCombiner","alphaCombiner","colorScale","alphaScale","envColor","colorSrc","alphaSrc","colorOp","alphaOp","traverseKey","key0","key1","key2","computeKey0","computeKey1","computeKey2","recomputeKey","invalidateKey","CTexUnit","enabled_tex1D","enabled_tex2D","enabled_tex3D","enabled_texCube","texTypesEnabled","traverseState","keyView","enabled","genPassLines","passOutputVar","passInputVar","load","lines","texLoadLines","texLoadRegex","loadCounter","texLoadExpr","texLoadVar","colorVar","prefix","alphaVar","texVar","colorLines","genCombinerLines","alphaLines","isColor","outputVar","combiner","srcArr","opArr","argsNeeded","src0Expr","src1Expr","src2Expr","outputType","arg2Var","getTypeFromCombineOp","gl","specifiedMaxTextureImageUnits","maxTexUnits","setGLSLVars","uTexUnitPrefix","vTexCoordPrefix","vPrimColor","uTexMatrixPrefix","genAllPassLines","resultDest","indentSize","lastPassVar","newLines","indent","getUsedTexUnitList","getTexUnitType","hook_activeTexture","texture","hook_enable","hook_disable","hook_texEnvf","param","hook_texEnvi","hook_texEnvfv","hook_getTexEnviv","hook_getTexEnvfv","vertexData","vertexDataU8","tempData","indexData","vertexCounter","rendererCache","rendererComponents","rendererComponentPointer","lastProgram","lastStride","matrixStack","currentMatrix","tempMatrix","matricesModified","useTextureMatrix","NUM_ATTRIBUTES","MAX_TEXTURES","totalEnabledClientAttributes","liveClientAttributes","modifiedClientAttributes","clientColor","usedTexUnitList","setClientAttribute","addRendererComponent","disableBeginEndClientAttributes","getRenderer","enabledAttributesKey","fogParam","renderer","createRenderer","useCurrProgram","hasTextures","texAttribName","aTexCoordPrefix","VERTEX_SHADER","vertexShader","fragmentShader","fogFormula","fsTexEnvPass","texUnitAttribList","texUnitVaryingList","texUnitUniformList","vsTexCoordInits","texUnit","vsFogVaryingInit","vsSource","shaderSource","compileShader","fogHeaderIfNeeded","fogPass","fsSource","FRAGMENT_SHADER","createProgram","maxVertexAttribs","MAX_VERTEX_ATTRIBS","textureMatrixVersion","positionLocation","getAttribLocation","texCoordLocations","colorLocation","prevBoundProg","CURRENT_PROGRAM","texSamplerLoc","uniform1i","vertexAttrib4fv","textureMatrixLocations","normalLocation","modelViewLocation","projectionLocation","hasNormal","hasColor","floatType","FLOAT","fogColorLocation","fogEndLocation","fogScaleLocation","fogDensityLocation","hasFog","prepare","firstVertex","lastVertex","bufferSubData","modelViewMatrixVersion","matrixVersion","uniformMatrix4fv","projectionMatrixVersion","posAttr","normalAttr","attribLoc","texAttr","vertexAttrib4f","t","colorAttr","uniform4fv","uniform1f","setupFuncs","setupHooks","glActiveTexture","_glTexEnvf","_glTexEnvi","enabledClientAttribIndices","matrixLib","identity","prepareClientAttributes","beginEnd","clientStartPointer","bytes","minStride","maxStride","restrideBuffer","srcStride","size4","srcStride4","vertexPointer","numProvidedIndexes","startIndex","numVertexes","emulatedElementArrayBuffer","currIndex","indexBuffer","drawElements","TRIANGLES","UNSIGNED_SHORT","drawArrays","vec","dest","add","vec2","subtract","multiply","negate","cross","x2","y2","z2","dot","direction","lerp","dist","unproject","view","proj","viewport","inverse","multiplyVec4","mat","transpose","a01","a02","a12","toMat4","a03","a13","a23","determinant","a00","a10","a11","a20","a21","a22","a30","a31","a32","a33","invDet","b00","b01","b02","b03","b04","b05","b06","b07","b08","b09","b10","b11","toRotationMat","toMat3","toInverseMat3","b21","mat2","b12","b13","b20","b22","b23","b30","b31","b32","b33","multiplyVec3","translate","rotate","angle","rotateX","rotateY","rotateZ","frustum","right","bottom","near","far","rl","tb","perspective","fovy","aspect","tan","PI","ortho","lookAt","eye","center","y0","y1","z0","z1","eyex","eyey","eyez","upx","upy","upz","centerx","centery","centerz","fromRotationTranslation","quat","xx","xy","xz","yy","yz","zz","wy","wz","calculateW","quat2","q0","q1","q2","q3","invDot","conjugate","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","qx","qy","qz","qw","ix","iy","iz","iw","slerp","halfTheta","sinHalfTheta","ratioA","ratioB","cosHalfTheta","acos","_llvm_cos_f64","_llvm_sin_f64","_llvm_stacksave","LLVM_SAVEDSTACKS","_llvm_trunc_f64","_tzset","__get_timezone","getTimezoneOffset","winter","summer","__get_daylight","winterName","extractZone","summerName","winterNamePtr","summerNamePtr","__get_tzname","toTimeString","_localtime_r","time","tmPtr","getSeconds","getMinutes","getHours","getDate","getMonth","getFullYear","getDay","yday","summerOffset","winterOffset","zonePtr","_usleep","useconds","msec","abortOnCannotGrowMemory","requestedSize","_sqrt","__isLeapYear","year","__arraySum","sum","__MONTH_DAYS_LEAP","__MONTH_DAYS_REGULAR","__addDays","days","newDate","leap","currentMonth","daysInCurrentMonth","setDate","setMonth","setFullYear","_strftime","maxsize","tm","tm_zone","tm_sec","tm_min","tm_hour","tm_mday","tm_mon","tm_year","tm_wday","tm_yday","tm_isdst","tm_gmtoff","pattern","EXPANSION_RULES_1","rule","RegExp","WEEKDAYS","MONTHS","leadingSomething","digits","character","leadingNulls","compareByDay","date1","date2","sgn","compare","getFirstWeekStartDate","janFourth","getWeekBasedYear","thisDate","janFourthThisYear","janFourthNextYear","firstWeekStartThisYear","firstWeekStartNextYear","EXPANSION_RULES_2","substring","twelveHour","janFirst","firstSunday","endDate","februaryFirstUntilEndMonth","daysDifference","firstMonday","off","ahead","_wait","stat_loc","ASSERTIONS","stringy","u8array","numBytesWritten","chr","decodeBase64","atob","chr1","chr2","chr3","enc2","enc3","enc4","keyStr","_","decoded","intArrayFromBase64","asmLibraryArg","allocSize","kb","$a","Qa","Ga","Hd","Dd","xd","rd","hd","ad","Vc","Rc","Ic","Dc","xc","rc","lc","gc","$b","Vb","Sb","Rb","Qb","Pb","Ob","Nb","Mb","Lb","Kb","Jb","Ib","Hb","Gb","Fb","Eb","Db","Cb","Bb","Ab","zb","yb","xb","wb","ub","sb","rb","qb","pb","ob","nb","mb","lb","jb","ib","hb","gb","fb","eb","_a","Za","Ya","Xa","Wa","Va","Ua","Ta","Sa","Ra","Pa","Oa","Na","Ma","La","Ka","Ja","Ia","Ha","H","a1","sp","dynCall_dd","X","dynCall_di","dynCall_i","dynCall_ii","Fa","a2","a3","dynCall_iidi","dynCall_iii","dynCall_iiii","N","a4","dynCall_iiiii","ha","a5","dynCall_iiiiii","dynCall_v","dynCall_vi","o","dynCall_vii","na","dynCall_viid","dynCall_viii","A","dynCall_viiidd","M","dynCall_viiii","ga","dynCall_viiiii","Gd","L","doSwapBuffers","Fd","errorMessage","Ed","keyboardListeningElement","_memset","K","_SDL_AudioQuit","removeEventListener","Cd","Bd","a0","Ad","destructor","adjusted","caught","rethrown","__ZSt18uncaught_exceptionv","uncaught_exceptions","zd","yd","Ea","la","wd","vd","Da","offset_high","offset_low","DOUBLE_LIMIT","ud","Ca","td","sd","rlim","Ba","qd","pd","od","nd","md","ld","dirp","struct_size","W","kd","jd","old_limit","gd","ed","Aa","dd","old","cd","fdPtr","res","fa","ea","argp","R","bd","$c","usage","_c","linkpath","Zc","Yc","malloc","__emscripten_syscall_munmap","V","$","Xc","Wc","_clock","Uc","time1","time0","Tc","za","da","ka","ya","Q","Sc","Qc","Pc","Oc","Nc","Mc","Lc","ja","F","Kc","Jc","Hc","D","_getenv","wa","Gc","ca","enabledClientAttributes_preBegin","clientAttributes_preBegin","components","Fc","Ec","va","x3","UNSIGNED_BYTE","_emscripten_glColor4f","Cc","C","q","Bc","Ac","zc","top_","nearVal","farVal","yc","B","U","G","wc","vc","uc","tc","ba","aa","sc","ta","qc","pc","sa","ra","E","oc","nc","no","addedResizeListener","settingVideoMode","mc","pid","Tb","retl","_llvm_bswap_i32","reth","T","kc","pow","LN10","jc","LN2","P","Z","J","ic","hc","fc","mp_interrupt_char","O","ec","rqtp","rmtp","seconds","nanoseconds","ia","dc","I","cc","envname","envval","overwrite","__get_environ","bc","signum","act","oldact","ac","_b","Zb","Yb","qa","S","command","Y","Xb","pa","Wb","times","oa","Ub","asm","run","doRun","postRun","preRun","lastChar","runCaller","abortDecorators","what","decorator"],"sourceRoot":""}
|