From 72a1c612b64ba6ce6661fd8c54bfc4aac957713d Mon Sep 17 00:00:00 2001 From: blankhex Date: Sun, 20 Jul 2025 14:19:32 +0000 Subject: [PATCH] deploy: c31b263741d6e89f0b6519f242b1b34fbd74f336 --- index.js | 2 +- index.wasm | Bin 1385736 -> 1385981 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index 6858b1f..1b07ceb 100644 --- a/index.js +++ b/index.js @@ -1 +1 @@ -var Module=typeof Module!="undefined"?Module:{};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}process.on("uncaughtException",ex=>{if(ex!=="unwind"&&!(ex instanceof ExitStatus)&&!(ex.context instanceof ExitStatus)){throw ex}});quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();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 addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith("file://");var wasmBinaryFile;wasmBinaryFile="index.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw`failed to load wasm binary file at '${binaryFile}'`}return response["arrayBuffer"]()}).catch(()=>getBinarySync(binaryFile))}else if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["eg"];updateMemoryViews();wasmTable=wasmExports["gg"];addOnInit(wasmExports["fg"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);return false}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}var tempDouble;var tempI64;var ASM_CONSTS={483392:$0=>{var str=UTF8ToString($0)+"\n\n"+"Abort/Retry/Ignore/AlwaysIgnore? [ariA] :";var reply=window.prompt(str,"i");if(reply===null){reply="i"}return allocate(intArrayFromString(reply),"i8",ALLOC_NORMAL)},483617:()=>{if(typeof AudioContext!=="undefined"){return true}else if(typeof webkitAudioContext!=="undefined"){return true}return false},483764:()=>{if(typeof navigator.mediaDevices!=="undefined"&&typeof navigator.mediaDevices.getUserMedia!=="undefined"){return true}else if(typeof navigator.webkitGetUserMedia!=="undefined"){return true}return false},483998:$0=>{if(typeof Module["SDL2"]==="undefined"){Module["SDL2"]={}}var SDL2=Module["SDL2"];if(!$0){SDL2.audio={}}else{SDL2.capture={}}if(!SDL2.audioContext){if(typeof AudioContext!=="undefined"){SDL2.audioContext=new AudioContext}else if(typeof webkitAudioContext!=="undefined"){SDL2.audioContext=new webkitAudioContext}if(SDL2.audioContext){autoResumeAudioContext(SDL2.audioContext)}}return SDL2.audioContext===undefined?-1:0},484491:()=>{var SDL2=Module["SDL2"];return SDL2.audioContext.sampleRate},484559:($0,$1,$2,$3)=>{var SDL2=Module["SDL2"];var have_microphone=function(stream){if(SDL2.capture.silenceTimer!==undefined){clearTimeout(SDL2.capture.silenceTimer);SDL2.capture.silenceTimer=undefined}SDL2.capture.mediaStreamNode=SDL2.audioContext.createMediaStreamSource(stream);SDL2.capture.scriptProcessorNode=SDL2.audioContext.createScriptProcessor($1,$0,1);SDL2.capture.scriptProcessorNode.onaudioprocess=function(audioProcessingEvent){if(SDL2===undefined||SDL2.capture===undefined){return}audioProcessingEvent.outputBuffer.getChannelData(0).fill(0);SDL2.capture.currentCaptureBuffer=audioProcessingEvent.inputBuffer;dynCall("vi",$2,[$3])};SDL2.capture.mediaStreamNode.connect(SDL2.capture.scriptProcessorNode);SDL2.capture.scriptProcessorNode.connect(SDL2.audioContext.destination);SDL2.capture.stream=stream};var no_microphone=function(error){};SDL2.capture.silenceBuffer=SDL2.audioContext.createBuffer($0,$1,SDL2.audioContext.sampleRate);SDL2.capture.silenceBuffer.getChannelData(0).fill(0);var silence_callback=function(){SDL2.capture.currentCaptureBuffer=SDL2.capture.silenceBuffer;dynCall("vi",$2,[$3])};SDL2.capture.silenceTimer=setTimeout(silence_callback,$1/SDL2.audioContext.sampleRate*1e3);if(navigator.mediaDevices!==undefined&&navigator.mediaDevices.getUserMedia!==undefined){navigator.mediaDevices.getUserMedia({audio:true,video:false}).then(have_microphone).catch(no_microphone)}else if(navigator.webkitGetUserMedia!==undefined){navigator.webkitGetUserMedia({audio:true,video:false},have_microphone,no_microphone)}},486211:($0,$1,$2,$3)=>{var SDL2=Module["SDL2"];SDL2.audio.scriptProcessorNode=SDL2.audioContext["createScriptProcessor"]($1,0,$0);SDL2.audio.scriptProcessorNode["onaudioprocess"]=function(e){if(SDL2===undefined||SDL2.audio===undefined){return}SDL2.audio.currentOutputBuffer=e["outputBuffer"];dynCall("vi",$2,[$3])};SDL2.audio.scriptProcessorNode["connect"](SDL2.audioContext["destination"])},486621:($0,$1)=>{var SDL2=Module["SDL2"];var numChannels=SDL2.capture.currentCaptureBuffer.numberOfChannels;for(var c=0;c{var SDL2=Module["SDL2"];var numChannels=SDL2.audio.currentOutputBuffer["numberOfChannels"];for(var c=0;c>2]}}},487706:$0=>{var SDL2=Module["SDL2"];if($0){if(SDL2.capture.silenceTimer!==undefined){clearTimeout(SDL2.capture.silenceTimer)}if(SDL2.capture.stream!==undefined){var tracks=SDL2.capture.stream.getAudioTracks();for(var i=0;i{var w=$0;var h=$1;var pixels=$2;if(!Module["SDL2"])Module["SDL2"]={};var SDL2=Module["SDL2"];if(SDL2.ctxCanvas!==Module["canvas"]){SDL2.ctx=Module["createContext"](Module["canvas"],false,true);SDL2.ctxCanvas=Module["canvas"]}if(SDL2.w!==w||SDL2.h!==h||SDL2.imageCtx!==SDL2.ctx){SDL2.image=SDL2.ctx.createImageData(w,h);SDL2.w=w;SDL2.h=h;SDL2.imageCtx=SDL2.ctx}var data=SDL2.image.data;var src=pixels>>2;var dst=0;var num;if(typeof CanvasPixelArray!=="undefined"&&data instanceof CanvasPixelArray){num=data.length;while(dst>8&255;data[dst+2]=val>>16&255;data[dst+3]=255;src++;dst+=4}}else{if(SDL2.data32Data!==data){SDL2.data32=new Int32Array(data.buffer);SDL2.data8=new Uint8Array(data.buffer);SDL2.data32Data=data}var data32=SDL2.data32;num=data32.length;data32.set(HEAP32.subarray(src,src+num));var data8=SDL2.data8;var i=3;var j=i+4*num;if(num%8==0){while(i{var w=$0;var h=$1;var hot_x=$2;var hot_y=$3;var pixels=$4;var canvas=document.createElement("canvas");canvas.width=w;canvas.height=h;var ctx=canvas.getContext("2d");var image=ctx.createImageData(w,h);var data=image.data;var src=pixels>>2;var dst=0;var num;if(typeof CanvasPixelArray!=="undefined"&&data instanceof CanvasPixelArray){num=data.length;while(dst>8&255;data[dst+2]=val>>16&255;data[dst+3]=val>>24&255;src++;dst+=4}}else{var data32=new Int32Array(data.buffer);num=data32.length;data32.set(HEAP32.subarray(src,src+num))}ctx.putImageData(image,0,0);var url=hot_x===0&&hot_y===0?"url("+canvas.toDataURL()+"), auto":"url("+canvas.toDataURL()+") "+hot_x+" "+hot_y+", auto";var urlBuf=_malloc(url.length+1);stringToUTF8(url,urlBuf,url.length+1);return urlBuf},491336:$0=>{if(Module["canvas"]){Module["canvas"].style["cursor"]=UTF8ToString($0)}},491419:()=>{if(Module["canvas"]){Module["canvas"].style["cursor"]="none"}},491488:()=>window.innerWidth,491518:()=>window.innerHeight};function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr]=value;break;case"i8":HEAP8[ptr]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":abort("to do setValue(i64) use WASM_BIGINT");case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}var exceptionCaught=[];var uncaughtExceptionCount=0;var ___cxa_begin_catch=ptr=>{var info=new ExceptionInfo(ptr);if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(info);___cxa_increment_exception_refcount(info.excPtr);return info.get_exception_ptr()};var exceptionLast=0;var ___cxa_end_catch=()=>{_setThrew(0,0);var info=exceptionCaught.pop();___cxa_decrement_exception_refcount(info.excPtr);exceptionLast=0};class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12]=caught}get_caught(){return HEAP8[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13]=rethrown}get_rethrown(){return HEAP8[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}get_exception_ptr(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var ___resumeException=ptr=>{if(!exceptionLast){exceptionLast=ptr}throw exceptionLast};var findMatchingCatch=args=>{var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0}var info=new ExceptionInfo(thrown);info.set_adjusted_ptr(thrown);var thrownType=info.get_type();if(!thrownType){setTempRet0(0);return thrown}for(var arg in args){var caughtType=args[arg];if(caughtType===0||caughtType===thrownType){break}var adjusted_ptr_addr=info.ptr+16;if(___cxa_can_catch(caughtType,thrownType,adjusted_ptr_addr)){setTempRet0(caughtType);return thrown}}setTempRet0(thrownType);return thrown};var ___cxa_find_matching_catch_2=()=>findMatchingCatch([]);var ___cxa_find_matching_catch_3=arg0=>findMatchingCatch([arg0]);var ___cxa_rethrow=()=>{var info=exceptionCaught.pop();if(!info){abort("no exception to throw")}var ptr=info.excPtr;if(!info.get_rethrown()){exceptionCaught.push(info);info.set_rethrown(true);info.set_caught(false);uncaughtExceptionCount++}exceptionLast=ptr;throw exceptionLast};var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var ___cxa_uncaught_exceptions=()=>uncaughtExceptionCount;var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(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:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname: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:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var initRandomFill=()=>{if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,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;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir(node){var entries=[".",".."];for(var key of Object.keys(node.contents)){entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):"";readAsync(url,arrayBuffer=>{onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)};var preloadPlugins=Module["preloadPlugins"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}onload?.();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,processData,onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:class{constructor(errno){this.name="ErrnoError";this.errno=errno}},genericErrors:{},filesystems:null,syncFSRequests:0,FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev;this.readMode=292|73;this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var i=0;iFS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""});FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init(input,output,error){FS.init.initialized=true;Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit(){FS.init.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat(func,path,buf){var stat=func(path);HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAP32[buf+12>>2]=stat.uid;HEAP32[buf+16>>2]=stat.gid;HEAP32[buf+20>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];return 0},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get(){var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret},getp(){return SYSCALLS.get()},getStr(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.getp();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=SYSCALLS.getp();HEAP32[argp>>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=SYSCALLS.getp();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag:c_iflag,c_oflag:c_oflag,c_cflag:c_cflag,c_lflag:c_lflag,c_cc:c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.getp();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.getp();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=SYSCALLS.getp();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __emscripten_fs_load_embedded_files=ptr=>{do{var name_addr=HEAPU32[ptr>>2];ptr+=4;var len=HEAPU32[ptr>>2];ptr+=4;var content=HEAPU32[ptr>>2];ptr+=4;var name=UTF8ToString(name_addr);FS.createPath("/",PATH.dirname(name),true,true);FS.createDataFile(name,null,HEAP8.subarray(content,content+len),true,true,true)}while(HEAPU32[ptr>>2])};var nowIsMonotonic=1;var __emscripten_get_now_is_monotonic=()=>nowIsMonotonic;var _abort=()=>{abort("")};var _emscripten_set_main_loop_timing=(mode,value)=>{Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(!Browser.mainLoop.running){Browser.mainLoop.running=true}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof Browser.setImmediate=="undefined"){if(typeof setImmediate=="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=event=>{if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);Browser.setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}else{Browser.setImmediate=setImmediate}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){Browser.setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0};var _emscripten_get_now;_emscripten_get_now=()=>performance.now();var setMainLoop=(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming)=>{Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;function checkIsRunning(){if(thisMainLoopId0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}Browser.mainLoop.updateStatus();if(!checkIsRunning())return;setTimeout(Browser.mainLoop.runner,0);return}if(!checkIsRunning())return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(!checkIsRunning())return;if(typeof SDL=="object")SDL.audio?.queueNewAudioData?.();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0){_emscripten_set_main_loop_timing(0,1e3/fps)}else{_emscripten_set_main_loop_timing(1,1)}Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var safeSetTimeout=(func,timeout)=>setTimeout(()=>{callUserCallback(func)},timeout);var warnOnce=text=>{warnOnce.shown||={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;if(ENVIRONMENT_IS_NODE)text="warning: "+text;err(text)}};var Browser={mainLoop:{running:false,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining{var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);preloadedImages[name]=canvas;URL.revokeObjectURL(url);onload?.(byteArray)};img.onerror=event=>{err(`Image ${url} could not be decoded`);onerror?.()};img.src=url};preloadPlugins.push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;preloadedAudios[name]=audio;onload?.(byteArray)}var b=new Blob([byteArray],{type:Browser.getMimetype(name)});var url=URL.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",()=>finish(audio),false);audio.onerror=function audio_onerror(event){if(done)return;err(`warning: browser could not fully decode audio ${name}, trying slower base64 approach`);function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;safeSetTimeout(()=>{finish(audio)},1e4)};preloadPlugins.push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(()=>{});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(()=>{});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",ev=>{if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:typeof WebGL2RenderingContext!="undefined"?2:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(callback=>callback());Browser.init()}return ctx},destroyContext(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer=="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas=="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}Module["onFullScreen"]?.(Browser.isFullscreen);Module["onFullscreen"]?.(Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?()=>canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"]):null)||(canvasContainer["webkitRequestFullScreen"]?()=>canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]):null);canvasContainer.requestFullscreen()},exitFullscreen(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||(()=>{});CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame(func){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeSetTimeout(func,timeout){return safeSetTimeout(func,timeout)},safeRequestAnimationFrame(func){return Browser.requestAnimationFrame(()=>{callUserCallback(func)})},getMimetype(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia(func){window.getUserMedia||=navigator["getUserMedia"]||navigator["mozGetUserMedia"];window.getUserMedia(func)},getMovementX(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseCoords(pageX,pageY){var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!="undefined"?window.scrollY:window.pageYOffset;var adjustedX=pageX-(scrollX+rect.left);var adjustedY=pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);return{x:adjustedX,y:adjustedY}},setMouseCoords(pageX,pageY){const{x:x,y:y}=Browser.calculateMouseCoords(pageX,pageY);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y},calculateMouseEvent(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var coords=Browser.calculateMouseCoords(touch.pageX,touch.pageY);if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];last||=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}Browser.setMouseCoords(event.pageX,event.pageY)}},resizeListeners:[],updateResizeListeners(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(listener=>listener(canvas.width,canvas.height))},setCanvasSize(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h>2];if(param==12321){var alphaSize=HEAP32[attribList+4>>2];EGL.contextAttributes.alpha=alphaSize>0}else if(param==12325){var depthSize=HEAP32[attribList+4>>2];EGL.contextAttributes.depth=depthSize>0}else if(param==12326){var stencilSize=HEAP32[attribList+4>>2];EGL.contextAttributes.stencil=stencilSize>0}else if(param==12337){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples>0}else if(param==12338){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples==1}else if(param==12544){var requestedPriority=HEAP32[attribList+4>>2];EGL.contextAttributes.lowLatency=requestedPriority!=12547}else if(param==12344){break}attribList+=8}}if((!config||!config_size)&&!numConfigs){EGL.setErrorCode(12300);return 0}if(numConfigs){HEAP32[numConfigs>>2]=1}if(config&&config_size>0){HEAPU32[config>>2]=62002}EGL.setErrorCode(12288);return 1}};var _eglBindAPI=api=>{if(api==12448){EGL.setErrorCode(12288);return 1}EGL.setErrorCode(12300);return 0};var _eglChooseConfig=(display,attrib_list,configs,config_size,numConfigs)=>EGL.chooseConfig(display,attrib_list,configs,config_size,numConfigs);var webgl_enable_ANGLE_instanced_arrays=ctx=>{var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=(index,divisor)=>ext["vertexAttribDivisorANGLE"](index,divisor);ctx["drawArraysInstanced"]=(mode,first,count,primcount)=>ext["drawArraysInstancedANGLE"](mode,first,count,primcount);ctx["drawElementsInstanced"]=(mode,count,type,indices,primcount)=>ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount);return 1}};var webgl_enable_OES_vertex_array_object=ctx=>{var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=()=>ext["createVertexArrayOES"]();ctx["deleteVertexArray"]=vao=>ext["deleteVertexArrayOES"](vao);ctx["bindVertexArray"]=vao=>ext["bindVertexArrayOES"](vao);ctx["isVertexArray"]=vao=>ext["isVertexArrayOES"](vao);return 1}};var webgl_enable_WEBGL_draw_buffers=ctx=>{var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=(n,bufs)=>ext["drawBuffersWEBGL"](n,bufs);return 1}};var webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw=ctx=>!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"));var getEmscriptenSupportedExtensions=ctx=>{var supportedExtensions=["ANGLE_instanced_arrays","EXT_blend_minmax","EXT_disjoint_timer_query","EXT_frag_depth","EXT_shader_texture_lod","EXT_sRGB","OES_element_index_uint","OES_fbo_render_mipmap","OES_standard_derivatives","OES_texture_float","OES_texture_half_float","OES_texture_half_float_linear","OES_vertex_array_object","WEBGL_color_buffer_float","WEBGL_depth_texture","WEBGL_draw_buffers","EXT_color_buffer_float","EXT_conservative_depth","EXT_disjoint_timer_query_webgl2","EXT_texture_norm16","NV_shader_noperspective_interpolation","WEBGL_clip_cull_distance","EXT_color_buffer_half_float","EXT_depth_clamp","EXT_float_blend","EXT_texture_compression_bptc","EXT_texture_compression_rgtc","EXT_texture_filter_anisotropic","KHR_parallel_shader_compile","OES_texture_float_linear","WEBGL_blend_func_extended","WEBGL_compressed_texture_astc","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_s3tc_srgb","WEBGL_debug_renderer_info","WEBGL_debug_shaders","WEBGL_lose_context","WEBGL_multi_draw"];return(ctx.getSupportedExtensions()||[]).filter(ext=>supportedExtensions.includes(ext))};var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:errorCode=>{if(!GL.lastError){GL.lastError=errorCode}},getNewId:table=>{var ret=GL.counter++;for(var i=table.length;i{for(var i=0;i>2]=id}},getSource:(shader,count,string,length)=>{var source="";for(var i=0;i>2]:undefined;source+=UTF8ToString(HEAPU32[string+i*4>>2],len)}return source},createContext:(canvas,webGLContextAttributes)=>{if(!canvas.getContextSafariWebGL2Fixed){canvas.getContextSafariWebGL2Fixed=canvas.getContext;function fixedGetContext(ver,attrs){var gl=canvas.getContextSafariWebGL2Fixed(ver,attrs);return ver=="webgl"==gl instanceof WebGLRenderingContext?gl:null}canvas.getContext=fixedGetContext}var ctx=webGLContextAttributes.majorVersion>1?canvas.getContext("webgl2",webGLContextAttributes):canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:(ctx,webGLContextAttributes)=>{var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:contextHandle=>{GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext?.GLctx;return!(contextHandle&&!GLctx)},getContext:contextHandle=>GL.contexts[contextHandle],deleteContext:contextHandle=>{if(GL.currentContext===GL.contexts[contextHandle]){GL.currentContext=null}if(typeof JSEvents=="object"){JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas)}if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas){GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined}GL.contexts[contextHandle]=null},initExtensions:context=>{context||=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;webgl_enable_ANGLE_instanced_arrays(GLctx);webgl_enable_OES_vertex_array_object(GLctx);webgl_enable_WEBGL_draw_buffers(GLctx);webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(context.version>=2){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query_webgl2")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}webgl_enable_WEBGL_multi_draw(GLctx);getEmscriptenSupportedExtensions(GLctx).forEach(ext=>{if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var _eglCreateContext=(display,config,hmm,contextAttribs)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}var glesContextVersion=1;for(;;){var param=HEAP32[contextAttribs>>2];if(param==12440){glesContextVersion=HEAP32[contextAttribs+4>>2]}else if(param==12344){break}else{EGL.setErrorCode(12292);return 0}contextAttribs+=8}if(glesContextVersion<2||glesContextVersion>3){EGL.setErrorCode(12293);return 0}EGL.contextAttributes.majorVersion=glesContextVersion-1;EGL.contextAttributes.minorVersion=0;EGL.context=GL.createContext(Module["canvas"],EGL.contextAttributes);if(EGL.context!=0){EGL.setErrorCode(12288);GL.makeContextCurrent(EGL.context);Module.useWebGL=true;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});GL.makeContextCurrent(null);return 62004}else{EGL.setErrorCode(12297);return 0}};var _eglCreateWindowSurface=(display,config,win,attrib_list)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}EGL.setErrorCode(12288);return 62006};var _eglDestroyContext=(display,context)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=62004){EGL.setErrorCode(12294);return 0}GL.deleteContext(EGL.context);EGL.setErrorCode(12288);if(EGL.currentContext==context){EGL.currentContext=0}return 1};var _eglDestroySurface=(display,surface)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(surface!=62006){EGL.setErrorCode(12301);return 1}if(EGL.currentReadSurface==surface){EGL.currentReadSurface=0}if(EGL.currentDrawSurface==surface){EGL.currentDrawSurface=0}EGL.setErrorCode(12288);return 1};var _eglGetConfigAttrib=(display,config,attribute,value)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}if(!value){EGL.setErrorCode(12300);return 0}EGL.setErrorCode(12288);switch(attribute){case 12320:HEAP32[value>>2]=EGL.contextAttributes.alpha?32:24;return 1;case 12321:HEAP32[value>>2]=EGL.contextAttributes.alpha?8:0;return 1;case 12322:HEAP32[value>>2]=8;return 1;case 12323:HEAP32[value>>2]=8;return 1;case 12324:HEAP32[value>>2]=8;return 1;case 12325:HEAP32[value>>2]=EGL.contextAttributes.depth?24:0;return 1;case 12326:HEAP32[value>>2]=EGL.contextAttributes.stencil?8:0;return 1;case 12327:HEAP32[value>>2]=12344;return 1;case 12328:HEAP32[value>>2]=62002;return 1;case 12329:HEAP32[value>>2]=0;return 1;case 12330:HEAP32[value>>2]=4096;return 1;case 12331:HEAP32[value>>2]=16777216;return 1;case 12332:HEAP32[value>>2]=4096;return 1;case 12333:HEAP32[value>>2]=0;return 1;case 12334:HEAP32[value>>2]=0;return 1;case 12335:HEAP32[value>>2]=12344;return 1;case 12337:HEAP32[value>>2]=EGL.contextAttributes.antialias?4:0;return 1;case 12338:HEAP32[value>>2]=EGL.contextAttributes.antialias?1:0;return 1;case 12339:HEAP32[value>>2]=4;return 1;case 12340:HEAP32[value>>2]=12344;return 1;case 12341:case 12342:case 12343:HEAP32[value>>2]=-1;return 1;case 12345:case 12346:HEAP32[value>>2]=0;return 1;case 12347:HEAP32[value>>2]=0;return 1;case 12348:HEAP32[value>>2]=1;return 1;case 12349:case 12350:HEAP32[value>>2]=0;return 1;case 12351:HEAP32[value>>2]=12430;return 1;case 12352:HEAP32[value>>2]=4;return 1;case 12354:HEAP32[value>>2]=0;return 1;default:EGL.setErrorCode(12292);return 0}};var _eglGetDisplay=nativeDisplayType=>{EGL.setErrorCode(12288);if(nativeDisplayType!=0&&nativeDisplayType!=1){return 0}return 62e3};var _eglGetError=()=>EGL.errorCode;var _eglInitialize=(display,majorVersion,minorVersion)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(majorVersion){HEAP32[majorVersion>>2]=1}if(minorVersion){HEAP32[minorVersion>>2]=4}EGL.defaultDisplayInitialized=true;EGL.setErrorCode(12288);return 1};var _eglMakeCurrent=(display,draw,read,context)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=0&&context!=62004){EGL.setErrorCode(12294);return 0}if(read!=0&&read!=62006||draw!=0&&draw!=62006){EGL.setErrorCode(12301);return 0}GL.makeContextCurrent(context?EGL.context:null);EGL.currentContext=context;EGL.currentDrawSurface=draw;EGL.currentReadSurface=read;EGL.setErrorCode(12288);return 1};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var stringToNewUTF8=str=>{var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret};var _eglQueryString=(display,name)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.setErrorCode(12288);if(EGL.stringCache[name])return EGL.stringCache[name];var ret;switch(name){case 12371:ret=stringToNewUTF8("Emscripten");break;case 12372:ret=stringToNewUTF8("1.4 Emscripten EGL");break;case 12373:ret=stringToNewUTF8("");break;case 12429:ret=stringToNewUTF8("OpenGL_ES");break;default:EGL.setErrorCode(12300);return 0}EGL.stringCache[name]=ret;return ret};var _eglSwapBuffers=(dpy,surface)=>{if(!EGL.defaultDisplayInitialized){EGL.setErrorCode(12289)}else if(!Module.ctx){EGL.setErrorCode(12290)}else if(Module.ctx.isContextLost()){EGL.setErrorCode(12302)}else{EGL.setErrorCode(12288);return 1}return 0};var _eglSwapInterval=(display,interval)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval);EGL.setErrorCode(12288);return 1};var _eglTerminate=display=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.currentContext=0;EGL.currentReadSurface=0;EGL.currentDrawSurface=0;EGL.defaultDisplayInitialized=false;EGL.setErrorCode(12288);return 1};var _eglWaitClient=()=>{EGL.setErrorCode(12288);return 1};var _eglWaitGL=_eglWaitClient;var _eglWaitNative=nativeEngineId=>{EGL.setErrorCode(12288);return 1};var readEmAsmArgsArray=[];var readEmAsmArgs=(sigPtr,buf)=>{readEmAsmArgsArray.length=0;var ch;while(ch=HEAPU8[sigPtr++]){var wide=ch!=105;wide&=ch!=112;buf+=wide&&buf%8?4:0;readEmAsmArgsArray.push(ch==112?HEAPU32[buf>>2]:ch==105?HEAP32[buf>>2]:HEAPF64[buf>>3]);buf+=wide?8:4}return readEmAsmArgsArray};var runEmAsmFunction=(code,sigPtr,argbuf)=>{var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code](...args)};var _emscripten_asm_const_int=(code,sigPtr,argbuf)=>runEmAsmFunction(code,sigPtr,argbuf);var runMainThreadEmAsm=(emAsmAddr,sigPtr,argbuf,sync)=>{var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[emAsmAddr](...args)};var _emscripten_asm_const_int_sync_on_main_thread=(emAsmAddr,sigPtr,argbuf)=>runMainThreadEmAsm(emAsmAddr,sigPtr,argbuf,1);var _emscripten_asm_const_ptr_sync_on_main_thread=(emAsmAddr,sigPtr,argbuf)=>runMainThreadEmAsm(emAsmAddr,sigPtr,argbuf,1);var _emscripten_cancel_main_loop=()=>{Browser.mainLoop.pause();Browser.mainLoop.func=null};var _emscripten_date_now=()=>Date.now();var withStackSave=f=>{var stack=stackSave();var ret=f();stackRestore(stack);return ret};var JSEvents={removeAllEventListeners(){while(JSEvents.eventHandlers.length){JSEvents._removeHandler(JSEvents.eventHandlers.length-1)}JSEvents.deferredCalls=[]},inEventHandler:0,deferredCalls:[],deferCall(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort((x,y)=>x.precedence{for(var i=0;icString>2?UTF8ToString(cString):cString;var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];var findEventTarget=target=>{target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement};var findCanvasEventTarget=findEventTarget;var _emscripten_get_canvas_element_size=(target,width,height)=>{var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height};var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var getCanvasElementSize=target=>withStackSave(()=>{var w=stackAlloc(8);var h=w+4;var targetInt=stringToUTF8OnStack(target.id);var ret=_emscripten_get_canvas_element_size(targetInt,w,h);var size=[HEAP32[w>>2],HEAP32[h>>2]];return size});var _emscripten_set_canvas_element_size=(target,width,height)=>{var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0};var setCanvasElementSize=(target,width,height)=>{if(!target.controlTransferredOffscreen){target.width=width;target.height=height}else{withStackSave(()=>{var targetInt=stringToUTF8OnStack(target.id);_emscripten_set_canvas_element_size(targetInt,width,height)})}};var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var registerRestoreOldStyle=canvas=>{var canvasSize=getCanvasElementSize(canvas);var oldWidth=canvasSize[0];var oldHeight=canvasSize[1];var oldCssWidth=canvas.style.width;var oldCssHeight=canvas.style.height;var oldBackgroundColor=canvas.style.backgroundColor;var oldDocumentBackgroundColor=document.body.style.backgroundColor;var oldPaddingLeft=canvas.style.paddingLeft;var oldPaddingRight=canvas.style.paddingRight;var oldPaddingTop=canvas.style.paddingTop;var oldPaddingBottom=canvas.style.paddingBottom;var oldMarginLeft=canvas.style.marginLeft;var oldMarginRight=canvas.style.marginRight;var oldMarginTop=canvas.style.marginTop;var oldMarginBottom=canvas.style.marginBottom;var oldDocumentBodyMargin=document.body.style.margin;var oldDocumentOverflow=document.documentElement.style.overflow;var oldDocumentScroll=document.body.scroll;var oldImageRendering=canvas.style.imageRendering;function restoreOldStyle(){var fullscreenElement=document.fullscreenElement||document.webkitFullscreenElement;if(!fullscreenElement){document.removeEventListener("fullscreenchange",restoreOldStyle);document.removeEventListener("webkitfullscreenchange",restoreOldStyle);setCanvasElementSize(canvas,oldWidth,oldHeight);canvas.style.width=oldCssWidth;canvas.style.height=oldCssHeight;canvas.style.backgroundColor=oldBackgroundColor;if(!oldDocumentBackgroundColor)document.body.style.backgroundColor="white";document.body.style.backgroundColor=oldDocumentBackgroundColor;canvas.style.paddingLeft=oldPaddingLeft;canvas.style.paddingRight=oldPaddingRight;canvas.style.paddingTop=oldPaddingTop;canvas.style.paddingBottom=oldPaddingBottom;canvas.style.marginLeft=oldMarginLeft;canvas.style.marginRight=oldMarginRight;canvas.style.marginTop=oldMarginTop;canvas.style.marginBottom=oldMarginBottom;document.body.style.margin=oldDocumentBodyMargin;document.documentElement.style.overflow=oldDocumentOverflow;document.body.scroll=oldDocumentScroll;canvas.style.imageRendering=oldImageRendering;if(canvas.GLctxObject)canvas.GLctxObject.GLctx.viewport(0,0,oldWidth,oldHeight);if(currentFullscreenStrategy.canvasResizedCallback){getWasmTableEntry(currentFullscreenStrategy.canvasResizedCallback)(37,0,currentFullscreenStrategy.canvasResizedCallbackUserData)}}}document.addEventListener("fullscreenchange",restoreOldStyle);document.addEventListener("webkitfullscreenchange",restoreOldStyle);return restoreOldStyle};var setLetterbox=(element,topBottom,leftRight)=>{element.style.paddingLeft=element.style.paddingRight=leftRight+"px";element.style.paddingTop=element.style.paddingBottom=topBottom+"px"};var getBoundingClientRect=e=>specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0};var JSEvents_resizeCanvasForFullscreen=(target,strategy)=>{var restoreOldStyle=registerRestoreOldStyle(target);var cssWidth=strategy.softFullscreen?innerWidth:screen.width;var cssHeight=strategy.softFullscreen?innerHeight:screen.height;var rect=getBoundingClientRect(target);var windowedCssWidth=rect.width;var windowedCssHeight=rect.height;var canvasSize=getCanvasElementSize(target);var windowedRttWidth=canvasSize[0];var windowedRttHeight=canvasSize[1];if(strategy.scaleMode==3){setLetterbox(target,(cssHeight-windowedCssHeight)/2,(cssWidth-windowedCssWidth)/2);cssWidth=windowedCssWidth;cssHeight=windowedCssHeight}else if(strategy.scaleMode==2){if(cssWidth*windowedRttHeight{if(strategy.scaleMode!=0||strategy.canvasResolutionScaleMode!=0){JSEvents_resizeCanvasForFullscreen(target,strategy)}if(target.requestFullscreen){target.requestFullscreen()}else if(target.webkitRequestFullscreen){target.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}else{return JSEvents.fullscreenEnabled()?-3:-1}currentFullscreenStrategy=strategy;if(strategy.canvasResizedCallback){getWasmTableEntry(strategy.canvasResizedCallback)(37,0,strategy.canvasResizedCallbackUserData)}return 0};var _emscripten_exit_fullscreen=()=>{if(!JSEvents.fullscreenEnabled())return-1;JSEvents.removeDeferredCalls(JSEvents_requestFullscreen);var d=specialHTMLTargets[1];if(d.exitFullscreen){d.fullscreenElement&&d.exitFullscreen()}else if(d.webkitExitFullscreen){d.webkitFullscreenElement&&d.webkitExitFullscreen()}else{return-1}return 0};var requestPointerLock=target=>{if(target.requestPointerLock){target.requestPointerLock()}else{if(document.body.requestPointerLock){return-3}return-1}return 0};var _emscripten_exit_pointerlock=()=>{JSEvents.removeDeferredCalls(requestPointerLock);if(document.exitPointerLock){document.exitPointerLock()}else{return-1}return 0};var __emscripten_runtime_keepalive_clear=()=>{noExitRuntime=false;runtimeKeepaliveCounter=0};var _emscripten_force_exit=status=>{__emscripten_runtime_keepalive_clear();_exit(status)};var _emscripten_get_device_pixel_ratio=()=>typeof devicePixelRatio=="number"&&devicePixelRatio||1;var _emscripten_get_element_css_size=(target,width,height)=>{target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0};var fillGamepadEventData=(eventStruct,e)=>{HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i>3]=e.axes[i]}for(var i=0;i>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)};var _emscripten_get_gamepad_status=(index,gamepadState)=>{if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0};var _emscripten_get_num_gamepads=()=>JSEvents.lastGamepadState.length;var _emscripten_get_screen_size=(width,height)=>{HEAP32[width>>2]=screen.width;HEAP32[height>>2]=screen.height};var _glActiveTexture=x0=>GLctx.activeTexture(x0);var _emscripten_glActiveTexture=_glActiveTexture;var _glAttachShader=(program,shader)=>{GLctx.attachShader(GL.programs[program],GL.shaders[shader])};var _emscripten_glAttachShader=_glAttachShader;var _glBeginQuery=(target,id)=>{GLctx.beginQuery(target,GL.queries[id])};var _emscripten_glBeginQuery=_glBeginQuery;var _glBeginQueryEXT=(target,id)=>{GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.queries[id])};var _emscripten_glBeginQueryEXT=_glBeginQueryEXT;var _glBeginTransformFeedback=x0=>GLctx.beginTransformFeedback(x0);var _emscripten_glBeginTransformFeedback=_glBeginTransformFeedback;var _glBindAttribLocation=(program,index,name)=>{GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))};var _emscripten_glBindAttribLocation=_glBindAttribLocation;var _glBindBuffer=(target,buffer)=>{if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])};var _emscripten_glBindBuffer=_glBindBuffer;var _glBindBufferBase=(target,index,buffer)=>{GLctx.bindBufferBase(target,index,GL.buffers[buffer])};var _emscripten_glBindBufferBase=_glBindBufferBase;var _glBindBufferRange=(target,index,buffer,offset,ptrsize)=>{GLctx.bindBufferRange(target,index,GL.buffers[buffer],offset,ptrsize)};var _emscripten_glBindBufferRange=_glBindBufferRange;var _glBindFramebuffer=(target,framebuffer)=>{GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])};var _emscripten_glBindFramebuffer=_glBindFramebuffer;var _glBindRenderbuffer=(target,renderbuffer)=>{GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])};var _emscripten_glBindRenderbuffer=_glBindRenderbuffer;var _glBindSampler=(unit,sampler)=>{GLctx.bindSampler(unit,GL.samplers[sampler])};var _emscripten_glBindSampler=_glBindSampler;var _glBindTexture=(target,texture)=>{GLctx.bindTexture(target,GL.textures[texture])};var _emscripten_glBindTexture=_glBindTexture;var _glBindTransformFeedback=(target,id)=>{GLctx.bindTransformFeedback(target,GL.transformFeedbacks[id])};var _emscripten_glBindTransformFeedback=_glBindTransformFeedback;var _glBindVertexArray=vao=>{GLctx.bindVertexArray(GL.vaos[vao])};var _emscripten_glBindVertexArray=_glBindVertexArray;var _glBindVertexArrayOES=_glBindVertexArray;var _emscripten_glBindVertexArrayOES=_glBindVertexArrayOES;var _glBlendColor=(x0,x1,x2,x3)=>GLctx.blendColor(x0,x1,x2,x3);var _emscripten_glBlendColor=_glBlendColor;var _glBlendEquation=x0=>GLctx.blendEquation(x0);var _emscripten_glBlendEquation=_glBlendEquation;var _glBlendEquationSeparate=(x0,x1)=>GLctx.blendEquationSeparate(x0,x1);var _emscripten_glBlendEquationSeparate=_glBlendEquationSeparate;var _glBlendFunc=(x0,x1)=>GLctx.blendFunc(x0,x1);var _emscripten_glBlendFunc=_glBlendFunc;var _glBlendFuncSeparate=(x0,x1,x2,x3)=>GLctx.blendFuncSeparate(x0,x1,x2,x3);var _emscripten_glBlendFuncSeparate=_glBlendFuncSeparate;var _glBlitFramebuffer=(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)=>GLctx.blitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9);var _emscripten_glBlitFramebuffer=_glBlitFramebuffer;var _glBufferData=(target,size,data,usage)=>{if(GL.currentContext.version>=2){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}return}GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)};var _emscripten_glBufferData=_glBufferData;var _glBufferSubData=(target,offset,size,data)=>{if(GL.currentContext.version>=2){size&&GLctx.bufferSubData(target,offset,HEAPU8,data,size);return}GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))};var _emscripten_glBufferSubData=_glBufferSubData;var _glCheckFramebufferStatus=x0=>GLctx.checkFramebufferStatus(x0);var _emscripten_glCheckFramebufferStatus=_glCheckFramebufferStatus;var _glClear=x0=>GLctx.clear(x0);var _emscripten_glClear=_glClear;var _glClearBufferfi=(x0,x1,x2,x3)=>GLctx.clearBufferfi(x0,x1,x2,x3);var _emscripten_glClearBufferfi=_glClearBufferfi;var _glClearBufferfv=(buffer,drawbuffer,value)=>{GLctx.clearBufferfv(buffer,drawbuffer,HEAPF32,value>>2)};var _emscripten_glClearBufferfv=_glClearBufferfv;var _glClearBufferiv=(buffer,drawbuffer,value)=>{GLctx.clearBufferiv(buffer,drawbuffer,HEAP32,value>>2)};var _emscripten_glClearBufferiv=_glClearBufferiv;var _glClearBufferuiv=(buffer,drawbuffer,value)=>{GLctx.clearBufferuiv(buffer,drawbuffer,HEAPU32,value>>2)};var _emscripten_glClearBufferuiv=_glClearBufferuiv;var _glClearColor=(x0,x1,x2,x3)=>GLctx.clearColor(x0,x1,x2,x3);var _emscripten_glClearColor=_glClearColor;var _glClearDepthf=x0=>GLctx.clearDepth(x0);var _emscripten_glClearDepthf=_glClearDepthf;var _glClearStencil=x0=>GLctx.clearStencil(x0);var _emscripten_glClearStencil=_glClearStencil;var convertI32PairToI53=(lo,hi)=>(lo>>>0)+hi*4294967296;var _glClientWaitSync=(sync,flags,timeout_low,timeout_high)=>{var timeout=convertI32PairToI53(timeout_low,timeout_high);return GLctx.clientWaitSync(GL.syncs[sync],flags,timeout)};var _emscripten_glClientWaitSync=_glClientWaitSync;var _glColorMask=(red,green,blue,alpha)=>{GLctx.colorMask(!!red,!!green,!!blue,!!alpha)};var _emscripten_glColorMask=_glColorMask;var _glCompileShader=shader=>{GLctx.compileShader(GL.shaders[shader])};var _emscripten_glCompileShader=_glCompileShader;var _glCompressedTexImage2D=(target,level,internalFormat,width,height,border,imageSize,data)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data)}else{GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,HEAPU8,data,imageSize)}return}GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)};var _emscripten_glCompressedTexImage2D=_glCompressedTexImage2D;var _glCompressedTexImage3D=(target,level,internalFormat,width,height,depth,border,imageSize,data)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,imageSize,data)}else{GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,HEAPU8,data,imageSize)}};var _emscripten_glCompressedTexImage3D=_glCompressedTexImage3D;var _glCompressedTexSubImage2D=(target,level,xoffset,yoffset,width,height,format,imageSize,data)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data)}else{GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,HEAPU8,data,imageSize)}return}GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)};var _emscripten_glCompressedTexSubImage2D=_glCompressedTexSubImage2D;var _glCompressedTexSubImage3D=(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)}else{GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,HEAPU8,data,imageSize)}};var _emscripten_glCompressedTexSubImage3D=_glCompressedTexSubImage3D;var _glCopyBufferSubData=(x0,x1,x2,x3,x4)=>GLctx.copyBufferSubData(x0,x1,x2,x3,x4);var _emscripten_glCopyBufferSubData=_glCopyBufferSubData;var _glCopyTexImage2D=(x0,x1,x2,x3,x4,x5,x6,x7)=>GLctx.copyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7);var _emscripten_glCopyTexImage2D=_glCopyTexImage2D;var _glCopyTexSubImage2D=(x0,x1,x2,x3,x4,x5,x6,x7)=>GLctx.copyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7);var _emscripten_glCopyTexSubImage2D=_glCopyTexSubImage2D;var _glCopyTexSubImage3D=(x0,x1,x2,x3,x4,x5,x6,x7,x8)=>GLctx.copyTexSubImage3D(x0,x1,x2,x3,x4,x5,x6,x7,x8);var _emscripten_glCopyTexSubImage3D=_glCopyTexSubImage3D;var _glCreateProgram=()=>{var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id};var _emscripten_glCreateProgram=_glCreateProgram;var _glCreateShader=shaderType=>{var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id};var _emscripten_glCreateShader=_glCreateShader;var _glCullFace=x0=>GLctx.cullFace(x0);var _emscripten_glCullFace=_glCullFace;var _glDeleteBuffers=(n,buffers)=>{for(var i=0;i>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}};var _emscripten_glDeleteBuffers=_glDeleteBuffers;var _glDeleteFramebuffers=(n,framebuffers)=>{for(var i=0;i>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}};var _emscripten_glDeleteFramebuffers=_glDeleteFramebuffers;var _glDeleteProgram=id=>{if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null};var _emscripten_glDeleteProgram=_glDeleteProgram;var _glDeleteQueries=(n,ids)=>{for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.deleteQuery(query);GL.queries[id]=null}};var _emscripten_glDeleteQueries=_glDeleteQueries;var _glDeleteQueriesEXT=(n,ids)=>{for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.queries[id]=null}};var _emscripten_glDeleteQueriesEXT=_glDeleteQueriesEXT;var _glDeleteRenderbuffers=(n,renderbuffers)=>{for(var i=0;i>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}};var _emscripten_glDeleteRenderbuffers=_glDeleteRenderbuffers;var _glDeleteSamplers=(n,samplers)=>{for(var i=0;i>2];var sampler=GL.samplers[id];if(!sampler)continue;GLctx.deleteSampler(sampler);sampler.name=0;GL.samplers[id]=null}};var _emscripten_glDeleteSamplers=_glDeleteSamplers;var _glDeleteShader=id=>{if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null};var _emscripten_glDeleteShader=_glDeleteShader;var _glDeleteSync=id=>{if(!id)return;var sync=GL.syncs[id];if(!sync){GL.recordError(1281);return}GLctx.deleteSync(sync);sync.name=0;GL.syncs[id]=null};var _emscripten_glDeleteSync=_glDeleteSync;var _glDeleteTextures=(n,textures)=>{for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}};var _emscripten_glDeleteTextures=_glDeleteTextures;var _glDeleteTransformFeedbacks=(n,ids)=>{for(var i=0;i>2];var transformFeedback=GL.transformFeedbacks[id];if(!transformFeedback)continue;GLctx.deleteTransformFeedback(transformFeedback);transformFeedback.name=0;GL.transformFeedbacks[id]=null}};var _emscripten_glDeleteTransformFeedbacks=_glDeleteTransformFeedbacks;var _glDeleteVertexArrays=(n,vaos)=>{for(var i=0;i>2];GLctx.deleteVertexArray(GL.vaos[id]);GL.vaos[id]=null}};var _emscripten_glDeleteVertexArrays=_glDeleteVertexArrays;var _glDeleteVertexArraysOES=_glDeleteVertexArrays;var _emscripten_glDeleteVertexArraysOES=_glDeleteVertexArraysOES;var _glDepthFunc=x0=>GLctx.depthFunc(x0);var _emscripten_glDepthFunc=_glDepthFunc;var _glDepthMask=flag=>{GLctx.depthMask(!!flag)};var _emscripten_glDepthMask=_glDepthMask;var _glDepthRangef=(x0,x1)=>GLctx.depthRange(x0,x1);var _emscripten_glDepthRangef=_glDepthRangef;var _glDetachShader=(program,shader)=>{GLctx.detachShader(GL.programs[program],GL.shaders[shader])};var _emscripten_glDetachShader=_glDetachShader;var _glDisable=x0=>GLctx.disable(x0);var _emscripten_glDisable=_glDisable;var _glDisableVertexAttribArray=index=>{GLctx.disableVertexAttribArray(index)};var _emscripten_glDisableVertexAttribArray=_glDisableVertexAttribArray;var _glDrawArrays=(mode,first,count)=>{GLctx.drawArrays(mode,first,count)};var _emscripten_glDrawArrays=_glDrawArrays;var _glDrawArraysInstanced=(mode,first,count,primcount)=>{GLctx.drawArraysInstanced(mode,first,count,primcount)};var _emscripten_glDrawArraysInstanced=_glDrawArraysInstanced;var _glDrawArraysInstancedANGLE=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedANGLE=_glDrawArraysInstancedANGLE;var _glDrawArraysInstancedARB=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedARB=_glDrawArraysInstancedARB;var _glDrawArraysInstancedEXT=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedEXT=_glDrawArraysInstancedEXT;var _glDrawArraysInstancedNV=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedNV=_glDrawArraysInstancedNV;var tempFixedLengthArray=[];var _glDrawBuffers=(n,bufs)=>{var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx.drawBuffers(bufArray)};var _emscripten_glDrawBuffers=_glDrawBuffers;var _glDrawBuffersEXT=_glDrawBuffers;var _emscripten_glDrawBuffersEXT=_glDrawBuffersEXT;var _glDrawBuffersWEBGL=_glDrawBuffers;var _emscripten_glDrawBuffersWEBGL=_glDrawBuffersWEBGL;var _glDrawElements=(mode,count,type,indices)=>{GLctx.drawElements(mode,count,type,indices)};var _emscripten_glDrawElements=_glDrawElements;var _glDrawElementsInstanced=(mode,count,type,indices,primcount)=>{GLctx.drawElementsInstanced(mode,count,type,indices,primcount)};var _emscripten_glDrawElementsInstanced=_glDrawElementsInstanced;var _glDrawElementsInstancedANGLE=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedANGLE=_glDrawElementsInstancedANGLE;var _glDrawElementsInstancedARB=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedARB=_glDrawElementsInstancedARB;var _glDrawElementsInstancedEXT=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedEXT=_glDrawElementsInstancedEXT;var _glDrawElementsInstancedNV=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedNV=_glDrawElementsInstancedNV;var _glDrawRangeElements=(mode,start,end,count,type,indices)=>{_glDrawElements(mode,count,type,indices)};var _emscripten_glDrawRangeElements=_glDrawRangeElements;var _glEnable=x0=>GLctx.enable(x0);var _emscripten_glEnable=_glEnable;var _glEnableVertexAttribArray=index=>{GLctx.enableVertexAttribArray(index)};var _emscripten_glEnableVertexAttribArray=_glEnableVertexAttribArray;var _glEndQuery=x0=>GLctx.endQuery(x0);var _emscripten_glEndQuery=_glEndQuery;var _glEndQueryEXT=target=>{GLctx.disjointTimerQueryExt["endQueryEXT"](target)};var _emscripten_glEndQueryEXT=_glEndQueryEXT;var _glEndTransformFeedback=()=>GLctx.endTransformFeedback();var _emscripten_glEndTransformFeedback=_glEndTransformFeedback;var _glFenceSync=(condition,flags)=>{var sync=GLctx.fenceSync(condition,flags);if(sync){var id=GL.getNewId(GL.syncs);sync.name=id;GL.syncs[id]=sync;return id}return 0};var _emscripten_glFenceSync=_glFenceSync;var _glFinish=()=>GLctx.finish();var _emscripten_glFinish=_glFinish;var _glFlush=()=>GLctx.flush();var _emscripten_glFlush=_glFlush;var _glFramebufferRenderbuffer=(target,attachment,renderbuffertarget,renderbuffer)=>{GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])};var _emscripten_glFramebufferRenderbuffer=_glFramebufferRenderbuffer;var _glFramebufferTexture2D=(target,attachment,textarget,texture,level)=>{GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)};var _emscripten_glFramebufferTexture2D=_glFramebufferTexture2D;var _glFramebufferTextureLayer=(target,attachment,texture,level,layer)=>{GLctx.framebufferTextureLayer(target,attachment,GL.textures[texture],level,layer)};var _emscripten_glFramebufferTextureLayer=_glFramebufferTextureLayer;var _glFrontFace=x0=>GLctx.frontFace(x0);var _emscripten_glFrontFace=_glFrontFace;var _glGenBuffers=(n,buffers)=>{GL.genObject(n,buffers,"createBuffer",GL.buffers)};var _emscripten_glGenBuffers=_glGenBuffers;var _glGenFramebuffers=(n,ids)=>{GL.genObject(n,ids,"createFramebuffer",GL.framebuffers)};var _emscripten_glGenFramebuffers=_glGenFramebuffers;var _glGenQueries=(n,ids)=>{GL.genObject(n,ids,"createQuery",GL.queries)};var _emscripten_glGenQueries=_glGenQueries;var _glGenQueriesEXT=(n,ids)=>{for(var i=0;i>2]=0;return}var id=GL.getNewId(GL.queries);query.name=id;GL.queries[id]=query;HEAP32[ids+i*4>>2]=id}};var _emscripten_glGenQueriesEXT=_glGenQueriesEXT;var _glGenRenderbuffers=(n,renderbuffers)=>{GL.genObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)};var _emscripten_glGenRenderbuffers=_glGenRenderbuffers;var _glGenSamplers=(n,samplers)=>{GL.genObject(n,samplers,"createSampler",GL.samplers)};var _emscripten_glGenSamplers=_glGenSamplers;var _glGenTextures=(n,textures)=>{GL.genObject(n,textures,"createTexture",GL.textures)};var _emscripten_glGenTextures=_glGenTextures;var _glGenTransformFeedbacks=(n,ids)=>{GL.genObject(n,ids,"createTransformFeedback",GL.transformFeedbacks)};var _emscripten_glGenTransformFeedbacks=_glGenTransformFeedbacks;var _glGenVertexArrays=(n,arrays)=>{GL.genObject(n,arrays,"createVertexArray",GL.vaos)};var _emscripten_glGenVertexArrays=_glGenVertexArrays;var _glGenVertexArraysOES=_glGenVertexArrays;var _emscripten_glGenVertexArraysOES=_glGenVertexArraysOES;var _glGenerateMipmap=x0=>GLctx.generateMipmap(x0);var _emscripten_glGenerateMipmap=_glGenerateMipmap;var __glGetActiveAttribOrUniform=(funcName,program,index,bufSize,length,size,type,name)=>{program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}};var _glGetActiveAttrib=(program,index,bufSize,length,size,type,name)=>{__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)};var _emscripten_glGetActiveAttrib=_glGetActiveAttrib;var _glGetActiveUniform=(program,index,bufSize,length,size,type,name)=>{__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)};var _emscripten_glGetActiveUniform=_glGetActiveUniform;var _glGetActiveUniformBlockName=(program,uniformBlockIndex,bufSize,length,uniformBlockName)=>{program=GL.programs[program];var result=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);if(!result)return;if(uniformBlockName&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(result,uniformBlockName,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}};var _emscripten_glGetActiveUniformBlockName=_glGetActiveUniformBlockName;var _glGetActiveUniformBlockiv=(program,uniformBlockIndex,pname,params)=>{if(!params){GL.recordError(1281);return}program=GL.programs[program];if(pname==35393){var name=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);HEAP32[params>>2]=name.length+1;return}var result=GLctx.getActiveUniformBlockParameter(program,uniformBlockIndex,pname);if(result===null)return;if(pname==35395){for(var i=0;i>2]=result[i]}}else{HEAP32[params>>2]=result}};var _emscripten_glGetActiveUniformBlockiv=_glGetActiveUniformBlockiv;var _glGetActiveUniformsiv=(program,uniformCount,uniformIndices,pname,params)=>{if(!params){GL.recordError(1281);return}if(uniformCount>0&&uniformIndices==0){GL.recordError(1281);return}program=GL.programs[program];var ids=[];for(var i=0;i>2])}var result=GLctx.getActiveUniforms(program,ids,pname);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}};var _emscripten_glGetActiveUniformsiv=_glGetActiveUniformsiv;var _glGetAttachedShaders=(program,maxCount,count,shaders)=>{var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i>2]=id}};var _emscripten_glGetAttachedShaders=_glGetAttachedShaders;var _glGetAttribLocation=(program,name)=>GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name));var _emscripten_glGetAttribLocation=_glGetAttribLocation;var writeI53ToI64=(ptr,num)=>{HEAPU32[ptr>>2]=num;var lower=HEAPU32[ptr>>2];HEAPU32[ptr+4>>2]=(num-lower)/4294967296};var webglGetExtensions=function $webglGetExtensions(){var exts=getEmscriptenSupportedExtensions(GLctx);exts=exts.concat(exts.map(e=>"GL_"+e));return exts};var emscriptenWebGLGet=(name_,p,type)=>{if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 34814:case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break;case 33309:if(GL.currentContext.version<2){GL.recordError(1282);return}ret=webglGetExtensions().length;break;case 33307:case 33308:if(GL.currentContext.version<2){GL.recordError(1280);return}ret=name_==33307?3:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err(`GL_INVALID_ENUM in glGet${type}v: Unknown object returned from WebGL getParameter(${name_})! (error: ${e})`);return}}break;default:GL.recordError(1280);err(`GL_INVALID_ENUM in glGet${type}v: Native code calling glGet${type}v(${name_}) and it returns ${result} of type ${typeof result}!`);return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p]=ret?1:0;break}};var _glGetBooleanv=(name_,p)=>emscriptenWebGLGet(name_,p,4);var _emscripten_glGetBooleanv=_glGetBooleanv;var _glGetBufferParameteri64v=(target,value,data)=>{if(!data){GL.recordError(1281);return}writeI53ToI64(data,GLctx.getBufferParameter(target,value))};var _emscripten_glGetBufferParameteri64v=_glGetBufferParameteri64v;var _glGetBufferParameteriv=(target,value,data)=>{if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)};var _emscripten_glGetBufferParameteriv=_glGetBufferParameteriv;var _glGetError=()=>{var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error};var _emscripten_glGetError=_glGetError;var _glGetFloatv=(name_,p)=>emscriptenWebGLGet(name_,p,2);var _emscripten_glGetFloatv=_glGetFloatv;var _glGetFragDataLocation=(program,name)=>GLctx.getFragDataLocation(GL.programs[program],UTF8ToString(name));var _emscripten_glGetFragDataLocation=_glGetFragDataLocation;var _glGetFramebufferAttachmentParameteriv=(target,attachment,pname,params)=>{var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result};var _emscripten_glGetFramebufferAttachmentParameteriv=_glGetFramebufferAttachmentParameteriv;var emscriptenWebGLGetIndexed=(target,index,data,type)=>{if(!data){GL.recordError(1281);return}var result=GLctx.getIndexedParameter(target,index);var ret;switch(typeof result){case"boolean":ret=result?1:0;break;case"number":ret=result;break;case"object":if(result===null){switch(target){case 35983:case 35368:ret=0;break;default:{GL.recordError(1280);return}}}else if(result instanceof WebGLBuffer){ret=result.name|0}else{GL.recordError(1280);return}break;default:GL.recordError(1280);return}switch(type){case 1:writeI53ToI64(data,ret);break;case 0:HEAP32[data>>2]=ret;break;case 2:HEAPF32[data>>2]=ret;break;case 4:HEAP8[data]=ret?1:0;break;default:throw"internal emscriptenWebGLGetIndexed() error, bad type: "+type}};var _glGetInteger64i_v=(target,index,data)=>emscriptenWebGLGetIndexed(target,index,data,1);var _emscripten_glGetInteger64i_v=_glGetInteger64i_v;var _glGetInteger64v=(name_,p)=>{emscriptenWebGLGet(name_,p,1)};var _emscripten_glGetInteger64v=_glGetInteger64v;var _glGetIntegeri_v=(target,index,data)=>emscriptenWebGLGetIndexed(target,index,data,0);var _emscripten_glGetIntegeri_v=_glGetIntegeri_v;var _glGetIntegerv=(name_,p)=>emscriptenWebGLGet(name_,p,0);var _emscripten_glGetIntegerv=_glGetIntegerv;var _glGetInternalformativ=(target,internalformat,pname,bufSize,params)=>{if(bufSize<0){GL.recordError(1281);return}if(!params){GL.recordError(1281);return}var ret=GLctx.getInternalformatParameter(target,internalformat,pname);if(ret===null)return;for(var i=0;i>2]=ret[i]}};var _emscripten_glGetInternalformativ=_glGetInternalformativ;var _glGetProgramBinary=(program,bufSize,length,binaryFormat,binary)=>{GL.recordError(1282)};var _emscripten_glGetProgramBinary=_glGetProgramBinary;var _glGetProgramInfoLog=(program,maxLength,length,infoLog)=>{var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetProgramInfoLog=_glGetProgramInfoLog;var _glGetProgramiv=(program,pname,p)=>{if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}program=GL.programs[program];if(pname==35716){var log=GLctx.getProgramInfoLog(program);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){if(!program.maxUniformLength){for(var i=0;i>2]=program.maxUniformLength}else if(pname==35722){if(!program.maxAttributeLength){for(var i=0;i>2]=program.maxAttributeLength}else if(pname==35381){if(!program.maxUniformBlockNameLength){for(var i=0;i>2]=program.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(program,pname)}};var _emscripten_glGetProgramiv=_glGetProgramiv;var _glGetQueryObjecti64vEXT=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param;if(GL.currentContext.version<2){param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname)}else{param=GLctx.getQueryParameter(query,pname)}var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)};var _emscripten_glGetQueryObjecti64vEXT=_glGetQueryObjecti64vEXT;var _glGetQueryObjectivEXT=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret};var _emscripten_glGetQueryObjectivEXT=_glGetQueryObjectivEXT;var _glGetQueryObjectui64vEXT=_glGetQueryObjecti64vEXT;var _emscripten_glGetQueryObjectui64vEXT=_glGetQueryObjectui64vEXT;var _glGetQueryObjectuiv=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.getQueryParameter(query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret};var _emscripten_glGetQueryObjectuiv=_glGetQueryObjectuiv;var _glGetQueryObjectuivEXT=_glGetQueryObjectivEXT;var _emscripten_glGetQueryObjectuivEXT=_glGetQueryObjectuivEXT;var _glGetQueryiv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getQuery(target,pname)};var _emscripten_glGetQueryiv=_glGetQueryiv;var _glGetQueryivEXT=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)};var _emscripten_glGetQueryivEXT=_glGetQueryivEXT;var _glGetRenderbufferParameteriv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)};var _emscripten_glGetRenderbufferParameteriv=_glGetRenderbufferParameteriv;var _glGetSamplerParameterfv=(sampler,pname,params)=>{if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)};var _emscripten_glGetSamplerParameterfv=_glGetSamplerParameterfv;var _glGetSamplerParameteriv=(sampler,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)};var _emscripten_glGetSamplerParameteriv=_glGetSamplerParameteriv;var _glGetShaderInfoLog=(shader,maxLength,length,infoLog)=>{var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetShaderInfoLog=_glGetShaderInfoLog;var _glGetShaderPrecisionFormat=(shaderType,precisionType,range,precision)=>{var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision};var _emscripten_glGetShaderPrecisionFormat=_glGetShaderPrecisionFormat;var _glGetShaderSource=(shader,bufSize,length,source)=>{var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetShaderSource=_glGetShaderSource;var _glGetShaderiv=(shader,pname,p)=>{if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}};var _emscripten_glGetShaderiv=_glGetShaderiv;var _glGetString=name_=>{var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:ret=stringToNewUTF8(webglGetExtensions().join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=s?stringToNewUTF8(s):0;break;case 7938:var glVersion=GLctx.getParameter(7938);if(GL.currentContext.version>=2)glVersion=`OpenGL ES 3.0 (${glVersion})`;else{glVersion=`OpenGL ES 2.0 (${glVersion})`}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion=`OpenGL ES GLSL ES ${ver_num[1]} (${glslVersion})`}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280)}GL.stringCache[name_]=ret}return ret};var _emscripten_glGetString=_glGetString;var _glGetStringi=(name,index)=>{if(GL.currentContext.version<2){GL.recordError(1282);return 0}var stringiCache=GL.stringiCache[name];if(stringiCache){if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index]}switch(name){case 7939:var exts=webglGetExtensions().map(stringToNewUTF8);stringiCache=GL.stringiCache[name]=exts;if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index];default:GL.recordError(1280);return 0}};var _emscripten_glGetStringi=_glGetStringi;var _glGetSynciv=(sync,pname,bufSize,length,values)=>{if(bufSize<0){GL.recordError(1281);return}if(!values){GL.recordError(1281);return}var ret=GLctx.getSyncParameter(GL.syncs[sync],pname);if(ret!==null){HEAP32[values>>2]=ret;if(length)HEAP32[length>>2]=1}};var _emscripten_glGetSynciv=_glGetSynciv;var _glGetTexParameterfv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)};var _emscripten_glGetTexParameterfv=_glGetTexParameterfv;var _glGetTexParameteriv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)};var _emscripten_glGetTexParameteriv=_glGetTexParameteriv;var _glGetTransformFeedbackVarying=(program,index,bufSize,length,size,type,name)=>{program=GL.programs[program];var info=GLctx.getTransformFeedbackVarying(program,index);if(!info)return;if(name&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type};var _emscripten_glGetTransformFeedbackVarying=_glGetTransformFeedbackVarying;var _glGetUniformBlockIndex=(program,uniformBlockName)=>GLctx.getUniformBlockIndex(GL.programs[program],UTF8ToString(uniformBlockName));var _emscripten_glGetUniformBlockIndex=_glGetUniformBlockIndex;var _glGetUniformIndices=(program,uniformCount,uniformNames,uniformIndices)=>{if(!uniformIndices){GL.recordError(1281);return}if(uniformCount>0&&(uniformNames==0||uniformIndices==0)){GL.recordError(1281);return}program=GL.programs[program];var names=[];for(var i=0;i>2]));var result=GLctx.getUniformIndices(program,names);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}};var _emscripten_glGetUniformIndices=_glGetUniformIndices;var jstoi_q=str=>parseInt(str);var webglGetLeftBracePos=name=>name.slice(-1)=="]"&&name.lastIndexOf("[");var webglPrepareUniformLocationsBeforeFirstUse=program=>{var uniformLocsById=program.uniformLocsById,uniformSizeAndIdsByName=program.uniformSizeAndIdsByName,i,j;if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};for(i=0;i0?nm.slice(0,lb):nm;var id=program.uniformIdCounter;program.uniformIdCounter+=sz;uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j{name=UTF8ToString(name);if(program=GL.programs[program]){webglPrepareUniformLocationsBeforeFirstUse(program);var uniformLocsById=program.uniformLocsById;var arrayIndex=0;var uniformBaseName=name;var leftBrace=webglGetLeftBracePos(name);if(leftBrace>0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex{var p=GLctx.currentProgram;if(p){var webglLoc=p.uniformLocsById[location];if(typeof webglLoc=="number"){p.uniformLocsById[location]=webglLoc=GLctx.getUniformLocation(p,p.uniformArrayNamesById[location]+(webglLoc>0?`[${webglLoc}]`:""))}return webglLoc}else{GL.recordError(1282)}};var emscriptenWebGLGetUniform=(program,location,params,type)=>{if(!params){GL.recordError(1281);return}program=GL.programs[program];webglPrepareUniformLocationsBeforeFirstUse(program);var data=GLctx.getUniform(program,webglGetUniformLocation(location));if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}};var _glGetUniformfv=(program,location,params)=>{emscriptenWebGLGetUniform(program,location,params,2)};var _emscripten_glGetUniformfv=_glGetUniformfv;var _glGetUniformiv=(program,location,params)=>{emscriptenWebGLGetUniform(program,location,params,0)};var _emscripten_glGetUniformiv=_glGetUniformiv;var _glGetUniformuiv=(program,location,params)=>emscriptenWebGLGetUniform(program,location,params,0);var _emscripten_glGetUniformuiv=_glGetUniformuiv;var emscriptenWebGLGetVertexAttrib=(index,pname,params,type)=>{if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}};var _glGetVertexAttribIiv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,0)};var _emscripten_glGetVertexAttribIiv=_glGetVertexAttribIiv;var _glGetVertexAttribIuiv=_glGetVertexAttribIiv;var _emscripten_glGetVertexAttribIuiv=_glGetVertexAttribIuiv;var _glGetVertexAttribPointerv=(index,pname,pointer)=>{if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)};var _emscripten_glGetVertexAttribPointerv=_glGetVertexAttribPointerv;var _glGetVertexAttribfv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,2)};var _emscripten_glGetVertexAttribfv=_glGetVertexAttribfv;var _glGetVertexAttribiv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,5)};var _emscripten_glGetVertexAttribiv=_glGetVertexAttribiv;var _glHint=(x0,x1)=>GLctx.hint(x0,x1);var _emscripten_glHint=_glHint;var _glInvalidateFramebuffer=(target,numAttachments,attachments)=>{var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateFramebuffer(target,list)};var _emscripten_glInvalidateFramebuffer=_glInvalidateFramebuffer;var _glInvalidateSubFramebuffer=(target,numAttachments,attachments,x,y,width,height)=>{var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateSubFramebuffer(target,list,x,y,width,height)};var _emscripten_glInvalidateSubFramebuffer=_glInvalidateSubFramebuffer;var _glIsBuffer=buffer=>{var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)};var _emscripten_glIsBuffer=_glIsBuffer;var _glIsEnabled=x0=>GLctx.isEnabled(x0);var _emscripten_glIsEnabled=_glIsEnabled;var _glIsFramebuffer=framebuffer=>{var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)};var _emscripten_glIsFramebuffer=_glIsFramebuffer;var _glIsProgram=program=>{program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)};var _emscripten_glIsProgram=_glIsProgram;var _glIsQuery=id=>{var query=GL.queries[id];if(!query)return 0;return GLctx.isQuery(query)};var _emscripten_glIsQuery=_glIsQuery;var _glIsQueryEXT=id=>{var query=GL.queries[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)};var _emscripten_glIsQueryEXT=_glIsQueryEXT;var _glIsRenderbuffer=renderbuffer=>{var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)};var _emscripten_glIsRenderbuffer=_glIsRenderbuffer;var _glIsSampler=id=>{var sampler=GL.samplers[id];if(!sampler)return 0;return GLctx.isSampler(sampler)};var _emscripten_glIsSampler=_glIsSampler;var _glIsShader=shader=>{var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)};var _emscripten_glIsShader=_glIsShader;var _glIsSync=sync=>GLctx.isSync(GL.syncs[sync]);var _emscripten_glIsSync=_glIsSync;var _glIsTexture=id=>{var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)};var _emscripten_glIsTexture=_glIsTexture;var _glIsTransformFeedback=id=>GLctx.isTransformFeedback(GL.transformFeedbacks[id]);var _emscripten_glIsTransformFeedback=_glIsTransformFeedback;var _glIsVertexArray=array=>{var vao=GL.vaos[array];if(!vao)return 0;return GLctx.isVertexArray(vao)};var _emscripten_glIsVertexArray=_glIsVertexArray;var _glIsVertexArrayOES=_glIsVertexArray;var _emscripten_glIsVertexArrayOES=_glIsVertexArrayOES;var _glLineWidth=x0=>GLctx.lineWidth(x0);var _emscripten_glLineWidth=_glLineWidth;var _glLinkProgram=program=>{program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}};var _emscripten_glLinkProgram=_glLinkProgram;var _glPauseTransformFeedback=()=>GLctx.pauseTransformFeedback();var _emscripten_glPauseTransformFeedback=_glPauseTransformFeedback;var _glPixelStorei=(pname,param)=>{if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)};var _emscripten_glPixelStorei=_glPixelStorei;var _glPolygonOffset=(x0,x1)=>GLctx.polygonOffset(x0,x1);var _emscripten_glPolygonOffset=_glPolygonOffset;var _glProgramBinary=(program,binaryFormat,binary,length)=>{GL.recordError(1280)};var _emscripten_glProgramBinary=_glProgramBinary;var _glProgramParameteri=(program,pname,value)=>{GL.recordError(1280)};var _emscripten_glProgramParameteri=_glProgramParameteri;var _glQueryCounterEXT=(id,target)=>{GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.queries[id],target)};var _emscripten_glQueryCounterEXT=_glQueryCounterEXT;var _glReadBuffer=x0=>GLctx.readBuffer(x0);var _emscripten_glReadBuffer=_glReadBuffer;var computeUnpackAlignedImageSize=(width,height,sizePerPixel,alignment)=>{function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize};var colorChannelsInGlTextureFormat=format=>{var colorChannels={5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1};var heapObjectForWebGLType=type=>{type-=5120;if(type==0)return HEAP8;if(type==1)return HEAPU8;if(type==2)return HEAP16;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922||type==28520||type==30779||type==30782)return HEAPU32;return HEAPU16};var toTypedArrayIndex=(pointer,heap)=>pointer>>>31-Math.clz32(heap.BYTES_PER_ELEMENT);var emscriptenWebGLGetTexPixelData=(type,format,width,height,pixels,internalFormat)=>{var heap=heapObjectForWebGLType(type);var sizePerPixel=colorChannelsInGlTextureFormat(format)*heap.BYTES_PER_ELEMENT;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel,GL.unpackAlignment);return heap.subarray(toTypedArrayIndex(pixels,heap),toTypedArrayIndex(pixels+bytes,heap))};var _glReadPixels=(x,y,width,height,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);var target=toTypedArrayIndex(pixels,heap);GLctx.readPixels(x,y,width,height,format,type,heap,target)}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)};var _emscripten_glReadPixels=_glReadPixels;var _glReleaseShaderCompiler=()=>{};var _emscripten_glReleaseShaderCompiler=_glReleaseShaderCompiler;var _glRenderbufferStorage=(x0,x1,x2,x3)=>GLctx.renderbufferStorage(x0,x1,x2,x3);var _emscripten_glRenderbufferStorage=_glRenderbufferStorage;var _glRenderbufferStorageMultisample=(x0,x1,x2,x3,x4)=>GLctx.renderbufferStorageMultisample(x0,x1,x2,x3,x4);var _emscripten_glRenderbufferStorageMultisample=_glRenderbufferStorageMultisample;var _glResumeTransformFeedback=()=>GLctx.resumeTransformFeedback();var _emscripten_glResumeTransformFeedback=_glResumeTransformFeedback;var _glSampleCoverage=(value,invert)=>{GLctx.sampleCoverage(value,!!invert)};var _emscripten_glSampleCoverage=_glSampleCoverage;var _glSamplerParameterf=(sampler,pname,param)=>{GLctx.samplerParameterf(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameterf=_glSamplerParameterf;var _glSamplerParameterfv=(sampler,pname,params)=>{var param=HEAPF32[params>>2];GLctx.samplerParameterf(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameterfv=_glSamplerParameterfv;var _glSamplerParameteri=(sampler,pname,param)=>{GLctx.samplerParameteri(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameteri=_glSamplerParameteri;var _glSamplerParameteriv=(sampler,pname,params)=>{var param=HEAP32[params>>2];GLctx.samplerParameteri(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameteriv=_glSamplerParameteriv;var _glScissor=(x0,x1,x2,x3)=>GLctx.scissor(x0,x1,x2,x3);var _emscripten_glScissor=_glScissor;var _glShaderBinary=(count,shaders,binaryformat,binary,length)=>{GL.recordError(1280)};var _emscripten_glShaderBinary=_glShaderBinary;var _glShaderSource=(shader,count,string,length)=>{var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)};var _emscripten_glShaderSource=_glShaderSource;var _glStencilFunc=(x0,x1,x2)=>GLctx.stencilFunc(x0,x1,x2);var _emscripten_glStencilFunc=_glStencilFunc;var _glStencilFuncSeparate=(x0,x1,x2,x3)=>GLctx.stencilFuncSeparate(x0,x1,x2,x3);var _emscripten_glStencilFuncSeparate=_glStencilFuncSeparate;var _glStencilMask=x0=>GLctx.stencilMask(x0);var _emscripten_glStencilMask=_glStencilMask;var _glStencilMaskSeparate=(x0,x1)=>GLctx.stencilMaskSeparate(x0,x1);var _emscripten_glStencilMaskSeparate=_glStencilMaskSeparate;var _glStencilOp=(x0,x1,x2)=>GLctx.stencilOp(x0,x1,x2);var _emscripten_glStencilOp=_glStencilOp;var _glStencilOpSeparate=(x0,x1,x2,x3)=>GLctx.stencilOpSeparate(x0,x1,x2,x3);var _emscripten_glStencilOpSeparate=_glStencilOpSeparate;var _glTexImage2D=(target,level,internalFormat,width,height,border,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,null)}return}GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)};var _emscripten_glTexImage2D=_glTexImage2D;var _glTexImage3D=(target,level,internalFormat,width,height,depth,border,format,type,pixels)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,null)}};var _emscripten_glTexImage3D=_glTexImage3D;var _glTexParameterf=(x0,x1,x2)=>GLctx.texParameterf(x0,x1,x2);var _emscripten_glTexParameterf=_glTexParameterf;var _glTexParameterfv=(target,pname,params)=>{var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)};var _emscripten_glTexParameterfv=_glTexParameterfv;var _glTexParameteri=(x0,x1,x2)=>GLctx.texParameteri(x0,x1,x2);var _emscripten_glTexParameteri=_glTexParameteri;var _glTexParameteriv=(target,pname,params)=>{var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)};var _emscripten_glTexParameteriv=_glTexParameteriv;var _glTexStorage2D=(x0,x1,x2,x3,x4)=>GLctx.texStorage2D(x0,x1,x2,x3,x4);var _emscripten_glTexStorage2D=_glTexStorage2D;var _glTexStorage3D=(x0,x1,x2,x3,x4,x5)=>GLctx.texStorage3D(x0,x1,x2,x3,x4,x5);var _emscripten_glTexStorage3D=_glTexStorage3D;var _glTexSubImage2D=(target,level,xoffset,yoffset,width,height,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,heap,toTypedArrayIndex(pixels,heap));return}}var pixelData=pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0):null;GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)};var _emscripten_glTexSubImage2D=_glTexSubImage2D;var _glTexSubImage3D=(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,null)}};var _emscripten_glTexSubImage3D=_glTexSubImage3D;var _glTransformFeedbackVaryings=(program,count,varyings,bufferMode)=>{program=GL.programs[program];var vars=[];for(var i=0;i>2]));GLctx.transformFeedbackVaryings(program,vars,bufferMode)};var _emscripten_glTransformFeedbackVaryings=_glTransformFeedbackVaryings;var _glUniform1f=(location,v0)=>{GLctx.uniform1f(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1f=_glUniform1f;var miniTempWebGLFloatBuffers=[];var _glUniform1fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1fv(webglGetUniformLocation(location),HEAPF32,value>>2,count);return}if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1fv=_glUniform1fv;var _glUniform1i=(location,v0)=>{GLctx.uniform1i(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1i=_glUniform1i;var miniTempWebGLIntBuffers=[];var _glUniform1iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1iv(webglGetUniformLocation(location),HEAP32,value>>2,count);return}if(count<=288){var view=miniTempWebGLIntBuffers[count-1];for(var i=0;i>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1iv=_glUniform1iv;var _glUniform1ui=(location,v0)=>{GLctx.uniform1ui(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1ui=_glUniform1ui;var _glUniform1uiv=(location,count,value)=>{count&&GLctx.uniform1uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count)};var _emscripten_glUniform1uiv=_glUniform1uiv;var _glUniform2f=(location,v0,v1)=>{GLctx.uniform2f(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2f=_glUniform2f;var _glUniform2fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*2);return}if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2fv=_glUniform2fv;var _glUniform2i=(location,v0,v1)=>{GLctx.uniform2i(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2i=_glUniform2i;var _glUniform2iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2iv(webglGetUniformLocation(location),HEAP32,value>>2,count*2);return}if(count<=144){var view=miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2iv=_glUniform2iv;var _glUniform2ui=(location,v0,v1)=>{GLctx.uniform2ui(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2ui=_glUniform2ui;var _glUniform2uiv=(location,count,value)=>{count&&GLctx.uniform2uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*2)};var _emscripten_glUniform2uiv=_glUniform2uiv;var _glUniform3f=(location,v0,v1,v2)=>{GLctx.uniform3f(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3f=_glUniform3f;var _glUniform3fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*3);return}if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3fv=_glUniform3fv;var _glUniform3i=(location,v0,v1,v2)=>{GLctx.uniform3i(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3i=_glUniform3i;var _glUniform3iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3iv(webglGetUniformLocation(location),HEAP32,value>>2,count*3);return}if(count<=96){var view=miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3iv=_glUniform3iv;var _glUniform3ui=(location,v0,v1,v2)=>{GLctx.uniform3ui(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3ui=_glUniform3ui;var _glUniform3uiv=(location,count,value)=>{count&&GLctx.uniform3uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*3)};var _emscripten_glUniform3uiv=_glUniform3uiv;var _glUniform4f=(location,v0,v1,v2,v3)=>{GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4f=_glUniform4f;var _glUniform4fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value=value>>2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4fv=_glUniform4fv;var _glUniform4i=(location,v0,v1,v2,v3)=>{GLctx.uniform4i(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4i=_glUniform4i;var _glUniform4iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4iv(webglGetUniformLocation(location),HEAP32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4iv=_glUniform4iv;var _glUniform4ui=(location,v0,v1,v2,v3)=>{GLctx.uniform4ui(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4ui=_glUniform4ui;var _glUniform4uiv=(location,count,value)=>{count&&GLctx.uniform4uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*4)};var _emscripten_glUniform4uiv=_glUniform4uiv;var _glUniformBlockBinding=(program,uniformBlockIndex,uniformBlockBinding)=>{program=GL.programs[program];GLctx.uniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding)};var _emscripten_glUniformBlockBinding=_glUniformBlockBinding;var _glUniformMatrix2fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix2fv=_glUniformMatrix2fv;var _glUniformMatrix2x3fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix2x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)};var _emscripten_glUniformMatrix2x3fv=_glUniformMatrix2x3fv;var _glUniformMatrix2x4fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix2x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)};var _emscripten_glUniformMatrix2x4fv=_glUniformMatrix2x4fv;var _glUniformMatrix3fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*9);return}if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix3fv=_glUniformMatrix3fv;var _glUniformMatrix3x2fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix3x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)};var _emscripten_glUniformMatrix3x2fv=_glUniformMatrix3x2fv;var _glUniformMatrix3x4fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix3x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)};var _emscripten_glUniformMatrix3x4fv=_glUniformMatrix3x4fv;var _glUniformMatrix4fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*16);return}if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value=value>>2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix4fv=_glUniformMatrix4fv;var _glUniformMatrix4x2fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix4x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)};var _emscripten_glUniformMatrix4x2fv=_glUniformMatrix4x2fv;var _glUniformMatrix4x3fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix4x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)};var _emscripten_glUniformMatrix4x3fv=_glUniformMatrix4x3fv;var _glUseProgram=program=>{program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program};var _emscripten_glUseProgram=_glUseProgram;var _glValidateProgram=program=>{GLctx.validateProgram(GL.programs[program])};var _emscripten_glValidateProgram=_glValidateProgram;var _glVertexAttrib1f=(x0,x1)=>GLctx.vertexAttrib1f(x0,x1);var _emscripten_glVertexAttrib1f=_glVertexAttrib1f;var _glVertexAttrib1fv=(index,v)=>{GLctx.vertexAttrib1f(index,HEAPF32[v>>2])};var _emscripten_glVertexAttrib1fv=_glVertexAttrib1fv;var _glVertexAttrib2f=(x0,x1,x2)=>GLctx.vertexAttrib2f(x0,x1,x2);var _emscripten_glVertexAttrib2f=_glVertexAttrib2f;var _glVertexAttrib2fv=(index,v)=>{GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])};var _emscripten_glVertexAttrib2fv=_glVertexAttrib2fv;var _glVertexAttrib3f=(x0,x1,x2,x3)=>GLctx.vertexAttrib3f(x0,x1,x2,x3);var _emscripten_glVertexAttrib3f=_glVertexAttrib3f;var _glVertexAttrib3fv=(index,v)=>{GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])};var _emscripten_glVertexAttrib3fv=_glVertexAttrib3fv;var _glVertexAttrib4f=(x0,x1,x2,x3,x4)=>GLctx.vertexAttrib4f(x0,x1,x2,x3,x4);var _emscripten_glVertexAttrib4f=_glVertexAttrib4f;var _glVertexAttrib4fv=(index,v)=>{GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])};var _emscripten_glVertexAttrib4fv=_glVertexAttrib4fv;var _glVertexAttribDivisor=(index,divisor)=>{GLctx.vertexAttribDivisor(index,divisor)};var _emscripten_glVertexAttribDivisor=_glVertexAttribDivisor;var _glVertexAttribDivisorANGLE=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorANGLE=_glVertexAttribDivisorANGLE;var _glVertexAttribDivisorARB=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorARB=_glVertexAttribDivisorARB;var _glVertexAttribDivisorEXT=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorEXT=_glVertexAttribDivisorEXT;var _glVertexAttribDivisorNV=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorNV=_glVertexAttribDivisorNV;var _glVertexAttribI4i=(x0,x1,x2,x3,x4)=>GLctx.vertexAttribI4i(x0,x1,x2,x3,x4);var _emscripten_glVertexAttribI4i=_glVertexAttribI4i;var _glVertexAttribI4iv=(index,v)=>{GLctx.vertexAttribI4i(index,HEAP32[v>>2],HEAP32[v+4>>2],HEAP32[v+8>>2],HEAP32[v+12>>2])};var _emscripten_glVertexAttribI4iv=_glVertexAttribI4iv;var _glVertexAttribI4ui=(x0,x1,x2,x3,x4)=>GLctx.vertexAttribI4ui(x0,x1,x2,x3,x4);var _emscripten_glVertexAttribI4ui=_glVertexAttribI4ui;var _glVertexAttribI4uiv=(index,v)=>{GLctx.vertexAttribI4ui(index,HEAPU32[v>>2],HEAPU32[v+4>>2],HEAPU32[v+8>>2],HEAPU32[v+12>>2])};var _emscripten_glVertexAttribI4uiv=_glVertexAttribI4uiv;var _glVertexAttribIPointer=(index,size,type,stride,ptr)=>{GLctx.vertexAttribIPointer(index,size,type,stride,ptr)};var _emscripten_glVertexAttribIPointer=_glVertexAttribIPointer;var _glVertexAttribPointer=(index,size,type,normalized,stride,ptr)=>{GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)};var _emscripten_glVertexAttribPointer=_glVertexAttribPointer;var _glViewport=(x0,x1,x2,x3)=>GLctx.viewport(x0,x1,x2,x3);var _emscripten_glViewport=_glViewport;var _glWaitSync=(sync,flags,timeout_low,timeout_high)=>{var timeout=convertI32PairToI53(timeout_low,timeout_high);GLctx.waitSync(GL.syncs[sync],flags,timeout)};var _emscripten_glWaitSync=_glWaitSync;var _emscripten_has_asyncify=()=>0;var _emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var doRequestFullscreen=(target,strategy)=>{if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;if(!target.requestFullscreen&&!target.webkitRequestFullscreen){return-3}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(strategy.deferUntilInEventHandler){JSEvents.deferCall(JSEvents_requestFullscreen,1,[target,strategy]);return 1}return-2}return JSEvents_requestFullscreen(target,strategy)};var _emscripten_request_fullscreen_strategy=(target,deferUntilInEventHandler,fullscreenStrategy)=>{var strategy={scaleMode:HEAP32[fullscreenStrategy>>2],canvasResolutionScaleMode:HEAP32[fullscreenStrategy+4>>2],filteringMode:HEAP32[fullscreenStrategy+8>>2],deferUntilInEventHandler:deferUntilInEventHandler,canvasResizedCallback:HEAP32[fullscreenStrategy+12>>2],canvasResizedCallbackUserData:HEAP32[fullscreenStrategy+16>>2]};return doRequestFullscreen(target,strategy)};var _emscripten_request_pointerlock=(target,deferUntilInEventHandler)=>{target=findEventTarget(target);if(!target)return-4;if(!target.requestPointerLock){return-1}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(deferUntilInEventHandler){JSEvents.deferCall(requestPointerLock,2,[target]);return 1}return-2}return requestPointerLock(target)};var abortOnCannotGrowMemory=requestedSize=>{abort("OOM")};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;abortOnCannotGrowMemory(requestedSize)};var _emscripten_sample_gamepad_data=()=>{try{if(navigator.getGamepads)return(JSEvents.lastGamepadState=navigator.getGamepads())?0:-1}catch(e){navigator.getGamepads=null}return-1};var registerBeforeUnloadEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString)=>{var beforeUnloadEventHandlerFunc=(e=event)=>{var confirmationMessage=getWasmTableEntry(callbackfunc)(eventTypeId,0,userData);if(confirmationMessage){confirmationMessage=UTF8ToString(confirmationMessage)}if(confirmationMessage){e.preventDefault();e.returnValue=confirmationMessage;return confirmationMessage}};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:beforeUnloadEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_beforeunload_callback_on_thread=(userData,callbackfunc,targetThread)=>{if(typeof onbeforeunload=="undefined")return-1;if(targetThread!==1)return-5;return registerBeforeUnloadEventCallback(2,userData,true,callbackfunc,28,"beforeunload")};var registerFocusEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.focusEvent)JSEvents.focusEvent=_malloc(256);var focusEventHandlerFunc=(e=event)=>{var nodeName=JSEvents.getNodeNameForTarget(e.target);var id=e.target.id?e.target.id:"";var focusEvent=JSEvents.focusEvent;stringToUTF8(nodeName,focusEvent+0,128);stringToUTF8(id,focusEvent+128,128);if(getWasmTableEntry(callbackfunc)(eventTypeId,focusEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:focusEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_blur_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread);var _emscripten_set_element_css_size=(target,width,height)=>{target=findEventTarget(target);if(!target)return-4;target.style.width=width+"px";target.style.height=height+"px";return 0};var _emscripten_set_focus_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread);var fillFullscreenChangeEventData=eventStruct=>{var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement?.id||"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}};var registerFullscreenChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=(e=event)=>{var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_fullscreenchange_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread)};var registerGamepadEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=(e=event)=>{var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(getWasmTableEntry(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_gamepadconnected_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(_emscripten_sample_gamepad_data())return-1;return registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread)};var _emscripten_set_gamepaddisconnected_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(_emscripten_sample_gamepad_data())return-1;return registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread)};var registerKeyEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=e=>{var keyEventData=JSEvents.keyEvent;HEAPF64[keyEventData>>3]=e.timeStamp;var idx=keyEventData>>2;HEAP32[idx+2]=e.location;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;HEAP32[idx+7]=e.repeat;HEAP32[idx+8]=e.charCode;HEAP32[idx+9]=e.keyCode;HEAP32[idx+10]=e.which;stringToUTF8(e.key||"",keyEventData+44,32);stringToUTF8(e.code||"",keyEventData+76,32);stringToUTF8(e.char||"",keyEventData+108,32);stringToUTF8(e.locale||"",keyEventData+140,32);if(getWasmTableEntry(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_keydown_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);var _emscripten_set_keypress_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);var _emscripten_set_keyup_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);var _emscripten_set_main_loop=(func,fps,simulateInfiniteLoop)=>{var browserIterationFunc=getWasmTableEntry(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)};var fillMouseEventData=(eventStruct,e,target)=>{HEAPF64[eventStruct>>3]=e.timeStamp;var idx=eventStruct>>2;HEAP32[idx+2]=e.screenX;HEAP32[idx+3]=e.screenY;HEAP32[idx+4]=e.clientX;HEAP32[idx+5]=e.clientY;HEAP32[idx+6]=e.ctrlKey;HEAP32[idx+7]=e.shiftKey;HEAP32[idx+8]=e.altKey;HEAP32[idx+9]=e.metaKey;HEAP16[idx*2+20]=e.button;HEAP16[idx*2+21]=e.buttons;HEAP32[idx+11]=e["movementX"];HEAP32[idx+12]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+13]=e.clientX-(rect.left|0);HEAP32[idx+14]=e.clientY-(rect.top|0)};var registerMouseEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=(e=event)=>{fillMouseEventData(JSEvents.mouseEvent,e,target);if(getWasmTableEntry(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_mousedown_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);var _emscripten_set_mouseenter_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);var _emscripten_set_mouseleave_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);var _emscripten_set_mousemove_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);var _emscripten_set_mouseup_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);var fillPointerlockChangeEventData=eventStruct=>{var pointerLockElement=document.pointerLockElement||document.mozPointerLockElement||document.webkitPointerLockElement||document.msPointerLockElement;var isPointerlocked=!!pointerLockElement;HEAP32[eventStruct>>2]=isPointerlocked;var nodeName=JSEvents.getNodeNameForTarget(pointerLockElement);var id=pointerLockElement?.id||"";stringToUTF8(nodeName,eventStruct+4,128);stringToUTF8(id,eventStruct+132,128)};var registerPointerlockChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.pointerlockChangeEvent)JSEvents.pointerlockChangeEvent=_malloc(260);var pointerlockChangeEventHandlerFunc=(e=event)=>{var pointerlockChangeEvent=JSEvents.pointerlockChangeEvent;fillPointerlockChangeEventData(pointerlockChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,pointerlockChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:pointerlockChangeEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_pointerlockchange_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{if(!document||!document.body||!document.body.requestPointerLock&&!document.body.mozRequestPointerLock&&!document.body.webkitRequestPointerLock&&!document.body.msRequestPointerLock){return-1}target=findEventTarget(target);if(!target)return-4;registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"mozpointerlockchange",targetThread);registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"webkitpointerlockchange",targetThread);registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"mspointerlockchange",targetThread);return registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"pointerlockchange",targetThread)};var registerUiEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=(e=event)=>{if(e.target!=target){return}var b=document.body;if(!b){return}var uiEvent=JSEvents.uiEvent;HEAP32[uiEvent>>2]=0;HEAP32[uiEvent+4>>2]=b.clientWidth;HEAP32[uiEvent+8>>2]=b.clientHeight;HEAP32[uiEvent+12>>2]=innerWidth;HEAP32[uiEvent+16>>2]=innerHeight;HEAP32[uiEvent+20>>2]=outerWidth;HEAP32[uiEvent+24>>2]=outerHeight;HEAP32[uiEvent+28>>2]=pageXOffset|0;HEAP32[uiEvent+32>>2]=pageYOffset|0;if(getWasmTableEntry(callbackfunc)(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_resize_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);var registerTouchEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1696);target=findEventTarget(target);var touchEventHandlerFunc=e=>{var t,touches={},et=e.touches;for(var i=0;i>3]=e.timeStamp;var idx=touchEvent>>2;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;idx+=7;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-(targetRect.left|0);HEAP32[idx+10]=t.clientY-(targetRect.top|0);idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent+8>>2]=numTouches;if(getWasmTableEntry(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_touchcancel_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);var _emscripten_set_touchend_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);var _emscripten_set_touchmove_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);var _emscripten_set_touchstart_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);var fillVisibilityChangeEventData=eventStruct=>{var visibilityStates=["hidden","visible","prerender","unloaded"];var visibilityState=visibilityStates.indexOf(document.visibilityState);HEAP32[eventStruct>>2]=document.hidden;HEAP32[eventStruct+4>>2]=visibilityState};var registerVisibilityChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.visibilityChangeEvent)JSEvents.visibilityChangeEvent=_malloc(8);var visibilityChangeEventHandlerFunc=(e=event)=>{var visibilityChangeEvent=JSEvents.visibilityChangeEvent;fillVisibilityChangeEventData(visibilityChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,visibilityChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:visibilityChangeEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_visibilitychange_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(!specialHTMLTargets[1]){return-4}return registerVisibilityChangeEventCallback(specialHTMLTargets[1],userData,useCapture,callbackfunc,21,"visibilitychange",targetThread)};var registerWheelEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=(e=event)=>{var wheelEvent=JSEvents.wheelEvent;fillMouseEventData(wheelEvent,e,target);HEAPF64[wheelEvent+72>>3]=e["deltaX"];HEAPF64[wheelEvent+80>>3]=e["deltaY"];HEAPF64[wheelEvent+88>>3]=e["deltaZ"];HEAP32[wheelEvent+96>>2]=e["deltaMode"];if(getWasmTableEntry(callbackfunc)(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_wheel_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{target=findEventTarget(target);if(!target)return-4;if(typeof target.onwheel!="undefined"){return registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread)}else{return-1}};var _emscripten_set_window_title=title=>document.title=UTF8ToString(title);var _emscripten_sleep=()=>{throw"Please compile your program with async support in order to use asynchronous operations like emscripten_sleep"};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret};function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var arraySum=(array,index)=>{var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum};var MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];var addDays=(date,days)=>{var newDate=new Date(date.getTime());while(days>0){var leap=isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var _strftime=(s,maxsize,format,tm)=>{var tm_zone=HEAPU32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":date=>WEEKDAYS[date.tm_wday].substring(0,3),"%A":date=>WEEKDAYS[date.tm_wday],"%b":date=>MONTHS[date.tm_mon].substring(0,3),"%B":date=>MONTHS[date.tm_mon],"%C":date=>{var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":date=>leadingNulls(date.tm_mday,2),"%e":date=>leadingSomething(date.tm_mday,2," "),"%g":date=>getWeekBasedYear(date).toString().substring(2),"%G":getWeekBasedYear,"%H":date=>leadingNulls(date.tm_hour,2),"%I":date=>{var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":date=>leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3),"%m":date=>leadingNulls(date.tm_mon+1,2),"%M":date=>leadingNulls(date.tm_min,2),"%n":()=>"\n","%p":date=>{if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":date=>leadingNulls(date.tm_sec,2),"%t":()=>"\t","%u":date=>date.tm_wday||7,"%U":date=>{var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":date=>{var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":date=>date.tm_wday,"%W":date=>{var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":date=>(date.tm_year+1900).toString().substring(2),"%Y":date=>date.tm_year+1900,"%z":date=>{var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":date=>date.tm_zone,"%%":()=>"%"};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1};var _strftime_l=(s,maxsize,format,tm,loc)=>_strftime(s,maxsize,format,tm);var listenOnce=(object,event,func)=>{object.addEventListener(event,func,{"once":true})};var autoResumeAudioContext=(ctx,elements)=>{if(!elements){elements=[document,document.getElementById("canvas")]}["keydown","mousedown","touchstart"].forEach(event=>{elements.forEach(element=>{if(element){listenOnce(element,event,()=>{if(ctx.state==="suspended")ctx.resume()})}})})};var dynCallLegacy=(sig,ptr,args)=>{var f=Module["dynCall_"+sig];return f(ptr,...args)};var dynCall=(sig,ptr,args=[])=>{if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr)(...args);return rtn};FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_unlink"]=FS.unlink;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["requestFullscreen"]=Browser.requestFullscreen;Module["requestAnimationFrame"]=Browser.requestAnimationFrame;Module["setCanvasSize"]=Browser.setCanvasSize;Module["pauseMainLoop"]=Browser.mainLoop.pause;Module["resumeMainLoop"]=Browser.mainLoop.resume;Module["getUserMedia"]=Browser.getUserMedia;Module["createContext"]=Browser.createContext;var preloadedImages={};var preloadedAudios={};var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){miniTempWebGLIntBuffers[i]=miniTempWebGLIntBuffersStorage.subarray(0,i+1)}var wasmImports={p:___cxa_begin_catch,v:___cxa_end_catch,a:___cxa_find_matching_catch_2,h:___cxa_find_matching_catch_3,I:___cxa_rethrow,o:___cxa_throw,ab:___cxa_uncaught_exceptions,b:___resumeException,ha:___syscall_fcntl64,fb:___syscall_ioctl,gb:___syscall_openat,ad:__emscripten_fs_load_embedded_files,hb:__emscripten_get_now_is_monotonic,D:_abort,Ua:_eglBindAPI,Xa:_eglChooseConfig,La:_eglCreateContext,Na:_eglCreateWindowSurface,Ma:_eglDestroyContext,Oa:_eglDestroySurface,Za:_eglGetConfigAttrib,ca:_eglGetDisplay,Ka:_eglGetError,Va:_eglInitialize,Pa:_eglMakeCurrent,Ja:_eglQueryString,Qa:_eglSwapBuffers,Ra:_eglSwapInterval,Wa:_eglTerminate,Ta:_eglWaitGL,Sa:_eglWaitNative,mc:_emscripten_asm_const_int,q:_emscripten_asm_const_int_sync_on_main_thread,na:_emscripten_asm_const_ptr_sync_on_main_thread,oa:_emscripten_cancel_main_loop,ia:_emscripten_date_now,Ea:_emscripten_exit_fullscreen,Ha:_emscripten_exit_pointerlock,Rc:_emscripten_force_exit,y:_emscripten_get_device_pixel_ratio,u:_emscripten_get_element_css_size,la:_emscripten_get_gamepad_status,H:_emscripten_get_now,Tb:_emscripten_get_num_gamepads,Ia:_emscripten_get_screen_size,$f:_emscripten_glActiveTexture,_f:_emscripten_glAttachShader,$c:_emscripten_glBeginQuery,Aa:_emscripten_glBeginQueryEXT,Hc:_emscripten_glBeginTransformFeedback,Zf:_emscripten_glBindAttribLocation,Yf:_emscripten_glBindBuffer,Ec:_emscripten_glBindBufferBase,Fc:_emscripten_glBindBufferRange,Xf:_emscripten_glBindFramebuffer,Wf:_emscripten_glBindRenderbuffer,Kb:_emscripten_glBindSampler,Vf:_emscripten_glBindTexture,Cb:_emscripten_glBindTransformFeedback,Mc:_emscripten_glBindVertexArray,sa:_emscripten_glBindVertexArrayOES,Uf:_emscripten_glBlendColor,Tf:_emscripten_glBlendEquation,Sf:_emscripten_glBlendEquationSeparate,Rf:_emscripten_glBlendFunc,Qf:_emscripten_glBlendFuncSeparate,Pc:_emscripten_glBlitFramebuffer,Pf:_emscripten_glBufferData,Of:_emscripten_glBufferSubData,Nf:_emscripten_glCheckFramebufferStatus,Mf:_emscripten_glClear,gc:_emscripten_glClearBufferfi,hc:_emscripten_glClearBufferfv,jc:_emscripten_glClearBufferiv,ic:_emscripten_glClearBufferuiv,Lf:_emscripten_glClearColor,Kf:_emscripten_glClearDepthf,Jf:_emscripten_glClearStencil,Ub:_emscripten_glClientWaitSync,If:_emscripten_glColorMask,Hf:_emscripten_glCompileShader,Gf:_emscripten_glCompressedTexImage2D,fd:_emscripten_glCompressedTexImage3D,Ff:_emscripten_glCompressedTexSubImage2D,ed:_emscripten_glCompressedTexSubImage3D,ec:_emscripten_glCopyBufferSubData,Ef:_emscripten_glCopyTexImage2D,Df:_emscripten_glCopyTexSubImage2D,gd:_emscripten_glCopyTexSubImage3D,Cf:_emscripten_glCreateProgram,Bf:_emscripten_glCreateShader,Af:_emscripten_glCullFace,zf:_emscripten_glDeleteBuffers,yf:_emscripten_glDeleteFramebuffers,xf:_emscripten_glDeleteProgram,cd:_emscripten_glDeleteQueries,Ca:_emscripten_glDeleteQueriesEXT,wf:_emscripten_glDeleteRenderbuffers,Mb:_emscripten_glDeleteSamplers,vf:_emscripten_glDeleteShader,Vb:_emscripten_glDeleteSync,uf:_emscripten_glDeleteTextures,Bb:_emscripten_glDeleteTransformFeedbacks,Lc:_emscripten_glDeleteVertexArrays,ra:_emscripten_glDeleteVertexArraysOES,tf:_emscripten_glDepthFunc,sf:_emscripten_glDepthMask,rf:_emscripten_glDepthRangef,qf:_emscripten_glDetachShader,pf:_emscripten_glDisable,of:_emscripten_glDisableVertexAttribArray,nf:_emscripten_glDrawArrays,Zb:_emscripten_glDrawArraysInstanced,cg:_emscripten_glDrawArraysInstancedANGLE,lb:_emscripten_glDrawArraysInstancedARB,od:_emscripten_glDrawArraysInstancedEXT,mb:_emscripten_glDrawArraysInstancedNV,Xc:_emscripten_glDrawBuffers,md:_emscripten_glDrawBuffersEXT,dg:_emscripten_glDrawBuffersWEBGL,mf:_emscripten_glDrawElements,Yb:_emscripten_glDrawElementsInstanced,bg:_emscripten_glDrawElementsInstancedANGLE,jb:_emscripten_glDrawElementsInstancedARB,kb:_emscripten_glDrawElementsInstancedEXT,nd:_emscripten_glDrawElementsInstancedNV,jd:_emscripten_glDrawRangeElements,lf:_emscripten_glEnable,kf:_emscripten_glEnableVertexAttribArray,_c:_emscripten_glEndQuery,za:_emscripten_glEndQueryEXT,Gc:_emscripten_glEndTransformFeedback,Xb:_emscripten_glFenceSync,jf:_emscripten_glFinish,hf:_emscripten_glFlush,gf:_emscripten_glFramebufferRenderbuffer,ff:_emscripten_glFramebufferTexture2D,Nc:_emscripten_glFramebufferTextureLayer,ef:_emscripten_glFrontFace,df:_emscripten_glGenBuffers,bf:_emscripten_glGenFramebuffers,dd:_emscripten_glGenQueries,Da:_emscripten_glGenQueriesEXT,af:_emscripten_glGenRenderbuffers,Nb:_emscripten_glGenSamplers,$e:_emscripten_glGenTextures,Ab:_emscripten_glGenTransformFeedbacks,Kc:_emscripten_glGenVertexArrays,qa:_emscripten_glGenVertexArraysOES,cf:_emscripten_glGenerateMipmap,_e:_emscripten_glGetActiveAttrib,Ze:_emscripten_glGetActiveUniform,$b:_emscripten_glGetActiveUniformBlockName,ac:_emscripten_glGetActiveUniformBlockiv,cc:_emscripten_glGetActiveUniformsiv,Ye:_emscripten_glGetAttachedShaders,Xe:_emscripten_glGetAttribLocation,We:_emscripten_glGetBooleanv,Ob:_emscripten_glGetBufferParameteri64v,Ve:_emscripten_glGetBufferParameteriv,Ue:_emscripten_glGetError,Te:_emscripten_glGetFloatv,tc:_emscripten_glGetFragDataLocation,Se:_emscripten_glGetFramebufferAttachmentParameteriv,Pb:_emscripten_glGetInteger64i_v,Rb:_emscripten_glGetInteger64v,Ic:_emscripten_glGetIntegeri_v,Re:_emscripten_glGetIntegerv,pb:_emscripten_glGetInternalformativ,wb:_emscripten_glGetProgramBinary,Pe:_emscripten_glGetProgramInfoLog,Qe:_emscripten_glGetProgramiv,ua:_emscripten_glGetQueryObjecti64vEXT,wa:_emscripten_glGetQueryObjectivEXT,ta:_emscripten_glGetQueryObjectui64vEXT,Yc:_emscripten_glGetQueryObjectuiv,va:_emscripten_glGetQueryObjectuivEXT,Zc:_emscripten_glGetQueryiv,xa:_emscripten_glGetQueryivEXT,Oe:_emscripten_glGetRenderbufferParameteriv,Eb:_emscripten_glGetSamplerParameterfv,Fb:_emscripten_glGetSamplerParameteriv,Me:_emscripten_glGetShaderInfoLog,Le:_emscripten_glGetShaderPrecisionFormat,Ke:_emscripten_glGetShaderSource,Ne:_emscripten_glGetShaderiv,Je:_emscripten_glGetString,fc:_emscripten_glGetStringi,Qb:_emscripten_glGetSynciv,Ie:_emscripten_glGetTexParameterfv,He:_emscripten_glGetTexParameteriv,Cc:_emscripten_glGetTransformFeedbackVarying,bc:_emscripten_glGetUniformBlockIndex,dc:_emscripten_glGetUniformIndices,De:_emscripten_glGetUniformLocation,Ge:_emscripten_glGetUniformfv,Fe:_emscripten_glGetUniformiv,uc:_emscripten_glGetUniformuiv,Ac:_emscripten_glGetVertexAttribIiv,zc:_emscripten_glGetVertexAttribIuiv,Ae:_emscripten_glGetVertexAttribPointerv,Ce:_emscripten_glGetVertexAttribfv,Be:_emscripten_glGetVertexAttribiv,ze:_emscripten_glHint,tb:_emscripten_glInvalidateFramebuffer,sb:_emscripten_glInvalidateSubFramebuffer,ye:_emscripten_glIsBuffer,xe:_emscripten_glIsEnabled,we:_emscripten_glIsFramebuffer,ve:_emscripten_glIsProgram,bd:_emscripten_glIsQuery,Ba:_emscripten_glIsQueryEXT,ue:_emscripten_glIsRenderbuffer,Lb:_emscripten_glIsSampler,te:_emscripten_glIsShader,Wb:_emscripten_glIsSync,se:_emscripten_glIsTexture,zb:_emscripten_glIsTransformFeedback,Jc:_emscripten_glIsVertexArray,pa:_emscripten_glIsVertexArrayOES,re:_emscripten_glLineWidth,qe:_emscripten_glLinkProgram,yb:_emscripten_glPauseTransformFeedback,pe:_emscripten_glPixelStorei,oe:_emscripten_glPolygonOffset,vb:_emscripten_glProgramBinary,ub:_emscripten_glProgramParameteri,ya:_emscripten_glQueryCounterEXT,kd:_emscripten_glReadBuffer,ne:_emscripten_glReadPixels,me:_emscripten_glReleaseShaderCompiler,le:_emscripten_glRenderbufferStorage,Oc:_emscripten_glRenderbufferStorageMultisample,xb:_emscripten_glResumeTransformFeedback,ke:_emscripten_glSampleCoverage,Hb:_emscripten_glSamplerParameterf,Gb:_emscripten_glSamplerParameterfv,Jb:_emscripten_glSamplerParameteri,Ib:_emscripten_glSamplerParameteriv,je:_emscripten_glScissor,ie:_emscripten_glShaderBinary,he:_emscripten_glShaderSource,ge:_emscripten_glStencilFunc,fe:_emscripten_glStencilFuncSeparate,ee:_emscripten_glStencilMask,de:_emscripten_glStencilMaskSeparate,ce:_emscripten_glStencilOp,be:_emscripten_glStencilOpSeparate,ae:_emscripten_glTexImage2D,id:_emscripten_glTexImage3D,$d:_emscripten_glTexParameterf,_d:_emscripten_glTexParameterfv,Zd:_emscripten_glTexParameteri,Yd:_emscripten_glTexParameteriv,rb:_emscripten_glTexStorage2D,qb:_emscripten_glTexStorage3D,Xd:_emscripten_glTexSubImage2D,hd:_emscripten_glTexSubImage3D,Dc:_emscripten_glTransformFeedbackVaryings,Wd:_emscripten_glUniform1f,Vd:_emscripten_glUniform1fv,Ud:_emscripten_glUniform1i,Td:_emscripten_glUniform1iv,sc:_emscripten_glUniform1ui,oc:_emscripten_glUniform1uiv,Sd:_emscripten_glUniform2f,Qd:_emscripten_glUniform2fv,Pd:_emscripten_glUniform2i,Od:_emscripten_glUniform2iv,rc:_emscripten_glUniform2ui,nc:_emscripten_glUniform2uiv,Nd:_emscripten_glUniform3f,Md:_emscripten_glUniform3fv,Ld:_emscripten_glUniform3i,Kd:_emscripten_glUniform3iv,qc:_emscripten_glUniform3ui,lc:_emscripten_glUniform3uiv,Jd:_emscripten_glUniform4f,Id:_emscripten_glUniform4fv,Hd:_emscripten_glUniform4i,Fd:_emscripten_glUniform4iv,pc:_emscripten_glUniform4ui,kc:_emscripten_glUniform4uiv,_b:_emscripten_glUniformBlockBinding,Ed:_emscripten_glUniformMatrix2fv,Wc:_emscripten_glUniformMatrix2x3fv,Uc:_emscripten_glUniformMatrix2x4fv,Dd:_emscripten_glUniformMatrix3fv,Vc:_emscripten_glUniformMatrix3x2fv,Sc:_emscripten_glUniformMatrix3x4fv,Cd:_emscripten_glUniformMatrix4fv,Tc:_emscripten_glUniformMatrix4x2fv,Qc:_emscripten_glUniformMatrix4x3fv,Bd:_emscripten_glUseProgram,Ad:_emscripten_glValidateProgram,zd:_emscripten_glVertexAttrib1f,yd:_emscripten_glVertexAttrib1fv,xd:_emscripten_glVertexAttrib2f,wd:_emscripten_glVertexAttrib2fv,vd:_emscripten_glVertexAttrib3f,ud:_emscripten_glVertexAttrib3fv,td:_emscripten_glVertexAttrib4f,sd:_emscripten_glVertexAttrib4fv,Db:_emscripten_glVertexAttribDivisor,ag:_emscripten_glVertexAttribDivisorANGLE,nb:_emscripten_glVertexAttribDivisorARB,pd:_emscripten_glVertexAttribDivisorEXT,ob:_emscripten_glVertexAttribDivisorNV,yc:_emscripten_glVertexAttribI4i,wc:_emscripten_glVertexAttribI4iv,xc:_emscripten_glVertexAttribI4ui,vc:_emscripten_glVertexAttribI4uiv,Bc:_emscripten_glVertexAttribIPointer,rd:_emscripten_glVertexAttribPointer,qd:_emscripten_glViewport,Sb:_emscripten_glWaitSync,G:_emscripten_has_asyncify,ib:_emscripten_memcpy_js,Fa:_emscripten_request_fullscreen_strategy,ba:_emscripten_request_pointerlock,bb:_emscripten_resize_heap,ma:_emscripten_sample_gamepad_data,J:_emscripten_set_beforeunload_callback_on_thread,V:_emscripten_set_blur_callback_on_thread,x:_emscripten_set_canvas_element_size,C:_emscripten_set_element_css_size,W:_emscripten_set_focus_callback_on_thread,M:_emscripten_set_fullscreenchange_callback_on_thread,ka:_emscripten_set_gamepadconnected_callback_on_thread,ja:_emscripten_set_gamepaddisconnected_callback_on_thread,P:_emscripten_set_keydown_callback_on_thread,N:_emscripten_set_keypress_callback_on_thread,O:_emscripten_set_keyup_callback_on_thread,Ee:_emscripten_set_main_loop,$:_emscripten_set_mousedown_callback_on_thread,Z:_emscripten_set_mouseenter_callback_on_thread,Y:_emscripten_set_mouseleave_callback_on_thread,aa:_emscripten_set_mousemove_callback_on_thread,_:_emscripten_set_mouseup_callback_on_thread,Q:_emscripten_set_pointerlockchange_callback_on_thread,L:_emscripten_set_resize_callback_on_thread,R:_emscripten_set_touchcancel_callback_on_thread,T:_emscripten_set_touchend_callback_on_thread,S:_emscripten_set_touchmove_callback_on_thread,U:_emscripten_set_touchstart_callback_on_thread,K:_emscripten_set_visibilitychange_callback_on_thread,X:_emscripten_set_wheel_callback_on_thread,Ga:_emscripten_set_window_title,F:_emscripten_sleep,cb:_environ_get,db:_environ_sizes_get,fa:_fd_close,eb:_fd_read,_a:_fd_seek,ga:_fd_write,Rd:invoke_di,ld:invoke_dii,E:invoke_diii,da:invoke_fiii,g:invoke_i,c:invoke_ii,e:invoke_iii,i:invoke_iiii,l:invoke_iiiii,n:invoke_iiiiii,s:invoke_iiiiiii,ea:invoke_iiiiiiii,A:invoke_iiiiiiiiiiii,Ya:invoke_jiiii,j:invoke_v,k:invoke_vi,Gd:invoke_vid,d:invoke_vii,f:invoke_viii,m:invoke_viiii,t:invoke_viiiii,B:invoke_viiiiii,r:invoke_viiiiiii,w:invoke_viiiiiiiiii,z:invoke_viiiiiiiiiiiiiii,$a:_strftime_l};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["fg"])();var ___cxa_free_exception=a0=>(___cxa_free_exception=wasmExports["__cxa_free_exception"])(a0);var _main=Module["_main"]=(a0,a1)=>(_main=Module["_main"]=wasmExports["hg"])(a0,a1);var _malloc=a0=>(_malloc=wasmExports["ig"])(a0);var _setThrew=(a0,a1)=>(_setThrew=wasmExports["jg"])(a0,a1);var setTempRet0=a0=>(setTempRet0=wasmExports["kg"])(a0);var stackSave=()=>(stackSave=wasmExports["lg"])();var stackRestore=a0=>(stackRestore=wasmExports["mg"])(a0);var stackAlloc=a0=>(stackAlloc=wasmExports["ng"])(a0);var ___cxa_decrement_exception_refcount=a0=>(___cxa_decrement_exception_refcount=wasmExports["og"])(a0);var ___cxa_increment_exception_refcount=a0=>(___cxa_increment_exception_refcount=wasmExports["pg"])(a0);var ___cxa_can_catch=(a0,a1,a2)=>(___cxa_can_catch=wasmExports["qg"])(a0,a1,a2);var ___cxa_is_pointer_type=a0=>(___cxa_is_pointer_type=wasmExports["rg"])(a0);var dynCall_jiji=Module["dynCall_jiji"]=(a0,a1,a2,a3,a4)=>(dynCall_jiji=Module["dynCall_jiji"]=wasmExports["sg"])(a0,a1,a2,a3,a4);var dynCall_ji=Module["dynCall_ji"]=(a0,a1)=>(dynCall_ji=Module["dynCall_ji"]=wasmExports["tg"])(a0,a1);var dynCall_viijii=Module["dynCall_viijii"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_viijii=Module["dynCall_viijii"]=wasmExports["ug"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_jiiii=Module["dynCall_jiiii"]=(a0,a1,a2,a3,a4)=>(dynCall_jiiii=Module["dynCall_jiiii"]=wasmExports["vg"])(a0,a1,a2,a3,a4);var dynCall_iiiiij=Module["dynCall_iiiiij"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_iiiiij=Module["dynCall_iiiiij"]=wasmExports["wg"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=wasmExports["xg"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)=>(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=wasmExports["yg"])(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9);var ___emscripten_embedded_file_data=Module["___emscripten_embedded_file_data"]=406736;function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_di(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vid(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_dii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_unlink"]=FS.unlink;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args=[]){var entryFunction=_main;args.unshift(thisProgram);var argc=args.length;var argv=stackAlloc((argc+1)*4);var argv_ptr=argv;args.forEach(arg=>{HEAPU32[argv_ptr>>2]=stringToUTF8OnStack(arg);argv_ptr+=4});HEAPU32[argv_ptr>>2]=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(args=arguments_){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); +var Module=typeof Module!="undefined"?Module:{};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}process.on("uncaughtException",ex=>{if(ex!=="unwind"&&!(ex instanceof ExitStatus)&&!(ex.context instanceof ExitStatus)){throw ex}});quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();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 addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith("file://");var wasmBinaryFile;wasmBinaryFile="index.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw`failed to load wasm binary file at '${binaryFile}'`}return response["arrayBuffer"]()}).catch(()=>getBinarySync(binaryFile))}else if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["eg"];updateMemoryViews();wasmTable=wasmExports["gg"];addOnInit(wasmExports["fg"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);return false}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}var tempDouble;var tempI64;var ASM_CONSTS={483424:$0=>{var str=UTF8ToString($0)+"\n\n"+"Abort/Retry/Ignore/AlwaysIgnore? [ariA] :";var reply=window.prompt(str,"i");if(reply===null){reply="i"}return allocate(intArrayFromString(reply),"i8",ALLOC_NORMAL)},483649:()=>{if(typeof AudioContext!=="undefined"){return true}else if(typeof webkitAudioContext!=="undefined"){return true}return false},483796:()=>{if(typeof navigator.mediaDevices!=="undefined"&&typeof navigator.mediaDevices.getUserMedia!=="undefined"){return true}else if(typeof navigator.webkitGetUserMedia!=="undefined"){return true}return false},484030:$0=>{if(typeof Module["SDL2"]==="undefined"){Module["SDL2"]={}}var SDL2=Module["SDL2"];if(!$0){SDL2.audio={}}else{SDL2.capture={}}if(!SDL2.audioContext){if(typeof AudioContext!=="undefined"){SDL2.audioContext=new AudioContext}else if(typeof webkitAudioContext!=="undefined"){SDL2.audioContext=new webkitAudioContext}if(SDL2.audioContext){autoResumeAudioContext(SDL2.audioContext)}}return SDL2.audioContext===undefined?-1:0},484523:()=>{var SDL2=Module["SDL2"];return SDL2.audioContext.sampleRate},484591:($0,$1,$2,$3)=>{var SDL2=Module["SDL2"];var have_microphone=function(stream){if(SDL2.capture.silenceTimer!==undefined){clearTimeout(SDL2.capture.silenceTimer);SDL2.capture.silenceTimer=undefined}SDL2.capture.mediaStreamNode=SDL2.audioContext.createMediaStreamSource(stream);SDL2.capture.scriptProcessorNode=SDL2.audioContext.createScriptProcessor($1,$0,1);SDL2.capture.scriptProcessorNode.onaudioprocess=function(audioProcessingEvent){if(SDL2===undefined||SDL2.capture===undefined){return}audioProcessingEvent.outputBuffer.getChannelData(0).fill(0);SDL2.capture.currentCaptureBuffer=audioProcessingEvent.inputBuffer;dynCall("vi",$2,[$3])};SDL2.capture.mediaStreamNode.connect(SDL2.capture.scriptProcessorNode);SDL2.capture.scriptProcessorNode.connect(SDL2.audioContext.destination);SDL2.capture.stream=stream};var no_microphone=function(error){};SDL2.capture.silenceBuffer=SDL2.audioContext.createBuffer($0,$1,SDL2.audioContext.sampleRate);SDL2.capture.silenceBuffer.getChannelData(0).fill(0);var silence_callback=function(){SDL2.capture.currentCaptureBuffer=SDL2.capture.silenceBuffer;dynCall("vi",$2,[$3])};SDL2.capture.silenceTimer=setTimeout(silence_callback,$1/SDL2.audioContext.sampleRate*1e3);if(navigator.mediaDevices!==undefined&&navigator.mediaDevices.getUserMedia!==undefined){navigator.mediaDevices.getUserMedia({audio:true,video:false}).then(have_microphone).catch(no_microphone)}else if(navigator.webkitGetUserMedia!==undefined){navigator.webkitGetUserMedia({audio:true,video:false},have_microphone,no_microphone)}},486243:($0,$1,$2,$3)=>{var SDL2=Module["SDL2"];SDL2.audio.scriptProcessorNode=SDL2.audioContext["createScriptProcessor"]($1,0,$0);SDL2.audio.scriptProcessorNode["onaudioprocess"]=function(e){if(SDL2===undefined||SDL2.audio===undefined){return}SDL2.audio.currentOutputBuffer=e["outputBuffer"];dynCall("vi",$2,[$3])};SDL2.audio.scriptProcessorNode["connect"](SDL2.audioContext["destination"])},486653:($0,$1)=>{var SDL2=Module["SDL2"];var numChannels=SDL2.capture.currentCaptureBuffer.numberOfChannels;for(var c=0;c{var SDL2=Module["SDL2"];var numChannels=SDL2.audio.currentOutputBuffer["numberOfChannels"];for(var c=0;c>2]}}},487738:$0=>{var SDL2=Module["SDL2"];if($0){if(SDL2.capture.silenceTimer!==undefined){clearTimeout(SDL2.capture.silenceTimer)}if(SDL2.capture.stream!==undefined){var tracks=SDL2.capture.stream.getAudioTracks();for(var i=0;i{var w=$0;var h=$1;var pixels=$2;if(!Module["SDL2"])Module["SDL2"]={};var SDL2=Module["SDL2"];if(SDL2.ctxCanvas!==Module["canvas"]){SDL2.ctx=Module["createContext"](Module["canvas"],false,true);SDL2.ctxCanvas=Module["canvas"]}if(SDL2.w!==w||SDL2.h!==h||SDL2.imageCtx!==SDL2.ctx){SDL2.image=SDL2.ctx.createImageData(w,h);SDL2.w=w;SDL2.h=h;SDL2.imageCtx=SDL2.ctx}var data=SDL2.image.data;var src=pixels>>2;var dst=0;var num;if(typeof CanvasPixelArray!=="undefined"&&data instanceof CanvasPixelArray){num=data.length;while(dst>8&255;data[dst+2]=val>>16&255;data[dst+3]=255;src++;dst+=4}}else{if(SDL2.data32Data!==data){SDL2.data32=new Int32Array(data.buffer);SDL2.data8=new Uint8Array(data.buffer);SDL2.data32Data=data}var data32=SDL2.data32;num=data32.length;data32.set(HEAP32.subarray(src,src+num));var data8=SDL2.data8;var i=3;var j=i+4*num;if(num%8==0){while(i{var w=$0;var h=$1;var hot_x=$2;var hot_y=$3;var pixels=$4;var canvas=document.createElement("canvas");canvas.width=w;canvas.height=h;var ctx=canvas.getContext("2d");var image=ctx.createImageData(w,h);var data=image.data;var src=pixels>>2;var dst=0;var num;if(typeof CanvasPixelArray!=="undefined"&&data instanceof CanvasPixelArray){num=data.length;while(dst>8&255;data[dst+2]=val>>16&255;data[dst+3]=val>>24&255;src++;dst+=4}}else{var data32=new Int32Array(data.buffer);num=data32.length;data32.set(HEAP32.subarray(src,src+num))}ctx.putImageData(image,0,0);var url=hot_x===0&&hot_y===0?"url("+canvas.toDataURL()+"), auto":"url("+canvas.toDataURL()+") "+hot_x+" "+hot_y+", auto";var urlBuf=_malloc(url.length+1);stringToUTF8(url,urlBuf,url.length+1);return urlBuf},491368:$0=>{if(Module["canvas"]){Module["canvas"].style["cursor"]=UTF8ToString($0)}},491451:()=>{if(Module["canvas"]){Module["canvas"].style["cursor"]="none"}},491520:()=>window.innerWidth,491550:()=>window.innerHeight};function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr]=value;break;case"i8":HEAP8[ptr]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":abort("to do setValue(i64) use WASM_BIGINT");case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}var exceptionCaught=[];var uncaughtExceptionCount=0;var ___cxa_begin_catch=ptr=>{var info=new ExceptionInfo(ptr);if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(info);___cxa_increment_exception_refcount(info.excPtr);return info.get_exception_ptr()};var exceptionLast=0;var ___cxa_end_catch=()=>{_setThrew(0,0);var info=exceptionCaught.pop();___cxa_decrement_exception_refcount(info.excPtr);exceptionLast=0};class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12]=caught}get_caught(){return HEAP8[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13]=rethrown}get_rethrown(){return HEAP8[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}get_exception_ptr(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var ___resumeException=ptr=>{if(!exceptionLast){exceptionLast=ptr}throw exceptionLast};var findMatchingCatch=args=>{var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0}var info=new ExceptionInfo(thrown);info.set_adjusted_ptr(thrown);var thrownType=info.get_type();if(!thrownType){setTempRet0(0);return thrown}for(var arg in args){var caughtType=args[arg];if(caughtType===0||caughtType===thrownType){break}var adjusted_ptr_addr=info.ptr+16;if(___cxa_can_catch(caughtType,thrownType,adjusted_ptr_addr)){setTempRet0(caughtType);return thrown}}setTempRet0(thrownType);return thrown};var ___cxa_find_matching_catch_2=()=>findMatchingCatch([]);var ___cxa_find_matching_catch_3=arg0=>findMatchingCatch([arg0]);var ___cxa_rethrow=()=>{var info=exceptionCaught.pop();if(!info){abort("no exception to throw")}var ptr=info.excPtr;if(!info.get_rethrown()){exceptionCaught.push(info);info.set_rethrown(true);info.set_caught(false);uncaughtExceptionCount++}exceptionLast=ptr;throw exceptionLast};var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var ___cxa_uncaught_exceptions=()=>uncaughtExceptionCount;var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(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:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname: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:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var initRandomFill=()=>{if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,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;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir(node){var entries=[".",".."];for(var key of Object.keys(node.contents)){entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):"";readAsync(url,arrayBuffer=>{onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)};var preloadPlugins=Module["preloadPlugins"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}onload?.();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,processData,onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:class{constructor(errno){this.name="ErrnoError";this.errno=errno}},genericErrors:{},filesystems:null,syncFSRequests:0,FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev;this.readMode=292|73;this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var i=0;iFS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""});FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init(input,output,error){FS.init.initialized=true;Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit(){FS.init.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat(func,path,buf){var stat=func(path);HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAP32[buf+12>>2]=stat.uid;HEAP32[buf+16>>2]=stat.gid;HEAP32[buf+20>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];return 0},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get(){var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret},getp(){return SYSCALLS.get()},getStr(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.getp();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=SYSCALLS.getp();HEAP32[argp>>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=SYSCALLS.getp();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag:c_iflag,c_oflag:c_oflag,c_cflag:c_cflag,c_lflag:c_lflag,c_cc:c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.getp();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.getp();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=SYSCALLS.getp();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __emscripten_fs_load_embedded_files=ptr=>{do{var name_addr=HEAPU32[ptr>>2];ptr+=4;var len=HEAPU32[ptr>>2];ptr+=4;var content=HEAPU32[ptr>>2];ptr+=4;var name=UTF8ToString(name_addr);FS.createPath("/",PATH.dirname(name),true,true);FS.createDataFile(name,null,HEAP8.subarray(content,content+len),true,true,true)}while(HEAPU32[ptr>>2])};var nowIsMonotonic=1;var __emscripten_get_now_is_monotonic=()=>nowIsMonotonic;var _abort=()=>{abort("")};var _emscripten_set_main_loop_timing=(mode,value)=>{Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(!Browser.mainLoop.running){Browser.mainLoop.running=true}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof Browser.setImmediate=="undefined"){if(typeof setImmediate=="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=event=>{if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);Browser.setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}else{Browser.setImmediate=setImmediate}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){Browser.setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0};var _emscripten_get_now;_emscripten_get_now=()=>performance.now();var setMainLoop=(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming)=>{Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;function checkIsRunning(){if(thisMainLoopId0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}Browser.mainLoop.updateStatus();if(!checkIsRunning())return;setTimeout(Browser.mainLoop.runner,0);return}if(!checkIsRunning())return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(!checkIsRunning())return;if(typeof SDL=="object")SDL.audio?.queueNewAudioData?.();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0){_emscripten_set_main_loop_timing(0,1e3/fps)}else{_emscripten_set_main_loop_timing(1,1)}Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var safeSetTimeout=(func,timeout)=>setTimeout(()=>{callUserCallback(func)},timeout);var warnOnce=text=>{warnOnce.shown||={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;if(ENVIRONMENT_IS_NODE)text="warning: "+text;err(text)}};var Browser={mainLoop:{running:false,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining{var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);preloadedImages[name]=canvas;URL.revokeObjectURL(url);onload?.(byteArray)};img.onerror=event=>{err(`Image ${url} could not be decoded`);onerror?.()};img.src=url};preloadPlugins.push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;preloadedAudios[name]=audio;onload?.(byteArray)}var b=new Blob([byteArray],{type:Browser.getMimetype(name)});var url=URL.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",()=>finish(audio),false);audio.onerror=function audio_onerror(event){if(done)return;err(`warning: browser could not fully decode audio ${name}, trying slower base64 approach`);function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;safeSetTimeout(()=>{finish(audio)},1e4)};preloadPlugins.push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(()=>{});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(()=>{});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",ev=>{if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:typeof WebGL2RenderingContext!="undefined"?2:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(callback=>callback());Browser.init()}return ctx},destroyContext(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer=="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas=="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}Module["onFullScreen"]?.(Browser.isFullscreen);Module["onFullscreen"]?.(Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?()=>canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"]):null)||(canvasContainer["webkitRequestFullScreen"]?()=>canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]):null);canvasContainer.requestFullscreen()},exitFullscreen(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||(()=>{});CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame(func){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeSetTimeout(func,timeout){return safeSetTimeout(func,timeout)},safeRequestAnimationFrame(func){return Browser.requestAnimationFrame(()=>{callUserCallback(func)})},getMimetype(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia(func){window.getUserMedia||=navigator["getUserMedia"]||navigator["mozGetUserMedia"];window.getUserMedia(func)},getMovementX(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseCoords(pageX,pageY){var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!="undefined"?window.scrollY:window.pageYOffset;var adjustedX=pageX-(scrollX+rect.left);var adjustedY=pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);return{x:adjustedX,y:adjustedY}},setMouseCoords(pageX,pageY){const{x:x,y:y}=Browser.calculateMouseCoords(pageX,pageY);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y},calculateMouseEvent(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var coords=Browser.calculateMouseCoords(touch.pageX,touch.pageY);if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];last||=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}Browser.setMouseCoords(event.pageX,event.pageY)}},resizeListeners:[],updateResizeListeners(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(listener=>listener(canvas.width,canvas.height))},setCanvasSize(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h>2];if(param==12321){var alphaSize=HEAP32[attribList+4>>2];EGL.contextAttributes.alpha=alphaSize>0}else if(param==12325){var depthSize=HEAP32[attribList+4>>2];EGL.contextAttributes.depth=depthSize>0}else if(param==12326){var stencilSize=HEAP32[attribList+4>>2];EGL.contextAttributes.stencil=stencilSize>0}else if(param==12337){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples>0}else if(param==12338){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples==1}else if(param==12544){var requestedPriority=HEAP32[attribList+4>>2];EGL.contextAttributes.lowLatency=requestedPriority!=12547}else if(param==12344){break}attribList+=8}}if((!config||!config_size)&&!numConfigs){EGL.setErrorCode(12300);return 0}if(numConfigs){HEAP32[numConfigs>>2]=1}if(config&&config_size>0){HEAPU32[config>>2]=62002}EGL.setErrorCode(12288);return 1}};var _eglBindAPI=api=>{if(api==12448){EGL.setErrorCode(12288);return 1}EGL.setErrorCode(12300);return 0};var _eglChooseConfig=(display,attrib_list,configs,config_size,numConfigs)=>EGL.chooseConfig(display,attrib_list,configs,config_size,numConfigs);var webgl_enable_ANGLE_instanced_arrays=ctx=>{var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=(index,divisor)=>ext["vertexAttribDivisorANGLE"](index,divisor);ctx["drawArraysInstanced"]=(mode,first,count,primcount)=>ext["drawArraysInstancedANGLE"](mode,first,count,primcount);ctx["drawElementsInstanced"]=(mode,count,type,indices,primcount)=>ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount);return 1}};var webgl_enable_OES_vertex_array_object=ctx=>{var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=()=>ext["createVertexArrayOES"]();ctx["deleteVertexArray"]=vao=>ext["deleteVertexArrayOES"](vao);ctx["bindVertexArray"]=vao=>ext["bindVertexArrayOES"](vao);ctx["isVertexArray"]=vao=>ext["isVertexArrayOES"](vao);return 1}};var webgl_enable_WEBGL_draw_buffers=ctx=>{var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=(n,bufs)=>ext["drawBuffersWEBGL"](n,bufs);return 1}};var webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw=ctx=>!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"));var getEmscriptenSupportedExtensions=ctx=>{var supportedExtensions=["ANGLE_instanced_arrays","EXT_blend_minmax","EXT_disjoint_timer_query","EXT_frag_depth","EXT_shader_texture_lod","EXT_sRGB","OES_element_index_uint","OES_fbo_render_mipmap","OES_standard_derivatives","OES_texture_float","OES_texture_half_float","OES_texture_half_float_linear","OES_vertex_array_object","WEBGL_color_buffer_float","WEBGL_depth_texture","WEBGL_draw_buffers","EXT_color_buffer_float","EXT_conservative_depth","EXT_disjoint_timer_query_webgl2","EXT_texture_norm16","NV_shader_noperspective_interpolation","WEBGL_clip_cull_distance","EXT_color_buffer_half_float","EXT_depth_clamp","EXT_float_blend","EXT_texture_compression_bptc","EXT_texture_compression_rgtc","EXT_texture_filter_anisotropic","KHR_parallel_shader_compile","OES_texture_float_linear","WEBGL_blend_func_extended","WEBGL_compressed_texture_astc","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_s3tc_srgb","WEBGL_debug_renderer_info","WEBGL_debug_shaders","WEBGL_lose_context","WEBGL_multi_draw"];return(ctx.getSupportedExtensions()||[]).filter(ext=>supportedExtensions.includes(ext))};var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:errorCode=>{if(!GL.lastError){GL.lastError=errorCode}},getNewId:table=>{var ret=GL.counter++;for(var i=table.length;i{for(var i=0;i>2]=id}},getSource:(shader,count,string,length)=>{var source="";for(var i=0;i>2]:undefined;source+=UTF8ToString(HEAPU32[string+i*4>>2],len)}return source},createContext:(canvas,webGLContextAttributes)=>{if(!canvas.getContextSafariWebGL2Fixed){canvas.getContextSafariWebGL2Fixed=canvas.getContext;function fixedGetContext(ver,attrs){var gl=canvas.getContextSafariWebGL2Fixed(ver,attrs);return ver=="webgl"==gl instanceof WebGLRenderingContext?gl:null}canvas.getContext=fixedGetContext}var ctx=webGLContextAttributes.majorVersion>1?canvas.getContext("webgl2",webGLContextAttributes):canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:(ctx,webGLContextAttributes)=>{var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:contextHandle=>{GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext?.GLctx;return!(contextHandle&&!GLctx)},getContext:contextHandle=>GL.contexts[contextHandle],deleteContext:contextHandle=>{if(GL.currentContext===GL.contexts[contextHandle]){GL.currentContext=null}if(typeof JSEvents=="object"){JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas)}if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas){GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined}GL.contexts[contextHandle]=null},initExtensions:context=>{context||=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;webgl_enable_ANGLE_instanced_arrays(GLctx);webgl_enable_OES_vertex_array_object(GLctx);webgl_enable_WEBGL_draw_buffers(GLctx);webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(context.version>=2){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query_webgl2")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}webgl_enable_WEBGL_multi_draw(GLctx);getEmscriptenSupportedExtensions(GLctx).forEach(ext=>{if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var _eglCreateContext=(display,config,hmm,contextAttribs)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}var glesContextVersion=1;for(;;){var param=HEAP32[contextAttribs>>2];if(param==12440){glesContextVersion=HEAP32[contextAttribs+4>>2]}else if(param==12344){break}else{EGL.setErrorCode(12292);return 0}contextAttribs+=8}if(glesContextVersion<2||glesContextVersion>3){EGL.setErrorCode(12293);return 0}EGL.contextAttributes.majorVersion=glesContextVersion-1;EGL.contextAttributes.minorVersion=0;EGL.context=GL.createContext(Module["canvas"],EGL.contextAttributes);if(EGL.context!=0){EGL.setErrorCode(12288);GL.makeContextCurrent(EGL.context);Module.useWebGL=true;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});GL.makeContextCurrent(null);return 62004}else{EGL.setErrorCode(12297);return 0}};var _eglCreateWindowSurface=(display,config,win,attrib_list)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}EGL.setErrorCode(12288);return 62006};var _eglDestroyContext=(display,context)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=62004){EGL.setErrorCode(12294);return 0}GL.deleteContext(EGL.context);EGL.setErrorCode(12288);if(EGL.currentContext==context){EGL.currentContext=0}return 1};var _eglDestroySurface=(display,surface)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(surface!=62006){EGL.setErrorCode(12301);return 1}if(EGL.currentReadSurface==surface){EGL.currentReadSurface=0}if(EGL.currentDrawSurface==surface){EGL.currentDrawSurface=0}EGL.setErrorCode(12288);return 1};var _eglGetConfigAttrib=(display,config,attribute,value)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}if(!value){EGL.setErrorCode(12300);return 0}EGL.setErrorCode(12288);switch(attribute){case 12320:HEAP32[value>>2]=EGL.contextAttributes.alpha?32:24;return 1;case 12321:HEAP32[value>>2]=EGL.contextAttributes.alpha?8:0;return 1;case 12322:HEAP32[value>>2]=8;return 1;case 12323:HEAP32[value>>2]=8;return 1;case 12324:HEAP32[value>>2]=8;return 1;case 12325:HEAP32[value>>2]=EGL.contextAttributes.depth?24:0;return 1;case 12326:HEAP32[value>>2]=EGL.contextAttributes.stencil?8:0;return 1;case 12327:HEAP32[value>>2]=12344;return 1;case 12328:HEAP32[value>>2]=62002;return 1;case 12329:HEAP32[value>>2]=0;return 1;case 12330:HEAP32[value>>2]=4096;return 1;case 12331:HEAP32[value>>2]=16777216;return 1;case 12332:HEAP32[value>>2]=4096;return 1;case 12333:HEAP32[value>>2]=0;return 1;case 12334:HEAP32[value>>2]=0;return 1;case 12335:HEAP32[value>>2]=12344;return 1;case 12337:HEAP32[value>>2]=EGL.contextAttributes.antialias?4:0;return 1;case 12338:HEAP32[value>>2]=EGL.contextAttributes.antialias?1:0;return 1;case 12339:HEAP32[value>>2]=4;return 1;case 12340:HEAP32[value>>2]=12344;return 1;case 12341:case 12342:case 12343:HEAP32[value>>2]=-1;return 1;case 12345:case 12346:HEAP32[value>>2]=0;return 1;case 12347:HEAP32[value>>2]=0;return 1;case 12348:HEAP32[value>>2]=1;return 1;case 12349:case 12350:HEAP32[value>>2]=0;return 1;case 12351:HEAP32[value>>2]=12430;return 1;case 12352:HEAP32[value>>2]=4;return 1;case 12354:HEAP32[value>>2]=0;return 1;default:EGL.setErrorCode(12292);return 0}};var _eglGetDisplay=nativeDisplayType=>{EGL.setErrorCode(12288);if(nativeDisplayType!=0&&nativeDisplayType!=1){return 0}return 62e3};var _eglGetError=()=>EGL.errorCode;var _eglInitialize=(display,majorVersion,minorVersion)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(majorVersion){HEAP32[majorVersion>>2]=1}if(minorVersion){HEAP32[minorVersion>>2]=4}EGL.defaultDisplayInitialized=true;EGL.setErrorCode(12288);return 1};var _eglMakeCurrent=(display,draw,read,context)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=0&&context!=62004){EGL.setErrorCode(12294);return 0}if(read!=0&&read!=62006||draw!=0&&draw!=62006){EGL.setErrorCode(12301);return 0}GL.makeContextCurrent(context?EGL.context:null);EGL.currentContext=context;EGL.currentDrawSurface=draw;EGL.currentReadSurface=read;EGL.setErrorCode(12288);return 1};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var stringToNewUTF8=str=>{var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret};var _eglQueryString=(display,name)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.setErrorCode(12288);if(EGL.stringCache[name])return EGL.stringCache[name];var ret;switch(name){case 12371:ret=stringToNewUTF8("Emscripten");break;case 12372:ret=stringToNewUTF8("1.4 Emscripten EGL");break;case 12373:ret=stringToNewUTF8("");break;case 12429:ret=stringToNewUTF8("OpenGL_ES");break;default:EGL.setErrorCode(12300);return 0}EGL.stringCache[name]=ret;return ret};var _eglSwapBuffers=(dpy,surface)=>{if(!EGL.defaultDisplayInitialized){EGL.setErrorCode(12289)}else if(!Module.ctx){EGL.setErrorCode(12290)}else if(Module.ctx.isContextLost()){EGL.setErrorCode(12302)}else{EGL.setErrorCode(12288);return 1}return 0};var _eglSwapInterval=(display,interval)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval);EGL.setErrorCode(12288);return 1};var _eglTerminate=display=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.currentContext=0;EGL.currentReadSurface=0;EGL.currentDrawSurface=0;EGL.defaultDisplayInitialized=false;EGL.setErrorCode(12288);return 1};var _eglWaitClient=()=>{EGL.setErrorCode(12288);return 1};var _eglWaitGL=_eglWaitClient;var _eglWaitNative=nativeEngineId=>{EGL.setErrorCode(12288);return 1};var readEmAsmArgsArray=[];var readEmAsmArgs=(sigPtr,buf)=>{readEmAsmArgsArray.length=0;var ch;while(ch=HEAPU8[sigPtr++]){var wide=ch!=105;wide&=ch!=112;buf+=wide&&buf%8?4:0;readEmAsmArgsArray.push(ch==112?HEAPU32[buf>>2]:ch==105?HEAP32[buf>>2]:HEAPF64[buf>>3]);buf+=wide?8:4}return readEmAsmArgsArray};var runEmAsmFunction=(code,sigPtr,argbuf)=>{var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code](...args)};var _emscripten_asm_const_int=(code,sigPtr,argbuf)=>runEmAsmFunction(code,sigPtr,argbuf);var runMainThreadEmAsm=(emAsmAddr,sigPtr,argbuf,sync)=>{var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[emAsmAddr](...args)};var _emscripten_asm_const_int_sync_on_main_thread=(emAsmAddr,sigPtr,argbuf)=>runMainThreadEmAsm(emAsmAddr,sigPtr,argbuf,1);var _emscripten_asm_const_ptr_sync_on_main_thread=(emAsmAddr,sigPtr,argbuf)=>runMainThreadEmAsm(emAsmAddr,sigPtr,argbuf,1);var _emscripten_cancel_main_loop=()=>{Browser.mainLoop.pause();Browser.mainLoop.func=null};var _emscripten_date_now=()=>Date.now();var withStackSave=f=>{var stack=stackSave();var ret=f();stackRestore(stack);return ret};var JSEvents={removeAllEventListeners(){while(JSEvents.eventHandlers.length){JSEvents._removeHandler(JSEvents.eventHandlers.length-1)}JSEvents.deferredCalls=[]},inEventHandler:0,deferredCalls:[],deferCall(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort((x,y)=>x.precedence{for(var i=0;icString>2?UTF8ToString(cString):cString;var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];var findEventTarget=target=>{target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement};var findCanvasEventTarget=findEventTarget;var _emscripten_get_canvas_element_size=(target,width,height)=>{var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height};var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var getCanvasElementSize=target=>withStackSave(()=>{var w=stackAlloc(8);var h=w+4;var targetInt=stringToUTF8OnStack(target.id);var ret=_emscripten_get_canvas_element_size(targetInt,w,h);var size=[HEAP32[w>>2],HEAP32[h>>2]];return size});var _emscripten_set_canvas_element_size=(target,width,height)=>{var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0};var setCanvasElementSize=(target,width,height)=>{if(!target.controlTransferredOffscreen){target.width=width;target.height=height}else{withStackSave(()=>{var targetInt=stringToUTF8OnStack(target.id);_emscripten_set_canvas_element_size(targetInt,width,height)})}};var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var registerRestoreOldStyle=canvas=>{var canvasSize=getCanvasElementSize(canvas);var oldWidth=canvasSize[0];var oldHeight=canvasSize[1];var oldCssWidth=canvas.style.width;var oldCssHeight=canvas.style.height;var oldBackgroundColor=canvas.style.backgroundColor;var oldDocumentBackgroundColor=document.body.style.backgroundColor;var oldPaddingLeft=canvas.style.paddingLeft;var oldPaddingRight=canvas.style.paddingRight;var oldPaddingTop=canvas.style.paddingTop;var oldPaddingBottom=canvas.style.paddingBottom;var oldMarginLeft=canvas.style.marginLeft;var oldMarginRight=canvas.style.marginRight;var oldMarginTop=canvas.style.marginTop;var oldMarginBottom=canvas.style.marginBottom;var oldDocumentBodyMargin=document.body.style.margin;var oldDocumentOverflow=document.documentElement.style.overflow;var oldDocumentScroll=document.body.scroll;var oldImageRendering=canvas.style.imageRendering;function restoreOldStyle(){var fullscreenElement=document.fullscreenElement||document.webkitFullscreenElement;if(!fullscreenElement){document.removeEventListener("fullscreenchange",restoreOldStyle);document.removeEventListener("webkitfullscreenchange",restoreOldStyle);setCanvasElementSize(canvas,oldWidth,oldHeight);canvas.style.width=oldCssWidth;canvas.style.height=oldCssHeight;canvas.style.backgroundColor=oldBackgroundColor;if(!oldDocumentBackgroundColor)document.body.style.backgroundColor="white";document.body.style.backgroundColor=oldDocumentBackgroundColor;canvas.style.paddingLeft=oldPaddingLeft;canvas.style.paddingRight=oldPaddingRight;canvas.style.paddingTop=oldPaddingTop;canvas.style.paddingBottom=oldPaddingBottom;canvas.style.marginLeft=oldMarginLeft;canvas.style.marginRight=oldMarginRight;canvas.style.marginTop=oldMarginTop;canvas.style.marginBottom=oldMarginBottom;document.body.style.margin=oldDocumentBodyMargin;document.documentElement.style.overflow=oldDocumentOverflow;document.body.scroll=oldDocumentScroll;canvas.style.imageRendering=oldImageRendering;if(canvas.GLctxObject)canvas.GLctxObject.GLctx.viewport(0,0,oldWidth,oldHeight);if(currentFullscreenStrategy.canvasResizedCallback){getWasmTableEntry(currentFullscreenStrategy.canvasResizedCallback)(37,0,currentFullscreenStrategy.canvasResizedCallbackUserData)}}}document.addEventListener("fullscreenchange",restoreOldStyle);document.addEventListener("webkitfullscreenchange",restoreOldStyle);return restoreOldStyle};var setLetterbox=(element,topBottom,leftRight)=>{element.style.paddingLeft=element.style.paddingRight=leftRight+"px";element.style.paddingTop=element.style.paddingBottom=topBottom+"px"};var getBoundingClientRect=e=>specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0};var JSEvents_resizeCanvasForFullscreen=(target,strategy)=>{var restoreOldStyle=registerRestoreOldStyle(target);var cssWidth=strategy.softFullscreen?innerWidth:screen.width;var cssHeight=strategy.softFullscreen?innerHeight:screen.height;var rect=getBoundingClientRect(target);var windowedCssWidth=rect.width;var windowedCssHeight=rect.height;var canvasSize=getCanvasElementSize(target);var windowedRttWidth=canvasSize[0];var windowedRttHeight=canvasSize[1];if(strategy.scaleMode==3){setLetterbox(target,(cssHeight-windowedCssHeight)/2,(cssWidth-windowedCssWidth)/2);cssWidth=windowedCssWidth;cssHeight=windowedCssHeight}else if(strategy.scaleMode==2){if(cssWidth*windowedRttHeight{if(strategy.scaleMode!=0||strategy.canvasResolutionScaleMode!=0){JSEvents_resizeCanvasForFullscreen(target,strategy)}if(target.requestFullscreen){target.requestFullscreen()}else if(target.webkitRequestFullscreen){target.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}else{return JSEvents.fullscreenEnabled()?-3:-1}currentFullscreenStrategy=strategy;if(strategy.canvasResizedCallback){getWasmTableEntry(strategy.canvasResizedCallback)(37,0,strategy.canvasResizedCallbackUserData)}return 0};var _emscripten_exit_fullscreen=()=>{if(!JSEvents.fullscreenEnabled())return-1;JSEvents.removeDeferredCalls(JSEvents_requestFullscreen);var d=specialHTMLTargets[1];if(d.exitFullscreen){d.fullscreenElement&&d.exitFullscreen()}else if(d.webkitExitFullscreen){d.webkitFullscreenElement&&d.webkitExitFullscreen()}else{return-1}return 0};var requestPointerLock=target=>{if(target.requestPointerLock){target.requestPointerLock()}else{if(document.body.requestPointerLock){return-3}return-1}return 0};var _emscripten_exit_pointerlock=()=>{JSEvents.removeDeferredCalls(requestPointerLock);if(document.exitPointerLock){document.exitPointerLock()}else{return-1}return 0};var __emscripten_runtime_keepalive_clear=()=>{noExitRuntime=false;runtimeKeepaliveCounter=0};var _emscripten_force_exit=status=>{__emscripten_runtime_keepalive_clear();_exit(status)};var _emscripten_get_device_pixel_ratio=()=>typeof devicePixelRatio=="number"&&devicePixelRatio||1;var _emscripten_get_element_css_size=(target,width,height)=>{target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0};var fillGamepadEventData=(eventStruct,e)=>{HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i>3]=e.axes[i]}for(var i=0;i>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)};var _emscripten_get_gamepad_status=(index,gamepadState)=>{if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0};var _emscripten_get_num_gamepads=()=>JSEvents.lastGamepadState.length;var _emscripten_get_screen_size=(width,height)=>{HEAP32[width>>2]=screen.width;HEAP32[height>>2]=screen.height};var _glActiveTexture=x0=>GLctx.activeTexture(x0);var _emscripten_glActiveTexture=_glActiveTexture;var _glAttachShader=(program,shader)=>{GLctx.attachShader(GL.programs[program],GL.shaders[shader])};var _emscripten_glAttachShader=_glAttachShader;var _glBeginQuery=(target,id)=>{GLctx.beginQuery(target,GL.queries[id])};var _emscripten_glBeginQuery=_glBeginQuery;var _glBeginQueryEXT=(target,id)=>{GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.queries[id])};var _emscripten_glBeginQueryEXT=_glBeginQueryEXT;var _glBeginTransformFeedback=x0=>GLctx.beginTransformFeedback(x0);var _emscripten_glBeginTransformFeedback=_glBeginTransformFeedback;var _glBindAttribLocation=(program,index,name)=>{GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))};var _emscripten_glBindAttribLocation=_glBindAttribLocation;var _glBindBuffer=(target,buffer)=>{if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])};var _emscripten_glBindBuffer=_glBindBuffer;var _glBindBufferBase=(target,index,buffer)=>{GLctx.bindBufferBase(target,index,GL.buffers[buffer])};var _emscripten_glBindBufferBase=_glBindBufferBase;var _glBindBufferRange=(target,index,buffer,offset,ptrsize)=>{GLctx.bindBufferRange(target,index,GL.buffers[buffer],offset,ptrsize)};var _emscripten_glBindBufferRange=_glBindBufferRange;var _glBindFramebuffer=(target,framebuffer)=>{GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])};var _emscripten_glBindFramebuffer=_glBindFramebuffer;var _glBindRenderbuffer=(target,renderbuffer)=>{GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])};var _emscripten_glBindRenderbuffer=_glBindRenderbuffer;var _glBindSampler=(unit,sampler)=>{GLctx.bindSampler(unit,GL.samplers[sampler])};var _emscripten_glBindSampler=_glBindSampler;var _glBindTexture=(target,texture)=>{GLctx.bindTexture(target,GL.textures[texture])};var _emscripten_glBindTexture=_glBindTexture;var _glBindTransformFeedback=(target,id)=>{GLctx.bindTransformFeedback(target,GL.transformFeedbacks[id])};var _emscripten_glBindTransformFeedback=_glBindTransformFeedback;var _glBindVertexArray=vao=>{GLctx.bindVertexArray(GL.vaos[vao])};var _emscripten_glBindVertexArray=_glBindVertexArray;var _glBindVertexArrayOES=_glBindVertexArray;var _emscripten_glBindVertexArrayOES=_glBindVertexArrayOES;var _glBlendColor=(x0,x1,x2,x3)=>GLctx.blendColor(x0,x1,x2,x3);var _emscripten_glBlendColor=_glBlendColor;var _glBlendEquation=x0=>GLctx.blendEquation(x0);var _emscripten_glBlendEquation=_glBlendEquation;var _glBlendEquationSeparate=(x0,x1)=>GLctx.blendEquationSeparate(x0,x1);var _emscripten_glBlendEquationSeparate=_glBlendEquationSeparate;var _glBlendFunc=(x0,x1)=>GLctx.blendFunc(x0,x1);var _emscripten_glBlendFunc=_glBlendFunc;var _glBlendFuncSeparate=(x0,x1,x2,x3)=>GLctx.blendFuncSeparate(x0,x1,x2,x3);var _emscripten_glBlendFuncSeparate=_glBlendFuncSeparate;var _glBlitFramebuffer=(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)=>GLctx.blitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9);var _emscripten_glBlitFramebuffer=_glBlitFramebuffer;var _glBufferData=(target,size,data,usage)=>{if(GL.currentContext.version>=2){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}return}GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)};var _emscripten_glBufferData=_glBufferData;var _glBufferSubData=(target,offset,size,data)=>{if(GL.currentContext.version>=2){size&&GLctx.bufferSubData(target,offset,HEAPU8,data,size);return}GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))};var _emscripten_glBufferSubData=_glBufferSubData;var _glCheckFramebufferStatus=x0=>GLctx.checkFramebufferStatus(x0);var _emscripten_glCheckFramebufferStatus=_glCheckFramebufferStatus;var _glClear=x0=>GLctx.clear(x0);var _emscripten_glClear=_glClear;var _glClearBufferfi=(x0,x1,x2,x3)=>GLctx.clearBufferfi(x0,x1,x2,x3);var _emscripten_glClearBufferfi=_glClearBufferfi;var _glClearBufferfv=(buffer,drawbuffer,value)=>{GLctx.clearBufferfv(buffer,drawbuffer,HEAPF32,value>>2)};var _emscripten_glClearBufferfv=_glClearBufferfv;var _glClearBufferiv=(buffer,drawbuffer,value)=>{GLctx.clearBufferiv(buffer,drawbuffer,HEAP32,value>>2)};var _emscripten_glClearBufferiv=_glClearBufferiv;var _glClearBufferuiv=(buffer,drawbuffer,value)=>{GLctx.clearBufferuiv(buffer,drawbuffer,HEAPU32,value>>2)};var _emscripten_glClearBufferuiv=_glClearBufferuiv;var _glClearColor=(x0,x1,x2,x3)=>GLctx.clearColor(x0,x1,x2,x3);var _emscripten_glClearColor=_glClearColor;var _glClearDepthf=x0=>GLctx.clearDepth(x0);var _emscripten_glClearDepthf=_glClearDepthf;var _glClearStencil=x0=>GLctx.clearStencil(x0);var _emscripten_glClearStencil=_glClearStencil;var convertI32PairToI53=(lo,hi)=>(lo>>>0)+hi*4294967296;var _glClientWaitSync=(sync,flags,timeout_low,timeout_high)=>{var timeout=convertI32PairToI53(timeout_low,timeout_high);return GLctx.clientWaitSync(GL.syncs[sync],flags,timeout)};var _emscripten_glClientWaitSync=_glClientWaitSync;var _glColorMask=(red,green,blue,alpha)=>{GLctx.colorMask(!!red,!!green,!!blue,!!alpha)};var _emscripten_glColorMask=_glColorMask;var _glCompileShader=shader=>{GLctx.compileShader(GL.shaders[shader])};var _emscripten_glCompileShader=_glCompileShader;var _glCompressedTexImage2D=(target,level,internalFormat,width,height,border,imageSize,data)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data)}else{GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,HEAPU8,data,imageSize)}return}GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)};var _emscripten_glCompressedTexImage2D=_glCompressedTexImage2D;var _glCompressedTexImage3D=(target,level,internalFormat,width,height,depth,border,imageSize,data)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,imageSize,data)}else{GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,HEAPU8,data,imageSize)}};var _emscripten_glCompressedTexImage3D=_glCompressedTexImage3D;var _glCompressedTexSubImage2D=(target,level,xoffset,yoffset,width,height,format,imageSize,data)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data)}else{GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,HEAPU8,data,imageSize)}return}GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)};var _emscripten_glCompressedTexSubImage2D=_glCompressedTexSubImage2D;var _glCompressedTexSubImage3D=(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)}else{GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,HEAPU8,data,imageSize)}};var _emscripten_glCompressedTexSubImage3D=_glCompressedTexSubImage3D;var _glCopyBufferSubData=(x0,x1,x2,x3,x4)=>GLctx.copyBufferSubData(x0,x1,x2,x3,x4);var _emscripten_glCopyBufferSubData=_glCopyBufferSubData;var _glCopyTexImage2D=(x0,x1,x2,x3,x4,x5,x6,x7)=>GLctx.copyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7);var _emscripten_glCopyTexImage2D=_glCopyTexImage2D;var _glCopyTexSubImage2D=(x0,x1,x2,x3,x4,x5,x6,x7)=>GLctx.copyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7);var _emscripten_glCopyTexSubImage2D=_glCopyTexSubImage2D;var _glCopyTexSubImage3D=(x0,x1,x2,x3,x4,x5,x6,x7,x8)=>GLctx.copyTexSubImage3D(x0,x1,x2,x3,x4,x5,x6,x7,x8);var _emscripten_glCopyTexSubImage3D=_glCopyTexSubImage3D;var _glCreateProgram=()=>{var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id};var _emscripten_glCreateProgram=_glCreateProgram;var _glCreateShader=shaderType=>{var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id};var _emscripten_glCreateShader=_glCreateShader;var _glCullFace=x0=>GLctx.cullFace(x0);var _emscripten_glCullFace=_glCullFace;var _glDeleteBuffers=(n,buffers)=>{for(var i=0;i>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}};var _emscripten_glDeleteBuffers=_glDeleteBuffers;var _glDeleteFramebuffers=(n,framebuffers)=>{for(var i=0;i>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}};var _emscripten_glDeleteFramebuffers=_glDeleteFramebuffers;var _glDeleteProgram=id=>{if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null};var _emscripten_glDeleteProgram=_glDeleteProgram;var _glDeleteQueries=(n,ids)=>{for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.deleteQuery(query);GL.queries[id]=null}};var _emscripten_glDeleteQueries=_glDeleteQueries;var _glDeleteQueriesEXT=(n,ids)=>{for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.queries[id]=null}};var _emscripten_glDeleteQueriesEXT=_glDeleteQueriesEXT;var _glDeleteRenderbuffers=(n,renderbuffers)=>{for(var i=0;i>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}};var _emscripten_glDeleteRenderbuffers=_glDeleteRenderbuffers;var _glDeleteSamplers=(n,samplers)=>{for(var i=0;i>2];var sampler=GL.samplers[id];if(!sampler)continue;GLctx.deleteSampler(sampler);sampler.name=0;GL.samplers[id]=null}};var _emscripten_glDeleteSamplers=_glDeleteSamplers;var _glDeleteShader=id=>{if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null};var _emscripten_glDeleteShader=_glDeleteShader;var _glDeleteSync=id=>{if(!id)return;var sync=GL.syncs[id];if(!sync){GL.recordError(1281);return}GLctx.deleteSync(sync);sync.name=0;GL.syncs[id]=null};var _emscripten_glDeleteSync=_glDeleteSync;var _glDeleteTextures=(n,textures)=>{for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}};var _emscripten_glDeleteTextures=_glDeleteTextures;var _glDeleteTransformFeedbacks=(n,ids)=>{for(var i=0;i>2];var transformFeedback=GL.transformFeedbacks[id];if(!transformFeedback)continue;GLctx.deleteTransformFeedback(transformFeedback);transformFeedback.name=0;GL.transformFeedbacks[id]=null}};var _emscripten_glDeleteTransformFeedbacks=_glDeleteTransformFeedbacks;var _glDeleteVertexArrays=(n,vaos)=>{for(var i=0;i>2];GLctx.deleteVertexArray(GL.vaos[id]);GL.vaos[id]=null}};var _emscripten_glDeleteVertexArrays=_glDeleteVertexArrays;var _glDeleteVertexArraysOES=_glDeleteVertexArrays;var _emscripten_glDeleteVertexArraysOES=_glDeleteVertexArraysOES;var _glDepthFunc=x0=>GLctx.depthFunc(x0);var _emscripten_glDepthFunc=_glDepthFunc;var _glDepthMask=flag=>{GLctx.depthMask(!!flag)};var _emscripten_glDepthMask=_glDepthMask;var _glDepthRangef=(x0,x1)=>GLctx.depthRange(x0,x1);var _emscripten_glDepthRangef=_glDepthRangef;var _glDetachShader=(program,shader)=>{GLctx.detachShader(GL.programs[program],GL.shaders[shader])};var _emscripten_glDetachShader=_glDetachShader;var _glDisable=x0=>GLctx.disable(x0);var _emscripten_glDisable=_glDisable;var _glDisableVertexAttribArray=index=>{GLctx.disableVertexAttribArray(index)};var _emscripten_glDisableVertexAttribArray=_glDisableVertexAttribArray;var _glDrawArrays=(mode,first,count)=>{GLctx.drawArrays(mode,first,count)};var _emscripten_glDrawArrays=_glDrawArrays;var _glDrawArraysInstanced=(mode,first,count,primcount)=>{GLctx.drawArraysInstanced(mode,first,count,primcount)};var _emscripten_glDrawArraysInstanced=_glDrawArraysInstanced;var _glDrawArraysInstancedANGLE=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedANGLE=_glDrawArraysInstancedANGLE;var _glDrawArraysInstancedARB=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedARB=_glDrawArraysInstancedARB;var _glDrawArraysInstancedEXT=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedEXT=_glDrawArraysInstancedEXT;var _glDrawArraysInstancedNV=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedNV=_glDrawArraysInstancedNV;var tempFixedLengthArray=[];var _glDrawBuffers=(n,bufs)=>{var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx.drawBuffers(bufArray)};var _emscripten_glDrawBuffers=_glDrawBuffers;var _glDrawBuffersEXT=_glDrawBuffers;var _emscripten_glDrawBuffersEXT=_glDrawBuffersEXT;var _glDrawBuffersWEBGL=_glDrawBuffers;var _emscripten_glDrawBuffersWEBGL=_glDrawBuffersWEBGL;var _glDrawElements=(mode,count,type,indices)=>{GLctx.drawElements(mode,count,type,indices)};var _emscripten_glDrawElements=_glDrawElements;var _glDrawElementsInstanced=(mode,count,type,indices,primcount)=>{GLctx.drawElementsInstanced(mode,count,type,indices,primcount)};var _emscripten_glDrawElementsInstanced=_glDrawElementsInstanced;var _glDrawElementsInstancedANGLE=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedANGLE=_glDrawElementsInstancedANGLE;var _glDrawElementsInstancedARB=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedARB=_glDrawElementsInstancedARB;var _glDrawElementsInstancedEXT=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedEXT=_glDrawElementsInstancedEXT;var _glDrawElementsInstancedNV=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedNV=_glDrawElementsInstancedNV;var _glDrawRangeElements=(mode,start,end,count,type,indices)=>{_glDrawElements(mode,count,type,indices)};var _emscripten_glDrawRangeElements=_glDrawRangeElements;var _glEnable=x0=>GLctx.enable(x0);var _emscripten_glEnable=_glEnable;var _glEnableVertexAttribArray=index=>{GLctx.enableVertexAttribArray(index)};var _emscripten_glEnableVertexAttribArray=_glEnableVertexAttribArray;var _glEndQuery=x0=>GLctx.endQuery(x0);var _emscripten_glEndQuery=_glEndQuery;var _glEndQueryEXT=target=>{GLctx.disjointTimerQueryExt["endQueryEXT"](target)};var _emscripten_glEndQueryEXT=_glEndQueryEXT;var _glEndTransformFeedback=()=>GLctx.endTransformFeedback();var _emscripten_glEndTransformFeedback=_glEndTransformFeedback;var _glFenceSync=(condition,flags)=>{var sync=GLctx.fenceSync(condition,flags);if(sync){var id=GL.getNewId(GL.syncs);sync.name=id;GL.syncs[id]=sync;return id}return 0};var _emscripten_glFenceSync=_glFenceSync;var _glFinish=()=>GLctx.finish();var _emscripten_glFinish=_glFinish;var _glFlush=()=>GLctx.flush();var _emscripten_glFlush=_glFlush;var _glFramebufferRenderbuffer=(target,attachment,renderbuffertarget,renderbuffer)=>{GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])};var _emscripten_glFramebufferRenderbuffer=_glFramebufferRenderbuffer;var _glFramebufferTexture2D=(target,attachment,textarget,texture,level)=>{GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)};var _emscripten_glFramebufferTexture2D=_glFramebufferTexture2D;var _glFramebufferTextureLayer=(target,attachment,texture,level,layer)=>{GLctx.framebufferTextureLayer(target,attachment,GL.textures[texture],level,layer)};var _emscripten_glFramebufferTextureLayer=_glFramebufferTextureLayer;var _glFrontFace=x0=>GLctx.frontFace(x0);var _emscripten_glFrontFace=_glFrontFace;var _glGenBuffers=(n,buffers)=>{GL.genObject(n,buffers,"createBuffer",GL.buffers)};var _emscripten_glGenBuffers=_glGenBuffers;var _glGenFramebuffers=(n,ids)=>{GL.genObject(n,ids,"createFramebuffer",GL.framebuffers)};var _emscripten_glGenFramebuffers=_glGenFramebuffers;var _glGenQueries=(n,ids)=>{GL.genObject(n,ids,"createQuery",GL.queries)};var _emscripten_glGenQueries=_glGenQueries;var _glGenQueriesEXT=(n,ids)=>{for(var i=0;i>2]=0;return}var id=GL.getNewId(GL.queries);query.name=id;GL.queries[id]=query;HEAP32[ids+i*4>>2]=id}};var _emscripten_glGenQueriesEXT=_glGenQueriesEXT;var _glGenRenderbuffers=(n,renderbuffers)=>{GL.genObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)};var _emscripten_glGenRenderbuffers=_glGenRenderbuffers;var _glGenSamplers=(n,samplers)=>{GL.genObject(n,samplers,"createSampler",GL.samplers)};var _emscripten_glGenSamplers=_glGenSamplers;var _glGenTextures=(n,textures)=>{GL.genObject(n,textures,"createTexture",GL.textures)};var _emscripten_glGenTextures=_glGenTextures;var _glGenTransformFeedbacks=(n,ids)=>{GL.genObject(n,ids,"createTransformFeedback",GL.transformFeedbacks)};var _emscripten_glGenTransformFeedbacks=_glGenTransformFeedbacks;var _glGenVertexArrays=(n,arrays)=>{GL.genObject(n,arrays,"createVertexArray",GL.vaos)};var _emscripten_glGenVertexArrays=_glGenVertexArrays;var _glGenVertexArraysOES=_glGenVertexArrays;var _emscripten_glGenVertexArraysOES=_glGenVertexArraysOES;var _glGenerateMipmap=x0=>GLctx.generateMipmap(x0);var _emscripten_glGenerateMipmap=_glGenerateMipmap;var __glGetActiveAttribOrUniform=(funcName,program,index,bufSize,length,size,type,name)=>{program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}};var _glGetActiveAttrib=(program,index,bufSize,length,size,type,name)=>{__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)};var _emscripten_glGetActiveAttrib=_glGetActiveAttrib;var _glGetActiveUniform=(program,index,bufSize,length,size,type,name)=>{__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)};var _emscripten_glGetActiveUniform=_glGetActiveUniform;var _glGetActiveUniformBlockName=(program,uniformBlockIndex,bufSize,length,uniformBlockName)=>{program=GL.programs[program];var result=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);if(!result)return;if(uniformBlockName&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(result,uniformBlockName,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}};var _emscripten_glGetActiveUniformBlockName=_glGetActiveUniformBlockName;var _glGetActiveUniformBlockiv=(program,uniformBlockIndex,pname,params)=>{if(!params){GL.recordError(1281);return}program=GL.programs[program];if(pname==35393){var name=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);HEAP32[params>>2]=name.length+1;return}var result=GLctx.getActiveUniformBlockParameter(program,uniformBlockIndex,pname);if(result===null)return;if(pname==35395){for(var i=0;i>2]=result[i]}}else{HEAP32[params>>2]=result}};var _emscripten_glGetActiveUniformBlockiv=_glGetActiveUniformBlockiv;var _glGetActiveUniformsiv=(program,uniformCount,uniformIndices,pname,params)=>{if(!params){GL.recordError(1281);return}if(uniformCount>0&&uniformIndices==0){GL.recordError(1281);return}program=GL.programs[program];var ids=[];for(var i=0;i>2])}var result=GLctx.getActiveUniforms(program,ids,pname);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}};var _emscripten_glGetActiveUniformsiv=_glGetActiveUniformsiv;var _glGetAttachedShaders=(program,maxCount,count,shaders)=>{var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i>2]=id}};var _emscripten_glGetAttachedShaders=_glGetAttachedShaders;var _glGetAttribLocation=(program,name)=>GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name));var _emscripten_glGetAttribLocation=_glGetAttribLocation;var writeI53ToI64=(ptr,num)=>{HEAPU32[ptr>>2]=num;var lower=HEAPU32[ptr>>2];HEAPU32[ptr+4>>2]=(num-lower)/4294967296};var webglGetExtensions=function $webglGetExtensions(){var exts=getEmscriptenSupportedExtensions(GLctx);exts=exts.concat(exts.map(e=>"GL_"+e));return exts};var emscriptenWebGLGet=(name_,p,type)=>{if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 34814:case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break;case 33309:if(GL.currentContext.version<2){GL.recordError(1282);return}ret=webglGetExtensions().length;break;case 33307:case 33308:if(GL.currentContext.version<2){GL.recordError(1280);return}ret=name_==33307?3:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err(`GL_INVALID_ENUM in glGet${type}v: Unknown object returned from WebGL getParameter(${name_})! (error: ${e})`);return}}break;default:GL.recordError(1280);err(`GL_INVALID_ENUM in glGet${type}v: Native code calling glGet${type}v(${name_}) and it returns ${result} of type ${typeof result}!`);return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p]=ret?1:0;break}};var _glGetBooleanv=(name_,p)=>emscriptenWebGLGet(name_,p,4);var _emscripten_glGetBooleanv=_glGetBooleanv;var _glGetBufferParameteri64v=(target,value,data)=>{if(!data){GL.recordError(1281);return}writeI53ToI64(data,GLctx.getBufferParameter(target,value))};var _emscripten_glGetBufferParameteri64v=_glGetBufferParameteri64v;var _glGetBufferParameteriv=(target,value,data)=>{if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)};var _emscripten_glGetBufferParameteriv=_glGetBufferParameteriv;var _glGetError=()=>{var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error};var _emscripten_glGetError=_glGetError;var _glGetFloatv=(name_,p)=>emscriptenWebGLGet(name_,p,2);var _emscripten_glGetFloatv=_glGetFloatv;var _glGetFragDataLocation=(program,name)=>GLctx.getFragDataLocation(GL.programs[program],UTF8ToString(name));var _emscripten_glGetFragDataLocation=_glGetFragDataLocation;var _glGetFramebufferAttachmentParameteriv=(target,attachment,pname,params)=>{var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result};var _emscripten_glGetFramebufferAttachmentParameteriv=_glGetFramebufferAttachmentParameteriv;var emscriptenWebGLGetIndexed=(target,index,data,type)=>{if(!data){GL.recordError(1281);return}var result=GLctx.getIndexedParameter(target,index);var ret;switch(typeof result){case"boolean":ret=result?1:0;break;case"number":ret=result;break;case"object":if(result===null){switch(target){case 35983:case 35368:ret=0;break;default:{GL.recordError(1280);return}}}else if(result instanceof WebGLBuffer){ret=result.name|0}else{GL.recordError(1280);return}break;default:GL.recordError(1280);return}switch(type){case 1:writeI53ToI64(data,ret);break;case 0:HEAP32[data>>2]=ret;break;case 2:HEAPF32[data>>2]=ret;break;case 4:HEAP8[data]=ret?1:0;break;default:throw"internal emscriptenWebGLGetIndexed() error, bad type: "+type}};var _glGetInteger64i_v=(target,index,data)=>emscriptenWebGLGetIndexed(target,index,data,1);var _emscripten_glGetInteger64i_v=_glGetInteger64i_v;var _glGetInteger64v=(name_,p)=>{emscriptenWebGLGet(name_,p,1)};var _emscripten_glGetInteger64v=_glGetInteger64v;var _glGetIntegeri_v=(target,index,data)=>emscriptenWebGLGetIndexed(target,index,data,0);var _emscripten_glGetIntegeri_v=_glGetIntegeri_v;var _glGetIntegerv=(name_,p)=>emscriptenWebGLGet(name_,p,0);var _emscripten_glGetIntegerv=_glGetIntegerv;var _glGetInternalformativ=(target,internalformat,pname,bufSize,params)=>{if(bufSize<0){GL.recordError(1281);return}if(!params){GL.recordError(1281);return}var ret=GLctx.getInternalformatParameter(target,internalformat,pname);if(ret===null)return;for(var i=0;i>2]=ret[i]}};var _emscripten_glGetInternalformativ=_glGetInternalformativ;var _glGetProgramBinary=(program,bufSize,length,binaryFormat,binary)=>{GL.recordError(1282)};var _emscripten_glGetProgramBinary=_glGetProgramBinary;var _glGetProgramInfoLog=(program,maxLength,length,infoLog)=>{var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetProgramInfoLog=_glGetProgramInfoLog;var _glGetProgramiv=(program,pname,p)=>{if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}program=GL.programs[program];if(pname==35716){var log=GLctx.getProgramInfoLog(program);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){if(!program.maxUniformLength){for(var i=0;i>2]=program.maxUniformLength}else if(pname==35722){if(!program.maxAttributeLength){for(var i=0;i>2]=program.maxAttributeLength}else if(pname==35381){if(!program.maxUniformBlockNameLength){for(var i=0;i>2]=program.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(program,pname)}};var _emscripten_glGetProgramiv=_glGetProgramiv;var _glGetQueryObjecti64vEXT=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param;if(GL.currentContext.version<2){param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname)}else{param=GLctx.getQueryParameter(query,pname)}var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)};var _emscripten_glGetQueryObjecti64vEXT=_glGetQueryObjecti64vEXT;var _glGetQueryObjectivEXT=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret};var _emscripten_glGetQueryObjectivEXT=_glGetQueryObjectivEXT;var _glGetQueryObjectui64vEXT=_glGetQueryObjecti64vEXT;var _emscripten_glGetQueryObjectui64vEXT=_glGetQueryObjectui64vEXT;var _glGetQueryObjectuiv=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.getQueryParameter(query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret};var _emscripten_glGetQueryObjectuiv=_glGetQueryObjectuiv;var _glGetQueryObjectuivEXT=_glGetQueryObjectivEXT;var _emscripten_glGetQueryObjectuivEXT=_glGetQueryObjectuivEXT;var _glGetQueryiv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getQuery(target,pname)};var _emscripten_glGetQueryiv=_glGetQueryiv;var _glGetQueryivEXT=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)};var _emscripten_glGetQueryivEXT=_glGetQueryivEXT;var _glGetRenderbufferParameteriv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)};var _emscripten_glGetRenderbufferParameteriv=_glGetRenderbufferParameteriv;var _glGetSamplerParameterfv=(sampler,pname,params)=>{if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)};var _emscripten_glGetSamplerParameterfv=_glGetSamplerParameterfv;var _glGetSamplerParameteriv=(sampler,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)};var _emscripten_glGetSamplerParameteriv=_glGetSamplerParameteriv;var _glGetShaderInfoLog=(shader,maxLength,length,infoLog)=>{var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetShaderInfoLog=_glGetShaderInfoLog;var _glGetShaderPrecisionFormat=(shaderType,precisionType,range,precision)=>{var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision};var _emscripten_glGetShaderPrecisionFormat=_glGetShaderPrecisionFormat;var _glGetShaderSource=(shader,bufSize,length,source)=>{var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetShaderSource=_glGetShaderSource;var _glGetShaderiv=(shader,pname,p)=>{if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}};var _emscripten_glGetShaderiv=_glGetShaderiv;var _glGetString=name_=>{var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:ret=stringToNewUTF8(webglGetExtensions().join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=s?stringToNewUTF8(s):0;break;case 7938:var glVersion=GLctx.getParameter(7938);if(GL.currentContext.version>=2)glVersion=`OpenGL ES 3.0 (${glVersion})`;else{glVersion=`OpenGL ES 2.0 (${glVersion})`}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion=`OpenGL ES GLSL ES ${ver_num[1]} (${glslVersion})`}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280)}GL.stringCache[name_]=ret}return ret};var _emscripten_glGetString=_glGetString;var _glGetStringi=(name,index)=>{if(GL.currentContext.version<2){GL.recordError(1282);return 0}var stringiCache=GL.stringiCache[name];if(stringiCache){if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index]}switch(name){case 7939:var exts=webglGetExtensions().map(stringToNewUTF8);stringiCache=GL.stringiCache[name]=exts;if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index];default:GL.recordError(1280);return 0}};var _emscripten_glGetStringi=_glGetStringi;var _glGetSynciv=(sync,pname,bufSize,length,values)=>{if(bufSize<0){GL.recordError(1281);return}if(!values){GL.recordError(1281);return}var ret=GLctx.getSyncParameter(GL.syncs[sync],pname);if(ret!==null){HEAP32[values>>2]=ret;if(length)HEAP32[length>>2]=1}};var _emscripten_glGetSynciv=_glGetSynciv;var _glGetTexParameterfv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)};var _emscripten_glGetTexParameterfv=_glGetTexParameterfv;var _glGetTexParameteriv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)};var _emscripten_glGetTexParameteriv=_glGetTexParameteriv;var _glGetTransformFeedbackVarying=(program,index,bufSize,length,size,type,name)=>{program=GL.programs[program];var info=GLctx.getTransformFeedbackVarying(program,index);if(!info)return;if(name&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type};var _emscripten_glGetTransformFeedbackVarying=_glGetTransformFeedbackVarying;var _glGetUniformBlockIndex=(program,uniformBlockName)=>GLctx.getUniformBlockIndex(GL.programs[program],UTF8ToString(uniformBlockName));var _emscripten_glGetUniformBlockIndex=_glGetUniformBlockIndex;var _glGetUniformIndices=(program,uniformCount,uniformNames,uniformIndices)=>{if(!uniformIndices){GL.recordError(1281);return}if(uniformCount>0&&(uniformNames==0||uniformIndices==0)){GL.recordError(1281);return}program=GL.programs[program];var names=[];for(var i=0;i>2]));var result=GLctx.getUniformIndices(program,names);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}};var _emscripten_glGetUniformIndices=_glGetUniformIndices;var jstoi_q=str=>parseInt(str);var webglGetLeftBracePos=name=>name.slice(-1)=="]"&&name.lastIndexOf("[");var webglPrepareUniformLocationsBeforeFirstUse=program=>{var uniformLocsById=program.uniformLocsById,uniformSizeAndIdsByName=program.uniformSizeAndIdsByName,i,j;if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};for(i=0;i0?nm.slice(0,lb):nm;var id=program.uniformIdCounter;program.uniformIdCounter+=sz;uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j{name=UTF8ToString(name);if(program=GL.programs[program]){webglPrepareUniformLocationsBeforeFirstUse(program);var uniformLocsById=program.uniformLocsById;var arrayIndex=0;var uniformBaseName=name;var leftBrace=webglGetLeftBracePos(name);if(leftBrace>0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex{var p=GLctx.currentProgram;if(p){var webglLoc=p.uniformLocsById[location];if(typeof webglLoc=="number"){p.uniformLocsById[location]=webglLoc=GLctx.getUniformLocation(p,p.uniformArrayNamesById[location]+(webglLoc>0?`[${webglLoc}]`:""))}return webglLoc}else{GL.recordError(1282)}};var emscriptenWebGLGetUniform=(program,location,params,type)=>{if(!params){GL.recordError(1281);return}program=GL.programs[program];webglPrepareUniformLocationsBeforeFirstUse(program);var data=GLctx.getUniform(program,webglGetUniformLocation(location));if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}};var _glGetUniformfv=(program,location,params)=>{emscriptenWebGLGetUniform(program,location,params,2)};var _emscripten_glGetUniformfv=_glGetUniformfv;var _glGetUniformiv=(program,location,params)=>{emscriptenWebGLGetUniform(program,location,params,0)};var _emscripten_glGetUniformiv=_glGetUniformiv;var _glGetUniformuiv=(program,location,params)=>emscriptenWebGLGetUniform(program,location,params,0);var _emscripten_glGetUniformuiv=_glGetUniformuiv;var emscriptenWebGLGetVertexAttrib=(index,pname,params,type)=>{if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}};var _glGetVertexAttribIiv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,0)};var _emscripten_glGetVertexAttribIiv=_glGetVertexAttribIiv;var _glGetVertexAttribIuiv=_glGetVertexAttribIiv;var _emscripten_glGetVertexAttribIuiv=_glGetVertexAttribIuiv;var _glGetVertexAttribPointerv=(index,pname,pointer)=>{if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)};var _emscripten_glGetVertexAttribPointerv=_glGetVertexAttribPointerv;var _glGetVertexAttribfv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,2)};var _emscripten_glGetVertexAttribfv=_glGetVertexAttribfv;var _glGetVertexAttribiv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,5)};var _emscripten_glGetVertexAttribiv=_glGetVertexAttribiv;var _glHint=(x0,x1)=>GLctx.hint(x0,x1);var _emscripten_glHint=_glHint;var _glInvalidateFramebuffer=(target,numAttachments,attachments)=>{var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateFramebuffer(target,list)};var _emscripten_glInvalidateFramebuffer=_glInvalidateFramebuffer;var _glInvalidateSubFramebuffer=(target,numAttachments,attachments,x,y,width,height)=>{var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateSubFramebuffer(target,list,x,y,width,height)};var _emscripten_glInvalidateSubFramebuffer=_glInvalidateSubFramebuffer;var _glIsBuffer=buffer=>{var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)};var _emscripten_glIsBuffer=_glIsBuffer;var _glIsEnabled=x0=>GLctx.isEnabled(x0);var _emscripten_glIsEnabled=_glIsEnabled;var _glIsFramebuffer=framebuffer=>{var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)};var _emscripten_glIsFramebuffer=_glIsFramebuffer;var _glIsProgram=program=>{program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)};var _emscripten_glIsProgram=_glIsProgram;var _glIsQuery=id=>{var query=GL.queries[id];if(!query)return 0;return GLctx.isQuery(query)};var _emscripten_glIsQuery=_glIsQuery;var _glIsQueryEXT=id=>{var query=GL.queries[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)};var _emscripten_glIsQueryEXT=_glIsQueryEXT;var _glIsRenderbuffer=renderbuffer=>{var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)};var _emscripten_glIsRenderbuffer=_glIsRenderbuffer;var _glIsSampler=id=>{var sampler=GL.samplers[id];if(!sampler)return 0;return GLctx.isSampler(sampler)};var _emscripten_glIsSampler=_glIsSampler;var _glIsShader=shader=>{var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)};var _emscripten_glIsShader=_glIsShader;var _glIsSync=sync=>GLctx.isSync(GL.syncs[sync]);var _emscripten_glIsSync=_glIsSync;var _glIsTexture=id=>{var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)};var _emscripten_glIsTexture=_glIsTexture;var _glIsTransformFeedback=id=>GLctx.isTransformFeedback(GL.transformFeedbacks[id]);var _emscripten_glIsTransformFeedback=_glIsTransformFeedback;var _glIsVertexArray=array=>{var vao=GL.vaos[array];if(!vao)return 0;return GLctx.isVertexArray(vao)};var _emscripten_glIsVertexArray=_glIsVertexArray;var _glIsVertexArrayOES=_glIsVertexArray;var _emscripten_glIsVertexArrayOES=_glIsVertexArrayOES;var _glLineWidth=x0=>GLctx.lineWidth(x0);var _emscripten_glLineWidth=_glLineWidth;var _glLinkProgram=program=>{program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}};var _emscripten_glLinkProgram=_glLinkProgram;var _glPauseTransformFeedback=()=>GLctx.pauseTransformFeedback();var _emscripten_glPauseTransformFeedback=_glPauseTransformFeedback;var _glPixelStorei=(pname,param)=>{if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)};var _emscripten_glPixelStorei=_glPixelStorei;var _glPolygonOffset=(x0,x1)=>GLctx.polygonOffset(x0,x1);var _emscripten_glPolygonOffset=_glPolygonOffset;var _glProgramBinary=(program,binaryFormat,binary,length)=>{GL.recordError(1280)};var _emscripten_glProgramBinary=_glProgramBinary;var _glProgramParameteri=(program,pname,value)=>{GL.recordError(1280)};var _emscripten_glProgramParameteri=_glProgramParameteri;var _glQueryCounterEXT=(id,target)=>{GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.queries[id],target)};var _emscripten_glQueryCounterEXT=_glQueryCounterEXT;var _glReadBuffer=x0=>GLctx.readBuffer(x0);var _emscripten_glReadBuffer=_glReadBuffer;var computeUnpackAlignedImageSize=(width,height,sizePerPixel,alignment)=>{function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize};var colorChannelsInGlTextureFormat=format=>{var colorChannels={5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1};var heapObjectForWebGLType=type=>{type-=5120;if(type==0)return HEAP8;if(type==1)return HEAPU8;if(type==2)return HEAP16;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922||type==28520||type==30779||type==30782)return HEAPU32;return HEAPU16};var toTypedArrayIndex=(pointer,heap)=>pointer>>>31-Math.clz32(heap.BYTES_PER_ELEMENT);var emscriptenWebGLGetTexPixelData=(type,format,width,height,pixels,internalFormat)=>{var heap=heapObjectForWebGLType(type);var sizePerPixel=colorChannelsInGlTextureFormat(format)*heap.BYTES_PER_ELEMENT;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel,GL.unpackAlignment);return heap.subarray(toTypedArrayIndex(pixels,heap),toTypedArrayIndex(pixels+bytes,heap))};var _glReadPixels=(x,y,width,height,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);var target=toTypedArrayIndex(pixels,heap);GLctx.readPixels(x,y,width,height,format,type,heap,target)}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)};var _emscripten_glReadPixels=_glReadPixels;var _glReleaseShaderCompiler=()=>{};var _emscripten_glReleaseShaderCompiler=_glReleaseShaderCompiler;var _glRenderbufferStorage=(x0,x1,x2,x3)=>GLctx.renderbufferStorage(x0,x1,x2,x3);var _emscripten_glRenderbufferStorage=_glRenderbufferStorage;var _glRenderbufferStorageMultisample=(x0,x1,x2,x3,x4)=>GLctx.renderbufferStorageMultisample(x0,x1,x2,x3,x4);var _emscripten_glRenderbufferStorageMultisample=_glRenderbufferStorageMultisample;var _glResumeTransformFeedback=()=>GLctx.resumeTransformFeedback();var _emscripten_glResumeTransformFeedback=_glResumeTransformFeedback;var _glSampleCoverage=(value,invert)=>{GLctx.sampleCoverage(value,!!invert)};var _emscripten_glSampleCoverage=_glSampleCoverage;var _glSamplerParameterf=(sampler,pname,param)=>{GLctx.samplerParameterf(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameterf=_glSamplerParameterf;var _glSamplerParameterfv=(sampler,pname,params)=>{var param=HEAPF32[params>>2];GLctx.samplerParameterf(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameterfv=_glSamplerParameterfv;var _glSamplerParameteri=(sampler,pname,param)=>{GLctx.samplerParameteri(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameteri=_glSamplerParameteri;var _glSamplerParameteriv=(sampler,pname,params)=>{var param=HEAP32[params>>2];GLctx.samplerParameteri(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameteriv=_glSamplerParameteriv;var _glScissor=(x0,x1,x2,x3)=>GLctx.scissor(x0,x1,x2,x3);var _emscripten_glScissor=_glScissor;var _glShaderBinary=(count,shaders,binaryformat,binary,length)=>{GL.recordError(1280)};var _emscripten_glShaderBinary=_glShaderBinary;var _glShaderSource=(shader,count,string,length)=>{var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)};var _emscripten_glShaderSource=_glShaderSource;var _glStencilFunc=(x0,x1,x2)=>GLctx.stencilFunc(x0,x1,x2);var _emscripten_glStencilFunc=_glStencilFunc;var _glStencilFuncSeparate=(x0,x1,x2,x3)=>GLctx.stencilFuncSeparate(x0,x1,x2,x3);var _emscripten_glStencilFuncSeparate=_glStencilFuncSeparate;var _glStencilMask=x0=>GLctx.stencilMask(x0);var _emscripten_glStencilMask=_glStencilMask;var _glStencilMaskSeparate=(x0,x1)=>GLctx.stencilMaskSeparate(x0,x1);var _emscripten_glStencilMaskSeparate=_glStencilMaskSeparate;var _glStencilOp=(x0,x1,x2)=>GLctx.stencilOp(x0,x1,x2);var _emscripten_glStencilOp=_glStencilOp;var _glStencilOpSeparate=(x0,x1,x2,x3)=>GLctx.stencilOpSeparate(x0,x1,x2,x3);var _emscripten_glStencilOpSeparate=_glStencilOpSeparate;var _glTexImage2D=(target,level,internalFormat,width,height,border,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,null)}return}GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)};var _emscripten_glTexImage2D=_glTexImage2D;var _glTexImage3D=(target,level,internalFormat,width,height,depth,border,format,type,pixels)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,null)}};var _emscripten_glTexImage3D=_glTexImage3D;var _glTexParameterf=(x0,x1,x2)=>GLctx.texParameterf(x0,x1,x2);var _emscripten_glTexParameterf=_glTexParameterf;var _glTexParameterfv=(target,pname,params)=>{var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)};var _emscripten_glTexParameterfv=_glTexParameterfv;var _glTexParameteri=(x0,x1,x2)=>GLctx.texParameteri(x0,x1,x2);var _emscripten_glTexParameteri=_glTexParameteri;var _glTexParameteriv=(target,pname,params)=>{var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)};var _emscripten_glTexParameteriv=_glTexParameteriv;var _glTexStorage2D=(x0,x1,x2,x3,x4)=>GLctx.texStorage2D(x0,x1,x2,x3,x4);var _emscripten_glTexStorage2D=_glTexStorage2D;var _glTexStorage3D=(x0,x1,x2,x3,x4,x5)=>GLctx.texStorage3D(x0,x1,x2,x3,x4,x5);var _emscripten_glTexStorage3D=_glTexStorage3D;var _glTexSubImage2D=(target,level,xoffset,yoffset,width,height,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,heap,toTypedArrayIndex(pixels,heap));return}}var pixelData=pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0):null;GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)};var _emscripten_glTexSubImage2D=_glTexSubImage2D;var _glTexSubImage3D=(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,null)}};var _emscripten_glTexSubImage3D=_glTexSubImage3D;var _glTransformFeedbackVaryings=(program,count,varyings,bufferMode)=>{program=GL.programs[program];var vars=[];for(var i=0;i>2]));GLctx.transformFeedbackVaryings(program,vars,bufferMode)};var _emscripten_glTransformFeedbackVaryings=_glTransformFeedbackVaryings;var _glUniform1f=(location,v0)=>{GLctx.uniform1f(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1f=_glUniform1f;var miniTempWebGLFloatBuffers=[];var _glUniform1fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1fv(webglGetUniformLocation(location),HEAPF32,value>>2,count);return}if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1fv=_glUniform1fv;var _glUniform1i=(location,v0)=>{GLctx.uniform1i(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1i=_glUniform1i;var miniTempWebGLIntBuffers=[];var _glUniform1iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1iv(webglGetUniformLocation(location),HEAP32,value>>2,count);return}if(count<=288){var view=miniTempWebGLIntBuffers[count-1];for(var i=0;i>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1iv=_glUniform1iv;var _glUniform1ui=(location,v0)=>{GLctx.uniform1ui(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1ui=_glUniform1ui;var _glUniform1uiv=(location,count,value)=>{count&&GLctx.uniform1uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count)};var _emscripten_glUniform1uiv=_glUniform1uiv;var _glUniform2f=(location,v0,v1)=>{GLctx.uniform2f(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2f=_glUniform2f;var _glUniform2fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*2);return}if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2fv=_glUniform2fv;var _glUniform2i=(location,v0,v1)=>{GLctx.uniform2i(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2i=_glUniform2i;var _glUniform2iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2iv(webglGetUniformLocation(location),HEAP32,value>>2,count*2);return}if(count<=144){var view=miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2iv=_glUniform2iv;var _glUniform2ui=(location,v0,v1)=>{GLctx.uniform2ui(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2ui=_glUniform2ui;var _glUniform2uiv=(location,count,value)=>{count&&GLctx.uniform2uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*2)};var _emscripten_glUniform2uiv=_glUniform2uiv;var _glUniform3f=(location,v0,v1,v2)=>{GLctx.uniform3f(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3f=_glUniform3f;var _glUniform3fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*3);return}if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3fv=_glUniform3fv;var _glUniform3i=(location,v0,v1,v2)=>{GLctx.uniform3i(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3i=_glUniform3i;var _glUniform3iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3iv(webglGetUniformLocation(location),HEAP32,value>>2,count*3);return}if(count<=96){var view=miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3iv=_glUniform3iv;var _glUniform3ui=(location,v0,v1,v2)=>{GLctx.uniform3ui(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3ui=_glUniform3ui;var _glUniform3uiv=(location,count,value)=>{count&&GLctx.uniform3uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*3)};var _emscripten_glUniform3uiv=_glUniform3uiv;var _glUniform4f=(location,v0,v1,v2,v3)=>{GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4f=_glUniform4f;var _glUniform4fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value=value>>2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4fv=_glUniform4fv;var _glUniform4i=(location,v0,v1,v2,v3)=>{GLctx.uniform4i(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4i=_glUniform4i;var _glUniform4iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4iv(webglGetUniformLocation(location),HEAP32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4iv=_glUniform4iv;var _glUniform4ui=(location,v0,v1,v2,v3)=>{GLctx.uniform4ui(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4ui=_glUniform4ui;var _glUniform4uiv=(location,count,value)=>{count&&GLctx.uniform4uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*4)};var _emscripten_glUniform4uiv=_glUniform4uiv;var _glUniformBlockBinding=(program,uniformBlockIndex,uniformBlockBinding)=>{program=GL.programs[program];GLctx.uniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding)};var _emscripten_glUniformBlockBinding=_glUniformBlockBinding;var _glUniformMatrix2fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix2fv=_glUniformMatrix2fv;var _glUniformMatrix2x3fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix2x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)};var _emscripten_glUniformMatrix2x3fv=_glUniformMatrix2x3fv;var _glUniformMatrix2x4fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix2x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)};var _emscripten_glUniformMatrix2x4fv=_glUniformMatrix2x4fv;var _glUniformMatrix3fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*9);return}if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix3fv=_glUniformMatrix3fv;var _glUniformMatrix3x2fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix3x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)};var _emscripten_glUniformMatrix3x2fv=_glUniformMatrix3x2fv;var _glUniformMatrix3x4fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix3x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)};var _emscripten_glUniformMatrix3x4fv=_glUniformMatrix3x4fv;var _glUniformMatrix4fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*16);return}if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value=value>>2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix4fv=_glUniformMatrix4fv;var _glUniformMatrix4x2fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix4x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)};var _emscripten_glUniformMatrix4x2fv=_glUniformMatrix4x2fv;var _glUniformMatrix4x3fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix4x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)};var _emscripten_glUniformMatrix4x3fv=_glUniformMatrix4x3fv;var _glUseProgram=program=>{program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program};var _emscripten_glUseProgram=_glUseProgram;var _glValidateProgram=program=>{GLctx.validateProgram(GL.programs[program])};var _emscripten_glValidateProgram=_glValidateProgram;var _glVertexAttrib1f=(x0,x1)=>GLctx.vertexAttrib1f(x0,x1);var _emscripten_glVertexAttrib1f=_glVertexAttrib1f;var _glVertexAttrib1fv=(index,v)=>{GLctx.vertexAttrib1f(index,HEAPF32[v>>2])};var _emscripten_glVertexAttrib1fv=_glVertexAttrib1fv;var _glVertexAttrib2f=(x0,x1,x2)=>GLctx.vertexAttrib2f(x0,x1,x2);var _emscripten_glVertexAttrib2f=_glVertexAttrib2f;var _glVertexAttrib2fv=(index,v)=>{GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])};var _emscripten_glVertexAttrib2fv=_glVertexAttrib2fv;var _glVertexAttrib3f=(x0,x1,x2,x3)=>GLctx.vertexAttrib3f(x0,x1,x2,x3);var _emscripten_glVertexAttrib3f=_glVertexAttrib3f;var _glVertexAttrib3fv=(index,v)=>{GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])};var _emscripten_glVertexAttrib3fv=_glVertexAttrib3fv;var _glVertexAttrib4f=(x0,x1,x2,x3,x4)=>GLctx.vertexAttrib4f(x0,x1,x2,x3,x4);var _emscripten_glVertexAttrib4f=_glVertexAttrib4f;var _glVertexAttrib4fv=(index,v)=>{GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])};var _emscripten_glVertexAttrib4fv=_glVertexAttrib4fv;var _glVertexAttribDivisor=(index,divisor)=>{GLctx.vertexAttribDivisor(index,divisor)};var _emscripten_glVertexAttribDivisor=_glVertexAttribDivisor;var _glVertexAttribDivisorANGLE=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorANGLE=_glVertexAttribDivisorANGLE;var _glVertexAttribDivisorARB=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorARB=_glVertexAttribDivisorARB;var _glVertexAttribDivisorEXT=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorEXT=_glVertexAttribDivisorEXT;var _glVertexAttribDivisorNV=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorNV=_glVertexAttribDivisorNV;var _glVertexAttribI4i=(x0,x1,x2,x3,x4)=>GLctx.vertexAttribI4i(x0,x1,x2,x3,x4);var _emscripten_glVertexAttribI4i=_glVertexAttribI4i;var _glVertexAttribI4iv=(index,v)=>{GLctx.vertexAttribI4i(index,HEAP32[v>>2],HEAP32[v+4>>2],HEAP32[v+8>>2],HEAP32[v+12>>2])};var _emscripten_glVertexAttribI4iv=_glVertexAttribI4iv;var _glVertexAttribI4ui=(x0,x1,x2,x3,x4)=>GLctx.vertexAttribI4ui(x0,x1,x2,x3,x4);var _emscripten_glVertexAttribI4ui=_glVertexAttribI4ui;var _glVertexAttribI4uiv=(index,v)=>{GLctx.vertexAttribI4ui(index,HEAPU32[v>>2],HEAPU32[v+4>>2],HEAPU32[v+8>>2],HEAPU32[v+12>>2])};var _emscripten_glVertexAttribI4uiv=_glVertexAttribI4uiv;var _glVertexAttribIPointer=(index,size,type,stride,ptr)=>{GLctx.vertexAttribIPointer(index,size,type,stride,ptr)};var _emscripten_glVertexAttribIPointer=_glVertexAttribIPointer;var _glVertexAttribPointer=(index,size,type,normalized,stride,ptr)=>{GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)};var _emscripten_glVertexAttribPointer=_glVertexAttribPointer;var _glViewport=(x0,x1,x2,x3)=>GLctx.viewport(x0,x1,x2,x3);var _emscripten_glViewport=_glViewport;var _glWaitSync=(sync,flags,timeout_low,timeout_high)=>{var timeout=convertI32PairToI53(timeout_low,timeout_high);GLctx.waitSync(GL.syncs[sync],flags,timeout)};var _emscripten_glWaitSync=_glWaitSync;var _emscripten_has_asyncify=()=>0;var _emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var doRequestFullscreen=(target,strategy)=>{if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;if(!target.requestFullscreen&&!target.webkitRequestFullscreen){return-3}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(strategy.deferUntilInEventHandler){JSEvents.deferCall(JSEvents_requestFullscreen,1,[target,strategy]);return 1}return-2}return JSEvents_requestFullscreen(target,strategy)};var _emscripten_request_fullscreen_strategy=(target,deferUntilInEventHandler,fullscreenStrategy)=>{var strategy={scaleMode:HEAP32[fullscreenStrategy>>2],canvasResolutionScaleMode:HEAP32[fullscreenStrategy+4>>2],filteringMode:HEAP32[fullscreenStrategy+8>>2],deferUntilInEventHandler:deferUntilInEventHandler,canvasResizedCallback:HEAP32[fullscreenStrategy+12>>2],canvasResizedCallbackUserData:HEAP32[fullscreenStrategy+16>>2]};return doRequestFullscreen(target,strategy)};var _emscripten_request_pointerlock=(target,deferUntilInEventHandler)=>{target=findEventTarget(target);if(!target)return-4;if(!target.requestPointerLock){return-1}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(deferUntilInEventHandler){JSEvents.deferCall(requestPointerLock,2,[target]);return 1}return-2}return requestPointerLock(target)};var abortOnCannotGrowMemory=requestedSize=>{abort("OOM")};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;abortOnCannotGrowMemory(requestedSize)};var _emscripten_sample_gamepad_data=()=>{try{if(navigator.getGamepads)return(JSEvents.lastGamepadState=navigator.getGamepads())?0:-1}catch(e){navigator.getGamepads=null}return-1};var registerBeforeUnloadEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString)=>{var beforeUnloadEventHandlerFunc=(e=event)=>{var confirmationMessage=getWasmTableEntry(callbackfunc)(eventTypeId,0,userData);if(confirmationMessage){confirmationMessage=UTF8ToString(confirmationMessage)}if(confirmationMessage){e.preventDefault();e.returnValue=confirmationMessage;return confirmationMessage}};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:beforeUnloadEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_beforeunload_callback_on_thread=(userData,callbackfunc,targetThread)=>{if(typeof onbeforeunload=="undefined")return-1;if(targetThread!==1)return-5;return registerBeforeUnloadEventCallback(2,userData,true,callbackfunc,28,"beforeunload")};var registerFocusEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.focusEvent)JSEvents.focusEvent=_malloc(256);var focusEventHandlerFunc=(e=event)=>{var nodeName=JSEvents.getNodeNameForTarget(e.target);var id=e.target.id?e.target.id:"";var focusEvent=JSEvents.focusEvent;stringToUTF8(nodeName,focusEvent+0,128);stringToUTF8(id,focusEvent+128,128);if(getWasmTableEntry(callbackfunc)(eventTypeId,focusEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:focusEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_blur_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread);var _emscripten_set_element_css_size=(target,width,height)=>{target=findEventTarget(target);if(!target)return-4;target.style.width=width+"px";target.style.height=height+"px";return 0};var _emscripten_set_focus_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread);var fillFullscreenChangeEventData=eventStruct=>{var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement?.id||"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}};var registerFullscreenChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=(e=event)=>{var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_fullscreenchange_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread)};var registerGamepadEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=(e=event)=>{var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(getWasmTableEntry(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_gamepadconnected_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(_emscripten_sample_gamepad_data())return-1;return registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread)};var _emscripten_set_gamepaddisconnected_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(_emscripten_sample_gamepad_data())return-1;return registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread)};var registerKeyEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=e=>{var keyEventData=JSEvents.keyEvent;HEAPF64[keyEventData>>3]=e.timeStamp;var idx=keyEventData>>2;HEAP32[idx+2]=e.location;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;HEAP32[idx+7]=e.repeat;HEAP32[idx+8]=e.charCode;HEAP32[idx+9]=e.keyCode;HEAP32[idx+10]=e.which;stringToUTF8(e.key||"",keyEventData+44,32);stringToUTF8(e.code||"",keyEventData+76,32);stringToUTF8(e.char||"",keyEventData+108,32);stringToUTF8(e.locale||"",keyEventData+140,32);if(getWasmTableEntry(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_keydown_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);var _emscripten_set_keypress_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);var _emscripten_set_keyup_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);var _emscripten_set_main_loop=(func,fps,simulateInfiniteLoop)=>{var browserIterationFunc=getWasmTableEntry(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)};var fillMouseEventData=(eventStruct,e,target)=>{HEAPF64[eventStruct>>3]=e.timeStamp;var idx=eventStruct>>2;HEAP32[idx+2]=e.screenX;HEAP32[idx+3]=e.screenY;HEAP32[idx+4]=e.clientX;HEAP32[idx+5]=e.clientY;HEAP32[idx+6]=e.ctrlKey;HEAP32[idx+7]=e.shiftKey;HEAP32[idx+8]=e.altKey;HEAP32[idx+9]=e.metaKey;HEAP16[idx*2+20]=e.button;HEAP16[idx*2+21]=e.buttons;HEAP32[idx+11]=e["movementX"];HEAP32[idx+12]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+13]=e.clientX-(rect.left|0);HEAP32[idx+14]=e.clientY-(rect.top|0)};var registerMouseEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=(e=event)=>{fillMouseEventData(JSEvents.mouseEvent,e,target);if(getWasmTableEntry(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_mousedown_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);var _emscripten_set_mouseenter_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);var _emscripten_set_mouseleave_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);var _emscripten_set_mousemove_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);var _emscripten_set_mouseup_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);var fillPointerlockChangeEventData=eventStruct=>{var pointerLockElement=document.pointerLockElement||document.mozPointerLockElement||document.webkitPointerLockElement||document.msPointerLockElement;var isPointerlocked=!!pointerLockElement;HEAP32[eventStruct>>2]=isPointerlocked;var nodeName=JSEvents.getNodeNameForTarget(pointerLockElement);var id=pointerLockElement?.id||"";stringToUTF8(nodeName,eventStruct+4,128);stringToUTF8(id,eventStruct+132,128)};var registerPointerlockChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.pointerlockChangeEvent)JSEvents.pointerlockChangeEvent=_malloc(260);var pointerlockChangeEventHandlerFunc=(e=event)=>{var pointerlockChangeEvent=JSEvents.pointerlockChangeEvent;fillPointerlockChangeEventData(pointerlockChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,pointerlockChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:pointerlockChangeEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_pointerlockchange_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{if(!document||!document.body||!document.body.requestPointerLock&&!document.body.mozRequestPointerLock&&!document.body.webkitRequestPointerLock&&!document.body.msRequestPointerLock){return-1}target=findEventTarget(target);if(!target)return-4;registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"mozpointerlockchange",targetThread);registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"webkitpointerlockchange",targetThread);registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"mspointerlockchange",targetThread);return registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"pointerlockchange",targetThread)};var registerUiEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=(e=event)=>{if(e.target!=target){return}var b=document.body;if(!b){return}var uiEvent=JSEvents.uiEvent;HEAP32[uiEvent>>2]=0;HEAP32[uiEvent+4>>2]=b.clientWidth;HEAP32[uiEvent+8>>2]=b.clientHeight;HEAP32[uiEvent+12>>2]=innerWidth;HEAP32[uiEvent+16>>2]=innerHeight;HEAP32[uiEvent+20>>2]=outerWidth;HEAP32[uiEvent+24>>2]=outerHeight;HEAP32[uiEvent+28>>2]=pageXOffset|0;HEAP32[uiEvent+32>>2]=pageYOffset|0;if(getWasmTableEntry(callbackfunc)(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_resize_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);var registerTouchEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1696);target=findEventTarget(target);var touchEventHandlerFunc=e=>{var t,touches={},et=e.touches;for(var i=0;i>3]=e.timeStamp;var idx=touchEvent>>2;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;idx+=7;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-(targetRect.left|0);HEAP32[idx+10]=t.clientY-(targetRect.top|0);idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent+8>>2]=numTouches;if(getWasmTableEntry(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_touchcancel_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);var _emscripten_set_touchend_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);var _emscripten_set_touchmove_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);var _emscripten_set_touchstart_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);var fillVisibilityChangeEventData=eventStruct=>{var visibilityStates=["hidden","visible","prerender","unloaded"];var visibilityState=visibilityStates.indexOf(document.visibilityState);HEAP32[eventStruct>>2]=document.hidden;HEAP32[eventStruct+4>>2]=visibilityState};var registerVisibilityChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.visibilityChangeEvent)JSEvents.visibilityChangeEvent=_malloc(8);var visibilityChangeEventHandlerFunc=(e=event)=>{var visibilityChangeEvent=JSEvents.visibilityChangeEvent;fillVisibilityChangeEventData(visibilityChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,visibilityChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:visibilityChangeEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_visibilitychange_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(!specialHTMLTargets[1]){return-4}return registerVisibilityChangeEventCallback(specialHTMLTargets[1],userData,useCapture,callbackfunc,21,"visibilitychange",targetThread)};var registerWheelEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=(e=event)=>{var wheelEvent=JSEvents.wheelEvent;fillMouseEventData(wheelEvent,e,target);HEAPF64[wheelEvent+72>>3]=e["deltaX"];HEAPF64[wheelEvent+80>>3]=e["deltaY"];HEAPF64[wheelEvent+88>>3]=e["deltaZ"];HEAP32[wheelEvent+96>>2]=e["deltaMode"];if(getWasmTableEntry(callbackfunc)(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_wheel_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{target=findEventTarget(target);if(!target)return-4;if(typeof target.onwheel!="undefined"){return registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread)}else{return-1}};var _emscripten_set_window_title=title=>document.title=UTF8ToString(title);var _emscripten_sleep=()=>{throw"Please compile your program with async support in order to use asynchronous operations like emscripten_sleep"};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret};function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var arraySum=(array,index)=>{var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum};var MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];var addDays=(date,days)=>{var newDate=new Date(date.getTime());while(days>0){var leap=isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var _strftime=(s,maxsize,format,tm)=>{var tm_zone=HEAPU32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":date=>WEEKDAYS[date.tm_wday].substring(0,3),"%A":date=>WEEKDAYS[date.tm_wday],"%b":date=>MONTHS[date.tm_mon].substring(0,3),"%B":date=>MONTHS[date.tm_mon],"%C":date=>{var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":date=>leadingNulls(date.tm_mday,2),"%e":date=>leadingSomething(date.tm_mday,2," "),"%g":date=>getWeekBasedYear(date).toString().substring(2),"%G":getWeekBasedYear,"%H":date=>leadingNulls(date.tm_hour,2),"%I":date=>{var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":date=>leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3),"%m":date=>leadingNulls(date.tm_mon+1,2),"%M":date=>leadingNulls(date.tm_min,2),"%n":()=>"\n","%p":date=>{if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":date=>leadingNulls(date.tm_sec,2),"%t":()=>"\t","%u":date=>date.tm_wday||7,"%U":date=>{var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":date=>{var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":date=>date.tm_wday,"%W":date=>{var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":date=>(date.tm_year+1900).toString().substring(2),"%Y":date=>date.tm_year+1900,"%z":date=>{var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":date=>date.tm_zone,"%%":()=>"%"};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1};var _strftime_l=(s,maxsize,format,tm,loc)=>_strftime(s,maxsize,format,tm);var listenOnce=(object,event,func)=>{object.addEventListener(event,func,{"once":true})};var autoResumeAudioContext=(ctx,elements)=>{if(!elements){elements=[document,document.getElementById("canvas")]}["keydown","mousedown","touchstart"].forEach(event=>{elements.forEach(element=>{if(element){listenOnce(element,event,()=>{if(ctx.state==="suspended")ctx.resume()})}})})};var dynCallLegacy=(sig,ptr,args)=>{var f=Module["dynCall_"+sig];return f(ptr,...args)};var dynCall=(sig,ptr,args=[])=>{if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr)(...args);return rtn};FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_unlink"]=FS.unlink;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["requestFullscreen"]=Browser.requestFullscreen;Module["requestAnimationFrame"]=Browser.requestAnimationFrame;Module["setCanvasSize"]=Browser.setCanvasSize;Module["pauseMainLoop"]=Browser.mainLoop.pause;Module["resumeMainLoop"]=Browser.mainLoop.resume;Module["getUserMedia"]=Browser.getUserMedia;Module["createContext"]=Browser.createContext;var preloadedImages={};var preloadedAudios={};var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){miniTempWebGLIntBuffers[i]=miniTempWebGLIntBuffersStorage.subarray(0,i+1)}var wasmImports={p:___cxa_begin_catch,v:___cxa_end_catch,a:___cxa_find_matching_catch_2,h:___cxa_find_matching_catch_3,I:___cxa_rethrow,o:___cxa_throw,ab:___cxa_uncaught_exceptions,b:___resumeException,ha:___syscall_fcntl64,fb:___syscall_ioctl,gb:___syscall_openat,ad:__emscripten_fs_load_embedded_files,hb:__emscripten_get_now_is_monotonic,D:_abort,Ua:_eglBindAPI,Xa:_eglChooseConfig,La:_eglCreateContext,Na:_eglCreateWindowSurface,Ma:_eglDestroyContext,Oa:_eglDestroySurface,Za:_eglGetConfigAttrib,ca:_eglGetDisplay,Ka:_eglGetError,Va:_eglInitialize,Pa:_eglMakeCurrent,Ja:_eglQueryString,Qa:_eglSwapBuffers,Ra:_eglSwapInterval,Wa:_eglTerminate,Ta:_eglWaitGL,Sa:_eglWaitNative,mc:_emscripten_asm_const_int,q:_emscripten_asm_const_int_sync_on_main_thread,na:_emscripten_asm_const_ptr_sync_on_main_thread,oa:_emscripten_cancel_main_loop,ia:_emscripten_date_now,Ea:_emscripten_exit_fullscreen,Ha:_emscripten_exit_pointerlock,Rc:_emscripten_force_exit,y:_emscripten_get_device_pixel_ratio,u:_emscripten_get_element_css_size,la:_emscripten_get_gamepad_status,H:_emscripten_get_now,Tb:_emscripten_get_num_gamepads,Ia:_emscripten_get_screen_size,$f:_emscripten_glActiveTexture,_f:_emscripten_glAttachShader,$c:_emscripten_glBeginQuery,Aa:_emscripten_glBeginQueryEXT,Hc:_emscripten_glBeginTransformFeedback,Zf:_emscripten_glBindAttribLocation,Yf:_emscripten_glBindBuffer,Ec:_emscripten_glBindBufferBase,Fc:_emscripten_glBindBufferRange,Xf:_emscripten_glBindFramebuffer,Wf:_emscripten_glBindRenderbuffer,Kb:_emscripten_glBindSampler,Vf:_emscripten_glBindTexture,Cb:_emscripten_glBindTransformFeedback,Mc:_emscripten_glBindVertexArray,sa:_emscripten_glBindVertexArrayOES,Uf:_emscripten_glBlendColor,Tf:_emscripten_glBlendEquation,Sf:_emscripten_glBlendEquationSeparate,Rf:_emscripten_glBlendFunc,Qf:_emscripten_glBlendFuncSeparate,Pc:_emscripten_glBlitFramebuffer,Pf:_emscripten_glBufferData,Of:_emscripten_glBufferSubData,Nf:_emscripten_glCheckFramebufferStatus,Mf:_emscripten_glClear,gc:_emscripten_glClearBufferfi,hc:_emscripten_glClearBufferfv,jc:_emscripten_glClearBufferiv,ic:_emscripten_glClearBufferuiv,Lf:_emscripten_glClearColor,Kf:_emscripten_glClearDepthf,Jf:_emscripten_glClearStencil,Ub:_emscripten_glClientWaitSync,If:_emscripten_glColorMask,Hf:_emscripten_glCompileShader,Gf:_emscripten_glCompressedTexImage2D,fd:_emscripten_glCompressedTexImage3D,Ff:_emscripten_glCompressedTexSubImage2D,ed:_emscripten_glCompressedTexSubImage3D,ec:_emscripten_glCopyBufferSubData,Ef:_emscripten_glCopyTexImage2D,Df:_emscripten_glCopyTexSubImage2D,gd:_emscripten_glCopyTexSubImage3D,Cf:_emscripten_glCreateProgram,Bf:_emscripten_glCreateShader,Af:_emscripten_glCullFace,zf:_emscripten_glDeleteBuffers,yf:_emscripten_glDeleteFramebuffers,xf:_emscripten_glDeleteProgram,cd:_emscripten_glDeleteQueries,Ca:_emscripten_glDeleteQueriesEXT,wf:_emscripten_glDeleteRenderbuffers,Mb:_emscripten_glDeleteSamplers,vf:_emscripten_glDeleteShader,Vb:_emscripten_glDeleteSync,uf:_emscripten_glDeleteTextures,Bb:_emscripten_glDeleteTransformFeedbacks,Lc:_emscripten_glDeleteVertexArrays,ra:_emscripten_glDeleteVertexArraysOES,tf:_emscripten_glDepthFunc,sf:_emscripten_glDepthMask,rf:_emscripten_glDepthRangef,qf:_emscripten_glDetachShader,pf:_emscripten_glDisable,of:_emscripten_glDisableVertexAttribArray,nf:_emscripten_glDrawArrays,Zb:_emscripten_glDrawArraysInstanced,cg:_emscripten_glDrawArraysInstancedANGLE,lb:_emscripten_glDrawArraysInstancedARB,od:_emscripten_glDrawArraysInstancedEXT,mb:_emscripten_glDrawArraysInstancedNV,Xc:_emscripten_glDrawBuffers,md:_emscripten_glDrawBuffersEXT,dg:_emscripten_glDrawBuffersWEBGL,mf:_emscripten_glDrawElements,Yb:_emscripten_glDrawElementsInstanced,bg:_emscripten_glDrawElementsInstancedANGLE,jb:_emscripten_glDrawElementsInstancedARB,kb:_emscripten_glDrawElementsInstancedEXT,nd:_emscripten_glDrawElementsInstancedNV,jd:_emscripten_glDrawRangeElements,lf:_emscripten_glEnable,kf:_emscripten_glEnableVertexAttribArray,_c:_emscripten_glEndQuery,za:_emscripten_glEndQueryEXT,Gc:_emscripten_glEndTransformFeedback,Xb:_emscripten_glFenceSync,jf:_emscripten_glFinish,hf:_emscripten_glFlush,gf:_emscripten_glFramebufferRenderbuffer,ff:_emscripten_glFramebufferTexture2D,Nc:_emscripten_glFramebufferTextureLayer,ef:_emscripten_glFrontFace,df:_emscripten_glGenBuffers,bf:_emscripten_glGenFramebuffers,dd:_emscripten_glGenQueries,Da:_emscripten_glGenQueriesEXT,af:_emscripten_glGenRenderbuffers,Nb:_emscripten_glGenSamplers,$e:_emscripten_glGenTextures,Ab:_emscripten_glGenTransformFeedbacks,Kc:_emscripten_glGenVertexArrays,qa:_emscripten_glGenVertexArraysOES,cf:_emscripten_glGenerateMipmap,_e:_emscripten_glGetActiveAttrib,Ze:_emscripten_glGetActiveUniform,$b:_emscripten_glGetActiveUniformBlockName,ac:_emscripten_glGetActiveUniformBlockiv,cc:_emscripten_glGetActiveUniformsiv,Ye:_emscripten_glGetAttachedShaders,Xe:_emscripten_glGetAttribLocation,We:_emscripten_glGetBooleanv,Ob:_emscripten_glGetBufferParameteri64v,Ve:_emscripten_glGetBufferParameteriv,Ue:_emscripten_glGetError,Te:_emscripten_glGetFloatv,tc:_emscripten_glGetFragDataLocation,Se:_emscripten_glGetFramebufferAttachmentParameteriv,Pb:_emscripten_glGetInteger64i_v,Rb:_emscripten_glGetInteger64v,Ic:_emscripten_glGetIntegeri_v,Re:_emscripten_glGetIntegerv,pb:_emscripten_glGetInternalformativ,wb:_emscripten_glGetProgramBinary,Pe:_emscripten_glGetProgramInfoLog,Qe:_emscripten_glGetProgramiv,ua:_emscripten_glGetQueryObjecti64vEXT,wa:_emscripten_glGetQueryObjectivEXT,ta:_emscripten_glGetQueryObjectui64vEXT,Yc:_emscripten_glGetQueryObjectuiv,va:_emscripten_glGetQueryObjectuivEXT,Zc:_emscripten_glGetQueryiv,xa:_emscripten_glGetQueryivEXT,Oe:_emscripten_glGetRenderbufferParameteriv,Eb:_emscripten_glGetSamplerParameterfv,Fb:_emscripten_glGetSamplerParameteriv,Me:_emscripten_glGetShaderInfoLog,Le:_emscripten_glGetShaderPrecisionFormat,Ke:_emscripten_glGetShaderSource,Ne:_emscripten_glGetShaderiv,Je:_emscripten_glGetString,fc:_emscripten_glGetStringi,Qb:_emscripten_glGetSynciv,Ie:_emscripten_glGetTexParameterfv,He:_emscripten_glGetTexParameteriv,Cc:_emscripten_glGetTransformFeedbackVarying,bc:_emscripten_glGetUniformBlockIndex,dc:_emscripten_glGetUniformIndices,De:_emscripten_glGetUniformLocation,Ge:_emscripten_glGetUniformfv,Fe:_emscripten_glGetUniformiv,uc:_emscripten_glGetUniformuiv,Ac:_emscripten_glGetVertexAttribIiv,zc:_emscripten_glGetVertexAttribIuiv,Ae:_emscripten_glGetVertexAttribPointerv,Ce:_emscripten_glGetVertexAttribfv,Be:_emscripten_glGetVertexAttribiv,ze:_emscripten_glHint,tb:_emscripten_glInvalidateFramebuffer,sb:_emscripten_glInvalidateSubFramebuffer,ye:_emscripten_glIsBuffer,xe:_emscripten_glIsEnabled,we:_emscripten_glIsFramebuffer,ve:_emscripten_glIsProgram,bd:_emscripten_glIsQuery,Ba:_emscripten_glIsQueryEXT,ue:_emscripten_glIsRenderbuffer,Lb:_emscripten_glIsSampler,te:_emscripten_glIsShader,Wb:_emscripten_glIsSync,se:_emscripten_glIsTexture,zb:_emscripten_glIsTransformFeedback,Jc:_emscripten_glIsVertexArray,pa:_emscripten_glIsVertexArrayOES,re:_emscripten_glLineWidth,qe:_emscripten_glLinkProgram,yb:_emscripten_glPauseTransformFeedback,pe:_emscripten_glPixelStorei,oe:_emscripten_glPolygonOffset,vb:_emscripten_glProgramBinary,ub:_emscripten_glProgramParameteri,ya:_emscripten_glQueryCounterEXT,kd:_emscripten_glReadBuffer,ne:_emscripten_glReadPixels,me:_emscripten_glReleaseShaderCompiler,le:_emscripten_glRenderbufferStorage,Oc:_emscripten_glRenderbufferStorageMultisample,xb:_emscripten_glResumeTransformFeedback,ke:_emscripten_glSampleCoverage,Hb:_emscripten_glSamplerParameterf,Gb:_emscripten_glSamplerParameterfv,Jb:_emscripten_glSamplerParameteri,Ib:_emscripten_glSamplerParameteriv,je:_emscripten_glScissor,ie:_emscripten_glShaderBinary,he:_emscripten_glShaderSource,ge:_emscripten_glStencilFunc,fe:_emscripten_glStencilFuncSeparate,ee:_emscripten_glStencilMask,de:_emscripten_glStencilMaskSeparate,ce:_emscripten_glStencilOp,be:_emscripten_glStencilOpSeparate,ae:_emscripten_glTexImage2D,id:_emscripten_glTexImage3D,$d:_emscripten_glTexParameterf,_d:_emscripten_glTexParameterfv,Zd:_emscripten_glTexParameteri,Yd:_emscripten_glTexParameteriv,rb:_emscripten_glTexStorage2D,qb:_emscripten_glTexStorage3D,Xd:_emscripten_glTexSubImage2D,hd:_emscripten_glTexSubImage3D,Dc:_emscripten_glTransformFeedbackVaryings,Wd:_emscripten_glUniform1f,Vd:_emscripten_glUniform1fv,Ud:_emscripten_glUniform1i,Td:_emscripten_glUniform1iv,sc:_emscripten_glUniform1ui,oc:_emscripten_glUniform1uiv,Sd:_emscripten_glUniform2f,Qd:_emscripten_glUniform2fv,Pd:_emscripten_glUniform2i,Od:_emscripten_glUniform2iv,rc:_emscripten_glUniform2ui,nc:_emscripten_glUniform2uiv,Nd:_emscripten_glUniform3f,Md:_emscripten_glUniform3fv,Ld:_emscripten_glUniform3i,Kd:_emscripten_glUniform3iv,qc:_emscripten_glUniform3ui,lc:_emscripten_glUniform3uiv,Jd:_emscripten_glUniform4f,Id:_emscripten_glUniform4fv,Hd:_emscripten_glUniform4i,Fd:_emscripten_glUniform4iv,pc:_emscripten_glUniform4ui,kc:_emscripten_glUniform4uiv,_b:_emscripten_glUniformBlockBinding,Ed:_emscripten_glUniformMatrix2fv,Wc:_emscripten_glUniformMatrix2x3fv,Uc:_emscripten_glUniformMatrix2x4fv,Dd:_emscripten_glUniformMatrix3fv,Vc:_emscripten_glUniformMatrix3x2fv,Sc:_emscripten_glUniformMatrix3x4fv,Cd:_emscripten_glUniformMatrix4fv,Tc:_emscripten_glUniformMatrix4x2fv,Qc:_emscripten_glUniformMatrix4x3fv,Bd:_emscripten_glUseProgram,Ad:_emscripten_glValidateProgram,zd:_emscripten_glVertexAttrib1f,yd:_emscripten_glVertexAttrib1fv,xd:_emscripten_glVertexAttrib2f,wd:_emscripten_glVertexAttrib2fv,vd:_emscripten_glVertexAttrib3f,ud:_emscripten_glVertexAttrib3fv,td:_emscripten_glVertexAttrib4f,sd:_emscripten_glVertexAttrib4fv,Db:_emscripten_glVertexAttribDivisor,ag:_emscripten_glVertexAttribDivisorANGLE,nb:_emscripten_glVertexAttribDivisorARB,pd:_emscripten_glVertexAttribDivisorEXT,ob:_emscripten_glVertexAttribDivisorNV,yc:_emscripten_glVertexAttribI4i,wc:_emscripten_glVertexAttribI4iv,xc:_emscripten_glVertexAttribI4ui,vc:_emscripten_glVertexAttribI4uiv,Bc:_emscripten_glVertexAttribIPointer,rd:_emscripten_glVertexAttribPointer,qd:_emscripten_glViewport,Sb:_emscripten_glWaitSync,G:_emscripten_has_asyncify,ib:_emscripten_memcpy_js,Fa:_emscripten_request_fullscreen_strategy,ba:_emscripten_request_pointerlock,bb:_emscripten_resize_heap,ma:_emscripten_sample_gamepad_data,J:_emscripten_set_beforeunload_callback_on_thread,V:_emscripten_set_blur_callback_on_thread,x:_emscripten_set_canvas_element_size,C:_emscripten_set_element_css_size,W:_emscripten_set_focus_callback_on_thread,M:_emscripten_set_fullscreenchange_callback_on_thread,ka:_emscripten_set_gamepadconnected_callback_on_thread,ja:_emscripten_set_gamepaddisconnected_callback_on_thread,P:_emscripten_set_keydown_callback_on_thread,N:_emscripten_set_keypress_callback_on_thread,O:_emscripten_set_keyup_callback_on_thread,Ee:_emscripten_set_main_loop,$:_emscripten_set_mousedown_callback_on_thread,Z:_emscripten_set_mouseenter_callback_on_thread,Y:_emscripten_set_mouseleave_callback_on_thread,aa:_emscripten_set_mousemove_callback_on_thread,_:_emscripten_set_mouseup_callback_on_thread,Q:_emscripten_set_pointerlockchange_callback_on_thread,L:_emscripten_set_resize_callback_on_thread,R:_emscripten_set_touchcancel_callback_on_thread,T:_emscripten_set_touchend_callback_on_thread,S:_emscripten_set_touchmove_callback_on_thread,U:_emscripten_set_touchstart_callback_on_thread,K:_emscripten_set_visibilitychange_callback_on_thread,X:_emscripten_set_wheel_callback_on_thread,Ga:_emscripten_set_window_title,F:_emscripten_sleep,cb:_environ_get,db:_environ_sizes_get,fa:_fd_close,eb:_fd_read,_a:_fd_seek,ga:_fd_write,Rd:invoke_di,ld:invoke_dii,E:invoke_diii,da:invoke_fiii,g:invoke_i,c:invoke_ii,e:invoke_iii,i:invoke_iiii,l:invoke_iiiii,n:invoke_iiiiii,s:invoke_iiiiiii,ea:invoke_iiiiiiii,A:invoke_iiiiiiiiiiii,Ya:invoke_jiiii,j:invoke_v,k:invoke_vi,Gd:invoke_vid,d:invoke_vii,f:invoke_viii,m:invoke_viiii,t:invoke_viiiii,B:invoke_viiiiii,r:invoke_viiiiiii,w:invoke_viiiiiiiiii,z:invoke_viiiiiiiiiiiiiii,$a:_strftime_l};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["fg"])();var ___cxa_free_exception=a0=>(___cxa_free_exception=wasmExports["__cxa_free_exception"])(a0);var _main=Module["_main"]=(a0,a1)=>(_main=Module["_main"]=wasmExports["hg"])(a0,a1);var _malloc=a0=>(_malloc=wasmExports["ig"])(a0);var _setThrew=(a0,a1)=>(_setThrew=wasmExports["jg"])(a0,a1);var setTempRet0=a0=>(setTempRet0=wasmExports["kg"])(a0);var stackSave=()=>(stackSave=wasmExports["lg"])();var stackRestore=a0=>(stackRestore=wasmExports["mg"])(a0);var stackAlloc=a0=>(stackAlloc=wasmExports["ng"])(a0);var ___cxa_decrement_exception_refcount=a0=>(___cxa_decrement_exception_refcount=wasmExports["og"])(a0);var ___cxa_increment_exception_refcount=a0=>(___cxa_increment_exception_refcount=wasmExports["pg"])(a0);var ___cxa_can_catch=(a0,a1,a2)=>(___cxa_can_catch=wasmExports["qg"])(a0,a1,a2);var ___cxa_is_pointer_type=a0=>(___cxa_is_pointer_type=wasmExports["rg"])(a0);var dynCall_jiji=Module["dynCall_jiji"]=(a0,a1,a2,a3,a4)=>(dynCall_jiji=Module["dynCall_jiji"]=wasmExports["sg"])(a0,a1,a2,a3,a4);var dynCall_ji=Module["dynCall_ji"]=(a0,a1)=>(dynCall_ji=Module["dynCall_ji"]=wasmExports["tg"])(a0,a1);var dynCall_viijii=Module["dynCall_viijii"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_viijii=Module["dynCall_viijii"]=wasmExports["ug"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_jiiii=Module["dynCall_jiiii"]=(a0,a1,a2,a3,a4)=>(dynCall_jiiii=Module["dynCall_jiiii"]=wasmExports["vg"])(a0,a1,a2,a3,a4);var dynCall_iiiiij=Module["dynCall_iiiiij"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_iiiiij=Module["dynCall_iiiiij"]=wasmExports["wg"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=wasmExports["xg"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)=>(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=wasmExports["yg"])(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9);var ___emscripten_embedded_file_data=Module["___emscripten_embedded_file_data"]=406764;function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_di(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vid(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_dii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_unlink"]=FS.unlink;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args=[]){var entryFunction=_main;args.unshift(thisProgram);var argc=args.length;var argv=stackAlloc((argc+1)*4);var argv_ptr=argv;args.forEach(arg=>{HEAPU32[argv_ptr>>2]=stringToUTF8OnStack(arg);argv_ptr+=4});HEAPU32[argv_ptr>>2]=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(args=arguments_){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); diff --git a/index.wasm b/index.wasm index 437ce3f712e368940b7a2a12ae688a6a27aeeba9..cbde0ccf96a9f0a8ea87c9c66631f07fc0365ced 100755 GIT binary patch delta 148038 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

1JCOI)2Y17o{z<^1b-8&k_$s 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 delta 148487 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