From c9801d7468cf9dea54699d21a2333250a944ee5f Mon Sep 17 00:00:00 2001 From: Stefan Eilemann Date: Tue, 19 Nov 2019 09:51:05 +0100 Subject: [PATCH 1/4] Separate tool and library --- CMakeLists.txt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c5f8a00c..2b075286 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -59,7 +59,6 @@ set(BASISU_SRC_LIST ${COMMON_SRC_LIST} basisu_resampler.cpp basisu_resample_filters.cpp basisu_ssim.cpp - basisu_tool.cpp basisu_astc_decomp.cpp lodepng.cpp transcoder/basisu_transcoder.cpp @@ -73,8 +72,11 @@ endif() set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${BIN_DIRECTORY}) -add_executable(basisu ${BASISU_SRC_LIST}) -target_link_libraries(basisu m pthread) +add_library(basisuniversal ${BASISU_SRC_LIST}) +target_link_libraries(basisuniversal m pthread) + +add_executable(basisu basisu_tool.cpp) +target_link_libraries(basisu basisuniversal) install(TARGETS basisu DESTINATION bin) From 5c5b153d77e0432d79d3048e89b16bf4c830b4ae Mon Sep 17 00:00:00 2001 From: Stefan Eilemann Date: Tue, 19 Nov 2019 09:51:20 +0100 Subject: [PATCH 2/4] Keep defaults in params ctor --- basisu_comp.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/basisu_comp.h b/basisu_comp.h index 1c201ddb..2a960490 100644 --- a/basisu_comp.h +++ b/basisu_comp.h @@ -185,11 +185,12 @@ namespace basisu m_max_selector_clusters(512), m_quality_level(-1), m_mip_scale(1.0f, .000125f, 4.0f), + m_mip_filter("kaiser"), m_mip_smallest_dimension(1, 1, 16384), m_compression_level((int)BASISU_DEFAULT_COMPRESSION_LEVEL, 0, (int)BASISU_MAX_COMPRESSION_LEVEL), + m_tex_type(basist::cBASISTexType2D), m_pJob_pool(nullptr) { - clear(); } void clear() From a3d7b99db186564a8529a03acb7833e772e068d9 Mon Sep 17 00:00:00 2001 From: Stefan Eilemann Date: Wed, 20 Nov 2019 10:47:16 +0100 Subject: [PATCH 3/4] Denoise --- basisu_comp.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/basisu_comp.cpp b/basisu_comp.cpp index 90f06572..c941dc40 100644 --- a/basisu_comp.cpp +++ b/basisu_comp.cpp @@ -494,15 +494,10 @@ namespace basisu } } - printf("Total basis file slices: %u\n", (uint32_t)m_slice_descs.size()); - for (uint32_t i = 0; i < m_slice_descs.size(); i++) { const basisu_backend_slice_desc &slice_desc = m_slice_descs[i]; - printf("Slice: %u, alpha: %u, orig width/height: %ux%u, width/height: %ux%u, first_block: %u, image_index: %u, mip_level: %u, iframe: %u\n", - i, slice_desc.m_alpha, slice_desc.m_orig_width, slice_desc.m_orig_height, slice_desc.m_width, slice_desc.m_height, slice_desc.m_first_block_index, slice_desc.m_source_file_index, slice_desc.m_mip_index, slice_desc.m_iframe); - if (m_any_source_image_has_alpha) { // Alpha slices must be at odd slice indices From 6721e7c7f68ce9829d16f87d9356884263d9dfaa Mon Sep 17 00:00:00 2001 From: Stefan Eilemann Date: Fri, 22 Nov 2019 11:04:38 +0100 Subject: [PATCH 4/4] Add JS API to decode all mipmap levels with two wasm calls Reducing the number of wasm calls reduces our decode performance from ~8ms for a 256x256 image to less than 1ms. --- webgl/transcoder/basis_wrappers.cpp | 111 +++++++++++++------ webgl/transcoder/build/basis_transcoder.js | 2 +- webgl/transcoder/build/basis_transcoder.wasm | Bin 366243 -> 303586 bytes 3 files changed, 78 insertions(+), 35 deletions(-) diff --git a/webgl/transcoder/basis_wrappers.cpp b/webgl/transcoder/basis_wrappers.cpp index 356a4f90..ea1dacaa 100644 --- a/webgl/transcoder/basis_wrappers.cpp +++ b/webgl/transcoder/basis_wrappers.cpp @@ -146,6 +146,17 @@ struct basis_file } } + void getImageTranscodedSizesInBytes(const emscripten::val& dst, uint32_t image_index, uint32_t format) { + std::vector sizes(getNumLevels(image_index)); + for (size_t i = 0; i < sizes.size(); ++i) { + sizes[i] = getImageTranscodedSizeInBytes(image_index, i, format); + } + + emscripten::val memory = emscripten::val::module_property("HEAPU32")["buffer"]; + emscripten::val memoryView = emscripten::val::global("Uint32Array").new_(memory, reinterpret_cast(sizes.data()), sizes.size()); + dst.call("set", memoryView); + } + uint32_t startTranscoding() { assert(m_magic == MAGIC); if (m_magic != MAGIC) @@ -164,13 +175,46 @@ struct basis_file if (format >= (int)transcoder_texture_format::cTFTotalTextureFormats) return 0; + std::vector dst_data; + const uint32_t status = transcodeImage(dst_data, image_index, level_index, format, get_alpha_for_opaque_formats); + + emscripten::val memory = emscripten::val::module_property("HEAP8")["buffer"]; + emscripten::val memoryView = emscripten::val::global("Uint8Array").new_(memory, reinterpret_cast(dst_data.data()), dst_data.size()); + + dst.call("set", memoryView); + return status; + } + + uint32_t transcodeImageLevels(const emscripten::val& dst, uint32_t image_index, uint32_t format, uint32_t get_alpha_for_opaque_formats) { + assert(m_magic == MAGIC); + if (m_magic != MAGIC) + return 0; + + if (format >= (int)transcoder_texture_format::cTFTotalTextureFormats) + return 0; + + const uint32_t numLevels = getNumLevels(image_index); + std::vector dst_data; + + for(uint32_t level = 0; level < numLevels; ++level) { + if (!transcodeImage(dst_data, image_index, level, format, get_alpha_for_opaque_formats)) + return 0; + } + + emscripten::val memory = emscripten::val::module_property("HEAP8")["buffer"]; + emscripten::val memoryView = emscripten::val::global("Uint8Array").new_(memory, reinterpret_cast(dst_data.data()), dst_data.size()); + + dst.call("set", memoryView); + return 1; + } + + bool transcodeImage(std::vector& dst_data, uint32_t image_index, uint32_t level_index, uint32_t format, uint32_t get_alpha_for_opaque_formats) { const transcoder_texture_format transcoder_format = static_cast(format); - uint32_t orig_width, orig_height, total_blocks; + uint32_t orig_width, orig_height, total_blocks; if (!m_transcoder.get_image_level_desc(m_file.data(), m_file.size(), image_index, level_index, orig_width, orig_height, total_blocks)) return 0; - std::vector dst_data; uint32_t flags = get_alpha_for_opaque_formats ? basisu_transcoder::cDecodeFlagsTranscodeAlphaDataToOpaqueFormats : 0; @@ -182,49 +226,42 @@ struct basis_file const uint32_t bytes_per_line = orig_width * bytes_per_pixel; const uint32_t bytes_per_slice = bytes_per_line * orig_height; - dst_data.resize(bytes_per_slice); + const size_t offset = dst_data.size(); + dst_data.resize(offset + bytes_per_slice); - status = m_transcoder.transcode_image_level( + return m_transcoder.transcode_image_level( m_file.data(), m_file.size(), image_index, level_index, - dst_data.data(), orig_width * orig_height, + dst_data.data() + offset, orig_width * orig_height, transcoder_format, flags, orig_width, nullptr, orig_height); } - else - { - uint32_t bytes_per_block = basis_get_bytes_per_block(transcoder_format); - - uint32_t required_size = total_blocks * bytes_per_block; - - if (transcoder_format == transcoder_texture_format::cTFPVRTC1_4_RGB || transcoder_format == transcoder_texture_format::cTFPVRTC1_4_RGBA) - { - // For PVRTC1, Basis only writes (or requires) total_blocks * bytes_per_block. But GL requires extra padding for very small textures: - // https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_texture_compression_pvrtc.txt - // The transcoder will clear the extra bytes followed the used blocks to 0. - const uint32_t width = (orig_width + 3) & ~3; - const uint32_t height = (orig_height + 3) & ~3; - required_size = (std::max(8U, width) * std::max(8U, height) * 4 + 7) / 8; - assert(required_size >= total_blocks * bytes_per_block); - } - dst_data.resize(required_size); - - status = m_transcoder.transcode_image_level( - m_file.data(), m_file.size(), image_index, level_index, - dst_data.data(), dst_data.size() / bytes_per_block, - static_cast(format), - flags); - } + const uint32_t bytes_per_block = basis_get_bytes_per_block(transcoder_format); + uint32_t required_size = total_blocks * bytes_per_block; + + if (transcoder_format == transcoder_texture_format::cTFPVRTC1_4_RGB || transcoder_format == transcoder_texture_format::cTFPVRTC1_4_RGBA) + { + // For PVRTC1, Basis only writes (or requires) total_blocks * bytes_per_block. But GL requires extra padding for very small textures: + // https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_texture_compression_pvrtc.txt + // The transcoder will clear the extra bytes followed the used blocks to 0. + const uint32_t width = (orig_width + 3) & ~3; + const uint32_t height = (orig_height + 3) & ~3; + required_size = (std::max(8U, width) * std::max(8U, height) * 4 + 7) / 8; + assert(required_size >= total_blocks * bytes_per_block); + } - emscripten::val memory = emscripten::val::module_property("HEAP8")["buffer"]; - emscripten::val memoryView = emscripten::val::global("Uint8Array").new_(memory, reinterpret_cast(dst_data.data()), dst_data.size()); + const size_t offset = dst_data.size(); + dst_data.resize(offset + required_size); - dst.call("set", memoryView); - return status; - } + return m_transcoder.transcode_image_level( + m_file.data(), m_file.size(), image_index, level_index, + dst_data.data() + offset, required_size / bytes_per_block, + static_cast(format), + flags); + } }; EMSCRIPTEN_BINDINGS(basis_transcoder) { @@ -254,12 +291,18 @@ EMSCRIPTEN_BINDINGS(basis_transcoder) { .function("getImageTranscodedSizeInBytes", optional_override([](basis_file& self, uint32_t imageIndex, uint32_t levelIndex, uint32_t format) { return self.getImageTranscodedSizeInBytes(imageIndex, levelIndex, format); })) + .function("getImageTranscodedSizesInBytes", optional_override([](basis_file& self, const emscripten::val& dst, uint32_t imageIndex, uint32_t format) { + return self.getImageTranscodedSizesInBytes(dst, imageIndex, format); + })) .function("startTranscoding", optional_override([](basis_file& self) { return self.startTranscoding(); })) .function("transcodeImage", optional_override([](basis_file& self, const emscripten::val& dst, uint32_t imageIndex, uint32_t levelIndex, uint32_t format, uint32_t unused, uint32_t getAlphaForOpaqueFormats) { return self.transcodeImage(dst, imageIndex, levelIndex, format, unused, getAlphaForOpaqueFormats); })) + .function("transcodeImageLevels", optional_override([](basis_file& self, const emscripten::val& dst, uint32_t imageIndex, uint32_t format, uint32_t getAlphaForOpaqueFormats) { + return self.transcodeImageLevels(dst, imageIndex, format, getAlphaForOpaqueFormats); + })) ; } diff --git a/webgl/transcoder/build/basis_transcoder.js b/webgl/transcoder/build/basis_transcoder.js index 8e4ddc40..d022c3b0 100644 --- a/webgl/transcoder/build/basis_transcoder.js +++ b/webgl/transcoder/build/basis_transcoder.js @@ -5,7 +5,7 @@ var BASIS = (function() { function(BASIS) { BASIS = BASIS || {}; -var Module=typeof BASIS!=="undefined"?BASIS:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_HAS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_HAS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_NODE=ENVIRONMENT_HAS_NODE&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_NODE){scriptDirectory=__dirname+"/";var nodeFS;var nodePath;read_=function shell_read(filename,binary){var ret;if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);ret=nodeFS["readFileSync"](filename);return binary?ret:ret.toString()};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)};setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var asm2wasmImports={"f64-rem":function(x,y){return x%y},"debugger":function(){}};var functionPointers=new Array(0);var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime;if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(typeof WebAssembly!=="object"){err("no native wasm support detected")}var wasmMemory;var wasmTable;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(u8Array[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var DYNAMIC_BASE=5482368,DYNAMICTOP_PTR=239456;var INITIAL_TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_TOTAL_MEMORY/WASM_PAGE_SIZE})}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_TOTAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}var wasmBinaryFile="basis_transcoder.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(env){var info={"env":env,"wasi_unstable":env,"global":{"NaN":NaN,Infinity:Infinity},"global.Math":Math,"asm2wasm":asm2wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&typeof fetch==="function"){fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}Module["asm"]=function(global,env,providedBuffer){env["memory"]=wasmMemory;env["table"]=wasmTable=new WebAssembly.Table({"initial":342,"maximum":342,"element":"anyfunc"});env["__memory_base"]=1024;env["__table_base"]=0;var exports=createWasm(env);return exports};__ATINIT__.push({func:function(){globalCtors()}});function ___cxa_allocate_exception(size){return _malloc(size)}var ___exception_infos={};function ___cxa_pure_virtual(){ABORT=true;throw"Pure virtual function called!"}var ___exception_last=0;function ___cxa_throw(ptr,type,destructor){___exception_infos[ptr]={ptr:ptr,adjusted:[ptr],type:type,destructor:destructor,refcount:0,caught:false,rethrown:false};___exception_last=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exceptions=1}else{__ZSt18uncaught_exceptionv.uncaught_exceptions++}throw ptr}function ___cxa_uncaught_exceptions(){return __ZSt18uncaught_exceptionv.uncaught_exceptions}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};var SYSCALLS={buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:0,get:function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(){var ret=UTF8ToString(SYSCALLS.get());return ret},get64:function(){var low=SYSCALLS.get(),high=SYSCALLS.get();return low},getZero:function(){SYSCALLS.get()}};function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function _fd_write(stream,iov,iovcnt,pnum){try{var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___wasi_fd_write(){return _fd_write.apply(null,arguments)}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}function ClassHandle_isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right}function shallowCopyInternalPointer(o){return{count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType}}function throwInstanceAlreadyDeleted(obj){function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+" instance already deleted")}var finalizationGroup=false;function detachFinalizer(handle){}function runDestructor($$){if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}}function releaseClassHandle($$){$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}}function attachFinalizer(handle){if("undefined"===typeof FinalizationGroup){attachFinalizer=function(handle){return handle};return handle}finalizationGroup=new FinalizationGroup(function(iter){for(var result=iter.next();!result.done;result=iter.next()){var $$=result.value;if(!$$.ptr){console.warn("object already deleted: "+$$.ptr)}else{releaseClassHandle($$)}}});attachFinalizer=function(handle){finalizationGroup.register(handle,handle.$$,handle.$$);return handle};detachFinalizer=function(handle){finalizationGroup.unregister(handle.$$)};return attachFinalizer(handle)}function ClassHandle_clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}}function ClassHandle_delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}}function ClassHandle_isDeleted(){return!this.$$.ptr}var delayFunction=undefined;var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}}function ClassHandle_deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}function init_ClassHandle(){ClassHandle.prototype["isAliasOf"]=ClassHandle_isAliasOf;ClassHandle.prototype["clone"]=ClassHandle_clone;ClassHandle.prototype["delete"]=ClassHandle_delete;ClassHandle.prototype["isDeleted"]=ClassHandle_isDeleted;ClassHandle.prototype["deleteLater"]=ClassHandle_deleteLater}function ClassHandle(){}var registeredPointers={};function ensureOverloadTable(proto,methodName,humanName){if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError("Function '"+humanName+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+proto[methodName].overloadTable+")!")}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}}function exposePublicSymbol(name,value,numArguments){if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError("Cannot register public name '"+name+"' twice")}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError("Cannot register multiple overloads of a function with the same number of arguments ("+numArguments+")!")}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}}function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}function upcastPointer(ptr,ptrClass,desiredClass){while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError("Expected null or instance of "+desiredClass.name+", got an instance of "+ptrClass.name)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr}function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,__emval_register(function(){clonedHandle["delete"]()}));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError("Unsupporting sharing policy")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}if(handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+handle.$$.ptrType.name+" to parameter type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2])}function RegisteredPointer_getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr}function RegisteredPointer_destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr)}}function RegisteredPointer_deleteObject(handle){if(handle!==null){handle["delete"]()}}function downcastPointer(ptr,ptrClass,desiredClass){if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)}function getInheritedInstanceCount(){return Object.keys(registeredInstances).length}function getLiveInheritedInstances(){var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv}function setDelayFunction(fn){delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}}function init_embind(){Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction}var registeredInstances={};function getBasestPointer(class_,ptr){if(ptr===undefined){throwBindingError("ptr should not be undefined")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr}function getInheritedInstance(class_,ptr){ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]}function makeClassHandle(prototype,record){if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record}}))}function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]()}else{var rv=registeredInstance["clone"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}function init_RegisteredPointer(){RegisteredPointer.prototype.getPointee=RegisteredPointer_getPointee;RegisteredPointer.prototype.destructor=RegisteredPointer_destructor;RegisteredPointer.prototype["argPackAdvance"]=8;RegisteredPointer.prototype["readValueFromPointer"]=simpleReadValueFromPointer;RegisteredPointer.prototype["deleteObject"]=RegisteredPointer_deleteObject;RegisteredPointer.prototype["fromWireType"]=RegisteredPointer_fromWireType}function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this["toWireType"]=genericPointerToWireType}}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(dynCall){var args=[];for(var i=1;i>2)+i])}return array}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function __embind_register_class_constructor(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor){var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName="constructor "+classType.name;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError("Cannot register multiple constructors with identical number of parameters ("+(argCount-1)+") for class '"+classType.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!")}classType.registeredClass.constructor_body[argCount-1]=function unboundTypeHandler(){throwUnboundTypeError("Cannot construct "+classType.name+" due to unbound types",rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){classType.registeredClass.constructor_body[argCount-1]=function constructor_body(){if(arguments.length!==argCount-1){throwBindingError(humanName+" called with "+arguments.length+" arguments, expected "+(argCount-1))}var destructors=[];var args=new Array(argCount);args[0]=rawConstructor;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=function(value){return value};if(minRange===0){var bitshift=32-8*size;fromWireType=function(value){return value<>>bitshift}}var isUnsignedType=name.indexOf("unsigned")!=-1;registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}if(valuemaxRange){throw new TypeError('Passing a number "'+_embind_repr(value)+'" from JS side to C/C++ side to an argument of type "'+name+'", which is outside the valid range ['+minRange+", "+maxRange+"]!")}return isUnsignedType?value>>>0:value|0},"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(heap["buffer"],data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var endChar=HEAPU8[value+4+length];var endCharSwap=0;if(endChar!=0){endCharSwap=endChar;HEAPU8[value+4+length]=0}var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(HEAPU8[currentBytePtr]==0){var stringSegment=UTF8ToString(decodeStartPtr);if(str===undefined)str=stringSegment;else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}if(endCharSwap!=0)HEAPU8[value+4+length]=endCharSwap}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;i>2];var a=new Array(length);var start=value+4>>shift;for(var i=0;i>2]=length;var start=ptr+4>>shift;for(var i=0;i>2]=rd;return returnType["toWireType"](destructors,handle)}var emval_symbols={};function getStringOrSymbol(address){var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}else{return symbol}}var emval_methodCallers=[];function __emval_call_void_method(caller,handle,methodName,args){caller=emval_methodCallers[caller];handle=requireHandle(handle);methodName=getStringOrSymbol(methodName);caller(handle,methodName,null,args)}function emval_get_global(){if(typeof globalThis==="object"){return globalThis}return function(){return Function}()("return this")()}function __emval_get_global(name){if(name===0){return __emval_register(emval_get_global())}else{name=getStringOrSymbol(name);return __emval_register(emval_get_global()[name])}}function __emval_addMethodCaller(caller){var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id}function __emval_lookupTypes(argCount,argTypes,argWireTypes){var a=new Array(argCount);for(var i=0;i>2)+i],"parameter "+i)}return a}function __emval_get_method_caller(argCount,argTypes){var types=__emval_lookupTypes(argCount,argTypes);var retType=types[0];var signatureName=retType.name+"_$"+types.slice(1).map(function(t){return t.name}).join("_")+"$";var params=["retType"];var args=[retType];var argsList="";for(var i=0;i4){emval_handle_array[handle].refcount+=1}}function craftEmvalAllocator(argCount){var argsList="";for(var i=0;i> 2) + "+i+'], "parameter '+i+'");\n'+"var arg"+i+" = argType"+i+".readValueFromPointer(args);\n"+"args += argType"+i+"['argPackAdvance'];\n"}functionBody+="var obj = new constructor("+argsList+");\n"+"return __emval_register(obj);\n"+"}\n";return new Function("requireRegisteredType","Module","__emval_register",functionBody)(requireRegisteredType,Module,__emval_register)}var emval_newers={};function __emval_new(handle,argCount,argTypes,args){handle=requireHandle(handle);var newer=emval_newers[argCount];if(!newer){newer=craftEmvalAllocator(argCount);emval_newers[argCount]=newer}return newer(handle,argTypes,args)}function __emval_new_cstring(v){return __emval_register(getStringOrSymbol(v))}function __emval_run_destructors(handle){var destructors=emval_handle_array[handle].value;runDestructors(destructors);__emval_decref(handle)}function _abort(){Module["abort"]()}function _emscripten_get_heap_size(){return HEAP8.length}function _llvm_trap(){abort("trap!")}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest)}function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;return value}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=_emscripten_get_heap_size();var PAGE_MULTIPLE=65536;var LIMIT=2147483648-PAGE_MULTIPLE;if(requestedSize>LIMIT){return false}var MIN_TOTAL_MEMORY=16777216;var newSize=Math.max(oldSize,MIN_TOTAL_MEMORY);while(newSize0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";out(what);err(what);ABORT=true;EXITSTATUS=1;throw"abort("+what+"). Build with -s ASSERTIONS=1 for more info."}Module["abort"]=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}noExitRuntime=true;run(); +var Module=typeof BASIS!=="undefined"?BASIS:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}Module["arguments"]=[];Module["thisProgram"]="./this.program";Module["quit"]=function(status,toThrow){throw toThrow};Module["preRun"]=[];Module["postRun"]=[];var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}else{return scriptDirectory+path}}if(ENVIRONMENT_IS_NODE){scriptDirectory=__dirname+"/";var nodeFS;var nodePath;Module["read"]=function shell_read(filename,binary){var ret;if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);ret=nodeFS["readFileSync"](filename);return binary?ret:ret.toString()};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}Module["arguments"]=process["argv"].slice(2);process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);Module["quit"]=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){Module["read"]=function shell_read(f){return read(f)}}Module["readBinary"]=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof quit==="function"){Module["quit"]=function(status){quit(status)}}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}Module["read"]=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){Module["readBinary"]=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}Module["readAsync"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)};Module["setWindowTitle"]=function(title){document.title=title}}else{}var out=Module["print"]||(typeof console!=="undefined"?console.log.bind(console):typeof print!=="undefined"?print:null);var err=Module["printErr"]||(typeof printErr!=="undefined"?printErr:typeof console!=="undefined"&&console.warn.bind(console)||out);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var asm2wasmImports={"f64-rem":function(x,y){return x%y},"debugger":function(){debugger}};var functionPointers=new Array(0);var tempRet0=0;var setTempRet0=function(value){tempRet0=value};if(typeof WebAssembly!=="object"){err("no native wasm support detected")}var wasmMemory;var wasmTable;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(u8Array[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer)}var DYNAMIC_BASE=5472672,DYNAMICTOP_PTR=229760;var TOTAL_STACK=5242880;var INITIAL_TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;if(INITIAL_TOTAL_MEMORY>2]=DYNAMIC_BASE;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}var wasmBinaryFile="basis_transcoder.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(Module["wasmBinary"]){return new Uint8Array(Module["wasmBinary"])}if(Module["readBinary"]){return Module["readBinary"](wasmBinaryFile)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!Module["wasmBinary"]&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(env){var info={"env":env,"global":{"NaN":NaN,Infinity:Infinity},"global.Math":Math,"asm2wasm":asm2wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}if(!Module["wasmBinary"]&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&typeof fetch==="function"){WebAssembly.instantiateStreaming(fetch(wasmBinaryFile,{credentials:"same-origin"}),info).then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");instantiateArrayBuffer(receiveInstantiatedSource)})}else{instantiateArrayBuffer(receiveInstantiatedSource)}return{}}Module["asm"]=function(global,env,providedBuffer){env["memory"]=wasmMemory;env["table"]=wasmTable=new WebAssembly.Table({"initial":82,"maximum":82,"element":"anyfunc"});env["__memory_base"]=1024;env["__table_base"]=0;var exports=createWasm(env);return exports};__ATINIT__.push({func:function(){globalCtors()}});function ___cxa_allocate_exception(size){return _malloc(size)}function __ZSt18uncaught_exceptionv(){return!!__ZSt18uncaught_exceptionv.uncaught_exception}function ___cxa_free_exception(ptr){try{return _free(ptr)}catch(e){}}var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:function(adjusted){if(!adjusted||EXCEPTIONS.infos[adjusted])return adjusted;for(var key in EXCEPTIONS.infos){var ptr=+key;var adj=EXCEPTIONS.infos[ptr].adjusted;var len=adj.length;for(var i=0;i0);info.refcount--;if(info.refcount===0&&!info.rethrown){if(info.destructor){Module["dynCall_vi"](info.destructor,ptr)}delete EXCEPTIONS.infos[ptr];___cxa_free_exception(ptr)}},clearRef:function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount=0}};function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:[ptr],type:type,destructor:destructor,refcount:0,caught:false,rethrown:false};EXCEPTIONS.last=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exception=1}else{__ZSt18uncaught_exceptionv.uncaught_exception++}throw ptr}var SYSCALLS={buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:0,get:function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(){var ret=UTF8ToString(SYSCALLS.get());return ret},get64:function(){var low=SYSCALLS.get(),high=SYSCALLS.get();return low},getZero:function(){SYSCALLS.get()}};function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.get(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}function ClassHandle_isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right}function shallowCopyInternalPointer(o){return{count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType}}function throwInstanceAlreadyDeleted(obj){function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+" instance already deleted")}function ClassHandle_clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}});clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}}function runDestructor(handle){var $$=handle.$$;if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}}function ClassHandle_delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}this.$$.count.value-=1;var toDelete=0===this.$$.count.value;if(toDelete){runDestructor(this)}if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}}function ClassHandle_isDeleted(){return!this.$$.ptr}var delayFunction=undefined;var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}}function ClassHandle_deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}function init_ClassHandle(){ClassHandle.prototype["isAliasOf"]=ClassHandle_isAliasOf;ClassHandle.prototype["clone"]=ClassHandle_clone;ClassHandle.prototype["delete"]=ClassHandle_delete;ClassHandle.prototype["isDeleted"]=ClassHandle_isDeleted;ClassHandle.prototype["deleteLater"]=ClassHandle_deleteLater}function ClassHandle(){}var registeredPointers={};function ensureOverloadTable(proto,methodName,humanName){if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError("Function '"+humanName+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+proto[methodName].overloadTable+")!")}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}}function exposePublicSymbol(name,value,numArguments){if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError("Cannot register public name '"+name+"' twice")}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError("Cannot register multiple overloads of a function with the same number of arguments ("+numArguments+")!")}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}}function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}function upcastPointer(ptr,ptrClass,desiredClass){while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError("Expected null or instance of "+desiredClass.name+", got an instance of "+ptrClass.name)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr}function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,__emval_register(function(){clonedHandle["delete"]()}));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError("Unsupporting sharing policy")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}if(handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+handle.$$.ptrType.name+" to parameter type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2])}function RegisteredPointer_getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr}function RegisteredPointer_destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr)}}function RegisteredPointer_deleteObject(handle){if(handle!==null){handle["delete"]()}}function downcastPointer(ptr,ptrClass,desiredClass){if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)}function getInheritedInstanceCount(){return Object.keys(registeredInstances).length}function getLiveInheritedInstances(){var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv}function setDelayFunction(fn){delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}}function init_embind(){Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction}var registeredInstances={};function getBasestPointer(class_,ptr){if(ptr===undefined){throwBindingError("ptr should not be undefined")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr}function getInheritedInstance(class_,ptr){ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]}function makeClassHandle(prototype,record){if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified")}record.count={value:1};return Object.create(prototype,{$$:{value:record}})}function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]()}else{var rv=registeredInstance["clone"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}function init_RegisteredPointer(){RegisteredPointer.prototype.getPointee=RegisteredPointer_getPointee;RegisteredPointer.prototype.destructor=RegisteredPointer_destructor;RegisteredPointer.prototype["argPackAdvance"]=8;RegisteredPointer.prototype["readValueFromPointer"]=simpleReadValueFromPointer;RegisteredPointer.prototype["deleteObject"]=RegisteredPointer_deleteObject;RegisteredPointer.prototype["fromWireType"]=RegisteredPointer_fromWireType}function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this["toWireType"]=genericPointerToWireType}}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(dynCall){var args=[];for(var i=1;i>2)+i])}return array}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function __embind_register_class_constructor(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor){var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName="constructor "+classType.name;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError("Cannot register multiple constructors with identical number of parameters ("+(argCount-1)+") for class '"+classType.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!")}classType.registeredClass.constructor_body[argCount-1]=function unboundTypeHandler(){throwUnboundTypeError("Cannot construct "+classType.name+" due to unbound types",rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){classType.registeredClass.constructor_body[argCount-1]=function constructor_body(){if(arguments.length!==argCount-1){throwBindingError(humanName+" called with "+arguments.length+" arguments, expected "+(argCount-1))}var destructors=[];var args=new Array(argCount);args[0]=rawConstructor;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=function(value){return value};if(minRange===0){var bitshift=32-8*size;fromWireType=function(value){return value<>>bitshift}}var isUnsignedType=name.indexOf("unsigned")!=-1;registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}if(valuemaxRange){throw new TypeError('Passing a number "'+_embind_repr(value)+'" from JS side to C/C++ side to an argument of type "'+name+'", which is outside the valid range ['+minRange+", "+maxRange+"]!")}return isUnsignedType?value>>>0:value|0},"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(heap["buffer"],data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var endChar=HEAPU8[value+4+length];var endCharSwap=0;if(endChar!=0){endCharSwap=endChar;HEAPU8[value+4+length]=0}var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(HEAPU8[currentBytePtr]==0){var stringSegment=UTF8ToString(decodeStartPtr);if(str===undefined)str=stringSegment;else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}if(endCharSwap!=0)HEAPU8[value+4+length]=endCharSwap}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;i>2];var a=new Array(length);var start=value+4>>shift;for(var i=0;i>2]=length;var start=ptr+4>>shift;for(var i=0;i>2]=rd;return returnType["toWireType"](destructors,handle)}var emval_symbols={};function getStringOrSymbol(address){var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}else{return symbol}}var emval_methodCallers=[];function __emval_call_void_method(caller,handle,methodName,args){caller=emval_methodCallers[caller];handle=requireHandle(handle);methodName=getStringOrSymbol(methodName);caller(handle,methodName,null,args)}function emval_get_global(){return function(){return Function}()("return this")()}function __emval_get_global(name){if(name===0){return __emval_register(emval_get_global())}else{name=getStringOrSymbol(name);return __emval_register(emval_get_global()[name])}}function __emval_addMethodCaller(caller){var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id}function __emval_lookupTypes(argCount,argTypes,argWireTypes){var a=new Array(argCount);for(var i=0;i>2)+i],"parameter "+i)}return a}function __emval_get_method_caller(argCount,argTypes){var types=__emval_lookupTypes(argCount,argTypes);var retType=types[0];var signatureName=retType.name+"_$"+types.slice(1).map(function(t){return t.name}).join("_")+"$";var params=["retType"];var args=[retType];var argsList="";for(var i=0;i4){emval_handle_array[handle].refcount+=1}}function craftEmvalAllocator(argCount){var argsList="";for(var i=0;i> 2) + "+i+'], "parameter '+i+'");\n'+"var arg"+i+" = argType"+i+".readValueFromPointer(args);\n"+"args += argType"+i+"['argPackAdvance'];\n"}functionBody+="var obj = new constructor("+argsList+");\n"+"return __emval_register(obj);\n"+"}\n";return new Function("requireRegisteredType","Module","__emval_register",functionBody)(requireRegisteredType,Module,__emval_register)}var emval_newers={};function __emval_new(handle,argCount,argTypes,args){handle=requireHandle(handle);var newer=emval_newers[argCount];if(!newer){newer=craftEmvalAllocator(argCount);emval_newers[argCount]=newer}return newer(handle,argTypes,args)}function __emval_new_cstring(v){return __emval_register(getStringOrSymbol(v))}function __emval_run_destructors(handle){var destructors=emval_handle_array[handle].value;runDestructors(destructors);__emval_decref(handle)}function _abort(){Module["abort"]()}function _emscripten_get_heap_size(){return HEAP8.length}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function emscripten_realloc_buffer(size){var PAGE_MULTIPLE=65536;size=alignUp(size,PAGE_MULTIPLE);var oldSize=buffer.byteLength;try{var result=wasmMemory.grow((size-oldSize)/65536);if(result!==(-1|0)){buffer=wasmMemory.buffer;return true}else{return false}}catch(e){return false}}function _emscripten_resize_heap(requestedSize){var oldSize=_emscripten_get_heap_size();var PAGE_MULTIPLE=65536;var LIMIT=2147483648-PAGE_MULTIPLE;if(requestedSize>LIMIT){return false}var MIN_TOTAL_MEMORY=16777216;var newSize=Math.max(oldSize,MIN_TOTAL_MEMORY);while(newSize>2]=value;return value}embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_ClassHandle();init_RegisteredPointer();init_embind();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");init_emval();var asmGlobalArg={};var asmLibraryArg={"d":abort,"C":setTempRet0,"l":___cxa_allocate_exception,"k":___cxa_throw,"s":___setErrNo,"B":___syscall140,"r":___syscall146,"A":___syscall6,"z":__embind_register_bool,"y":__embind_register_class,"x":__embind_register_class_constructor,"f":__embind_register_class_function,"K":__embind_register_emval,"w":__embind_register_float,"J":__embind_register_function,"g":__embind_register_integer,"c":__embind_register_memory_view,"v":__embind_register_std_string,"I":__embind_register_std_wstring,"H":__embind_register_void,"u":__emval_as,"p":__emval_call_void_method,"b":__emval_decref,"q":__emval_get_global,"o":__emval_get_method_caller,"n":__emval_get_module_property,"j":__emval_get_property,"h":__emval_incref,"m":__emval_new,"i":__emval_new_cstring,"t":__emval_run_destructors,"e":_abort,"G":_emscripten_get_heap_size,"F":_emscripten_memcpy_big,"E":_emscripten_resize_heap,"D":abortOnCannotGrowMemory,"a":DYNAMICTOP_PTR};var asm=Module["asm"](asmGlobalArg,asmLibraryArg,buffer);Module["asm"]=asm;var ___errno_location=Module["___errno_location"]=function(){return Module["asm"]["L"].apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return Module["asm"]["M"].apply(null,arguments)};var _free=Module["_free"]=function(){return Module["asm"]["N"].apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return Module["asm"]["O"].apply(null,arguments)};var globalCtors=Module["globalCtors"]=function(){return Module["asm"]["da"].apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return Module["asm"]["P"].apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return Module["asm"]["Q"].apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return Module["asm"]["R"].apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return Module["asm"]["S"].apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return Module["asm"]["T"].apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return Module["asm"]["U"].apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return Module["asm"]["V"].apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return Module["asm"]["W"].apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return Module["asm"]["X"].apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return Module["asm"]["Y"].apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return Module["asm"]["Z"].apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return Module["asm"]["_"].apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return Module["asm"]["$"].apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return Module["asm"]["aa"].apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return Module["asm"]["ba"].apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return Module["asm"]["ca"].apply(null,arguments)};Module["asm"]=asm;Module["then"]=function(func){if(Module["calledRun"]){func(Module)}else{var old=Module["onRuntimeInitialized"];Module["onRuntimeInitialized"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};function run(args){args=args||Module["arguments"];if(runDependencies>0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}if(what!==undefined){out(what);err(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;throw"abort("+what+"). Build with -s ASSERTIONS=1 for more info."}Module["abort"]=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}Module["noExitRuntime"]=true;run(); return BASIS diff --git a/webgl/transcoder/build/basis_transcoder.wasm b/webgl/transcoder/build/basis_transcoder.wasm index d3a49460adf4e1ae57ae6ab8cfeeea7d964c25bf..8fd66eacf85b1c6899d703415454fa5ec454aa51 100644 GIT binary patch delta 17999 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⋘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 delta 80381 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 Z*EgcAdwr!s->}Ta_-1!`;!JGy{|9@b_yhm|