UNPKG

@sparkjsdev/spark

Version:

An advanced 3D Gaussian Splatting renderer for THREE.js

39 lines 5.38 MB
import * as THREE from "three"; import { Loader, FileLoader, Quaternion, Vector3, Color, Matrix4 } from "three"; import { FullScreenQuad } from "three/addons/postprocessing/Pass.js"; class OldSplatGeometry extends THREE.InstancedBufferGeometry { constructor(ordering, activeSplats) { super(); this.ordering = ordering; this.setAttribute("position", new THREE.BufferAttribute(QUAD_VERTICES$1, 3)); this.setIndex(new THREE.BufferAttribute(QUAD_INDICES$1, 1)); this._maxInstanceCount = ordering.length; this.instanceCount = activeSplats; this.attribute = new THREE.InstancedBufferAttribute(ordering, 1, false, 1); this.attribute.setUsage(THREE.DynamicDrawUsage); this.setAttribute("splatIndex", this.attribute); } update(ordering, activeSplats) { this.ordering = ordering; this.attribute.array = ordering; this.instanceCount = activeSplats; this.attribute.addUpdateRange(0, activeSplats); this.attribute.needsUpdate = true; } } const QUAD_VERTICES$1 = new Float32Array([ -1, -1, 0, 1, -1, 0, 1, 1, 0, -1, 1, 0 ]); const QUAD_INDICES$1 = new Uint16Array([0, 1, 2, 0, 2, 3]); const jsContent$1 = '(function() {\n "use strict";\n class CsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n CsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n CsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_csplatarray_free(ptr, 0);\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.csplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.csplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.csplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.csplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.csplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.csplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.csplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats() {\n const ret = wasm.csplatarray_to_packedsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_packedsplats_lod() {\n const ret = wasm.csplatarray_to_packedsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_csplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_csplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_csplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_csplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n }\n if (Symbol.dispose) CsplatArray.prototype[Symbol.dispose] = CsplatArray.prototype.free;\n class GsplatArray {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(GsplatArray.prototype);\n obj.__wbg_ptr = ptr;\n GsplatArrayFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n GsplatArrayFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_gsplatarray_free(ptr, 0);\n }\n /**\n * @returns {number}\n */\n get maxShDegree() {\n const ret = wasm.__wbg_get_gsplatarray_maxShDegree(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n get numSplats() {\n const ret = wasm.__wbg_get_gsplatarray_numSplats(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n */\n bhatt_lod(lod_base) {\n wasm.gsplatarray_bhatt_lod(this.__wbg_ptr, lod_base);\n }\n /**\n * @returns {boolean}\n */\n has_lod() {\n const ret = wasm.gsplatarray_has_lod(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} rgba\n */\n inject_rgba8(rgba) {\n wasm.gsplatarray_inject_rgba8(this.__wbg_ptr, rgba);\n }\n /**\n * @returns {number}\n */\n len() {\n const ret = wasm.gsplatarray_len(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} lod_base\n * @param {boolean} merge_filter\n */\n tiny_lod(lod_base, merge_filter) {\n wasm.gsplatarray_tiny_lod(this.__wbg_ptr, lod_base, merge_filter);\n }\n /**\n * @returns {object}\n */\n to_extsplats() {\n const ret = wasm.gsplatarray_to_extsplats(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {object}\n */\n to_extsplats_lod() {\n const ret = wasm.gsplatarray_to_extsplats_lod(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} encoding\n * @returns {object}\n */\n to_packedsplats_lod(encoding) {\n const ret = wasm.gsplatarray_to_packedsplats_lod(this.__wbg_ptr, encoding);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {number} arg0\n */\n set maxShDegree(arg0) {\n wasm.__wbg_set_gsplatarray_maxShDegree(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} arg0\n */\n set numSplats(arg0) {\n wasm.__wbg_set_gsplatarray_numSplats(this.__wbg_ptr, arg0);\n }\n }\n if (Symbol.dispose) GsplatArray.prototype[Symbol.dispose] = GsplatArray.prototype.free;\n function sort32_splats(num_splats, readback, ordering) {\n const ret = wasm.sort32_splats(num_splats, readback, ordering);\n return ret >>> 0;\n }\n function sort_splats(num_splats, readback, ordering) {\n const ret = wasm.sort_splats(num_splats, readback, ordering);\n return ret >>> 0;\n }\n function __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg_Error_2e59b1b37a9a34c3: function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return ret;\n },\n __wbg___wbindgen_boolean_get_a86c216575a75c30: function(arg0) {\n const v = arg0;\n const ret = typeof v === "boolean" ? v : void 0;\n return isLikeNone(ret) ? 16777215 : ret ? 1 : 0;\n },\n __wbg___wbindgen_debug_string_dd5d2d07ce9e6c57: function(arg0, arg1) {\n const ret = debugString(arg1);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_in_4bd7a57e54337366: function(arg0, arg1) {\n const ret = arg0 in arg1;\n return ret;\n },\n __wbg___wbindgen_is_falsy_c6ddfae1bb56d5ef: function(arg0) {\n const ret = !arg0;\n return ret;\n },\n __wbg___wbindgen_is_object_40c5a80572e8f9d3: function(arg0) {\n const val = arg0;\n const ret = typeof val === "object" && val !== null;\n return ret;\n },\n __wbg___wbindgen_is_undefined_c0cca72b82b86f4d: function(arg0) {\n const ret = arg0 === void 0;\n return ret;\n },\n __wbg___wbindgen_jsval_loose_eq_3a72ae764d46d944: function(arg0, arg1) {\n const ret = arg0 == arg1;\n return ret;\n },\n __wbg___wbindgen_number_get_7579aab02a8a620c: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof obj === "number" ? obj : void 0;\n getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n },\n __wbg___wbindgen_string_get_914df97fcfa788f2: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof obj === "string" ? obj : void 0;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_throw_81fc77679af83bc6: function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n __wbg_csplatarray_new: function(arg0) {\n const ret = CsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n },\n __wbg_get_4848e350b40afc16: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_f96702c6245e4ef9: function() {\n return handleError(function(arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments);\n },\n __wbg_get_unchecked_7d7babe32e9e6a54: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_with_ref_key_6412cf3094599694: function(arg0, arg1) {\n const ret = arg0[arg1];\n return ret;\n },\n __wbg_gsplatarray_new: function(arg0) {\n const ret = GsplatArray.__wrap(arg0);\n return ret;\n },\n __wbg_instanceof_ArrayBuffer_ff7c1337a5e3b33a: function(arg0) {\n let result;\n try {\n result = arg0 instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Uint8Array_4b8da683deb25d72: function(arg0) {\n let result;\n try {\n result = arg0 instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_length_0c32cb8543c8e4c8: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_1e701798fdcaa3b4: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_6e821edde497a532: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_a4ca9e78359b5f1f: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_new_227d7c05414eb861: function() {\n const ret = new Error();\n return ret;\n },\n __wbg_new_4f9fafbb3909af72: function() {\n const ret = new Object();\n return ret;\n },\n __wbg_new_a560378ea1240b14: function(arg0) {\n const ret = new Uint8Array(arg0);\n return ret;\n },\n __wbg_new_f3c9df4f38f3f798: function() {\n const ret = new Array();\n return ret;\n },\n __wbg_new_with_length_41a22191b9bdfd66: function(arg0) {\n const ret = new Uint32Array(arg0 >>> 0);\n return ret;\n },\n __wbg_prototypesetcall_3e05eb9545565046: function(arg0, arg1, arg2) {\n Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_64c287a27cc24d27: function(arg0, arg1, arg2) {\n Uint16Array.prototype.set.call(getArrayU16FromWasm0(arg0, arg1), arg2);\n },\n __wbg_prototypesetcall_e42275e601e14eeb: function(arg0, arg1, arg2) {\n Uint32Array.prototype.set.call(getArrayU32FromWasm0(arg0, arg1), arg2);\n },\n __wbg_push_6bdbc990be5ac37b: function(arg0, arg1) {\n const ret = arg0.push(arg1);\n return ret;\n },\n __wbg_set_448126769bf7c181: function(arg0, arg1, arg2) {\n arg0.set(getArrayU32FromWasm0(arg1, arg2));\n },\n __wbg_set_6be42768c690e380: function(arg0, arg1, arg2) {\n arg0[arg1] = arg2;\n },\n __wbg_set_81b4174352e6a095: function(arg0, arg1, arg2) {\n arg0.set(arg1, arg2 >>> 0);\n },\n __wbg_set_8ee2d34facb8466e: function() {\n return handleError(function(arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments);\n },\n __wbg_set_index_338a66e40fc45dee: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2 >>> 0;\n },\n __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg_subarray_0f98d3fb634508ad: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_517cd0f1811ab872: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_subarray_d51e89458b3fdbf6: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbindgen_cast_0000000000000001: function(arg0) {\n const ret = arg0;\n return ret;\n },\n __wbindgen_cast_0000000000000002: function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_init_externref_table: function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, void 0);\n table.set(offset + 0, void 0);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n }\n };\n return {\n __proto__: null,\n "./spark_worker_rs_bg.js": import0\n };\n }\n typeof FinalizationRegistry === "undefined" ? {} : new FinalizationRegistry((ptr) => wasm.__wbg_chunkdecoder_free(ptr >>> 0, 1));\n const CsplatArrayFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {\n }, unregister: () => {\n } } : new FinalizationRegistry((ptr) => wasm.__wbg_csplatarray_free(ptr >>> 0, 1));\n const GsplatArrayFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {\n }, unregister: () => {\n } } : new FinalizationRegistry((ptr) => wasm.__wbg_gsplatarray_free(ptr >>> 0, 1));\n function addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_externrefs.set(idx, obj);\n return idx;\n }\n function debugString(val) {\n const type = typeof val;\n if (type == "number" || type == "boolean" || val == null) {\n return `${val}`;\n }\n if (type == "string") {\n return `"${val}"`;\n }\n if (type == "symbol") {\n const description = val.description;\n if (description == null) {\n return "Symbol";\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == "function") {\n const name = val.name;\n if (typeof name == "string" && name.length > 0) {\n return `Function(${name})`;\n } else {\n return "Function";\n }\n }\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = "[";\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for (let i2 = 1; i2 < length; i2++) {\n debug += ", " + debugString(val[i2]);\n }\n debug += "]";\n return debug;\n }\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n return toString.call(val);\n }\n if (className == "Object") {\n try {\n return "Object(" + JSON.stringify(val) + ")";\n } catch (_) {\n return "Object";\n }\n }\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\n${val.stack}`;\n }\n return className;\n }\n function getArrayU16FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint16ArrayMemory0().subarray(ptr / 2, ptr / 2 + len);\n }\n function getArrayU32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n }\n function getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n }\n let cachedDataViewMemory0 = null;\n function getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || cachedDataViewMemory0.buffer.detached === void 0 && cachedDataViewMemory0.buffer !== wasm.memory.buffer) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n }\n function getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n }\n let cachedUint16ArrayMemory0 = null;\n function getUint16ArrayMemory0() {\n if (cachedUint16ArrayMemory0 === null || cachedUint16ArrayMemory0.byteLength === 0) {\n cachedUint16ArrayMemory0 = new Uint16Array(wasm.memory.buffer);\n }\n return cachedUint16ArrayMemory0;\n }\n let cachedUint32ArrayMemory0 = null;\n function getUint32ArrayMemory0() {\n if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {\n cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32ArrayMemory0;\n }\n let cachedUint8ArrayMemory0 = null;\n function getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n }\n function handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n }\n function isLikeNone(x2) {\n return x2 === void 0 || x2 === null;\n }\n function passStringToWasm0(arg, malloc, realloc) {\n if (realloc === void 0) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr2 = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr2, ptr2 + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr2;\n }\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n const mem = getUint8ArrayMemory0();\n let offset = 0;\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 127) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n WASM_VECTOR_LEN = offset;\n return ptr;\n }\n function takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n }\n let cachedTextDecoder = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n const MAX_SAFARI_DECODE_BYTES = 2146435072;\n let numBytesDecoded = 0;\n function decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n }\n const cachedTextEncoder = new TextEncoder();\n if (!("encodeInto" in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function(arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n };\n }\n let WASM_VECTOR_LEN = 0;\n let wasm;\n function __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n cachedDataViewMemory0 = null;\n cachedUint16ArrayMemory0 = null;\n cachedUint32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n }\n async function __wbg_load(module, imports) {\n if (typeof Response === "function" && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === "function") {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n if (validResponse && module.headers.get("Content-Type") !== "application/wasm") {\n console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n", e);\n } else {\n throw e;\n }\n }\n }\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n function expectedResponseType(type) {\n switch (type) {\n case "basic":\n case "cors":\n case "default":\n return true;\n }\n return false;\n }\n }\n async function __wbg_init(module_or_path) {\n if (wasm !== void 0) return wasm;\n if (module_or_path !== void 0) {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({ module_or_path } = module_or_path);\n } else {\n console.warn("using deprecated parameters for the initialization function; pass a single object instead");\n }\n }\n if (module_or_path === void 0) {\n module_or_path = new URL("data:application/wasm;base64,AGFzbQEAAAAB6wZpYAN/f38Bf2ACf38AYAJ/fwF/YAF/AGABfwF/YAN/f38AYAR/f39/AGAFf39/f38AYAADf39/YAZ/f39/f38AYAd/f39/f39/AGAEf39/fwF/YAFvAX9gCH9/f39/f39/AGABfwN/f39gBX9/f39/AX9gAX0BfWAAAGACf28AYAF/AX5gA399fwBgBn9/f39/fwF/YAZ/f39/f30AYAABf2ACf30AYAV/f39+fwBgA29/fwFvYAN/f28AYAF/AW9gAAFvYAJvbwF/YAl/f39/f39/f38AYAF+AX9gAn9vA39/f2ACfX0BfWADb39/AGACb28Bb2ACb38Bb2ACf38Bb2AEf39/fQF/YAx/f39/f39/f39/f38AYAl/f39/f39/f38Bf2AFf39/fX8AYAd/f39/f39/AX9gBX9/f399AGAEf31/fwF/YBN/f39/f39/f39/f39/f39/f39/AX9gE39/f39/f39/f39/f39/f39/f38AYAN+fn8BfmAHf39/f399fQBgA39+fgBgBX9/fn9/AGAFf398f38AYAV/f31/fwBgBH9vf28Df39/YAN/b28Bf2AAAn9/YANvb28Bf2ADb29vAGADb29/AGABbwFvYAF8AW9gCn9/f39/f39/f38Bf2ALf39/f39/f39/f38Bf2AKf39/f39/f39/fwBgBn9/fX9/fwBgAn9/AX1gBH9/f34AYAN/f38BfmACf34AYAN/fX8Bf2AFf39/fn4AYAZ/fn9/f38AYAZ/f39/fX0AYAF/AX1gBH5+f38BfmAFf39/f38BfWAJf39/f39/fn5+AGAEf39/fwF9YAJ+fwBgA39/ewBgAn9+AX9gAn1/AX1gA319fQF9YAR/fn5/AGAGf39/fn9/AGAGf39/fH9/AGAGf39/fX9/AGATf318f39/f39/f39/f39/f39/fwN/f39gCX9/f39/f39/bwN/f39gCH9/f39vf39/A39/f2AHf29/fX9/bwN/f39gB39vb399f38Df39/YAd/f39/f39/A39/f2AGf29vf31/A39/f2AGf29/fX9vA39/f2AFf39/f28Df39/YAR/b29/A39/f2AEf39/fwN/f39gAn9/A39/f2ACf28Cf39gBH9+f38AYAR/fX9/AGAEf3x/fwBgAXwBfwKdFS0XLi9zcGFya193b3JrZXJfcnNfYmcuanMfX193Ymdfc3ViYXJyYXlfZDUxZTg5NDU4YjNmZGJmNgAaFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF8xZTcwMTc5OGZkY2FhM2I0AAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzQ0ODEyNjc2OWJmN2MxODEAIxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcydfX3diZ19wcm90b3R5cGVzZXRjYWxsX2U0MjI3NWU2MDFlMTRlZWIAGxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcyZfX3diZ19uZXdfd2l0aF9sZW5ndGhfNDFhMjIxOTFiOWJkZmQ2NgAcFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzGl9fd2JnX25ld180ZjlmYWZiYjM5MDlhZjcyAB0XLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzhlZTJkMzRmYWNiODQ2NmUAORcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxpfX3diZ19uZXdfZjNjOWRmNGYzOGYzZjc5OAAdFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzG19fd2JnX3B1c2hfNmJkYmM5OTBiZTVhYzM3YgAeFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzGl9fd2JnX2dldF9mOTY3MDJjNjI0NWU0ZWY5ACQXLi9zcGFya193b3JrZXJfcnNfYmcuanMqX193YmdfX193YmluZGdlbl9pc19mYWxzeV9jNmRkZmFlMWJiNTZkNWVmAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzZiZTQyNzY4YzY5MGUzODAAOhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxpfX3diZ19nZXRfNDg0OGUzNTBiNDBhZmMxNgAlFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzFV9fd2JnX2dzcGxhdGFycmF5X25ldwAcFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzFV9fd2JnX2NzcGxhdGFycmF5X25ldwAcFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHF9fd2JnX0Vycm9yXzJlNTliMWIzN2E5YTM0YzMAJhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcytfX3diZ19fX3diaW5kZ2VuX2lzX29iamVjdF80MGM1YTgwNTcyZThmOWQzAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMnX193YmdfZ2V0X3dpdGhfcmVmX2tleV82NDEyY2YzMDk0NTk5Njk0ACQXLi9zcGFya193b3JrZXJfcnNfYmcuanMuX193YmdfX193YmluZGdlbl9pc191bmRlZmluZWRfYzBjY2E3MmI4MmI4NmY0ZAAMFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzJF9fd2JnX19fd2JpbmRnZW5faW5fNGJkN2E1N2U1NDMzNzM2NgAeFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzLF9fd2JnX19fd2JpbmRnZW5fbnVtYmVyX2dldF83NTc5YWFiMDJhOGE2MjBjABIXLi9zcGFya193b3JrZXJfcnNfYmcuanMtX193YmdfX193YmluZGdlbl9ib29sZWFuX2dldF9hODZjMjE2NTc1YTc1YzMwAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193Ymdfc2V0XzgxYjQxNzQzNTJlNmEwOTUAOxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcx1fX3diZ19sZW5ndGhfMGMzMmNiODU0M2M4ZTRjOAAMFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzH19fd2JnX3N1YmFycmF5XzBmOThkM2ZiNjM0NTA4YWQAGhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcydfX3diZ19wcm90b3R5cGVzZXRjYWxsXzNlMDVlYjk1NDU1NjUwNDYAGxcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcyBfX3diZ19zZXRfaW5kZXhfMzM4YTY2ZTQwZmM0NWRlZQAjFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF9hNGNhOWU3ODM1OWI1ZjFmAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMfX193Ymdfc3ViYXJyYXlfNTE3Y2QwZjE4MTFhYjg3MgAaFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzJ19fd2JnX3Byb3RvdHlwZXNldGNhbGxfNjRjMjg3YTI3Y2MyNGQyNwAbFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzHV9fd2JnX2xlbmd0aF82ZTgyMWVkZGU0OTdhNTMyAAwXLi9zcGFya193b3JrZXJfcnNfYmcuanMkX193YmdfZ2V0X3VuY2hlY2tlZF83ZDdiYWJlMzJlOWU2YTU0ACUXLi9zcGFya193b3JrZXJfcnNfYmcuanMaX193YmdfbmV3XzIyN2Q3YzA1NDE0ZWI4NjEAHRcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxxfX3diZ19zdGFja18zYjBkOTc0YmJmMzFlNDRmABIXLi9zcGFya193b3JrZXJfcnNfYmcuanMcX193YmdfZXJyb3JfYTZmYTIwMmI1OGFhMWNkMwABFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzMF9fd2JnX19fd2JpbmRnZW5fanN2YWxfbG9vc2VfZXFfM2E3MmFlNzY0ZDQ2ZDk0NAAeFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzLF9fd2JnX19fd2JpbmRnZW5fc3RyaW5nX2dldF85MTRkZjk3ZmNmYTc4OGYyABIXLi9zcGFya193b3JrZXJfcnNfYmcuanMsX193YmdfaW5zdGFuY2VvZl9VaW50OEFycmF5XzRiOGRhNjgzZGViMjVkNzIADBcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcy1fX3diZ19pbnN0YW5jZW9mX0FycmF5QnVmZmVyX2ZmN2MxMzM3YTVlM2IzM2EADBcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcxpfX3diZ19uZXdfYTU2MDM3OGVhMTI0MGIxNAA8Fy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzJ19fd2JnX19fd2JpbmRnZW5fdGhyb3dfODFmYzc3Njc5YWY4M2JjNgABFy4vc3Bhcmtfd29ya2VyX3JzX2JnLmpzLl9fd2JnX19fd2JpbmRnZW5fZGVidWdfc3RyaW5nX2RkNWQyZDA3Y2U5ZTZjNTcAEhcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcx9fX3diaW5kZ2VuX2luaXRfZXh0ZXJucmVmX3RhYmxlABEXLi9zcGFya193b3JrZXJfcnNfYmcuanMgX193YmluZGdlbl9jYXN0XzAwMDAwMDAwMDAwMDAwMDEAPRcuL3NwYXJrX3dvcmtlcl9yc19iZy5qcyBfX3diaW5kZ2VuX2Nhc3RfMDAwMDAwMDAwMDAwMDAwMgAmA5cKlQoYGBQUAQoKAQkBCgoFCgkKBAQnBAQNJw0BAQYEBAoEBAUNBgQEBAQJCREFBgEJAQQEBAQJCQYBAgcoCQIJASgGBQ0BKQQGAQA+BQE/DQcGAgIGAgYGAQEGBgUEBAQEBgECBgUGBgYCBwkCBgEFBgEBAwMEBA8DBAEHAQcGAAYDBA0BAgEEAQEVAQYBBAIEBQYDBUABDwcDAgEBBwICBSoCCQEFBwQEBgQCBwUfAioGAQcFBgEHBhYGAQcrCQENAAEBAAIFAQIFAQUKLCsGBQcDBgYBDQEFAwEDBAUCBQMCAwMBAQFBAgYBLAcJARADEEIHBwUGAQMHBwECAgQWCQkBAQJDBw0DCUQAAQEBAQELBC0DAwMEAQIBAgECAwMCRQUGBEYBAQEBBwACCRkCBQIBAQcABQQJAQYBRwYGSAMDBQUDAQUDBgUFAwMtBgUKBQYBAwkABQUHAQIDAwMDLi4FCQkvLwkHBwIBAQAGBQEDAwMDAQMAAQIBAQYCAQZJAgsFAQAFAQYJCQQEBAQCBAEVAQICFQABAQUGAwUVBw0ABQUHAgEAAAIFBQAACQUWHwICCgICAQcHAgMHCgUFAwMBARkCBwUwAgUFBQMwBAABAQQBMQMDCgkFAwMEChBKAQUFBQUWBgEDBksHBQEDAwIBBAIBAQUCBgcBAgICAQEDAgQBAkwDTQEHBwcHAQIKBwlOAwNPAgUBAgcHBQsGAgQEBAEDAQIJBgYHAQMPARcHEAIEUAoCBAMGBAQBDwUfAgkDBAsZFAoCAgIQAwcxBAcCAzIAAQcWAQMCAgYBBAECDwEGCwEFAhcGAQICAgICAgYCEAEHAgcDBwUEBAICBAEBAQEBAQIBAgQEAQECAAICAgIBAgMBBwMCAxAEAQMFAgEBAwMAAgMCAQkBAQEFAgIHAwEDAwcCAAcDAwICAgECBwMpBQICAgICAQIFBQEBAQICAgICAlEBAgICAgICAgEDAgkCAQEHAwEDAwEBAQEBCQkCAwIBAQIBAQMBAQEFAQUCAgFSAQICUwMDAQEBBgADAwEDAgELCwUCAgEBBAMBCwMDAgEBAgMDAwEBAQICAAMyAAAHAgUDAwUCAxkFAxQUBwcJAwYFBQUFAwMDAwMDAwYYGAMFAgMABgMEBAQEAgUBBAQECQQDBwQFAwMDAwMCAgICBVQFBAEDEwEDAQEFBARVCVZXAQECBQcCBhAAAAAAAAAAAAAAAAAEAgIAAAAAIAQgAAQgBAQEAgACAgIAWAUTBQEAAAABAgABAgIGBQIBBAICAlkPWgcCBgIHAQFbXF0DEQMDXl8RC2ACNmFiNgEJAgIhIWMhAAICAgICAg4ODg4ODg4ODgQEBAQCAmQBAQEBAgICAgICAgICFQICAgICAgICAQICAQICDwczNTQCAQECAgIGCwIAAQIANzcDAgIiIgACBQMCAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAwECBQEBAQEBAQEBBAIAAgICAgIJAgICAgEBAQECAwEBAQICAgIEaAMDAgcCCQEXBRcSEgIBAgEBAQEBAQEBAgIBAgEBAQEBAQEDBAEDBQEFBQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAwMBAQEBAQEBAQEBEQERAgICAQIBAgECAgICAQEBAQEBAQEEAwEBAQEBAQEBAQMDCgEEAgEiBAQEBAQEEQQXBQQLAnAB4QThBG8AgAgFAwEAEwYPAn8BQYCAwAALfwFBgAgLB7AMPgZtZW1vcnkCABdfX3diZ19jaHVua2RlY29kZXJfZnJlZQCSBBZfX3diZ19jc3BsYXRhcnJheV9mcmVlALYFIV9fd2JnX2dldF9jc3BsYXRhcnJheV9tYXhTaERlZ3JlZQClCB9fX3diZ19nZXRfY3NwbGF0YXJyYXlfbnVtU3BsYXRzAKYIIV9fd2JnX2dldF9nc3BsYXRhcnJheV9tYXhTaERlZ3JlZQCnCB9fX3diZ19nZXRfZ3NwbGF0YXJyYXlfbnVtU3BsYXRzAKgIFl9fd2JnX2dzcGxhdGFycmF5X2ZyZWUAtwUhX193Ymdfc2V0X2NzcGxhdGFycmF5X21heFNoRGVncmVlAKwIH19fd2JnX3NldF9jc3BsYXRhcnJheV9udW1TcGxhdHMArQghX193Ymdfc2V0X2dzcGxhdGFycmF5X21heFNoRGVncmVlAK4IH19fd2JnX3NldF9nc3BsYXRhcnJheV9udW1TcGxhdHMArwgTYmhhdHRfbG9kX2V4dHNwbGF0cwCDCBZiaGF0dF9sb2RfcGFja2Vkc3BsYXRzAIQIE2NodW5rZGVjb2Rlcl9maW5pc2gAoggRY2h1bmtkZWNvZGVyX3B1c2gAqwgVY3NwbGF0YXJyYXlfYmhhdHRfbG9kAP4GE2NzcGxhdGFycmF5X2hhc19sb2QAxgcYY3NwbGF0YXJyYXlfaW5qZWN0X3JnYmE4AMIJD2NzcGxhdGFycmF5X2xlbgDVBxRjc3BsYXRhcnJheV90aW55X2xvZADrBhhjc3BsYXRhcnJheV90b19leHRzcGxhdHMAnAgcY3NwbGF0YXJyYXlfdG9fZXh0c3BsYXRzX2xvZACeCBtjc3BsYXRhcnJheV90b19wYWNrZWRzcGxhdHMAnQgfY3NwbGF0YXJyYXlfdG9fcGFja2Vkc3BsYXRzX2xvZACfCBVkZWNvZGVfdG9fY3NwbGF0YXJyYXkAhwgTZGVjb2RlX3RvX2V4dHNwbGF0cwD+BxVkZWNvZGVfdG9fZ3NwbGF0YXJyYXkAiwgWZGVjb2RlX3RvX3BhY2tlZHNwbGF0cwD0BxBkaXNwb3NlX2xvZF90cmVlAIwCGGV4dHNwbGF0c190b19nc3BsYXRhcnJheQCKCBJnZXRfbG9kX3RyZWVfbGV2ZWwAkwgVZ3NwbGF0YXJyYXlfYmhhdHRfbG9kAP8GGGdzcGxhdGFycmF5X2luamVjdF9yZ2JhOADDCQ9nc3BsYXRhcnJheV9sZW4A1QcUZ3NwbGF0YXJyYXlfdGlueV9sb2QA7AYYZ3NwbGF0YXJyYXlfdG9fZXh0c3BsYXRzAKAIHGdzcGxhdGFycmF5X3RvX2V4dHNwbGF0c19sb2QAoQgbZ3NwbGF0YXJyYXlfdG9fcGFja2Vkc3BsYXRzAJEIH2dzcGxhdGFycmF5X3RvX3BhY2tlZHNwbGF0c19sb2QAkggNaW5pdF9sb2RfdHJlZQCUCAxuZXdfbG9kX3RyZWUApAgTbmV3X3NoYXJlZF9sb2RfdHJlZQCjCBtwYWNrZWRzcGxhdHNfdG9fY3NwbGF0YXJyYXkAjAgbcGFja2Vkc3BsYXRzX3RvX2dzcGxhdGFycmF5AIkIDHNpbWRfZW5hYmxlZADACg1zb3J0MzJfc3BsYXRzANoIC3NvcnRfc3BsYXRzANsIEnRpbnlfbG9kX2V4dHNwbGF0cwD9BxV0aW55X2xvZF9wYWNrZWRzcGxhdHMA/AcSdHJhdmVyc2VfbG9kX3RyZWVzANwHEHVwZGF0ZV9sb2RfdHJlZXMA8gcKd2FzbV9zdGFydACFCBNnc3BsYXRhcnJheV9oYXNfbG9kAMYHEV9fd2JpbmRnZW5fbWFsbG9jANoHEl9fd2JpbmRnZW5fcmVhbGxvYwCGCA9fX3diaW5kZ2VuX2ZyZWUAlgcUX193YmluZGdlbl9leG5fc3RvcmUA2gkXX19leHRlcm5yZWZfdGFibGVfYWxsb2MA2gQVX193YmluZGdlbl9leHRlcm5yZWZzAQEZX19leHRlcm5yZWZfdGFibGVfZGVhbGxvYwCbBxBfX3diaW5kZ2VuX3N0YXJ0AL4KCbgJAQBBAQvgBIsFxAnpCPMD7QiNASwrvAnECboJ0gjoB5sF9QSnAqIE8gHVCMQBggeeBOwHrASyCvwC5wP2AagG0AeJBssF5gaWCMMI3gLRCZsIswa0AsQIhQXGCYkG3APTA8AG0AmSCpMKugW4BZsKkwGPBtkG3Qj0BMcH2AjDApoKuAiZCsYJ1gLEBLIGpwOABu0GyAjcBdUFyQjJCMkIrgevB7YHygiwB9MIuAevB8sIsQfMCK8HlAfICLkIkQfZCPEG1AjuBukHlwrhBpwKugixCLsI/ATSCaMG7wfzBNMFqAXSCc8J5APKAo0GwgGDA9sExQTVBH20CecI/QjyCIMJiAnwCIwJhgn0CP8I9wiLCYUJhAmCCfoIjQnxCIcJgAn1CIEJ/gjqCIUE/QnRA4oHkQHKBogIgATmCdYDiQeQAYEE+gnXA4cHhQGGBOwJ0gOIB5IB5gj2CIkJgwfGCc8JswqUCsUJwQqDB9cHkgWBCpIJnAnaBs4FrgKzB6cKsge6BdIGsQXwBfEF/AWGCsQJoArjBN0EhQPCCKoKwgjGCc8Jnwq5CcQJ/QXtB4kK7QexBK4G6wSNB4UKjQeDCv4FkQmMCo8J8Qe1CuAHjQrFCeAHwQqQCYcK6gaECoIKoQrJBagKigqOCYsK3AiICqUHlAnMCdAGswikB78K9wSZCcsJ0QbBCJgHmgnICdcGsgipB5kHlgnHCZkGtQinB4wGlwnJCZgGvwiVCcoJvga0CJcHmwnNCZsG2AfLBoYHmAnOCZoG9gfNBe4HxQa4CZEK6wHaBYAK5wX7CPgI8wjvCIoJ+QjuCPwItQb/Cb0HuAOHA+oJxAe1BfkG8wnMB4kB8AlI8QlSnAPoCcEH0we8BvUJuge2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