From d8ab1cd51df847ca2419b13feece4cb5c6a453ab Mon Sep 17 00:00:00 2001 From: jaysmito Date: Sun, 2 Feb 2025 02:43:29 +0530 Subject: [PATCH] feat: add neopeed to demos --- builds/neopeed/cglweb.js | 1 + builds/neopeed/cglweb.wasm | Bin 0 -> 134342 bytes builds/neopeed/index.html | 93 +++++++++++++++++++++++++++++++++++++ builds/neopeed/thumb.png | Bin 0 -> 51264 bytes db.json | 13 ++++++ 5 files changed, 107 insertions(+) create mode 100644 builds/neopeed/cglweb.js create mode 100644 builds/neopeed/cglweb.wasm create mode 100644 builds/neopeed/index.html create mode 100644 builds/neopeed/thumb.png diff --git a/builds/neopeed/cglweb.js b/builds/neopeed/cglweb.js new file mode 100644 index 0000000..2364d08 --- /dev/null +++ b/builds/neopeed/cglweb.js @@ -0,0 +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;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();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 instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});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 POINTER_SIZE=4;function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}function convertJsFunctionToWasm(func,sig){if(typeof WebAssembly.Function=="function"){var typeNames={"i":"i32","j":"i64","f":"f32","d":"f64"};var type={parameters:[],results:sig[0]=="v"?[]:[typeNames[sig[0]]]};for(var i=1;i{tempRet0=value};var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}function setValue(ptr,value,type="i8",noSafe){if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}function getCFunc(ident){var func=Module["_"+ident];return func}function ccall(ident,returnType,argTypes,args,opts){var toC={"string":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},"array":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string")return UTF8ToString(ret);if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,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&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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 exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 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="cglweb.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"env":asmLibraryArg,"wasi_snapshot_preview1":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["memory"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["__indirect_function_table"];addOnInit(Module["asm"]["__wasm_call_ctors"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){getWasmTableEntry(func)()}else{getWasmTableEntry(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function demangle(func){return func}function demangleAll(text){var regex=/\b_Z[\w\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:y+" ["+x+"]"})}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 handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function jsStackTrace(){var error=new Error;if(!error.stack){try{throw new Error}catch(e){error=e}if(!error.stack){return"(no stack trace available)"}}return error.stack.toString()}function setWasmTableEntry(idx,func){wasmTable.set(idx,func);wasmTableMirror[idx]=func}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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){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)}},flush: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)}},flush: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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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(){};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}}}}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,fd_start,fd_end)=>{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){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},fd_start,fd_end);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,address,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,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!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.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 ret.object}else{return null}},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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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)=>{onload=onload||(()=>{});onerror=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)=>{onload=onload||(()=>{});onerror=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[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);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+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;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;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;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+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},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},get64:function(low,high){return low}};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.open(stream.path,stream.flags,0,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 instanceof FS.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:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __localtime_js(time,tmPtr){var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var start=new Date(date.getFullYear(),0,1);var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}function _tzset_impl(timezone,daylight,tzname){var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAP32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);function extractZone(date){var match=date.toTimeString().match(/\(([A-Za-z ]+)\)$/);return match?match[1]:"GMT"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocateUTF8(winterName);var summerNamePtr=allocateUTF8(summerName);if(summerOffset>2]=winterNamePtr;HEAP32[tzname+4>>2]=summerNamePtr}else{HEAP32[tzname>>2]=summerNamePtr;HEAP32[tzname+4>>2]=winterNamePtr}}function __tzset_js(timezone,daylight,tzname){if(__tzset_js.called)return;__tzset_js.called=true;_tzset_impl(timezone,daylight,tzname)}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 __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}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:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],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>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i1?canvas.getContext("webgl2",webGLContextAttributes):canvas.getContext("webgl",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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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 _emscripten_glActiveTexture(x0){GLctx["activeTexture"](x0)}function _emscripten_glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glBeginQuery(target,id){GLctx["beginQuery"](target,GL.queries[id])}function _emscripten_glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.queries[id])}function _emscripten_glBeginTransformFeedback(x0){GLctx["beginTransformFeedback"](x0)}function _emscripten_glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _emscripten_glBindBuffer(target,buffer){if(target==34962){GLctx.currentArrayBufferBinding=buffer}else if(target==34963){GLctx.currentElementArrayBufferBinding=buffer}if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])}function _emscripten_glBindBufferBase(target,index,buffer){GLctx["bindBufferBase"](target,index,GL.buffers[buffer])}function _emscripten_glBindBufferRange(target,index,buffer,offset,ptrsize){GLctx["bindBufferRange"](target,index,GL.buffers[buffer],offset,ptrsize)}function _emscripten_glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _emscripten_glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _emscripten_glBindSampler(unit,sampler){GLctx["bindSampler"](unit,GL.samplers[sampler])}function _emscripten_glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _emscripten_glBindTransformFeedback(target,id){GLctx["bindTransformFeedback"](target,GL.transformFeedbacks[id])}function _emscripten_glBindVertexArray(vao){GLctx["bindVertexArray"](GL.vaos[vao]);var ibo=GLctx.getParameter(34965);GLctx.currentElementArrayBufferBinding=ibo?ibo.name|0:0}function _emscripten_glBindVertexArrayOES(vao){GLctx["bindVertexArray"](GL.vaos[vao]);var ibo=GLctx.getParameter(34965);GLctx.currentElementArrayBufferBinding=ibo?ibo.name|0:0}function _emscripten_glBlendColor(x0,x1,x2,x3){GLctx["blendColor"](x0,x1,x2,x3)}function _emscripten_glBlendEquation(x0){GLctx["blendEquation"](x0)}function _emscripten_glBlendEquationSeparate(x0,x1){GLctx["blendEquationSeparate"](x0,x1)}function _emscripten_glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _emscripten_glBlendFuncSeparate(x0,x1,x2,x3){GLctx["blendFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glBlitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9){GLctx["blitFramebuffer"](x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)}function _emscripten_glBufferData(target,size,data,usage){if(GL.currentContext.version>=2){if(data){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 _emscripten_glBufferSubData(target,offset,size,data){if(GL.currentContext.version>=2){GLctx.bufferSubData(target,offset,HEAPU8,data,size);return}GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _emscripten_glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _emscripten_glClear(x0){GLctx["clear"](x0)}function _emscripten_glClearBufferfi(x0,x1,x2,x3){GLctx["clearBufferfi"](x0,x1,x2,x3)}function _emscripten_glClearBufferfv(buffer,drawbuffer,value){GLctx["clearBufferfv"](buffer,drawbuffer,HEAPF32,value>>2)}function _emscripten_glClearBufferiv(buffer,drawbuffer,value){GLctx["clearBufferiv"](buffer,drawbuffer,HEAP32,value>>2)}function _emscripten_glClearBufferuiv(buffer,drawbuffer,value){GLctx["clearBufferuiv"](buffer,drawbuffer,HEAPU32,value>>2)}function _emscripten_glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _emscripten_glClearDepthf(x0){GLctx["clearDepth"](x0)}function _emscripten_glClearStencil(x0){GLctx["clearStencil"](x0)}function convertI32PairToI53(lo,hi){return(lo>>>0)+hi*4294967296}function _emscripten_glClientWaitSync(sync,flags,timeoutLo,timeoutHi){return GLctx.clientWaitSync(GL.syncs[sync],flags,convertI32PairToI53(timeoutLo,timeoutHi))}function _emscripten_glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}function _emscripten_glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _emscripten_glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,imageSize,data)}else{GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,HEAPU8,data,imageSize)}return}GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCompressedTexImage3D(target,level,internalFormat,width,height,depth,border,imageSize,data){if(GLctx.currentPixelUnpackBufferBinding){GLctx["compressedTexImage3D"](target,level,internalFormat,width,height,depth,border,imageSize,data)}else{GLctx["compressedTexImage3D"](target,level,internalFormat,width,height,depth,border,HEAPU8,data,imageSize)}}function _emscripten_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,imageSize,data)}else{GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,HEAPU8,data,imageSize)}return}GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCompressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data){if(GLctx.currentPixelUnpackBufferBinding){GLctx["compressedTexSubImage3D"](target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)}else{GLctx["compressedTexSubImage3D"](target,level,xoffset,yoffset,zoffset,width,height,depth,format,HEAPU8,data,imageSize)}}function _emscripten_glCopyBufferSubData(x0,x1,x2,x3,x4){GLctx["copyBufferSubData"](x0,x1,x2,x3,x4)}function _emscripten_glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexSubImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCopyTexSubImage3D(x0,x1,x2,x3,x4,x5,x6,x7,x8){GLctx["copyTexSubImage3D"](x0,x1,x2,x3,x4,x5,x6,x7,x8)}function _emscripten_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 _emscripten_glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _emscripten_glCullFace(x0){GLctx["cullFace"](x0)}function _emscripten_glDeleteBuffers(n,buffers){for(var i=0;i>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null;if(id==GLctx.currentArrayBufferBinding)GLctx.currentArrayBufferBinding=0;if(id==GLctx.currentElementArrayBufferBinding)GLctx.currentElementArrayBufferBinding=0;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}}function _emscripten_glDeleteFramebuffers(n,framebuffers){for(var i=0;i>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _emscripten_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 _emscripten_glDeleteQueries(n,ids){for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx["deleteQuery"](query);GL.queries[id]=null}}function _emscripten_glDeleteQueriesEXT(n,ids){for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.queries[id]=null}}function _emscripten_glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}function _emscripten_glDeleteSamplers(n,samplers){for(var i=0;i>2];var sampler=GL.samplers[id];if(!sampler)continue;GLctx["deleteSampler"](sampler);sampler.name=0;GL.samplers[id]=null}}function _emscripten_glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _emscripten_glDeleteSync(id){if(!id)return;var sync=GL.syncs[id];if(!sync){GL.recordError(1281);return}GLctx.deleteSync(sync);sync.name=0;GL.syncs[id]=null}function _emscripten_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 _emscripten_glDeleteTransformFeedbacks(n,ids){for(var i=0;i>2];var transformFeedback=GL.transformFeedbacks[id];if(!transformFeedback)continue;GLctx["deleteTransformFeedback"](transformFeedback);transformFeedback.name=0;GL.transformFeedbacks[id]=null}}function _emscripten_glDeleteVertexArrays(n,vaos){for(var i=0;i>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _emscripten_glDeleteVertexArraysOES(n,vaos){for(var i=0;i>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _emscripten_glDepthFunc(x0){GLctx["depthFunc"](x0)}function _emscripten_glDepthMask(flag){GLctx.depthMask(!!flag)}function _emscripten_glDepthRangef(x0,x1){GLctx["depthRange"](x0,x1)}function _emscripten_glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glDisable(x0){GLctx["disable"](x0)}function _emscripten_glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _emscripten_glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}function _emscripten_glDrawArraysInstanced(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}function _emscripten_glDrawArraysInstancedANGLE(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}function _emscripten_glDrawArraysInstancedARB(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}function _emscripten_glDrawArraysInstancedEXT(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}function _emscripten_glDrawArraysInstancedNV(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}var tempFixedLengthArray=[];function _emscripten_glDrawBuffers(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx["drawBuffers"](bufArray)}function _emscripten_glDrawBuffersEXT(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx["drawBuffers"](bufArray)}function _emscripten_glDrawBuffersWEBGL(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx["drawBuffers"](bufArray)}function _emscripten_glDrawElements(mode,count,type,indices){var buf;if(!GLctx.currentElementArrayBufferBinding){var size=GL.calcBufLength(1,type,0,count);buf=GL.getTempIndexBuffer(size);GLctx.bindBuffer(34963,buf);GLctx.bufferSubData(34963,0,HEAPU8.subarray(indices,indices+size));indices=0}GL.preDrawHandleClientVertexAttribBindings(count);GLctx.drawElements(mode,count,type,indices);GL.postDrawHandleClientVertexAttribBindings(count);if(!GLctx.currentElementArrayBufferBinding){GLctx.bindBuffer(34963,null)}}function _emscripten_glDrawElementsInstanced(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _emscripten_glDrawElementsInstancedANGLE(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _emscripten_glDrawElementsInstancedARB(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _emscripten_glDrawElementsInstancedEXT(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _emscripten_glDrawElementsInstancedNV(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _glDrawElements(mode,count,type,indices){var buf;if(!GLctx.currentElementArrayBufferBinding){var size=GL.calcBufLength(1,type,0,count);buf=GL.getTempIndexBuffer(size);GLctx.bindBuffer(34963,buf);GLctx.bufferSubData(34963,0,HEAPU8.subarray(indices,indices+size));indices=0}GL.preDrawHandleClientVertexAttribBindings(count);GLctx.drawElements(mode,count,type,indices);GL.postDrawHandleClientVertexAttribBindings(count);if(!GLctx.currentElementArrayBufferBinding){GLctx.bindBuffer(34963,null)}}function _emscripten_glDrawRangeElements(mode,start,end,count,type,indices){_glDrawElements(mode,count,type,indices)}function _emscripten_glEnable(x0){GLctx["enable"](x0)}function _emscripten_glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _emscripten_glEndQuery(x0){GLctx["endQuery"](x0)}function _emscripten_glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)}function _emscripten_glEndTransformFeedback(){GLctx["endTransformFeedback"]()}function _emscripten_glFenceSync(condition,flags){var sync=GLctx.fenceSync(condition,flags);if(sync){var id=GL.getNewId(GL.syncs);sync.name=id;GL.syncs[id]=sync;return id}else{return 0}}function _emscripten_glFinish(){GLctx["finish"]()}function _emscripten_glFlush(){GLctx["flush"]()}function emscriptenWebGLGetBufferBinding(target){switch(target){case 34962:target=34964;break;case 34963:target=34965;break;case 35051:target=35053;break;case 35052:target=35055;break;case 35982:target=35983;break;case 36662:target=36662;break;case 36663:target=36663;break;case 35345:target=35368;break}var buffer=GLctx.getParameter(target);if(buffer)return buffer.name|0;else return 0}function emscriptenWebGLValidateMapBufferTarget(target){switch(target){case 34962:case 34963:case 36662:case 36663:case 35051:case 35052:case 35882:case 35982:case 35345:return true;default:return false}}function _emscripten_glFlushMappedBufferRange(target,offset,length){if(!emscriptenWebGLValidateMapBufferTarget(target)){GL.recordError(1280);err("GL_INVALID_ENUM in glFlushMappedBufferRange");return}var mapping=GL.mappedBuffers[emscriptenWebGLGetBufferBinding(target)];if(!mapping){GL.recordError(1282);err("buffer was never mapped in glFlushMappedBufferRange");return}if(!(mapping.access&16)){GL.recordError(1282);err("buffer was not mapped with GL_MAP_FLUSH_EXPLICIT_BIT in glFlushMappedBufferRange");return}if(offset<0||length<0||offset+length>mapping.length){GL.recordError(1281);err("invalid range in glFlushMappedBufferRange");return}GLctx.bufferSubData(target,mapping.offset,HEAPU8.subarray(mapping.mem+offset,mapping.mem+offset+length))}function _emscripten_glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _emscripten_glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _emscripten_glFramebufferTextureLayer(target,attachment,texture,level,layer){GLctx.framebufferTextureLayer(target,attachment,GL.textures[texture],level,layer)}function _emscripten_glFrontFace(x0){GLctx["frontFace"](x0)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i>2]=id}}function _emscripten_glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _emscripten_glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _emscripten_glGenQueries(n,ids){__glGenObject(n,ids,"createQuery",GL.queries)}function _emscripten_glGenQueriesEXT(n,ids){for(var i=0;i>2]=0;return}var id=GL.getNewId(GL.queries);query.name=id;GL.queries[id]=query;HEAP32[ids+i*4>>2]=id}}function _emscripten_glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _emscripten_glGenSamplers(n,samplers){__glGenObject(n,samplers,"createSampler",GL.samplers)}function _emscripten_glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _emscripten_glGenTransformFeedbacks(n,ids){__glGenObject(n,ids,"createTransformFeedback",GL.transformFeedbacks)}function _emscripten_glGenVertexArrays(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _emscripten_glGenVertexArraysOES(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _emscripten_glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function __glGetActiveAttribOrUniform(funcName,program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}}function _emscripten_glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}function _emscripten_glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}function _emscripten_glGetActiveUniformBlockName(program,uniformBlockIndex,bufSize,length,uniformBlockName){program=GL.programs[program];var result=GLctx["getActiveUniformBlockName"](program,uniformBlockIndex);if(!result)return;if(uniformBlockName&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(result,uniformBlockName,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}}function _emscripten_glGetActiveUniformBlockiv(program,uniformBlockIndex,pname,params){if(!params){GL.recordError(1281);return}program=GL.programs[program];if(pname==35393){var name=GLctx["getActiveUniformBlockName"](program,uniformBlockIndex);HEAP32[params>>2]=name.length+1;return}var result=GLctx["getActiveUniformBlockParameter"](program,uniformBlockIndex,pname);if(result===null)return;if(pname==35395){for(var i=0;i>2]=result[i]}}else{HEAP32[params>>2]=result}}function _emscripten_glGetActiveUniformsiv(program,uniformCount,uniformIndices,pname,params){if(!params){GL.recordError(1281);return}if(uniformCount>0&&uniformIndices==0){GL.recordError(1281);return}program=GL.programs[program];var ids=[];for(var i=0;i>2])}var result=GLctx["getActiveUniforms"](program,ids,pname);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}}function _emscripten_glGetAttachedShaders(program,maxCount,count,shaders){var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i>2]=id}}function _emscripten_glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 34814:case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break;case 33309:if(GL.currentContext.version<2){GL.recordError(1282);return}var exts=GLctx.getSupportedExtensions()||[];ret=2*exts.length;break;case 33307:case 33308:if(GL.currentContext.version<2){GL.recordError(1280);return}ret=name_==33307?3:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _emscripten_glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4)}function _emscripten_glGetBufferParameteri64v(target,value,data){if(!data){GL.recordError(1281);return}writeI53ToI64(data,GLctx.getBufferParameter(target,value))}function _emscripten_glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)}function _emscripten_glGetBufferPointerv(target,pname,params){if(pname==35005){var ptr=0;var mappedBuffer=GL.mappedBuffers[emscriptenWebGLGetBufferBinding(target)];if(mappedBuffer){ptr=mappedBuffer.mem}HEAP32[params>>2]=ptr}else{GL.recordError(1280);err("GL_INVALID_ENUM in glGetBufferPointerv")}}function _emscripten_glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function _emscripten_glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _emscripten_glGetFragDataLocation(program,name){return GLctx["getFragDataLocation"](GL.programs[program],UTF8ToString(name))}function _emscripten_glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result}function emscriptenWebGLGetIndexed(target,index,data,type){if(!data){GL.recordError(1281);return}var result=GLctx["getIndexedParameter"](target,index);var ret;switch(typeof result){case"boolean":ret=result?1:0;break;case"number":ret=result;break;case"object":if(result===null){switch(target){case 35983:case 35368:ret=0;break;default:{GL.recordError(1280);return}}}else if(result instanceof WebGLBuffer){ret=result.name|0}else{GL.recordError(1280);return}break;default:GL.recordError(1280);return}switch(type){case 1:writeI53ToI64(data,ret);break;case 0:HEAP32[data>>2]=ret;break;case 2:HEAPF32[data>>2]=ret;break;case 4:HEAP8[data>>0]=ret?1:0;break;default:throw"internal emscriptenWebGLGetIndexed() error, bad type: "+type}}function _emscripten_glGetInteger64i_v(target,index,data){emscriptenWebGLGetIndexed(target,index,data,1)}function _emscripten_glGetInteger64v(name_,p){emscriptenWebGLGet(name_,p,1)}function _emscripten_glGetIntegeri_v(target,index,data){emscriptenWebGLGetIndexed(target,index,data,0)}function _emscripten_glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _emscripten_glGetInternalformativ(target,internalformat,pname,bufSize,params){if(bufSize<0){GL.recordError(1281);return}if(!params){GL.recordError(1281);return}var ret=GLctx["getInternalformatParameter"](target,internalformat,pname);if(ret===null)return;for(var i=0;i>2]=ret[i]}}function _emscripten_glGetProgramBinary(program,bufSize,length,binaryFormat,binary){GL.recordError(1282)}function _emscripten_glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}program=GL.programs[program];if(pname==35716){var log=GLctx.getProgramInfoLog(program);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){if(!program.maxUniformLength){for(var i=0;i>2]=program.maxUniformLength}else if(pname==35722){if(!program.maxAttributeLength){for(var i=0;i>2]=program.maxAttributeLength}else if(pname==35381){if(!program.maxUniformBlockNameLength){for(var i=0;i>2]=program.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(program,pname)}}function _emscripten_glGetQueryObjecti64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param;if(GL.currentContext.version<2){param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname)}else{param=GLctx["getQueryParameter"](query,pname)}var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryObjectui64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param;if(GL.currentContext.version<2){param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname)}else{param=GLctx["getQueryParameter"](query,pname)}var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectuiv(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx["getQueryParameter"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryObjectuivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryiv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx["getQuery"](target,pname)}function _emscripten_glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)}function _emscripten_glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)}function _emscripten_glGetSamplerParameterfv(sampler,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx["getSamplerParameter"](GL.samplers[sampler],pname)}function _emscripten_glGetSamplerParameteriv(sampler,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx["getSamplerParameter"](GL.samplers[sampler],pname)}function _emscripten_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 _emscripten_glGetShaderPrecisionFormat(shaderType,precisionType,range,precision){var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision}function _emscripten_glGetShaderSource(shader,bufSize,length,source){var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=s&&stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);if(GL.currentContext.version>=2)glVersion="OpenGL ES 3.0 ("+glVersion+")";else{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280)}GL.stringCache[name_]=ret}return ret}function _emscripten_glGetStringi(name,index){if(GL.currentContext.version<2){GL.recordError(1282);return 0}var stringiCache=GL.stringiCache[name];if(stringiCache){if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index]}switch(name){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));exts=exts.map(function(e){return stringToNewUTF8(e)});stringiCache=GL.stringiCache[name]=exts;if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index];default:GL.recordError(1280);return 0}}function _emscripten_glGetSynciv(sync,pname,bufSize,length,values){if(bufSize<0){GL.recordError(1281);return}if(!values){GL.recordError(1281);return}var ret=GLctx.getSyncParameter(GL.syncs[sync],pname);if(ret!==null){HEAP32[values>>2]=ret;if(length)HEAP32[length>>2]=1}}function _emscripten_glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)}function _emscripten_glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)}function _emscripten_glGetTransformFeedbackVarying(program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx["getTransformFeedbackVarying"](program,index);if(!info)return;if(name&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}function _emscripten_glGetUniformBlockIndex(program,uniformBlockName){return GLctx["getUniformBlockIndex"](GL.programs[program],UTF8ToString(uniformBlockName))}function _emscripten_glGetUniformIndices(program,uniformCount,uniformNames,uniformIndices){if(!uniformIndices){GL.recordError(1281);return}if(uniformCount>0&&(uniformNames==0||uniformIndices==0)){GL.recordError(1281);return}program=GL.programs[program];var names=[];for(var i=0;i>2]));var result=GLctx["getUniformIndices"](program,names);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function webglPrepareUniformLocationsBeforeFirstUse(program){var uniformLocsById=program.uniformLocsById,uniformSizeAndIdsByName=program.uniformSizeAndIdsByName,i,j;if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};for(i=0;i0?nm.slice(0,lb):nm;var id=program.uniformIdCounter;program.uniformIdCounter+=sz;uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex0?"["+webglLoc+"]":""))}return webglLoc}else{GL.recordError(1282)}}function emscriptenWebGLGetUniform(program,location,params,type){if(!params){GL.recordError(1281);return}program=GL.programs[program];webglPrepareUniformLocationsBeforeFirstUse(program);var data=GLctx.getUniform(program,webglGetUniformLocation(location));if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}}function _emscripten_glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)}function _emscripten_glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}function _emscripten_glGetUniformuiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}function emscriptenWebGLGetVertexAttrib(index,pname,params,type){if(!params){GL.recordError(1281);return}if(GL.currentContext.clientBuffers[index].enabled){err("glGetVertexAttrib*v on client-side array: not supported, bad data returned")}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}}function _emscripten_glGetVertexAttribIiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,0)}function _emscripten_glGetVertexAttribIuiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,0)}function _emscripten_glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}if(GL.currentContext.clientBuffers[index].enabled){err("glGetVertexAttribPointer on client-side array: not supported, bad data returned")}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)}function _emscripten_glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2)}function _emscripten_glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}function _emscripten_glHint(x0,x1){GLctx["hint"](x0,x1)}function _emscripten_glInvalidateFramebuffer(target,numAttachments,attachments){var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx["invalidateFramebuffer"](target,list)}function _emscripten_glInvalidateSubFramebuffer(target,numAttachments,attachments,x,y,width,height){var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx["invalidateSubFramebuffer"](target,list,x,y,width,height)}function _emscripten_glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)}function _emscripten_glIsEnabled(x0){return GLctx["isEnabled"](x0)}function _emscripten_glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)}function _emscripten_glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)}function _emscripten_glIsQuery(id){var query=GL.queries[id];if(!query)return 0;return GLctx["isQuery"](query)}function _emscripten_glIsQueryEXT(id){var query=GL.queries[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)}function _emscripten_glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)}function _emscripten_glIsSampler(id){var sampler=GL.samplers[id];if(!sampler)return 0;return GLctx["isSampler"](sampler)}function _emscripten_glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)}function _emscripten_glIsSync(sync){return GLctx.isSync(GL.syncs[sync])}function _emscripten_glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)}function _emscripten_glIsTransformFeedback(id){return GLctx["isTransformFeedback"](GL.transformFeedbacks[id])}function _emscripten_glIsVertexArray(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx["isVertexArray"](vao)}function _emscripten_glIsVertexArrayOES(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx["isVertexArray"](vao)}function _emscripten_glLineWidth(x0){GLctx["lineWidth"](x0)}function _emscripten_glLinkProgram(program){program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}}function _emscripten_glMapBufferRange(target,offset,length,access){if(access!=26&&access!=10){err("glMapBufferRange is only supported when access is MAP_WRITE|INVALIDATE_BUFFER");return 0}if(!emscriptenWebGLValidateMapBufferTarget(target)){GL.recordError(1280);err("GL_INVALID_ENUM in glMapBufferRange");return 0}var mem=_malloc(length);if(!mem)return 0;GL.mappedBuffers[emscriptenWebGLGetBufferBinding(target)]={offset:offset,length:length,mem:mem,access:access};return mem}function _emscripten_glPauseTransformFeedback(){GLctx["pauseTransformFeedback"]()}function _emscripten_glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _emscripten_glPolygonOffset(x0,x1){GLctx["polygonOffset"](x0,x1)}function _emscripten_glProgramBinary(program,binaryFormat,binary,length){GL.recordError(1280)}function _emscripten_glProgramParameteri(program,pname,value){GL.recordError(1280)}function _emscripten_glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.queries[id],target)}function _emscripten_glReadBuffer(x0){GLctx["readBuffer"](x0)}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 _emscripten_glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);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 _emscripten_glReleaseShaderCompiler(){}function _emscripten_glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _emscripten_glRenderbufferStorageMultisample(x0,x1,x2,x3,x4){GLctx["renderbufferStorageMultisample"](x0,x1,x2,x3,x4)}function _emscripten_glResumeTransformFeedback(){GLctx["resumeTransformFeedback"]()}function _emscripten_glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)}function _emscripten_glSamplerParameterf(sampler,pname,param){GLctx["samplerParameterf"](GL.samplers[sampler],pname,param)}function _emscripten_glSamplerParameterfv(sampler,pname,params){var param=HEAPF32[params>>2];GLctx["samplerParameterf"](GL.samplers[sampler],pname,param)}function _emscripten_glSamplerParameteri(sampler,pname,param){GLctx["samplerParameteri"](GL.samplers[sampler],pname,param)}function _emscripten_glSamplerParameteriv(sampler,pname,params){var param=HEAP32[params>>2];GLctx["samplerParameteri"](GL.samplers[sampler],pname,param)}function _emscripten_glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function _emscripten_glShaderBinary(){GL.recordError(1280)}function _emscripten_glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _emscripten_glStencilFunc(x0,x1,x2){GLctx["stencilFunc"](x0,x1,x2)}function _emscripten_glStencilFuncSeparate(x0,x1,x2,x3){GLctx["stencilFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glStencilMask(x0){GLctx["stencilMask"](x0)}function _emscripten_glStencilMaskSeparate(x0,x1){GLctx["stencilMaskSeparate"](x0,x1)}function _emscripten_glStencilOp(x0,x1,x2){GLctx["stencilOp"](x0,x1,x2)}function _emscripten_glStencilOpSeparate(x0,x1,x2,x3){GLctx["stencilOpSeparate"](x0,x1,x2,x3)}function _emscripten_glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,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 _emscripten_glTexImage3D(target,level,internalFormat,width,height,depth,border,format,type,pixels){if(GLctx.currentPixelUnpackBufferBinding){GLctx["texImage3D"](target,level,internalFormat,width,height,depth,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx["texImage3D"](target,level,internalFormat,width,height,depth,border,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx["texImage3D"](target,level,internalFormat,width,height,depth,border,format,type,null)}}function _emscripten_glTexParameterf(x0,x1,x2){GLctx["texParameterf"](x0,x1,x2)}function _emscripten_glTexParameterfv(target,pname,params){var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)}function _emscripten_glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _emscripten_glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)}function _emscripten_glTexStorage2D(x0,x1,x2,x3,x4){GLctx["texStorage2D"](x0,x1,x2,x3,x4)}function _emscripten_glTexStorage3D(x0,x1,x2,x3,x4,x5){GLctx["texStorage3D"](x0,x1,x2,x3,x4,x5)}function _emscripten_glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,null)}return}var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function _emscripten_glTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels){if(GLctx.currentPixelUnpackBufferBinding){GLctx["texSubImage3D"](target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx["texSubImage3D"](target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx["texSubImage3D"](target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,null)}}function _emscripten_glTransformFeedbackVaryings(program,count,varyings,bufferMode){program=GL.programs[program];var vars=[];for(var i=0;i>2]));GLctx["transformFeedbackVaryings"](program,vars,bufferMode)}function _emscripten_glUniform1f(location,v0){GLctx.uniform1f(webglGetUniformLocation(location),v0)}var miniTempWebGLFloatBuffers=[];function _emscripten_glUniform1fv(location,count,value){if(GL.currentContext.version>=2){GLctx.uniform1fv(webglGetUniformLocation(location),HEAPF32,value>>2,count);return}if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(webglGetUniformLocation(location),view)}function _emscripten_glUniform1i(location,v0){GLctx.uniform1i(webglGetUniformLocation(location),v0)}var __miniTempWebGLIntBuffers=[];function _emscripten_glUniform1iv(location,count,value){if(GL.currentContext.version>=2){GLctx.uniform1iv(webglGetUniformLocation(location),HEAP32,value>>2,count);return}if(count<=288){var view=__miniTempWebGLIntBuffers[count-1];for(var i=0;i>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(webglGetUniformLocation(location),view)}function _emscripten_glUniform1ui(location,v0){GLctx.uniform1ui(webglGetUniformLocation(location),v0)}function _emscripten_glUniform1uiv(location,count,value){GLctx.uniform1uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count)}function _emscripten_glUniform2f(location,v0,v1){GLctx.uniform2f(webglGetUniformLocation(location),v0,v1)}function _emscripten_glUniform2fv(location,count,value){if(GL.currentContext.version>=2){GLctx.uniform2fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*2);return}if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(webglGetUniformLocation(location),view)}function _emscripten_glUniform2i(location,v0,v1){GLctx.uniform2i(webglGetUniformLocation(location),v0,v1)}function _emscripten_glUniform2iv(location,count,value){if(GL.currentContext.version>=2){GLctx.uniform2iv(webglGetUniformLocation(location),HEAP32,value>>2,count*2);return}if(count<=144){var view=__miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(webglGetUniformLocation(location),view)}function _emscripten_glUniform2ui(location,v0,v1){GLctx.uniform2ui(webglGetUniformLocation(location),v0,v1)}function _emscripten_glUniform2uiv(location,count,value){GLctx.uniform2uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*2)}function _emscripten_glUniform3f(location,v0,v1,v2){GLctx.uniform3f(webglGetUniformLocation(location),v0,v1,v2)}function _emscripten_glUniform3fv(location,count,value){if(GL.currentContext.version>=2){GLctx.uniform3fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*3);return}if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(webglGetUniformLocation(location),view)}function _emscripten_glUniform3i(location,v0,v1,v2){GLctx.uniform3i(webglGetUniformLocation(location),v0,v1,v2)}function _emscripten_glUniform3iv(location,count,value){if(GL.currentContext.version>=2){GLctx.uniform3iv(webglGetUniformLocation(location),HEAP32,value>>2,count*3);return}if(count<=96){var view=__miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(webglGetUniformLocation(location),view)}function _emscripten_glUniform3ui(location,v0,v1,v2){GLctx.uniform3ui(webglGetUniformLocation(location),v0,v1,v2)}function _emscripten_glUniform3uiv(location,count,value){GLctx.uniform3uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*3)}function _emscripten_glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}function _emscripten_glUniform4fv(location,count,value){if(GL.currentContext.version>=2){GLctx.uniform4fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(webglGetUniformLocation(location),view)}function _emscripten_glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(webglGetUniformLocation(location),v0,v1,v2,v3)}function _emscripten_glUniform4iv(location,count,value){if(GL.currentContext.version>=2){GLctx.uniform4iv(webglGetUniformLocation(location),HEAP32,value>>2,count*4);return}if(count<=72){var view=__miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(webglGetUniformLocation(location),view)}function _emscripten_glUniform4ui(location,v0,v1,v2,v3){GLctx.uniform4ui(webglGetUniformLocation(location),v0,v1,v2,v3)}function _emscripten_glUniform4uiv(location,count,value){GLctx.uniform4uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*4)}function _emscripten_glUniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding){program=GL.programs[program];GLctx["uniformBlockBinding"](program,uniformBlockIndex,uniformBlockBinding)}function _emscripten_glUniformMatrix2fv(location,count,transpose,value){if(GL.currentContext.version>=2){GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,view)}function _emscripten_glUniformMatrix2x3fv(location,count,transpose,value){GLctx.uniformMatrix2x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)}function _emscripten_glUniformMatrix2x4fv(location,count,transpose,value){GLctx.uniformMatrix2x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)}function _emscripten_glUniformMatrix3fv(location,count,transpose,value){if(GL.currentContext.version>=2){GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*9);return}if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,view)}function _emscripten_glUniformMatrix3x2fv(location,count,transpose,value){GLctx.uniformMatrix3x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)}function _emscripten_glUniformMatrix3x4fv(location,count,transpose,value){GLctx.uniformMatrix3x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)}function _emscripten_glUniformMatrix4fv(location,count,transpose,value){if(GL.currentContext.version>=2){GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*16);return}if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,view)}function _emscripten_glUniformMatrix4x2fv(location,count,transpose,value){GLctx.uniformMatrix4x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)}function _emscripten_glUniformMatrix4x3fv(location,count,transpose,value){GLctx.uniformMatrix4x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)}function _emscripten_glUnmapBuffer(target){if(!emscriptenWebGLValidateMapBufferTarget(target)){GL.recordError(1280);err("GL_INVALID_ENUM in glUnmapBuffer");return 0}var buffer=emscriptenWebGLGetBufferBinding(target);var mapping=GL.mappedBuffers[buffer];if(!mapping){GL.recordError(1282);err("buffer was never mapped in glUnmapBuffer");return 0}GL.mappedBuffers[buffer]=null;if(!(mapping.access&16))if(GL.currentContext.version>=2){GLctx.bufferSubData(target,mapping.offset,HEAPU8,mapping.mem,mapping.length)}else{GLctx.bufferSubData(target,mapping.offset,HEAPU8.subarray(mapping.mem,mapping.mem+mapping.length))}_free(mapping.mem);return 1}function _emscripten_glUseProgram(program){program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _emscripten_glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}function _emscripten_glVertexAttrib1f(x0,x1){GLctx["vertexAttrib1f"](x0,x1)}function _emscripten_glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2])}function _emscripten_glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _emscripten_glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])}function _emscripten_glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _emscripten_glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])}function _emscripten_glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _emscripten_glVertexAttrib4fv(index,v){GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])}function _emscripten_glVertexAttribDivisor(index,divisor){GLctx["vertexAttribDivisor"](index,divisor)}function _emscripten_glVertexAttribDivisorANGLE(index,divisor){GLctx["vertexAttribDivisor"](index,divisor)}function _emscripten_glVertexAttribDivisorARB(index,divisor){GLctx["vertexAttribDivisor"](index,divisor)}function _emscripten_glVertexAttribDivisorEXT(index,divisor){GLctx["vertexAttribDivisor"](index,divisor)}function _emscripten_glVertexAttribDivisorNV(index,divisor){GLctx["vertexAttribDivisor"](index,divisor)}function _emscripten_glVertexAttribI4i(x0,x1,x2,x3,x4){GLctx["vertexAttribI4i"](x0,x1,x2,x3,x4)}function _emscripten_glVertexAttribI4iv(index,v){GLctx.vertexAttribI4i(index,HEAP32[v>>2],HEAP32[v+4>>2],HEAP32[v+8>>2],HEAP32[v+12>>2])}function _emscripten_glVertexAttribI4ui(x0,x1,x2,x3,x4){GLctx["vertexAttribI4ui"](x0,x1,x2,x3,x4)}function _emscripten_glVertexAttribI4uiv(index,v){GLctx.vertexAttribI4ui(index,HEAPU32[v>>2],HEAPU32[v+4>>2],HEAPU32[v+8>>2],HEAPU32[v+12>>2])}function _emscripten_glVertexAttribIPointer(index,size,type,stride,ptr){var cb=GL.currentContext.clientBuffers[index];if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=false;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribIPointer(index,size,type,stride,ptr)};return}cb.clientside=false;GLctx["vertexAttribIPointer"](index,size,type,stride,ptr)}function _emscripten_glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _emscripten_glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function _emscripten_glWaitSync(sync,flags,timeoutLo,timeoutHi){GLctx.waitSync(GL.syncs[sync],flags,convertI32PairToI53(timeoutLo,timeoutHi))}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function _emscripten_get_heap_max(){return 2147483648}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=_emscripten_get_heap_max();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}function safeSetTimeout(func,timeout){return setTimeout(function(){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);Module["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;Module["preloadedAudios"][name]=audio;if(onload)onload(byteArray)}function fail(){if(done)return;done=true;Module["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",function(){finish(audio)},false);audio.onerror=function audio_onerror(event){if(done)return;out("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"]||function(){};canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||function(){};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",function(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:typeof WebGL2RenderingContext!="undefined"?2:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){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"]?function(){canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null)||(canvasContainer["webkitRequestFullScreen"]?function(){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){return safeSetTimeout(func)},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/h0){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()}GL.newRenderingFrameStarted();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 _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=getWasmTableEntry(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function GLFW_Window(id,width,height,title,monitor,share){this.id=id;this.x=0;this.y=0;this.fullscreen=false;this.storedX=0;this.storedY=0;this.width=width;this.height=height;this.storedWidth=width;this.storedHeight=height;this.title=title;this.monitor=monitor;this.share=share;this.attributes=GLFW.hints;this.inputModes={208897:212993,208898:0,208899:0};this.buttons=0;this.keys=new Array;this.domKeys=new Array;this.shouldClose=0;this.title=null;this.windowPosFunc=null;this.windowSizeFunc=null;this.windowCloseFunc=null;this.windowRefreshFunc=null;this.windowFocusFunc=null;this.windowIconifyFunc=null;this.framebufferSizeFunc=null;this.mouseButtonFunc=null;this.cursorPosFunc=null;this.cursorEnterFunc=null;this.scrollFunc=null;this.dropFunc=null;this.keyFunc=null;this.charFunc=null;this.userptr=null}var GLFW={WindowFromId:function(id){if(id<=0||!GLFW.windows)return null;return GLFW.windows[id-1]},joystickFunc:null,errorFunc:null,monitorFunc:null,active:null,windows:null,monitors:null,monitorString:null,versionString:null,initialTime:null,extensions:null,hints:null,defaultHints:{131073:0,131074:0,131075:1,131076:1,131077:1,135169:8,135170:8,135171:8,135172:8,135173:24,135174:8,135175:0,135176:0,135177:0,135178:0,135179:0,135180:0,135181:0,135182:0,135183:0,139265:196609,139266:1,139267:0,139268:0,139269:0,139270:0,139271:0,139272:0},DOMToGLFWKeyCode:function(keycode){switch(keycode){case 32:return 32;case 222:return 39;case 188:return 44;case 173:return 45;case 189:return 45;case 190:return 46;case 191:return 47;case 48:return 48;case 49:return 49;case 50:return 50;case 51:return 51;case 52:return 52;case 53:return 53;case 54:return 54;case 55:return 55;case 56:return 56;case 57:return 57;case 59:return 59;case 61:return 61;case 187:return 61;case 65:return 65;case 66:return 66;case 67:return 67;case 68:return 68;case 69:return 69;case 70:return 70;case 71:return 71;case 72:return 72;case 73:return 73;case 74:return 74;case 75:return 75;case 76:return 76;case 77:return 77;case 78:return 78;case 79:return 79;case 80:return 80;case 81:return 81;case 82:return 82;case 83:return 83;case 84:return 84;case 85:return 85;case 86:return 86;case 87:return 87;case 88:return 88;case 89:return 89;case 90:return 90;case 219:return 91;case 220:return 92;case 221:return 93;case 192:return 96;case 27:return 256;case 13:return 257;case 9:return 258;case 8:return 259;case 45:return 260;case 46:return 261;case 39:return 262;case 37:return 263;case 40:return 264;case 38:return 265;case 33:return 266;case 34:return 267;case 36:return 268;case 35:return 269;case 20:return 280;case 145:return 281;case 144:return 282;case 44:return 283;case 19:return 284;case 112:return 290;case 113:return 291;case 114:return 292;case 115:return 293;case 116:return 294;case 117:return 295;case 118:return 296;case 119:return 297;case 120:return 298;case 121:return 299;case 122:return 300;case 123:return 301;case 124:return 302;case 125:return 303;case 126:return 304;case 127:return 305;case 128:return 306;case 129:return 307;case 130:return 308;case 131:return 309;case 132:return 310;case 133:return 311;case 134:return 312;case 135:return 313;case 136:return 314;case 96:return 320;case 97:return 321;case 98:return 322;case 99:return 323;case 100:return 324;case 101:return 325;case 102:return 326;case 103:return 327;case 104:return 328;case 105:return 329;case 110:return 330;case 111:return 331;case 106:return 332;case 109:return 333;case 107:return 334;case 16:return 340;case 17:return 341;case 18:return 342;case 91:return 343;case 93:return 348;default:return-1}},getModBits:function(win){var mod=0;if(win.keys[340])mod|=1;if(win.keys[341])mod|=2;if(win.keys[342])mod|=4;if(win.keys[343])mod|=8;return mod},onKeyPress:function(event){if(!GLFW.active||!GLFW.active.charFunc)return;if(event.ctrlKey||event.metaKey)return;var charCode=event.charCode;if(charCode==0||charCode>=0&&charCode<=31)return;getWasmTableEntry(GLFW.active.charFunc)(GLFW.active.id,charCode)},onKeyChanged:function(keyCode,status){if(!GLFW.active)return;var key=GLFW.DOMToGLFWKeyCode(keyCode);if(key==-1)return;var repeat=status&&GLFW.active.keys[key];GLFW.active.keys[key]=status;GLFW.active.domKeys[keyCode]=status;if(!GLFW.active.keyFunc)return;if(repeat)status=2;getWasmTableEntry(GLFW.active.keyFunc)(GLFW.active.id,key,keyCode,status,GLFW.getModBits(GLFW.active))},onGamepadConnected:function(event){GLFW.refreshJoysticks()},onGamepadDisconnected:function(event){GLFW.refreshJoysticks()},onKeydown:function(event){GLFW.onKeyChanged(event.keyCode,1);if(event.keyCode===8||event.keyCode===9){event.preventDefault()}},onKeyup:function(event){GLFW.onKeyChanged(event.keyCode,0)},onBlur:function(event){if(!GLFW.active)return;for(var i=0;i0){if(eventButton==1){eventButton=2}else{eventButton=1}}return eventButton},onMouseenter:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;getWasmTableEntry(GLFW.active.cursorEnterFunc)(GLFW.active.id,1)},onMouseleave:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;getWasmTableEntry(GLFW.active.cursorEnterFunc)(GLFW.active.id,0)},onMouseButtonChanged:function(event,status){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"])return;var eventButton=GLFW.DOMToGLFWMouseButton(event);if(status==1){GLFW.active.buttons|=1<0?Math.max(delta,1):Math.min(delta,-1);GLFW.wheelPos+=delta;if(!GLFW.active||!GLFW.active.scrollFunc||event.target!=Module["canvas"])return;var sx=0;var sy=0;if(event.type=="mousewheel"){sx=event.wheelDeltaX;sy=event.wheelDeltaY}else{sx=event.deltaX;sy=event.deltaY}getWasmTableEntry(GLFW.active.scrollFunc)(GLFW.active.id,sx,sy);event.preventDefault()},onCanvasResize:function(width,height){if(!GLFW.active)return;var resizeNeeded=true;if(document["fullscreen"]||document["fullScreen"]||document["mozFullScreen"]||document["webkitIsFullScreen"]){GLFW.active.storedX=GLFW.active.x;GLFW.active.storedY=GLFW.active.y;GLFW.active.storedWidth=GLFW.active.width;GLFW.active.storedHeight=GLFW.active.height;GLFW.active.x=GLFW.active.y=0;GLFW.active.width=screen.width;GLFW.active.height=screen.height;GLFW.active.fullscreen=true}else if(GLFW.active.fullscreen==true){GLFW.active.x=GLFW.active.storedX;GLFW.active.y=GLFW.active.storedY;GLFW.active.width=GLFW.active.storedWidth;GLFW.active.height=GLFW.active.storedHeight;GLFW.active.fullscreen=false}else if(GLFW.active.width!=width||GLFW.active.height!=height){GLFW.active.width=width;GLFW.active.height=height}else{resizeNeeded=false}if(resizeNeeded){Browser.setCanvasSize(GLFW.active.width,GLFW.active.height,true);GLFW.onWindowSizeChanged();GLFW.onFramebufferSizeChanged()}},onWindowSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.windowSizeFunc)return;callUserCallback(function(){getWasmTableEntry(GLFW.active.windowSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)})},onFramebufferSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.framebufferSizeFunc)return;callUserCallback(function(){getWasmTableEntry(GLFW.active.framebufferSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)})},getTime:function(){return _emscripten_get_now()/1e3},setWindowTitle:function(winid,title){var win=GLFW.WindowFromId(winid);if(!win)return;win.title=UTF8ToString(title);if(GLFW.active.id==win.id){document.title=win.title}},setJoystickCallback:function(cbfun){GLFW.joystickFunc=cbfun;GLFW.refreshJoysticks()},joys:{},lastGamepadState:[],lastGamepadStateFrame:null,refreshJoysticks:function(){if(Browser.mainLoop.currentFrameNumber!==GLFW.lastGamepadStateFrame||!Browser.mainLoop.currentFrameNumber){GLFW.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads:[];GLFW.lastGamepadStateFrame=Browser.mainLoop.currentFrameNumber;for(var joy=0;joy{if(reader.readyState!=2){++written;out("failed to read dropped file: "+file.name+": "+reader.error);return}var data=e.target.result;FS.writeFile(path,new Uint8Array(data));if(++written===count){getWasmTableEntry(GLFW.active.dropFunc)(GLFW.active.id,count,filenames);for(var i=0;i0},getCursorPos:function(winid,x,y){setValue(x,Browser.mouseX,"double");setValue(y,Browser.mouseY,"double")},getMousePos:function(winid,x,y){setValue(x,Browser.mouseX,"i32");setValue(y,Browser.mouseY,"i32")},setCursorPos:function(winid,x,y){},getWindowPos:function(winid,x,y){var wx=0;var wy=0;var win=GLFW.WindowFromId(winid);if(win){wx=win.x;wy=win.y}if(x){setValue(x,wx,"i32")}if(y){setValue(y,wy,"i32")}},setWindowPos:function(winid,x,y){var win=GLFW.WindowFromId(winid);if(!win)return;win.x=x;win.y=y},getWindowSize:function(winid,width,height){var ww=0;var wh=0;var win=GLFW.WindowFromId(winid);if(win){ww=win.width;wh=win.height}if(width){setValue(width,ww,"i32")}if(height){setValue(height,wh,"i32")}},setWindowSize:function(winid,width,height){var win=GLFW.WindowFromId(winid);if(!win)return;if(GLFW.active.id==win.id){if(width==screen.width&&height==screen.height){Browser.requestFullscreen()}else{Browser.exitFullscreen();Browser.setCanvasSize(width,height);win.width=width;win.height=height}}if(!win.windowSizeFunc)return;getWasmTableEntry(win.windowSizeFunc)(win.id,width,height)},createWindow:function(width,height,title,monitor,share){var i,id;for(i=0;i0)throw"glfwCreateWindow only supports one window at time currently";id=i+1;if(width<=0||height<=0)return 0;if(monitor){Browser.requestFullscreen()}else{Browser.setCanvasSize(width,height)}for(i=0;i0;if(i==GLFW.windows.length){if(useWebGL){var contextAttributes={antialias:GLFW.hints[135181]>1,depth:GLFW.hints[135173]>0,stencil:GLFW.hints[135174]>0,alpha:GLFW.hints[135172]>0};Module.ctx=Browser.createContext(Module["canvas"],true,true,contextAttributes)}else{Browser.init()}}if(!Module.ctx&&useWebGL)return 0;var win=new GLFW_Window(id,width,height,title,monitor,share);if(id-1==GLFW.windows.length){GLFW.windows.push(win)}else{GLFW.windows[id-1]=win}GLFW.active=win;return win.id},destroyWindow:function(winid){var win=GLFW.WindowFromId(winid);if(!win)return;if(win.windowCloseFunc)getWasmTableEntry(win.windowCloseFunc)(win.id);GLFW.windows[win.id-1]=null;if(GLFW.active.id==win.id)GLFW.active=null;for(var i=0;i>2]=ret}return ret}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();var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var __miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){__miniTempWebGLIntBuffers[i]=__miniTempWebGLIntBuffersStorage.subarray(0,i+1)}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 ASSERTIONS=false;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 asmLibraryArg={"__syscall_fcntl64":___syscall_fcntl64,"__syscall_ioctl":___syscall_ioctl,"__syscall_open":___syscall_open,"_localtime_js":__localtime_js,"_tzset_js":__tzset_js,"emscripten_get_now":_emscripten_get_now,"emscripten_glActiveTexture":_emscripten_glActiveTexture,"emscripten_glAttachShader":_emscripten_glAttachShader,"emscripten_glBeginQuery":_emscripten_glBeginQuery,"emscripten_glBeginQueryEXT":_emscripten_glBeginQueryEXT,"emscripten_glBeginTransformFeedback":_emscripten_glBeginTransformFeedback,"emscripten_glBindAttribLocation":_emscripten_glBindAttribLocation,"emscripten_glBindBuffer":_emscripten_glBindBuffer,"emscripten_glBindBufferBase":_emscripten_glBindBufferBase,"emscripten_glBindBufferRange":_emscripten_glBindBufferRange,"emscripten_glBindFramebuffer":_emscripten_glBindFramebuffer,"emscripten_glBindRenderbuffer":_emscripten_glBindRenderbuffer,"emscripten_glBindSampler":_emscripten_glBindSampler,"emscripten_glBindTexture":_emscripten_glBindTexture,"emscripten_glBindTransformFeedback":_emscripten_glBindTransformFeedback,"emscripten_glBindVertexArray":_emscripten_glBindVertexArray,"emscripten_glBindVertexArrayOES":_emscripten_glBindVertexArrayOES,"emscripten_glBlendColor":_emscripten_glBlendColor,"emscripten_glBlendEquation":_emscripten_glBlendEquation,"emscripten_glBlendEquationSeparate":_emscripten_glBlendEquationSeparate,"emscripten_glBlendFunc":_emscripten_glBlendFunc,"emscripten_glBlendFuncSeparate":_emscripten_glBlendFuncSeparate,"emscripten_glBlitFramebuffer":_emscripten_glBlitFramebuffer,"emscripten_glBufferData":_emscripten_glBufferData,"emscripten_glBufferSubData":_emscripten_glBufferSubData,"emscripten_glCheckFramebufferStatus":_emscripten_glCheckFramebufferStatus,"emscripten_glClear":_emscripten_glClear,"emscripten_glClearBufferfi":_emscripten_glClearBufferfi,"emscripten_glClearBufferfv":_emscripten_glClearBufferfv,"emscripten_glClearBufferiv":_emscripten_glClearBufferiv,"emscripten_glClearBufferuiv":_emscripten_glClearBufferuiv,"emscripten_glClearColor":_emscripten_glClearColor,"emscripten_glClearDepthf":_emscripten_glClearDepthf,"emscripten_glClearStencil":_emscripten_glClearStencil,"emscripten_glClientWaitSync":_emscripten_glClientWaitSync,"emscripten_glColorMask":_emscripten_glColorMask,"emscripten_glCompileShader":_emscripten_glCompileShader,"emscripten_glCompressedTexImage2D":_emscripten_glCompressedTexImage2D,"emscripten_glCompressedTexImage3D":_emscripten_glCompressedTexImage3D,"emscripten_glCompressedTexSubImage2D":_emscripten_glCompressedTexSubImage2D,"emscripten_glCompressedTexSubImage3D":_emscripten_glCompressedTexSubImage3D,"emscripten_glCopyBufferSubData":_emscripten_glCopyBufferSubData,"emscripten_glCopyTexImage2D":_emscripten_glCopyTexImage2D,"emscripten_glCopyTexSubImage2D":_emscripten_glCopyTexSubImage2D,"emscripten_glCopyTexSubImage3D":_emscripten_glCopyTexSubImage3D,"emscripten_glCreateProgram":_emscripten_glCreateProgram,"emscripten_glCreateShader":_emscripten_glCreateShader,"emscripten_glCullFace":_emscripten_glCullFace,"emscripten_glDeleteBuffers":_emscripten_glDeleteBuffers,"emscripten_glDeleteFramebuffers":_emscripten_glDeleteFramebuffers,"emscripten_glDeleteProgram":_emscripten_glDeleteProgram,"emscripten_glDeleteQueries":_emscripten_glDeleteQueries,"emscripten_glDeleteQueriesEXT":_emscripten_glDeleteQueriesEXT,"emscripten_glDeleteRenderbuffers":_emscripten_glDeleteRenderbuffers,"emscripten_glDeleteSamplers":_emscripten_glDeleteSamplers,"emscripten_glDeleteShader":_emscripten_glDeleteShader,"emscripten_glDeleteSync":_emscripten_glDeleteSync,"emscripten_glDeleteTextures":_emscripten_glDeleteTextures,"emscripten_glDeleteTransformFeedbacks":_emscripten_glDeleteTransformFeedbacks,"emscripten_glDeleteVertexArrays":_emscripten_glDeleteVertexArrays,"emscripten_glDeleteVertexArraysOES":_emscripten_glDeleteVertexArraysOES,"emscripten_glDepthFunc":_emscripten_glDepthFunc,"emscripten_glDepthMask":_emscripten_glDepthMask,"emscripten_glDepthRangef":_emscripten_glDepthRangef,"emscripten_glDetachShader":_emscripten_glDetachShader,"emscripten_glDisable":_emscripten_glDisable,"emscripten_glDisableVertexAttribArray":_emscripten_glDisableVertexAttribArray,"emscripten_glDrawArrays":_emscripten_glDrawArrays,"emscripten_glDrawArraysInstanced":_emscripten_glDrawArraysInstanced,"emscripten_glDrawArraysInstancedANGLE":_emscripten_glDrawArraysInstancedANGLE,"emscripten_glDrawArraysInstancedARB":_emscripten_glDrawArraysInstancedARB,"emscripten_glDrawArraysInstancedEXT":_emscripten_glDrawArraysInstancedEXT,"emscripten_glDrawArraysInstancedNV":_emscripten_glDrawArraysInstancedNV,"emscripten_glDrawBuffers":_emscripten_glDrawBuffers,"emscripten_glDrawBuffersEXT":_emscripten_glDrawBuffersEXT,"emscripten_glDrawBuffersWEBGL":_emscripten_glDrawBuffersWEBGL,"emscripten_glDrawElements":_emscripten_glDrawElements,"emscripten_glDrawElementsInstanced":_emscripten_glDrawElementsInstanced,"emscripten_glDrawElementsInstancedANGLE":_emscripten_glDrawElementsInstancedANGLE,"emscripten_glDrawElementsInstancedARB":_emscripten_glDrawElementsInstancedARB,"emscripten_glDrawElementsInstancedEXT":_emscripten_glDrawElementsInstancedEXT,"emscripten_glDrawElementsInstancedNV":_emscripten_glDrawElementsInstancedNV,"emscripten_glDrawRangeElements":_emscripten_glDrawRangeElements,"emscripten_glEnable":_emscripten_glEnable,"emscripten_glEnableVertexAttribArray":_emscripten_glEnableVertexAttribArray,"emscripten_glEndQuery":_emscripten_glEndQuery,"emscripten_glEndQueryEXT":_emscripten_glEndQueryEXT,"emscripten_glEndTransformFeedback":_emscripten_glEndTransformFeedback,"emscripten_glFenceSync":_emscripten_glFenceSync,"emscripten_glFinish":_emscripten_glFinish,"emscripten_glFlush":_emscripten_glFlush,"emscripten_glFlushMappedBufferRange":_emscripten_glFlushMappedBufferRange,"emscripten_glFramebufferRenderbuffer":_emscripten_glFramebufferRenderbuffer,"emscripten_glFramebufferTexture2D":_emscripten_glFramebufferTexture2D,"emscripten_glFramebufferTextureLayer":_emscripten_glFramebufferTextureLayer,"emscripten_glFrontFace":_emscripten_glFrontFace,"emscripten_glGenBuffers":_emscripten_glGenBuffers,"emscripten_glGenFramebuffers":_emscripten_glGenFramebuffers,"emscripten_glGenQueries":_emscripten_glGenQueries,"emscripten_glGenQueriesEXT":_emscripten_glGenQueriesEXT,"emscripten_glGenRenderbuffers":_emscripten_glGenRenderbuffers,"emscripten_glGenSamplers":_emscripten_glGenSamplers,"emscripten_glGenTextures":_emscripten_glGenTextures,"emscripten_glGenTransformFeedbacks":_emscripten_glGenTransformFeedbacks,"emscripten_glGenVertexArrays":_emscripten_glGenVertexArrays,"emscripten_glGenVertexArraysOES":_emscripten_glGenVertexArraysOES,"emscripten_glGenerateMipmap":_emscripten_glGenerateMipmap,"emscripten_glGetActiveAttrib":_emscripten_glGetActiveAttrib,"emscripten_glGetActiveUniform":_emscripten_glGetActiveUniform,"emscripten_glGetActiveUniformBlockName":_emscripten_glGetActiveUniformBlockName,"emscripten_glGetActiveUniformBlockiv":_emscripten_glGetActiveUniformBlockiv,"emscripten_glGetActiveUniformsiv":_emscripten_glGetActiveUniformsiv,"emscripten_glGetAttachedShaders":_emscripten_glGetAttachedShaders,"emscripten_glGetAttribLocation":_emscripten_glGetAttribLocation,"emscripten_glGetBooleanv":_emscripten_glGetBooleanv,"emscripten_glGetBufferParameteri64v":_emscripten_glGetBufferParameteri64v,"emscripten_glGetBufferParameteriv":_emscripten_glGetBufferParameteriv,"emscripten_glGetBufferPointerv":_emscripten_glGetBufferPointerv,"emscripten_glGetError":_emscripten_glGetError,"emscripten_glGetFloatv":_emscripten_glGetFloatv,"emscripten_glGetFragDataLocation":_emscripten_glGetFragDataLocation,"emscripten_glGetFramebufferAttachmentParameteriv":_emscripten_glGetFramebufferAttachmentParameteriv,"emscripten_glGetInteger64i_v":_emscripten_glGetInteger64i_v,"emscripten_glGetInteger64v":_emscripten_glGetInteger64v,"emscripten_glGetIntegeri_v":_emscripten_glGetIntegeri_v,"emscripten_glGetIntegerv":_emscripten_glGetIntegerv,"emscripten_glGetInternalformativ":_emscripten_glGetInternalformativ,"emscripten_glGetProgramBinary":_emscripten_glGetProgramBinary,"emscripten_glGetProgramInfoLog":_emscripten_glGetProgramInfoLog,"emscripten_glGetProgramiv":_emscripten_glGetProgramiv,"emscripten_glGetQueryObjecti64vEXT":_emscripten_glGetQueryObjecti64vEXT,"emscripten_glGetQueryObjectivEXT":_emscripten_glGetQueryObjectivEXT,"emscripten_glGetQueryObjectui64vEXT":_emscripten_glGetQueryObjectui64vEXT,"emscripten_glGetQueryObjectuiv":_emscripten_glGetQueryObjectuiv,"emscripten_glGetQueryObjectuivEXT":_emscripten_glGetQueryObjectuivEXT,"emscripten_glGetQueryiv":_emscripten_glGetQueryiv,"emscripten_glGetQueryivEXT":_emscripten_glGetQueryivEXT,"emscripten_glGetRenderbufferParameteriv":_emscripten_glGetRenderbufferParameteriv,"emscripten_glGetSamplerParameterfv":_emscripten_glGetSamplerParameterfv,"emscripten_glGetSamplerParameteriv":_emscripten_glGetSamplerParameteriv,"emscripten_glGetShaderInfoLog":_emscripten_glGetShaderInfoLog,"emscripten_glGetShaderPrecisionFormat":_emscripten_glGetShaderPrecisionFormat,"emscripten_glGetShaderSource":_emscripten_glGetShaderSource,"emscripten_glGetShaderiv":_emscripten_glGetShaderiv,"emscripten_glGetString":_emscripten_glGetString,"emscripten_glGetStringi":_emscripten_glGetStringi,"emscripten_glGetSynciv":_emscripten_glGetSynciv,"emscripten_glGetTexParameterfv":_emscripten_glGetTexParameterfv,"emscripten_glGetTexParameteriv":_emscripten_glGetTexParameteriv,"emscripten_glGetTransformFeedbackVarying":_emscripten_glGetTransformFeedbackVarying,"emscripten_glGetUniformBlockIndex":_emscripten_glGetUniformBlockIndex,"emscripten_glGetUniformIndices":_emscripten_glGetUniformIndices,"emscripten_glGetUniformLocation":_emscripten_glGetUniformLocation,"emscripten_glGetUniformfv":_emscripten_glGetUniformfv,"emscripten_glGetUniformiv":_emscripten_glGetUniformiv,"emscripten_glGetUniformuiv":_emscripten_glGetUniformuiv,"emscripten_glGetVertexAttribIiv":_emscripten_glGetVertexAttribIiv,"emscripten_glGetVertexAttribIuiv":_emscripten_glGetVertexAttribIuiv,"emscripten_glGetVertexAttribPointerv":_emscripten_glGetVertexAttribPointerv,"emscripten_glGetVertexAttribfv":_emscripten_glGetVertexAttribfv,"emscripten_glGetVertexAttribiv":_emscripten_glGetVertexAttribiv,"emscripten_glHint":_emscripten_glHint,"emscripten_glInvalidateFramebuffer":_emscripten_glInvalidateFramebuffer,"emscripten_glInvalidateSubFramebuffer":_emscripten_glInvalidateSubFramebuffer,"emscripten_glIsBuffer":_emscripten_glIsBuffer,"emscripten_glIsEnabled":_emscripten_glIsEnabled,"emscripten_glIsFramebuffer":_emscripten_glIsFramebuffer,"emscripten_glIsProgram":_emscripten_glIsProgram,"emscripten_glIsQuery":_emscripten_glIsQuery,"emscripten_glIsQueryEXT":_emscripten_glIsQueryEXT,"emscripten_glIsRenderbuffer":_emscripten_glIsRenderbuffer,"emscripten_glIsSampler":_emscripten_glIsSampler,"emscripten_glIsShader":_emscripten_glIsShader,"emscripten_glIsSync":_emscripten_glIsSync,"emscripten_glIsTexture":_emscripten_glIsTexture,"emscripten_glIsTransformFeedback":_emscripten_glIsTransformFeedback,"emscripten_glIsVertexArray":_emscripten_glIsVertexArray,"emscripten_glIsVertexArrayOES":_emscripten_glIsVertexArrayOES,"emscripten_glLineWidth":_emscripten_glLineWidth,"emscripten_glLinkProgram":_emscripten_glLinkProgram,"emscripten_glMapBufferRange":_emscripten_glMapBufferRange,"emscripten_glPauseTransformFeedback":_emscripten_glPauseTransformFeedback,"emscripten_glPixelStorei":_emscripten_glPixelStorei,"emscripten_glPolygonOffset":_emscripten_glPolygonOffset,"emscripten_glProgramBinary":_emscripten_glProgramBinary,"emscripten_glProgramParameteri":_emscripten_glProgramParameteri,"emscripten_glQueryCounterEXT":_emscripten_glQueryCounterEXT,"emscripten_glReadBuffer":_emscripten_glReadBuffer,"emscripten_glReadPixels":_emscripten_glReadPixels,"emscripten_glReleaseShaderCompiler":_emscripten_glReleaseShaderCompiler,"emscripten_glRenderbufferStorage":_emscripten_glRenderbufferStorage,"emscripten_glRenderbufferStorageMultisample":_emscripten_glRenderbufferStorageMultisample,"emscripten_glResumeTransformFeedback":_emscripten_glResumeTransformFeedback,"emscripten_glSampleCoverage":_emscripten_glSampleCoverage,"emscripten_glSamplerParameterf":_emscripten_glSamplerParameterf,"emscripten_glSamplerParameterfv":_emscripten_glSamplerParameterfv,"emscripten_glSamplerParameteri":_emscripten_glSamplerParameteri,"emscripten_glSamplerParameteriv":_emscripten_glSamplerParameteriv,"emscripten_glScissor":_emscripten_glScissor,"emscripten_glShaderBinary":_emscripten_glShaderBinary,"emscripten_glShaderSource":_emscripten_glShaderSource,"emscripten_glStencilFunc":_emscripten_glStencilFunc,"emscripten_glStencilFuncSeparate":_emscripten_glStencilFuncSeparate,"emscripten_glStencilMask":_emscripten_glStencilMask,"emscripten_glStencilMaskSeparate":_emscripten_glStencilMaskSeparate,"emscripten_glStencilOp":_emscripten_glStencilOp,"emscripten_glStencilOpSeparate":_emscripten_glStencilOpSeparate,"emscripten_glTexImage2D":_emscripten_glTexImage2D,"emscripten_glTexImage3D":_emscripten_glTexImage3D,"emscripten_glTexParameterf":_emscripten_glTexParameterf,"emscripten_glTexParameterfv":_emscripten_glTexParameterfv,"emscripten_glTexParameteri":_emscripten_glTexParameteri,"emscripten_glTexParameteriv":_emscripten_glTexParameteriv,"emscripten_glTexStorage2D":_emscripten_glTexStorage2D,"emscripten_glTexStorage3D":_emscripten_glTexStorage3D,"emscripten_glTexSubImage2D":_emscripten_glTexSubImage2D,"emscripten_glTexSubImage3D":_emscripten_glTexSubImage3D,"emscripten_glTransformFeedbackVaryings":_emscripten_glTransformFeedbackVaryings,"emscripten_glUniform1f":_emscripten_glUniform1f,"emscripten_glUniform1fv":_emscripten_glUniform1fv,"emscripten_glUniform1i":_emscripten_glUniform1i,"emscripten_glUniform1iv":_emscripten_glUniform1iv,"emscripten_glUniform1ui":_emscripten_glUniform1ui,"emscripten_glUniform1uiv":_emscripten_glUniform1uiv,"emscripten_glUniform2f":_emscripten_glUniform2f,"emscripten_glUniform2fv":_emscripten_glUniform2fv,"emscripten_glUniform2i":_emscripten_glUniform2i,"emscripten_glUniform2iv":_emscripten_glUniform2iv,"emscripten_glUniform2ui":_emscripten_glUniform2ui,"emscripten_glUniform2uiv":_emscripten_glUniform2uiv,"emscripten_glUniform3f":_emscripten_glUniform3f,"emscripten_glUniform3fv":_emscripten_glUniform3fv,"emscripten_glUniform3i":_emscripten_glUniform3i,"emscripten_glUniform3iv":_emscripten_glUniform3iv,"emscripten_glUniform3ui":_emscripten_glUniform3ui,"emscripten_glUniform3uiv":_emscripten_glUniform3uiv,"emscripten_glUniform4f":_emscripten_glUniform4f,"emscripten_glUniform4fv":_emscripten_glUniform4fv,"emscripten_glUniform4i":_emscripten_glUniform4i,"emscripten_glUniform4iv":_emscripten_glUniform4iv,"emscripten_glUniform4ui":_emscripten_glUniform4ui,"emscripten_glUniform4uiv":_emscripten_glUniform4uiv,"emscripten_glUniformBlockBinding":_emscripten_glUniformBlockBinding,"emscripten_glUniformMatrix2fv":_emscripten_glUniformMatrix2fv,"emscripten_glUniformMatrix2x3fv":_emscripten_glUniformMatrix2x3fv,"emscripten_glUniformMatrix2x4fv":_emscripten_glUniformMatrix2x4fv,"emscripten_glUniformMatrix3fv":_emscripten_glUniformMatrix3fv,"emscripten_glUniformMatrix3x2fv":_emscripten_glUniformMatrix3x2fv,"emscripten_glUniformMatrix3x4fv":_emscripten_glUniformMatrix3x4fv,"emscripten_glUniformMatrix4fv":_emscripten_glUniformMatrix4fv,"emscripten_glUniformMatrix4x2fv":_emscripten_glUniformMatrix4x2fv,"emscripten_glUniformMatrix4x3fv":_emscripten_glUniformMatrix4x3fv,"emscripten_glUnmapBuffer":_emscripten_glUnmapBuffer,"emscripten_glUseProgram":_emscripten_glUseProgram,"emscripten_glValidateProgram":_emscripten_glValidateProgram,"emscripten_glVertexAttrib1f":_emscripten_glVertexAttrib1f,"emscripten_glVertexAttrib1fv":_emscripten_glVertexAttrib1fv,"emscripten_glVertexAttrib2f":_emscripten_glVertexAttrib2f,"emscripten_glVertexAttrib2fv":_emscripten_glVertexAttrib2fv,"emscripten_glVertexAttrib3f":_emscripten_glVertexAttrib3f,"emscripten_glVertexAttrib3fv":_emscripten_glVertexAttrib3fv,"emscripten_glVertexAttrib4f":_emscripten_glVertexAttrib4f,"emscripten_glVertexAttrib4fv":_emscripten_glVertexAttrib4fv,"emscripten_glVertexAttribDivisor":_emscripten_glVertexAttribDivisor,"emscripten_glVertexAttribDivisorANGLE":_emscripten_glVertexAttribDivisorANGLE,"emscripten_glVertexAttribDivisorARB":_emscripten_glVertexAttribDivisorARB,"emscripten_glVertexAttribDivisorEXT":_emscripten_glVertexAttribDivisorEXT,"emscripten_glVertexAttribDivisorNV":_emscripten_glVertexAttribDivisorNV,"emscripten_glVertexAttribI4i":_emscripten_glVertexAttribI4i,"emscripten_glVertexAttribI4iv":_emscripten_glVertexAttribI4iv,"emscripten_glVertexAttribI4ui":_emscripten_glVertexAttribI4ui,"emscripten_glVertexAttribI4uiv":_emscripten_glVertexAttribI4uiv,"emscripten_glVertexAttribIPointer":_emscripten_glVertexAttribIPointer,"emscripten_glVertexAttribPointer":_emscripten_glVertexAttribPointer,"emscripten_glViewport":_emscripten_glViewport,"emscripten_glWaitSync":_emscripten_glWaitSync,"emscripten_memcpy_big":_emscripten_memcpy_big,"emscripten_resize_heap":_emscripten_resize_heap,"emscripten_set_main_loop":_emscripten_set_main_loop,"fd_close":_fd_close,"fd_read":_fd_read,"fd_seek":_fd_seek,"fd_write":_fd_write,"glfwCreateWindow":_glfwCreateWindow,"glfwDestroyWindow":_glfwDestroyWindow,"glfwGetFramebufferSize":_glfwGetFramebufferSize,"glfwGetKey":_glfwGetKey,"glfwGetWindowSize":_glfwGetWindowSize,"glfwInit":_glfwInit,"glfwMakeContextCurrent":_glfwMakeContextCurrent,"glfwPollEvents":_glfwPollEvents,"glfwSwapBuffers":_glfwSwapBuffers,"glfwSwapInterval":_glfwSwapInterval,"glfwTerminate":_glfwTerminate,"glfwWindowHint":_glfwWindowHint,"setTempRet0":_setTempRet0,"time":_time};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["__wasm_call_ctors"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["malloc"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["free"]).apply(null,arguments)};var ___original_main=Module["___original_main"]=function(){return(___original_main=Module["___original_main"]=Module["asm"]["__original_main"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["main"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["__errno_location"]).apply(null,arguments)};var ___dl_seterr=Module["___dl_seterr"]=function(){return(___dl_seterr=Module["___dl_seterr"]=Module["asm"]["__dl_seterr"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module["_emscripten_main_thread_process_queued_calls"]=function(){return(_emscripten_main_thread_process_queued_calls=Module["_emscripten_main_thread_process_queued_calls"]=Module["asm"]["emscripten_main_thread_process_queued_calls"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["stackSave"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["stackRestore"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["stackAlloc"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["dynCall_jiji"]).apply(null,arguments)};Module["ccall"]=ccall;Module["cwrap"]=cwrap;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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/builds/neopeed/cglweb.wasm b/builds/neopeed/cglweb.wasm new file mode 100644 index 0000000000000000000000000000000000000000..20b82ca887b1adb1b063faf84cbea80d716f9dba GIT binary patch literal 134342 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

B{<=MA_TEy`elRCJes3Q7wG|xJ`Fck= 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 literal 0 HcmV?d00001 diff --git a/builds/neopeed/index.html b/builds/neopeed/index.html new file mode 100644 index 0000000..32b68b7 --- /dev/null +++ b/builds/neopeed/index.html @@ -0,0 +1,93 @@ + + + + + + CGL-Web + + + + +

+

Left/Right Arrow to move

+

Up/Down Arrow to change camera angle

+

R to restart after Game Over

+

Avoid the Red, Collect the Blue

+

NOTE: The Web version does not suppoer postprocessing(bloom & toon shading) so looks much shabbier than the native version

+
+ + + + diff --git a/builds/neopeed/thumb.png b/builds/neopeed/thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..3a83c1687320c2ecf4c0c5dd0f7268de8df602a6 GIT binary patch literal 51264 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 literal 0 HcmV?d00001 diff --git a/db.json b/db.json index 7f19d2f..2598bcd 100644 --- a/db.json +++ b/db.json @@ -287,5 +287,18 @@ "published_date": "2024-02-01", "author": "Jaysmito101", "difficulty": 2 + }, + { + "name": "Neopeed", + "path": "builds/neopeed", + "source_code": "https://github.com/Jaysmito101/cgl/blob/main/examples/c/neopeed.c", + "tags": ["cgl", "game", "creative", "tutorial"], + "views": 121, + "description": "A full fledged infinite runner game made from scratch using CGL.", + "image": "builds/neopeed/thumb.png", + "published_date": "2024-02-02", + "author": "Jaysmito101", + "difficulty": 5 } + ]