From a03484555780bebc442d2448af02b01520af2f6a Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Mon, 4 Sep 2023 03:04:59 -0500 Subject: [PATCH] Attached visual indicator update. --- olcCodeJam2023Entry/Unit.cpp | 12 ++++++++++++ olcCodeJam2023Entry/pge.js | 2 +- olcCodeJam2023Entry/pge.wasm | Bin 1141735 -> 1144330 bytes 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/olcCodeJam2023Entry/Unit.cpp b/olcCodeJam2023Entry/Unit.cpp index 44718f2..2cd5d57 100644 --- a/olcCodeJam2023Entry/Unit.cpp +++ b/olcCodeJam2023Entry/Unit.cpp @@ -185,6 +185,9 @@ void MemoryAllocator::Draw(TileTransformedView&game,std::vectorDecal(),0,IMAGES[SELECTION_CIRCLE]->Sprite()->Size()/2,vf2d(img.Sprite()->Size())/IMAGES[SELECTION_CIRCLE]->Sprite()->Size(),WHITE); } + if(IsAttached()){ + game.DrawRotatedDecal(GetGhostPos(),IMAGES[SELECTION_CIRCLE]->Decal(),0,IMAGES[SELECTION_CIRCLE]->Sprite()->Size()/2,vf2d(img.Sprite()->Size())/IMAGES[SELECTION_CIRCLE]->Sprite()->Size(),IsFriendly()?GREEN:RED); + } } } @@ -244,6 +247,9 @@ void RAMBank::Draw(TileTransformedView&game,std::vectorDecal(),0,IMAGES[SELECTION_CIRCLE]->Sprite()->Size()/2,vf2d(img.Sprite()->Size())/IMAGES[SELECTION_CIRCLE]->Sprite()->Size(),WHITE); } + if(IsAttached()){ + game.DrawRotatedDecal(GetGhostPos(),IMAGES[SELECTION_CIRCLE]->Decal(),0,IMAGES[SELECTION_CIRCLE]->Sprite()->Size()/2,vf2d(img.Sprite()->Size())/IMAGES[SELECTION_CIRCLE]->Sprite()->Size(),IsFriendly()?GREEN:RED); + } } void RAMBank::OnDeath(std::vector>&SOUNDS){ @@ -343,6 +349,9 @@ void _Platform::Draw(TileTransformedView&game,std::vectorDecal(),0,IMAGES[SELECTION_CIRCLE]->Sprite()->Size()/2,vf2d(img.Sprite()->Size())/IMAGES[SELECTION_CIRCLE]->Sprite()->Size(),WHITE); } + if(IsAttached()){ + game.DrawRotatedDecal(GetGhostPos(),IMAGES[SELECTION_CIRCLE]->Decal(),0,IMAGES[SELECTION_CIRCLE]->Sprite()->Size()/2,vf2d(img.Sprite()->Size())/IMAGES[SELECTION_CIRCLE]->Sprite()->Size(),IsFriendly()?GREEN:RED); + } } } @@ -527,6 +536,9 @@ void Unit::Draw(TileTransformedView&game,std::vector if(IsSelected()){ game.DrawRotatedDecal(GetGhostPos(),IMAGES[SELECTION_CIRCLE]->Decal(),0,IMAGES[SELECTION_CIRCLE]->Sprite()->Size()/2,vf2d(img.Sprite()->Size())/IMAGES[SELECTION_CIRCLE]->Sprite()->Size(),WHITE); } + if(IsAttached()){ + game.DrawRotatedDecal(GetGhostPos(),IMAGES[SELECTION_CIRCLE]->Decal(),0,IMAGES[SELECTION_CIRCLE]->Sprite()->Size()/2,vf2d(img.Sprite()->Size())/IMAGES[SELECTION_CIRCLE]->Sprite()->Size(),IsFriendly()?GREEN:RED); + } } void Unit::DrawHud(TileTransformedView&game,std::vector>&IMAGES){} diff --git a/olcCodeJam2023Entry/pge.js b/olcCodeJam2023Entry/pge.js index fecd4c1..b96e477 100644 --- a/olcCodeJam2023Entry/pge.js +++ b/olcCodeJam2023Entry/pge.js @@ -1 +1 @@ -var Module=typeof Module!="undefined"?Module:{};if(!Module.expectedDataFileDownloads){Module.expectedDataFileDownloads=0}Module.expectedDataFileDownloads++;(function(){if(Module["ENVIRONMENT_IS_PTHREAD"]||Module["$ww"])return;var loadPackage=function(metadata){var PACKAGE_PATH="";if(typeof window==="object"){PACKAGE_PATH=window["encodeURIComponent"](window.location.pathname.toString().substring(0,window.location.pathname.toString().lastIndexOf("/"))+"/")}else if(typeof process==="undefined"&&typeof location!=="undefined"){PACKAGE_PATH=encodeURIComponent(location.pathname.toString().substring(0,location.pathname.toString().lastIndexOf("/"))+"/")}var PACKAGE_NAME="pge.data";var REMOTE_PACKAGE_BASE="pge.data";if(typeof Module["locateFilePackage"]==="function"&&!Module["locateFile"]){Module["locateFile"]=Module["locateFilePackage"];err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")}var REMOTE_PACKAGE_NAME=Module["locateFile"]?Module["locateFile"](REMOTE_PACKAGE_BASE,""):REMOTE_PACKAGE_BASE;var REMOTE_PACKAGE_SIZE=metadata["remote_package_size"];function fetchRemotePackage(packageName,packageSize,callback,errback){if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){require("fs").readFile(packageName,function(err,contents){if(err){errback(err)}else{callback(contents.buffer)}});return}var xhr=new XMLHttpRequest;xhr.open("GET",packageName,true);xhr.responseType="arraybuffer";xhr.onprogress=function(event){var url=packageName;var size=packageSize;if(event.total)size=event.total;if(event.loaded){if(!xhr.addedTotal){xhr.addedTotal=true;if(!Module.dataFileDownloads)Module.dataFileDownloads={};Module.dataFileDownloads[url]={loaded:event.loaded,total:size}}else{Module.dataFileDownloads[url].loaded=event.loaded}var total=0;var loaded=0;var num=0;for(var download in Module.dataFileDownloads){var data=Module.dataFileDownloads[download];total+=data.total;loaded+=data.loaded;num++}total=Math.ceil(total*Module.expectedDataFileDownloads/num);if(Module["setStatus"])Module["setStatus"](`Downloading data... (${loaded}/${total})`)}else if(!Module.dataFileDownloads){if(Module["setStatus"])Module["setStatus"]("Downloading data...")}};xhr.onerror=function(event){throw new Error("NetworkError for: "+packageName)};xhr.onload=function(event){if(xhr.status==200||xhr.status==304||xhr.status==206||xhr.status==0&&xhr.response){var packageData=xhr.response;callback(packageData)}else{throw new Error(xhr.statusText+" : "+xhr.responseURL)}};xhr.send(null)}function handleError(error){console.error("package error:",error)}var fetchedCallback=null;var fetched=Module["getPreloadedPackage"]?Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE):null;if(!fetched)fetchRemotePackage(REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE,function(data){if(fetchedCallback){fetchedCallback(data);fetchedCallback=null}else{fetched=data}},handleError);function runWithFS(){function assert(check,msg){if(!check)throw msg+(new Error).stack}Module["FS_createPath"]("/","assets",true,true);function DataRequest(start,end,audio){this.start=start;this.end=end;this.audio=audio}DataRequest.prototype={requests:{},open:function(mode,name){this.name=name;this.requests[name]=this;Module["addRunDependency"](`fp ${this.name}`)},send:function(){},onload:function(){var byteArray=this.byteArray.subarray(this.start,this.end);this.finish(byteArray)},finish:function(byteArray){var that=this;Module["FS_createDataFile"](this.name,null,byteArray,true,true,true);Module["removeRunDependency"](`fp ${that.name}`);this.requests[this.name]=null}};var files=metadata["files"];for(var i=0;i{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,setWindowTitle;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}});var nodeMajor=process.versions.node.split(".")[0];if(nodeMajor<15){process.on("unhandledRejection",reason=>{throw reason})}quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow};Module["inspect"]=()=>"[Emscripten Module object]"}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.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{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)}}setWindowTitle=title=>document.title=title}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"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}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["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}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++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){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,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="pge.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}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(()=>getBinary(binaryFile))}else{if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}}return Promise.resolve().then(()=>getBinary(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>{return WebAssembly.instantiate(binary,imports)}).then(instance=>{return instance}).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)})})}else{return instantiateArrayBuffer(binaryFile,imports,callback)}}function createWasm(){var info={"env":wasmImports,"wasi_snapshot_preview1":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["memory"];updateMemoryViews();wasmTable=Module["asm"]["__indirect_function_table"];addOnInit(Module["asm"]["__wasm_call_ctors"]);removeRunDependency("wasm-instantiate");return exports}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={136268:()=>{return Module.canvas.getBoundingClientRect().left},136320:()=>{return Module.canvas.getBoundingClientRect().top},136371:()=>{return Module.olc_MOUSEX},136399:()=>{return Module.olc_MOUSEY},136427:()=>{return Module.olc_MOUSEDOWN},136457:()=>{return Module.olc_MOUSEUP},136485:()=>{Module.olc_MOUSEDOWN=-1},136511:()=>{Module.olc_MOUSEUP=-1},136535:()=>{window.onunload=Module._olc_OnPageUnload},136579:($0,$1)=>{Module.olc_AspectRatio=$0/$1;Module.olc_MOUSEDOWN=-1;Module.olc_MOUSEUP=-1;onmousemove=function(e){Module.olc_MOUSEX=e.clientX;Module.olc_MOUSEY=e.clientY};onmousedown=function(e){Module.olc_MOUSEDOWN=e.button};onmouseup=function(e){Module.olc_MOUSEUP=e.button};ontouchmove=function(e){Module.olc_MOUSEX=e.touches[0].clientX;Module.olc_MOUSEY=e.touches[0].clientY};ontouchstart=function(e){Module.olc_MOUSEX=e.touches[0].clientX;Module.olc_MOUSEY=e.touches[0].clientY};Module.olc_AssumeDefaultShells=document.querySelectorAll(".emscripten").length>=3?true:false;var olc_ResizeHandler=function(){let isFullscreen=document.fullscreenElement!=null;let width=isFullscreen?window.innerWidth:Module.canvas.parentNode.clientWidth;let height=isFullscreen?window.innerHeight:Module.canvas.parentNode.clientHeight;let viewWidth=width;let viewHeight=width/Module.olc_AspectRatio;if(viewHeight>height){viewWidth=height*Module.olc_AspectRatio;viewHeight=height}viewWidth=parseInt(viewWidth);viewHeight=parseInt(viewHeight);setTimeout(function(){if(Module.olc_AssumeDefaultShells)Module.canvas.parentNode.setAttribute("style","width: 100%; height: 70vh; margin-left: auto; margin-right: auto;");Module.canvas.setAttribute("width",viewWidth);Module.canvas.setAttribute("height",viewHeight);Module.canvas.setAttribute("style",`width: ${viewWidth}px; height: ${viewHeight}px;`);Module._olc_PGE_UpdateWindowSize(viewWidth,viewHeight);Module.canvas.focus()},200)};var olc_Init=function(){if(Module.olc_AspectRatio===undefined){setTimeout(function(){Module.olc_Init()},50);return}let resizeObserver=new ResizeObserver(function(entries){Module.olc_ResizeHandler()}).observe(Module.canvas.parentNode);let mutationObserver=new MutationObserver(function(mutationsList,observer){setTimeout(function(){Module.olc_ResizeHandler()},200)}).observe(Module.canvas.parentNode,{attributes:false,childList:true,subtree:false});window.addEventListener("fullscreenchange",function(e){setTimeout(function(){Module.olc_ResizeHandler()},200)})};Module.olc_ResizeHandler=Module.olc_ResizeHandler!=undefined?Module.olc_ResizeHandler:olc_ResizeHandler;Module.olc_Init=Module.olc_Init!=undefined?Module.olc_Init:olc_Init;Module.olc_Init()},138973:()=>{if(typeof AudioContext!=="undefined"){return true}else if(typeof webkitAudioContext!=="undefined"){return true}return false},139120:()=>{if(typeof navigator.mediaDevices!=="undefined"&&typeof navigator.mediaDevices.getUserMedia!=="undefined"){return true}else if(typeof navigator.webkitGetUserMedia!=="undefined"){return true}return false},139354:$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},139847:()=>{var SDL2=Module["SDL2"];return SDL2.audioContext.sampleRate},139915:($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)}},141567:($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"])},141977:($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]}}},143062:$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},146692:$0=>{if(Module["canvas"]){Module["canvas"].style["cursor"]=UTF8ToString($0)}},146775:()=>{if(Module["canvas"]){Module["canvas"].style["cursor"]="none"}},146844:()=>{return window.innerWidth},146874:()=>{return window.innerHeight}};function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}function listenOnce(object,event,func){object.addEventListener(event,func,{"once":true})}function 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()})}})})}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function dynCall(sig,ptr,args){if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr).apply(null,args);return rtn}function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){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}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function ___assert_fail(condition,filename,line,func){abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}var exceptionCaught=[];var exceptionLast=0;var uncaughtExceptionCount=0;function ___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}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){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}}function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}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:function(){var paths=Array.prototype.slice.call(arguments);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};function 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")}function randomFill(view){return(randomFill=initRandomFill())(view)}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[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=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}function 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 TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.fsync(stream.tty)},fsync:function(stream){stream.tty.ops.fsync(stream.tty)},read:function(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){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){abort()}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{assert(arrayBuffer,`Loading data file "${url}" failed (no 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 preloadPlugins=Module["preloadPlugins"]||[];function FS_handledByPreloadPlugin(byteArray,fullname,finish,onerror){if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled}function 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){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}}function 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}function 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:null,genericErrors:{},filesystems:null,syncFSRequests:0,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,parent)}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=>{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)},getStream:fd=>FS.streams[fd],createStream:(stream,fd=-1)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}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},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){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.apply(check,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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS_modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error(`Invalid encoding type "${opts.encoding}"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.name="ErrnoError";this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();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;FS.ensureErrnoError();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;i{var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_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};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;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});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]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});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 SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(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:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAPU32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>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+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>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+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>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+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>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+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];HEAPU32[buf+96>>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+104>>2]=tempI64[0],HEAP32[buf+108>>2]=tempI64[1];return 0},doMsync:function(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:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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}var newStream;newStream=FS.createStream(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 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{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 nowIsMonotonic=true;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function __emscripten_throw_longjmp(){throw Infinity}function _abort(){abort("")}function _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 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);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,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){global.performance=require("perf_hooks").performance}_emscripten_get_now=()=>performance.now();function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");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}}out('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");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&&SDL.audio.queueNewAudioData)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"}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function _proc_exit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}function exitJS(status,implicit){EXITSTATUS=status;_proc_exit(status)}var _exit=exitJS;function maybeExit(){if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}}function callUserCallback(func){if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}}function safeSetTimeout(func,timeout){return setTimeout(()=>{callUserCallback(func)},timeout)}var Browser={mainLoop:{running:false,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){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:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining{assert(img.complete,"Image "+name+" could not be decoded");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);if(onload)onload(byteArray)};img.onerror=event=>{out("Image "+url+" could not be decoded");if(onerror)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;if(onload)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:function(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:2};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){if(!useWebGL)assert(typeof GLctx=="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(callback=>callback());Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(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)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])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:function(){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:function(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:function(func){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeSetTimeout:function(func,timeout){return safeSetTimeout(func,timeout)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(()=>{callUserCallback(func)})},getMimetype:function(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:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(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:{},calculateMouseEvent:function(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{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;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};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];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(listener=>listener(canvas.width,canvas.height))},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){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:function(){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:function(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){HEAP32[config>>2]=62002}EGL.setErrorCode(12288);return 1}};function _eglBindAPI(api){if(api==12448){EGL.setErrorCode(12288);return 1}EGL.setErrorCode(12300);return 0}function _eglChooseConfig(display,attrib_list,configs,config_size,numConfigs){return EGL.chooseConfig(display,attrib_list,configs,config_size,numConfigs)}function webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(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=canvas.getContext("webgl2",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(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:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(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:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.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);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};function _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}}function _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}function _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}function _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}function _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}}function _eglGetDisplay(nativeDisplayType){EGL.setErrorCode(12288);return 62e3}function _eglGetError(){return EGL.errorCode}function _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}function _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}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function stringToNewUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret}function _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}function _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}function _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}function _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}function _eglWaitClient(){EGL.setErrorCode(12288);return 1}var _eglWaitGL=_eglWaitClient;function _eglWaitNative(nativeEngineId){EGL.setErrorCode(12288);return 1}var readEmAsmArgsArray=[];function readEmAsmArgs(sigPtr,buf){readEmAsmArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){buf+=ch!=105&buf;readEmAsmArgsArray.push(ch==105?HEAP32[buf]:HEAPF64[buf++>>1]);++buf}return readEmAsmArgsArray}function runEmAsmFunction(code,sigPtr,argbuf){var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_asm_const_int(code,sigPtr,argbuf){return runEmAsmFunction(code,sigPtr,argbuf)}function runMainThreadEmAsm(code,sigPtr,argbuf,sync){var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_asm_const_int_sync_on_main_thread(code,sigPtr,argbuf){return runMainThreadEmAsm(code,sigPtr,argbuf,1)}function _emscripten_cancel_main_loop(){Browser.mainLoop.pause();Browser.mainLoop.func=null}function _emscripten_date_now(){return Date.now()}function withStackSave(f){var stack=stackSave();var ret=f();stackRestore(stack);return ret}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _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}function stringToUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret}function getCanvasElementSize(target){return withStackSave(function(){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})}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function setCanvasElementSize(target,width,height){if(!target.controlTransferredOffscreen){target.width=width;target.height=height}else{withStackSave(function(){var targetInt=stringToUTF8OnStack(target.id);_emscripten_set_canvas_element_size(targetInt,width,height)})}}function 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}function setLetterbox(element,topBottom,leftRight){element.style.paddingLeft=element.style.paddingRight=leftRight+"px";element.style.paddingTop=element.style.paddingBottom=topBottom+"px"}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0}function 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)}function _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}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function _emscripten_get_screen_size(width,height){HEAP32[width>>2]=screen.width;HEAP32[height>>2]=screen.height}function _glActiveTexture(x0){GLctx.activeTexture(x0)}var _emscripten_glActiveTexture=_glActiveTexture;function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}var _emscripten_glAttachShader=_glAttachShader;function _glBeginQuery(target,id){GLctx.beginQuery(target,GL.queries[id])}var _emscripten_glBeginQuery=_glBeginQuery;function _glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.queries[id])}var _emscripten_glBeginQueryEXT=_glBeginQueryEXT;function _glBeginTransformFeedback(x0){GLctx.beginTransformFeedback(x0)}var _emscripten_glBeginTransformFeedback=_glBeginTransformFeedback;function _glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}var _emscripten_glBindAttribLocation=_glBindAttribLocation;function _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;function _glBindBufferBase(target,index,buffer){GLctx.bindBufferBase(target,index,GL.buffers[buffer])}var _emscripten_glBindBufferBase=_glBindBufferBase;function _glBindBufferRange(target,index,buffer,offset,ptrsize){GLctx.bindBufferRange(target,index,GL.buffers[buffer],offset,ptrsize)}var _emscripten_glBindBufferRange=_glBindBufferRange;function _glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}var _emscripten_glBindFramebuffer=_glBindFramebuffer;function _glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}var _emscripten_glBindRenderbuffer=_glBindRenderbuffer;function _glBindSampler(unit,sampler){GLctx.bindSampler(unit,GL.samplers[sampler])}var _emscripten_glBindSampler=_glBindSampler;function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}var _emscripten_glBindTexture=_glBindTexture;function _glBindTransformFeedback(target,id){GLctx.bindTransformFeedback(target,GL.transformFeedbacks[id])}var _emscripten_glBindTransformFeedback=_glBindTransformFeedback;function _glBindVertexArray(vao){GLctx.bindVertexArray(GL.vaos[vao])}var _emscripten_glBindVertexArray=_glBindVertexArray;var _glBindVertexArrayOES=_glBindVertexArray;var _emscripten_glBindVertexArrayOES=_glBindVertexArrayOES;function _glBlendColor(x0,x1,x2,x3){GLctx.blendColor(x0,x1,x2,x3)}var _emscripten_glBlendColor=_glBlendColor;function _glBlendEquation(x0){GLctx.blendEquation(x0)}var _emscripten_glBlendEquation=_glBlendEquation;function _glBlendEquationSeparate(x0,x1){GLctx.blendEquationSeparate(x0,x1)}var _emscripten_glBlendEquationSeparate=_glBlendEquationSeparate;function _glBlendFunc(x0,x1){GLctx.blendFunc(x0,x1)}var _emscripten_glBlendFunc=_glBlendFunc;function _glBlendFuncSeparate(x0,x1,x2,x3){GLctx.blendFuncSeparate(x0,x1,x2,x3)}var _emscripten_glBlendFuncSeparate=_glBlendFuncSeparate;function _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;function _glBufferData(target,size,data,usage){if(true){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}}else{GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}}var _emscripten_glBufferData=_glBufferData;function _glBufferSubData(target,offset,size,data){if(true){size&&GLctx.bufferSubData(target,offset,HEAPU8,data,size);return}GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}var _emscripten_glBufferSubData=_glBufferSubData;function _glCheckFramebufferStatus(x0){return GLctx.checkFramebufferStatus(x0)}var _emscripten_glCheckFramebufferStatus=_glCheckFramebufferStatus;function _glClear(x0){GLctx.clear(x0)}var _emscripten_glClear=_glClear;function _glClearBufferfi(x0,x1,x2,x3){GLctx.clearBufferfi(x0,x1,x2,x3)}var _emscripten_glClearBufferfi=_glClearBufferfi;function _glClearBufferfv(buffer,drawbuffer,value){GLctx.clearBufferfv(buffer,drawbuffer,HEAPF32,value>>2)}var _emscripten_glClearBufferfv=_glClearBufferfv;function _glClearBufferiv(buffer,drawbuffer,value){GLctx.clearBufferiv(buffer,drawbuffer,HEAP32,value>>2)}var _emscripten_glClearBufferiv=_glClearBufferiv;function _glClearBufferuiv(buffer,drawbuffer,value){GLctx.clearBufferuiv(buffer,drawbuffer,HEAPU32,value>>2)}var _emscripten_glClearBufferuiv=_glClearBufferuiv;function _glClearColor(x0,x1,x2,x3){GLctx.clearColor(x0,x1,x2,x3)}var _emscripten_glClearColor=_glClearColor;function _glClearDepthf(x0){GLctx.clearDepth(x0)}var _emscripten_glClearDepthf=_glClearDepthf;function _glClearStencil(x0){GLctx.clearStencil(x0)}var _emscripten_glClearStencil=_glClearStencil;function convertI32PairToI53(lo,hi){return(lo>>>0)+hi*4294967296}function _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;function _glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}var _emscripten_glColorMask=_glColorMask;function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}var _emscripten_glCompileShader=_glCompileShader;function _glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){if(true){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;function _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;function _glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){if(true){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;function _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;function _glCopyBufferSubData(x0,x1,x2,x3,x4){GLctx.copyBufferSubData(x0,x1,x2,x3,x4)}var _emscripten_glCopyBufferSubData=_glCopyBufferSubData;function _glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx.copyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7)}var _emscripten_glCopyTexImage2D=_glCopyTexImage2D;function _glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx.copyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7)}var _emscripten_glCopyTexSubImage2D=_glCopyTexSubImage2D;function _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;function _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;function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}var _emscripten_glCreateShader=_glCreateShader;function _glCullFace(x0){GLctx.cullFace(x0)}var _emscripten_glCullFace=_glCullFace;function _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;function _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;function _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;function _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;function _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;function _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;function _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;function _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;function _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;function _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;function _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;function _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;function _glDepthFunc(x0){GLctx.depthFunc(x0)}var _emscripten_glDepthFunc=_glDepthFunc;function _glDepthMask(flag){GLctx.depthMask(!!flag)}var _emscripten_glDepthMask=_glDepthMask;function _glDepthRangef(x0,x1){GLctx.depthRange(x0,x1)}var _emscripten_glDepthRangef=_glDepthRangef;function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}var _emscripten_glDetachShader=_glDetachShader;function _glDisable(x0){GLctx.disable(x0)}var _emscripten_glDisable=_glDisable;function _glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}var _emscripten_glDisableVertexAttribArray=_glDisableVertexAttribArray;function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}var _emscripten_glDrawArrays=_glDrawArrays;function _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=[];function _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;function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}var _emscripten_glDrawElements=_glDrawElements;function _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;function _glDrawRangeElements(mode,start,end,count,type,indices){_glDrawElements(mode,count,type,indices)}var _emscripten_glDrawRangeElements=_glDrawRangeElements;function _glEnable(x0){GLctx.enable(x0)}var _emscripten_glEnable=_glEnable;function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}var _emscripten_glEnableVertexAttribArray=_glEnableVertexAttribArray;function _glEndQuery(x0){GLctx.endQuery(x0)}var _emscripten_glEndQuery=_glEndQuery;function _glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)}var _emscripten_glEndQueryEXT=_glEndQueryEXT;function _glEndTransformFeedback(){GLctx.endTransformFeedback()}var _emscripten_glEndTransformFeedback=_glEndTransformFeedback;function _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;function _glFinish(){GLctx.finish()}var _emscripten_glFinish=_glFinish;function _glFlush(){GLctx.flush()}var _emscripten_glFlush=_glFlush;function _glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}var _emscripten_glFramebufferRenderbuffer=_glFramebufferRenderbuffer;function _glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}var _emscripten_glFramebufferTexture2D=_glFramebufferTexture2D;function _glFramebufferTextureLayer(target,attachment,texture,level,layer){GLctx.framebufferTextureLayer(target,attachment,GL.textures[texture],level,layer)}var _emscripten_glFramebufferTextureLayer=_glFramebufferTextureLayer;function _glFrontFace(x0){GLctx.frontFace(x0)}var _emscripten_glFrontFace=_glFrontFace;function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i>2]=id}}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}var _emscripten_glGenBuffers=_glGenBuffers;function _glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}var _emscripten_glGenFramebuffers=_glGenFramebuffers;function _glGenQueries(n,ids){__glGenObject(n,ids,"createQuery",GL.queries)}var _emscripten_glGenQueries=_glGenQueries;function _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;function _glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}var _emscripten_glGenRenderbuffers=_glGenRenderbuffers;function _glGenSamplers(n,samplers){__glGenObject(n,samplers,"createSampler",GL.samplers)}var _emscripten_glGenSamplers=_glGenSamplers;function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}var _emscripten_glGenTextures=_glGenTextures;function _glGenTransformFeedbacks(n,ids){__glGenObject(n,ids,"createTransformFeedback",GL.transformFeedbacks)}var _emscripten_glGenTransformFeedbacks=_glGenTransformFeedbacks;function _glGenVertexArrays(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}var _emscripten_glGenVertexArrays=_glGenVertexArrays;var _glGenVertexArraysOES=_glGenVertexArrays;var _emscripten_glGenVertexArraysOES=_glGenVertexArraysOES;function _glGenerateMipmap(x0){GLctx.generateMipmap(x0)}var _emscripten_glGenerateMipmap=_glGenerateMipmap;function __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}}function _glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}var _emscripten_glGetActiveAttrib=_glGetActiveAttrib;function _glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}var _emscripten_glGetActiveUniform=_glGetActiveUniform;function _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;function _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;function _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;function _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;function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}var _emscripten_glGetAttribLocation=_glGetAttribLocation;function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function 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}var exts=GLctx.getSupportedExtensions()||[];ret=2*exts.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>>0]=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>>0]=ret?1:0;break}}function _glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4)}var _emscripten_glGetBooleanv=_glGetBooleanv;function _glGetBufferParameteri64v(target,value,data){if(!data){GL.recordError(1281);return}writeI53ToI64(data,GLctx.getBufferParameter(target,value))}var _emscripten_glGetBufferParameteri64v=_glGetBufferParameteri64v;function _glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)}var _emscripten_glGetBufferParameteriv=_glGetBufferParameteriv;function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}var _emscripten_glGetError=_glGetError;function _glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}var _emscripten_glGetFloatv=_glGetFloatv;function _glGetFragDataLocation(program,name){return GLctx.getFragDataLocation(GL.programs[program],UTF8ToString(name))}var _emscripten_glGetFragDataLocation=_glGetFragDataLocation;function _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;function 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>>0]=ret?1:0;break;default:throw"internal emscriptenWebGLGetIndexed() error, bad type: "+type}}function _glGetInteger64i_v(target,index,data){emscriptenWebGLGetIndexed(target,index,data,1)}var _emscripten_glGetInteger64i_v=_glGetInteger64i_v;function _glGetInteger64v(name_,p){emscriptenWebGLGet(name_,p,1)}var _emscripten_glGetInteger64v=_glGetInteger64v;function _glGetIntegeri_v(target,index,data){emscriptenWebGLGetIndexed(target,index,data,0)}var _emscripten_glGetIntegeri_v=_glGetIntegeri_v;function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}var _emscripten_glGetIntegerv=_glGetIntegerv;function _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;function _glGetProgramBinary(program,bufSize,length,binaryFormat,binary){GL.recordError(1282)}var _emscripten_glGetProgramBinary=_glGetProgramBinary;function _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;function _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;function _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;function _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;function _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;function _glGetQueryiv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getQuery(target,pname)}var _emscripten_glGetQueryiv=_glGetQueryiv;function _glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)}var _emscripten_glGetQueryivEXT=_glGetQueryivEXT;function _glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)}var _emscripten_glGetRenderbufferParameteriv=_glGetRenderbufferParameteriv;function _glGetSamplerParameterfv(sampler,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)}var _emscripten_glGetSamplerParameterfv=_glGetSamplerParameterfv;function _glGetSamplerParameteriv(sampler,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)}var _emscripten_glGetSamplerParameteriv=_glGetSamplerParameteriv;function _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;function _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;function _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;function _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;function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=s&&stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);if(true)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;function _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=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));exts=exts.map(function(e){return stringToNewUTF8(e)});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;function _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;function _glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)}var _emscripten_glGetTexParameterfv=_glGetTexParameterfv;function _glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)}var _emscripten_glGetTexParameteriv=_glGetTexParameteriv;function _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;function _glGetUniformBlockIndex(program,uniformBlockName){return GLctx.getUniformBlockIndex(GL.programs[program],UTF8ToString(uniformBlockName))}var _emscripten_glGetUniformBlockIndex=_glGetUniformBlockIndex;function _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;function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex0?"["+webglLoc+"]":""))}return webglLoc}else{GL.recordError(1282)}}function 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}}}}function _glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)}var _emscripten_glGetUniformfv=_glGetUniformfv;function _glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}var _emscripten_glGetUniformiv=_glGetUniformiv;function _glGetUniformuiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}var _emscripten_glGetUniformuiv=_glGetUniformuiv;function 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}}}}function _glGetVertexAttribIiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,0)}var _emscripten_glGetVertexAttribIiv=_glGetVertexAttribIiv;var _glGetVertexAttribIuiv=_glGetVertexAttribIiv;var _emscripten_glGetVertexAttribIuiv=_glGetVertexAttribIuiv;function _glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)}var _emscripten_glGetVertexAttribPointerv=_glGetVertexAttribPointerv;function _glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2)}var _emscripten_glGetVertexAttribfv=_glGetVertexAttribfv;function _glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}var _emscripten_glGetVertexAttribiv=_glGetVertexAttribiv;function _glHint(x0,x1){GLctx.hint(x0,x1)}var _emscripten_glHint=_glHint;function _glInvalidateFramebuffer(target,numAttachments,attachments){var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateFramebuffer(target,list)}var _emscripten_glInvalidateFramebuffer=_glInvalidateFramebuffer;function _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;function _glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)}var _emscripten_glIsBuffer=_glIsBuffer;function _glIsEnabled(x0){return GLctx.isEnabled(x0)}var _emscripten_glIsEnabled=_glIsEnabled;function _glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)}var _emscripten_glIsFramebuffer=_glIsFramebuffer;function _glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)}var _emscripten_glIsProgram=_glIsProgram;function _glIsQuery(id){var query=GL.queries[id];if(!query)return 0;return GLctx.isQuery(query)}var _emscripten_glIsQuery=_glIsQuery;function _glIsQueryEXT(id){var query=GL.queries[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)}var _emscripten_glIsQueryEXT=_glIsQueryEXT;function _glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)}var _emscripten_glIsRenderbuffer=_glIsRenderbuffer;function _glIsSampler(id){var sampler=GL.samplers[id];if(!sampler)return 0;return GLctx.isSampler(sampler)}var _emscripten_glIsSampler=_glIsSampler;function _glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)}var _emscripten_glIsShader=_glIsShader;function _glIsSync(sync){return GLctx.isSync(GL.syncs[sync])}var _emscripten_glIsSync=_glIsSync;function _glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)}var _emscripten_glIsTexture=_glIsTexture;function _glIsTransformFeedback(id){return GLctx.isTransformFeedback(GL.transformFeedbacks[id])}var _emscripten_glIsTransformFeedback=_glIsTransformFeedback;function _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;function _glLineWidth(x0){GLctx.lineWidth(x0)}var _emscripten_glLineWidth=_glLineWidth;function _glLinkProgram(program){program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}}var _emscripten_glLinkProgram=_glLinkProgram;function _glPauseTransformFeedback(){GLctx.pauseTransformFeedback()}var _emscripten_glPauseTransformFeedback=_glPauseTransformFeedback;function _glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}var _emscripten_glPixelStorei=_glPixelStorei;function _glPolygonOffset(x0,x1){GLctx.polygonOffset(x0,x1)}var _emscripten_glPolygonOffset=_glPolygonOffset;function _glProgramBinary(program,binaryFormat,binary,length){GL.recordError(1280)}var _emscripten_glProgramBinary=_glProgramBinary;function _glProgramParameteri(program,pname,value){GL.recordError(1280)}var _emscripten_glProgramParameteri=_glProgramParameteri;function _glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.queries[id],target)}var _emscripten_glQueryCounterEXT=_glQueryCounterEXT;function _glReadBuffer(x0){GLctx.readBuffer(x0)}var _emscripten_glReadBuffer=_glReadBuffer;function 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}function 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}function 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}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(true){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}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;function _glReleaseShaderCompiler(){}var _emscripten_glReleaseShaderCompiler=_glReleaseShaderCompiler;function _glRenderbufferStorage(x0,x1,x2,x3){GLctx.renderbufferStorage(x0,x1,x2,x3)}var _emscripten_glRenderbufferStorage=_glRenderbufferStorage;function _glRenderbufferStorageMultisample(x0,x1,x2,x3,x4){GLctx.renderbufferStorageMultisample(x0,x1,x2,x3,x4)}var _emscripten_glRenderbufferStorageMultisample=_glRenderbufferStorageMultisample;function _glResumeTransformFeedback(){GLctx.resumeTransformFeedback()}var _emscripten_glResumeTransformFeedback=_glResumeTransformFeedback;function _glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)}var _emscripten_glSampleCoverage=_glSampleCoverage;function _glSamplerParameterf(sampler,pname,param){GLctx.samplerParameterf(GL.samplers[sampler],pname,param)}var _emscripten_glSamplerParameterf=_glSamplerParameterf;function _glSamplerParameterfv(sampler,pname,params){var param=HEAPF32[params>>2];GLctx.samplerParameterf(GL.samplers[sampler],pname,param)}var _emscripten_glSamplerParameterfv=_glSamplerParameterfv;function _glSamplerParameteri(sampler,pname,param){GLctx.samplerParameteri(GL.samplers[sampler],pname,param)}var _emscripten_glSamplerParameteri=_glSamplerParameteri;function _glSamplerParameteriv(sampler,pname,params){var param=HEAP32[params>>2];GLctx.samplerParameteri(GL.samplers[sampler],pname,param)}var _emscripten_glSamplerParameteriv=_glSamplerParameteriv;function _glScissor(x0,x1,x2,x3){GLctx.scissor(x0,x1,x2,x3)}var _emscripten_glScissor=_glScissor;function _glShaderBinary(count,shaders,binaryformat,binary,length){GL.recordError(1280)}var _emscripten_glShaderBinary=_glShaderBinary;function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}var _emscripten_glShaderSource=_glShaderSource;function _glStencilFunc(x0,x1,x2){GLctx.stencilFunc(x0,x1,x2)}var _emscripten_glStencilFunc=_glStencilFunc;function _glStencilFuncSeparate(x0,x1,x2,x3){GLctx.stencilFuncSeparate(x0,x1,x2,x3)}var _emscripten_glStencilFuncSeparate=_glStencilFuncSeparate;function _glStencilMask(x0){GLctx.stencilMask(x0)}var _emscripten_glStencilMask=_glStencilMask;function _glStencilMaskSeparate(x0,x1){GLctx.stencilMaskSeparate(x0,x1)}var _emscripten_glStencilMaskSeparate=_glStencilMaskSeparate;function _glStencilOp(x0,x1,x2){GLctx.stencilOp(x0,x1,x2)}var _emscripten_glStencilOp=_glStencilOp;function _glStencilOpSeparate(x0,x1,x2,x3){GLctx.stencilOpSeparate(x0,x1,x2,x3)}var _emscripten_glStencilOpSeparate=_glStencilOpSeparate;function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){if(true){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,pixels>>heapAccessShiftForWebGLHeap(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;function _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,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,null)}}var _emscripten_glTexImage3D=_glTexImage3D;function _glTexParameterf(x0,x1,x2){GLctx.texParameterf(x0,x1,x2)}var _emscripten_glTexParameterf=_glTexParameterf;function _glTexParameterfv(target,pname,params){var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)}var _emscripten_glTexParameterfv=_glTexParameterfv;function _glTexParameteri(x0,x1,x2){GLctx.texParameteri(x0,x1,x2)}var _emscripten_glTexParameteri=_glTexParameteri;function _glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)}var _emscripten_glTexParameteriv=_glTexParameteriv;function _glTexStorage2D(x0,x1,x2,x3,x4){GLctx.texStorage2D(x0,x1,x2,x3,x4)}var _emscripten_glTexStorage2D=_glTexStorage2D;function _glTexStorage3D(x0,x1,x2,x3,x4,x5){GLctx.texStorage3D(x0,x1,x2,x3,x4,x5)}var _emscripten_glTexStorage3D=_glTexStorage3D;function _glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){if(true){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,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,null)}return}var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}var _emscripten_glTexSubImage2D=_glTexSubImage2D;function _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,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,null)}}var _emscripten_glTexSubImage3D=_glTexSubImage3D;function _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;function _glUniform1f(location,v0){GLctx.uniform1f(webglGetUniformLocation(location),v0)}var _emscripten_glUniform1f=_glUniform1f;function _glUniform1fv(location,count,value){count&&GLctx.uniform1fv(webglGetUniformLocation(location),HEAPF32,value>>2,count)}var _emscripten_glUniform1fv=_glUniform1fv;function _glUniform1i(location,v0){GLctx.uniform1i(webglGetUniformLocation(location),v0)}var _emscripten_glUniform1i=_glUniform1i;function _glUniform1iv(location,count,value){count&&GLctx.uniform1iv(webglGetUniformLocation(location),HEAP32,value>>2,count)}var _emscripten_glUniform1iv=_glUniform1iv;function _glUniform1ui(location,v0){GLctx.uniform1ui(webglGetUniformLocation(location),v0)}var _emscripten_glUniform1ui=_glUniform1ui;function _glUniform1uiv(location,count,value){count&&GLctx.uniform1uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count)}var _emscripten_glUniform1uiv=_glUniform1uiv;function _glUniform2f(location,v0,v1){GLctx.uniform2f(webglGetUniformLocation(location),v0,v1)}var _emscripten_glUniform2f=_glUniform2f;function _glUniform2fv(location,count,value){count&&GLctx.uniform2fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*2)}var _emscripten_glUniform2fv=_glUniform2fv;function _glUniform2i(location,v0,v1){GLctx.uniform2i(webglGetUniformLocation(location),v0,v1)}var _emscripten_glUniform2i=_glUniform2i;function _glUniform2iv(location,count,value){count&&GLctx.uniform2iv(webglGetUniformLocation(location),HEAP32,value>>2,count*2)}var _emscripten_glUniform2iv=_glUniform2iv;function _glUniform2ui(location,v0,v1){GLctx.uniform2ui(webglGetUniformLocation(location),v0,v1)}var _emscripten_glUniform2ui=_glUniform2ui;function _glUniform2uiv(location,count,value){count&&GLctx.uniform2uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*2)}var _emscripten_glUniform2uiv=_glUniform2uiv;function _glUniform3f(location,v0,v1,v2){GLctx.uniform3f(webglGetUniformLocation(location),v0,v1,v2)}var _emscripten_glUniform3f=_glUniform3f;function _glUniform3fv(location,count,value){count&&GLctx.uniform3fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*3)}var _emscripten_glUniform3fv=_glUniform3fv;function _glUniform3i(location,v0,v1,v2){GLctx.uniform3i(webglGetUniformLocation(location),v0,v1,v2)}var _emscripten_glUniform3i=_glUniform3i;function _glUniform3iv(location,count,value){count&&GLctx.uniform3iv(webglGetUniformLocation(location),HEAP32,value>>2,count*3)}var _emscripten_glUniform3iv=_glUniform3iv;function _glUniform3ui(location,v0,v1,v2){GLctx.uniform3ui(webglGetUniformLocation(location),v0,v1,v2)}var _emscripten_glUniform3ui=_glUniform3ui;function _glUniform3uiv(location,count,value){count&&GLctx.uniform3uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*3)}var _emscripten_glUniform3uiv=_glUniform3uiv;function _glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var _emscripten_glUniform4f=_glUniform4f;function _glUniform4fv(location,count,value){count&&GLctx.uniform4fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*4)}var _emscripten_glUniform4fv=_glUniform4fv;function _glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(webglGetUniformLocation(location),v0,v1,v2,v3)}var _emscripten_glUniform4i=_glUniform4i;function _glUniform4iv(location,count,value){count&&GLctx.uniform4iv(webglGetUniformLocation(location),HEAP32,value>>2,count*4)}var _emscripten_glUniform4iv=_glUniform4iv;function _glUniform4ui(location,v0,v1,v2,v3){GLctx.uniform4ui(webglGetUniformLocation(location),v0,v1,v2,v3)}var _emscripten_glUniform4ui=_glUniform4ui;function _glUniform4uiv(location,count,value){count&&GLctx.uniform4uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*4)}var _emscripten_glUniform4uiv=_glUniform4uiv;function _glUniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding){program=GL.programs[program];GLctx.uniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding)}var _emscripten_glUniformBlockBinding=_glUniformBlockBinding;function _glUniformMatrix2fv(location,count,transpose,value){count&&GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*4)}var _emscripten_glUniformMatrix2fv=_glUniformMatrix2fv;function _glUniformMatrix2x3fv(location,count,transpose,value){count&&GLctx.uniformMatrix2x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)}var _emscripten_glUniformMatrix2x3fv=_glUniformMatrix2x3fv;function _glUniformMatrix2x4fv(location,count,transpose,value){count&&GLctx.uniformMatrix2x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)}var _emscripten_glUniformMatrix2x4fv=_glUniformMatrix2x4fv;function _glUniformMatrix3fv(location,count,transpose,value){count&&GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*9)}var _emscripten_glUniformMatrix3fv=_glUniformMatrix3fv;function _glUniformMatrix3x2fv(location,count,transpose,value){count&&GLctx.uniformMatrix3x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)}var _emscripten_glUniformMatrix3x2fv=_glUniformMatrix3x2fv;function _glUniformMatrix3x4fv(location,count,transpose,value){count&&GLctx.uniformMatrix3x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)}var _emscripten_glUniformMatrix3x4fv=_glUniformMatrix3x4fv;function _glUniformMatrix4fv(location,count,transpose,value){count&&GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*16)}var _emscripten_glUniformMatrix4fv=_glUniformMatrix4fv;function _glUniformMatrix4x2fv(location,count,transpose,value){count&&GLctx.uniformMatrix4x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)}var _emscripten_glUniformMatrix4x2fv=_glUniformMatrix4x2fv;function _glUniformMatrix4x3fv(location,count,transpose,value){count&&GLctx.uniformMatrix4x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)}var _emscripten_glUniformMatrix4x3fv=_glUniformMatrix4x3fv;function _glUseProgram(program){program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}var _emscripten_glUseProgram=_glUseProgram;function _glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}var _emscripten_glValidateProgram=_glValidateProgram;function _glVertexAttrib1f(x0,x1){GLctx.vertexAttrib1f(x0,x1)}var _emscripten_glVertexAttrib1f=_glVertexAttrib1f;function _glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2])}var _emscripten_glVertexAttrib1fv=_glVertexAttrib1fv;function _glVertexAttrib2f(x0,x1,x2){GLctx.vertexAttrib2f(x0,x1,x2)}var _emscripten_glVertexAttrib2f=_glVertexAttrib2f;function _glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])}var _emscripten_glVertexAttrib2fv=_glVertexAttrib2fv;function _glVertexAttrib3f(x0,x1,x2,x3){GLctx.vertexAttrib3f(x0,x1,x2,x3)}var _emscripten_glVertexAttrib3f=_glVertexAttrib3f;function _glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])}var _emscripten_glVertexAttrib3fv=_glVertexAttrib3fv;function _glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx.vertexAttrib4f(x0,x1,x2,x3,x4)}var _emscripten_glVertexAttrib4f=_glVertexAttrib4f;function _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;function _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;function _glVertexAttribI4i(x0,x1,x2,x3,x4){GLctx.vertexAttribI4i(x0,x1,x2,x3,x4)}var _emscripten_glVertexAttribI4i=_glVertexAttribI4i;function _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;function _glVertexAttribI4ui(x0,x1,x2,x3,x4){GLctx.vertexAttribI4ui(x0,x1,x2,x3,x4)}var _emscripten_glVertexAttribI4ui=_glVertexAttribI4ui;function _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;function _glVertexAttribIPointer(index,size,type,stride,ptr){GLctx.vertexAttribIPointer(index,size,type,stride,ptr)}var _emscripten_glVertexAttribIPointer=_glVertexAttribIPointer;function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}var _emscripten_glVertexAttribPointer=_glVertexAttribPointer;function _glViewport(x0,x1,x2,x3){GLctx.viewport(x0,x1,x2,x3)}var _emscripten_glViewport=_glViewport;function _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;function _emscripten_has_asyncify(){return 0}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function 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)}function _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)}function _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)}function getHeapMax(){return 2147483648}function emscripten_realloc_buffer(size){var b=wasmMemory.buffer;try{wasmMemory.grow(size-b.byteLength+65535>>>16);updateMemoryViews();return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}function _emscripten_sample_gamepad_data(){return(JSEvents.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():null)?0:-1}function registerBeforeUnloadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString){var beforeUnloadEventHandlerFunc=function(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)}function _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")}function registerFocusEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.focusEvent)JSEvents.focusEvent=_malloc(256);var focusEventHandlerFunc=function(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)}function _emscripten_set_blur_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread)}function _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}function _emscripten_set_focus_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread)}function 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&&reportedElement.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}}function registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(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)}function _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)}function registerGamepadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=function(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)}function _emscripten_set_gamepadconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;return registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread)}function _emscripten_set_gamepaddisconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;return registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread)}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread)}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread)}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread)}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=getWasmTableEntry(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function 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;HEAP32[idx+14]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(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)}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread)}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread)}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread)}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread)}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread)}function 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&&pointerLockElement.id?pointerLockElement.id:"";stringToUTF8(nodeName,eventStruct+4,128);stringToUTF8(id,eventStruct+132,128)}function registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.pointerlockChangeEvent)JSEvents.pointerlockChangeEvent=_malloc(260);var pointerlockChangeEventHandlerFunc=function(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)}function _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)}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(e=event){if(e.target!=target){return}var b=document.body;if(!b){return}var uiEvent=JSEvents.uiEvent;HEAP32[uiEvent>>2]=e.detail;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;HEAP32[uiEvent+32>>2]=pageYOffset;if(getWasmTableEntry(callbackfunc)(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread)}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1696);target=findEventTarget(target);var touchEventHandlerFunc=function(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;HEAP32[idx+10]=t.clientY-targetRect.top;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)}function _emscripten_set_touchcancel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread)}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread)}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread)}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread)}function fillVisibilityChangeEventData(eventStruct){var visibilityStates=["hidden","visible","prerender","unloaded"];var visibilityState=visibilityStates.indexOf(document.visibilityState);HEAP32[eventStruct>>2]=document.hidden;HEAP32[eventStruct+4>>2]=visibilityState}function registerVisibilityChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.visibilityChangeEvent)JSEvents.visibilityChangeEvent=_malloc(8);var visibilityChangeEventHandlerFunc=function(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)}function _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)}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(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)}function _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}}function _emscripten_set_window_title(title){setWindowTitle(UTF8ToString(title))}function _emscripten_sleep(){throw"Please compile your program with async support in order to use asynchronous operations like emscripten_sleep"}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function 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}function stringToAscii(str,buffer){for(var i=0;i>0]=str.charCodeAt(i)}HEAP8[buffer>>0]=0}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(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}}function 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}}function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var offset=convertI32PairToI53Checked(offset_low,offset_high);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}}function 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}}function isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function 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];function 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}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[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":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(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":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(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":function(date){return date.tm_zone},"%%":function(){return"%"}};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}function _strftime_l(s,maxsize,format,tm,loc){return _strftime(s,maxsize,format,tm)}var FSNode=function(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};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;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"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};var preloadedImages={};var preloadedAudios={};var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var decodeBase64=typeof atob=="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i0){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();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:{};if(!Module.expectedDataFileDownloads){Module.expectedDataFileDownloads=0}Module.expectedDataFileDownloads++;(function(){if(Module["ENVIRONMENT_IS_PTHREAD"]||Module["$ww"])return;var loadPackage=function(metadata){var PACKAGE_PATH="";if(typeof window==="object"){PACKAGE_PATH=window["encodeURIComponent"](window.location.pathname.toString().substring(0,window.location.pathname.toString().lastIndexOf("/"))+"/")}else if(typeof process==="undefined"&&typeof location!=="undefined"){PACKAGE_PATH=encodeURIComponent(location.pathname.toString().substring(0,location.pathname.toString().lastIndexOf("/"))+"/")}var PACKAGE_NAME="pge.data";var REMOTE_PACKAGE_BASE="pge.data";if(typeof Module["locateFilePackage"]==="function"&&!Module["locateFile"]){Module["locateFile"]=Module["locateFilePackage"];err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")}var REMOTE_PACKAGE_NAME=Module["locateFile"]?Module["locateFile"](REMOTE_PACKAGE_BASE,""):REMOTE_PACKAGE_BASE;var REMOTE_PACKAGE_SIZE=metadata["remote_package_size"];function fetchRemotePackage(packageName,packageSize,callback,errback){if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){require("fs").readFile(packageName,function(err,contents){if(err){errback(err)}else{callback(contents.buffer)}});return}var xhr=new XMLHttpRequest;xhr.open("GET",packageName,true);xhr.responseType="arraybuffer";xhr.onprogress=function(event){var url=packageName;var size=packageSize;if(event.total)size=event.total;if(event.loaded){if(!xhr.addedTotal){xhr.addedTotal=true;if(!Module.dataFileDownloads)Module.dataFileDownloads={};Module.dataFileDownloads[url]={loaded:event.loaded,total:size}}else{Module.dataFileDownloads[url].loaded=event.loaded}var total=0;var loaded=0;var num=0;for(var download in Module.dataFileDownloads){var data=Module.dataFileDownloads[download];total+=data.total;loaded+=data.loaded;num++}total=Math.ceil(total*Module.expectedDataFileDownloads/num);if(Module["setStatus"])Module["setStatus"](`Downloading data... (${loaded}/${total})`)}else if(!Module.dataFileDownloads){if(Module["setStatus"])Module["setStatus"]("Downloading data...")}};xhr.onerror=function(event){throw new Error("NetworkError for: "+packageName)};xhr.onload=function(event){if(xhr.status==200||xhr.status==304||xhr.status==206||xhr.status==0&&xhr.response){var packageData=xhr.response;callback(packageData)}else{throw new Error(xhr.statusText+" : "+xhr.responseURL)}};xhr.send(null)}function handleError(error){console.error("package error:",error)}var fetchedCallback=null;var fetched=Module["getPreloadedPackage"]?Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE):null;if(!fetched)fetchRemotePackage(REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE,function(data){if(fetchedCallback){fetchedCallback(data);fetchedCallback=null}else{fetched=data}},handleError);function runWithFS(){function assert(check,msg){if(!check)throw msg+(new Error).stack}Module["FS_createPath"]("/","assets",true,true);function DataRequest(start,end,audio){this.start=start;this.end=end;this.audio=audio}DataRequest.prototype={requests:{},open:function(mode,name){this.name=name;this.requests[name]=this;Module["addRunDependency"](`fp ${this.name}`)},send:function(){},onload:function(){var byteArray=this.byteArray.subarray(this.start,this.end);this.finish(byteArray)},finish:function(byteArray){var that=this;Module["FS_createDataFile"](this.name,null,byteArray,true,true,true);Module["removeRunDependency"](`fp ${that.name}`);this.requests[this.name]=null}};var files=metadata["files"];for(var i=0;i{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,setWindowTitle;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}});var nodeMajor=process.versions.node.split(".")[0];if(nodeMajor<15){process.on("unhandledRejection",reason=>{throw reason})}quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow};Module["inspect"]=()=>"[Emscripten Module object]"}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.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{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)}}setWindowTitle=title=>document.title=title}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"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}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["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}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++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){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,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="pge.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}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(()=>getBinary(binaryFile))}else{if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}}return Promise.resolve().then(()=>getBinary(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>{return WebAssembly.instantiate(binary,imports)}).then(instance=>{return instance}).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)})})}else{return instantiateArrayBuffer(binaryFile,imports,callback)}}function createWasm(){var info={"env":wasmImports,"wasi_snapshot_preview1":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["memory"];updateMemoryViews();wasmTable=Module["asm"]["__indirect_function_table"];addOnInit(Module["asm"]["__wasm_call_ctors"]);removeRunDependency("wasm-instantiate");return exports}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={136300:()=>{return Module.canvas.getBoundingClientRect().left},136352:()=>{return Module.canvas.getBoundingClientRect().top},136403:()=>{return Module.olc_MOUSEX},136431:()=>{return Module.olc_MOUSEY},136459:()=>{return Module.olc_MOUSEDOWN},136489:()=>{return Module.olc_MOUSEUP},136517:()=>{Module.olc_MOUSEDOWN=-1},136543:()=>{Module.olc_MOUSEUP=-1},136567:()=>{window.onunload=Module._olc_OnPageUnload},136611:($0,$1)=>{Module.olc_AspectRatio=$0/$1;Module.olc_MOUSEDOWN=-1;Module.olc_MOUSEUP=-1;onmousemove=function(e){Module.olc_MOUSEX=e.clientX;Module.olc_MOUSEY=e.clientY};onmousedown=function(e){Module.olc_MOUSEDOWN=e.button};onmouseup=function(e){Module.olc_MOUSEUP=e.button};ontouchmove=function(e){Module.olc_MOUSEX=e.touches[0].clientX;Module.olc_MOUSEY=e.touches[0].clientY};ontouchstart=function(e){Module.olc_MOUSEX=e.touches[0].clientX;Module.olc_MOUSEY=e.touches[0].clientY};Module.olc_AssumeDefaultShells=document.querySelectorAll(".emscripten").length>=3?true:false;var olc_ResizeHandler=function(){let isFullscreen=document.fullscreenElement!=null;let width=isFullscreen?window.innerWidth:Module.canvas.parentNode.clientWidth;let height=isFullscreen?window.innerHeight:Module.canvas.parentNode.clientHeight;let viewWidth=width;let viewHeight=width/Module.olc_AspectRatio;if(viewHeight>height){viewWidth=height*Module.olc_AspectRatio;viewHeight=height}viewWidth=parseInt(viewWidth);viewHeight=parseInt(viewHeight);setTimeout(function(){if(Module.olc_AssumeDefaultShells)Module.canvas.parentNode.setAttribute("style","width: 100%; height: 70vh; margin-left: auto; margin-right: auto;");Module.canvas.setAttribute("width",viewWidth);Module.canvas.setAttribute("height",viewHeight);Module.canvas.setAttribute("style",`width: ${viewWidth}px; height: ${viewHeight}px;`);Module._olc_PGE_UpdateWindowSize(viewWidth,viewHeight);Module.canvas.focus()},200)};var olc_Init=function(){if(Module.olc_AspectRatio===undefined){setTimeout(function(){Module.olc_Init()},50);return}let resizeObserver=new ResizeObserver(function(entries){Module.olc_ResizeHandler()}).observe(Module.canvas.parentNode);let mutationObserver=new MutationObserver(function(mutationsList,observer){setTimeout(function(){Module.olc_ResizeHandler()},200)}).observe(Module.canvas.parentNode,{attributes:false,childList:true,subtree:false});window.addEventListener("fullscreenchange",function(e){setTimeout(function(){Module.olc_ResizeHandler()},200)})};Module.olc_ResizeHandler=Module.olc_ResizeHandler!=undefined?Module.olc_ResizeHandler:olc_ResizeHandler;Module.olc_Init=Module.olc_Init!=undefined?Module.olc_Init:olc_Init;Module.olc_Init()},139005:()=>{if(typeof AudioContext!=="undefined"){return true}else if(typeof webkitAudioContext!=="undefined"){return true}return false},139152:()=>{if(typeof navigator.mediaDevices!=="undefined"&&typeof navigator.mediaDevices.getUserMedia!=="undefined"){return true}else if(typeof navigator.webkitGetUserMedia!=="undefined"){return true}return false},139386:$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},139879:()=>{var SDL2=Module["SDL2"];return SDL2.audioContext.sampleRate},139947:($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)}},141599:($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"])},142009:($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]}}},143094:$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},146724:$0=>{if(Module["canvas"]){Module["canvas"].style["cursor"]=UTF8ToString($0)}},146807:()=>{if(Module["canvas"]){Module["canvas"].style["cursor"]="none"}},146876:()=>{return window.innerWidth},146906:()=>{return window.innerHeight}};function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}function listenOnce(object,event,func){object.addEventListener(event,func,{"once":true})}function 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()})}})})}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function dynCall(sig,ptr,args){if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr).apply(null,args);return rtn}function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){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}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function ___assert_fail(condition,filename,line,func){abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}var exceptionCaught=[];var exceptionLast=0;var uncaughtExceptionCount=0;function ___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}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){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}}function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}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:function(){var paths=Array.prototype.slice.call(arguments);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};function 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")}function randomFill(view){return(randomFill=initRandomFill())(view)}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[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=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}function 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 TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.fsync(stream.tty)},fsync:function(stream){stream.tty.ops.fsync(stream.tty)},read:function(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){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){abort()}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{assert(arrayBuffer,`Loading data file "${url}" failed (no 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 preloadPlugins=Module["preloadPlugins"]||[];function FS_handledByPreloadPlugin(byteArray,fullname,finish,onerror){if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled}function 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){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}}function 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}function 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:null,genericErrors:{},filesystems:null,syncFSRequests:0,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,parent)}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=>{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)},getStream:fd=>FS.streams[fd],createStream:(stream,fd=-1)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}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},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){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.apply(check,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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS_modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error(`Invalid encoding type "${opts.encoding}"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.name="ErrnoError";this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();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;FS.ensureErrnoError();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;i{var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_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};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;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});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]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});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 SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(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:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAPU32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>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+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>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+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>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+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>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+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];HEAPU32[buf+96>>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+104>>2]=tempI64[0],HEAP32[buf+108>>2]=tempI64[1];return 0},doMsync:function(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:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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}var newStream;newStream=FS.createStream(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 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{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 nowIsMonotonic=true;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function __emscripten_throw_longjmp(){throw Infinity}function _abort(){abort("")}function _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 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);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,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){global.performance=require("perf_hooks").performance}_emscripten_get_now=()=>performance.now();function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");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}}out('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");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&&SDL.audio.queueNewAudioData)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"}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function _proc_exit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}function exitJS(status,implicit){EXITSTATUS=status;_proc_exit(status)}var _exit=exitJS;function maybeExit(){if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}}function callUserCallback(func){if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}}function safeSetTimeout(func,timeout){return setTimeout(()=>{callUserCallback(func)},timeout)}var Browser={mainLoop:{running:false,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){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:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining{assert(img.complete,"Image "+name+" could not be decoded");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);if(onload)onload(byteArray)};img.onerror=event=>{out("Image "+url+" could not be decoded");if(onerror)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;if(onload)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:function(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:2};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){if(!useWebGL)assert(typeof GLctx=="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(callback=>callback());Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(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)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])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:function(){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:function(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:function(func){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeSetTimeout:function(func,timeout){return safeSetTimeout(func,timeout)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(()=>{callUserCallback(func)})},getMimetype:function(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:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(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:{},calculateMouseEvent:function(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{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;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};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];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(listener=>listener(canvas.width,canvas.height))},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){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:function(){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:function(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){HEAP32[config>>2]=62002}EGL.setErrorCode(12288);return 1}};function _eglBindAPI(api){if(api==12448){EGL.setErrorCode(12288);return 1}EGL.setErrorCode(12300);return 0}function _eglChooseConfig(display,attrib_list,configs,config_size,numConfigs){return EGL.chooseConfig(display,attrib_list,configs,config_size,numConfigs)}function webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(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=canvas.getContext("webgl2",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(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:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(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:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.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);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};function _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}}function _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}function _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}function _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}function _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}}function _eglGetDisplay(nativeDisplayType){EGL.setErrorCode(12288);return 62e3}function _eglGetError(){return EGL.errorCode}function _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}function _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}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function stringToNewUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret}function _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}function _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}function _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}function _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}function _eglWaitClient(){EGL.setErrorCode(12288);return 1}var _eglWaitGL=_eglWaitClient;function _eglWaitNative(nativeEngineId){EGL.setErrorCode(12288);return 1}var readEmAsmArgsArray=[];function readEmAsmArgs(sigPtr,buf){readEmAsmArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){buf+=ch!=105&buf;readEmAsmArgsArray.push(ch==105?HEAP32[buf]:HEAPF64[buf++>>1]);++buf}return readEmAsmArgsArray}function runEmAsmFunction(code,sigPtr,argbuf){var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_asm_const_int(code,sigPtr,argbuf){return runEmAsmFunction(code,sigPtr,argbuf)}function runMainThreadEmAsm(code,sigPtr,argbuf,sync){var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_asm_const_int_sync_on_main_thread(code,sigPtr,argbuf){return runMainThreadEmAsm(code,sigPtr,argbuf,1)}function _emscripten_cancel_main_loop(){Browser.mainLoop.pause();Browser.mainLoop.func=null}function _emscripten_date_now(){return Date.now()}function withStackSave(f){var stack=stackSave();var ret=f();stackRestore(stack);return ret}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _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}function stringToUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret}function getCanvasElementSize(target){return withStackSave(function(){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})}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function setCanvasElementSize(target,width,height){if(!target.controlTransferredOffscreen){target.width=width;target.height=height}else{withStackSave(function(){var targetInt=stringToUTF8OnStack(target.id);_emscripten_set_canvas_element_size(targetInt,width,height)})}}function 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}function setLetterbox(element,topBottom,leftRight){element.style.paddingLeft=element.style.paddingRight=leftRight+"px";element.style.paddingTop=element.style.paddingBottom=topBottom+"px"}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0}function 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)}function _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}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function _emscripten_get_screen_size(width,height){HEAP32[width>>2]=screen.width;HEAP32[height>>2]=screen.height}function _glActiveTexture(x0){GLctx.activeTexture(x0)}var _emscripten_glActiveTexture=_glActiveTexture;function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}var _emscripten_glAttachShader=_glAttachShader;function _glBeginQuery(target,id){GLctx.beginQuery(target,GL.queries[id])}var _emscripten_glBeginQuery=_glBeginQuery;function _glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.queries[id])}var _emscripten_glBeginQueryEXT=_glBeginQueryEXT;function _glBeginTransformFeedback(x0){GLctx.beginTransformFeedback(x0)}var _emscripten_glBeginTransformFeedback=_glBeginTransformFeedback;function _glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}var _emscripten_glBindAttribLocation=_glBindAttribLocation;function _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;function _glBindBufferBase(target,index,buffer){GLctx.bindBufferBase(target,index,GL.buffers[buffer])}var _emscripten_glBindBufferBase=_glBindBufferBase;function _glBindBufferRange(target,index,buffer,offset,ptrsize){GLctx.bindBufferRange(target,index,GL.buffers[buffer],offset,ptrsize)}var _emscripten_glBindBufferRange=_glBindBufferRange;function _glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}var _emscripten_glBindFramebuffer=_glBindFramebuffer;function _glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}var _emscripten_glBindRenderbuffer=_glBindRenderbuffer;function _glBindSampler(unit,sampler){GLctx.bindSampler(unit,GL.samplers[sampler])}var _emscripten_glBindSampler=_glBindSampler;function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}var _emscripten_glBindTexture=_glBindTexture;function _glBindTransformFeedback(target,id){GLctx.bindTransformFeedback(target,GL.transformFeedbacks[id])}var _emscripten_glBindTransformFeedback=_glBindTransformFeedback;function _glBindVertexArray(vao){GLctx.bindVertexArray(GL.vaos[vao])}var _emscripten_glBindVertexArray=_glBindVertexArray;var _glBindVertexArrayOES=_glBindVertexArray;var _emscripten_glBindVertexArrayOES=_glBindVertexArrayOES;function _glBlendColor(x0,x1,x2,x3){GLctx.blendColor(x0,x1,x2,x3)}var _emscripten_glBlendColor=_glBlendColor;function _glBlendEquation(x0){GLctx.blendEquation(x0)}var _emscripten_glBlendEquation=_glBlendEquation;function _glBlendEquationSeparate(x0,x1){GLctx.blendEquationSeparate(x0,x1)}var _emscripten_glBlendEquationSeparate=_glBlendEquationSeparate;function _glBlendFunc(x0,x1){GLctx.blendFunc(x0,x1)}var _emscripten_glBlendFunc=_glBlendFunc;function _glBlendFuncSeparate(x0,x1,x2,x3){GLctx.blendFuncSeparate(x0,x1,x2,x3)}var _emscripten_glBlendFuncSeparate=_glBlendFuncSeparate;function _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;function _glBufferData(target,size,data,usage){if(true){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}}else{GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}}var _emscripten_glBufferData=_glBufferData;function _glBufferSubData(target,offset,size,data){if(true){size&&GLctx.bufferSubData(target,offset,HEAPU8,data,size);return}GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}var _emscripten_glBufferSubData=_glBufferSubData;function _glCheckFramebufferStatus(x0){return GLctx.checkFramebufferStatus(x0)}var _emscripten_glCheckFramebufferStatus=_glCheckFramebufferStatus;function _glClear(x0){GLctx.clear(x0)}var _emscripten_glClear=_glClear;function _glClearBufferfi(x0,x1,x2,x3){GLctx.clearBufferfi(x0,x1,x2,x3)}var _emscripten_glClearBufferfi=_glClearBufferfi;function _glClearBufferfv(buffer,drawbuffer,value){GLctx.clearBufferfv(buffer,drawbuffer,HEAPF32,value>>2)}var _emscripten_glClearBufferfv=_glClearBufferfv;function _glClearBufferiv(buffer,drawbuffer,value){GLctx.clearBufferiv(buffer,drawbuffer,HEAP32,value>>2)}var _emscripten_glClearBufferiv=_glClearBufferiv;function _glClearBufferuiv(buffer,drawbuffer,value){GLctx.clearBufferuiv(buffer,drawbuffer,HEAPU32,value>>2)}var _emscripten_glClearBufferuiv=_glClearBufferuiv;function _glClearColor(x0,x1,x2,x3){GLctx.clearColor(x0,x1,x2,x3)}var _emscripten_glClearColor=_glClearColor;function _glClearDepthf(x0){GLctx.clearDepth(x0)}var _emscripten_glClearDepthf=_glClearDepthf;function _glClearStencil(x0){GLctx.clearStencil(x0)}var _emscripten_glClearStencil=_glClearStencil;function convertI32PairToI53(lo,hi){return(lo>>>0)+hi*4294967296}function _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;function _glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}var _emscripten_glColorMask=_glColorMask;function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}var _emscripten_glCompileShader=_glCompileShader;function _glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){if(true){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;function _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;function _glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){if(true){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;function _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;function _glCopyBufferSubData(x0,x1,x2,x3,x4){GLctx.copyBufferSubData(x0,x1,x2,x3,x4)}var _emscripten_glCopyBufferSubData=_glCopyBufferSubData;function _glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx.copyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7)}var _emscripten_glCopyTexImage2D=_glCopyTexImage2D;function _glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx.copyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7)}var _emscripten_glCopyTexSubImage2D=_glCopyTexSubImage2D;function _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;function _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;function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}var _emscripten_glCreateShader=_glCreateShader;function _glCullFace(x0){GLctx.cullFace(x0)}var _emscripten_glCullFace=_glCullFace;function _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;function _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;function _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;function _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;function _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;function _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;function _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;function _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;function _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;function _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;function _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;function _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;function _glDepthFunc(x0){GLctx.depthFunc(x0)}var _emscripten_glDepthFunc=_glDepthFunc;function _glDepthMask(flag){GLctx.depthMask(!!flag)}var _emscripten_glDepthMask=_glDepthMask;function _glDepthRangef(x0,x1){GLctx.depthRange(x0,x1)}var _emscripten_glDepthRangef=_glDepthRangef;function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}var _emscripten_glDetachShader=_glDetachShader;function _glDisable(x0){GLctx.disable(x0)}var _emscripten_glDisable=_glDisable;function _glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}var _emscripten_glDisableVertexAttribArray=_glDisableVertexAttribArray;function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}var _emscripten_glDrawArrays=_glDrawArrays;function _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=[];function _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;function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}var _emscripten_glDrawElements=_glDrawElements;function _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;function _glDrawRangeElements(mode,start,end,count,type,indices){_glDrawElements(mode,count,type,indices)}var _emscripten_glDrawRangeElements=_glDrawRangeElements;function _glEnable(x0){GLctx.enable(x0)}var _emscripten_glEnable=_glEnable;function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}var _emscripten_glEnableVertexAttribArray=_glEnableVertexAttribArray;function _glEndQuery(x0){GLctx.endQuery(x0)}var _emscripten_glEndQuery=_glEndQuery;function _glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)}var _emscripten_glEndQueryEXT=_glEndQueryEXT;function _glEndTransformFeedback(){GLctx.endTransformFeedback()}var _emscripten_glEndTransformFeedback=_glEndTransformFeedback;function _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;function _glFinish(){GLctx.finish()}var _emscripten_glFinish=_glFinish;function _glFlush(){GLctx.flush()}var _emscripten_glFlush=_glFlush;function _glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}var _emscripten_glFramebufferRenderbuffer=_glFramebufferRenderbuffer;function _glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}var _emscripten_glFramebufferTexture2D=_glFramebufferTexture2D;function _glFramebufferTextureLayer(target,attachment,texture,level,layer){GLctx.framebufferTextureLayer(target,attachment,GL.textures[texture],level,layer)}var _emscripten_glFramebufferTextureLayer=_glFramebufferTextureLayer;function _glFrontFace(x0){GLctx.frontFace(x0)}var _emscripten_glFrontFace=_glFrontFace;function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i>2]=id}}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}var _emscripten_glGenBuffers=_glGenBuffers;function _glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}var _emscripten_glGenFramebuffers=_glGenFramebuffers;function _glGenQueries(n,ids){__glGenObject(n,ids,"createQuery",GL.queries)}var _emscripten_glGenQueries=_glGenQueries;function _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;function _glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}var _emscripten_glGenRenderbuffers=_glGenRenderbuffers;function _glGenSamplers(n,samplers){__glGenObject(n,samplers,"createSampler",GL.samplers)}var _emscripten_glGenSamplers=_glGenSamplers;function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}var _emscripten_glGenTextures=_glGenTextures;function _glGenTransformFeedbacks(n,ids){__glGenObject(n,ids,"createTransformFeedback",GL.transformFeedbacks)}var _emscripten_glGenTransformFeedbacks=_glGenTransformFeedbacks;function _glGenVertexArrays(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}var _emscripten_glGenVertexArrays=_glGenVertexArrays;var _glGenVertexArraysOES=_glGenVertexArrays;var _emscripten_glGenVertexArraysOES=_glGenVertexArraysOES;function _glGenerateMipmap(x0){GLctx.generateMipmap(x0)}var _emscripten_glGenerateMipmap=_glGenerateMipmap;function __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}}function _glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}var _emscripten_glGetActiveAttrib=_glGetActiveAttrib;function _glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}var _emscripten_glGetActiveUniform=_glGetActiveUniform;function _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;function _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;function _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;function _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;function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}var _emscripten_glGetAttribLocation=_glGetAttribLocation;function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function 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}var exts=GLctx.getSupportedExtensions()||[];ret=2*exts.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>>0]=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>>0]=ret?1:0;break}}function _glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4)}var _emscripten_glGetBooleanv=_glGetBooleanv;function _glGetBufferParameteri64v(target,value,data){if(!data){GL.recordError(1281);return}writeI53ToI64(data,GLctx.getBufferParameter(target,value))}var _emscripten_glGetBufferParameteri64v=_glGetBufferParameteri64v;function _glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)}var _emscripten_glGetBufferParameteriv=_glGetBufferParameteriv;function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}var _emscripten_glGetError=_glGetError;function _glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}var _emscripten_glGetFloatv=_glGetFloatv;function _glGetFragDataLocation(program,name){return GLctx.getFragDataLocation(GL.programs[program],UTF8ToString(name))}var _emscripten_glGetFragDataLocation=_glGetFragDataLocation;function _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;function 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>>0]=ret?1:0;break;default:throw"internal emscriptenWebGLGetIndexed() error, bad type: "+type}}function _glGetInteger64i_v(target,index,data){emscriptenWebGLGetIndexed(target,index,data,1)}var _emscripten_glGetInteger64i_v=_glGetInteger64i_v;function _glGetInteger64v(name_,p){emscriptenWebGLGet(name_,p,1)}var _emscripten_glGetInteger64v=_glGetInteger64v;function _glGetIntegeri_v(target,index,data){emscriptenWebGLGetIndexed(target,index,data,0)}var _emscripten_glGetIntegeri_v=_glGetIntegeri_v;function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}var _emscripten_glGetIntegerv=_glGetIntegerv;function _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;function _glGetProgramBinary(program,bufSize,length,binaryFormat,binary){GL.recordError(1282)}var _emscripten_glGetProgramBinary=_glGetProgramBinary;function _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;function _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;function _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;function _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;function _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;function _glGetQueryiv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getQuery(target,pname)}var _emscripten_glGetQueryiv=_glGetQueryiv;function _glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)}var _emscripten_glGetQueryivEXT=_glGetQueryivEXT;function _glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)}var _emscripten_glGetRenderbufferParameteriv=_glGetRenderbufferParameteriv;function _glGetSamplerParameterfv(sampler,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)}var _emscripten_glGetSamplerParameterfv=_glGetSamplerParameterfv;function _glGetSamplerParameteriv(sampler,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)}var _emscripten_glGetSamplerParameteriv=_glGetSamplerParameteriv;function _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;function _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;function _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;function _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;function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=s&&stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);if(true)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;function _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=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));exts=exts.map(function(e){return stringToNewUTF8(e)});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;function _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;function _glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)}var _emscripten_glGetTexParameterfv=_glGetTexParameterfv;function _glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)}var _emscripten_glGetTexParameteriv=_glGetTexParameteriv;function _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;function _glGetUniformBlockIndex(program,uniformBlockName){return GLctx.getUniformBlockIndex(GL.programs[program],UTF8ToString(uniformBlockName))}var _emscripten_glGetUniformBlockIndex=_glGetUniformBlockIndex;function _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;function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex0?"["+webglLoc+"]":""))}return webglLoc}else{GL.recordError(1282)}}function 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}}}}function _glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)}var _emscripten_glGetUniformfv=_glGetUniformfv;function _glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}var _emscripten_glGetUniformiv=_glGetUniformiv;function _glGetUniformuiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}var _emscripten_glGetUniformuiv=_glGetUniformuiv;function 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}}}}function _glGetVertexAttribIiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,0)}var _emscripten_glGetVertexAttribIiv=_glGetVertexAttribIiv;var _glGetVertexAttribIuiv=_glGetVertexAttribIiv;var _emscripten_glGetVertexAttribIuiv=_glGetVertexAttribIuiv;function _glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)}var _emscripten_glGetVertexAttribPointerv=_glGetVertexAttribPointerv;function _glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2)}var _emscripten_glGetVertexAttribfv=_glGetVertexAttribfv;function _glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}var _emscripten_glGetVertexAttribiv=_glGetVertexAttribiv;function _glHint(x0,x1){GLctx.hint(x0,x1)}var _emscripten_glHint=_glHint;function _glInvalidateFramebuffer(target,numAttachments,attachments){var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateFramebuffer(target,list)}var _emscripten_glInvalidateFramebuffer=_glInvalidateFramebuffer;function _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;function _glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)}var _emscripten_glIsBuffer=_glIsBuffer;function _glIsEnabled(x0){return GLctx.isEnabled(x0)}var _emscripten_glIsEnabled=_glIsEnabled;function _glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)}var _emscripten_glIsFramebuffer=_glIsFramebuffer;function _glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)}var _emscripten_glIsProgram=_glIsProgram;function _glIsQuery(id){var query=GL.queries[id];if(!query)return 0;return GLctx.isQuery(query)}var _emscripten_glIsQuery=_glIsQuery;function _glIsQueryEXT(id){var query=GL.queries[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)}var _emscripten_glIsQueryEXT=_glIsQueryEXT;function _glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)}var _emscripten_glIsRenderbuffer=_glIsRenderbuffer;function _glIsSampler(id){var sampler=GL.samplers[id];if(!sampler)return 0;return GLctx.isSampler(sampler)}var _emscripten_glIsSampler=_glIsSampler;function _glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)}var _emscripten_glIsShader=_glIsShader;function _glIsSync(sync){return GLctx.isSync(GL.syncs[sync])}var _emscripten_glIsSync=_glIsSync;function _glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)}var _emscripten_glIsTexture=_glIsTexture;function _glIsTransformFeedback(id){return GLctx.isTransformFeedback(GL.transformFeedbacks[id])}var _emscripten_glIsTransformFeedback=_glIsTransformFeedback;function _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;function _glLineWidth(x0){GLctx.lineWidth(x0)}var _emscripten_glLineWidth=_glLineWidth;function _glLinkProgram(program){program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}}var _emscripten_glLinkProgram=_glLinkProgram;function _glPauseTransformFeedback(){GLctx.pauseTransformFeedback()}var _emscripten_glPauseTransformFeedback=_glPauseTransformFeedback;function _glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}var _emscripten_glPixelStorei=_glPixelStorei;function _glPolygonOffset(x0,x1){GLctx.polygonOffset(x0,x1)}var _emscripten_glPolygonOffset=_glPolygonOffset;function _glProgramBinary(program,binaryFormat,binary,length){GL.recordError(1280)}var _emscripten_glProgramBinary=_glProgramBinary;function _glProgramParameteri(program,pname,value){GL.recordError(1280)}var _emscripten_glProgramParameteri=_glProgramParameteri;function _glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.queries[id],target)}var _emscripten_glQueryCounterEXT=_glQueryCounterEXT;function _glReadBuffer(x0){GLctx.readBuffer(x0)}var _emscripten_glReadBuffer=_glReadBuffer;function 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}function 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}function 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}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(true){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}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;function _glReleaseShaderCompiler(){}var _emscripten_glReleaseShaderCompiler=_glReleaseShaderCompiler;function _glRenderbufferStorage(x0,x1,x2,x3){GLctx.renderbufferStorage(x0,x1,x2,x3)}var _emscripten_glRenderbufferStorage=_glRenderbufferStorage;function _glRenderbufferStorageMultisample(x0,x1,x2,x3,x4){GLctx.renderbufferStorageMultisample(x0,x1,x2,x3,x4)}var _emscripten_glRenderbufferStorageMultisample=_glRenderbufferStorageMultisample;function _glResumeTransformFeedback(){GLctx.resumeTransformFeedback()}var _emscripten_glResumeTransformFeedback=_glResumeTransformFeedback;function _glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)}var _emscripten_glSampleCoverage=_glSampleCoverage;function _glSamplerParameterf(sampler,pname,param){GLctx.samplerParameterf(GL.samplers[sampler],pname,param)}var _emscripten_glSamplerParameterf=_glSamplerParameterf;function _glSamplerParameterfv(sampler,pname,params){var param=HEAPF32[params>>2];GLctx.samplerParameterf(GL.samplers[sampler],pname,param)}var _emscripten_glSamplerParameterfv=_glSamplerParameterfv;function _glSamplerParameteri(sampler,pname,param){GLctx.samplerParameteri(GL.samplers[sampler],pname,param)}var _emscripten_glSamplerParameteri=_glSamplerParameteri;function _glSamplerParameteriv(sampler,pname,params){var param=HEAP32[params>>2];GLctx.samplerParameteri(GL.samplers[sampler],pname,param)}var _emscripten_glSamplerParameteriv=_glSamplerParameteriv;function _glScissor(x0,x1,x2,x3){GLctx.scissor(x0,x1,x2,x3)}var _emscripten_glScissor=_glScissor;function _glShaderBinary(count,shaders,binaryformat,binary,length){GL.recordError(1280)}var _emscripten_glShaderBinary=_glShaderBinary;function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}var _emscripten_glShaderSource=_glShaderSource;function _glStencilFunc(x0,x1,x2){GLctx.stencilFunc(x0,x1,x2)}var _emscripten_glStencilFunc=_glStencilFunc;function _glStencilFuncSeparate(x0,x1,x2,x3){GLctx.stencilFuncSeparate(x0,x1,x2,x3)}var _emscripten_glStencilFuncSeparate=_glStencilFuncSeparate;function _glStencilMask(x0){GLctx.stencilMask(x0)}var _emscripten_glStencilMask=_glStencilMask;function _glStencilMaskSeparate(x0,x1){GLctx.stencilMaskSeparate(x0,x1)}var _emscripten_glStencilMaskSeparate=_glStencilMaskSeparate;function _glStencilOp(x0,x1,x2){GLctx.stencilOp(x0,x1,x2)}var _emscripten_glStencilOp=_glStencilOp;function _glStencilOpSeparate(x0,x1,x2,x3){GLctx.stencilOpSeparate(x0,x1,x2,x3)}var _emscripten_glStencilOpSeparate=_glStencilOpSeparate;function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){if(true){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,pixels>>heapAccessShiftForWebGLHeap(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;function _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,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,null)}}var _emscripten_glTexImage3D=_glTexImage3D;function _glTexParameterf(x0,x1,x2){GLctx.texParameterf(x0,x1,x2)}var _emscripten_glTexParameterf=_glTexParameterf;function _glTexParameterfv(target,pname,params){var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)}var _emscripten_glTexParameterfv=_glTexParameterfv;function _glTexParameteri(x0,x1,x2){GLctx.texParameteri(x0,x1,x2)}var _emscripten_glTexParameteri=_glTexParameteri;function _glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)}var _emscripten_glTexParameteriv=_glTexParameteriv;function _glTexStorage2D(x0,x1,x2,x3,x4){GLctx.texStorage2D(x0,x1,x2,x3,x4)}var _emscripten_glTexStorage2D=_glTexStorage2D;function _glTexStorage3D(x0,x1,x2,x3,x4,x5){GLctx.texStorage3D(x0,x1,x2,x3,x4,x5)}var _emscripten_glTexStorage3D=_glTexStorage3D;function _glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){if(true){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,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,null)}return}var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}var _emscripten_glTexSubImage2D=_glTexSubImage2D;function _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,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,null)}}var _emscripten_glTexSubImage3D=_glTexSubImage3D;function _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;function _glUniform1f(location,v0){GLctx.uniform1f(webglGetUniformLocation(location),v0)}var _emscripten_glUniform1f=_glUniform1f;function _glUniform1fv(location,count,value){count&&GLctx.uniform1fv(webglGetUniformLocation(location),HEAPF32,value>>2,count)}var _emscripten_glUniform1fv=_glUniform1fv;function _glUniform1i(location,v0){GLctx.uniform1i(webglGetUniformLocation(location),v0)}var _emscripten_glUniform1i=_glUniform1i;function _glUniform1iv(location,count,value){count&&GLctx.uniform1iv(webglGetUniformLocation(location),HEAP32,value>>2,count)}var _emscripten_glUniform1iv=_glUniform1iv;function _glUniform1ui(location,v0){GLctx.uniform1ui(webglGetUniformLocation(location),v0)}var _emscripten_glUniform1ui=_glUniform1ui;function _glUniform1uiv(location,count,value){count&&GLctx.uniform1uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count)}var _emscripten_glUniform1uiv=_glUniform1uiv;function _glUniform2f(location,v0,v1){GLctx.uniform2f(webglGetUniformLocation(location),v0,v1)}var _emscripten_glUniform2f=_glUniform2f;function _glUniform2fv(location,count,value){count&&GLctx.uniform2fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*2)}var _emscripten_glUniform2fv=_glUniform2fv;function _glUniform2i(location,v0,v1){GLctx.uniform2i(webglGetUniformLocation(location),v0,v1)}var _emscripten_glUniform2i=_glUniform2i;function _glUniform2iv(location,count,value){count&&GLctx.uniform2iv(webglGetUniformLocation(location),HEAP32,value>>2,count*2)}var _emscripten_glUniform2iv=_glUniform2iv;function _glUniform2ui(location,v0,v1){GLctx.uniform2ui(webglGetUniformLocation(location),v0,v1)}var _emscripten_glUniform2ui=_glUniform2ui;function _glUniform2uiv(location,count,value){count&&GLctx.uniform2uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*2)}var _emscripten_glUniform2uiv=_glUniform2uiv;function _glUniform3f(location,v0,v1,v2){GLctx.uniform3f(webglGetUniformLocation(location),v0,v1,v2)}var _emscripten_glUniform3f=_glUniform3f;function _glUniform3fv(location,count,value){count&&GLctx.uniform3fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*3)}var _emscripten_glUniform3fv=_glUniform3fv;function _glUniform3i(location,v0,v1,v2){GLctx.uniform3i(webglGetUniformLocation(location),v0,v1,v2)}var _emscripten_glUniform3i=_glUniform3i;function _glUniform3iv(location,count,value){count&&GLctx.uniform3iv(webglGetUniformLocation(location),HEAP32,value>>2,count*3)}var _emscripten_glUniform3iv=_glUniform3iv;function _glUniform3ui(location,v0,v1,v2){GLctx.uniform3ui(webglGetUniformLocation(location),v0,v1,v2)}var _emscripten_glUniform3ui=_glUniform3ui;function _glUniform3uiv(location,count,value){count&&GLctx.uniform3uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*3)}var _emscripten_glUniform3uiv=_glUniform3uiv;function _glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var _emscripten_glUniform4f=_glUniform4f;function _glUniform4fv(location,count,value){count&&GLctx.uniform4fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*4)}var _emscripten_glUniform4fv=_glUniform4fv;function _glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(webglGetUniformLocation(location),v0,v1,v2,v3)}var _emscripten_glUniform4i=_glUniform4i;function _glUniform4iv(location,count,value){count&&GLctx.uniform4iv(webglGetUniformLocation(location),HEAP32,value>>2,count*4)}var _emscripten_glUniform4iv=_glUniform4iv;function _glUniform4ui(location,v0,v1,v2,v3){GLctx.uniform4ui(webglGetUniformLocation(location),v0,v1,v2,v3)}var _emscripten_glUniform4ui=_glUniform4ui;function _glUniform4uiv(location,count,value){count&&GLctx.uniform4uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*4)}var _emscripten_glUniform4uiv=_glUniform4uiv;function _glUniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding){program=GL.programs[program];GLctx.uniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding)}var _emscripten_glUniformBlockBinding=_glUniformBlockBinding;function _glUniformMatrix2fv(location,count,transpose,value){count&&GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*4)}var _emscripten_glUniformMatrix2fv=_glUniformMatrix2fv;function _glUniformMatrix2x3fv(location,count,transpose,value){count&&GLctx.uniformMatrix2x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)}var _emscripten_glUniformMatrix2x3fv=_glUniformMatrix2x3fv;function _glUniformMatrix2x4fv(location,count,transpose,value){count&&GLctx.uniformMatrix2x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)}var _emscripten_glUniformMatrix2x4fv=_glUniformMatrix2x4fv;function _glUniformMatrix3fv(location,count,transpose,value){count&&GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*9)}var _emscripten_glUniformMatrix3fv=_glUniformMatrix3fv;function _glUniformMatrix3x2fv(location,count,transpose,value){count&&GLctx.uniformMatrix3x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)}var _emscripten_glUniformMatrix3x2fv=_glUniformMatrix3x2fv;function _glUniformMatrix3x4fv(location,count,transpose,value){count&&GLctx.uniformMatrix3x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)}var _emscripten_glUniformMatrix3x4fv=_glUniformMatrix3x4fv;function _glUniformMatrix4fv(location,count,transpose,value){count&&GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*16)}var _emscripten_glUniformMatrix4fv=_glUniformMatrix4fv;function _glUniformMatrix4x2fv(location,count,transpose,value){count&&GLctx.uniformMatrix4x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)}var _emscripten_glUniformMatrix4x2fv=_glUniformMatrix4x2fv;function _glUniformMatrix4x3fv(location,count,transpose,value){count&&GLctx.uniformMatrix4x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)}var _emscripten_glUniformMatrix4x3fv=_glUniformMatrix4x3fv;function _glUseProgram(program){program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}var _emscripten_glUseProgram=_glUseProgram;function _glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}var _emscripten_glValidateProgram=_glValidateProgram;function _glVertexAttrib1f(x0,x1){GLctx.vertexAttrib1f(x0,x1)}var _emscripten_glVertexAttrib1f=_glVertexAttrib1f;function _glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2])}var _emscripten_glVertexAttrib1fv=_glVertexAttrib1fv;function _glVertexAttrib2f(x0,x1,x2){GLctx.vertexAttrib2f(x0,x1,x2)}var _emscripten_glVertexAttrib2f=_glVertexAttrib2f;function _glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])}var _emscripten_glVertexAttrib2fv=_glVertexAttrib2fv;function _glVertexAttrib3f(x0,x1,x2,x3){GLctx.vertexAttrib3f(x0,x1,x2,x3)}var _emscripten_glVertexAttrib3f=_glVertexAttrib3f;function _glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])}var _emscripten_glVertexAttrib3fv=_glVertexAttrib3fv;function _glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx.vertexAttrib4f(x0,x1,x2,x3,x4)}var _emscripten_glVertexAttrib4f=_glVertexAttrib4f;function _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;function _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;function _glVertexAttribI4i(x0,x1,x2,x3,x4){GLctx.vertexAttribI4i(x0,x1,x2,x3,x4)}var _emscripten_glVertexAttribI4i=_glVertexAttribI4i;function _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;function _glVertexAttribI4ui(x0,x1,x2,x3,x4){GLctx.vertexAttribI4ui(x0,x1,x2,x3,x4)}var _emscripten_glVertexAttribI4ui=_glVertexAttribI4ui;function _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;function _glVertexAttribIPointer(index,size,type,stride,ptr){GLctx.vertexAttribIPointer(index,size,type,stride,ptr)}var _emscripten_glVertexAttribIPointer=_glVertexAttribIPointer;function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}var _emscripten_glVertexAttribPointer=_glVertexAttribPointer;function _glViewport(x0,x1,x2,x3){GLctx.viewport(x0,x1,x2,x3)}var _emscripten_glViewport=_glViewport;function _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;function _emscripten_has_asyncify(){return 0}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function 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)}function _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)}function _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)}function getHeapMax(){return 2147483648}function emscripten_realloc_buffer(size){var b=wasmMemory.buffer;try{wasmMemory.grow(size-b.byteLength+65535>>>16);updateMemoryViews();return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}function _emscripten_sample_gamepad_data(){return(JSEvents.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():null)?0:-1}function registerBeforeUnloadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString){var beforeUnloadEventHandlerFunc=function(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)}function _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")}function registerFocusEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.focusEvent)JSEvents.focusEvent=_malloc(256);var focusEventHandlerFunc=function(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)}function _emscripten_set_blur_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread)}function _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}function _emscripten_set_focus_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread)}function 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&&reportedElement.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}}function registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(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)}function _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)}function registerGamepadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=function(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)}function _emscripten_set_gamepadconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;return registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread)}function _emscripten_set_gamepaddisconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;return registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread)}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread)}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread)}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread)}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=getWasmTableEntry(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function 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;HEAP32[idx+14]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(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)}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread)}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread)}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread)}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread)}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread)}function 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&&pointerLockElement.id?pointerLockElement.id:"";stringToUTF8(nodeName,eventStruct+4,128);stringToUTF8(id,eventStruct+132,128)}function registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.pointerlockChangeEvent)JSEvents.pointerlockChangeEvent=_malloc(260);var pointerlockChangeEventHandlerFunc=function(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)}function _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)}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(e=event){if(e.target!=target){return}var b=document.body;if(!b){return}var uiEvent=JSEvents.uiEvent;HEAP32[uiEvent>>2]=e.detail;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;HEAP32[uiEvent+32>>2]=pageYOffset;if(getWasmTableEntry(callbackfunc)(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread)}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1696);target=findEventTarget(target);var touchEventHandlerFunc=function(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;HEAP32[idx+10]=t.clientY-targetRect.top;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)}function _emscripten_set_touchcancel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread)}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread)}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread)}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread)}function fillVisibilityChangeEventData(eventStruct){var visibilityStates=["hidden","visible","prerender","unloaded"];var visibilityState=visibilityStates.indexOf(document.visibilityState);HEAP32[eventStruct>>2]=document.hidden;HEAP32[eventStruct+4>>2]=visibilityState}function registerVisibilityChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.visibilityChangeEvent)JSEvents.visibilityChangeEvent=_malloc(8);var visibilityChangeEventHandlerFunc=function(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)}function _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)}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(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)}function _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}}function _emscripten_set_window_title(title){setWindowTitle(UTF8ToString(title))}function _emscripten_sleep(){throw"Please compile your program with async support in order to use asynchronous operations like emscripten_sleep"}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function 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}function stringToAscii(str,buffer){for(var i=0;i>0]=str.charCodeAt(i)}HEAP8[buffer>>0]=0}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(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}}function 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}}function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var offset=convertI32PairToI53Checked(offset_low,offset_high);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}}function 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}}function isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function 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];function 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}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[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":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(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":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(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":function(date){return date.tm_zone},"%%":function(){return"%"}};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}function _strftime_l(s,maxsize,format,tm,loc){return _strftime(s,maxsize,format,tm)}var FSNode=function(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};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;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"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};var preloadedImages={};var preloadedAudios={};var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var decodeBase64=typeof atob=="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i0){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();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/olcCodeJam2023Entry/pge.wasm b/olcCodeJam2023Entry/pge.wasm index b7c618c6fe9b706aa565d81a55e08c149afe52c1..54348037efc40a1d4a0f7d62ffc0888661a2daeb 100644 GIT binary patch delta 111656 zcmc${3t$z+^*?@Rckd&~4Y@!_0tvA93L0Jlf)HMkMUa5tt6JZ$s;vgBVr}cUU)vib zXjH6`8=P3MMvXPqsHtFYRIF)DHC42zsHvjHib@qVwtT-$HOl{U&dl!JB%rq6_V;fw zJ9}o%%z4e3nKQF<-+N`zb$b@Iw9XYRn;)J#GS_&aE7iH=AkmTPU2@2GJ6f|!jes2} zHKLAjd8HGWVFVlv6tT~ZMY$q}-Z>-34mh#OF#+eDTeBwx0*kD2XZQVK;3tf@c@Xke zBm{D+H)h9f&P@cItsApv7^QZ=HfI<%aC=fWEuEk2+K?Tq859pVog1>99e0G$BJy@~ z!r2KJ(EtclbL}9fePgz>N3~))djVTB$f=Rp1dmk@a(a>7dJ7X_InA3myQMyx;FR5Y zOSXeo(C9>0(BGD1eRgH3QN)=Wd>Npok}8g^9n=p42(jz-1JtE6jBi2nPZ8sLHfhEU z#dv#*<}xrlkb3Uu>B-icvt!o}iW^SL&DqYjM$R>yE>1XG0Am>#4%G-5?A?@Yn@;1c z*|Dn!IXl5T0I_QZInB3b+m^Fa!K=Y401W?Gwu9FU*LY#3frA!HkI9JRW^j!fiR%Fv z#PtB6TN*ath}nTaj#HJo{g|Q2>fVS`CG@|2BKC|m!l?nQEujBt*gC-W2`7O6Ye=oa z^g-$ro)1#5uozLJZBl4xlWIzGgAEE1ZF;pg0z@wvNE1Ue9-}og#E;eDVgXUNx5Y&R zrUtdTcx{2C3){*tZc&$N(~t~ayM~}eU8VyNO`{9i1`rdO!P^cHQ<*{Bp%C{iAfjB< zP5?;+UiCXYK!6$U!uzh?2z7Qm76fJ@v4_>zjT|(n{%PX&0)`gVKMm^vj0yJI=vA1$ zR;xbOo5i5Ze^uzNBA`?Ev;s zV}}P&YTSnR?Vqz6@la~)M53yys&`FQRa+Y?whN^`5Y7w2neGy`3!v!){F6ueZh+Q_ zq%+LPbxZ95D95=*I6FL1bpwRA9On)Xv=^Y1aC(LFJFl{;FCq)-K}D5Gmes=~)!)3X zs_N|p1gQBU;*q+){M_y%uoZ5YBF|SUq6S zJe(bw^CrA?1!8Z<68zc#LUs@#XuB$jw(WrP@^)|(i0#dB;Eqppnt)-u2!_*~YB~PU z zT|A&_&|Vi2xEj>MAZ}4ZdNm}2R<%#rcLu8(5TcRVcWbHvjH%2Zt^i{F!c|_HF0M&ms;k{uW_a8h||7ilOE!j`2%>bf#^-uHDLIwM2bqiobf2PS+h3SKA zRd_x~o5Es5Re92BS9r|0Zm>fkGUFPw4WPbS-Odm{+75>Ju{vEWmKGb)P8SWBs5?oc zcbAKpk@7AE`L()RLlhpN?a`17RyQD;Iaf7%0b(LEcs&3ymH3m?{PikKrqe~Os={p4 zFXCzsptM?p_jOfS@KbT>vqa8N}VGsV5Ij?$H%`Ynb~IBa5wLQ5)t-pn9BT8oR8QO6b+52(8GRu?ZL)~yWU7ImRE z4auOjYlv^6(*aOFHEsilsmvg52Z*W6w6{YcGMO$}oq&<-JeGHQ0HxF}yzg3#zKMYz zPo>p80Jin(oZWz-dG$~8vzN;C(`pZ3OupA-ufp^ZQFWCj-YZjmRg%#((-hWN2IxmYYMYA)$CxOhO-l{dPG87Vh0h+EW!nl&VY z)}kR9tSx|O8r`~E0b(K*9^3y`z?jSoW}CufI$hLu!1`#l!viR-Zo~WbtJve>p_JMQ z*iHq*L&0_d)}|Dl^qAfaAZSwmG>?0zU_VWF1I9dga^9;jeVXo3cs@w4!qUQEMOUps zgJ>TudR0{erW*7>H2|^PJ;*wS_|a+^!Xng^*ST0|QG@DTG+=7brZup?e*86XF>X

+5-7X+hX_Ui;ALb`Tbq$V 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 fzt@f|P0*?$S;WY2uB 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 delta 109447 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

q?;P{h6?Tcur27@f%Eh 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