From 3ad7d5a725481ba2a6484bead93cf769bd8e2db1 Mon Sep 17 00:00:00 2001 From: "sigonasr2, Sig, Sigo" Date: Tue, 6 Jun 2023 17:01:58 +0000 Subject: [PATCH] Implement basic ball setup and selection --- C++/scripts/md5 | 6 +- C++ProjectTemplate.js | 2 +- C++ProjectTemplate.wasm | Bin 304153 -> 307791 bytes main.cpp | 127 ++++++++++++++++++++++++++++++---------- 4 files changed, 101 insertions(+), 34 deletions(-) diff --git a/C++/scripts/md5 b/C++/scripts/md5 index 5520048..da48c26 100644 --- a/C++/scripts/md5 +++ b/C++/scripts/md5 @@ -1,7 +1,7 @@ build.sh:c073187e65d0e23aa77aa94af4ec6382 - commit.sh:1af81bf417dfb932284d8a14fdd10657 - -debug.sh:849488515cab075948653c15eec4177b - +debug.sh:8125f303032b6cbc137223df63d10096 - lines.sh:3b907786f7fc9204025993016c9080de - -release.sh:0ab321c3fa2f1a1b2f03b1aec3bce816 - +release.sh:b1ce8461a303e8e7aa9ed74259db3873 - temp:d41d8cd98f00b204e9800998ecf8427e - -web.sh:4bbe9c5710a0ae4289468c3f7f340ff1 - +web.sh:dd7eec9825587db99063877da2839506 - diff --git a/C++ProjectTemplate.js b/C++ProjectTemplate.js index 0b4c5fa..f005663 100644 --- a/C++ProjectTemplate.js +++ b/C++ProjectTemplate.js @@ -1 +1 @@ -var Module=typeof Module!="undefined"?Module:{};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,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)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})};if(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",function(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",function(reason){throw reason})}quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow};Module["inspect"]=function(){return"[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.warn.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 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 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}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="C++ProjectTemplate.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(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(binaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(binaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(binaryFile)})}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(function(binary){return WebAssembly.instantiate(binary,imports)}).then(function(instance){return instance}).then(receiver,function(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(function(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={38668:()=>{window.onunload=Module._olc_OnPageUnload},38712:($0,$1)=>{Module._olc_EmscriptenShellCss="width: 100%; height: 70vh; margin-left: auto; margin-right: auto;";Module._olc_WindowAspectRatio=$0/$1;Module.canvas.parentNode.addEventListener("resize",function(e){if(e.defaultPrevented){e.stopPropagation();return}var viewWidth=e.detail.width;var viewHeight=e.detail.width/Module._olc_WindowAspectRatio;if(viewHeight>e.detail.height){viewHeight=e.detail.height;viewWidth=e.detail.height*Module._olc_WindowAspectRatio}if(Module.canvas.parentNode.className=="emscripten_border")Module.canvas.parentNode.style.cssText=Module._olc_EmscriptenShellCss+" width: "+viewWidth.toString()+"px; height: "+viewHeight.toString()+"px;";Module.canvas.setAttribute("width",viewWidth);Module.canvas.setAttribute("height",viewHeight);if(document.fullscreenElement!=null){var top=(e.detail.height-viewHeight)/2;var left=(e.detail.width-viewWidth)/2;Module.canvas.style.position="fixed";Module.canvas.style.top=top.toString()+"px";Module.canvas.style.left=left.toString()+"px";Module.canvas.style.width="";Module.canvas.style.height=""}Module._olc_PGE_UpdateWindowSize(viewWidth,viewHeight);Module.canvas.focus();e.stopPropagation()});Module._olc_ResizeCanvas=function(){setTimeout(function(){if(Module.canvas.parentNode.className=="emscripten_border")Module.canvas.parentNode.style.cssText=Module._olc_EmscriptenShellCss;Module.canvas.style.cssText="width: 100%; height: 100%; outline: none;";var resizeEvent=new CustomEvent("resize",{detail:{width:Module.canvas.clientWidth,height:Module.canvas.clientHeight},bubbles:true,cancelable:true});Module.canvas.dispatchEvent(resizeEvent)},50)};document.body.style.cssText+=" overscroll-behavior-y: contain;";if(Module.canvas.parentNode.className=="emscripten_border"){document.body.style.margin="0";Module.canvas.parentNode.style.cssText=Module._olc_EmscriptenShellCss}Module._olc_ResizeCanvas();var resizeObserver=new ResizeObserver(function(entries){Module._olc_ResizeCanvas()}).observe(Module.canvas.parentNode);var mutationObserver=new MutationObserver(function(mutationsList,observer){for(var i=0;i0){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 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_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};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_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1};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}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw ptr}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 getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return()=>{crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return()=>crypto_module["randomBytes"](1)[0]}catch(e){}}return()=>abort("randomDevice")}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;i0?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 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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{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);var fd=FS.nextfd(fd_start,fd_end);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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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 mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{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},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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload=(()=>{}),onerror=(()=>{}))=>{var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=()=>{ok++;if(ok+fail==total)finish()};putRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:(paths,onload=(()=>{}),onerror=(()=>{}))=>{var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};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.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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){_emscripten_get_now=()=>{var t=process.hrtime();return t[0]*1e3+t[1]/1e6}}else _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(function(){callUserCallback(func)},timeout)}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;if(ENVIRONMENT_IS_NODE)text="warning: "+text;err(text)}}var Browser={mainLoop:{running:false,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause: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;Browser.URLObject.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=event=>{out("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};Module["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)}function fail(){if(done)return;done=true;preloadedAudios[name]=new Audio;if(onerror)onerror()}if(Browser.hasBlobConstructor){try{var b=new Blob([byteArray],{type:Browser.getMimetype(name)})}catch(e){return fail()}var url=Browser.URLObject.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(function(){finish(audio)},1e4)}else{return fail()}};Module["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)}}},handledByPreloadPlugin:function(byteArray,fullname,finish,onerror){Browser.init();var handled=false;Module["preloadPlugins"].forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled},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(function(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"]||function(){};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(function(){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(function(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 _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 _eglGetDisplay(nativeDisplayType){EGL.setErrorCode(12288);return 62e3}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 _eglSwapBuffers(){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}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 _emscripten_cancel_main_loop(){Browser.mainLoop.pause();Browser.mainLoop.func=null}function _emscripten_date_now(){return Date.now()}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}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}let 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}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 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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_blur_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread);return 0}function findCanvasEventTarget(target){return findEventTarget(target)}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 _emscripten_set_focus_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread);return 0}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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=getWasmTableEntry(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);return 0}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);return 0}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);return 0}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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function _emscripten_set_window_title(title){setWindowTitle(UTF8ToString(title))}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 writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)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;writeAsciiToMemory(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.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindBuffer(target,buffer){if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBindVertexArray(vao){GLctx["bindVertexArray"](GL.vaos[vao])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}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)}}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}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}}function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i>2]=id}}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGenVertexArrays(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}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}function _glLinkProgram(program){program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}}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)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glUseProgram(program){program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}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.staticInit();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;var wasmImports={"__cxa_throw":___cxa_throw,"__syscall_fcntl64":___syscall_fcntl64,"__syscall_ioctl":___syscall_ioctl,"__syscall_openat":___syscall_openat,"_emscripten_get_now_is_monotonic":__emscripten_get_now_is_monotonic,"_emscripten_throw_longjmp":__emscripten_throw_longjmp,"abort":_abort,"eglChooseConfig":_eglChooseConfig,"eglCreateContext":_eglCreateContext,"eglCreateWindowSurface":_eglCreateWindowSurface,"eglDestroyContext":_eglDestroyContext,"eglDestroySurface":_eglDestroySurface,"eglGetDisplay":_eglGetDisplay,"eglInitialize":_eglInitialize,"eglMakeCurrent":_eglMakeCurrent,"eglSwapBuffers":_eglSwapBuffers,"eglSwapInterval":_eglSwapInterval,"eglTerminate":_eglTerminate,"emscripten_asm_const_int":_emscripten_asm_const_int,"emscripten_cancel_main_loop":_emscripten_cancel_main_loop,"emscripten_date_now":_emscripten_date_now,"emscripten_get_now":_emscripten_get_now,"emscripten_memcpy_big":_emscripten_memcpy_big,"emscripten_resize_heap":_emscripten_resize_heap,"emscripten_set_blur_callback_on_thread":_emscripten_set_blur_callback_on_thread,"emscripten_set_canvas_element_size":_emscripten_set_canvas_element_size,"emscripten_set_focus_callback_on_thread":_emscripten_set_focus_callback_on_thread,"emscripten_set_keydown_callback_on_thread":_emscripten_set_keydown_callback_on_thread,"emscripten_set_keyup_callback_on_thread":_emscripten_set_keyup_callback_on_thread,"emscripten_set_main_loop":_emscripten_set_main_loop,"emscripten_set_mousedown_callback_on_thread":_emscripten_set_mousedown_callback_on_thread,"emscripten_set_mousemove_callback_on_thread":_emscripten_set_mousemove_callback_on_thread,"emscripten_set_mouseup_callback_on_thread":_emscripten_set_mouseup_callback_on_thread,"emscripten_set_touchend_callback_on_thread":_emscripten_set_touchend_callback_on_thread,"emscripten_set_touchmove_callback_on_thread":_emscripten_set_touchmove_callback_on_thread,"emscripten_set_touchstart_callback_on_thread":_emscripten_set_touchstart_callback_on_thread,"emscripten_set_wheel_callback_on_thread":_emscripten_set_wheel_callback_on_thread,"emscripten_set_window_title":_emscripten_set_window_title,"environ_get":_environ_get,"environ_sizes_get":_environ_sizes_get,"fd_close":_fd_close,"fd_read":_fd_read,"fd_seek":_fd_seek,"fd_write":_fd_write,"glAttachShader":_glAttachShader,"glBindBuffer":_glBindBuffer,"glBindTexture":_glBindTexture,"glBindVertexArray":_glBindVertexArray,"glBlendFunc":_glBlendFunc,"glBufferData":_glBufferData,"glClear":_glClear,"glClearColor":_glClearColor,"glCompileShader":_glCompileShader,"glCreateProgram":_glCreateProgram,"glCreateShader":_glCreateShader,"glDeleteProgram":_glDeleteProgram,"glDeleteShader":_glDeleteShader,"glDeleteTextures":_glDeleteTextures,"glDrawArrays":_glDrawArrays,"glEnable":_glEnable,"glEnableVertexAttribArray":_glEnableVertexAttribArray,"glGenBuffers":_glGenBuffers,"glGenTextures":_glGenTextures,"glGenVertexArrays":_glGenVertexArrays,"glGetShaderInfoLog":_glGetShaderInfoLog,"glLinkProgram":_glLinkProgram,"glReadPixels":_glReadPixels,"glShaderSource":_glShaderSource,"glTexImage2D":_glTexImage2D,"glTexParameteri":_glTexParameteri,"glUseProgram":_glUseProgram,"glVertexAttribPointer":_glVertexAttribPointer,"glViewport":_glViewport,"invoke_ii":invoke_ii,"invoke_iii":invoke_iii,"invoke_iiii":invoke_iiii,"invoke_iiiii":invoke_iiiii,"invoke_vi":invoke_vi,"invoke_vii":invoke_vii,"invoke_viii":invoke_viii,"invoke_viiii":invoke_viiii,"invoke_viiiiii":invoke_viiiiii,"strftime_l":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=function(){return(___wasm_call_ctors=Module["asm"]["__wasm_call_ctors"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["main"]).apply(null,arguments)};var _memcpy=function(){return(_memcpy=Module["asm"]["memcpy"]).apply(null,arguments)};var _olc_OnPageUnload=Module["_olc_OnPageUnload"]=function(){return(_olc_OnPageUnload=Module["_olc_OnPageUnload"]=Module["asm"]["olc_OnPageUnload"]).apply(null,arguments)};var _olc_PGE_UpdateWindowSize=Module["_olc_PGE_UpdateWindowSize"]=function(){return(_olc_PGE_UpdateWindowSize=Module["_olc_PGE_UpdateWindowSize"]=Module["asm"]["olc_PGE_UpdateWindowSize"]).apply(null,arguments)};var _malloc=function(){return(_malloc=Module["asm"]["malloc"]).apply(null,arguments)};var _saveSetjmp=function(){return(_saveSetjmp=Module["asm"]["saveSetjmp"]).apply(null,arguments)};var _free=function(){return(_free=Module["asm"]["free"]).apply(null,arguments)};var ___errno_location=function(){return(___errno_location=Module["asm"]["__errno_location"]).apply(null,arguments)};var ___dl_seterr=function(){return(___dl_seterr=Module["asm"]["__dl_seterr"]).apply(null,arguments)};var _setThrew=function(){return(_setThrew=Module["asm"]["setThrew"]).apply(null,arguments)};var stackSave=function(){return(stackSave=Module["asm"]["stackSave"]).apply(null,arguments)};var stackRestore=function(){return(stackRestore=Module["asm"]["stackRestore"]).apply(null,arguments)};var stackAlloc=function(){return(stackAlloc=Module["asm"]["stackAlloc"]).apply(null,arguments)};var ___cxa_is_pointer_type=function(){return(___cxa_is_pointer_type=Module["asm"]["__cxa_is_pointer_type"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["dynCall_viijii"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["dynCall_jiji"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["dynCall_iiiiij"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["dynCall_iiiiijj"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["dynCall_iiiiiijj"]).apply(null,arguments)};function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(){var entryFunction=_main;var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); +var Module=typeof Module!="undefined"?Module:{};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,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="C++ProjectTemplate.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={40156:()=>{window.onunload=Module._olc_OnPageUnload},40200:($0,$1)=>{Module._olc_EmscriptenShellCss="width: 100%; height: 70vh; margin-left: auto; margin-right: auto;";Module._olc_WindowAspectRatio=$0/$1;Module.canvas.parentNode.addEventListener("resize",function(e){if(e.defaultPrevented){e.stopPropagation();return}var viewWidth=e.detail.width;var viewHeight=e.detail.width/Module._olc_WindowAspectRatio;if(viewHeight>e.detail.height){viewHeight=e.detail.height;viewWidth=e.detail.height*Module._olc_WindowAspectRatio}if(Module.canvas.parentNode.className=="emscripten_border")Module.canvas.parentNode.style.cssText=Module._olc_EmscriptenShellCss+" width: "+viewWidth.toString()+"px; height: "+viewHeight.toString()+"px;";Module.canvas.setAttribute("width",viewWidth);Module.canvas.setAttribute("height",viewHeight);if(document.fullscreenElement!=null){var top=(e.detail.height-viewHeight)/2;var left=(e.detail.width-viewWidth)/2;Module.canvas.style.position="fixed";Module.canvas.style.top=top.toString()+"px";Module.canvas.style.left=left.toString()+"px";Module.canvas.style.width="";Module.canvas.style.height=""}Module._olc_PGE_UpdateWindowSize(viewWidth,viewHeight);Module.canvas.focus();e.stopPropagation()});Module._olc_ResizeCanvas=function(){setTimeout(function(){if(Module.canvas.parentNode.className=="emscripten_border")Module.canvas.parentNode.style.cssText=Module._olc_EmscriptenShellCss;Module.canvas.style.cssText="width: 100%; height: 100%; outline: none;";var resizeEvent=new CustomEvent("resize",{detail:{width:Module.canvas.clientWidth,height:Module.canvas.clientHeight},bubbles:true,cancelable:true});Module.canvas.dispatchEvent(resizeEvent)},50)};document.body.style.cssText+=" overscroll-behavior-y: contain;";if(Module.canvas.parentNode.className=="emscripten_border"){document.body.style.margin="0";Module.canvas.parentNode.style.cssText=Module._olc_EmscriptenShellCss}Module._olc_ResizeCanvas();var resizeObserver=new ResizeObserver(function(entries){Module._olc_ResizeCanvas()}).observe(Module.canvas.parentNode);var mutationObserver=new MutationObserver(function(mutationsList,observer){for(var i=0;i0){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 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}}var exceptionLast=0;var uncaughtExceptionCount=0;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 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}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}};function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}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 _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 _eglGetDisplay(nativeDisplayType){EGL.setErrorCode(12288);return 62e3}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 _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}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 _emscripten_cancel_main_loop(){Browser.mainLoop.pause();Browser.mainLoop.func=null}function _emscripten_date_now(){return Date.now()}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function getHeapMax(){return 2147483648}function emscripten_realloc_buffer(size){var b=wasmMemory.buffer;var pages=size-b.byteLength+65535>>>16;try{wasmMemory.grow(pages);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}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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}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 findCanvasEventTarget(target){return findEventTarget(target)}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 _emscripten_set_focus_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",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_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 getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}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_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 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_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 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))}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 _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindBuffer(target,buffer){if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBindVertexArray(vao){GLctx.bindVertexArray(GL.vaos[vao])}var _glBindVertexArrayOES=_glBindVertexArray;function _glBlendFunc(x0,x1){GLctx.blendFunc(x0,x1)}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)}}function _glClear(x0){GLctx.clear(x0)}function _glClearColor(x0,x1,x2,x3){GLctx.clearColor(x0,x1,x2,x3)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}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}}function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _glEnable(x0){GLctx.enable(x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i>2]=id}}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGenVertexArrays(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}var _glGenVertexArraysOES=_glGenVertexArrays;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}function _glLinkProgram(program){program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}}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)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}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)}function _glTexParameteri(x0,x1,x2){GLctx.texParameteri(x0,x1,x2)}function _glUseProgram(program){program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx.viewport(x0,x1,x2,x3)}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["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;var wasmImports={"__cxa_throw":___cxa_throw,"__syscall_fcntl64":___syscall_fcntl64,"__syscall_ioctl":___syscall_ioctl,"__syscall_openat":___syscall_openat,"_emscripten_get_now_is_monotonic":__emscripten_get_now_is_monotonic,"_emscripten_throw_longjmp":__emscripten_throw_longjmp,"abort":_abort,"eglChooseConfig":_eglChooseConfig,"eglCreateContext":_eglCreateContext,"eglCreateWindowSurface":_eglCreateWindowSurface,"eglDestroyContext":_eglDestroyContext,"eglDestroySurface":_eglDestroySurface,"eglGetDisplay":_eglGetDisplay,"eglInitialize":_eglInitialize,"eglMakeCurrent":_eglMakeCurrent,"eglSwapBuffers":_eglSwapBuffers,"eglSwapInterval":_eglSwapInterval,"eglTerminate":_eglTerminate,"emscripten_asm_const_int":_emscripten_asm_const_int,"emscripten_cancel_main_loop":_emscripten_cancel_main_loop,"emscripten_date_now":_emscripten_date_now,"emscripten_get_now":_emscripten_get_now,"emscripten_memcpy_big":_emscripten_memcpy_big,"emscripten_resize_heap":_emscripten_resize_heap,"emscripten_set_blur_callback_on_thread":_emscripten_set_blur_callback_on_thread,"emscripten_set_canvas_element_size":_emscripten_set_canvas_element_size,"emscripten_set_focus_callback_on_thread":_emscripten_set_focus_callback_on_thread,"emscripten_set_keydown_callback_on_thread":_emscripten_set_keydown_callback_on_thread,"emscripten_set_keyup_callback_on_thread":_emscripten_set_keyup_callback_on_thread,"emscripten_set_main_loop":_emscripten_set_main_loop,"emscripten_set_mousedown_callback_on_thread":_emscripten_set_mousedown_callback_on_thread,"emscripten_set_mousemove_callback_on_thread":_emscripten_set_mousemove_callback_on_thread,"emscripten_set_mouseup_callback_on_thread":_emscripten_set_mouseup_callback_on_thread,"emscripten_set_touchend_callback_on_thread":_emscripten_set_touchend_callback_on_thread,"emscripten_set_touchmove_callback_on_thread":_emscripten_set_touchmove_callback_on_thread,"emscripten_set_touchstart_callback_on_thread":_emscripten_set_touchstart_callback_on_thread,"emscripten_set_wheel_callback_on_thread":_emscripten_set_wheel_callback_on_thread,"emscripten_set_window_title":_emscripten_set_window_title,"environ_get":_environ_get,"environ_sizes_get":_environ_sizes_get,"fd_close":_fd_close,"fd_read":_fd_read,"fd_seek":_fd_seek,"fd_write":_fd_write,"glAttachShader":_glAttachShader,"glBindBuffer":_glBindBuffer,"glBindTexture":_glBindTexture,"glBindVertexArrayOES":_glBindVertexArrayOES,"glBlendFunc":_glBlendFunc,"glBufferData":_glBufferData,"glClear":_glClear,"glClearColor":_glClearColor,"glCompileShader":_glCompileShader,"glCreateProgram":_glCreateProgram,"glCreateShader":_glCreateShader,"glDeleteProgram":_glDeleteProgram,"glDeleteShader":_glDeleteShader,"glDeleteTextures":_glDeleteTextures,"glDrawArrays":_glDrawArrays,"glEnable":_glEnable,"glEnableVertexAttribArray":_glEnableVertexAttribArray,"glGenBuffers":_glGenBuffers,"glGenTextures":_glGenTextures,"glGenVertexArraysOES":_glGenVertexArraysOES,"glGetShaderInfoLog":_glGetShaderInfoLog,"glLinkProgram":_glLinkProgram,"glReadPixels":_glReadPixels,"glShaderSource":_glShaderSource,"glTexImage2D":_glTexImage2D,"glTexParameteri":_glTexParameteri,"glUseProgram":_glUseProgram,"glVertexAttribPointer":_glVertexAttribPointer,"glViewport":_glViewport,"invoke_ii":invoke_ii,"invoke_iii":invoke_iii,"invoke_iiii":invoke_iiii,"invoke_iiiii":invoke_iiiii,"invoke_vi":invoke_vi,"invoke_vii":invoke_vii,"invoke_viii":invoke_viii,"invoke_viiii":invoke_viiii,"invoke_viiiiii":invoke_viiiiii,"strftime_l":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=function(){return(___wasm_call_ctors=Module["asm"]["__wasm_call_ctors"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["main"]).apply(null,arguments)};var _olc_OnPageUnload=Module["_olc_OnPageUnload"]=function(){return(_olc_OnPageUnload=Module["_olc_OnPageUnload"]=Module["asm"]["olc_OnPageUnload"]).apply(null,arguments)};var _olc_PGE_UpdateWindowSize=Module["_olc_PGE_UpdateWindowSize"]=function(){return(_olc_PGE_UpdateWindowSize=Module["_olc_PGE_UpdateWindowSize"]=Module["asm"]["olc_PGE_UpdateWindowSize"]).apply(null,arguments)};var _malloc=function(){return(_malloc=Module["asm"]["malloc"]).apply(null,arguments)};var ___errno_location=function(){return(___errno_location=Module["asm"]["__errno_location"]).apply(null,arguments)};var _setThrew=function(){return(_setThrew=Module["asm"]["setThrew"]).apply(null,arguments)};var stackSave=function(){return(stackSave=Module["asm"]["stackSave"]).apply(null,arguments)};var stackRestore=function(){return(stackRestore=Module["asm"]["stackRestore"]).apply(null,arguments)};var stackAlloc=function(){return(stackAlloc=Module["asm"]["stackAlloc"]).apply(null,arguments)};var ___cxa_is_pointer_type=function(){return(___cxa_is_pointer_type=Module["asm"]["__cxa_is_pointer_type"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["dynCall_viijii"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["dynCall_jiji"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["dynCall_iiiiij"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["dynCall_iiiiijj"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["dynCall_iiiiiijj"]).apply(null,arguments)};function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(){var entryFunction=_main;var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain();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/C++ProjectTemplate.wasm b/C++ProjectTemplate.wasm index 2fa1fe3ffed38a86730d83dc1bb4c3e9db159753..4a0cc22eb5df267a62c649360f82a873b3e43cc3 100755 GIT binary patch delta 123785 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%0A;T?$+J$zY!uzR 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 F{{SaVox%VB delta 120697 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

4**YHQo?b}MM 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 zballs; + Ball*selectedBall; + + MiniGolfPro() { - sAppName = "Example"; + sAppName = "Mini Golf Pro"; + } + + void AddBall(vf2d pos,float r){ + Ball b; + b.pos=pos; + b.radius=r; + b.mass=r*10; + balls.emplace_back(b); } public: - olc::Key last; bool OnUserCreate() override { - std::cout<<"Test"<pos.x=GetMouseX(); + selectedBall->pos.y=GetMouseY(); + } + } + if(GetMouse(0).bReleased){ + selectedBall=nullptr; + } + if(GetMouse(1).bReleased){ + if(selectedBall!=nullptr){ + selectedBall->vel.x=5*(selectedBall->pos.x-(float)GetMouseX()); + selectedBall->vel.y=5*(selectedBall->pos.y-(float)GetMouseY()); + } + selectedBall=nullptr; + } + Clear(BLACK); - DrawString({0,0},std::to_string(last)); + for(Ball&b:balls){ + b.acc.x=-b.vel.x*0.8f; + b.acc.y=-b.vel.y*0.8f; + b.vel.x+=b.acc.x*fElapsedTime; + b.vel.y+=b.acc.y*fElapsedTime; + b.pos.x+=b.vel.x*fElapsedTime; + b.pos.y+=b.vel.y*fElapsedTime; + + if(b.pos.x<0){ + b.pos.x+=ScreenWidth(); + } + if(b.pos.y<0){ + b.pos.y+=ScreenHeight(); + } + if(b.pos.x>=ScreenWidth()){ + b.pos.x-=ScreenWidth(); + } + if(b.pos.y>=ScreenHeight()){ + b.pos.y-=ScreenHeight(); + } + + if(fabs(b.vel.x*b.vel.x+b.vel.y*b.vel.y)<0.01){ + b.vel.x=0; + b.vel.y=0; + } + } + + for(Ball&b:balls){ + if(selectedBall==&b){ + FillCircle(b.pos,b.radius,YELLOW); + } else { + FillCircle(b.pos,b.radius); + } + } return true; } bool OnUserDestroy()override{ return true; } - - void GetAnyKeyPress(olc::Key pressed)override{ - last=pressed; - } -}; - -enum Direction{ - RIGHT, - DOWN, - LEFT, - UP -}; - -struct Data{ - int x,y; }; int main() { - Example demo; + MiniGolfPro demo; if (demo.Construct(640, 480, 4, 4)) demo.Start();