diff --git a/98/307312_Windows_98_v2.swf b/98/307312_Windows_98_v2.swf new file mode 100644 index 00000000..e3191604 Binary files /dev/null and b/98/307312_Windows_98_v2.swf differ diff --git a/98/cover.svg b/98/cover.svg new file mode 100644 index 00000000..aef115f6 --- /dev/null +++ b/98/cover.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/98/index.html b/98/index.html new file mode 100644 index 00000000..27655076 --- /dev/null +++ b/98/index.html @@ -0,0 +1,28 @@ + + + + + + + + Windows 98 + + + +
+ + + + diff --git a/Selenite.csproj b/Selenite.csproj new file mode 100644 index 00000000..dbf970a0 --- /dev/null +++ b/Selenite.csproj @@ -0,0 +1,12 @@ + + + + Exe + netcoreapp3.1 + + + + + + + diff --git a/Startup.cs b/Startup.cs new file mode 100644 index 00000000..22f2020b --- /dev/null +++ b/Startup.cs @@ -0,0 +1,56 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using System.IO; + +public class Startup +{ + public void ConfigureServices(IServiceCollection services) + { + + } + + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + else + { + + } + + + app.UseStaticFiles(new StaticFileOptions + { + FileProvider = new Microsoft.Extensions.FileProviders.PhysicalFileProvider( + Path.Combine(Directory.GetCurrentDirectory(), "wwwroot")), + RequestPath = "" + }); + + app.Map("/projects", HandleRequest("projects.html")); + app.Map("/bookmarklets", HandleRequest("bookmarklets.html")); + app.Map("/settings", HandleRequest("settings.html")); + app.Map("/support", HandleRequest("support.html")); + app.Map("/about", HandleRequest("about.html")); + app.Map("/transfer", HandleRequest("transfer.html")); + app.Map("/suggest", HandleRequest("suggest.html")); + app.Map("/contact", HandleRequest("contact.html")); + app.Map("/ad", HandleRequest("ad.html")); + + app.Run(async (context) => + { + await context.Response.WriteAsync("Not Found"); + }); + } + + private static Action HandleRequest(string fileName) + { + return app => app.Run(async context => + { + await context.Response.SendFileAsync(Path.Combine(Directory.GetCurrentDirectory(), fileName)); + }); + } +} diff --git a/bikechamp/517004_bike_champ.swf b/bikechamp/517004_bike_champ.swf new file mode 100644 index 00000000..a0d09d19 Binary files /dev/null and b/bikechamp/517004_bike_champ.swf differ diff --git a/bikechamp/cover.svg b/bikechamp/cover.svg new file mode 100644 index 00000000..0c11c57a --- /dev/null +++ b/bikechamp/cover.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/bikechamp/index.html b/bikechamp/index.html new file mode 100644 index 00000000..464072bf --- /dev/null +++ b/bikechamp/index.html @@ -0,0 +1,28 @@ + + + + + + + + Bike Champ + + + +
+ + + + diff --git a/bikechamp2/546467_bike_champ_2.swf b/bikechamp2/546467_bike_champ_2.swf new file mode 100644 index 00000000..6083c011 Binary files /dev/null and b/bikechamp2/546467_bike_champ_2.swf differ diff --git a/bikechamp2/cover.svg b/bikechamp2/cover.svg new file mode 100644 index 00000000..cc977b7f --- /dev/null +++ b/bikechamp2/cover.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/bikechamp2/index.html b/bikechamp2/index.html new file mode 100644 index 00000000..09f4347f --- /dev/null +++ b/bikechamp2/index.html @@ -0,0 +1,28 @@ + + + + + + + + Bike Champ 2 + + + +
+ + + + diff --git a/bootstrap3.css b/bootstrap3.css new file mode 100644 index 00000000..4f09f2ba --- /dev/null +++ b/bootstrap3.css @@ -0,0 +1,395 @@ +/*! + * Generated using the Bootstrap Customizer (https://getbootstrap.com/docs/3.4/customize/) + */ +/*! + * Bootstrap v3.4.1 (https://getbootstrap.com/) + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ + + + +.modal-open { + overflow: hidden; +} +.close { + float:right; +} +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + display: none; + overflow: hidden; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.modal.fade .modal-dialog { + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); + -webkit-transition: -webkit-transform 0.3s ease-out; + -o-transition: -o-transform 0.3s ease-out; + transition: transform 0.3s ease-out; +} +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); +} +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} +.modal-content { + position: relative; + background-color: #ffffff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #999999; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + outline: 0; +} +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} +.modal-backdrop.fade { + filter: alpha(opacity=0); + opacity: 0; +} +.modal-backdrop.in { + filter: alpha(opacity=50); + opacity: 0.5; +} +.modal-header { + padding: 15px; + border-bottom: 1px solid #e5e5e5; +} +.modal-header .close { + margin-top: -2px; +} +.modal-title { + margin: 0; + line-height: 1.42857143; +} +.modal-body { + position: relative; + padding: 15px; +} +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; +} +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + } + .modal-sm { + width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } +} +.clearfix:before, +.clearfix:after, +.modal-header:before, +.modal-header:after, +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} +.clearfix:after, +.modal-header:after, +.modal-footer:after { + clear: both; +} +.center-block { + display: block; + margin-right: auto; + margin-left: auto; +} +.pull-right { + float: right !important; +} +.pull-left { + float: left !important; +} +.hide { + display: none !important; +} +.show { + display: block !important; +} +.invisible { + visibility: hidden; +} +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.hidden { + display: none !important; +} +.affix { + position: fixed; +} +@-ms-viewport { + width: device-width; +} +.visible-xs, +.visible-sm, +.visible-md, +.visible-lg { + display: none !important; +} +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + display: none !important; +} +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table !important; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} +@media (max-width: 767px) { + .visible-xs-block { + display: block !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline { + display: inline !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline-block { + display: inline-block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + table.visible-sm { + display: table !important; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-block { + display: block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline { + display: inline !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline-block { + display: inline-block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + table.visible-md { + display: table !important; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-block { + display: block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline { + display: inline !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline-block { + display: inline-block !important; + } +} +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + table.visible-lg { + display: table !important; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } +} +@media (min-width: 1200px) { + .visible-lg-block { + display: block !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline { + display: inline !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline-block { + display: inline-block !important; + } +} +@media (max-width: 767px) { + .hidden-xs { + display: none !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } +} +@media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } +} +.visible-print { + display: none !important; +} +@media print { + .visible-print { + display: block !important; + } + table.visible-print { + display: table !important; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } +} +.visible-print-block { + display: none !important; +} +@media print { + .visible-print-block { + display: block !important; + } +} +.visible-print-inline { + display: none !important; +} +@media print { + .visible-print-inline { + display: inline !important; + } +} +.visible-print-inline-block { + display: none !important; +} +@media print { + .visible-print-inline-block { + display: inline-block !important; + } +} +@media print { + .hidden-print { + display: none !important; + } +} diff --git a/cmm-client/index.html b/cmm-client/index.html index 5755d96a..221744ac 100644 --- a/cmm-client/index.html +++ b/cmm-client/index.html @@ -99,7 +99,7 @@ This version of eaglercraft you are using right now is from 11/05/2022 -ALLAH IS THE ONLY GOD +CMM Client + + + + Copter + + + +
+ + + + diff --git a/creeper/653546_cc2-v4.swf b/creeper/653546_cc2-v4.swf new file mode 100644 index 00000000..3d55679a Binary files /dev/null and b/creeper/653546_cc2-v4.swf differ diff --git a/creeper/cover.svg b/creeper/cover.svg new file mode 100644 index 00000000..021670f4 --- /dev/null +++ b/creeper/cover.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/creeper/index.html b/creeper/index.html new file mode 100644 index 00000000..ec1f58ac --- /dev/null +++ b/creeper/index.html @@ -0,0 +1,28 @@ + + + + + + + + Creep Craft 2 + + + +
+ + + + diff --git a/crimsonfantasia/14qAOu.png b/crimsonfantasia/14qAOu.png new file mode 100644 index 00000000..07dc0153 Binary files /dev/null and b/crimsonfantasia/14qAOu.png differ diff --git a/crimsonfantasia/Build/Crimson Fantasia [WebGL].data b/crimsonfantasia/Build/Crimson Fantasia [WebGL].data new file mode 100644 index 00000000..80058f24 Binary files /dev/null and b/crimsonfantasia/Build/Crimson Fantasia [WebGL].data differ diff --git a/crimsonfantasia/Build/Crimson Fantasia [WebGL].framework.js b/crimsonfantasia/Build/Crimson Fantasia [WebGL].framework.js new file mode 100644 index 00000000..8dc29d22 --- /dev/null +++ b/crimsonfantasia/Build/Crimson Fantasia [WebGL].framework.js @@ -0,0 +1,5 @@ +function unityFramework(Module) { +var Module=typeof Module!=="undefined"?Module:{}; +function Pointer_stringify(s,len){warnOnce("The JavaScript function 'Pointer_stringify(ptrToSomeCString)' is obsoleted and will be removed in a future Unity version. Please call 'UTF8ToString(ptrToSomeCString)' instead.");return UTF8ToString(s,len)}Module["Pointer_stringify"]=Pointer_stringify;var stackTraceReference="(^|\\n)(\\s+at\\s+|)jsStackTrace(\\s+\\(|@)([^\\n]+):\\d+:\\d+(\\)|)(\\n|$)";var stackTraceReferenceMatch=jsStackTrace().match(new RegExp(stackTraceReference));if(stackTraceReferenceMatch)Module.stackTraceRegExp=new RegExp(stackTraceReference.replace("([^\\n]+)",stackTraceReferenceMatch[4].replace(/[\\^${}[\]().*+?|]/g,"\\$&")).replace("jsStackTrace","[^\\n]+"));var abort=function(what){if(ABORT)return;ABORT=true;EXITSTATUS=1;if(typeof ENVIRONMENT_IS_PTHREAD!=="undefined"&&ENVIRONMENT_IS_PTHREAD)console.error("Pthread aborting at "+(new Error).stack);if(what!==undefined){out(what);err(what);what=JSON.stringify(what)}else{what=""}var message="abort("+what+") at "+stackTrace();if(Module.abortHandler&&Module.abortHandler(message))return;throw message};Module["SetFullscreen"]=function(fullscreen){if(typeof runtimeInitialized==="undefined"||!runtimeInitialized){console.log("Runtime not initialized yet.")}else if(typeof JSEvents==="undefined"){console.log("Player not loaded yet.")}else{var tmp=JSEvents.canPerformEventHandlerRequests;JSEvents.canPerformEventHandlerRequests=function(){return 1};Module.ccall("SetFullscreen",null,["number"],[fullscreen]);JSEvents.canPerformEventHandlerRequests=tmp}};if(typeof ENVIRONMENT_IS_PTHREAD==="undefined"||!ENVIRONMENT_IS_PTHREAD){Module["preRun"].push(function(){var unityFileSystemInit=Module["unityFileSystemInit"]||function(){FS.mkdir("/idbfs");FS.mount(IDBFS,{},"/idbfs");Module.addRunDependency("JS_FileSystem_Mount");FS.syncfs(true,function(err){if(err)console.log("IndexedDB is not available. Data will not persist in cache and PlayerPrefs will not be saved.");Module.removeRunDependency("JS_FileSystem_Mount")})};unityFileSystemInit()})}var videoInputDevices=[];var videoInputDevicesEnumerated=false;var removeEnumerateMediaDevicesRunDependency;var enumerateWatchdog=null;function matchToOldDevice(newDevice){var oldDevices=Object.keys(videoInputDevices);for(var i=0;i1){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",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var getTempRet0=function(){return tempRet0};var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");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}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);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"]||33554432;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();SOCKFS.root=FS.mount(SOCKFS,{},null);PIPEFS.root=FS.mount(PIPEFS,{},null);callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;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+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+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="build.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={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["si"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["Ri"];addOnInit(Module["asm"]["ti"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){var result=WebAssembly.instantiate(binary,info);return result}).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;var ASM_CONSTS={5054728:function(){return Module.webglContextAttributes.premultipliedAlpha},5054789:function(){return Module.webglContextAttributes.preserveDrawingBuffer},5054853:function(){return Module.webglContextAttributes.powerPreference}};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){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(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+"]"})}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}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()}var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}var JS_Accelerometer=null;var JS_Accelerometer_callback=0;function _JS_Accelerometer_IsRunning(){return JS_Accelerometer&&JS_Accelerometer.activated||JS_Accelerometer_callback!=0}var JS_Accelerometer_multiplier=1;var JS_Accelerometer_lastValue={x:0,y:0,z:0};function JS_Accelerometer_eventHandler(){JS_Accelerometer_lastValue={x:JS_Accelerometer.x*JS_Accelerometer_multiplier,y:JS_Accelerometer.y*JS_Accelerometer_multiplier,z:JS_Accelerometer.z*JS_Accelerometer_multiplier};if(JS_Accelerometer_callback!=0)dynCall_vfff(JS_Accelerometer_callback,JS_Accelerometer_lastValue.x,JS_Accelerometer_lastValue.y,JS_Accelerometer_lastValue.z)}var JS_Accelerometer_frequencyRequest=0;var JS_Accelerometer_frequency=0;var JS_LinearAccelerationSensor_callback=0;var JS_GravitySensor_callback=0;var JS_Gyroscope_callback=0;function JS_ComputeGravity(accelerometerValue,linearAccelerationValue){var difference={x:accelerometerValue.x-linearAccelerationValue.x,y:accelerometerValue.y-linearAccelerationValue.y,z:accelerometerValue.z-linearAccelerationValue.z};var differenceMagnitudeSq=difference.x*difference.x+difference.y*difference.y+difference.z*difference.z;var sum={x:accelerometerValue.x+linearAccelerationValue.x,y:accelerometerValue.y+linearAccelerationValue.y,z:accelerometerValue.z+linearAccelerationValue.z};var sumMagnitudeSq=sum.x*sum.x+sum.y*sum.y+sum.z*sum.z;return differenceMagnitudeSq<=sumMagnitudeSq?difference:sum}function JS_DeviceMotion_eventHandler(event){var accelerometerValue={x:event.accelerationIncludingGravity.x*JS_Accelerometer_multiplier,y:event.accelerationIncludingGravity.y*JS_Accelerometer_multiplier,z:event.accelerationIncludingGravity.z*JS_Accelerometer_multiplier};if(JS_Accelerometer_callback!=0)dynCall_vfff(JS_Accelerometer_callback,accelerometerValue.x,accelerometerValue.y,accelerometerValue.z);var linearAccelerationValue={x:event.acceleration.x*JS_Accelerometer_multiplier,y:event.acceleration.y*JS_Accelerometer_multiplier,z:event.acceleration.z*JS_Accelerometer_multiplier};if(JS_LinearAccelerationSensor_callback!=0)dynCall_vfff(JS_LinearAccelerationSensor_callback,linearAccelerationValue.x,linearAccelerationValue.y,linearAccelerationValue.z);if(JS_GravitySensor_callback!=0){var gravityValue=JS_ComputeGravity(accelerometerValue,linearAccelerationValue);dynCall_vfff(JS_GravitySensor_callback,gravityValue.x,gravityValue.y,gravityValue.z)}if(JS_Gyroscope_callback!=0){var degToRad=Math.PI/180;dynCall_vfff(JS_Gyroscope_callback,event.rotationRate.alpha*degToRad,event.rotationRate.beta*degToRad,event.rotationRate.gamma*degToRad)}}var JS_DeviceSensorPermissions=0;function JS_RequestDeviceSensorPermissions(permissions){if(permissions&1){if(typeof DeviceOrientationEvent.requestPermission==="function"){DeviceOrientationEvent.requestPermission().then(function(permissionState){if(permissionState==="granted"){JS_DeviceSensorPermissions&=~1}else{warnOnce("DeviceOrientationEvent permission not granted")}}).catch(function(err){warnOnce(err);JS_DeviceSensorPermissions|=1})}}if(permissions&2){if(typeof DeviceMotionEvent.requestPermission==="function"){DeviceMotionEvent.requestPermission().then(function(permissionState){if(permissionState==="granted"){JS_DeviceSensorPermissions&=~2}else{warnOnce("DeviceMotionEvent permission not granted")}}).catch(function(err){warnOnce(err);JS_DeviceSensorPermissions|=2})}}}function JS_DeviceMotion_add(){if(JS_Accelerometer_callback==0&&JS_LinearAccelerationSensor_callback==0&&JS_GravitySensor_callback==0&&JS_Gyroscope_callback==0){JS_RequestDeviceSensorPermissions(2);window.addEventListener("devicemotion",JS_DeviceMotion_eventHandler)}}function JS_DefineAccelerometerMultiplier(){var g=9.80665;JS_Accelerometer_multiplier=/(iPhone|iPad|Macintosh)/i.test(navigator.userAgent)?1/g:-1/g}function _JS_Accelerometer_Start(callback,frequency){JS_DefineAccelerometerMultiplier();if(typeof Accelerometer==="undefined"){JS_DeviceMotion_add();if(callback!=0)JS_Accelerometer_callback=callback;return}if(callback!=0)JS_Accelerometer_callback=callback;function InitializeAccelerometer(frequency){JS_Accelerometer=new Accelerometer({frequency:frequency,referenceFrame:"device"});JS_Accelerometer.addEventListener("reading",JS_Accelerometer_eventHandler);JS_Accelerometer.addEventListener("error",function(e){warnOnce(e.error?e.error:e)});JS_Accelerometer.start();JS_Accelerometer_frequency=frequency}if(JS_Accelerometer){if(JS_Accelerometer_frequency!=frequency){JS_Accelerometer.stop();JS_Accelerometer.removeEventListener("reading",JS_Accelerometer_eventHandler);InitializeAccelerometer(frequency)}}else if(JS_Accelerometer_frequencyRequest!=0){JS_Accelerometer_frequencyRequest=frequency}else{JS_Accelerometer_frequencyRequest=frequency;navigator.permissions.query({name:"accelerometer"}).then(function(result){if(result.state==="granted"){InitializeAccelerometer(JS_Accelerometer_frequencyRequest)}else{warnOnce("No permission to use Accelerometer.")}JS_Accelerometer_frequencyRequest=0})}}function JS_DeviceMotion_remove(){if(JS_Accelerometer_callback==0&&JS_LinearAccelerationSensor_callback==0&&JS_GravitySensor_callback==0&&JS_Gyroscope_callback==0){window.removeEventListener("devicemotion",JS_DeviceOrientation_eventHandler)}}function _JS_Accelerometer_Stop(){if(JS_Accelerometer){if(typeof GravitySensor!=="undefined"||JS_GravitySensor_callback==0){JS_Accelerometer.stop();JS_Accelerometer.removeEventListener("reading",JS_Accelerometer_eventHandler);JS_Accelerometer=null}JS_Accelerometer_callback=0;JS_Accelerometer_frequency=0}else if(JS_Accelerometer_callback!=0){JS_Accelerometer_callback=0;JS_DeviceMotion_remove()}}function _JS_Cursor_SetImage(ptr,length){var binary="";for(var i=0;i>2]=viewportX-rect.left;HEAPU32[targetY>>2]=viewportY-rect.top}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _JS_DOM_UnityCanvasSelector(){if(!_JS_DOM_UnityCanvasSelector.ptr){var canvasId=Module["canvas"]?Module["canvas"].id:"unity-canvas";var canvasSelector="#"+jsDomCssEscapeId(canvasId);_JS_DOM_UnityCanvasSelector.ptr=stringToNewUTF8(canvasSelector)}return _JS_DOM_UnityCanvasSelector.ptr}function _JS_Eval_OpenURL(ptr){var str=UTF8ToString(ptr);window.open(str,"_blank","")}var fs={numPendingSync:0,syncInternal:1e3,syncInProgress:false,sync:function(onlyPendingSync){if(onlyPendingSync){if(fs.numPendingSync==0)return}else if(fs.syncInProgress){fs.numPendingSync++;return}fs.syncInProgress=true;FS.syncfs(false,function(err){fs.syncInProgress=false});fs.numPendingSync=0}};function _JS_FileSystem_Initialize(){Module.setInterval(function(){fs.sync(true)},fs.syncInternal)}function _JS_FileSystem_Sync(){fs.sync(false)}var JS_GravitySensor=null;function _JS_GravitySensor_IsRunning(){return typeof GravitySensor!=="undefined"?JS_GravitySensor&&JS_GravitySensor.activated:JS_GravitySensor_callback!=0}function JS_GravitySensor_eventHandler(){if(JS_GravitySensor_callback!=0)dynCall_vfff(JS_GravitySensor_callback,JS_GravitySensor.x*JS_Accelerometer_multiplier,JS_GravitySensor.y*JS_Accelerometer_multiplier,JS_GravitySensor.z*JS_Accelerometer_multiplier)}var JS_GravitySensor_frequencyRequest=0;var JS_LinearAccelerationSensor=null;function JS_LinearAccelerationSensor_eventHandler(){var linearAccelerationValue={x:JS_LinearAccelerationSensor.x*JS_Accelerometer_multiplier,y:JS_LinearAccelerationSensor.y*JS_Accelerometer_multiplier,z:JS_LinearAccelerationSensor.z*JS_Accelerometer_multiplier};if(JS_LinearAccelerationSensor_callback!=0)dynCall_vfff(JS_LinearAccelerationSensor_callback,linearAccelerationValue.x,linearAccelerationValue.y,linearAccelerationValue.z);if(JS_GravitySensor_callback!=0&&typeof GravitySensor==="undefined"){var gravityValue=JS_ComputeGravity(JS_Accelerometer_lastValue,linearAccelerationValue);dynCall_vfff(JS_GravitySensor_callback,gravityValue.x,gravityValue.y,gravityValue.z)}}var JS_LinearAccelerationSensor_frequencyRequest=0;var JS_LinearAccelerationSensor_frequency=0;function _JS_LinearAccelerationSensor_Start(callback,frequency){JS_DefineAccelerometerMultiplier();if(typeof LinearAccelerationSensor==="undefined"){JS_DeviceMotion_add();if(callback!=0)JS_LinearAccelerationSensor_callback=callback;return}if(callback!=0)JS_LinearAccelerationSensor_callback=callback;function InitializeLinearAccelerationSensor(frequency){JS_LinearAccelerationSensor=new LinearAccelerationSensor({frequency:frequency,referenceFrame:"device"});JS_LinearAccelerationSensor.addEventListener("reading",JS_LinearAccelerationSensor_eventHandler);JS_LinearAccelerationSensor.addEventListener("error",function(e){warnOnce(e.error?e.error:e)});JS_LinearAccelerationSensor.start();JS_LinearAccelerationSensor_frequency=frequency}if(JS_LinearAccelerationSensor){if(JS_LinearAccelerationSensor_frequency!=frequency){JS_LinearAccelerationSensor.stop();JS_LinearAccelerationSensor.removeEventListener("reading",JS_LinearAccelerationSensor_eventHandler);InitializeLinearAccelerationSensor(frequency)}}else if(JS_LinearAccelerationSensor_frequencyRequest!=0){JS_LinearAccelerationSensor_frequencyRequest=frequency}else{JS_LinearAccelerationSensor_frequencyRequest=frequency;navigator.permissions.query({name:"accelerometer"}).then(function(result){if(result.state==="granted"){InitializeLinearAccelerationSensor(JS_LinearAccelerationSensor_frequencyRequest)}else{warnOnce("No permission to use LinearAccelerationSensor.")}JS_LinearAccelerationSensor_frequencyRequest=0})}}function _JS_GravitySensor_Start(callback,frequency){if(typeof GravitySensor==="undefined"){_JS_Accelerometer_Start(0,Math.max(frequency,JS_Accelerometer_frequency));_JS_LinearAccelerationSensor_Start(0,Math.max(frequency,JS_LinearAccelerationSensor_frequency));JS_GravitySensor_callback=callback;return}JS_DefineAccelerometerMultiplier();JS_GravitySensor_callback=callback;function InitializeGravitySensor(frequency){JS_GravitySensor=new GravitySensor({frequency:frequency,referenceFrame:"device"});JS_GravitySensor.addEventListener("reading",JS_GravitySensor_eventHandler);JS_GravitySensor.addEventListener("error",function(e){warnOnce(e.error?e.error:e)});JS_GravitySensor.start()}if(JS_GravitySensor){JS_GravitySensor.stop();JS_GravitySensor.removeEventListener("reading",JS_GravitySensor_eventHandler);InitializeGravitySensor(frequency)}else if(JS_GravitySensor_frequencyRequest!=0){JS_GravitySensor_frequencyRequest=frequency}else{JS_GravitySensor_frequencyRequest=frequency;navigator.permissions.query({name:"accelerometer"}).then(function(result){if(result.state==="granted"){InitializeGravitySensor(JS_GravitySensor_frequencyRequest)}else{warnOnce("No permission to use GravitySensor.")}JS_GravitySensor_frequencyRequest=0})}}function _JS_LinearAccelerationSensor_Stop(){if(JS_LinearAccelerationSensor){if(typeof GravitySensor!=="undefined"||JS_GravitySensor_callback==0){JS_LinearAccelerationSensor.stop();JS_LinearAccelerationSensor.removeEventListener("reading",JS_LinearAccelerationSensor_eventHandler);JS_LinearAccelerationSensor=null}JS_LinearAccelerationSensor_callback=0;JS_LinearAccelerationSensor_frequency=0}else if(JS_LinearAccelerationSensor_callback!=0){JS_LinearAccelerationSensor_callback=0;JS_DeviceMotion_remove()}}function _JS_GravitySensor_Stop(){JS_GravitySensor_callback=0;if(typeof GravitySensor==="undefined"){if(JS_Accelerometer_callback==0)_JS_Accelerometer_Stop();if(JS_LinearAccelerationSensor_callback==0)_JS_LinearAccelerationSensor_Stop();return}if(JS_GravitySensor){JS_GravitySensor.stop();JS_GravitySensor.removeEventListener("reading",JS_GravitySensor_eventHandler);JS_GravitySensor=null}}var JS_Gyroscope=null;function _JS_Gyroscope_IsRunning(){return JS_Gyroscope&&JS_Gyroscope.activated||JS_Gyroscope_callback!=0}function JS_Gyroscope_eventHandler(){if(JS_Gyroscope_callback!=0)dynCall_vfff(JS_Gyroscope_callback,JS_Gyroscope.x,JS_Gyroscope.y,JS_Gyroscope.z)}var JS_Gyroscope_frequencyRequest=0;function _JS_Gyroscope_Start(callback,frequency){if(typeof Gyroscope==="undefined"){JS_DeviceMotion_add();JS_Gyroscope_callback=callback;return}JS_Gyroscope_callback=callback;function InitializeGyroscope(frequency){JS_Gyroscope=new Gyroscope({frequency:frequency,referenceFrame:"device"});JS_Gyroscope.addEventListener("reading",JS_Gyroscope_eventHandler);JS_Gyroscope.addEventListener("error",function(e){warnOnce(e.error?e.error:e)});JS_Gyroscope.start()}if(JS_Gyroscope){JS_Gyroscope.stop();JS_Gyroscope.removeEventListener("reading",JS_Gyroscope_eventHandler);InitializeGyroscope(frequency)}else if(JS_Gyroscope_frequencyRequest!=0){JS_Gyroscope_frequencyRequest=frequency}else{JS_Gyroscope_frequencyRequest=frequency;navigator.permissions.query({name:"gyroscope"}).then(function(result){if(result.state==="granted"){InitializeGyroscope(JS_Gyroscope_frequencyRequest)}else{warnOnce("No permission to use Gyroscope.")}JS_Gyroscope_frequencyRequest=0})}}function _JS_Gyroscope_Stop(){if(JS_Gyroscope){JS_Gyroscope.stop();JS_Gyroscope.removeEventListener("reading",JS_Gyroscope_eventHandler);JS_Gyroscope=null;JS_Gyroscope_callback=0}else if(JS_Gyroscope_callback!=0){JS_Gyroscope_callback=0;JS_DeviceMotion_remove()}}function _JS_LinearAccelerationSensor_IsRunning(){return JS_LinearAccelerationSensor&&JS_LinearAccelerationSensor.activated||JS_LinearAccelerationSensor_callback!=0}function _JS_Log_Dump(ptr,type){var str=UTF8ToString(ptr);if(typeof dump=="function")dump(str);switch(type){case 0:case 1:case 4:console.error(str);return;case 2:console.warn(str);return;case 3:case 5:console.log(str);return;default:console.error("Unknown console message type!");console.error(str)}}function _JS_Log_StackTrace(buffer,bufferSize){var trace=stackTrace();if(buffer)stringToUTF8(trace,buffer,bufferSize);return lengthBytesUTF8(trace)}var JS_OrientationSensor=null;var JS_OrientationSensor_callback=0;function _JS_OrientationSensor_IsRunning(){return JS_OrientationSensor&&JS_OrientationSensor.activated||JS_OrientationSensor_callback!=0}function JS_OrientationSensor_eventHandler(){if(JS_OrientationSensor_callback!=0)dynCall_vffff(JS_OrientationSensor_callback,JS_OrientationSensor.quaternion[0],JS_OrientationSensor.quaternion[1],JS_OrientationSensor.quaternion[2],JS_OrientationSensor.quaternion[3])}var JS_OrientationSensor_frequencyRequest=0;function JS_DeviceOrientation_eventHandler(event){if(JS_OrientationSensor_callback){var degToRad=Math.PI/180;var x=event.beta*degToRad;var y=event.gamma*degToRad;var z=event.alpha*degToRad;var cx=Math.cos(x/2);var sx=Math.sin(x/2);var cy=Math.cos(y/2);var sy=Math.sin(y/2);var cz=Math.cos(z/2);var sz=Math.sin(z/2);var qx=sx*cy*cz-cx*sy*sz;var qy=cx*sy*cz+sx*cy*sz;var qz=cx*cy*sz+sx*sy*cz;var qw=cx*cy*cz-sx*sy*sz;dynCall_vffff(JS_OrientationSensor_callback,qx,qy,qz,qw)}}function _JS_OrientationSensor_Start(callback,frequency){if(typeof RelativeOrientationSensor==="undefined"){if(JS_OrientationSensor_callback==0){JS_OrientationSensor_callback=callback;JS_RequestDeviceSensorPermissions(1);window.addEventListener("deviceorientation",JS_DeviceOrientation_eventHandler)}return}JS_OrientationSensor_callback=callback;function InitializeOrientationSensor(frequency){JS_OrientationSensor=new RelativeOrientationSensor({frequency:frequency,referenceFrame:"device"});JS_OrientationSensor.addEventListener("reading",JS_OrientationSensor_eventHandler);JS_OrientationSensor.addEventListener("error",function(e){warnOnce(e.error?e.error:e)});JS_OrientationSensor.start()}if(JS_OrientationSensor){JS_OrientationSensor.stop();JS_OrientationSensor.removeEventListener("reading",JS_OrientationSensor_eventHandler);InitializeOrientationSensor(frequency)}else if(JS_OrientationSensor_frequencyRequest!=0){JS_OrientationSensor_frequencyRequest=frequency}else{JS_OrientationSensor_frequencyRequest=frequency;Promise.all([navigator.permissions.query({name:"accelerometer"}),navigator.permissions.query({name:"gyroscope"})]).then(function(results){if(results.every(function(result){return result.state==="granted"})){InitializeOrientationSensor(JS_OrientationSensor_frequencyRequest)}else{warnOnce("No permissions to use RelativeOrientationSensor.")}JS_OrientationSensor_frequencyRequest=0})}}function _JS_OrientationSensor_Stop(){if(JS_OrientationSensor){JS_OrientationSensor.stop();JS_OrientationSensor.removeEventListener("reading",JS_OrientationSensor_eventHandler);JS_OrientationSensor=null}else if(JS_OrientationSensor_callback!=0){window.removeEventListener("deviceorientation",JS_DeviceOrientation_eventHandler)}JS_OrientationSensor_callback=0}function _JS_RequestDeviceSensorPermissionsOnTouch(){if(JS_DeviceSensorPermissions==0)return;JS_RequestDeviceSensorPermissions(JS_DeviceSensorPermissions)}function _JS_RunQuitCallbacks(){Module.QuitCleanup()}var JS_ScreenOrientation_callback=0;function JS_ScreenOrientation_eventHandler(){if(JS_ScreenOrientation_callback)dynCall_viii(JS_ScreenOrientation_callback,window.innerWidth,window.innerHeight,screen.orientation?screen.orientation.angle:window.orientation)}function _JS_ScreenOrientation_DeInit(){JS_ScreenOrientation_callback=0;window.removeEventListener("resize",JS_ScreenOrientation_eventHandler);if(screen.orientation){screen.orientation.removeEventListener("change",JS_ScreenOrientation_eventHandler)}}function _JS_ScreenOrientation_Init(callback){if(!JS_ScreenOrientation_callback){if(screen.orientation){screen.orientation.addEventListener("change",JS_ScreenOrientation_eventHandler)}window.addEventListener("resize",JS_ScreenOrientation_eventHandler);JS_ScreenOrientation_callback=callback;setTimeout(JS_ScreenOrientation_eventHandler,0)}}var JS_ScreenOrientation_requestedLockType=-1;var JS_ScreenOrientation_appliedLockType=-1;var JS_ScreenOrientation_timeoutID=-1;function _JS_ScreenOrientation_Lock(orientationLockType){if(!screen.orientation){return}function applyLock(){JS_ScreenOrientation_appliedLockType=JS_ScreenOrientation_requestedLockType;var screenOrientations=["any",0,"landscape","portrait","portrait-primary","portrait-secondary","landscape-primary","landscape-secondary"];var type=screenOrientations[JS_ScreenOrientation_appliedLockType];screen.orientation.lock(type).then(function(){if(JS_ScreenOrientation_requestedLockType!=JS_ScreenOrientation_appliedLockType){JS_ScreenOrientation_timeoutID=setTimeout(applyLock,0)}else{JS_ScreenOrientation_timeoutID=-1}}).catch(function(err){warnOnce(err);JS_ScreenOrientation_timeoutID=-1})}JS_ScreenOrientation_requestedLockType=orientationLockType;if(JS_ScreenOrientation_timeoutID==-1&&orientationLockType!=JS_ScreenOrientation_appliedLockType){JS_ScreenOrientation_timeoutID=setTimeout(applyLock,0)}}var WEBAudio={audioInstanceIdCounter:0,audioInstances:{},audioContext:null,audioWebEnabled:0,audioCache:[],pendingAudioSources:{}};function jsAudioMixinSetPitch(source){source.estimatePlaybackPosition=function(){var t=(WEBAudio.audioContext.currentTime-source.playbackStartTime)*source.playbackRate.value;if(source.loop&&t>=source.loopStart){t=(t-source.loopStart)%(source.loopEnd-source.loopStart)+source.loopStart}return t};source.setPitch=function(newPitch){var curPosition=source.estimatePlaybackPosition();if(curPosition>=0){source.playbackStartTime=WEBAudio.audioContext.currentTime-curPosition/newPitch}if(source.playbackRate.value!==newPitch)source.playbackRate.value=newPitch}}function jsAudioCreateUncompressedSoundClip(buffer,error){var soundClip={buffer:buffer,error:error};soundClip.release=function(){};soundClip.getLength=function(){if(!this.buffer){console.log("Trying to get length of sound which is not loaded.");return 0}var sampleRateRatio=44100/this.buffer.sampleRate;return this.buffer.length*sampleRateRatio};soundClip.getData=function(ptr,length){if(!this.buffer){console.log("Trying to get data of sound which is not loaded.");return 0}var startOutputBuffer=ptr>>2;var output=HEAPF32.subarray(startOutputBuffer,startOutputBuffer+(length>>2));var numMaxSamples=Math.floor((length>>2)/this.buffer.numberOfChannels);var numReadSamples=Math.min(this.buffer.length,numMaxSamples);for(var i=0;istartDelayThresholdMS){source.playTimeout=setTimeout(function(){source.playTimeout=null;source._startPlayback(offset)},startDelayMS)}else{source._startPlayback(offset)}};source.stop=function(stopTime){if(typeof stopTime==="undefined"){stopTime=WEBAudio.audioContext.currentTime}var stopDelayThresholdMS=4;var stopDelayMS=(stopTime-WEBAudio.audioContext.currentTime)*1e3;if(stopDelayMS>stopDelayThresholdMS){setTimeout(function(){source._pauseMediaElement();source.isStopped=true},stopDelayMS)}else{source._pauseMediaElement();source.isStopped=true}};jsAudioMixinSetPitch(source);return source};return soundClip}function _JS_Sound_Load(ptr,length,decompress,fmodSoundType){if(WEBAudio.audioWebEnabled==0)return 0;var audioData=HEAPU8.buffer.slice(ptr,ptr+length);if(length<131072)decompress=1;var sound;if(decompress){sound=jsAudioCreateUncompressedSoundClipFromCompressedAudio(audioData)}else{sound=jsAudioCreateCompressedSoundClip(audioData,fmodSoundType)}WEBAudio.audioInstances[++WEBAudio.audioInstanceIdCounter]=sound;return WEBAudio.audioInstanceIdCounter}function jsAudioCreateUncompressedSoundClipFromPCM(channels,length,sampleRate,ptr){var buffer=WEBAudio.audioContext.createBuffer(channels,length,sampleRate);for(var i=0;i>2)+length*i;var copyToChannel=buffer["copyToChannel"]||function(source,channelNumber,startInChannel){var clipped=source.subarray(0,Math.min(source.length,this.length-(startInChannel|0)));this.getChannelData(channelNumber|0).set(clipped,startInChannel|0)};copyToChannel.apply(buffer,[HEAPF32.subarray(offs,offs+length),i,0])}return jsAudioCreateUncompressedSoundClip(buffer,false)}function _JS_Sound_Load_PCM(channels,length,sampleRate,ptr){if(WEBAudio.audioWebEnabled==0)return 0;var sound=jsAudioCreateUncompressedSoundClipFromPCM(channels,length,sampleRate,ptr);WEBAudio.audioInstances[++WEBAudio.audioInstanceIdCounter]=sound;return WEBAudio.audioInstanceIdCounter}function _JS_Sound_Play(bufferInstance,channelInstance,offset,delay){if(WEBAudio.audioWebEnabled==0)return;_JS_Sound_Stop(channelInstance,0);var soundClip=WEBAudio.audioInstances[bufferInstance];var channel=WEBAudio.audioInstances[channelInstance];if(!soundClip){console.log("Trying to play sound which is not loaded.");return}try{channel.playSoundClip(soundClip,WEBAudio.audioContext.currentTime+delay,offset)}catch(error){console.error("playSoundClip error. Exception: "+e)}}function _JS_Sound_ReleaseInstance(instance){var object=WEBAudio.audioInstances[instance];if(object){object.release()}delete WEBAudio.audioInstances[instance]}function _JS_Sound_ResumeIfNeeded(){if(WEBAudio.audioWebEnabled==0)return;if(WEBAudio.audioContext.state==="suspended")WEBAudio.audioContext.resume().catch(function(error){console.warn("Could not resume audio context. Exception: "+error)})}function _JS_Sound_Set3D(channelInstance,threeD){var channel=WEBAudio.audioInstances[channelInstance];channel.set3D(threeD)}function _JS_Sound_SetListenerOrientation(x,y,z,xUp,yUp,zUp){if(WEBAudio.audioWebEnabled==0)return;x=-x;y=-y;z=-z;var l=WEBAudio.audioContext.listener;if(l.forwardX){if(l.forwardX.value!==x)l.forwardX.value=x;if(l.forwardY.value!==y)l.forwardY.value=y;if(l.forwardZ.value!==z)l.forwardZ.value=z;if(l.upX.value!==xUp)l.upX.value=xUp;if(l.upY.value!==yUp)l.upY.value=yUp;if(l.upZ.value!==zUp)l.upZ.value=zUp}else if(l._forwardX!==x||l._forwardY!==y||l._forwardZ!==z||l._upX!==xUp||l._upY!==yUp||l._upZ!==zUp){l.setOrientation(x,y,z,xUp,yUp,zUp);l._forwardX=x;l._forwardY=y;l._forwardZ=z;l._upX=xUp;l._upY=yUp;l._upZ=zUp}}function _JS_Sound_SetListenerPosition(x,y,z){if(WEBAudio.audioWebEnabled==0)return;var l=WEBAudio.audioContext.listener;if(l.positionX){if(l.positionX.value!==x)l.positionX.value=x;if(l.positionY.value!==y)l.positionY.value=y;if(l.positionZ.value!==z)l.positionZ.value=z}else if(l._positionX!==x||l._positionY!==y||l._positionZ!==z){l.setPosition(x,y,z);l._positionX=x;l._positionY=y;l._positionZ=z}}function _JS_Sound_SetLoop(channelInstance,loop){if(WEBAudio.audioWebEnabled==0)return;var channel=WEBAudio.audioInstances[channelInstance];channel.setLoop(loop)}function _JS_Sound_SetLoopPoints(channelInstance,loopStart,loopEnd){if(WEBAudio.audioWebEnabled==0)return;var channel=WEBAudio.audioInstances[channelInstance];channel.setLoopPoints(loopStart,loopEnd)}function _JS_Sound_SetPaused(channelInstance,paused){if(WEBAudio.audioWebEnabled==0)return;var channel=WEBAudio.audioInstances[channelInstance];if(paused!=channel.isPaused()){if(paused)channel.pause();else channel.resume()}}function _JS_Sound_SetPitch(channelInstance,v){if(WEBAudio.audioWebEnabled==0)return;try{var channel=WEBAudio.audioInstances[channelInstance];channel.setPitch(v)}catch(e){console.error("JS_Sound_SetPitch(channel="+channelInstance+", pitch="+v+") threw an exception: "+e)}}function _JS_Sound_SetPosition(channelInstance,x,y,z){if(WEBAudio.audioWebEnabled==0)return;var channel=WEBAudio.audioInstances[channelInstance];channel.setPosition(x,y,z)}function _JS_Sound_SetVolume(channelInstance,v){if(WEBAudio.audioWebEnabled==0)return;try{var channel=WEBAudio.audioInstances[channelInstance];channel.setVolume(v)}catch(e){console.error("JS_Sound_SetVolume(channel="+channelInstance+", volume="+v+") threw an exception: "+e)}}function _JS_Sound_Stop(channelInstance,delay){if(WEBAudio.audioWebEnabled==0)return;var channel=WEBAudio.audioInstances[channelInstance];channel.stop(delay)}function _JS_SystemInfo_GetCanvasClientSize(domElementSelector,outWidth,outHeight){var selector=UTF8ToString(domElementSelector);var canvas=selector=="#canvas"?Module["canvas"]:document.querySelector(selector);var w=0,h=0;if(canvas){var size=canvas.getBoundingClientRect();w=size.width;h=size.height}HEAPF64[outWidth>>3]=w;HEAPF64[outHeight>>3]=h}function _JS_SystemInfo_GetDocumentURL(buffer,bufferSize){if(buffer)stringToUTF8(document.URL,buffer,bufferSize);return lengthBytesUTF8(document.URL)}function _JS_SystemInfo_GetGPUInfo(buffer,bufferSize){var gpuinfo=Module.SystemInfo.gpu;if(buffer)stringToUTF8(gpuinfo,buffer,bufferSize);return lengthBytesUTF8(gpuinfo)}function _JS_SystemInfo_GetMatchWebGLToCanvasSize(){return Module.matchWebGLToCanvasSize||Module.matchWebGLToCanvasSize===undefined}function _JS_SystemInfo_GetMemory(){return HEAPU8.length/(1024*1024)}function _JS_SystemInfo_GetOS(buffer,bufferSize){var browser=Module.SystemInfo.os+" "+Module.SystemInfo.osVersion;if(buffer)stringToUTF8(browser,buffer,bufferSize);return lengthBytesUTF8(browser)}function _JS_SystemInfo_GetPreferredDevicePixelRatio(){return Module.matchWebGLToCanvasSize==false?1:Module.devicePixelRatio||window.devicePixelRatio||1}function _JS_SystemInfo_GetScreenSize(outWidth,outHeight){HEAPF64[outWidth>>3]=Module.SystemInfo.width;HEAPF64[outHeight>>3]=Module.SystemInfo.height}function _JS_SystemInfo_GetStreamingAssetsURL(buffer,bufferSize){if(buffer)stringToUTF8(Module.streamingAssetsUrl,buffer,bufferSize);return lengthBytesUTF8(Module.streamingAssetsUrl)}function _JS_SystemInfo_HasAstcHdr(){var ext=GLctx.getExtension("WEBGL_compressed_texture_astc");if(ext&&ext.getSupportedProfiles){return ext.getSupportedProfiles().includes("hdr")}return false}function _JS_SystemInfo_HasCursorLock(){return Module.SystemInfo.hasCursorLock}function _JS_SystemInfo_HasFullscreen(){return Module.SystemInfo.hasFullscreen}function _JS_SystemInfo_HasWebGL(){return Module.SystemInfo.hasWebGL}function _JS_SystemInfo_IsMobile(){return Module.SystemInfo.mobile}function _JS_UnityEngineShouldQuit(){return!!Module.shouldQuit}var wr={requests:{},responses:{},abortControllers:{},timer:{},nextRequestId:1};function _JS_WebRequest_Abort(requestId){var abortController=wr.abortControllers[requestId];if(!abortController||abortController.signal.aborted){return}abortController.abort()}function _JS_WebRequest_Create(url,method){var _url=UTF8ToString(url);var _method=UTF8ToString(method);var abortController=new AbortController;var requestOptions={url:_url,init:{method:_method,signal:abortController.signal,headers:{},enableStreamingDownload:true},tempBuffer:null,tempBufferSize:0};wr.abortControllers[wr.nextRequestId]=abortController;wr.requests[wr.nextRequestId]=requestOptions;return wr.nextRequestId++}function jsWebRequestGetResponseHeaderString(requestId){var response=wr.responses[requestId];if(!response){return""}if(response.headerString){return response.headerString}var headers="";var entries=response.headers.entries();for(var result=entries.next();!result.done;result=entries.next()){headers+=result.value[0]+": "+result.value[1]+"\r\n"}response.headerString=headers;return headers}function _JS_WebRequest_GetResponseMetaData(requestId,headerBuffer,headerSize,responseUrlBuffer,responseUrlSize){var response=wr.responses[requestId];if(!response){stringToUTF8("",headerBuffer,headerSize);stringToUTF8("",responseUrlBuffer,responseUrlSize);return}if(headerBuffer){var headers=jsWebRequestGetResponseHeaderString(requestId);stringToUTF8(headers,headerBuffer,headerSize)}if(responseUrlBuffer){stringToUTF8(response.url,responseUrlBuffer,responseUrlSize)}}function _JS_WebRequest_GetResponseMetaDataLengths(requestId,buffer){var response=wr.responses[requestId];if(!response){HEAPU32[buffer>>2]=0;HEAPU32[(buffer>>2)+1]=0;return}var headers=jsWebRequestGetResponseHeaderString(requestId);HEAPU32[buffer>>2]=lengthBytesUTF8(headers);HEAPU32[(buffer>>2)+1]=lengthBytesUTF8(response.url)}function _JS_WebRequest_Release(requestId){if(wr.timer[requestId]){clearTimeout(wr.timer[requestId])}delete wr.requests[requestId];delete wr.responses[requestId];delete wr.abortControllers[requestId];delete wr.timer[requestId]}function _JS_WebRequest_Send(requestId,ptr,length,arg,onresponse,onprogress){var requestOptions=wr.requests[requestId];var abortController=wr.abortControllers[requestId];function getTempBuffer(size){if(!requestOptions.tempBuffer){const initialSize=Math.max(size,1024);requestOptions.tempBuffer=_malloc(initialSize);requestOptions.tempBufferSize=initialSize}if(requestOptions.tempBufferSize0){var postData=HEAPU8.subarray(ptr,ptr+length);requestOptions.init.body=new Blob([postData])}if(requestOptions.timeout){wr.timer[requestId]=setTimeout(function(){requestOptions.isTimedOut=true;abortController.abort()},requestOptions.timeout)}var fetchImpl=Module.fetchWithProgress;requestOptions.init.onProgress=HandleProgress;if(Module.companyName&&Module.productName&&Module.cachedFetch){fetchImpl=Module.cachedFetch;requestOptions.init.companyName=Module.companyName;requestOptions.init.productName=Module.productName;requestOptions.control=Module.cacheControl(requestOptions.url)}fetchImpl(requestOptions.url,requestOptions.init).then(function(response){wr.responses[requestId]=response;HandleSuccess(response,response.parsedBody)}).catch(function(error){var kWebErrorUnknown=2;var kWebErrorAborted=17;var kWebErrorTimeout=14;if(requestOptions.isTimedOut){HandleError("Connection timed out.",kWebErrorTimeout)}else if(abortController.signal.aborted){HandleError("Aborted.",kWebErrorAborted)}else{HandleError(error.message,kWebErrorUnknown)}})}catch(error){var kWebErrorUnknown=2;HandleError(error.message,kWebErrorUnknown)}}function _JS_WebRequest_SetRedirectLimit(request,redirectLimit){var requestOptions=wr.requests[request];if(!requestOptions){return}requestOptions.init.redirect=redirectLimit===0?"error":"follow"}function _JS_WebRequest_SetRequestHeader(requestId,header,value){var requestOptions=wr.requests[requestId];if(!requestOptions){return}var _header=UTF8ToString(header);var _value=UTF8ToString(value);requestOptions.init.headers[_header]=_value}function _JS_WebRequest_SetTimeout(requestId,timeout){var requestOptions=wr.requests[requestId];if(!requestOptions){return}requestOptions.timeout=timeout}var ExceptionInfoAttrs={DESTRUCTOR_OFFSET:0,REFCOUNT_OFFSET:4,TYPE_OFFSET:8,CAUGHT_OFFSET:12,RETHROWN_OFFSET:13,SIZE:16};function ___cxa_allocate_exception(size){return _malloc(size+ExceptionInfoAttrs.SIZE)+ExceptionInfoAttrs.SIZE}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-ExceptionInfoAttrs.SIZE;this.set_type=function(type){HEAP32[this.ptr+ExceptionInfoAttrs.TYPE_OFFSET>>2]=type};this.get_type=function(){return HEAP32[this.ptr+ExceptionInfoAttrs.TYPE_OFFSET>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+ExceptionInfoAttrs.DESTRUCTOR_OFFSET>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+ExceptionInfoAttrs.DESTRUCTOR_OFFSET>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+ExceptionInfoAttrs.CAUGHT_OFFSET>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+ExceptionInfoAttrs.CAUGHT_OFFSET>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+ExceptionInfoAttrs.RETHROWN_OFFSET>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+ExceptionInfoAttrs.RETHROWN_OFFSET>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2];HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2];HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){var ptrSize=4;HEAP32[this.ptr+ptrSize>>2]=adjustedPtr};this.get_adjusted_ptr=function(){var ptrSize=4;return HEAP32[this.ptr+ptrSize>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){return _free(new ExceptionInfo(ptr).ptr)}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);var stackTop=stackSave();var exceptionThrowBuf=stackAlloc(4);HEAP32[exceptionThrowBuf>>2]=thrown;for(var i=0;i>2];if(thrown!==adjusted){catchInfo.set_adjusted_ptr(adjusted)}setTempRet0(caughtType);return catchInfo.ptr|0}}stackRestore(stackTop);setTempRet0(thrownType);return catchInfo.ptr|0}function ___cxa_find_matching_catch_3(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);var stackTop=stackSave();var exceptionThrowBuf=stackAlloc(4);HEAP32[exceptionThrowBuf>>2]=thrown;for(var i=0;i>2];if(thrown!==adjusted){catchInfo.set_adjusted_ptr(adjusted)}setTempRet0(caughtType);return catchInfo.ptr|0}}stackRestore(stackTop);setTempRet0(thrownType);return catchInfo.ptr|0}function ___cxa_find_matching_catch_4(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);var stackTop=stackSave();var exceptionThrowBuf=stackAlloc(4);HEAP32[exceptionThrowBuf>>2]=thrown;for(var i=0;i>2];if(thrown!==adjusted){catchInfo.set_adjusted_ptr(adjusted)}setTempRet0(caughtType);return catchInfo.ptr|0}}stackRestore(stackTop);setTempRet0(thrownType);return catchInfo.ptr|0}function ___cxa_rethrow(){var catchInfo=exceptionCaught.pop();if(!catchInfo){abort("no exception to throw")}var info=catchInfo.get_exception_info();var ptr=catchInfo.get_base_ptr();if(!info.get_rethrown()){exceptionCaught.push(catchInfo);info.set_rethrown(true);info.set_caught(false);uncaughtExceptionCount++}else{catchInfo.free()}exceptionLast=ptr;throw ptr}function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw ptr}function _gmtime_r(time,tmPtr){var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();HEAP32[tmPtr+36>>2]=0;HEAP32[tmPtr+32>>2]=0;var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;if(!_gmtime_r.GMTString)_gmtime_r.GMTString=allocateUTF8("GMT");HEAP32[tmPtr+40>>2]=_gmtime_r.GMTString;return tmPtr}function ___gmtime_r(a0,a1){return _gmtime_r(a0,a1)}function _tzset(){if(_tzset.called)return;_tzset.called=true;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[__get_timezone()>>2]=stdTimezoneOffset*60;HEAP32[__get_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[__get_tzname()+4>>2]=summerNamePtr}else{HEAP32[__get_tzname()>>2]=summerNamePtr;HEAP32[__get_tzname()+4>>2]=winterNamePtr}}function _localtime_r(time,tmPtr){_tzset();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;var zonePtr=HEAP32[__get_tzname()+(dst?4:0)>>2];HEAP32[tmPtr+40>>2]=zonePtr;return tmPtr}function ___localtime_r(a0,a1){return _localtime_r(a0,a1)}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){var alignedSize=alignMemory(size,65536);var ptr=_malloc(alignedSize);while(size=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+length8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!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:function(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:function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(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:function(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:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(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:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(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:function(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:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=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:function(fd){return FS.streams[fd]},createStream:function(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}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(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:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(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:function(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(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(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:function(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(function(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:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(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:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};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=function(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);if(typeof Uint8Array!="undefined")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(function(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(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function 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>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 node;var lookup=FS.lookupPath(path,{follow:true});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 ___sys__newselect(nfds,readfds,writefds,exceptfds,timeout){try{var total=0;var srcReadLow=readfds?HEAP32[readfds>>2]:0,srcReadHigh=readfds?HEAP32[readfds+4>>2]:0;var srcWriteLow=writefds?HEAP32[writefds>>2]:0,srcWriteHigh=writefds?HEAP32[writefds+4>>2]:0;var srcExceptLow=exceptfds?HEAP32[exceptfds>>2]:0,srcExceptHigh=exceptfds?HEAP32[exceptfds+4>>2]:0;var dstReadLow=0,dstReadHigh=0;var dstWriteLow=0,dstWriteHigh=0;var dstExceptLow=0,dstExceptHigh=0;var allLow=(readfds?HEAP32[readfds>>2]:0)|(writefds?HEAP32[writefds>>2]:0)|(exceptfds?HEAP32[exceptfds>>2]:0);var allHigh=(readfds?HEAP32[readfds+4>>2]:0)|(writefds?HEAP32[writefds+4>>2]:0)|(exceptfds?HEAP32[exceptfds+4>>2]:0);var check=function(fd,low,high,val){return fd<32?low&val:high&val};for(var fd=0;fd>2]=dstReadLow;HEAP32[readfds+4>>2]=dstReadHigh}if(writefds){HEAP32[writefds>>2]=dstWriteLow;HEAP32[writefds+4>>2]=dstWriteHigh}if(exceptfds){HEAP32[exceptfds>>2]=dstExceptLow;HEAP32[exceptfds+4>>2]=dstExceptHigh}return total}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var SOCKFS={mount:function(mount){Module["websocket"]=Module["websocket"]&&"object"===typeof Module["websocket"]?Module["websocket"]:{};Module["websocket"]._callbacks={};Module["websocket"]["on"]=function(event,callback){if("function"===typeof callback){this._callbacks[event]=callback}return this};Module["websocket"].emit=function(event,param){if("function"===typeof this._callbacks[event]){this._callbacks[event].call(this,param)}};return FS.createNode(null,"/",16384|511,0)},createSocket:function(family,type,protocol){type&=~526336;var streaming=type==1;if(protocol){assert(streaming==(protocol==6))}var sock={family:family,type:type,protocol:protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node:node,flags:2,seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket:function(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock},stream_ops:{poll:function(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl:function(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read:function(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length},write:function(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close:function(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname:function(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return"socket["+SOCKFS.nextname.current+++"]"},websocket_sock_ops:{createPeer:function(sock,addr,port){var ws;if(typeof addr==="object"){ws=addr;addr=null;port=null}if(ws){if(ws._socket){addr=ws._socket.remoteAddress;port=ws._socket.remotePort}else{var result=/ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);if(!result){throw new Error("WebSocket URL must be in the format ws(s)://address:port")}addr=result[1];port=parseInt(result[2],10)}}else{try{var runtimeConfig=Module["websocket"]&&"object"===typeof Module["websocket"];var url="ws:#".replace("#","//");if(runtimeConfig){if("string"===typeof Module["websocket"]["url"]){url=Module["websocket"]["url"]}}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}var subProtocols="binary";if(runtimeConfig){if("string"===typeof Module["websocket"]["subprotocol"]){subProtocols=Module["websocket"]["subprotocol"]}}var opts=undefined;if(subProtocols!=="null"){subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);opts=ENVIRONMENT_IS_NODE?{"protocol":subProtocols.toString()}:subProtocols}if(runtimeConfig&&null===Module["websocket"]["subprotocol"]){subProtocols="null";opts=undefined}var WebSocketConstructor;if(ENVIRONMENT_IS_NODE){WebSocketConstructor=require("ws")}else{WebSocketConstructor=WebSocket}ws=new WebSocketConstructor(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EHOSTUNREACH)}}var peer={addr:addr,port:port,socket:ws,dgram_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!=="undefined"){peer.dgram_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer},getPeer:function(sock,addr,port){return sock.peers[addr+":"+port]},addPeer:function(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer},removePeer:function(sock,peer){delete sock.peers[peer.addr+":"+peer.port]},handlePeerEvents:function(sock,peer){var first=true;var handleOpen=function(){Module["websocket"].emit("open",sock.stream.fd);try{var queued=peer.dgram_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.dgram_send_queue.shift()}}catch(e){peer.socket.close()}};function handleMessage(data){if(typeof data==="string"){var encoder=new TextEncoder;data=encoder.encode(data)}else{assert(data.byteLength!==undefined);if(data.byteLength==0){return}else{data=new Uint8Array(data)}}var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data:data});Module["websocket"].emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",function(data,flags){if(!flags.binary){return}handleMessage(new Uint8Array(data).buffer)});peer.socket.on("close",function(){Module["websocket"].emit("close",sock.stream.fd)});peer.socket.on("error",function(error){sock.error=ERRNO_CODES.ECONNREFUSED;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})}else{peer.socket.onopen=handleOpen;peer.socket.onclose=function(){Module["websocket"].emit("close",sock.stream.fd)};peer.socket.onmessage=function peer_socket_onmessage(event){handleMessage(event.data)};peer.socket.onerror=function(error){sock.error=ERRNO_CODES.ECONNREFUSED;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}}},poll:function(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=16}return mask},ioctl:function(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;default:return ERRNO_CODES.EINVAL}},close:function(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}var peers=Object.keys(sock.peers);for(var i=0;i>2]=value;return value}function inetPton4(str){var b=str.split(".");for(var i=0;i<4;i++){var tmp=Number(b[i]);if(isNaN(tmp))return null;b[i]=tmp}return(b[0]|b[1]<<8|b[2]<<16|b[3]<<24)>>>0}function jstoi_q(str){return parseInt(str)}function inetPton6(str){var words;var w,offset,z;var valid6regx=/^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i;var parts=[];if(!valid6regx.test(str)){return null}if(str==="::"){return[0,0,0,0,0,0,0,0]}if(str.startsWith("::")){str=str.replace("::","Z:")}else{str=str.replace("::",":Z:")}if(str.indexOf(".")>0){str=str.replace(new RegExp("[.]","g"),":");words=str.split(":");words[words.length-4]=jstoi_q(words[words.length-4])+jstoi_q(words[words.length-3])*256;words[words.length-3]=jstoi_q(words[words.length-2])+jstoi_q(words[words.length-1])*256;words=words.slice(0,words.length-2)}else{words=str.split(":")}offset=0;z=0;for(w=0;w>2]=16}HEAP16[sa>>1]=family;HEAP32[sa+4>>2]=addr;HEAP16[sa+2>>1]=_htons(port);tempI64=[0>>>0,(tempDouble=0,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[sa+8>>2]=tempI64[0],HEAP32[sa+12>>2]=tempI64[1];break;case 10:addr=inetPton6(addr);if(addrlen){HEAP32[addrlen>>2]=28}HEAP32[sa>>2]=family;HEAP32[sa+8>>2]=addr[0];HEAP32[sa+12>>2]=addr[1];HEAP32[sa+16>>2]=addr[2];HEAP32[sa+20>>2]=addr[3];HEAP16[sa+2>>1]=_htons(port);HEAP32[sa+4>>2]=0;HEAP32[sa+24>>2]=0;break;default:return 5}return 0}var DNS={address_map:{id:1,addrs:{},names:{}},lookup_name:function(name){var res=inetPton4(name);if(res!==null){return name}res=inetPton6(name);if(res!==null){return name}var addr;if(DNS.address_map.addrs[name]){addr=DNS.address_map.addrs[name]}else{var id=DNS.address_map.id++;assert(id<65535,"exceeded max address mappings of 65535");addr="172.29."+(id&255)+"."+(id&65280);DNS.address_map.names[addr]=name;DNS.address_map.addrs[name]=addr}return addr},lookup_addr:function(addr){if(DNS.address_map.names[addr]){return DNS.address_map.names[addr]}return null}};function ___sys_accept4(fd,addr,addrlen,flags){try{var sock=getSocketFromFD(fd);var newsock=sock.sock_ops.accept(sock);if(addr){var errno=writeSockaddr(addr,newsock.family,DNS.lookup_name(newsock.daddr),newsock.dport,addrlen)}return newsock.stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_access(path,amode){try{path=SYSCALLS.getStr(path);return SYSCALLS.doAccess(path,amode)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function inetNtop4(addr){return(addr&255)+"."+(addr>>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255)}function inetNtop6(ints){var str="";var word=0;var longest=0;var lastzero=0;var zstart=0;var len=0;var i=0;var parts=[ints[0]&65535,ints[0]>>16,ints[1]&65535,ints[1]>>16,ints[2]&65535,ints[2]>>16,ints[3]&65535,ints[3]>>16];var hasipv4=true;var v4part="";for(i=0;i<5;i++){if(parts[i]!==0){hasipv4=false;break}}if(hasipv4){v4part=inetNtop4(parts[6]|parts[7]<<16);if(parts[5]===-1){str="::ffff:";str+=v4part;return str}if(parts[5]===0){str="::";if(v4part==="0.0.0.0")v4part="";if(v4part==="0.0.0.1")v4part="1";str+=v4part;return str}}for(word=0;word<8;word++){if(parts[word]===0){if(word-lastzero>1){len=0}lastzero=word;len++}if(len>longest){longest=len;zstart=word-longest+1}}for(word=0;word<8;word++){if(longest>1){if(parts[word]===0&&word>=zstart&&word>1];var port=_ntohs(HEAPU16[sa+2>>1]);var addr;switch(family){case 2:if(salen!==16){return{errno:28}}addr=HEAP32[sa+4>>2];addr=inetNtop4(addr);break;case 10:if(salen!==28){return{errno:28}}addr=[HEAP32[sa+8>>2],HEAP32[sa+12>>2],HEAP32[sa+16>>2],HEAP32[sa+20>>2]];addr=inetNtop6(addr);break;default:return{errno:5}}return{family:family,addr:addr,port:port}}function getSocketAddress(addrp,addrlen,allowNull){if(allowNull&&addrp===0)return null;var info=readSockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info}function ___sys_bind(fd,addr,addrlen){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.bind(sock,info.addr,info.port);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_chmod(path,mode){try{path=SYSCALLS.getStr(path);FS.chmod(path,mode);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_connect(fd,addr,addrlen){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.connect(sock,info.addr,info.port);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_dup2(oldfd,suggestFD){try{var old=SYSCALLS.getStreamFromFD(oldfd);if(old.fd===suggestFD)return suggestFD;return SYSCALLS.doDup(old.path,old.flags,suggestFD)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_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 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14: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))abort(e);return-e.errno}}function ___sys_fstat64(fd,buf){try{var stream=SYSCALLS.getStreamFromFD(fd);return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd);if(size>>0,(tempDouble=id,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[dirp+pos>>2]=tempI64[0],HEAP32[dirp+pos+4>>2]=tempI64[1];tempI64=[(idx+1)*struct_size>>>0,(tempDouble=(idx+1)*struct_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[dirp+pos+8>>2]=tempI64[0],HEAP32[dirp+pos+12>>2]=tempI64[1];HEAP16[dirp+pos+16>>1]=280;HEAP8[dirp+pos+18>>0]=type;stringToUTF8(name,dirp+pos+19,256);pos+=struct_size;idx+=1}FS.llseek(stream,idx*struct_size,0);return pos}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_getegid32(){return 0}function ___sys_geteuid32(){return ___sys_getegid32()}function ___sys_getpeername(fd,addr,addrlen){try{var sock=getSocketFromFD(fd);if(!sock.daddr){return-53}var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(sock.daddr),sock.dport,addrlen);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_getrusage(who,usage){try{_memset(usage,0,136);HEAP32[usage>>2]=1;HEAP32[usage+4>>2]=2;HEAP32[usage+8>>2]=3;HEAP32[usage+12>>2]=4;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_getsockname(fd,addr,addrlen){try{err("__sys_getsockname "+fd);var sock=getSocketFromFD(fd);var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(sock.saddr||"0.0.0.0"),sock.sport,addrlen);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_getsockopt(fd,level,optname,optval,optlen){try{var sock=getSocketFromFD(fd);if(level===1){if(optname===4){HEAP32[optval>>2]=sock.error;HEAP32[optlen>>2]=4;sock.error=null;return 0}}return-50}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_getuid32(){return ___sys_getegid32()}function ___sys_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))abort(e);return-e.errno}}function ___sys_listen(fd,backlog){try{var sock=getSocketFromFD(fd);sock.sock_ops.listen(sock,backlog);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.lstat,path,buf)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_mkdir(path,mode){try{path=SYSCALLS.getStr(path);return SYSCALLS.doMkdir(path,mode)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function syscallMmap2(addr,len,prot,flags,fd,off){off<<=12;var ptr;var allocated=false;if((flags&16)!==0&&addr%65536!==0){return-28}if((flags&32)!==0){ptr=_memalign(65536,len);if(!ptr)return-48;_memset(ptr,0,len);allocated=true}else{var info=FS.getStream(fd);if(!info)return-8;var res=FS.mmap(info,addr,len,off,prot,flags);ptr=res.ptr;allocated=res.allocated}SYSCALLS.mappings[ptr]={malloc:ptr,len:len,allocated:allocated,fd:fd,prot:prot,flags:flags,offset:off};return ptr}function ___sys_mmap2(addr,len,prot,flags,fd,off){try{return syscallMmap2(addr,len,prot,flags,fd,off)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function syscallMunmap(addr,len){if((addr|0)===-1||len===0){return-28}var info=SYSCALLS.mappings[addr];if(!info)return 0;if(len===info.len){var stream=FS.getStream(info.fd);if(stream){if(info.prot&2){SYSCALLS.doMsync(addr,stream,len,info.flags,info.offset)}FS.munmap(stream)}SYSCALLS.mappings[addr]=null;if(info.allocated){_free(info.malloc)}}return 0}function ___sys_munmap(addr,len){try{return syscallMunmap(addr,len)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_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))abort(e);return-e.errno}}var PIPEFS={BUCKET_BUFFER_SIZE:8192,mount:function(mount){return FS.createNode(null,"/",16384|511,0)},createPipe:function(){var pipe={buckets:[]};pipe.buckets.push({buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:0,roffset:0});var rName=PIPEFS.nextname();var wName=PIPEFS.nextname();var rNode=FS.createNode(PIPEFS.root,rName,4096,0);var wNode=FS.createNode(PIPEFS.root,wName,4096,0);rNode.pipe=pipe;wNode.pipe=pipe;var readableStream=FS.createStream({path:rName,node:rNode,flags:0,seekable:false,stream_ops:PIPEFS.stream_ops});rNode.stream=readableStream;var writableStream=FS.createStream({path:wName,node:wNode,flags:1,seekable:false,stream_ops:PIPEFS.stream_ops});wNode.stream=writableStream;return{readable_fd:readableStream.fd,writable_fd:writableStream.fd}},stream_ops:{poll:function(stream){var pipe=stream.node.pipe;if((stream.flags&2097155)===1){return 256|4}else{if(pipe.buckets.length>0){for(var i=0;i0){return 64|1}}}}return 0},ioctl:function(stream,request,varargs){return ERRNO_CODES.EINVAL},fsync:function(stream){return ERRNO_CODES.EINVAL},read:function(stream,buffer,offset,length,position){var pipe=stream.node.pipe;var currentLength=0;for(var i=0;i=dataLen){currBucket.buffer.set(data,currBucket.offset);currBucket.offset+=dataLen;return dataLen}else if(freeBytesInCurrBuffer>0){currBucket.buffer.set(data.subarray(0,freeBytesInCurrBuffer),currBucket.offset);currBucket.offset+=freeBytesInCurrBuffer;data=data.subarray(freeBytesInCurrBuffer,data.byteLength)}var numBuckets=data.byteLength/PIPEFS.BUCKET_BUFFER_SIZE|0;var remElements=data.byteLength%PIPEFS.BUCKET_BUFFER_SIZE;for(var i=0;i0){var newBucket={buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:data.byteLength,roffset:0};pipe.buckets.push(newBucket);newBucket.buffer.set(data)}return dataLen},close:function(stream){var pipe=stream.node.pipe;pipe.buckets=null}},nextname:function(){if(!PIPEFS.nextname.current){PIPEFS.nextname.current=0}return"pipe["+PIPEFS.nextname.current+++"]"}};function ___sys_pipe(fdPtr){try{if(fdPtr==0){throw new FS.ErrnoError(21)}var res=PIPEFS.createPipe();HEAP32[fdPtr>>2]=res.readable_fd;HEAP32[fdPtr+4>>2]=res.writable_fd;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_poll(fds,nfds,timeout){try{var nonzero=0;for(var i=0;i>2];var events=HEAP16[pollfd+4>>1];var mask=32;var stream=FS.getStream(fd);if(stream){mask=SYSCALLS.DEFAULT_POLLMASK;if(stream.stream_ops.poll){mask=stream.stream_ops.poll(stream)}}mask&=events|8|16;if(mask)nonzero++;HEAP16[pollfd+6>>1]=mask}return nonzero}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_readlink(path,buf,bufsize){try{path=SYSCALLS.getStr(path);return SYSCALLS.doReadlink(path,buf,bufsize)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_recvfrom(fd,buf,len,flags,addr,addrlen){try{var sock=getSocketFromFD(fd);var msg=sock.sock_ops.recvmsg(sock,len);if(!msg)return 0;if(addr){var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(msg.addr),msg.port,addrlen)}HEAPU8.set(msg.buffer,buf);return msg.buffer.byteLength}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_recvmsg(fd,message,flags){try{var sock=getSocketFromFD(fd);var iov=HEAP32[message+8>>2];var num=HEAP32[message+12>>2];var total=0;for(var i=0;i>2]}var msg=sock.sock_ops.recvmsg(sock,total);if(!msg)return 0;var name=HEAP32[message>>2];if(name){var errno=writeSockaddr(name,sock.family,DNS.lookup_name(msg.addr),msg.port)}var bytesRead=0;var bytesRemaining=msg.buffer.byteLength;for(var i=0;bytesRemaining>0&&i>2];var iovlen=HEAP32[iov+(8*i+4)>>2];if(!iovlen){continue}var length=Math.min(iovlen,bytesRemaining);var buf=msg.buffer.subarray(bytesRead,bytesRead+length);HEAPU8.set(buf,iovbase+bytesRead);bytesRead+=length;bytesRemaining-=length}return bytesRead}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_rename(old_path,new_path){try{old_path=SYSCALLS.getStr(old_path);new_path=SYSCALLS.getStr(new_path);FS.rename(old_path,new_path);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_rmdir(path){try{path=SYSCALLS.getStr(path);FS.rmdir(path);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_sendmsg(fd,message,flags){try{var sock=getSocketFromFD(fd);var iov=HEAP32[message+8>>2];var num=HEAP32[message+12>>2];var addr,port;var name=HEAP32[message>>2];var namelen=HEAP32[message+4>>2];if(name){var info=readSockaddr(name,namelen);if(info.errno)return-info.errno;port=info.port;addr=DNS.lookup_addr(info.addr)||info.addr}var total=0;for(var i=0;i>2]}var view=new Uint8Array(total);var offset=0;for(var i=0;i>2];var iovlen=HEAP32[iov+(8*i+4)>>2];for(var j=0;j>0]}}return sock.sock_ops.sendmsg(sock,view,0,total,addr,port)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_sendto(fd,message,length,flags,addr,addr_len){try{var sock=getSocketFromFD(fd);var dest=getSocketAddress(addr,addr_len,true);if(!dest){return FS.write(sock.stream,HEAP8,message,length)}else{return sock.sock_ops.sendmsg(sock,HEAP8,message,length,dest.addr,dest.port)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_setsockopt(fd){try{return-50}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_shutdown(fd,how){try{getSocketFromFD(fd);return-52}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_socket(domain,type,protocol){try{var sock=SOCKFS.createSocket(domain,type,protocol);return sock.stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_statfs64(path,size,buf){try{path=SYSCALLS.getStr(path);HEAP32[buf+4>>2]=4096;HEAP32[buf+40>>2]=4096;HEAP32[buf+8>>2]=1e6;HEAP32[buf+12>>2]=5e5;HEAP32[buf+16>>2]=5e5;HEAP32[buf+20>>2]=FS.nextInode;HEAP32[buf+24>>2]=1e6;HEAP32[buf+28>>2]=42;HEAP32[buf+44>>2]=2;HEAP32[buf+36>>2]=255;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_truncate64(path,zero,low,high){try{path=SYSCALLS.getStr(path);var length=SYSCALLS.get64(low,high);FS.truncate(path,length);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_uname(buf){try{if(!buf)return-21;var layout={"__size__":390,"domainname":325,"machine":260,"nodename":65,"release":130,"sysname":0,"version":195};var copyString=function(element,value){var offset=layout[element];writeAsciiToMemory(value,buf+offset)};copyString("sysname","Emscripten");copyString("nodename","emscripten");copyString("release","1.0");copyString("version","#1");copyString("machine","wasm32");return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_unlink(path){try{path=SYSCALLS.getStr(path);FS.unlink(path);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function _abort(){abort()}function _clock(){if(_clock.start===undefined)_clock.start=Date.now();return(Date.now()-_clock.start)*(1e6/1e3)|0}function _emscripten_get_now_res(){if(ENVIRONMENT_IS_NODE){return 1}else if(typeof dateNow!=="undefined"){return 1e3}else return 1e3}var _emscripten_get_now_is_monotonic=true;function _clock_getres(clk_id,res){var nsec;if(clk_id===0){nsec=1e3*1e3}else if(clk_id===1&&_emscripten_get_now_is_monotonic){nsec=_emscripten_get_now_res()}else{setErrNo(28);return-1}HEAP32[res>>2]=nsec/1e9|0;HEAP32[res+4>>2]=nsec;return 0}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else _emscripten_get_now=function(){return performance.now()};function _clock_gettime(clk_id,tp){var now;if(clk_id===0){now=Date.now()}else if((clk_id===1||clk_id===4)&&_emscripten_get_now_is_monotonic){now=_emscripten_get_now()}else{setErrNo(28);return-1}HEAP32[tp>>2]=now/1e3|0;HEAP32[tp+4>>2]=now%1e3*1e3*1e3|0;return 0}function _difftime(time1,time0){return time1-time0}function _dlclose(handle){}function _dlerror(){return 0}function _dlopen(filename,flag){}function _dlsym(handle,symbol){return 0}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var double=ch<105;if(double&&buf&1)buf++;readAsmConstArgsArray.push(double?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function mainThreadEM_ASM(code,sigPtr,argbuf,sync){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_asm_const_int_sync_on_main_thread(code,sigPtr,argbuf){return mainThreadEM_ASM(code,sigPtr,argbuf,1)}function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(!Browser.mainLoop.running){Browser.mainLoop.running=true}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof setImmediate==="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=function(event){if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}function _exit(status){exit(status)}function maybeExit(){if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){if(e instanceof ExitStatus){return}throw e}}}function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;function checkIsRunning(){if(thisMainLoopId0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('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 callUserCallback(func,synchronous){if(ABORT){return}if(synchronous){func();return}try{func()}catch(e){if(e instanceof ExitStatus){return}else if(e!=="unwind"){if(e&&typeof e==="object"&&e.stack)err("exception thrown: "+[e,e.stack]);throw e}}}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=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;Browser.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)}}},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)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(function(){callUserCallback(func)})},safeSetTimeout:function(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)},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}},asyncLoad:function(url,onload,onerror,noRunDep){var dep=!noRunDep?getUniqueRunDependency("al "+url):"";readAsync(url,function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(function(listener){listener(canvas.width,canvas.height)})},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!=="undefined"?document:0,typeof window!=="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!=="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function getCanvasElementSize(target){var stackTop=stackSave();var w=stackAlloc(8);var h=w+4;var targetInt=stackAlloc(target.id.length+1);stringToUTF8(target.id,targetInt,target.id.length+1);var ret=_emscripten_get_canvas_element_size(targetInt,w,h);var size=[HEAP32[w>>2],HEAP32[h>>2]];stackRestore(stackTop);return size}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function setCanvasElementSize(target,width,height){if(!target.controlTransferredOffscreen){target.width=width;target.height=height}else{var stackTop=stackSave();var targetInt=stackAlloc(target.id.length+1);stringToUTF8(target.id,targetInt,target.id.length+1);_emscripten_set_canvas_element_size(targetInt,width,height);stackRestore(stackTop)}}function registerRestoreOldStyle(canvas){var canvasSize=getCanvasElementSize(canvas);var oldWidth=canvasSize[0];var oldHeight=canvasSize[1];var oldCssWidth=canvas.style.width;var oldCssHeight=canvas.style.height;var oldBackgroundColor=canvas.style.backgroundColor;var oldDocumentBackgroundColor=document.body.style.backgroundColor;var oldPaddingLeft=canvas.style.paddingLeft;var oldPaddingRight=canvas.style.paddingRight;var oldPaddingTop=canvas.style.paddingTop;var oldPaddingBottom=canvas.style.paddingBottom;var oldMarginLeft=canvas.style.marginLeft;var oldMarginRight=canvas.style.marginRight;var oldMarginTop=canvas.style.marginTop;var oldMarginBottom=canvas.style.marginBottom;var oldDocumentBodyMargin=document.body.style.margin;var oldDocumentOverflow=document.documentElement.style.overflow;var oldDocumentScroll=document.body.scroll;var oldImageRendering=canvas.style.imageRendering;function restoreOldStyle(){var fullscreenElement=document.fullscreenElement||document.webkitFullscreenElement||document.msFullscreenElement;if(!fullscreenElement){document.removeEventListener("fullscreenchange",restoreOldStyle);document.removeEventListener("webkitfullscreenchange",restoreOldStyle);setCanvasElementSize(canvas,oldWidth,oldHeight);canvas.style.width=oldCssWidth;canvas.style.height=oldCssHeight;canvas.style.backgroundColor=oldBackgroundColor;if(!oldDocumentBackgroundColor)document.body.style.backgroundColor="white";document.body.style.backgroundColor=oldDocumentBackgroundColor;canvas.style.paddingLeft=oldPaddingLeft;canvas.style.paddingRight=oldPaddingRight;canvas.style.paddingTop=oldPaddingTop;canvas.style.paddingBottom=oldPaddingBottom;canvas.style.marginLeft=oldMarginLeft;canvas.style.marginRight=oldMarginRight;canvas.style.marginTop=oldMarginTop;canvas.style.marginBottom=oldMarginBottom;document.body.style.margin=oldDocumentBodyMargin;document.documentElement.style.overflow=oldDocumentOverflow;document.body.scroll=oldDocumentScroll;canvas.style.imageRendering=oldImageRendering;if(canvas.GLctxObject)canvas.GLctxObject.GLctx.viewport(0,0,oldWidth,oldHeight);if(currentFullscreenStrategy.canvasResizedCallback){(function(a1,a2,a3){return dynCall_iiii.apply(null,[currentFullscreenStrategy.canvasResizedCallback,a1,a2,a3])})(37,0,currentFullscreenStrategy.canvasResizedCallbackUserData)}}}document.addEventListener("fullscreenchange",restoreOldStyle);document.addEventListener("webkitfullscreenchange",restoreOldStyle);return restoreOldStyle}function setLetterbox(element,topBottom,leftRight){element.style.paddingLeft=element.style.paddingRight=leftRight+"px";element.style.paddingTop=element.style.paddingBottom=topBottom+"px"}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function _JSEvents_resizeCanvasForFullscreen(target,strategy){var restoreOldStyle=registerRestoreOldStyle(target);var cssWidth=strategy.softFullscreen?innerWidth:screen.width;var cssHeight=strategy.softFullscreen?innerHeight:screen.height;var rect=getBoundingClientRect(target);var windowedCssWidth=rect.width;var windowedCssHeight=rect.height;var canvasSize=getCanvasElementSize(target);var windowedRttWidth=canvasSize[0];var windowedRttHeight=canvasSize[1];if(strategy.scaleMode==3){setLetterbox(target,(cssHeight-windowedCssHeight)/2,(cssWidth-windowedCssWidth)/2);cssWidth=windowedCssWidth;cssHeight=windowedCssHeight}else if(strategy.scaleMode==2){if(cssWidth*windowedRttHeight>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement&&reportedElement.id?reportedElement.id:"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}}function _emscripten_get_fullscreen_status(fullscreenStatus){if(!JSEvents.fullscreenEnabled())return-1;fillFullscreenChangeEventData(fullscreenStatus);return 0}function fillGamepadEventData(eventStruct,e){HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i>3]=e.axes[i]}for(var i=0;i>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)}function _emscripten_get_gamepad_status(index,gamepadState){if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0}function _emscripten_get_heap_max(){return 2147483648}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function _emscripten_html5_remove_all_event_listeners(){JSEvents.removeAllEventListeners()}function _emscripten_is_webgl_context_lost(contextHandle){return!GL.contexts[contextHandle]||GL.contexts[contextHandle].GLctx.isContextLost()}function reallyNegative(x){return x<0||x===0&&1/x===-Infinity}function convertI32PairToI53(lo,hi){return(lo>>>0)+hi*4294967296}function convertU32PairToI53(lo,hi){return(lo>>>0)+(hi>>>0)*4294967296}function reSign(value,bits){if(value<=0){return value}var half=bits<=32?Math.abs(1<=half&&(bits<=32||value>half)){value=-2*half+value}return value}function unSign(value,bits){if(value>=0){return value}return bits<=32?2*Math.abs(1<>3];argIndex+=8}else if(type=="i64"){ret=[HEAP32[argIndex>>2],HEAP32[argIndex+4>>2]];argIndex+=8}else{type="i32";ret=HEAP32[argIndex>>2];argIndex+=4}return ret}var ret=[];var curr,next,currArg;while(1){var startTextIndex=textIndex;curr=HEAP8[textIndex>>0];if(curr===0)break;next=HEAP8[textIndex+1>>0];if(curr==37){var flagAlwaysSigned=false;var flagLeftAlign=false;var flagAlternative=false;var flagZeroPad=false;var flagPadSign=false;flagsLoop:while(1){switch(next){case 43:flagAlwaysSigned=true;break;case 45:flagLeftAlign=true;break;case 35:flagAlternative=true;break;case 48:if(flagZeroPad){break flagsLoop}else{flagZeroPad=true;break}case 32:flagPadSign=true;break;default:break flagsLoop}textIndex++;next=HEAP8[textIndex+1>>0]}var width=0;if(next==42){width=getNextArg("i32");textIndex++;next=HEAP8[textIndex+1>>0]}else{while(next>=48&&next<=57){width=width*10+(next-48);textIndex++;next=HEAP8[textIndex+1>>0]}}var precisionSet=false,precision=-1;if(next==46){precision=0;precisionSet=true;textIndex++;next=HEAP8[textIndex+1>>0];if(next==42){precision=getNextArg("i32");textIndex++}else{while(1){var precisionChr=HEAP8[textIndex+1>>0];if(precisionChr<48||precisionChr>57)break;precision=precision*10+(precisionChr-48);textIndex++}}next=HEAP8[textIndex+1>>0]}if(precision<0){precision=6;precisionSet=false}var argSize;switch(String.fromCharCode(next)){case"h":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==104){textIndex++;argSize=1}else{argSize=2}break;case"l":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==108){textIndex++;argSize=8}else{argSize=4}break;case"L":case"q":case"j":argSize=8;break;case"z":case"t":case"I":argSize=4;break;default:argSize=null}if(argSize)textIndex++;next=HEAP8[textIndex+1>>0];switch(String.fromCharCode(next)){case"d":case"i":case"u":case"o":case"x":case"X":case"p":{var signed=next==100||next==105;argSize=argSize||4;currArg=getNextArg("i"+argSize*8);var argText;if(argSize==8){currArg=next==117?convertU32PairToI53(currArg[0],currArg[1]):convertI32PairToI53(currArg[0],currArg[1])}if(argSize<=4){var limit=Math.pow(256,argSize)-1;currArg=(signed?reSign:unSign)(currArg&limit,argSize*8)}var currAbsArg=Math.abs(currArg);var prefix="";if(next==100||next==105){argText=reSign(currArg,8*argSize,1).toString(10)}else if(next==117){argText=unSign(currArg,8*argSize,1).toString(10);currArg=Math.abs(currArg)}else if(next==111){argText=(flagAlternative?"0":"")+currAbsArg.toString(8)}else if(next==120||next==88){prefix=flagAlternative&&currArg!=0?"0x":"";if(currArg<0){currArg=-currArg;argText=(currAbsArg-1).toString(16);var buffer=[];for(var i=0;i=0){if(flagAlwaysSigned){prefix="+"+prefix}else if(flagPadSign){prefix=" "+prefix}}if(argText.charAt(0)=="-"){prefix="-"+prefix;argText=argText.substr(1)}while(prefix.length+argText.lengthexponent&&exponent>=-4){next=(next==103?"f":"F").charCodeAt(0);precision-=exponent+1}else{next=(next==103?"e":"E").charCodeAt(0);precision--}effectivePrecision=Math.min(precision,20)}if(next==101||next==69){argText=currArg.toExponential(effectivePrecision);if(/[eE][-+]\d$/.test(argText)){argText=argText.slice(0,-1)+"0"+argText.slice(-1)}}else if(next==102||next==70){argText=currArg.toFixed(effectivePrecision);if(currArg===0&&reallyNegative(currArg)){argText="-"+argText}}var parts=argText.split("e");if(isGeneral&&!flagAlternative){while(parts[0].length>1&&parts[0].includes(".")&&(parts[0].slice(-1)=="0"||parts[0].slice(-1)==".")){parts[0]=parts[0].slice(0,-1)}}else{if(flagAlternative&&argText.indexOf(".")==-1)parts[0]+=".";while(precision>effectivePrecision++)parts[0]+="0"}argText=parts[0]+(parts.length>1?"e"+parts[1]:"");if(next==69)argText=argText.toUpperCase();if(currArg>=0){if(flagAlwaysSigned){argText="+"+argText}else if(flagPadSign){argText=" "+argText}}}while(argText.length>0])}}else{ret=ret.concat(intArrayFromString("(null)".substr(0,argLength),true))}if(flagLeftAlign){while(argLength0){ret.push(32)}if(!flagLeftAlign)ret.push(getNextArg("i8"));break}case"n":{var ptr=getNextArg("i32*");HEAP32[ptr>>2]=ret.length;break}case"%":{ret.push(curr);break}default:{for(var i=startTextIndex;i>0])}}}textIndex+=2}else{ret.push(curr);textIndex+=1}}return ret}function traverseStack(args){if(!args||!args.callee||!args.callee.name){return[null,"",""]}var funstr=args.callee.toString();var funcname=args.callee.name;var str="(";var first=true;for(var i in args){var a=args[i];if(!first){str+=", "}first=false;if(typeof a==="number"||typeof a==="string"){str+=a}else{str+="("+typeof a+")"}}str+=")";var caller=args.callee.caller;args=caller?caller.arguments:[];if(first)str="";return[args,funcname,str]}function _emscripten_get_callstack_js(flags){var callstack=jsStackTrace();var iThisFunc=callstack.lastIndexOf("_emscripten_log");var iThisFunc2=callstack.lastIndexOf("_emscripten_get_callstack");var iNextLine=callstack.indexOf("\n",Math.max(iThisFunc,iThisFunc2))+1;callstack=callstack.slice(iNextLine);if(flags&32){warnOnce("EM_LOG_DEMANGLE is deprecated; ignoring")}if(flags&8&&typeof emscripten_source_map==="undefined"){warnOnce('Source map information is not available, emscripten_log with EM_LOG_C_STACK will be ignored. Build with "--pre-js $EMSCRIPTEN/src/emscripten-source-map.min.js" linker flag to add source map loading to code.');flags^=8;flags|=16}var stack_args=null;if(flags&128){stack_args=traverseStack(arguments);while(stack_args[1].includes("_emscripten_"))stack_args=traverseStack(stack_args[0])}var lines=callstack.split("\n");callstack="";var newFirefoxRe=new RegExp("\\s*(.*?)@(.*?):([0-9]+):([0-9]+)");var firefoxRe=new RegExp("\\s*(.*?)@(.*):(.*)(:(.*))?");var chromeRe=new RegExp("\\s*at (.*?) \\((.*):(.*):(.*)\\)");for(var l in lines){var line=lines[l];var symbolName="";var file="";var lineno=0;var column=0;var parts=chromeRe.exec(line);if(parts&&parts.length==5){symbolName=parts[1];file=parts[2];lineno=parts[3];column=parts[4]}else{parts=newFirefoxRe.exec(line);if(!parts)parts=firefoxRe.exec(line);if(parts&&parts.length>=4){symbolName=parts[1];file=parts[2];lineno=parts[3];column=parts[4]|0}else{callstack+=line+"\n";continue}}var haveSourceMap=false;if(flags&8){var orig=emscripten_source_map.originalPositionFor({line:lineno,column:column});haveSourceMap=orig&&orig.source;if(haveSourceMap){if(flags&64){orig.source=orig.source.substring(orig.source.replace(/\\/g,"/").lastIndexOf("/")+1)}callstack+=" at "+symbolName+" ("+orig.source+":"+orig.line+":"+orig.column+")\n"}}if(flags&16||!haveSourceMap){if(flags&64){file=file.substring(file.replace(/\\/g,"/").lastIndexOf("/")+1)}callstack+=(haveSourceMap?" = "+symbolName:" at "+symbolName)+" ("+file+":"+lineno+":"+column+")\n"}if(flags&128&&stack_args[0]){if(stack_args[1]==symbolName&&stack_args[2].length>0){callstack=callstack.replace(/\s+$/,"");callstack+=" with values: "+stack_args[1]+stack_args[2]+"\n"}stack_args=traverseStack(stack_args[0])}}callstack=callstack.replace(/\s+$/,"");return callstack}function _emscripten_log_js(flags,str){if(flags&24){str=str.replace(/\s+$/,"");str+=(str.length>0?"\n":"")+_emscripten_get_callstack_js(flags)}if(flags&1){if(flags&4){console.error(str)}else if(flags&2){console.warn(str)}else if(flags&512){console.info(str)}else if(flags&256){console.debug(str)}else{console.log(str)}}else if(flags&6){err(str)}else{out(str)}}function _emscripten_log(flags,format,varargs){var result=formatString(format,varargs);var str=UTF8ArrayToString(result,0);_emscripten_log_js(flags,str)}function _longjmp(env,value){_setThrew(env,value||1);throw"longjmp"}function _emscripten_longjmp(a0,a1){return _longjmp(a0,a1)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function doRequestFullscreen(target,strategy){if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;if(!target.requestFullscreen&&!target.webkitRequestFullscreen){return-3}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(strategy.deferUntilInEventHandler){JSEvents.deferCall(_JSEvents_requestFullscreen,1,[target,strategy]);return 1}else{return-2}}return _JSEvents_requestFullscreen(target,strategy)}function _emscripten_request_fullscreen(target,deferUntilInEventHandler){var strategy={scaleMode:0,canvasResolutionScaleMode:0,filteringMode:0,deferUntilInEventHandler:deferUntilInEventHandler,canvasResizedCallbackTargetThread:2};return doRequestFullscreen(target,strategy)}function _emscripten_request_pointerlock(target,deferUntilInEventHandler){target=findEventTarget(target);if(!target)return-4;if(!target.requestPointerLock&&!target.msRequestPointerLock){return-1}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(deferUntilInEventHandler){JSEvents.deferCall(requestPointerLock,2,[target]);return 1}else{return-2}}return requestPointerLock(target)}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=2147483648;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 _emscripten_sample_gamepad_data(){return(JSEvents.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():null)?0:-1}function registerFocusEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.focusEvent)JSEvents.focusEvent=_malloc(256);var focusEventHandlerFunc=function(ev){var e=ev||event;var nodeName=JSEvents.getNodeNameForTarget(e.target);var id=e.target.id?e.target.id:"";var focusEvent=JSEvents.focusEvent;stringToUTF8(nodeName,focusEvent+0,128);stringToUTF8(id,focusEvent+128,128);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,focusEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:focusEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_blur_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread);return 0}function _emscripten_set_focus_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread);return 0}function registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(ev){var e=ev||event;var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_fullscreenchange_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread);registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return 0}function registerGamepadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=function(ev){var e=ev||event;var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_gamepadconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread);return 0}function _emscripten_set_gamepaddisconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread);return 0}function _emscripten_set_interval(cb,msecs,userData){return setInterval(function(){(function(a1){dynCall_vi.apply(null,[cb,a1])})(userData)},msecs)}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(164);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;var idx=keyEventData>>2;HEAP32[idx+0]=e.location;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;HEAP32[idx+5]=e.repeat;HEAP32[idx+6]=e.charCode;HEAP32[idx+7]=e.keyCode;HEAP32[idx+8]=e.which;stringToUTF8(e.key||"",keyEventData+36,32);stringToUTF8(e.code||"",keyEventData+68,32);stringToUTF8(e.char||"",keyEventData+100,32);stringToUTF8(e.locale||"",keyEventData+132,32);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=function(){dynCall_v.call(null,func)};setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function fillMouseEventData(eventStruct,e,target){var idx=eventStruct>>2;HEAP32[idx+0]=e.screenX;HEAP32[idx+1]=e.screenY;HEAP32[idx+2]=e.clientX;HEAP32[idx+3]=e.clientY;HEAP32[idx+4]=e.ctrlKey;HEAP32[idx+5]=e.shiftKey;HEAP32[idx+6]=e.altKey;HEAP32[idx+7]=e.metaKey;HEAP16[idx*2+16]=e.button;HEAP16[idx*2+17]=e.buttons;HEAP32[idx+9]=e["movementX"];HEAP32[idx+10]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+11]=e.clientX-rect.left;HEAP32[idx+12]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(64);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1684);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var t,touches={},et=e.touches;for(var i=0;i>2;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;idx+=5;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){var t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent>>2]=numTouches;if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchcancel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);return 0}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);return 0}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);return 0}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(96);var wheelHandlerFunc=function(ev){var e=ev||event;var wheelEvent=JSEvents.wheelEvent;fillMouseEventData(wheelEvent,e,target);HEAPF64[wheelEvent+64>>3]=e["deltaX"];HEAPF64[wheelEvent+72>>3]=e["deltaY"];HEAPF64[wheelEvent+80>>3]=e["deltaZ"];HEAP32[wheelEvent+88>>2]=e["deltaMode"];if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!=="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function _emscripten_thread_sleep(msecs){var start=_emscripten_get_now();while(_emscripten_get_now()-start>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)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _emscripten_webgl_do_create_context(target,attributes){var a=attributes>>2;var powerPreference=HEAP32[a+(24>>2)];var contextAttributes={"alpha":!!HEAP32[a+(0>>2)],"depth":!!HEAP32[a+(4>>2)],"stencil":!!HEAP32[a+(8>>2)],"antialias":!!HEAP32[a+(12>>2)],"premultipliedAlpha":!!HEAP32[a+(16>>2)],"preserveDrawingBuffer":!!HEAP32[a+(20>>2)],"powerPreference":__emscripten_webgl_power_preferences[powerPreference],"failIfMajorPerformanceCaveat":!!HEAP32[a+(28>>2)],majorVersion:HEAP32[a+(32>>2)],minorVersion:HEAP32[a+(36>>2)],enableExtensionsByDefault:HEAP32[a+(40>>2)],explicitSwapControl:HEAP32[a+(44>>2)],proxyContextToMainThread:HEAP32[a+(48>>2)],renderViaOffscreenBackBuffer:HEAP32[a+(52>>2)]};var canvas=findCanvasEventTarget(target);if(!canvas){return 0}if(contextAttributes.explicitSwapControl){return 0}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_do_get_current_context(){return GL.currentContext?GL.currentContext.handle:0}function _emscripten_webgl_get_current_context(){return _emscripten_webgl_do_get_current_context()}Module["_emscripten_webgl_get_current_context"]=_emscripten_webgl_get_current_context;function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}Module["_emscripten_webgl_make_context_current"]=_emscripten_webgl_make_context_current;function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _emscripten_webgl_enable_extension(contextHandle,extension){var context=GL.getContext(contextHandle);var extString=UTF8ToString(extension);if(extString.startsWith("GL_"))extString=extString.substr(3);if(extString=="ANGLE_instanced_arrays")__webgl_enable_ANGLE_instanced_arrays(GLctx);if(extString=="OES_vertex_array_object")__webgl_enable_OES_vertex_array_object(GLctx);if(extString=="WEBGL_draw_buffers")__webgl_enable_WEBGL_draw_buffers(GLctx);if(extString=="WEBGL_draw_instanced_base_vertex_base_instance")__webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);if(extString=="WEBGL_multi_draw_instanced_base_vertex_base_instance")__webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(extString=="WEBGL_multi_draw")__webgl_enable_WEBGL_multi_draw(GLctx);var ext=context.GLctx.getExtension(extString);return!!ext}function _emscripten_webgl_init_context_attributes(attributes){var a=attributes>>2;for(var i=0;i<56>>2;++i){HEAP32[a+i]=0}HEAP32[a+(0>>2)]=HEAP32[a+(4>>2)]=HEAP32[a+(12>>2)]=HEAP32[a+(16>>2)]=HEAP32[a+(32>>2)]=HEAP32[a+(40>>2)]=1}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator==="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){try{var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _environ_sizes_get(penviron_count,penviron_buf_size){try{var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}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))abort(e);return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4;HEAP8[pbuf>>0]=type;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(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))abort(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))abort(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))abort(e);return e.errno}}function _flock(fd,operation){return 0}function _getTempRet0(){return getTempRet0()}function _getaddrinfo(node,service,hint,out){var addr=0;var port=0;var flags=0;var family=0;var type=0;var proto=0;var ai;function allocaddrinfo(family,type,proto,canon,addr,port){var sa,salen,ai;var errno;salen=family===10?28:16;addr=family===10?inetNtop6(addr):inetNtop4(addr);sa=_malloc(salen);errno=writeSockaddr(sa,family,addr,port);assert(!errno);ai=_malloc(32);HEAP32[ai+4>>2]=family;HEAP32[ai+8>>2]=type;HEAP32[ai+12>>2]=proto;HEAP32[ai+24>>2]=canon;HEAP32[ai+20>>2]=sa;if(family===10){HEAP32[ai+16>>2]=28}else{HEAP32[ai+16>>2]=16}HEAP32[ai+28>>2]=0;return ai}if(hint){flags=HEAP32[hint>>2];family=HEAP32[hint+4>>2];type=HEAP32[hint+8>>2];proto=HEAP32[hint+12>>2]}if(type&&!proto){proto=type===2?17:6}if(!type&&proto){type=proto===17?2:1}if(proto===0){proto=6}if(type===0){type=1}if(!node&&!service){return-2}if(flags&~(1|2|4|1024|8|16|32)){return-1}if(hint!==0&&HEAP32[hint>>2]&2&&!node){return-1}if(flags&32){return-2}if(type!==0&&type!==1&&type!==2){return-7}if(family!==0&&family!==2&&family!==10){return-6}if(service){service=UTF8ToString(service);port=parseInt(service,10);if(isNaN(port)){if(flags&1024){return-2}return-8}}if(!node){if(family===0){family=2}if((flags&1)===0){if(family===2){addr=_htonl(2130706433)}else{addr=[0,0,0,1]}}ai=allocaddrinfo(family,type,proto,null,addr,port);HEAP32[out>>2]=ai;return 0}node=UTF8ToString(node);addr=inetPton4(node);if(addr!==null){if(family===0||family===2){family=2}else if(family===10&&flags&8){addr=[0,0,_htonl(65535),addr];family=10}else{return-2}}else{addr=inetPton6(node);if(addr!==null){if(family===0||family===10){family=10}else{return-2}}}if(addr!=null){ai=allocaddrinfo(family,type,proto,node,addr,port);HEAP32[out>>2]=ai;return 0}if(flags&4){return-2}node=DNS.lookup_name(node);addr=inetPton4(node);if(family===0){family=2}else if(family===10){addr=[0,0,_htonl(65535),addr]}ai=allocaddrinfo(family,type,proto,null,addr,port);HEAP32[out>>2]=ai;return 0}function getHostByName(name){var ret=_malloc(20);var nameBuf=_malloc(name.length+1);stringToUTF8(name,nameBuf,name.length+1);HEAP32[ret>>2]=nameBuf;var aliasesBuf=_malloc(4);HEAP32[aliasesBuf>>2]=0;HEAP32[ret+4>>2]=aliasesBuf;var afinet=2;HEAP32[ret+8>>2]=afinet;HEAP32[ret+12>>2]=4;var addrListBuf=_malloc(12);HEAP32[addrListBuf>>2]=addrListBuf+8;HEAP32[addrListBuf+4>>2]=0;HEAP32[addrListBuf+8>>2]=inetPton4(DNS.lookup_name(name));HEAP32[ret+16>>2]=addrListBuf;return ret}function _gethostbyaddr(addr,addrlen,type){if(type!==2){setErrNo(5);return null}addr=HEAP32[addr>>2];var host=inetNtop4(addr);var lookup=DNS.lookup_addr(host);if(lookup){host=lookup}return getHostByName(host)}function _gethostbyname(name){return getHostByName(UTF8ToString(name))}function _getnameinfo(sa,salen,node,nodelen,serv,servlen,flags){var info=readSockaddr(sa,salen);if(info.errno){return-6}var port=info.port;var addr=info.addr;var overflowed=false;if(node&&nodelen){var lookup;if(flags&1||!(lookup=DNS.lookup_addr(addr))){if(flags&8){return-2}}else{addr=lookup}var numBytesWrittenExclNull=stringToUTF8(addr,node,nodelen);if(numBytesWrittenExclNull+1>=nodelen){overflowed=true}}if(serv&&servlen){port=""+port;var numBytesWrittenExclNull=stringToUTF8(port,serv,servlen);if(numBytesWrittenExclNull+1>=servlen){overflowed=true}}if(overflowed){return-12}return 0}function _getpwuid(){throw"getpwuid: TODO"}function _gettimeofday(ptr){var now=Date.now();HEAP32[ptr>>2]=now/1e3|0;HEAP32[ptr+4>>2]=now%1e3*1e3|0;return 0}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){program=GL.programs[program];shader=GL.shaders[shader];program[shader.shaderType]=shader;GLctx.attachShader(program,shader)}function _glBeginQuery(target,id){GLctx["beginQuery"](target,GL.queries[id])}function _glBeginTransformFeedback(x0){GLctx["beginTransformFeedback"](x0)}function _glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _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 _glBindBufferBase(target,index,buffer){GLctx["bindBufferBase"](target,index,GL.buffers[buffer])}function _glBindBufferRange(target,index,buffer,offset,ptrsize){GLctx["bindBufferRange"](target,index,GL.buffers[buffer],offset,ptrsize)}function _glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _glBindSampler(unit,sampler){GLctx["bindSampler"](unit,GL.samplers[sampler])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBindTransformFeedback(target,id){GLctx["bindTransformFeedback"](target,GL.transformFeedbacks[id])}function _glBindVertexArray(vao){GLctx["bindVertexArray"](GL.vaos[vao]);var ibo=GLctx.getParameter(34965);GLctx.currentElementArrayBufferBinding=ibo?ibo.name|0:0}function _glBlendEquation(x0){GLctx["blendEquation"](x0)}function _glBlendEquationSeparate(x0,x1){GLctx["blendEquationSeparate"](x0,x1)}function _glBlendFuncSeparate(x0,x1,x2,x3){GLctx["blendFuncSeparate"](x0,x1,x2,x3)}function _glBlitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9){GLctx["blitFramebuffer"](x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)}function _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 _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 _glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _glClear(x0){GLctx["clear"](x0)}function _glClearBufferfi(x0,x1,x2,x3){GLctx["clearBufferfi"](x0,x1,x2,x3)}function _glClearBufferfv(buffer,drawbuffer,value){GLctx["clearBufferfv"](buffer,drawbuffer,HEAPF32,value>>2)}function _glClearBufferuiv(buffer,drawbuffer,value){GLctx["clearBufferuiv"](buffer,drawbuffer,HEAPU32,value>>2)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glClearDepthf(x0){GLctx["clearDepth"](x0)}function _glClearStencil(x0){GLctx["clearStencil"](x0)}function _glClientWaitSync(sync,flags,timeoutLo,timeoutHi){return GLctx.clientWaitSync(GL.syncs[sync],flags,convertI32PairToI53(timeoutLo,timeoutHi))}function _glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _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 _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 _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 _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 _glCopyBufferSubData(x0,x1,x2,x3,x4){GLctx["copyBufferSubData"](x0,x1,x2,x3,x4)}function _glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexSubImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);GL.shaders[id].shaderType=shaderType&1?"vs":"fs";return id}function _glCullFace(x0){GLctx["cullFace"](x0)}function _glDeleteBuffers(n,buffers){for(var i=0;i>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null;if(id==GLctx.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 _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 _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 _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 _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 _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 _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _glDeleteSync(id){if(!id)return;var sync=GL.syncs[id];if(!sync){GL.recordError(1281);return}GLctx.deleteSync(sync);sync.name=0;GL.syncs[id]=null}function _glDeleteTextures(n,textures){for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _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 _glDeleteVertexArrays(n,vaos){for(var i=0;i>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _glDepthFunc(x0){GLctx["depthFunc"](x0)}function _glDepthMask(flag){GLctx.depthMask(!!flag)}function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}function _glDrawArraysInstanced(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}var tempFixedLengthArray=[];function _glDrawBuffers(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx["drawBuffers"](bufArray)}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 _glDrawElementsInstanced(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glEndQuery(x0){GLctx["endQuery"](x0)}function _glEndTransformFeedback(){GLctx["endTransformFeedback"]()}function _glFenceSync(condition,flags){var sync=GLctx.fenceSync(condition,flags);if(sync){var id=GL.getNewId(GL.syncs);sync.name=id;GL.syncs[id]=sync;return id}else{return 0}}function _glFinish(){GLctx["finish"]()}function _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 _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 _glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _glFramebufferTextureLayer(target,attachment,texture,level,layer){GLctx.framebufferTextureLayer(target,attachment,GL.textures[texture],level,layer)}function _glFrontFace(x0){GLctx["frontFace"](x0)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i>2]=id}}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _glGenQueries(n,ids){__glGenObject(n,ids,"createQuery",GL.queries)}function _glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _glGenSamplers(n,samplers){__glGenObject(n,samplers,"createSampler",GL.samplers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGenTransformFeedbacks(n,ids){__glGenObject(n,ids,"createTransformFeedback",GL.transformFeedbacks)}function _glGenVertexArrays(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _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 _glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}function _glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}function _glGetActiveUniformBlockName(program,uniformBlockIndex,bufSize,length,uniformBlockName){program=GL.programs[program];var result=GLctx["getActiveUniformBlockName"](program,uniformBlockIndex);if(!result)return;if(uniformBlockName&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(result,uniformBlockName,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}}function _glGetActiveUniformBlockiv(program,uniformBlockIndex,pname,params){if(!params){GL.recordError(1281);return}program=GL.programs[program];if(pname==35393){var name=GLctx["getActiveUniformBlockName"](program,uniformBlockIndex);HEAP32[params>>2]=name.length+1;return}var result=GLctx["getActiveUniformBlockParameter"](program,uniformBlockIndex,pname);if(result===null)return;if(pname==35395){for(var i=0;i>2]=result[i]}}else{HEAP32[params>>2]=result}}function _glGetActiveUniformsiv(program,uniformCount,uniformIndices,pname,params){if(!params){GL.recordError(1281);return}if(uniformCount>0&&uniformIndices==0){GL.recordError(1281);return}program=GL.programs[program];var ids=[];for(var i=0;i>2])}var result=GLctx["getActiveUniforms"](program,ids,pname);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}}function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function _glGetBufferSubData(target,offset,size,data){if(!data){GL.recordError(1281);return}GLctx["getBufferSubData"](target,offset,HEAPU8,data,size)}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function _glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}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 _glGetIntegeri_v(target,index,data){emscriptenWebGLGetIndexed(target,index,data,0)}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 33390:ret=1048576;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 _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetInternalformativ(target,internalformat,pname,bufSize,params){if(bufSize<0){GL.recordError(1281);return}if(!params){GL.recordError(1281);return}var ret=GLctx["getInternalformatParameter"](target,internalformat,pname);if(ret===null)return;for(var i=0;i>2]=ret[i]}}function _glGetProgramBinary(program,bufSize,length,binaryFormat,binary){GL.recordError(1282)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}program=GL.programs[program];if(pname==35716){var log=GLctx.getProgramInfoLog(program);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){if(!program.maxUniformLength){for(var i=0;i>2]=program.maxUniformLength}else if(pname==35722){if(!program.maxAttributeLength){for(var i=0;i>2]=program.maxAttributeLength}else if(pname==35381){if(!program.maxUniformBlockNameLength){for(var i=0;i>2]=program.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(program,pname)}}function _glGetQueryObjectuiv(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx["getQueryParameter"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _glGetQueryiv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx["getQuery"](target,pname)}function _glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _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 _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 _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 _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 _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 _glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)}function _glGetUniformBlockIndex(program,uniformBlockName){return GLctx["getUniformBlockIndex"](GL.programs[program],UTF8ToString(uniformBlockName))}function _glGetUniformIndices(program,uniformCount,uniformNames,uniformIndices){if(!uniformIndices){GL.recordError(1281);return}if(uniformCount>0&&(uniformNames==0||uniformIndices==0)){GL.recordError(1281);return}program=GL.programs[program];var names=[];for(var i=0;i>2]));var result=GLctx["getUniformIndices"](program,names);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}}function _glGetUniformLocation(program,name){function getLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}name=UTF8ToString(name);if(program=GL.programs[program]){var uniformLocsById=program.uniformLocsById;var uniformSizeAndIdsByName=program.uniformSizeAndIdsByName;var i,j;var arrayIndex=0;var uniformBaseName=name;var leftBrace=getLeftBracePos(name);if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};for(i=0;i0?nm.slice(0,lb):nm;var id=uniformSizeAndIdsByName[arrayName]?uniformSizeAndIdsByName[arrayName][1]:program.uniformIdCounter;program.uniformIdCounter=Math.max(id+sz,program.uniformIdCounter);uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=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];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 _glGetUniformiv(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 _glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}function _glInvalidateFramebuffer(target,numAttachments,attachments){var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx["invalidateFramebuffer"](target,list)}function _glIsEnabled(x0){return GLctx["isEnabled"](x0)}function _glIsVertexArray(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx["isVertexArray"](vao)}function _glLinkProgram(program){program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={};[program["vs"],program["fs"]].forEach(function(s){Object.keys(s.explicitUniformLocations).forEach(function(shaderLocation){var loc=s.explicitUniformLocations[shaderLocation];program.uniformSizeAndIdsByName[shaderLocation]=[1,loc];program.uniformIdCounter=Math.max(program.uniformIdCounter,loc+1)})});function copyKeys(dst,src){Object.keys(src).forEach(function(key){dst[key]=src[key]})}program.explicitUniformBindings={};program.explicitSamplerBindings={};[program["vs"],program["fs"]].forEach(function(s){copyKeys(program.explicitUniformBindings,s.explicitUniformBindings);copyKeys(program.explicitSamplerBindings,s.explicitSamplerBindings)});program.explicitProgramBindingsApplied=0}function _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 _glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _glPolygonOffset(x0,x1){GLctx["polygonOffset"](x0,x1)}function _glProgramBinary(program,binaryFormat,binary,length){GL.recordError(1280)}function _glProgramParameteri(program,pname,value){GL.recordError(1280)}function _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 _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 _glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _glRenderbufferStorageMultisample(x0,x1,x2,x3,x4){GLctx["renderbufferStorageMultisample"](x0,x1,x2,x3,x4)}function _glSamplerParameteri(sampler,pname,param){GLctx["samplerParameteri"](GL.samplers[sampler],pname,param)}function _glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function find_closing_parens_index(arr,i,opening="(",closing=")"){for(var nesting=0;i32)}function nextWhitespace(str,i){while(!isWhitespace(str,i))++i;return i}function classifyChar(str,idx){var cc=str.charCodeAt(idx);if(cc>32){if(cc<48)return 1;if(cc<58)return 2;if(cc<65)return 1;if(cc<91||cc==95)return 3;if(cc<97)return 1;if(cc<123)return 3;return 1}return cc<33?0:4}function tokenize(exprString,keepWhitespace){var out=[],len=exprString.length;for(var i=0;i<=len;++i){var kind=classifyChar(exprString,i);if(kind==2||kind==3){for(var j=i+1;j<=len;++j){var kind2=classifyChar(exprString,j);if(kind2!=kind&&(kind2!=2||kind!=3)){out.push(exprString.substring(i,j));i=j-1;break}}}else if(kind==1){var op2=exprString.substr(i,2);if(["<=",">=","==","!=","&&","||"].includes(op2)){out.push(op2);++i}else{out.push(exprString[i])}}}return out}function expandMacros(str,lineStart,lineEnd){if(lineEnd===undefined)lineEnd=str.length;var len=str.length;var out="";for(var i=lineStart;i1||typeof tokens[0]!="function"){tokens=function(tokens){var i,j,p,operatorAndPriority=-2;for(j=0;j",">=","==","!=","&&","||","("].indexOf(tokens[j]))>operatorAndPriority){i=j;operatorAndPriority=p}}if(operatorAndPriority==13){var j=find_closing_parens_index(tokens,i);if(j){tokens.splice(i,j+1-i,buildExprTree(tokens.slice(i+1,j)));return tokens}}if(operatorAndPriority==4){i=tokens.lastIndexOf("!");var innerExpr=buildExprTree(tokens.slice(i+1,i+2));tokens.splice(i,2,function(){return!innerExpr()});return tokens}if(operatorAndPriority>=0){var left=buildExprTree(tokens.slice(0,i));var right=buildExprTree(tokens.slice(i+1));switch(tokens[i]){case"&&":return[function(){return left()&&right()}];case"||":return[function(){return left()||right()}];case"==":return[function(){return left()==right()}];case"!=":return[function(){return left()!=right()}];case"<":return[function(){return left()":return[function(){return left()>right()}];case">=":return[function(){return left()>=right()}];case"+":return[function(){return left()+right()}];case"-":return[function(){return left()-right()}];case"*":return[function(){return left()*right()}];case"/":return[function(){return Math.floor(left()/right())}]}}var num=jstoi_q(tokens[i]);return[function(){return num}]}(tokens)}return tokens[0]}for(;i0){var macroEnd=expression.indexOf(")",macroStart);let params=expression.substring(macroStart+1,macroEnd).split(",").map(x=>x.trim());let value=tokenize(expression.substring(macroEnd+1).trim());defs[expression.substring(0,macroStart)]=function(args){var ret="";value.forEach(x=>{var argIndex=params.indexOf(x);ret+=argIndex>=0?args[argIndex]:x});return ret}}else{let value=expandMacros(expression.substring(firstWs+1).trim(),0);defs[expression.substring(0,firstWs)]=function(){return value}}}break;case"undef":if(thisLineIsInActivePreprocessingBlock)delete defs[expression];break;default:if(directive!="version"&&directive!="pragma"&&directive!="extension"){}out+=expandMacros(code,lineStart,i)+"\n"}}return out}function remove_cpp_comments_in_shaders(code){var i=0,out="",ch,next,len=code.length;for(;i=0&&explicitUniformLocations[match[5]]<1048576)){console.error('Specified an out of range layout(location=x) directive "'+explicitUniformLocations[match[5]]+'"! ('+match[0]+")");GL.recordError(1281);return}}source=source.replace(regex,"$2");GL.shaders[shader].explicitUniformLocations=explicitUniformLocations;var bindingRegex=/layout\s*\(.*?binding\s*=\s*(-?\d+).*?\)\s*uniform\s+(\w+)\s+(\w+)?/g,samplerBindings={},uniformBindings={},bindingMatch;while(bindingMatch=bindingRegex.exec(source)){var arrayLength=1;for(var i=bindingMatch.index;i=0&&binding+arrayLength<=numBindingPoints)){console.error('Specified an out of range layout(binding=x) directive "'+binding+'"! ('+bindingMatch[0]+"). Valid range is [0, "+numBindingPoints+"-1]");GL.recordError(1281);return}}source=source.replace(/layout\s*\(.*?binding\s*=\s*([-\d]+).*?\)/g,"");source=source.replace(/(layout\s*\((.*?)),\s*binding\s*=\s*([-\d]+)\)/g,"$1)");source=source.replace(/layout\s*\(\s*binding\s*=\s*([-\d]+)\s*,(.*?)\)/g,"layout($2)");GL.shaders[shader].explicitSamplerBindings=samplerBindings;GL.shaders[shader].explicitUniformBindings=uniformBindings;GLctx.shaderSource(GL.shaders[shader],source)}function _glStencilFuncSeparate(x0,x1,x2,x3){GLctx["stencilFuncSeparate"](x0,x1,x2,x3)}function _glStencilMask(x0){GLctx["stencilMask"](x0)}function _glStencilOpSeparate(x0,x1,x2,x3){GLctx["stencilOpSeparate"](x0,x1,x2,x3)}function _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 _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 _glTexParameterf(x0,x1,x2){GLctx["texParameterf"](x0,x1,x2)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)}function _glTexStorage2D(x0,x1,x2,x3,x4){GLctx["texStorage2D"](x0,x1,x2,x3,x4)}function _glTexStorage3D(x0,x1,x2,x3,x4,x5){GLctx["texStorage3D"](x0,x1,x2,x3,x4,x5)}function _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 _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 _glTransformFeedbackVaryings(program,count,varyings,bufferMode){program=GL.programs[program];var vars=[];for(var i=0;i>2]));GLctx["transformFeedbackVaryings"](program,vars,bufferMode)}var miniTempWebGLFloatBuffers=[];function _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 _glUniform1i(location,v0){GLctx.uniform1i(webglGetUniformLocation(location),v0)}var __miniTempWebGLIntBuffers=[];function _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 _glUniform1uiv(location,count,value){GLctx.uniform1uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count)}function _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 _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 _glUniform2uiv(location,count,value){GLctx.uniform2uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*2)}function _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 _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 _glUniform3uiv(location,count,value){GLctx.uniform3uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*3)}function _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 _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 _glUniform4uiv(location,count,value){GLctx.uniform4uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*4)}function _glUniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding){program=GL.programs[program];GLctx["uniformBlockBinding"](program,uniformBlockIndex,uniformBlockBinding)}function _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 _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 _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 webglApplyExplicitProgramBindings(){var p=GLctx.currentProgram;if(!p.explicitProgramBindingsApplied){if(GL.currentContext.version>=2){Object.keys(p.explicitUniformBindings).forEach(function(ubo){var bindings=p.explicitUniformBindings[ubo];for(var i=0;i1?"["+i+"]":""));GLctx.uniformBlockBinding(p,blockIndex,bindings[0]+i)}})}Object.keys(p.explicitSamplerBindings).forEach(function(sampler){var bindings=p.explicitSamplerBindings[sampler];for(var i=0;i>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])}function _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 _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 _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function _llvm_eh_typeid_for(type){return type}function _mktime(tmPtr){_tzset();var date=new Date(HEAP32[tmPtr+20>>2]+1900,HEAP32[tmPtr+16>>2],HEAP32[tmPtr+12>>2],HEAP32[tmPtr+8>>2],HEAP32[tmPtr+4>>2],HEAP32[tmPtr>>2],0);var dst=HEAP32[tmPtr+32>>2];var guessedOffset=date.getTimezoneOffset();var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dstOffset=Math.min(winterOffset,summerOffset);if(dst<0){HEAP32[tmPtr+32>>2]=Number(summerOffset!=winterOffset&&dstOffset==guessedOffset)}else if(dst>0!=(dstOffset==guessedOffset)){var nonDstOffset=Math.max(winterOffset,summerOffset);var trueOffset=dst>0?dstOffset:nonDstOffset;date.setTime(date.getTime()+(trueOffset-guessedOffset)*6e4)}HEAP32[tmPtr+24>>2]=date.getDay();var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;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();return date.getTime()/1e3|0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value==="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}function setFileTime(path,time){path=UTF8ToString(path);try{FS.utime(path,time,time);return 0}catch(e){if(!(e instanceof FS.ErrnoError))throw e+" : "+stackTrace();setErrNo(e.errno);return-1}}function _utime(path,times){var time;if(times){time=HEAP32[times+4>>2]*1e3}else{time=Date.now()}return setFileTime(path,time)}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;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 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)}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={"$e":_JS_Accelerometer_IsRunning,"Fb":_JS_Accelerometer_Start,"Eb":_JS_Accelerometer_Stop,"ff":_JS_Cursor_SetImage,"fb":_JS_Cursor_SetShow,"Pa":_JS_DOM_MapViewportCoordinateToElementLocalCoordinate,"Ge":_JS_DOM_UnityCanvasSelector,"Ie":_JS_Eval_OpenURL,"ze":_JS_FileSystem_Initialize,"fa":_JS_FileSystem_Sync,"Ye":_JS_GravitySensor_IsRunning,"Bb":_JS_GravitySensor_Start,"Ab":_JS_GravitySensor_Stop,"Xe":_JS_Gyroscope_IsRunning,"zb":_JS_Gyroscope_Start,"yb":_JS_Gyroscope_Stop,"_e":_JS_LinearAccelerationSensor_IsRunning,"Db":_JS_LinearAccelerationSensor_Start,"Cb":_JS_LinearAccelerationSensor_Stop,"Sc":_JS_Log_Dump,"Je":_JS_Log_StackTrace,"af":_JS_OrientationSensor_IsRunning,"Hb":_JS_OrientationSensor_Start,"Gb":_JS_OrientationSensor_Stop,"Ib":_JS_RequestDeviceSensorPermissionsOnTouch,"Ce":_JS_RunQuitCallbacks,"We":_JS_ScreenOrientation_DeInit,"df":_JS_ScreenOrientation_Init,"ea":_JS_ScreenOrientation_Lock,"Lf":_JS_Sound_Create_Channel,"Yb":_JS_Sound_GetLength,"Hf":_JS_Sound_GetLoadState,"Ef":_JS_Sound_Init,"Vb":_JS_Sound_Load,"Gf":_JS_Sound_Load_PCM,"Sa":_JS_Sound_Play,"Ta":_JS_Sound_ReleaseInstance,"Jb":_JS_Sound_ResumeIfNeeded,"If":_JS_Sound_Set3D,"Cf":_JS_Sound_SetListenerOrientation,"Df":_JS_Sound_SetListenerPosition,"Xb":_JS_Sound_SetLoop,"Wb":_JS_Sound_SetLoopPoints,"ua":_JS_Sound_SetPaused,"ga":_JS_Sound_SetPitch,"Kf":_JS_Sound_SetPosition,"Jf":_JS_Sound_SetVolume,"wa":_JS_Sound_Stop,"na":_JS_SystemInfo_GetCanvasClientSize,"Ub":_JS_SystemInfo_GetDocumentURL,"rb":_JS_SystemInfo_GetGPUInfo,"xb":_JS_SystemInfo_GetMatchWebGLToCanvasSize,"sb":_JS_SystemInfo_GetMemory,"tb":_JS_SystemInfo_GetOS,"vb":_JS_SystemInfo_GetPreferredDevicePixelRatio,"Le":_JS_SystemInfo_GetScreenSize,"zc":_JS_SystemInfo_GetStreamingAssetsURL,"hf":_JS_SystemInfo_HasAstcHdr,"ub":_JS_SystemInfo_HasCursorLock,"Ve":_JS_SystemInfo_HasFullscreen,"ta":_JS_SystemInfo_HasWebGL,"He":_JS_SystemInfo_IsMobile,"Fe":_JS_UnityEngineShouldQuit,"zf":_JS_WebRequest_Abort,"vf":_JS_WebRequest_Create,"xf":_JS_WebRequest_GetResponseMetaData,"yf":_JS_WebRequest_GetResponseMetaDataLengths,"Ra":_JS_WebRequest_Release,"rf":_JS_WebRequest_Send,"tf":_JS_WebRequest_SetRedirectLimit,"sf":_JS_WebRequest_SetRequestHeader,"uf":_JS_WebRequest_SetTimeout,"p":___cxa_allocate_exception,"h":___cxa_begin_catch,"n":___cxa_end_catch,"e":___cxa_find_matching_catch_2,"a":___cxa_find_matching_catch_3,"Rc":___cxa_find_matching_catch_4,"Ga":___cxa_free_exception,"bd":___cxa_rethrow,"Z":___cxa_throw,"jd":___gmtime_r,"kd":___localtime_r,"j":___resumeException,"Gd":___sys__newselect,"Ne":___sys_accept4,"Rd":___sys_access,"of":___sys_bind,"_c":___sys_chmod,"ef":___sys_connect,"ed":___sys_dup2,"S":___sys_fcntl64,"$f":___sys_fstat64,"Xc":___sys_getcwd,"Uc":___sys_getdents64,"Bc":___sys_getegid32,"Cc":___sys_geteuid32,"gd":___sys_getpeername,"pd":___sys_getrusage,"Ze":___sys_getsockname,"gf":___sys_getsockopt,"Pf":___sys_getuid32,"qb":___sys_ioctl,"Ue":___sys_listen,"$c":___sys_lstat64,"Wc":___sys_mkdir,"vd":___sys_mmap2,"md":___sys_munmap,"Ya":___sys_open,"ad":___sys_pipe,"bf":___sys_poll,"Xh":___sys_readlink,"le":___sys_recvfrom,"cd":___sys_recvmsg,"Yc":___sys_rename,"Vc":___sys_rmdir,"dd":___sys_sendmsg,"we":___sys_sendto,"ae":___sys_setsockopt,"fd":___sys_shutdown,"lb":___sys_socket,"cc":___sys_stat64,"Mf":___sys_statfs64,"Nf":___sys_truncate64,"ld":___sys_uname,"Zc":___sys_unlink,"x":_abort,"P":_clock,"od":_clock_getres,"pb":_clock_gettime,"id":_difftime,"wf":_dlclose,"va":_dlerror,"Zb":_dlopen,"Ff":_dlsym,"Qa":_emscripten_asm_const_int_sync_on_main_thread,"De":_emscripten_cancel_main_loop,"Be":_emscripten_clear_interval,"Se":_emscripten_exit_fullscreen,"Me":_emscripten_exit_pointerlock,"Ke":_emscripten_get_canvas_element_size,"Re":_emscripten_get_fullscreen_status,"Ma":_emscripten_get_gamepad_status,"nd":_emscripten_get_heap_max,"M":_emscripten_get_now,"Na":_emscripten_get_num_gamepads,"Ee":_emscripten_html5_remove_all_event_listeners,"lf":_emscripten_is_webgl_context_lost,"C":_emscripten_log,"F":_emscripten_longjmp,"qi":_emscripten_memcpy_big,"Te":_emscripten_request_fullscreen,"Oe":_emscripten_request_pointerlock,"ri":_emscripten_resize_heap,"Oa":_emscripten_sample_gamepad_data,"wb":_emscripten_set_blur_callback_on_thread,"La":_emscripten_set_canvas_element_size,"Pe":_emscripten_set_focus_callback_on_thread,"Qe":_emscripten_set_fullscreenchange_callback_on_thread,"Lb":_emscripten_set_gamepadconnected_callback_on_thread,"Kb":_emscripten_set_gamepaddisconnected_callback_on_thread,"ye":_emscripten_set_interval,"qa":_emscripten_set_keydown_callback_on_thread,"oa":_emscripten_set_keypress_callback_on_thread,"pa":_emscripten_set_keyup_callback_on_thread,"xe":_emscripten_set_main_loop,"Ae":_emscripten_set_main_loop_timing,"Sb":_emscripten_set_mousedown_callback_on_thread,"Rb":_emscripten_set_mousemove_callback_on_thread,"Tb":_emscripten_set_mouseup_callback_on_thread,"Mb":_emscripten_set_touchcancel_callback_on_thread,"Ob":_emscripten_set_touchend_callback_on_thread,"Nb":_emscripten_set_touchmove_callback_on_thread,"Pb":_emscripten_set_touchstart_callback_on_thread,"Qb":_emscripten_set_wheel_callback_on_thread,"Tc":_emscripten_thread_sleep,"nf":_emscripten_webgl_create_context,"mf":_emscripten_webgl_destroy_context,"ra":_emscripten_webgl_enable_extension,"kf":_emscripten_webgl_get_current_context,"pf":_emscripten_webgl_init_context_attributes,"sa":_emscripten_webgl_make_context_current,"qd":_environ_get,"rd":_environ_sizes_get,"A":_exit,"_":_fd_close,"cf":_fd_fdstat_get,"ob":_fd_read,"ve":_fd_seek,"Za":_fd_write,"xa":_flock,"b":_getTempRet0,"hd":_getaddrinfo,"Af":_gethostbyaddr,"Bf":_gethostbyname,"mb":_getnameinfo,"Of":_getpwuid,"ma":_gettimeofday,"Oh":_glActiveTexture,"Lh":_glAttachShader,"ec":_glBeginQuery,"Bg":_glBeginTransformFeedback,"Ea":_glBindAttribLocation,"Kh":_glBindBuffer,"bg":_glBindBufferBase,"ag":_glBindBufferRange,"Hh":_glBindFramebuffer,"Ih":_glBindRenderbuffer,"Wf":_glBindSampler,"Jh":_glBindTexture,"ug":_glBindTransformFeedback,"xg":_glBindVertexArray,"wc":_glBlendEquation,"xc":_glBlendEquationSeparate,"yc":_glBlendFuncSeparate,"mg":_glBlitFramebuffer,"Fh":_glBufferData,"Gh":_glBufferSubData,"Eh":_glCheckFramebufferStatus,"Ah":_glClear,"Sf":_glClearBufferfi,"Rf":_glClearBufferfv,"Qf":_glClearBufferuiv,"Bh":_glClearColor,"Ch":_glClearDepthf,"Dh":_glClearStencil,"sd":_glClientWaitSync,"eb":_glColorMask,"zh":_glCompileShader,"xh":_glCompressedTexImage2D,"og":_glCompressedTexImage3D,"yh":_glCompressedTexSubImage2D,"sg":_glCompressedTexSubImage3D,"eg":_glCopyBufferSubData,"wh":_glCopyTexImage2D,"vc":_glCopyTexSubImage2D,"vh":_glCreateProgram,"uh":_glCreateShader,"th":_glCullFace,"sh":_glDeleteBuffers,"rh":_glDeleteFramebuffers,"qh":_glDeleteProgram,"_a":_glDeleteQueries,"ph":_glDeleteRenderbuffers,"Vf":_glDeleteSamplers,"oh":_glDeleteShader,"$b":_glDeleteSync,"nh":_glDeleteTextures,"vg":_glDeleteTransformFeedbacks,"zg":_glDeleteVertexArrays,"Da":_glDepthFunc,"Ca":_glDepthMask,"mh":_glDetachShader,"lh":_glDisable,"kh":_glDisableVertexAttribArray,"hh":_glDrawArrays,"gg":_glDrawArraysInstanced,"dg":_glDrawBuffers,"ih":_glDrawElements,"fg":_glDrawElementsInstanced,"jh":_glEnable,"gh":_glEnableVertexAttribArray,"fc":_glEndQuery,"Cg":_glEndTransformFeedback,"_b":_glFenceSync,"dh":_glFinish,"eh":_glFlush,"jg":_glFlushMappedBufferRange,"T":_glFramebufferRenderbuffer,"Q":_glFramebufferTexture2D,"ya":_glFramebufferTextureLayer,"Ba":_glFrontFace,"ch":_glGenBuffers,"_g":_glGenFramebuffers,"dc":_glGenQueries,"$g":_glGenRenderbuffers,"Uf":_glGenSamplers,"bh":_glGenTextures,"wg":_glGenTransformFeedbacks,"Ag":_glGenVertexArrays,"ah":_glGenerateMipmap,"Uh":_glGetActiveAttrib,"db":_glGetActiveUniform,"Va":_glGetActiveUniformBlockName,"ba":_glGetActiveUniformBlockiv,"aa":_glGetActiveUniformsiv,"Th":_glGetAttribLocation,"jf":_glGetBufferSubData,"Zg":_glGetError,"Yg":_glGetFramebufferAttachmentParameteriv,"Nh":_glGetIntegeri_v,"Fa":_glGetIntegerv,"Yf":_glGetInternalformativ,"ac":_glGetProgramBinary,"Qh":_glGetProgramInfoLog,"V":_glGetProgramiv,"Eg":_glGetQueryObjectuiv,"Dg":_glGetQueryiv,"fh":_glGetRenderbufferParameteriv,"Wg":_glGetShaderInfoLog,"uc":_glGetShaderPrecisionFormat,"Xg":_glGetShaderSource,"Ph":_glGetShaderiv,"Vg":_glGetString,"kg":_glGetStringi,"Ug":_glGetTexParameteriv,"Zf":_glGetUniformBlockIndex,"Ua":_glGetUniformIndices,"ha":_glGetUniformLocation,"tc":_glGetUniformiv,"Sh":_glGetVertexAttribiv,"Xa":_glInvalidateFramebuffer,"Mh":_glIsEnabled,"yg":_glIsVertexArray,"Sg":_glLinkProgram,"hg":_glMapBufferRange,"Tg":_glPixelStorei,"sc":_glPolygonOffset,"bc":_glProgramBinary,"Tf":_glProgramParameteri,"cg":_glReadBuffer,"da":_glReadPixels,"Rg":_glRenderbufferStorage,"lg":_glRenderbufferStorageMultisample,"Xf":_glSamplerParameteri,"cb":_glScissor,"Pg":_glShaderSource,"Qg":_glStencilFuncSeparate,"Ng":_glStencilMask,"Og":_glStencilOpSeparate,"Lg":_glTexImage2D,"qg":_glTexImage3D,"Mg":_glTexParameterf,"bb":_glTexParameteri,"Kg":_glTexParameteriv,"ng":_glTexStorage2D,"pg":_glTexStorage3D,"Jg":_glTexSubImage2D,"rg":_glTexSubImage3D,"tg":_glTransformFeedbackVaryings,"gc":_glUniform1fv,"za":_glUniform1i,"hc":_glUniform1iv,"ic":_glUniform1uiv,"jc":_glUniform2fv,"kc":_glUniform2iv,"lc":_glUniform2uiv,"ab":_glUniform3fv,"mc":_glUniform3iv,"nc":_glUniform3uiv,"ca":_glUniform4fv,"oc":_glUniform4iv,"pc":_glUniform4uiv,"Wa":_glUniformBlockBinding,"qc":_glUniformMatrix3fv,"Aa":_glUniformMatrix4fv,"ig":_glUnmapBuffer,"Fg":_glUseProgram,"Rh":_glValidateProgram,"Gg":_glVertexAttrib4f,"Hg":_glVertexAttrib4fv,"_f":_glVertexAttribIPointer,"Ig":_glVertexAttribPointer,"$a":_glViewport,"ja":invoke_dddi,"Ic":invoke_di,"K":invoke_dii,"N":invoke_diii,"Qc":invoke_diiid,"jb":invoke_diiii,"Kd":invoke_dji,"X":invoke_fffi,"ib":invoke_ffi,"Y":invoke_fi,"W":invoke_fifi,"D":invoke_fii,"E":invoke_fiii,"Pc":invoke_fiiif,"$":invoke_fiiii,"Zh":invoke_fiiiii,"w":invoke_i,"gb":invoke_idi,"Lc":invoke_ifi,"d":invoke_ii,"ci":invoke_iidi,"Kc":invoke_iifi,"fi":invoke_iifii,"c":invoke_iii,"Ec":invoke_iiifi,"Hc":invoke_iiifii,"k":invoke_iiii,"Wh":invoke_iiiidii,"Vh":invoke_iiiifii,"r":invoke_iiiii,"Mc":invoke_iiiiid,"hi":invoke_iiiiifiiiii,"s":invoke_iiiiii,"u":invoke_iiiiiii,"di":invoke_iiiiiiidii,"B":invoke_iiiiiiii,"ki":invoke_iiiiiiiifiii,"H":invoke_iiiiiiiii,"R":invoke_iiiiiiiiii,"Ac":invoke_iiiiiiiiiii,"$h":invoke_iiiiiiiiiiiii,"Hd":invoke_iiiiiiiiiji,"Md":invoke_iiiiij,"td":invoke_iiiijii,"ge":invoke_iiiijjii,"se":invoke_iiij,"qe":invoke_iiijiii,"re":invoke_iij,"Xd":invoke_iiji,"he":invoke_iijii,"ee":invoke_iijiii,"ce":invoke_iijiiiiii,"Dd":invoke_iijji,"de":invoke_iijjiiiiii,"ne":invoke_iji,"Ud":invoke_ijji,"te":invoke_j,"Od":invoke_jdi,"pe":invoke_ji,"Ld":invoke_jidi,"oe":invoke_jii,"ie":invoke_jiii,"ue":invoke_jiiii,"Sd":invoke_jiiiid,"wd":invoke_jiiiii,"ud":invoke_jiiiiiiiiii,"Zd":invoke_jiiij,"be":invoke_jiiji,"Ed":invoke_jiji,"xd":invoke_jijiii,"Id":invoke_jijj,"Td":invoke_jji,"Vd":invoke_jjii,"$d":invoke_jjji,"g":invoke_v,"ei":invoke_vfi,"l":invoke_vi,"qf":invoke_vidd,"y":invoke_vidi,"Gc":invoke_vidiii,"ii":invoke_viffffi,"li":invoke_viffi,"I":invoke_vifi,"o":invoke_vii,"ai":invoke_viiddi,"Ha":invoke_viidi,"bi":invoke_viidii,"rc":invoke_viif,"U":invoke_viiff,"Dc":invoke_viifffffi,"Nc":invoke_viifffi,"ni":invoke_viiffi,"J":invoke_viifi,"gi":invoke_viifiiiii,"f":invoke_viii,"Yh":invoke_viiif,"Ia":invoke_viiifi,"m":invoke_viiii,"mi":invoke_viiiidi,"Wd":invoke_viiiidij,"Jc":invoke_viiiifi,"q":invoke_viiiii,"ia":invoke_viiiiifffiii,"ji":invoke_viiiiiffi,"Oc":invoke_viiiiifi,"t":invoke_viiiiii,"z":invoke_viiiiiii,"pi":invoke_viiiiiiifddfiii,"oi":invoke_viiiiiiiffffiii,"O":invoke_viiiiiiifiifiii,"Yd":invoke_viiiiiiifjjfiii,"G":invoke_viiiiiiii,"L":invoke_viiiiiiiii,"Fc":invoke_viiiiiiiiifi,"Ja":invoke_viiiiiiiiii,"ka":invoke_viiiiiiiiiii,"hb":invoke_viiiiiiiiiiii,"_h":invoke_viiiiiiiiiiiii,"Jd":invoke_viiiijiii,"Qd":invoke_viiij,"Pd":invoke_viiiji,"Cd":invoke_viij,"ke":invoke_viiji,"fe":invoke_viijii,"yd":invoke_viijiiiiii,"_d":invoke_viijiiijiiii,"je":invoke_viji,"me":invoke_vijii,"Bd":invoke_vijiii,"Nd":invoke_vijjji,"Fd":invoke_vji,"zd":invoke_vjiiiii,"Ad":invoke_vjjjiiii,"i":_llvm_eh_typeid_for,"nb":_mktime,"v":_setTempRet0,"Ka":_strftime,"la":_time,"kb":_utime};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["ti"]).apply(null,arguments)};var _SendMessageFloat=Module["_SendMessageFloat"]=function(){return(_SendMessageFloat=Module["_SendMessageFloat"]=Module["asm"]["ui"]).apply(null,arguments)};var _SendMessageString=Module["_SendMessageString"]=function(){return(_SendMessageString=Module["_SendMessageString"]=Module["asm"]["vi"]).apply(null,arguments)};var _SendMessage=Module["_SendMessage"]=function(){return(_SendMessage=Module["_SendMessage"]=Module["asm"]["wi"]).apply(null,arguments)};var _SetFullscreen=Module["_SetFullscreen"]=function(){return(_SetFullscreen=Module["_SetFullscreen"]=Module["asm"]["xi"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["yi"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["zi"]).apply(null,arguments)};var _htonl=Module["_htonl"]=function(){return(_htonl=Module["_htonl"]=Module["asm"]["Ai"]).apply(null,arguments)};var _htons=Module["_htons"]=function(){return(_htons=Module["_htons"]=Module["asm"]["Bi"]).apply(null,arguments)};var _ntohs=Module["_ntohs"]=function(){return(_ntohs=Module["_ntohs"]=Module["asm"]["Ci"]).apply(null,arguments)};var __get_tzname=Module["__get_tzname"]=function(){return(__get_tzname=Module["__get_tzname"]=Module["asm"]["Di"]).apply(null,arguments)};var __get_daylight=Module["__get_daylight"]=function(){return(__get_daylight=Module["__get_daylight"]=Module["asm"]["Ei"]).apply(null,arguments)};var __get_timezone=Module["__get_timezone"]=function(){return(__get_timezone=Module["__get_timezone"]=Module["asm"]["Fi"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Gi"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Hi"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["Ii"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Ji"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Ki"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Li"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["Mi"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Ni"]).apply(null,arguments)};var _memalign=Module["_memalign"]=function(){return(_memalign=Module["_memalign"]=Module["asm"]["Oi"]).apply(null,arguments)};var _memset=Module["_memset"]=function(){return(_memset=Module["_memset"]=Module["asm"]["Pi"]).apply(null,arguments)};var _strlen=Module["_strlen"]=function(){return(_strlen=Module["_strlen"]=Module["asm"]["Qi"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["Si"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Ti"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Ui"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Vi"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["Wi"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["Xi"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Yi"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["Zi"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["_i"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["$i"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["aj"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["bj"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["cj"]).apply(null,arguments)};var dynCall_iiij=Module["dynCall_iiij"]=function(){return(dynCall_iiij=Module["dynCall_iiij"]=Module["asm"]["dj"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["ej"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["fj"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["gj"]).apply(null,arguments)};var dynCall_iiijiii=Module["dynCall_iiijiii"]=function(){return(dynCall_iiijiii=Module["dynCall_iiijiii"]=Module["asm"]["hj"]).apply(null,arguments)};var dynCall_iij=Module["dynCall_iij"]=function(){return(dynCall_iij=Module["dynCall_iij"]=Module["asm"]["ij"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["jj"]).apply(null,arguments)};var dynCall_jii=Module["dynCall_jii"]=function(){return(dynCall_jii=Module["dynCall_jii"]=Module["asm"]["kj"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["lj"]).apply(null,arguments)};var dynCall_jiii=Module["dynCall_jiii"]=function(){return(dynCall_jiii=Module["dynCall_jiii"]=Module["asm"]["mj"]).apply(null,arguments)};var dynCall_viiji=Module["dynCall_viiji"]=function(){return(dynCall_viiji=Module["dynCall_viiji"]=Module["asm"]["nj"]).apply(null,arguments)};var dynCall_fii=Module["dynCall_fii"]=function(){return(dynCall_fii=Module["dynCall_fii"]=Module["asm"]["oj"]).apply(null,arguments)};var dynCall_viifi=Module["dynCall_viifi"]=function(){return(dynCall_viifi=Module["dynCall_viifi"]=Module["asm"]["pj"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["qj"]).apply(null,arguments)};var dynCall_viiiiiiifddfiii=Module["dynCall_viiiiiiifddfiii"]=function(){return(dynCall_viiiiiiifddfiii=Module["dynCall_viiiiiiifddfiii"]=Module["asm"]["rj"]).apply(null,arguments)};var dynCall_viiiiiiifiifiii=Module["dynCall_viiiiiiifiifiii"]=function(){return(dynCall_viiiiiiifiifiii=Module["dynCall_viiiiiiifiifiii"]=Module["asm"]["sj"]).apply(null,arguments)};var dynCall_viiiiiiifjjfiii=Module["dynCall_viiiiiiifjjfiii"]=function(){return(dynCall_viiiiiiifjjfiii=Module["dynCall_viiiiiiifjjfiii"]=Module["asm"]["tj"]).apply(null,arguments)};var dynCall_viiiiiiiffffiii=Module["dynCall_viiiiiiiffffiii"]=function(){return(dynCall_viiiiiiiffffiii=Module["dynCall_viiiiiiiffffiii"]=Module["asm"]["uj"]).apply(null,arguments)};var dynCall_vifi=Module["dynCall_vifi"]=function(){return(dynCall_vifi=Module["dynCall_vifi"]=Module["asm"]["vj"]).apply(null,arguments)};var dynCall_diiid=Module["dynCall_diiid"]=function(){return(dynCall_diiid=Module["dynCall_diiid"]=Module["asm"]["wj"]).apply(null,arguments)};var dynCall_jiiij=Module["dynCall_jiiij"]=function(){return(dynCall_jiiij=Module["dynCall_jiiij"]=Module["asm"]["xj"]).apply(null,arguments)};var dynCall_fiiif=Module["dynCall_fiiif"]=function(){return(dynCall_fiiif=Module["dynCall_fiiif"]=Module["asm"]["yj"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["zj"]).apply(null,arguments)};var dynCall_diiii=Module["dynCall_diiii"]=function(){return(dynCall_diiii=Module["dynCall_diiii"]=Module["asm"]["Aj"]).apply(null,arguments)};var dynCall_fiiii=Module["dynCall_fiiii"]=function(){return(dynCall_fiiii=Module["dynCall_fiiii"]=Module["asm"]["Bj"]).apply(null,arguments)};var dynCall_iijji=Module["dynCall_iijji"]=function(){return(dynCall_iijji=Module["dynCall_iijji"]=Module["asm"]["Cj"]).apply(null,arguments)};var dynCall_iiddi=Module["dynCall_iiddi"]=function(){return(dynCall_iiddi=Module["dynCall_iiddi"]=Module["asm"]["Dj"]).apply(null,arguments)};var dynCall_viiffi=Module["dynCall_viiffi"]=function(){return(dynCall_viiffi=Module["dynCall_viiffi"]=Module["asm"]["Ej"]).apply(null,arguments)};var dynCall_iiiifii=Module["dynCall_iiiifii"]=function(){return(dynCall_iiiifii=Module["dynCall_iiiifii"]=Module["asm"]["Fj"]).apply(null,arguments)};var dynCall_iiifii=Module["dynCall_iiifii"]=function(){return(dynCall_iiifii=Module["dynCall_iiifii"]=Module["asm"]["Gj"]).apply(null,arguments)};var dynCall_viiiifii=Module["dynCall_viiiifii"]=function(){return(dynCall_viiiifii=Module["dynCall_viiiifii"]=Module["asm"]["Hj"]).apply(null,arguments)};var dynCall_viffi=Module["dynCall_viffi"]=function(){return(dynCall_viffi=Module["dynCall_viffi"]=Module["asm"]["Ij"]).apply(null,arguments)};var dynCall_viiifi=Module["dynCall_viiifi"]=function(){return(dynCall_viiifi=Module["dynCall_viiifi"]=Module["asm"]["Jj"]).apply(null,arguments)};var dynCall_ffi=Module["dynCall_ffi"]=function(){return(dynCall_ffi=Module["dynCall_ffi"]=Module["asm"]["Kj"]).apply(null,arguments)};var dynCall_viiiiiiiiiii=Module["dynCall_viiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiii=Module["dynCall_viiiiiiiiiii"]=Module["asm"]["Lj"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Mj"]).apply(null,arguments)};var dynCall_iiiiiiiifiii=Module["dynCall_iiiiiiiifiii"]=function(){return(dynCall_iiiiiiiifiii=Module["dynCall_iiiiiiiifiii"]=Module["asm"]["Nj"]).apply(null,arguments)};var dynCall_viiiiifi=Module["dynCall_viiiiifi"]=function(){return(dynCall_viiiiifi=Module["dynCall_viiiiifi"]=Module["asm"]["Oj"]).apply(null,arguments)};var dynCall_viiiiiffi=Module["dynCall_viiiiiffi"]=function(){return(dynCall_viiiiiffi=Module["dynCall_viiiiiffi"]=Module["asm"]["Pj"]).apply(null,arguments)};var dynCall_viifii=Module["dynCall_viifii"]=function(){return(dynCall_viifii=Module["dynCall_viifii"]=Module["asm"]["Qj"]).apply(null,arguments)};var dynCall_fi=Module["dynCall_fi"]=function(){return(dynCall_fi=Module["dynCall_fi"]=Module["asm"]["Rj"]).apply(null,arguments)};var dynCall_dddi=Module["dynCall_dddi"]=function(){return(dynCall_dddi=Module["dynCall_dddi"]=Module["asm"]["Sj"]).apply(null,arguments)};var dynCall_fffi=Module["dynCall_fffi"]=function(){return(dynCall_fffi=Module["dynCall_fffi"]=Module["asm"]["Tj"]).apply(null,arguments)};var dynCall_viifffi=Module["dynCall_viifffi"]=function(){return(dynCall_viifffi=Module["dynCall_viifffi"]=Module["asm"]["Uj"]).apply(null,arguments)};var dynCall_viffffi=Module["dynCall_viffffi"]=function(){return(dynCall_viffffi=Module["dynCall_viffffi"]=Module["asm"]["Vj"]).apply(null,arguments)};var dynCall_viiiiiiii=Module["dynCall_viiiiiiii"]=function(){return(dynCall_viiiiiiii=Module["dynCall_viiiiiiii"]=Module["asm"]["Wj"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["Xj"]).apply(null,arguments)};var dynCall_iiiiifiiiii=Module["dynCall_iiiiifiiiii"]=function(){return(dynCall_iiiiifiiiii=Module["dynCall_iiiiifiiiii"]=Module["asm"]["Yj"]).apply(null,arguments)};var dynCall_vidi=Module["dynCall_vidi"]=function(){return(dynCall_vidi=Module["dynCall_vidi"]=Module["asm"]["Zj"]).apply(null,arguments)};var dynCall_viifiiiii=Module["dynCall_viifiiiii"]=function(){return(dynCall_viifiiiii=Module["dynCall_viifiiiii"]=Module["asm"]["_j"]).apply(null,arguments)};var dynCall_iifii=Module["dynCall_iifii"]=function(){return(dynCall_iifii=Module["dynCall_iifii"]=Module["asm"]["$j"]).apply(null,arguments)};var dynCall_vfi=Module["dynCall_vfi"]=function(){return(dynCall_vfi=Module["dynCall_vfi"]=Module["asm"]["ak"]).apply(null,arguments)};var dynCall_viji=Module["dynCall_viji"]=function(){return(dynCall_viji=Module["dynCall_viji"]=Module["asm"]["bk"]).apply(null,arguments)};var dynCall_iiji=Module["dynCall_iiji"]=function(){return(dynCall_iiji=Module["dynCall_iiji"]=Module["asm"]["ck"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["dk"]).apply(null,arguments)};var dynCall_viiiiiiiiiiii=Module["dynCall_viiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiii=Module["dynCall_viiiiiiiiiiii"]=Module["asm"]["ek"]).apply(null,arguments)};var dynCall_jiiji=Module["dynCall_jiiji"]=function(){return(dynCall_jiiji=Module["dynCall_jiiji"]=Module["asm"]["fk"]).apply(null,arguments)};var dynCall_fiifi=Module["dynCall_fiifi"]=function(){return(dynCall_fiifi=Module["dynCall_fiifi"]=Module["asm"]["gk"]).apply(null,arguments)};var dynCall_iiffi=Module["dynCall_iiffi"]=function(){return(dynCall_iiffi=Module["dynCall_iiffi"]=Module["asm"]["hk"]).apply(null,arguments)};var dynCall_iiidii=Module["dynCall_iiidii"]=function(){return(dynCall_iiidii=Module["dynCall_iiidii"]=Module["asm"]["ik"]).apply(null,arguments)};var dynCall_iiiifi=Module["dynCall_iiiifi"]=function(){return(dynCall_iiiifi=Module["dynCall_iiiifi"]=Module["asm"]["jk"]).apply(null,arguments)};var dynCall_fiiiii=Module["dynCall_fiiiii"]=function(){return(dynCall_fiiiii=Module["dynCall_fiiiii"]=Module["asm"]["kk"]).apply(null,arguments)};var dynCall_iiiiiiiiii=Module["dynCall_iiiiiiiiii"]=function(){return(dynCall_iiiiiiiiii=Module["dynCall_iiiiiiiiii"]=Module["asm"]["lk"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["mk"]).apply(null,arguments)};var dynCall_viiiidi=Module["dynCall_viiiidi"]=function(){return(dynCall_viiiidi=Module["dynCall_viiiidi"]=Module["asm"]["nk"]).apply(null,arguments)};var dynCall_iiiiiiidii=Module["dynCall_iiiiiiidii"]=function(){return(dynCall_iiiiiiidii=Module["dynCall_iiiiiiidii"]=Module["asm"]["ok"]).apply(null,arguments)};var dynCall_viiiidij=Module["dynCall_viiiidij"]=function(){return(dynCall_viiiidij=Module["dynCall_viiiidij"]=Module["asm"]["pk"]).apply(null,arguments)};var dynCall_dii=Module["dynCall_dii"]=function(){return(dynCall_dii=Module["dynCall_dii"]=Module["asm"]["qk"]).apply(null,arguments)};var dynCall_ji=Module["dynCall_ji"]=function(){return(dynCall_ji=Module["dynCall_ji"]=Module["asm"]["rk"]).apply(null,arguments)};var dynCall_jjii=Module["dynCall_jjii"]=function(){return(dynCall_jjii=Module["dynCall_jjii"]=Module["asm"]["sk"]).apply(null,arguments)};var dynCall_ifi=Module["dynCall_ifi"]=function(){return(dynCall_ifi=Module["dynCall_ifi"]=Module["asm"]["tk"]).apply(null,arguments)};var dynCall_idi=Module["dynCall_idi"]=function(){return(dynCall_idi=Module["dynCall_idi"]=Module["asm"]["uk"]).apply(null,arguments)};var dynCall_iiiiji=Module["dynCall_iiiiji"]=function(){return(dynCall_iiiiji=Module["dynCall_iiiiji"]=Module["asm"]["vk"]).apply(null,arguments)};var dynCall_ijji=Module["dynCall_ijji"]=function(){return(dynCall_ijji=Module["dynCall_ijji"]=Module["asm"]["wk"]).apply(null,arguments)};var dynCall_jji=Module["dynCall_jji"]=function(){return(dynCall_jji=Module["dynCall_jji"]=Module["asm"]["xk"]).apply(null,arguments)};var dynCall_jjji=Module["dynCall_jjji"]=function(){return(dynCall_jjji=Module["dynCall_jjji"]=Module["asm"]["yk"]).apply(null,arguments)};var dynCall_iidi=Module["dynCall_iidi"]=function(){return(dynCall_iidi=Module["dynCall_iidi"]=Module["asm"]["zk"]).apply(null,arguments)};var dynCall_iifi=Module["dynCall_iifi"]=function(){return(dynCall_iifi=Module["dynCall_iifi"]=Module["asm"]["Ak"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["Bk"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["Ck"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["Dk"]).apply(null,arguments)};var dynCall_viiiifi=Module["dynCall_viiiifi"]=function(){return(dynCall_viiiifi=Module["dynCall_viiiifi"]=Module["asm"]["Ek"]).apply(null,arguments)};var dynCall_di=Module["dynCall_di"]=function(){return(dynCall_di=Module["dynCall_di"]=Module["asm"]["Fk"]).apply(null,arguments)};var dynCall_viif=Module["dynCall_viif"]=function(){return(dynCall_viif=Module["dynCall_viif"]=Module["asm"]["Gk"]).apply(null,arguments)};var dynCall_viidi=Module["dynCall_viidi"]=function(){return(dynCall_viidi=Module["dynCall_viidi"]=Module["asm"]["Hk"]).apply(null,arguments)};var dynCall_jiiiid=Module["dynCall_jiiiid"]=function(){return(dynCall_jiiiid=Module["dynCall_jiiiid"]=Module["asm"]["Ik"]).apply(null,arguments)};var dynCall_viiij=Module["dynCall_viiij"]=function(){return(dynCall_viiij=Module["dynCall_viiij"]=Module["asm"]["Jk"]).apply(null,arguments)};var dynCall_viijiiijiiii=Module["dynCall_viijiiijiiii"]=function(){return(dynCall_viijiiijiiii=Module["dynCall_viijiiijiiii"]=Module["asm"]["Kk"]).apply(null,arguments)};var dynCall_jdi=Module["dynCall_jdi"]=function(){return(dynCall_jdi=Module["dynCall_jdi"]=Module["asm"]["Lk"]).apply(null,arguments)};var dynCall_vijjji=Module["dynCall_vijjji"]=function(){return(dynCall_vijjji=Module["dynCall_vijjji"]=Module["asm"]["Mk"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["Nk"]).apply(null,arguments)};var dynCall_iiijii=Module["dynCall_iiijii"]=function(){return(dynCall_iiijii=Module["dynCall_iiijii"]=Module["asm"]["Ok"]).apply(null,arguments)};var dynCall_iijiiii=Module["dynCall_iijiiii"]=function(){return(dynCall_iijiiii=Module["dynCall_iijiiii"]=Module["asm"]["Pk"]).apply(null,arguments)};var dynCall_jijiii=Module["dynCall_jijiii"]=function(){return(dynCall_jijiii=Module["dynCall_jijiii"]=Module["asm"]["Qk"]).apply(null,arguments)};var dynCall_iijiiiiii=Module["dynCall_iijiiiiii"]=function(){return(dynCall_iijiiiiii=Module["dynCall_iijiiiiii"]=Module["asm"]["Rk"]).apply(null,arguments)};var dynCall_iijjiiiiii=Module["dynCall_iijjiiiiii"]=function(){return(dynCall_iijjiiiiii=Module["dynCall_iijjiiiiii"]=Module["asm"]["Sk"]).apply(null,arguments)};var dynCall_iiiijjii=Module["dynCall_iiiijjii"]=function(){return(dynCall_iiiijjii=Module["dynCall_iiiijjii"]=Module["asm"]["Tk"]).apply(null,arguments)};var dynCall_iijii=Module["dynCall_iijii"]=function(){return(dynCall_iijii=Module["dynCall_iijii"]=Module["asm"]["Uk"]).apply(null,arguments)};var dynCall_vijii=Module["dynCall_vijii"]=function(){return(dynCall_vijii=Module["dynCall_vijii"]=Module["asm"]["Vk"]).apply(null,arguments)};var dynCall_iijiii=Module["dynCall_iijiii"]=function(){return(dynCall_iijiii=Module["dynCall_iijiii"]=Module["asm"]["Wk"]).apply(null,arguments)};var dynCall_jidi=Module["dynCall_jidi"]=function(){return(dynCall_jidi=Module["dynCall_jidi"]=Module["asm"]["Xk"]).apply(null,arguments)};var dynCall_viidii=Module["dynCall_viidii"]=function(){return(dynCall_viidii=Module["dynCall_viidii"]=Module["asm"]["Yk"]).apply(null,arguments)};var dynCall_dji=Module["dynCall_dji"]=function(){return(dynCall_dji=Module["dynCall_dji"]=Module["asm"]["Zk"]).apply(null,arguments)};var dynCall_vidiii=Module["dynCall_vidiii"]=function(){return(dynCall_vidiii=Module["dynCall_vidiii"]=Module["asm"]["_k"]).apply(null,arguments)};var dynCall_viiddi=Module["dynCall_viiddi"]=function(){return(dynCall_viiddi=Module["dynCall_viiddi"]=Module["asm"]["$k"]).apply(null,arguments)};var dynCall_fiifii=Module["dynCall_fiifii"]=function(){return(dynCall_fiifii=Module["dynCall_fiifii"]=Module["asm"]["al"]).apply(null,arguments)};var dynCall_viiiji=Module["dynCall_viiiji"]=function(){return(dynCall_viiiji=Module["dynCall_viiiji"]=Module["asm"]["bl"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiii"]=Module["asm"]["cl"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["dl"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiiii"]=Module["asm"]["el"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiiiii"]=Module["asm"]["fl"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiiiiii"]=Module["asm"]["gl"]).apply(null,arguments)};var dynCall_viidiji=Module["dynCall_viidiji"]=function(){return(dynCall_viidiji=Module["dynCall_viidiji"]=Module["asm"]["hl"]).apply(null,arguments)};var dynCall_viidjii=Module["dynCall_viidjii"]=function(){return(dynCall_viidjii=Module["dynCall_viidjii"]=Module["asm"]["il"]).apply(null,arguments)};var dynCall_viiiijiii=Module["dynCall_viiiijiii"]=function(){return(dynCall_viiiijiii=Module["dynCall_viiiijiii"]=Module["asm"]["jl"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiii"]=Module["asm"]["kl"]).apply(null,arguments)};var dynCall_viiiiiiiiifi=Module["dynCall_viiiiiiiiifi"]=function(){return(dynCall_viiiiiiiiifi=Module["dynCall_viiiiiiiiifi"]=Module["asm"]["ll"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["ml"]).apply(null,arguments)};var dynCall_iiifi=Module["dynCall_iiifi"]=function(){return(dynCall_iiifi=Module["dynCall_iiifi"]=Module["asm"]["nl"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["ol"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiiii"]=Module["asm"]["pl"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiiiii"]=Module["asm"]["ql"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiiiiii"]=Module["asm"]["rl"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiiiiiii"]=Module["asm"]["sl"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiiiiiiii"]=Module["asm"]["tl"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiiiiiiiii"]=Module["asm"]["ul"]).apply(null,arguments)};var dynCall_fifi=Module["dynCall_fifi"]=function(){return(dynCall_fifi=Module["dynCall_fifi"]=Module["asm"]["vl"]).apply(null,arguments)};var dynCall_fiiffi=Module["dynCall_fiiffi"]=function(){return(dynCall_fiiffi=Module["dynCall_fiiffi"]=Module["asm"]["wl"]).apply(null,arguments)};var dynCall_viiififii=Module["dynCall_viiififii"]=function(){return(dynCall_viiififii=Module["dynCall_viiififii"]=Module["asm"]["xl"]).apply(null,arguments)};var dynCall_j=Module["dynCall_j"]=function(){return(dynCall_j=Module["dynCall_j"]=Module["asm"]["yl"]).apply(null,arguments)};var dynCall_jijj=Module["dynCall_jijj"]=function(){return(dynCall_jijj=Module["dynCall_jijj"]=Module["asm"]["zl"]).apply(null,arguments)};var dynCall_iiiiiiiiiji=Module["dynCall_iiiiiiiiiji"]=function(){return(dynCall_iiiiiiiiiji=Module["dynCall_iiiiiiiiiji"]=Module["asm"]["Al"]).apply(null,arguments)};var dynCall_vji=Module["dynCall_vji"]=function(){return(dynCall_vji=Module["dynCall_vji"]=Module["asm"]["Bl"]).apply(null,arguments)};var dynCall_iji=Module["dynCall_iji"]=function(){return(dynCall_iji=Module["dynCall_iji"]=Module["asm"]["Cl"]).apply(null,arguments)};var dynCall_viiff=Module["dynCall_viiff"]=function(){return(dynCall_viiff=Module["dynCall_viiff"]=Module["asm"]["Dl"]).apply(null,arguments)};var dynCall_viifffffi=Module["dynCall_viifffffi"]=function(){return(dynCall_viifffffi=Module["dynCall_viifffffi"]=Module["asm"]["El"]).apply(null,arguments)};var dynCall_viiiiifffiii=Module["dynCall_viiiiifffiii"]=function(){return(dynCall_viiiiifffiii=Module["dynCall_viiiiifffiii"]=Module["asm"]["Fl"]).apply(null,arguments)};var dynCall_viiif=Module["dynCall_viiif"]=function(){return(dynCall_viiif=Module["dynCall_viiif"]=Module["asm"]["Gl"]).apply(null,arguments)};var dynCall_viij=Module["dynCall_viij"]=function(){return(dynCall_viij=Module["dynCall_viij"]=Module["asm"]["Hl"]).apply(null,arguments)};var dynCall_viijiiiiii=Module["dynCall_viijiiiiii"]=function(){return(dynCall_viijiiiiii=Module["dynCall_viijiiiiii"]=Module["asm"]["Il"]).apply(null,arguments)};var dynCall_vijiii=Module["dynCall_vijiii"]=function(){return(dynCall_vijiii=Module["dynCall_vijiii"]=Module["asm"]["Jl"]).apply(null,arguments)};var dynCall_vjjjiiii=Module["dynCall_vjjjiiii"]=function(){return(dynCall_vjjjiiii=Module["dynCall_vjjjiiii"]=Module["asm"]["Kl"]).apply(null,arguments)};var dynCall_vjiiiii=Module["dynCall_vjiiiii"]=function(){return(dynCall_vjiiiii=Module["dynCall_vjiiiii"]=Module["asm"]["Ll"]).apply(null,arguments)};var dynCall_jiiiii=Module["dynCall_jiiiii"]=function(){return(dynCall_jiiiii=Module["dynCall_jiiiii"]=Module["asm"]["Ml"]).apply(null,arguments)};var dynCall_jiiiiiiiiii=Module["dynCall_jiiiiiiiiii"]=function(){return(dynCall_jiiiiiiiiii=Module["dynCall_jiiiiiiiiii"]=Module["asm"]["Nl"]).apply(null,arguments)};var dynCall_fiffffi=Module["dynCall_fiffffi"]=function(){return(dynCall_fiffffi=Module["dynCall_fiffffi"]=Module["asm"]["Ol"]).apply(null,arguments)};var dynCall_iiiffi=Module["dynCall_iiiffi"]=function(){return(dynCall_iiiffi=Module["dynCall_iiiffi"]=Module["asm"]["Pl"]).apply(null,arguments)};var dynCall_iiffii=Module["dynCall_iiffii"]=function(){return(dynCall_iiffii=Module["dynCall_iiffii"]=Module["asm"]["Ql"]).apply(null,arguments)};var dynCall_iiifiii=Module["dynCall_iiifiii"]=function(){return(dynCall_iiifiii=Module["dynCall_iiifiii"]=Module["asm"]["Rl"]).apply(null,arguments)};var dynCall_iiififii=Module["dynCall_iiififii"]=function(){return(dynCall_iiififii=Module["dynCall_iiififii"]=Module["asm"]["Sl"]).apply(null,arguments)};var dynCall_iiifiiiii=Module["dynCall_iiifiiiii"]=function(){return(dynCall_iiifiiiii=Module["dynCall_iiifiiiii"]=Module["asm"]["Tl"]).apply(null,arguments)};var dynCall_iiffifiiii=Module["dynCall_iiffifiiii"]=function(){return(dynCall_iiffifiiii=Module["dynCall_iiffifiiii"]=Module["asm"]["Ul"]).apply(null,arguments)};var dynCall_iifiifiiii=Module["dynCall_iifiifiiii"]=function(){return(dynCall_iifiifiiii=Module["dynCall_iifiifiiii"]=Module["asm"]["Vl"]).apply(null,arguments)};var dynCall_iiiifiii=Module["dynCall_iiiifiii"]=function(){return(dynCall_iiiifiii=Module["dynCall_iiiifiii"]=Module["asm"]["Wl"]).apply(null,arguments)};var dynCall_iiifiiii=Module["dynCall_iiifiiii"]=function(){return(dynCall_iiifiiii=Module["dynCall_iiifiiii"]=Module["asm"]["Xl"]).apply(null,arguments)};var dynCall_iiiffiii=Module["dynCall_iiiffiii"]=function(){return(dynCall_iiiffiii=Module["dynCall_iiiffiii"]=Module["asm"]["Yl"]).apply(null,arguments)};var dynCall_iiiiifii=Module["dynCall_iiiiifii"]=function(){return(dynCall_iiiiifii=Module["dynCall_iiiiifii"]=Module["asm"]["Zl"]).apply(null,arguments)};var dynCall_viifffifii=Module["dynCall_viifffifii"]=function(){return(dynCall_viifffifii=Module["dynCall_viifffifii"]=Module["asm"]["_l"]).apply(null,arguments)};var dynCall_viifffiifii=Module["dynCall_viifffiifii"]=function(){return(dynCall_viifffiifii=Module["dynCall_viifffiifii"]=Module["asm"]["$l"]).apply(null,arguments)};var dynCall_viifffiii=Module["dynCall_viifffiii"]=function(){return(dynCall_viifffiii=Module["dynCall_viifffiii"]=Module["asm"]["am"]).apply(null,arguments)};var dynCall_vijji=Module["dynCall_vijji"]=function(){return(dynCall_vijji=Module["dynCall_vijji"]=Module["asm"]["bm"]).apply(null,arguments)};var dynCall_viijji=Module["dynCall_viijji"]=function(){return(dynCall_viijji=Module["dynCall_viijji"]=Module["asm"]["cm"]).apply(null,arguments)};var dynCall_vjii=Module["dynCall_vjii"]=function(){return(dynCall_vjii=Module["dynCall_vjii"]=Module["asm"]["dm"]).apply(null,arguments)};var dynCall_viiifii=Module["dynCall_viiifii"]=function(){return(dynCall_viiifii=Module["dynCall_viiifii"]=Module["asm"]["em"]).apply(null,arguments)};var dynCall_ffffffffi=Module["dynCall_ffffffffi"]=function(){return(dynCall_ffffffffi=Module["dynCall_ffffffffi"]=Module["asm"]["fm"]).apply(null,arguments)};var dynCall_viiiifiiiifi=Module["dynCall_viiiifiiiifi"]=function(){return(dynCall_viiiifiiiifi=Module["dynCall_viiiifiiiifi"]=Module["asm"]["gm"]).apply(null,arguments)};var dynCall_ddi=Module["dynCall_ddi"]=function(){return(dynCall_ddi=Module["dynCall_ddi"]=Module["asm"]["hm"]).apply(null,arguments)};var dynCall_ffffi=Module["dynCall_ffffi"]=function(){return(dynCall_ffffi=Module["dynCall_ffffi"]=Module["asm"]["im"]).apply(null,arguments)};var dynCall_iiiiiffi=Module["dynCall_iiiiiffi"]=function(){return(dynCall_iiiiiffi=Module["dynCall_iiiiiffi"]=Module["asm"]["jm"]).apply(null,arguments)};var dynCall_viiiiiiifiii=Module["dynCall_viiiiiiifiii"]=function(){return(dynCall_viiiiiiifiii=Module["dynCall_viiiiiiifiii"]=Module["asm"]["km"]).apply(null,arguments)};var dynCall_fiiifii=Module["dynCall_fiiifii"]=function(){return(dynCall_fiiifii=Module["dynCall_fiiifii"]=Module["asm"]["lm"]).apply(null,arguments)};var dynCall_fifii=Module["dynCall_fifii"]=function(){return(dynCall_fifii=Module["dynCall_fifii"]=Module["asm"]["mm"]).apply(null,arguments)};var dynCall_fiffi=Module["dynCall_fiffi"]=function(){return(dynCall_fiffi=Module["dynCall_fiffi"]=Module["asm"]["nm"]).apply(null,arguments)};var dynCall_iiiffii=Module["dynCall_iiiffii"]=function(){return(dynCall_iiiffii=Module["dynCall_iiiffii"]=Module["asm"]["om"]).apply(null,arguments)};var dynCall_fifiii=Module["dynCall_fifiii"]=function(){return(dynCall_fifiii=Module["dynCall_fifiii"]=Module["asm"]["pm"]).apply(null,arguments)};var dynCall_viiiiffii=Module["dynCall_viiiiffii"]=function(){return(dynCall_viiiiffii=Module["dynCall_viiiiffii"]=Module["asm"]["qm"]).apply(null,arguments)};var dynCall_viiiiifffi=Module["dynCall_viiiiifffi"]=function(){return(dynCall_viiiiifffi=Module["dynCall_viiiiifffi"]=Module["asm"]["rm"]).apply(null,arguments)};var dynCall_iiiiifi=Module["dynCall_iiiiifi"]=function(){return(dynCall_iiiiifi=Module["dynCall_iiiiifi"]=Module["asm"]["sm"]).apply(null,arguments)};var dynCall_viiifffi=Module["dynCall_viiifffi"]=function(){return(dynCall_viiifffi=Module["dynCall_viiifffi"]=Module["asm"]["tm"]).apply(null,arguments)};var dynCall_viiiffi=Module["dynCall_viiiffi"]=function(){return(dynCall_viiiffi=Module["dynCall_viiiffi"]=Module["asm"]["um"]).apply(null,arguments)};var dynCall_fifiiiii=Module["dynCall_fifiiiii"]=function(){return(dynCall_fifiiiii=Module["dynCall_fifiiiii"]=Module["asm"]["vm"]).apply(null,arguments)};var dynCall_viifiii=Module["dynCall_viifiii"]=function(){return(dynCall_viifiii=Module["dynCall_viifiii"]=Module["asm"]["wm"]).apply(null,arguments)};var dynCall_vifiiiii=Module["dynCall_vifiiiii"]=function(){return(dynCall_vifiiiii=Module["dynCall_vifiiiii"]=Module["asm"]["xm"]).apply(null,arguments)};var dynCall_viffiifffiii=Module["dynCall_viffiifffiii"]=function(){return(dynCall_viffiifffiii=Module["dynCall_viffiifffiii"]=Module["asm"]["ym"]).apply(null,arguments)};var dynCall_ffffffi=Module["dynCall_ffffffi"]=function(){return(dynCall_ffffffi=Module["dynCall_ffffffi"]=Module["asm"]["zm"]).apply(null,arguments)};var dynCall_viiiiiifi=Module["dynCall_viiiiiifi"]=function(){return(dynCall_viiiiiifi=Module["dynCall_viiiiiifi"]=Module["asm"]["Am"]).apply(null,arguments)};var dynCall_viiiiffi=Module["dynCall_viiiiffi"]=function(){return(dynCall_viiiiffi=Module["dynCall_viiiiffi"]=Module["asm"]["Bm"]).apply(null,arguments)};var dynCall_fiiiiii=Module["dynCall_fiiiiii"]=function(){return(dynCall_fiiiiii=Module["dynCall_fiiiiii"]=Module["asm"]["Cm"]).apply(null,arguments)};var dynCall_fifffi=Module["dynCall_fifffi"]=function(){return(dynCall_fifffi=Module["dynCall_fifffi"]=Module["asm"]["Dm"]).apply(null,arguments)};var dynCall_viffiiiii=Module["dynCall_viffiiiii"]=function(){return(dynCall_viffiiiii=Module["dynCall_viffiiiii"]=Module["asm"]["Em"]).apply(null,arguments)};var dynCall_vifffffi=Module["dynCall_vifffffi"]=function(){return(dynCall_vifffffi=Module["dynCall_vifffffi"]=Module["asm"]["Fm"]).apply(null,arguments)};var dynCall_vifiii=Module["dynCall_vifiii"]=function(){return(dynCall_vifiii=Module["dynCall_vifiii"]=Module["asm"]["Gm"]).apply(null,arguments)};var dynCall_iifiifiii=Module["dynCall_iifiifiii"]=function(){return(dynCall_iifiifiii=Module["dynCall_iifiifiii"]=Module["asm"]["Hm"]).apply(null,arguments)};var dynCall_vifffi=Module["dynCall_vifffi"]=function(){return(dynCall_vifffi=Module["dynCall_vifffi"]=Module["asm"]["Im"]).apply(null,arguments)};var dynCall_iifiiii=Module["dynCall_iifiiii"]=function(){return(dynCall_iifiiii=Module["dynCall_iifiiii"]=Module["asm"]["Jm"]).apply(null,arguments)};var dynCall_vifii=Module["dynCall_vifii"]=function(){return(dynCall_vifii=Module["dynCall_vifii"]=Module["asm"]["Km"]).apply(null,arguments)};var dynCall_viddi=Module["dynCall_viddi"]=function(){return(dynCall_viddi=Module["dynCall_viddi"]=Module["asm"]["Lm"]).apply(null,arguments)};var dynCall_vijjjji=Module["dynCall_vijjjji"]=function(){return(dynCall_vijjjji=Module["dynCall_vijjjji"]=Module["asm"]["Mm"]).apply(null,arguments)};var dynCall_iijjjji=Module["dynCall_iijjjji"]=function(){return(dynCall_iijjjji=Module["dynCall_iijjjji"]=Module["asm"]["Nm"]).apply(null,arguments)};var dynCall_iiidi=Module["dynCall_iiidi"]=function(){return(dynCall_iiidi=Module["dynCall_iiidi"]=Module["asm"]["Om"]).apply(null,arguments)};var dynCall_iijjjjiii=Module["dynCall_iijjjjiii"]=function(){return(dynCall_iijjjjiii=Module["dynCall_iijjjjiii"]=Module["asm"]["Pm"]).apply(null,arguments)};var dynCall_iiiidi=Module["dynCall_iiiidi"]=function(){return(dynCall_iiiidi=Module["dynCall_iiiidi"]=Module["asm"]["Qm"]).apply(null,arguments)};var dynCall_viiidi=Module["dynCall_viiidi"]=function(){return(dynCall_viiidi=Module["dynCall_viiidi"]=Module["asm"]["Rm"]).apply(null,arguments)};var dynCall_iiffffiii=Module["dynCall_iiffffiii"]=function(){return(dynCall_iiffffiii=Module["dynCall_iiffffiii"]=Module["asm"]["Sm"]).apply(null,arguments)};var dynCall_vffi=Module["dynCall_vffi"]=function(){return(dynCall_vffi=Module["dynCall_vffi"]=Module["asm"]["Tm"]).apply(null,arguments)};var dynCall_iiidfi=Module["dynCall_iiidfi"]=function(){return(dynCall_iiidfi=Module["dynCall_iiidfi"]=Module["asm"]["Um"]).apply(null,arguments)};var dynCall_iiijfi=Module["dynCall_iiijfi"]=function(){return(dynCall_iiijfi=Module["dynCall_iiijfi"]=Module["asm"]["Vm"]).apply(null,arguments)};var dynCall_iifffi=Module["dynCall_iifffi"]=function(){return(dynCall_iifffi=Module["dynCall_iifffi"]=Module["asm"]["Wm"]).apply(null,arguments)};var dynCall_iiiififi=Module["dynCall_iiiififi"]=function(){return(dynCall_iiiififi=Module["dynCall_iiiififi"]=Module["asm"]["Xm"]).apply(null,arguments)};var dynCall_iiiffifiiii=Module["dynCall_iiiffifiiii"]=function(){return(dynCall_iiiffifiiii=Module["dynCall_iiiffifiiii"]=Module["asm"]["Ym"]).apply(null,arguments)};var dynCall_iiifiifiii=Module["dynCall_iiifiifiii"]=function(){return(dynCall_iiifiifiii=Module["dynCall_iiifiifiii"]=Module["asm"]["Zm"]).apply(null,arguments)};var dynCall_iiifiifiiiii=Module["dynCall_iiifiifiiiii"]=function(){return(dynCall_iiifiifiiiii=Module["dynCall_iiifiifiiiii"]=Module["asm"]["_m"]).apply(null,arguments)};var dynCall_ifii=Module["dynCall_ifii"]=function(){return(dynCall_ifii=Module["dynCall_ifii"]=Module["asm"]["$m"]).apply(null,arguments)};var dynCall_ifffii=Module["dynCall_ifffii"]=function(){return(dynCall_ifffii=Module["dynCall_ifffii"]=Module["asm"]["an"]).apply(null,arguments)};var dynCall_ffffii=Module["dynCall_ffffii"]=function(){return(dynCall_ffffii=Module["dynCall_ffffii"]=Module["asm"]["bn"]).apply(null,arguments)};var dynCall_ffffifi=Module["dynCall_ffffifi"]=function(){return(dynCall_ffffifi=Module["dynCall_ffffifi"]=Module["asm"]["cn"]).apply(null,arguments)};var dynCall_ffffiffi=Module["dynCall_ffffiffi"]=function(){return(dynCall_ffffiffi=Module["dynCall_ffffiffi"]=Module["asm"]["dn"]).apply(null,arguments)};var dynCall_viiififi=Module["dynCall_viiififi"]=function(){return(dynCall_viiififi=Module["dynCall_viiififi"]=Module["asm"]["en"]).apply(null,arguments)};var dynCall_viiififfi=Module["dynCall_viiififfi"]=function(){return(dynCall_viiififfi=Module["dynCall_viiififfi"]=Module["asm"]["fn"]).apply(null,arguments)};var dynCall_ifiii=Module["dynCall_ifiii"]=function(){return(dynCall_ifiii=Module["dynCall_ifiii"]=Module["asm"]["gn"]).apply(null,arguments)};var dynCall_iifiiiiii=Module["dynCall_iifiiiiii"]=function(){return(dynCall_iifiiiiii=Module["dynCall_iifiiiiii"]=Module["asm"]["hn"]).apply(null,arguments)};var dynCall_iifiiiii=Module["dynCall_iifiiiii"]=function(){return(dynCall_iifiiiii=Module["dynCall_iifiiiii"]=Module["asm"]["jn"]).apply(null,arguments)};var dynCall_iiffiiiii=Module["dynCall_iiffiiiii"]=function(){return(dynCall_iiffiiiii=Module["dynCall_iiffiiiii"]=Module["asm"]["kn"]).apply(null,arguments)};var dynCall_iiffifiii=Module["dynCall_iiffifiii"]=function(){return(dynCall_iiffifiii=Module["dynCall_iiffifiii"]=Module["asm"]["ln"]).apply(null,arguments)};var dynCall_iififi=Module["dynCall_iififi"]=function(){return(dynCall_iififi=Module["dynCall_iififi"]=Module["asm"]["mn"]).apply(null,arguments)};var dynCall_iiififi=Module["dynCall_iiififi"]=function(){return(dynCall_iiififi=Module["dynCall_iiififi"]=Module["asm"]["nn"]).apply(null,arguments)};var dynCall_iifiii=Module["dynCall_iifiii"]=function(){return(dynCall_iifiii=Module["dynCall_iifiii"]=Module["asm"]["on"]).apply(null,arguments)};var dynCall_iiiiifiiii=Module["dynCall_iiiiifiiii"]=function(){return(dynCall_iiiiifiiii=Module["dynCall_iiiiifiiii"]=Module["asm"]["pn"]).apply(null,arguments)};var dynCall_viiiiiifiifiiii=Module["dynCall_viiiiiifiifiiii"]=function(){return(dynCall_viiiiiifiifiiii=Module["dynCall_viiiiiifiifiiii"]=Module["asm"]["qn"]).apply(null,arguments)};var dynCall_viidiii=Module["dynCall_viidiii"]=function(){return(dynCall_viidiii=Module["dynCall_viidiii"]=Module["asm"]["rn"]).apply(null,arguments)};var dynCall_diidi=Module["dynCall_diidi"]=function(){return(dynCall_diidi=Module["dynCall_diidi"]=Module["asm"]["sn"]).apply(null,arguments)};var dynCall_fiifdi=Module["dynCall_fiifdi"]=function(){return(dynCall_fiifdi=Module["dynCall_fiifdi"]=Module["asm"]["tn"]).apply(null,arguments)};var dynCall_viiiiiifddfiiii=Module["dynCall_viiiiiifddfiiii"]=function(){return(dynCall_viiiiiifddfiiii=Module["dynCall_viiiiiifddfiiii"]=Module["asm"]["un"]).apply(null,arguments)};var dynCall_viijiii=Module["dynCall_viijiii"]=function(){return(dynCall_viijiii=Module["dynCall_viijiii"]=Module["asm"]["vn"]).apply(null,arguments)};var dynCall_fiifji=Module["dynCall_fiifji"]=function(){return(dynCall_fiifji=Module["dynCall_fiifji"]=Module["asm"]["wn"]).apply(null,arguments)};var dynCall_viiiiiifjjfiiii=Module["dynCall_viiiiiifjjfiiii"]=function(){return(dynCall_viiiiiifjjfiiii=Module["dynCall_viiiiiifjjfiiii"]=Module["asm"]["xn"]).apply(null,arguments)};var dynCall_viiiifiii=Module["dynCall_viiiifiii"]=function(){return(dynCall_viiiifiii=Module["dynCall_viiiifiii"]=Module["asm"]["yn"]).apply(null,arguments)};var dynCall_viiiiiiffffiiii=Module["dynCall_viiiiiiffffiiii"]=function(){return(dynCall_viiiiiiffffiiii=Module["dynCall_viiiiiiffffiiii"]=Module["asm"]["zn"]).apply(null,arguments)};var dynCall_viifiiii=Module["dynCall_viifiiii"]=function(){return(dynCall_viifiiii=Module["dynCall_viifiiii"]=Module["asm"]["An"]).apply(null,arguments)};var dynCall_iiiiifiii=Module["dynCall_iiiiifiii"]=function(){return(dynCall_iiiiifiii=Module["dynCall_iiiiifiii"]=Module["asm"]["Bn"]).apply(null,arguments)};var dynCall_fffffi=Module["dynCall_fffffi"]=function(){return(dynCall_fffffi=Module["dynCall_fffffi"]=Module["asm"]["Cn"]).apply(null,arguments)};var dynCall_fiiffffi=Module["dynCall_fiiffffi"]=function(){return(dynCall_fiiffffi=Module["dynCall_fiiffffi"]=Module["asm"]["Dn"]).apply(null,arguments)};var dynCall_fffifffi=Module["dynCall_fffifffi"]=function(){return(dynCall_fffifffi=Module["dynCall_fffifffi"]=Module["asm"]["En"]).apply(null,arguments)};var dynCall_fifffffi=Module["dynCall_fifffffi"]=function(){return(dynCall_fifffffi=Module["dynCall_fifffffi"]=Module["asm"]["Fn"]).apply(null,arguments)};var dynCall_ifiiii=Module["dynCall_ifiiii"]=function(){return(dynCall_ifiiii=Module["dynCall_ifiiii"]=Module["asm"]["Gn"]).apply(null,arguments)};var dynCall_idiiiii=Module["dynCall_idiiiii"]=function(){return(dynCall_idiiiii=Module["dynCall_idiiiii"]=Module["asm"]["Hn"]).apply(null,arguments)};var dynCall_idiiii=Module["dynCall_idiiii"]=function(){return(dynCall_idiiii=Module["dynCall_idiiii"]=Module["asm"]["In"]).apply(null,arguments)};var dynCall_idii=Module["dynCall_idii"]=function(){return(dynCall_idii=Module["dynCall_idii"]=Module["asm"]["Jn"]).apply(null,arguments)};var dynCall_vijiiii=Module["dynCall_vijiiii"]=function(){return(dynCall_vijiiii=Module["dynCall_vijiiii"]=Module["asm"]["Kn"]).apply(null,arguments)};var dynCall_iiijiiii=Module["dynCall_iiijiiii"]=function(){return(dynCall_iiijiiii=Module["dynCall_iiijiiii"]=Module["asm"]["Ln"]).apply(null,arguments)};var dynCall_iiiji=Module["dynCall_iiiji"]=function(){return(dynCall_iiiji=Module["dynCall_iiiji"]=Module["asm"]["Mn"]).apply(null,arguments)};var dynCall_vjiiii=Module["dynCall_vjiiii"]=function(){return(dynCall_vjiiii=Module["dynCall_vjiiii"]=Module["asm"]["Nn"]).apply(null,arguments)};var dynCall_iddi=Module["dynCall_iddi"]=function(){return(dynCall_iddi=Module["dynCall_iddi"]=Module["asm"]["On"]).apply(null,arguments)};var dynCall_jijii=Module["dynCall_jijii"]=function(){return(dynCall_jijii=Module["dynCall_jijii"]=Module["asm"]["Pn"]).apply(null,arguments)};var dynCall_iiiiiji=Module["dynCall_iiiiiji"]=function(){return(dynCall_iiiiiji=Module["dynCall_iiiiiji"]=Module["asm"]["Qn"]).apply(null,arguments)};var dynCall_viiijii=Module["dynCall_viiijii"]=function(){return(dynCall_viiijii=Module["dynCall_viiijii"]=Module["asm"]["Rn"]).apply(null,arguments)};var dynCall_ijii=Module["dynCall_ijii"]=function(){return(dynCall_ijii=Module["dynCall_ijii"]=Module["asm"]["Sn"]).apply(null,arguments)};var dynCall_ijjiiii=Module["dynCall_ijjiiii"]=function(){return(dynCall_ijjiiii=Module["dynCall_ijjiiii"]=Module["asm"]["Tn"]).apply(null,arguments)};var dynCall_vdiiiii=Module["dynCall_vdiiiii"]=function(){return(dynCall_vdiiiii=Module["dynCall_vdiiiii"]=Module["asm"]["Un"]).apply(null,arguments)};var dynCall_diiji=Module["dynCall_diiji"]=function(){return(dynCall_diiji=Module["dynCall_diiji"]=Module["asm"]["Vn"]).apply(null,arguments)};var dynCall_vjiiiiiiii=Module["dynCall_vjiiiiiiii"]=function(){return(dynCall_vjiiiiiiii=Module["dynCall_vjiiiiiiii"]=Module["asm"]["Wn"]).apply(null,arguments)};var dynCall_vjiiiiiii=Module["dynCall_vjiiiiiii"]=function(){return(dynCall_vjiiiiiii=Module["dynCall_vjiiiiiii"]=Module["asm"]["Xn"]).apply(null,arguments)};var dynCall_ijiiii=Module["dynCall_ijiiii"]=function(){return(dynCall_ijiiii=Module["dynCall_ijiiii"]=Module["asm"]["Yn"]).apply(null,arguments)};var dynCall_iidii=Module["dynCall_iidii"]=function(){return(dynCall_iidii=Module["dynCall_iidii"]=Module["asm"]["Zn"]).apply(null,arguments)};var dynCall_iidiii=Module["dynCall_iidiii"]=function(){return(dynCall_iidiii=Module["dynCall_iidiii"]=Module["asm"]["_n"]).apply(null,arguments)};var dynCall_diji=Module["dynCall_diji"]=function(){return(dynCall_diji=Module["dynCall_diji"]=Module["asm"]["$n"]).apply(null,arguments)};var dynCall_fidi=Module["dynCall_fidi"]=function(){return(dynCall_fidi=Module["dynCall_fidi"]=Module["asm"]["ao"]).apply(null,arguments)};var dynCall_ijiii=Module["dynCall_ijiii"]=function(){return(dynCall_ijiii=Module["dynCall_ijiii"]=Module["asm"]["bo"]).apply(null,arguments)};var dynCall_iffffi=Module["dynCall_iffffi"]=function(){return(dynCall_iffffi=Module["dynCall_iffffi"]=Module["asm"]["co"]).apply(null,arguments)};var dynCall_vfffi=Module["dynCall_vfffi"]=function(){return(dynCall_vfffi=Module["dynCall_vfffi"]=Module["asm"]["eo"]).apply(null,arguments)};var dynCall_vffffi=Module["dynCall_vffffi"]=function(){return(dynCall_vffffi=Module["dynCall_vffffi"]=Module["asm"]["fo"]).apply(null,arguments)};var dynCall_viiiffii=Module["dynCall_viiiffii"]=function(){return(dynCall_viiiffii=Module["dynCall_viiiffii"]=Module["asm"]["go"]).apply(null,arguments)};var dynCall_viffffffi=Module["dynCall_viffffffi"]=function(){return(dynCall_viffffffi=Module["dynCall_viffffffi"]=Module["asm"]["ho"]).apply(null,arguments)};var dynCall_vffffffii=Module["dynCall_vffffffii"]=function(){return(dynCall_vffffffii=Module["dynCall_vffffffii"]=Module["asm"]["io"]).apply(null,arguments)};var dynCall_vffffii=Module["dynCall_vffffii"]=function(){return(dynCall_vffffii=Module["dynCall_vffffii"]=Module["asm"]["jo"]).apply(null,arguments)};var dynCall_viiiifffi=Module["dynCall_viiiifffi"]=function(){return(dynCall_viiiifffi=Module["dynCall_viiiifffi"]=Module["asm"]["ko"]).apply(null,arguments)};var dynCall_vfiii=Module["dynCall_vfiii"]=function(){return(dynCall_vfiii=Module["dynCall_vfiii"]=Module["asm"]["lo"]).apply(null,arguments)};var dynCall_iffi=Module["dynCall_iffi"]=function(){return(dynCall_iffi=Module["dynCall_iffi"]=Module["asm"]["mo"]).apply(null,arguments)};var dynCall_vfii=Module["dynCall_vfii"]=function(){return(dynCall_vfii=Module["dynCall_vfii"]=Module["asm"]["no"]).apply(null,arguments)};var dynCall_vifffii=Module["dynCall_vifffii"]=function(){return(dynCall_vifffii=Module["dynCall_vifffii"]=Module["asm"]["oo"]).apply(null,arguments)};var dynCall_iiiifiiiii=Module["dynCall_iiiifiiiii"]=function(){return(dynCall_iiiifiiiii=Module["dynCall_iiiifiiiii"]=Module["asm"]["po"]).apply(null,arguments)};var dynCall_iiiifiiii=Module["dynCall_iiiifiiii"]=function(){return(dynCall_iiiifiiii=Module["dynCall_iiiifiiii"]=Module["asm"]["qo"]).apply(null,arguments)};var dynCall_vijjii=Module["dynCall_vijjii"]=function(){return(dynCall_vijjii=Module["dynCall_vijjii"]=Module["asm"]["ro"]).apply(null,arguments)};var dynCall_viiiiiiifi=Module["dynCall_viiiiiiifi"]=function(){return(dynCall_viiiiiiifi=Module["dynCall_viiiiiiifi"]=Module["asm"]["so"]).apply(null,arguments)};var dynCall_iiiiiiifiiii=Module["dynCall_iiiiiiifiiii"]=function(){return(dynCall_iiiiiiifiiii=Module["dynCall_iiiiiiifiiii"]=Module["asm"]["to"]).apply(null,arguments)};var dynCall_viiiiiffii=Module["dynCall_viiiiiffii"]=function(){return(dynCall_viiiiiffii=Module["dynCall_viiiiiffii"]=Module["asm"]["uo"]).apply(null,arguments)};var dynCall_viffffii=Module["dynCall_viffffii"]=function(){return(dynCall_viffffii=Module["dynCall_viffffii"]=Module["asm"]["vo"]).apply(null,arguments)};var dynCall_viiifiii=Module["dynCall_viiifiii"]=function(){return(dynCall_viiifiii=Module["dynCall_viiifiii"]=Module["asm"]["wo"]).apply(null,arguments)};var dynCall_viffiiii=Module["dynCall_viffiiii"]=function(){return(dynCall_viffiiii=Module["dynCall_viffiiii"]=Module["asm"]["xo"]).apply(null,arguments)};var dynCall_viiiiffffiiii=Module["dynCall_viiiiffffiiii"]=function(){return(dynCall_viiiiffffiiii=Module["dynCall_viiiiffffiiii"]=Module["asm"]["yo"]).apply(null,arguments)};var dynCall_iiiiiiffiiiiiiiiiffffiiii=Module["dynCall_iiiiiiffiiiiiiiiiffffiiii"]=function(){return(dynCall_iiiiiiffiiiiiiiiiffffiiii=Module["dynCall_iiiiiiffiiiiiiiiiffffiiii"]=Module["asm"]["zo"]).apply(null,arguments)};var dynCall_iiiiiiffiiiiiiiiiiiiiii=Module["dynCall_iiiiiiffiiiiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiffiiiiiiiiiiiiiii=Module["dynCall_iiiiiiffiiiiiiiiiiiiiii"]=Module["asm"]["Ao"]).apply(null,arguments)};var dynCall_fiiiffi=Module["dynCall_fiiiffi"]=function(){return(dynCall_fiiiffi=Module["dynCall_fiiiffi"]=Module["asm"]["Bo"]).apply(null,arguments)};var dynCall_viffffiii=Module["dynCall_viffffiii"]=function(){return(dynCall_viffffiii=Module["dynCall_viffffiii"]=Module["asm"]["Co"]).apply(null,arguments)};var dynCall_viififii=Module["dynCall_viififii"]=function(){return(dynCall_viififii=Module["dynCall_viififii"]=Module["asm"]["Do"]).apply(null,arguments)};var dynCall_iiiffiiii=Module["dynCall_iiiffiiii"]=function(){return(dynCall_iiiffiiii=Module["dynCall_iiiffiiii"]=Module["asm"]["Eo"]).apply(null,arguments)};var dynCall_iiiiffiiii=Module["dynCall_iiiiffiiii"]=function(){return(dynCall_iiiiffiiii=Module["dynCall_iiiiffiiii"]=Module["asm"]["Fo"]).apply(null,arguments)};var dynCall_viiffffi=Module["dynCall_viiffffi"]=function(){return(dynCall_viiffffi=Module["dynCall_viiffffi"]=Module["asm"]["Go"]).apply(null,arguments)};var dynCall_viffiii=Module["dynCall_viffiii"]=function(){return(dynCall_viffiii=Module["dynCall_viffiii"]=Module["asm"]["Ho"]).apply(null,arguments)};var dynCall_fffffffi=Module["dynCall_fffffffi"]=function(){return(dynCall_fffffffi=Module["dynCall_fffffffi"]=Module["asm"]["Io"]).apply(null,arguments)};var dynCall_viffifi=Module["dynCall_viffifi"]=function(){return(dynCall_viffifi=Module["dynCall_viffifi"]=Module["asm"]["Jo"]).apply(null,arguments)};var dynCall_viiffifi=Module["dynCall_viiffifi"]=function(){return(dynCall_viiffifi=Module["dynCall_viiffifi"]=Module["asm"]["Ko"]).apply(null,arguments)};var dynCall_ifffi=Module["dynCall_ifffi"]=function(){return(dynCall_ifffi=Module["dynCall_ifffi"]=Module["asm"]["Lo"]).apply(null,arguments)};var dynCall_viiififiii=Module["dynCall_viiififiii"]=function(){return(dynCall_viiififiii=Module["dynCall_viiififiii"]=Module["asm"]["Mo"]).apply(null,arguments)};var dynCall_viiffiiiiiiiii=Module["dynCall_viiffiiiiiiiii"]=function(){return(dynCall_viiffiiiiiiiii=Module["dynCall_viiffiiiiiiiii"]=Module["asm"]["No"]).apply(null,arguments)};var dynCall_viiiiiffiii=Module["dynCall_viiiiiffiii"]=function(){return(dynCall_viiiiiffiii=Module["dynCall_viiiiiffiii"]=Module["asm"]["Oo"]).apply(null,arguments)};var dynCall_viiffiii=Module["dynCall_viiffiii"]=function(){return(dynCall_viiffiii=Module["dynCall_viiffiii"]=Module["asm"]["Po"]).apply(null,arguments)};var dynCall_viiffiiiiiii=Module["dynCall_viiffiiiiiii"]=function(){return(dynCall_viiffiiiiiii=Module["dynCall_viiffiiiiiii"]=Module["asm"]["Qo"]).apply(null,arguments)};var dynCall_viiffii=Module["dynCall_viiffii"]=function(){return(dynCall_viiffii=Module["dynCall_viiffii"]=Module["asm"]["Ro"]).apply(null,arguments)};var dynCall_fffffffffi=Module["dynCall_fffffffffi"]=function(){return(dynCall_fffffffffi=Module["dynCall_fffffffffi"]=Module["asm"]["So"]).apply(null,arguments)};var dynCall_vifiiiiii=Module["dynCall_vifiiiiii"]=function(){return(dynCall_vifiiiiii=Module["dynCall_vifiiiiii"]=Module["asm"]["To"]).apply(null,arguments)};var dynCall_viifiiiiiii=Module["dynCall_viifiiiiiii"]=function(){return(dynCall_viifiiiiiii=Module["dynCall_viifiiiiiii"]=Module["asm"]["Uo"]).apply(null,arguments)};var dynCall_viiififfiiiiiii=Module["dynCall_viiififfiiiiiii"]=function(){return(dynCall_viiififfiiiiiii=Module["dynCall_viiififfiiiiiii"]=Module["asm"]["Vo"]).apply(null,arguments)};var dynCall_viiffiifiiiiiii=Module["dynCall_viiffiifiiiiiii"]=function(){return(dynCall_viiffiifiiiiiii=Module["dynCall_viiffiifiiiiiii"]=Module["asm"]["Wo"]).apply(null,arguments)};var dynCall_viifiiiiii=Module["dynCall_viifiiiiii"]=function(){return(dynCall_viifiiiiii=Module["dynCall_viifiiiiii"]=Module["asm"]["Xo"]).apply(null,arguments)};var dynCall_viiifiiiiii=Module["dynCall_viiifiiiiii"]=function(){return(dynCall_viiifiiiiii=Module["dynCall_viiifiiiiii"]=Module["asm"]["Yo"]).apply(null,arguments)};var dynCall_viiiifiiiiii=Module["dynCall_viiiifiiiiii"]=function(){return(dynCall_viiiifiiiiii=Module["dynCall_viiiifiiiiii"]=Module["asm"]["Zo"]).apply(null,arguments)};var dynCall_viififiiiiii=Module["dynCall_viififiiiiii"]=function(){return(dynCall_viififiiiiii=Module["dynCall_viififiiiiii"]=Module["asm"]["_o"]).apply(null,arguments)};var dynCall_viiiffiifiiiiiii=Module["dynCall_viiiffiifiiiiiii"]=function(){return(dynCall_viiiffiifiiiiiii=Module["dynCall_viiiffiifiiiiiii"]=Module["asm"]["$o"]).apply(null,arguments)};var dynCall_viiiiiifiiiiii=Module["dynCall_viiiiiifiiiiii"]=function(){return(dynCall_viiiiiifiiiiii=Module["dynCall_viiiiiifiiiiii"]=Module["asm"]["ap"]).apply(null,arguments)};var dynCall_ffii=Module["dynCall_ffii"]=function(){return(dynCall_ffii=Module["dynCall_ffii"]=Module["asm"]["bp"]).apply(null,arguments)};var dynCall_viffii=Module["dynCall_viffii"]=function(){return(dynCall_viffii=Module["dynCall_viffii"]=Module["asm"]["cp"]).apply(null,arguments)};var dynCall_vififiii=Module["dynCall_vififiii"]=function(){return(dynCall_vififiii=Module["dynCall_vififiii"]=Module["asm"]["dp"]).apply(null,arguments)};var dynCall_viiiiiiiijiiii=Module["dynCall_viiiiiiiijiiii"]=function(){return(dynCall_viiiiiiiijiiii=Module["dynCall_viiiiiiiijiiii"]=Module["asm"]["ep"]).apply(null,arguments)};var dynCall_viiidii=Module["dynCall_viiidii"]=function(){return(dynCall_viiidii=Module["dynCall_viiidii"]=Module["asm"]["fp"]).apply(null,arguments)};var dynCall_ijiiiiiiiii=Module["dynCall_ijiiiiiiiii"]=function(){return(dynCall_ijiiiiiiiii=Module["dynCall_ijiiiiiiiii"]=Module["asm"]["gp"]).apply(null,arguments)};var dynCall_viiijiii=Module["dynCall_viiijiii"]=function(){return(dynCall_viiijiii=Module["dynCall_viiijiii"]=Module["asm"]["hp"]).apply(null,arguments)};var dynCall_ijjiii=Module["dynCall_ijjiii"]=function(){return(dynCall_ijjiii=Module["dynCall_ijjiii"]=Module["asm"]["ip"]).apply(null,arguments)};var dynCall_viiiidii=Module["dynCall_viiiidii"]=function(){return(dynCall_viiiidii=Module["dynCall_viiiidii"]=Module["asm"]["jp"]).apply(null,arguments)};var dynCall_vidiiiii=Module["dynCall_vidiiiii"]=function(){return(dynCall_vidiiiii=Module["dynCall_vidiiiii"]=Module["asm"]["kp"]).apply(null,arguments)};var dynCall_viiidjii=Module["dynCall_viiidjii"]=function(){return(dynCall_viiidjii=Module["dynCall_viiidjii"]=Module["asm"]["lp"]).apply(null,arguments)};var dynCall_viijijji=Module["dynCall_viijijji"]=function(){return(dynCall_viijijji=Module["dynCall_viijijji"]=Module["asm"]["mp"]).apply(null,arguments)};var dynCall_vijijji=Module["dynCall_vijijji"]=function(){return(dynCall_vijijji=Module["dynCall_vijijji"]=Module["asm"]["np"]).apply(null,arguments)};var dynCall_vidii=Module["dynCall_vidii"]=function(){return(dynCall_vidii=Module["dynCall_vidii"]=Module["asm"]["op"]).apply(null,arguments)};var dynCall_vifffffffffi=Module["dynCall_vifffffffffi"]=function(){return(dynCall_vifffffffffi=Module["dynCall_vifffffffffi"]=Module["asm"]["pp"]).apply(null,arguments)};var dynCall_viffffffffffffffffi=Module["dynCall_viffffffffffffffffi"]=function(){return(dynCall_viffffffffffffffffi=Module["dynCall_viffffffffffffffffi"]=Module["asm"]["qp"]).apply(null,arguments)};var dynCall_viifffii=Module["dynCall_viifffii"]=function(){return(dynCall_viifffii=Module["dynCall_viifffii"]=Module["asm"]["rp"]).apply(null,arguments)};var dynCall_viiiffiffiiiiiiiiiiiiiii=Module["dynCall_viiiffiffiiiiiiiiiiiiiii"]=function(){return(dynCall_viiiffiffiiiiiiiiiiiiiii=Module["dynCall_viiiffiffiiiiiiiiiiiiiii"]=Module["asm"]["sp"]).apply(null,arguments)};var dynCall_viiiffiffiiiiiiiiiiiiiiiii=Module["dynCall_viiiffiffiiiiiiiiiiiiiiiii"]=function(){return(dynCall_viiiffiffiiiiiiiiiiiiiiiii=Module["dynCall_viiiffiffiiiiiiiiiiiiiiiii"]=Module["asm"]["tp"]).apply(null,arguments)};var dynCall_viiiiiffiiiii=Module["dynCall_viiiiiffiiiii"]=function(){return(dynCall_viiiiiffiiiii=Module["dynCall_viiiiiffiiiii"]=Module["asm"]["up"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiiiifiiiiii=Module["dynCall_iiiiiiiiiiiiiifiiiiii"]=function(){return(dynCall_iiiiiiiiiiiiiifiiiiii=Module["dynCall_iiiiiiiiiiiiiifiiiiii"]=Module["asm"]["vp"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiiiiiifiiiiii=Module["dynCall_iiiiiiiiiiiiiiiifiiiiii"]=function(){return(dynCall_iiiiiiiiiiiiiiiifiiiiii=Module["dynCall_iiiiiiiiiiiiiiiifiiiiii"]=Module["asm"]["wp"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiiifiiiiii=Module["dynCall_iiiiiiiiiiiiifiiiiii"]=function(){return(dynCall_iiiiiiiiiiiiifiiiiii=Module["dynCall_iiiiiiiiiiiiifiiiiii"]=Module["asm"]["xp"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiiiiifiiiiii=Module["dynCall_iiiiiiiiiiiiiiifiiiiii"]=function(){return(dynCall_iiiiiiiiiiiiiiifiiiiii=Module["dynCall_iiiiiiiiiiiiiiifiiiiii"]=Module["asm"]["yp"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiiiiiiifiiiiii=Module["dynCall_iiiiiiiiiiiiiiiiifiiiiii"]=function(){return(dynCall_iiiiiiiiiiiiiiiiifiiiiii=Module["dynCall_iiiiiiiiiiiiiiiiifiiiiii"]=Module["asm"]["zp"]).apply(null,arguments)};var dynCall_viiiffffi=Module["dynCall_viiiffffi"]=function(){return(dynCall_viiiffffi=Module["dynCall_viiiffffi"]=Module["asm"]["Ap"]).apply(null,arguments)};var dynCall_vifiiii=Module["dynCall_vifiiii"]=function(){return(dynCall_vifiiii=Module["dynCall_vifiiii"]=Module["asm"]["Bp"]).apply(null,arguments)};var dynCall_iiiiiiifi=Module["dynCall_iiiiiiifi"]=function(){return(dynCall_iiiiiiifi=Module["dynCall_iiiiiiifi"]=Module["asm"]["Cp"]).apply(null,arguments)};var dynCall_iiiiiifiii=Module["dynCall_iiiiiifiii"]=function(){return(dynCall_iiiiiifiii=Module["dynCall_iiiiiifiii"]=Module["asm"]["Dp"]).apply(null,arguments)};var dynCall_iiiiiiiifiiiii=Module["dynCall_iiiiiiiifiiiii"]=function(){return(dynCall_iiiiiiiifiiiii=Module["dynCall_iiiiiiiifiiiii"]=Module["asm"]["Ep"]).apply(null,arguments)};var dynCall_vffiii=Module["dynCall_vffiii"]=function(){return(dynCall_vffiii=Module["dynCall_vffiii"]=Module["asm"]["Fp"]).apply(null,arguments)};var dynCall_vififiiii=Module["dynCall_vififiiii"]=function(){return(dynCall_vififiiii=Module["dynCall_vififiiii"]=Module["asm"]["Gp"]).apply(null,arguments)};var dynCall_viiiiiiiifi=Module["dynCall_viiiiiiiifi"]=function(){return(dynCall_viiiiiiiifi=Module["dynCall_viiiiiiiifi"]=Module["asm"]["Hp"]).apply(null,arguments)};var dynCall_iiiiiffii=Module["dynCall_iiiiiffii"]=function(){return(dynCall_iiiiiffii=Module["dynCall_iiiiiffii"]=Module["asm"]["Ip"]).apply(null,arguments)};var dynCall_iiffiiiiiiiiii=Module["dynCall_iiffiiiiiiiiii"]=function(){return(dynCall_iiffiiiiiiiiii=Module["dynCall_iiffiiiiiiiiii"]=Module["asm"]["Jp"]).apply(null,arguments)};var dynCall_viiiiiiiiiiffiii=Module["dynCall_viiiiiiiiiiffiii"]=function(){return(dynCall_viiiiiiiiiiffiii=Module["dynCall_viiiiiiiiiiffiii"]=Module["asm"]["Kp"]).apply(null,arguments)};var dynCall_jiidi=Module["dynCall_jiidi"]=function(){return(dynCall_jiidi=Module["dynCall_jiidi"]=Module["asm"]["Lp"]).apply(null,arguments)};var dynCall_viiidiii=Module["dynCall_viiidiii"]=function(){return(dynCall_viiidiii=Module["dynCall_viiidiii"]=Module["asm"]["Mp"]).apply(null,arguments)};var dynCall_viiiidiji=Module["dynCall_viiiidiji"]=function(){return(dynCall_viiiidiji=Module["dynCall_viiiidiji"]=Module["asm"]["Np"]).apply(null,arguments)};var dynCall_viijiiiii=Module["dynCall_viijiiiii"]=function(){return(dynCall_viijiiiii=Module["dynCall_viijiiiii"]=Module["asm"]["Op"]).apply(null,arguments)};var dynCall_viiffffffi=Module["dynCall_viiffffffi"]=function(){return(dynCall_viiffffffi=Module["dynCall_viiffffffi"]=Module["asm"]["Pp"]).apply(null,arguments)};var dynCall_viifffffffi=Module["dynCall_viifffffffi"]=function(){return(dynCall_viifffffffi=Module["dynCall_viifffffffi"]=Module["asm"]["Qp"]).apply(null,arguments)};var dynCall_viiffffffffi=Module["dynCall_viiffffffffi"]=function(){return(dynCall_viiffffffffi=Module["dynCall_viiffffffffi"]=Module["asm"]["Rp"]).apply(null,arguments)};var dynCall_viiffffffffiii=Module["dynCall_viiffffffffiii"]=function(){return(dynCall_viiffffffffiii=Module["dynCall_viiffffffffiii"]=Module["asm"]["Sp"]).apply(null,arguments)};var dynCall_viiiiffffii=Module["dynCall_viiiiffffii"]=function(){return(dynCall_viiiiffffii=Module["dynCall_viiiiffffii"]=Module["asm"]["Tp"]).apply(null,arguments)};var dynCall_didi=Module["dynCall_didi"]=function(){return(dynCall_didi=Module["dynCall_didi"]=Module["asm"]["Up"]).apply(null,arguments)};var dynCall_ddidi=Module["dynCall_ddidi"]=function(){return(dynCall_ddidi=Module["dynCall_ddidi"]=Module["asm"]["Vp"]).apply(null,arguments)};var dynCall_viddii=Module["dynCall_viddii"]=function(){return(dynCall_viddii=Module["dynCall_viddii"]=Module["asm"]["Wp"]).apply(null,arguments)};var dynCall_iiiddi=Module["dynCall_iiiddi"]=function(){return(dynCall_iiiddi=Module["dynCall_iiiddi"]=Module["asm"]["Xp"]).apply(null,arguments)};var dynCall_viddiiii=Module["dynCall_viddiiii"]=function(){return(dynCall_viddiiii=Module["dynCall_viddiiii"]=Module["asm"]["Yp"]).apply(null,arguments)};var dynCall_vijiiiiiii=Module["dynCall_vijiiiiiii"]=function(){return(dynCall_vijiiiiiii=Module["dynCall_vijiiiiiii"]=Module["asm"]["Zp"]).apply(null,arguments)};var dynCall_vijiiiiiiii=Module["dynCall_vijiiiiiiii"]=function(){return(dynCall_vijiiiiiiii=Module["dynCall_vijiiiiiiii"]=Module["asm"]["_p"]).apply(null,arguments)};var dynCall_jjiiii=Module["dynCall_jjiiii"]=function(){return(dynCall_jjiiii=Module["dynCall_jjiiii"]=Module["asm"]["$p"]).apply(null,arguments)};var dynCall_jjiiiii=Module["dynCall_jjiiiii"]=function(){return(dynCall_jjiiiii=Module["dynCall_jjiiiii"]=Module["asm"]["aq"]).apply(null,arguments)};var dynCall_jijjji=Module["dynCall_jijjji"]=function(){return(dynCall_jijjji=Module["dynCall_jijjji"]=Module["asm"]["bq"]).apply(null,arguments)};var dynCall_jijjjii=Module["dynCall_jijjjii"]=function(){return(dynCall_jijjjii=Module["dynCall_jijjjii"]=Module["asm"]["cq"]).apply(null,arguments)};var dynCall_jjiii=Module["dynCall_jjiii"]=function(){return(dynCall_jjiii=Module["dynCall_jjiii"]=Module["asm"]["dq"]).apply(null,arguments)};var dynCall_ijijiiiii=Module["dynCall_ijijiiiii"]=function(){return(dynCall_ijijiiiii=Module["dynCall_ijijiiiii"]=Module["asm"]["eq"]).apply(null,arguments)};var dynCall_ijjjiii=Module["dynCall_ijjjiii"]=function(){return(dynCall_ijjjiii=Module["dynCall_ijjjiii"]=Module["asm"]["fq"]).apply(null,arguments)};var dynCall_vijjjiijii=Module["dynCall_vijjjiijii"]=function(){return(dynCall_vijjjiijii=Module["dynCall_vijjjiijii"]=Module["asm"]["gq"]).apply(null,arguments)};var dynCall_ijjjiijii=Module["dynCall_ijjjiijii"]=function(){return(dynCall_ijjjiijii=Module["dynCall_ijjjiijii"]=Module["asm"]["hq"]).apply(null,arguments)};var dynCall_vijiiiiii=Module["dynCall_vijiiiiii"]=function(){return(dynCall_vijiiiiii=Module["dynCall_vijiiiiii"]=Module["asm"]["iq"]).apply(null,arguments)};var dynCall_jfi=Module["dynCall_jfi"]=function(){return(dynCall_jfi=Module["dynCall_jfi"]=Module["asm"]["jq"]).apply(null,arguments)};var dynCall_fji=Module["dynCall_fji"]=function(){return(dynCall_fji=Module["dynCall_fji"]=Module["asm"]["kq"]).apply(null,arguments)};var dynCall_fdi=Module["dynCall_fdi"]=function(){return(dynCall_fdi=Module["dynCall_fdi"]=Module["asm"]["lq"]).apply(null,arguments)};var dynCall_dfi=Module["dynCall_dfi"]=function(){return(dynCall_dfi=Module["dynCall_dfi"]=Module["asm"]["mq"]).apply(null,arguments)};var dynCall_jidii=Module["dynCall_jidii"]=function(){return(dynCall_jidii=Module["dynCall_jidii"]=Module["asm"]["nq"]).apply(null,arguments)};var dynCall_viiiiiiiji=Module["dynCall_viiiiiiiji"]=function(){return(dynCall_viiiiiiiji=Module["dynCall_viiiiiiiji"]=Module["asm"]["oq"]).apply(null,arguments)};var dynCall_viiiiiiiiji=Module["dynCall_viiiiiiiiji"]=function(){return(dynCall_viiiiiiiiji=Module["dynCall_viiiiiiiiji"]=Module["asm"]["pq"]).apply(null,arguments)};var dynCall_viiiiiiiiiji=Module["dynCall_viiiiiiiiiji"]=function(){return(dynCall_viiiiiiiiiji=Module["dynCall_viiiiiiiiiji"]=Module["asm"]["qq"]).apply(null,arguments)};var dynCall_ijiijii=Module["dynCall_ijiijii"]=function(){return(dynCall_ijiijii=Module["dynCall_ijiijii"]=Module["asm"]["rq"]).apply(null,arguments)};var dynCall_vjjiiiii=Module["dynCall_vjjiiiii"]=function(){return(dynCall_vjjiiiii=Module["dynCall_vjjiiiii"]=Module["asm"]["sq"]).apply(null,arguments)};var dynCall_vjjii=Module["dynCall_vjjii"]=function(){return(dynCall_vjjii=Module["dynCall_vjjii"]=Module["asm"]["tq"]).apply(null,arguments)};var dynCall_ijiiji=Module["dynCall_ijiiji"]=function(){return(dynCall_ijiiji=Module["dynCall_ijiiji"]=Module["asm"]["uq"]).apply(null,arguments)};var dynCall_ijiiiii=Module["dynCall_ijiiiii"]=function(){return(dynCall_ijiiiii=Module["dynCall_ijiiiii"]=Module["asm"]["vq"]).apply(null,arguments)};var dynCall_ijiiiiji=Module["dynCall_ijiiiiji"]=function(){return(dynCall_ijiiiiji=Module["dynCall_ijiiiiji"]=Module["asm"]["wq"]).apply(null,arguments)};var dynCall_jiiiiii=Module["dynCall_jiiiiii"]=function(){return(dynCall_jiiiiii=Module["dynCall_jiiiiii"]=Module["asm"]["xq"]).apply(null,arguments)};var dynCall_ddiii=Module["dynCall_ddiii"]=function(){return(dynCall_ddiii=Module["dynCall_ddiii"]=Module["asm"]["yq"]).apply(null,arguments)};var dynCall_ddii=Module["dynCall_ddii"]=function(){return(dynCall_ddii=Module["dynCall_ddii"]=Module["asm"]["zq"]).apply(null,arguments)};var dynCall_idiii=Module["dynCall_idiii"]=function(){return(dynCall_idiii=Module["dynCall_idiii"]=Module["asm"]["Aq"]).apply(null,arguments)};var dynCall_ifiiiii=Module["dynCall_ifiiiii"]=function(){return(dynCall_ifiiiii=Module["dynCall_ifiiiii"]=Module["asm"]["Bq"]).apply(null,arguments)};var dynCall_jjjii=Module["dynCall_jjjii"]=function(){return(dynCall_jjjii=Module["dynCall_jjjii"]=Module["asm"]["Cq"]).apply(null,arguments)};var dynCall_vdiii=Module["dynCall_vdiii"]=function(){return(dynCall_vdiii=Module["dynCall_vdiii"]=Module["asm"]["Dq"]).apply(null,arguments)};var dynCall_jdii=Module["dynCall_jdii"]=function(){return(dynCall_jdii=Module["dynCall_jdii"]=Module["asm"]["Eq"]).apply(null,arguments)};var dynCall_iijjji=Module["dynCall_iijjji"]=function(){return(dynCall_iijjji=Module["dynCall_iijjji"]=Module["asm"]["Fq"]).apply(null,arguments)};var dynCall_viijjji=Module["dynCall_viijjji"]=function(){return(dynCall_viijjji=Module["dynCall_viijjji"]=Module["asm"]["Gq"]).apply(null,arguments)};var dynCall_vdii=Module["dynCall_vdii"]=function(){return(dynCall_vdii=Module["dynCall_vdii"]=Module["asm"]["Hq"]).apply(null,arguments)};var dynCall_iiiijii=Module["dynCall_iiiijii"]=function(){return(dynCall_iiiijii=Module["dynCall_iiiijii"]=Module["asm"]["Iq"]).apply(null,arguments)};var dynCall_jijji=Module["dynCall_jijji"]=function(){return(dynCall_jijji=Module["dynCall_jijji"]=Module["asm"]["Jq"]).apply(null,arguments)};var dynCall_diddi=Module["dynCall_diddi"]=function(){return(dynCall_diddi=Module["dynCall_diddi"]=Module["asm"]["Kq"]).apply(null,arguments)};var dynCall_viiiijii=Module["dynCall_viiiijii"]=function(){return(dynCall_viiiijii=Module["dynCall_viiiijii"]=Module["asm"]["Lq"]).apply(null,arguments)};var dynCall_viiijji=Module["dynCall_viiijji"]=function(){return(dynCall_viiijji=Module["dynCall_viiijji"]=Module["asm"]["Mq"]).apply(null,arguments)};var dynCall_iijjii=Module["dynCall_iijjii"]=function(){return(dynCall_iijjii=Module["dynCall_iijjii"]=Module["asm"]["Nq"]).apply(null,arguments)};var dynCall_jjjji=Module["dynCall_jjjji"]=function(){return(dynCall_jjjji=Module["dynCall_jjjji"]=Module["asm"]["Oq"]).apply(null,arguments)};var dynCall_viijijii=Module["dynCall_viijijii"]=function(){return(dynCall_viijijii=Module["dynCall_viijijii"]=Module["asm"]["Pq"]).apply(null,arguments)};var dynCall_viijijiii=Module["dynCall_viijijiii"]=function(){return(dynCall_viijijiii=Module["dynCall_viijijiii"]=Module["asm"]["Qq"]).apply(null,arguments)};var dynCall_vijiji=Module["dynCall_vijiji"]=function(){return(dynCall_vijiji=Module["dynCall_vijiji"]=Module["asm"]["Rq"]).apply(null,arguments)};var dynCall_viijiijiii=Module["dynCall_viijiijiii"]=function(){return(dynCall_viijiijiii=Module["dynCall_viijiijiii"]=Module["asm"]["Sq"]).apply(null,arguments)};var dynCall_viiiijiiii=Module["dynCall_viiiijiiii"]=function(){return(dynCall_viiiijiiii=Module["dynCall_viiiijiiii"]=Module["asm"]["Tq"]).apply(null,arguments)};var dynCall_viijjii=Module["dynCall_viijjii"]=function(){return(dynCall_viijjii=Module["dynCall_viijjii"]=Module["asm"]["Uq"]).apply(null,arguments)};var dynCall_jiiiiiiiii=Module["dynCall_jiiiiiiiii"]=function(){return(dynCall_jiiiiiiiii=Module["dynCall_jiiiiiiiii"]=Module["asm"]["Vq"]).apply(null,arguments)};var dynCall_iiiiijii=Module["dynCall_iiiiijii"]=function(){return(dynCall_iiiiijii=Module["dynCall_iiiiijii"]=Module["asm"]["Wq"]).apply(null,arguments)};var dynCall_iiiiidii=Module["dynCall_iiiiidii"]=function(){return(dynCall_iiiiidii=Module["dynCall_iiiiidii"]=Module["asm"]["Xq"]).apply(null,arguments)};var dynCall_iiiidii=Module["dynCall_iiiidii"]=function(){return(dynCall_iiiidii=Module["dynCall_iiiidii"]=Module["asm"]["Yq"]).apply(null,arguments)};var dynCall_iiidiii=Module["dynCall_iiidiii"]=function(){return(dynCall_iiidiii=Module["dynCall_iiidiii"]=Module["asm"]["Zq"]).apply(null,arguments)};var dynCall_iidfii=Module["dynCall_iidfii"]=function(){return(dynCall_iidfii=Module["dynCall_iidfii"]=Module["asm"]["_q"]).apply(null,arguments)};var dynCall_iidfi=Module["dynCall_iidfi"]=function(){return(dynCall_iidfi=Module["dynCall_iidfi"]=Module["asm"]["$q"]).apply(null,arguments)};var dynCall_iiddfi=Module["dynCall_iiddfi"]=function(){return(dynCall_iiddfi=Module["dynCall_iiddfi"]=Module["asm"]["ar"]).apply(null,arguments)};var dynCall_iijfii=Module["dynCall_iijfii"]=function(){return(dynCall_iijfii=Module["dynCall_iijfii"]=Module["asm"]["br"]).apply(null,arguments)};var dynCall_iijfi=Module["dynCall_iijfi"]=function(){return(dynCall_iijfi=Module["dynCall_iijfi"]=Module["asm"]["cr"]).apply(null,arguments)};var dynCall_iijjfi=Module["dynCall_iijjfi"]=function(){return(dynCall_iijjfi=Module["dynCall_iijjfi"]=Module["asm"]["dr"]).apply(null,arguments)};var dynCall_iiiiffiiiji=Module["dynCall_iiiiffiiiji"]=function(){return(dynCall_iiiiffiiiji=Module["dynCall_iiiiffiiiji"]=Module["asm"]["er"]).apply(null,arguments)};var dynCall_iiidfii=Module["dynCall_iiidfii"]=function(){return(dynCall_iiidfii=Module["dynCall_iiidfii"]=Module["asm"]["fr"]).apply(null,arguments)};var dynCall_iiijfii=Module["dynCall_iiijfii"]=function(){return(dynCall_iiijfii=Module["dynCall_iiijfii"]=Module["asm"]["gr"]).apply(null,arguments)};var dynCall_jiiiiiii=Module["dynCall_jiiiiiii"]=function(){return(dynCall_jiiiiiii=Module["dynCall_jiiiiiii"]=Module["asm"]["hr"]).apply(null,arguments)};var dynCall_fiiiiiii=Module["dynCall_fiiiiiii"]=function(){return(dynCall_fiiiiiii=Module["dynCall_fiiiiiii"]=Module["asm"]["ir"]).apply(null,arguments)};var dynCall_iiiiffiiiii=Module["dynCall_iiiiffiiiii"]=function(){return(dynCall_iiiiffiiiii=Module["dynCall_iiiiffiiiii"]=Module["asm"]["jr"]).apply(null,arguments)};var dynCall_iiiidfii=Module["dynCall_iiiidfii"]=function(){return(dynCall_iiiidfii=Module["dynCall_iiiidfii"]=Module["asm"]["kr"]).apply(null,arguments)};var dynCall_iiiijfii=Module["dynCall_iiiijfii"]=function(){return(dynCall_iiiijfii=Module["dynCall_iiiijfii"]=Module["asm"]["lr"]).apply(null,arguments)};var dynCall_iiiiffii=Module["dynCall_iiiiffii"]=function(){return(dynCall_iiiiffii=Module["dynCall_iiiiffii"]=Module["asm"]["mr"]).apply(null,arguments)};var dynCall_jiiiiji=Module["dynCall_jiiiiji"]=function(){return(dynCall_jiiiiji=Module["dynCall_jiiiiji"]=Module["asm"]["nr"]).apply(null,arguments)};var dynCall_fiiiifi=Module["dynCall_fiiiifi"]=function(){return(dynCall_fiiiifi=Module["dynCall_fiiiifi"]=Module["asm"]["or"]).apply(null,arguments)};var dynCall_didii=Module["dynCall_didii"]=function(){return(dynCall_didii=Module["dynCall_didii"]=Module["asm"]["pr"]).apply(null,arguments)};var dynCall_iiijjii=Module["dynCall_iiijjii"]=function(){return(dynCall_iiijjii=Module["dynCall_iiijjii"]=Module["asm"]["qr"]).apply(null,arguments)};var dynCall_vidiji=Module["dynCall_vidiji"]=function(){return(dynCall_vidiji=Module["dynCall_vidiji"]=Module["asm"]["rr"]).apply(null,arguments)};var dynCall_vidjii=Module["dynCall_vidjii"]=function(){return(dynCall_vidjii=Module["dynCall_vidjii"]=Module["asm"]["sr"]).apply(null,arguments)};var dynCall_iiiijiii=Module["dynCall_iiiijiii"]=function(){return(dynCall_iiiijiii=Module["dynCall_iiiijiii"]=Module["asm"]["tr"]).apply(null,arguments)};var dynCall_iiiij=Module["dynCall_iiiij"]=function(){return(dynCall_iiiij=Module["dynCall_iiiij"]=Module["asm"]["ur"]).apply(null,arguments)};var dynCall_fff=Module["dynCall_fff"]=function(){return(dynCall_fff=Module["dynCall_fff"]=Module["asm"]["vr"]).apply(null,arguments)};var dynCall_ijj=Module["dynCall_ijj"]=function(){return(dynCall_ijj=Module["dynCall_ijj"]=Module["asm"]["wr"]).apply(null,arguments)};var dynCall_vjji=Module["dynCall_vjji"]=function(){return(dynCall_vjji=Module["dynCall_vjji"]=Module["asm"]["xr"]).apply(null,arguments)};var dynCall_ij=Module["dynCall_ij"]=function(){return(dynCall_ij=Module["dynCall_ij"]=Module["asm"]["yr"]).apply(null,arguments)};var dynCall_vif=Module["dynCall_vif"]=function(){return(dynCall_vif=Module["dynCall_vif"]=Module["asm"]["zr"]).apply(null,arguments)};var dynCall_vid=Module["dynCall_vid"]=function(){return(dynCall_vid=Module["dynCall_vid"]=Module["asm"]["Ar"]).apply(null,arguments)};var dynCall_viiiiif=Module["dynCall_viiiiif"]=function(){return(dynCall_viiiiif=Module["dynCall_viiiiif"]=Module["asm"]["Br"]).apply(null,arguments)};var dynCall_viiiif=Module["dynCall_viiiif"]=function(){return(dynCall_viiiif=Module["dynCall_viiiif"]=Module["asm"]["Cr"]).apply(null,arguments)};var dynCall_viiiiiif=Module["dynCall_viiiiiif"]=function(){return(dynCall_viiiiiif=Module["dynCall_viiiiiif"]=Module["asm"]["Dr"]).apply(null,arguments)};var dynCall_iiif=Module["dynCall_iiif"]=function(){return(dynCall_iiif=Module["dynCall_iiif"]=Module["asm"]["Er"]).apply(null,arguments)};var dynCall_fif=Module["dynCall_fif"]=function(){return(dynCall_fif=Module["dynCall_fif"]=Module["asm"]["Fr"]).apply(null,arguments)};var dynCall_iiiiiifff=Module["dynCall_iiiiiifff"]=function(){return(dynCall_iiiiiifff=Module["dynCall_iiiiiifff"]=Module["asm"]["Gr"]).apply(null,arguments)};var dynCall_iiiiiifiif=Module["dynCall_iiiiiifiif"]=function(){return(dynCall_iiiiiifiif=Module["dynCall_iiiiiifiif"]=Module["asm"]["Hr"]).apply(null,arguments)};var dynCall_iiiiiiifiif=Module["dynCall_iiiiiiifiif"]=function(){return(dynCall_iiiiiiifiif=Module["dynCall_iiiiiiifiif"]=Module["asm"]["Ir"]).apply(null,arguments)};var dynCall_fiff=Module["dynCall_fiff"]=function(){return(dynCall_fiff=Module["dynCall_fiff"]=Module["asm"]["Jr"]).apply(null,arguments)};var dynCall_fiiiiiifiifif=Module["dynCall_fiiiiiifiifif"]=function(){return(dynCall_fiiiiiifiifif=Module["dynCall_fiiiiiifiifif"]=Module["asm"]["Kr"]).apply(null,arguments)};var dynCall_fiiiiiifiiiif=Module["dynCall_fiiiiiifiiiif"]=function(){return(dynCall_fiiiiiifiiiif=Module["dynCall_fiiiiiifiiiif"]=Module["asm"]["Lr"]).apply(null,arguments)};var dynCall_iifiiiijii=Module["dynCall_iifiiiijii"]=function(){return(dynCall_iifiiiijii=Module["dynCall_iifiiiijii"]=Module["asm"]["Mr"]).apply(null,arguments)};var dynCall_vifijii=Module["dynCall_vifijii"]=function(){return(dynCall_vifijii=Module["dynCall_vifijii"]=Module["asm"]["Nr"]).apply(null,arguments)};var dynCall_iiiifffiii=Module["dynCall_iiiifffiii"]=function(){return(dynCall_iiiifffiii=Module["dynCall_iiiifffiii"]=Module["asm"]["Or"]).apply(null,arguments)};var dynCall_iiiifffffi=Module["dynCall_iiiifffffi"]=function(){return(dynCall_iiiifffffi=Module["dynCall_iiiifffffi"]=Module["asm"]["Pr"]).apply(null,arguments)};var dynCall_viffiiiif=Module["dynCall_viffiiiif"]=function(){return(dynCall_viffiiiif=Module["dynCall_viffiiiif"]=Module["asm"]["Qr"]).apply(null,arguments)};var dynCall_viffiifffffiii=Module["dynCall_viffiifffffiii"]=function(){return(dynCall_viffiifffffiii=Module["dynCall_viffiifffffiii"]=Module["asm"]["Rr"]).apply(null,arguments)};var dynCall_viffffiifffiiiiif=Module["dynCall_viffffiifffiiiiif"]=function(){return(dynCall_viffffiifffiiiiif=Module["dynCall_viffffiifffiiiiif"]=Module["asm"]["Sr"]).apply(null,arguments)};var dynCall_iiiifffffii=Module["dynCall_iiiifffffii"]=function(){return(dynCall_iiiifffffii=Module["dynCall_iiiifffffii"]=Module["asm"]["Tr"]).apply(null,arguments)};var dynCall_viiiiiiiiiiifii=Module["dynCall_viiiiiiiiiiifii"]=function(){return(dynCall_viiiiiiiiiiifii=Module["dynCall_viiiiiiiiiiifii"]=Module["asm"]["Ur"]).apply(null,arguments)};var dynCall_viff=Module["dynCall_viff"]=function(){return(dynCall_viff=Module["dynCall_viff"]=Module["asm"]["Vr"]).apply(null,arguments)};var dynCall_iiiiifiiiiif=Module["dynCall_iiiiifiiiiif"]=function(){return(dynCall_iiiiifiiiiif=Module["dynCall_iiiiifiiiiif"]=Module["asm"]["Wr"]).apply(null,arguments)};var dynCall_viiifiiiii=Module["dynCall_viiifiiiii"]=function(){return(dynCall_viiifiiiii=Module["dynCall_viiifiiiii"]=Module["asm"]["Xr"]).apply(null,arguments)};var dynCall_viiiifiiiiif=Module["dynCall_viiiifiiiiif"]=function(){return(dynCall_viiiifiiiiif=Module["dynCall_viiiifiiiiif"]=Module["asm"]["Yr"]).apply(null,arguments)};var dynCall_iifff=Module["dynCall_iifff"]=function(){return(dynCall_iifff=Module["dynCall_iifff"]=Module["asm"]["Zr"]).apply(null,arguments)};var dynCall_iif=Module["dynCall_iif"]=function(){return(dynCall_iif=Module["dynCall_iif"]=Module["asm"]["_r"]).apply(null,arguments)};var dynCall_viijijj=Module["dynCall_viijijj"]=function(){return(dynCall_viijijj=Module["dynCall_viijijj"]=Module["asm"]["$r"]).apply(null,arguments)};var dynCall_viijj=Module["dynCall_viijj"]=function(){return(dynCall_viijj=Module["dynCall_viijj"]=Module["asm"]["as"]).apply(null,arguments)};var dynCall_viiiij=Module["dynCall_viiiij"]=function(){return(dynCall_viiiij=Module["dynCall_viiiij"]=Module["asm"]["bs"]).apply(null,arguments)};var dynCall_iiijji=Module["dynCall_iiijji"]=function(){return(dynCall_iiijji=Module["dynCall_iiijji"]=Module["asm"]["cs"]).apply(null,arguments)};var dynCall_ijjiiiii=Module["dynCall_ijjiiiii"]=function(){return(dynCall_ijjiiiii=Module["dynCall_ijjiiiii"]=Module["asm"]["ds"]).apply(null,arguments)};var dynCall_vidd=Module["dynCall_vidd"]=function(){return(dynCall_vidd=Module["dynCall_vidd"]=Module["asm"]["es"]).apply(null,arguments)};var dynCall_iiiiiifffiiifiii=Module["dynCall_iiiiiifffiiifiii"]=function(){return(dynCall_iiiiiifffiiifiii=Module["dynCall_iiiiiifffiiifiii"]=Module["asm"]["fs"]).apply(null,arguments)};var dynCall_viid=Module["dynCall_viid"]=function(){return(dynCall_viid=Module["dynCall_viid"]=Module["asm"]["gs"]).apply(null,arguments)};var dynCall_fiiiif=Module["dynCall_fiiiif"]=function(){return(dynCall_fiiiif=Module["dynCall_fiiiif"]=Module["asm"]["hs"]).apply(null,arguments)};var dynCall_iiiiiff=Module["dynCall_iiiiiff"]=function(){return(dynCall_iiiiiff=Module["dynCall_iiiiiff"]=Module["asm"]["is"]).apply(null,arguments)};var dynCall_viffff=Module["dynCall_viffff"]=function(){return(dynCall_viffff=Module["dynCall_viffff"]=Module["asm"]["js"]).apply(null,arguments)};var dynCall_vifff=Module["dynCall_vifff"]=function(){return(dynCall_vifff=Module["dynCall_vifff"]=Module["asm"]["ks"]).apply(null,arguments)};var dynCall_viifff=Module["dynCall_viifff"]=function(){return(dynCall_viifff=Module["dynCall_viifff"]=Module["asm"]["ls"]).apply(null,arguments)};var dynCall_vij=Module["dynCall_vij"]=function(){return(dynCall_vij=Module["dynCall_vij"]=Module["asm"]["ms"]).apply(null,arguments)};var dynCall_vf=Module["dynCall_vf"]=function(){return(dynCall_vf=Module["dynCall_vf"]=Module["asm"]["ns"]).apply(null,arguments)};var dynCall_vffff=Module["dynCall_vffff"]=function(){return(dynCall_vffff=Module["dynCall_vffff"]=Module["asm"]["os"]).apply(null,arguments)};var dynCall_vff=Module["dynCall_vff"]=function(){return(dynCall_vff=Module["dynCall_vff"]=Module["asm"]["ps"]).apply(null,arguments)};var dynCall_vfff=Module["dynCall_vfff"]=function(){return(dynCall_vfff=Module["dynCall_vfff"]=Module["asm"]["qs"]).apply(null,arguments)};var dynCall_iiff=Module["dynCall_iiff"]=function(){return(dynCall_iiff=Module["dynCall_iiff"]=Module["asm"]["rs"]).apply(null,arguments)};var dynCall_f=Module["dynCall_f"]=function(){return(dynCall_f=Module["dynCall_f"]=Module["asm"]["ss"]).apply(null,arguments)};var dynCall_vffffffi=Module["dynCall_vffffffi"]=function(){return(dynCall_vffffffi=Module["dynCall_vffffffi"]=Module["asm"]["ts"]).apply(null,arguments)};var dynCall_ff=Module["dynCall_ff"]=function(){return(dynCall_ff=Module["dynCall_ff"]=Module["asm"]["us"]).apply(null,arguments)};var dynCall_if=Module["dynCall_if"]=function(){return(dynCall_if=Module["dynCall_if"]=Module["asm"]["vs"]).apply(null,arguments)};var dynCall_iiiiiiifiii=Module["dynCall_iiiiiiifiii"]=function(){return(dynCall_iiiiiiifiii=Module["dynCall_iiiiiiifiii"]=Module["asm"]["ws"]).apply(null,arguments)};var dynCall_iiifiifii=Module["dynCall_iiifiifii"]=function(){return(dynCall_iiifiifii=Module["dynCall_iiifiifii"]=Module["asm"]["xs"]).apply(null,arguments)};var dynCall_fiif=Module["dynCall_fiif"]=function(){return(dynCall_fiif=Module["dynCall_fiif"]=Module["asm"]["ys"]).apply(null,arguments)};var dynCall_iiiiiiffiiiiiiiiiffffiii=Module["dynCall_iiiiiiffiiiiiiiiiffffiii"]=function(){return(dynCall_iiiiiiffiiiiiiiiiffffiii=Module["dynCall_iiiiiiffiiiiiiiiiffffiii"]=Module["asm"]["zs"]).apply(null,arguments)};var dynCall_viififi=Module["dynCall_viififi"]=function(){return(dynCall_viififi=Module["dynCall_viififi"]=Module["asm"]["As"]).apply(null,arguments)};var dynCall_viiiiiiiijiii=Module["dynCall_viiiiiiiijiii"]=function(){return(dynCall_viiiiiiiijiii=Module["dynCall_viiiiiiiijiii"]=Module["asm"]["Bs"]).apply(null,arguments)};var dynCall_d=Module["dynCall_d"]=function(){return(dynCall_d=Module["dynCall_d"]=Module["asm"]["Cs"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viif(index,a1,a2,a3){var sp=stackSave();try{dynCall_viif(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{dynCall_viiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fi(index,a1){var sp=stackSave();try{return dynCall_fi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fii(index,a1,a2){var sp=stackSave();try{return dynCall_fii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viifi(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viifi(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{dynCall_viiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{dynCall_viiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_dii(index,a1,a2){var sp=stackSave();try{return dynCall_dii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diiid(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_diiid(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiiif(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_fiiif(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiifddfiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14){var sp=stackSave();try{dynCall_viiiiiiifddfiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiifiifiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14){var sp=stackSave();try{dynCall_viiiiiiifiifiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiffffiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14){var sp=stackSave();try{dynCall_viiiiiiiffffiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vifi(index,a1,a2,a3){var sp=stackSave();try{dynCall_vifi(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{return dynCall_iiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_diiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_fiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiffi(index,a1,a2,a3,a4,a5){var sp=stackSave();try{dynCall_viiffi(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vidi(index,a1,a2,a3){var sp=stackSave();try{dynCall_vidi(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiidi(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viiiidi(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viffi(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viffi(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiifi(index,a1,a2,a3,a4,a5){var sp=stackSave();try{dynCall_viiifi(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ffi(index,a1,a2){var sp=stackSave();try{return dynCall_ffi(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{dynCall_viiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiifiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiifiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiifi(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiifi(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiffi(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{dynCall_viiiiiffi(index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_dddi(index,a1,a2,a3){var sp=stackSave();try{return dynCall_dddi(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fffi(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fffi(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viifffi(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viifffi(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viffffi(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viffffi(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiifiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{return dynCall_iiiiifiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viifiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{dynCall_viifiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iifii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iifii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vfi(index,a1,a2){var sp=stackSave();try{dynCall_vfi(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viidi(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viidi(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12){var sp=stackSave();try{dynCall_viiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiidii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{return dynCall_iiiiiiidii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{return dynCall_iiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ifi(index,a1,a2){var sp=stackSave();try{return dynCall_ifi(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_idi(index,a1,a2){var sp=stackSave();try{return dynCall_idi(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iidi(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iidi(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iifi(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iifi(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiifi(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viiiifi(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_di(index,a1){var sp=stackSave();try{return dynCall_di(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiifii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiifii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viidii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{dynCall_viidii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vidiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{dynCall_vidiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiddi(index,a1,a2,a3,a4,a5){var sp=stackSave();try{dynCall_viiddi(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiifi(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{dynCall_viiiiiiiiifi(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12){var sp=stackSave();try{return dynCall_iiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiifi(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiifi(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13){var sp=stackSave();try{dynCall_viiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiff(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiff(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viifffffi(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{dynCall_viifffffi(index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fifi(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fifi(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiifffiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{dynCall_viiiiifffiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_fiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiif(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiif(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{return dynCall_iiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiidii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiidii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiifii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiifii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vidd(index,a1,a2,a3){var sp=stackSave();try{dynCall_vidd(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_j(index){var sp=stackSave();try{return dynCall_j(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiij(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiij(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iij(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iij(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiijiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiijiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ji(index,a1){var sp=stackSave();try{return dynCall_ji(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jii(index,a1,a2){var sp=stackSave();try{return dynCall_jii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iji(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iji(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vijii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{dynCall_vijii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiji(index,a1,a2,a3,a4,a5){var sp=stackSave();try{dynCall_viiji(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viji(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viji(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_jiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iijii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iijii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiijjii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{return dynCall_iiiijjii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iijiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iijiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iijjiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iijjiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iijiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{return dynCall_iijiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiji(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_jiiji(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jjji(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_jjji(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijiiijiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13){var sp=stackSave();try{dynCall_viijiiijiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiij(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_jiiij(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiifjjfiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16){var sp=stackSave();try{dynCall_viiiiiiifjjfiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiji(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiji(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiidij(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{dynCall_viiiidij(index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jjii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jjii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ijji(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_ijji(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jji(index,a1,a2,a3){var sp=stackSave();try{return dynCall_jji(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_jiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiij(index,a1,a2,a3,a4,a5){var sp=stackSave();try{dynCall_viiij(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiji(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viiiji(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jdi(index,a1,a2){var sp=stackSave();try{return dynCall_jdi(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vijjji(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{dynCall_vijjji(index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiij(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiij(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jidi(index,a1,a2,a3){var sp=stackSave();try{return dynCall_jidi(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_dji(index,a1,a2,a3){var sp=stackSave();try{return dynCall_dji(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiijiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{dynCall_viiiijiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jijj(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_jijj(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiji(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiji(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vji(index,a1,a2,a3){var sp=stackSave();try{dynCall_vji(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiji(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiji(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iijji(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iijji(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viij(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viij(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vijiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_vijiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vjjjiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_vjjjiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vjiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_vjiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viijiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jijiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_jijiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_jiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{return dynCall_jiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiijii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiijii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["stackTrace"]=stackTrace;Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["stackTrace"]=stackTrace;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"];args=args||[];var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(argv>>2)+argc]=0;try{var ret=entryFunction(argc,argv);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){return}else{var toLog=e;if(e&&typeof e==="object"&&e.stack){toLog=[e,e.stack]}err("exception thrown: "+toLog);quit_(1,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(implicit&&keepRuntimeAlive()&&status===0){return}if(keepRuntimeAlive()){}else{exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}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/crimsonfantasia/Build/Crimson Fantasia [WebGL].loader.js b/crimsonfantasia/Build/Crimson Fantasia [WebGL].loader.js new file mode 100644 index 00000000..6bcb648e --- /dev/null +++ b/crimsonfantasia/Build/Crimson Fantasia [WebGL].loader.js @@ -0,0 +1 @@ +function createUnityInstance(t,r,d){function i(e,t){if(!i.aborted&&r.showBanner)return"error"==t&&(i.aborted=!0),r.showBanner(e,t);switch(t){case"error":console.error(e);break;case"warning":console.warn(e);break;default:console.log(e)}}function n(e){var t=e.reason||e.error,r=t?t.toString():e.message||e.reason||"",n=t&&t.stack?t.stack.toString():"";(r+="\n"+(n=n.startsWith(r)?n.substring(r.length):n).trim())&&c.stackTraceRegExp&&c.stackTraceRegExp.test(r)&&C(r,e.filename||t&&(t.fileName||t.sourceURL)||"",e.lineno||t&&(t.lineNumber||t.line)||0)}function e(e,t,r){var n=e[t];void 0!==n&&n||(console.warn('Config option "'+t+'" is missing or empty. Falling back to default value: "'+r+'". Consider updating your WebGL template to include the missing config option.'),e[t]=r)}d=d||function(){};var o,c={canvas:t,webglContextAttributes:{preserveDrawingBuffer:!1,powerPreference:2},cacheControl:function(e){return e==c.dataUrl?"must-revalidate":"no-store"},streamingAssetsUrl:"StreamingAssets",downloadProgress:{},deinitializers:[],intervals:{},setInterval:function(e,t){e=window.setInterval(e,t);return this.intervals[e]=!0,e},clearInterval:function(e){delete this.intervals[e],window.clearInterval(e)},preRun:[],postRun:[],print:function(e){console.log(e)},printErr:function(e){console.error(e),"string"==typeof e&&-1!=e.indexOf("wasm streaming compile failed")&&(-1!=e.toLowerCase().indexOf("mime")?i('HTTP Response Header "Content-Type" configured incorrectly on the server for file '+c.codeUrl+' , should be "application/wasm". Startup time performance will suffer.',"warning"):i('WebAssembly streaming compilation failed! This can happen for example if "Content-Encoding" HTTP header is incorrectly enabled on the server for file '+c.codeUrl+", but the file is not pre-compressed on disk (or vice versa). Check the Network tab in browser Devtools to debug server header configuration.","warning"))},locateFile:function(e){return"build.wasm"==e?this.codeUrl:e},disabledCanvasEvents:["contextmenu","dragstart"]};for(o in e(r,"companyName","Unity"),e(r,"productName","WebGL Player"),e(r,"productVersion","1.0"),r)c[o]=r[o];c.streamingAssetsUrl=new URL(c.streamingAssetsUrl,document.URL).href;var a=c.disabledCanvasEvents.slice();function s(e){e.preventDefault()}a.forEach(function(e){t.addEventListener(e,s)}),window.addEventListener("error",n),window.addEventListener("unhandledrejection",n),c.deinitializers.push(function(){for(var e in c.disableAccessToMediaDevices(),a.forEach(function(e){t.removeEventListener(e,s)}),window.removeEventListener("error",n),window.removeEventListener("unhandledrejection",n),c.intervals)window.clearInterval(e);c.intervals={}}),c.QuitCleanup=function(){for(var e=0;eIf using custom web server, verify that web server is sending .br files with HTTP Response Header "Content-Encoding: br". Brotli compression may not be supported in Firefox over HTTP connections. '+n+' See https://bugzilla.mozilla.org/show_bug.cgi?id=1670675 for more information.':"Unable to parse "+c.frameworkUrl+'!
If using custom web server, verify that web server is sending .br files with HTTP Response Header "Content-Encoding: br". Brotli compression may not be supported over HTTP connections. Migrate your server to use HTTPS.'),void i(r,"error"))}i("Unable to parse "+c.frameworkUrl+"! The file is corrupt, or compression was misconfigured? (check Content-Encoding HTTP Response Header on web server)","error")}var o=unityFramework;unityFramework=null,s.onload=null,a(o)},s.onerror=function(e){i("Unable to load file "+c.frameworkUrl+"! Check that the file exists on the remote server. (also check browser Console and Devtools Network tab to debug)","error")},document.body.appendChild(s),c.deinitializers.push(function(){document.body.removeChild(s)})}).then(function(e){e(c)});x(r="dataUrl"),e=c.cacheControl(c[r]),t=c.companyName&&c.productName?c.cachedFetch:c.fetchWithProgress,n=c[r],n=/file:\/\//.exec(n)?"same-origin":void 0;var r,e,t,n,o=t(c[r],{method:"GET",companyName:c.companyName,productName:c.productName,control:e,mode:n,onProgress:function(e){x(r,e)}}).then(function(e){return e.parsedBody}).catch(function(e){var t="Failed to download file "+c[r];"file:"==location.protocol?i(t+". Loading web pages via a file:// URL without a web server is not supported by this browser. Please use a local development web server to host Unity content, or use the Unity Build and Run option.","error"):console.error(t)});c.preRun.push(function(){c.addRunDependency("dataUrl"),o.then(function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength),r=0,n="UnityWebData1.0\0";if(!String.fromCharCode.apply(null,e.subarray(r,r+n.length))==n)throw"unknown data format";var o=t.getUint32(r+=n.length,!0);for(r+=4;r + + + + + Crimson Fantasia + + + + + +
+ +
+ +
+
+
+
+
+ +
+ + + diff --git a/demo/advanced.swf b/demo/advanced.swf new file mode 100644 index 00000000..0ddfb7b0 Binary files /dev/null and b/demo/advanced.swf differ diff --git a/demo/cover.svg b/demo/cover.svg new file mode 100644 index 00000000..ef0931de --- /dev/null +++ b/demo/cover.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/demo/index.html b/demo/index.html new file mode 100644 index 00000000..7bcf3233 --- /dev/null +++ b/demo/index.html @@ -0,0 +1,28 @@ + + + + + + + + Advanced Terrain Demo + + + +
+ + + + diff --git a/deps.ts b/deps.ts new file mode 100644 index 00000000..e191aad3 --- /dev/null +++ b/deps.ts @@ -0,0 +1,2 @@ +export { serve } from 'https://deno.land/std/http/server.ts'; +export { join } from 'https://deno.land/std/path/mod.ts'; \ No newline at end of file diff --git a/dune/603794_DuneBuggyDash_NG_secure.swf b/dune/603794_DuneBuggyDash_NG_secure.swf new file mode 100644 index 00000000..8915eb9f Binary files /dev/null and b/dune/603794_DuneBuggyDash_NG_secure.swf differ diff --git a/dune/cover.svg b/dune/cover.svg new file mode 100644 index 00000000..a6cbf860 --- /dev/null +++ b/dune/cover.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/dune/index.html b/dune/index.html new file mode 100644 index 00000000..832248d5 --- /dev/null +++ b/dune/index.html @@ -0,0 +1,28 @@ + + + + + + + + Dune Buggy Dash + + + +
+ + + + diff --git a/eggycar/ b/eggycar/ new file mode 100644 index 00000000..e69de29b diff --git a/eggycar/404.html b/eggycar/404.html new file mode 100644 index 00000000..d60e995f --- /dev/null +++ b/eggycar/404.html @@ -0,0 +1,33 @@ + + + + + + We not find page + + + + +
+

404

+

amar derr page pai nai

+

Amar derr file pai ni ay site ay. Check coro url mistake err zono.

+

Why etta deek ta see?

+

Page generate by firebase comand lin modify it using 404.html file in your project's configured public directory.

+
+ + diff --git a/eggycar/@source.txt b/eggycar/@source.txt new file mode 100644 index 00000000..7d65afcf --- /dev/null +++ b/eggycar/@source.txt @@ -0,0 +1 @@ +https://html5.gamedistribution.com/rvvASMiM/59a98bf799ef499d9d7b9285bccaa196/ \ No newline at end of file diff --git a/eggycar/ahrefs_585f4691b0e399a160cb6e0c016b4fcd7b0c55de8ae4d7dc4c83d5d0761520b3 b/eggycar/ahrefs_585f4691b0e399a160cb6e0c016b4fcd7b0c55de8ae4d7dc4c83d5d0761520b3 new file mode 100644 index 00000000..08c92a65 --- /dev/null +++ b/eggycar/ahrefs_585f4691b0e399a160cb6e0c016b4fcd7b0c55de8ae4d7dc4c83d5d0761520b3 @@ -0,0 +1 @@ +ahrefs-site-verification_585f4691b0e399a160cb6e0c016b4fcd7b0c55de8ae4d7dc4c83d5d0761520b3 \ No newline at end of file diff --git a/eggycar/appmanifest.json b/eggycar/appmanifest.json new file mode 100644 index 00000000..8ae397be --- /dev/null +++ b/eggycar/appmanifest.json @@ -0,0 +1,28 @@ +{ + "name": "Eggy Car", + "short_name": "Eggy Car", + "start_url": "index.html", + "display": "fullscreen", + "orientation": "any", + "icons": [{ + "src": "icon-16.png", + "sizes": "16x16", + "type": "image/png" + }, { + "src": "icon-32.png", + "sizes": "32x32", + "type": "image/png" + }, { + "src": "icon-128.png", + "sizes": "128x128", + "type": "image/png" + }, { + "src": "icon-256.png", + "sizes": "144x144", + "type": "image/png" + }, { + "src": "icon-256.png", + "sizes": "256x256", + "type": "image/png" + }] +} diff --git a/eggycar/changaone_regular.ttf b/eggycar/changaone_regular.ttf new file mode 100644 index 00000000..31af6687 Binary files /dev/null and b/eggycar/changaone_regular.ttf differ diff --git a/eggycar/cover.svg b/eggycar/cover.svg new file mode 100644 index 00000000..b5392a90 --- /dev/null +++ b/eggycar/cover.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/eggycar/data.js b/eggycar/data.js new file mode 100644 index 00000000..fcca554f --- /dev/null +++ b/eggycar/data.js @@ -0,0 +1 @@ +{"project": [null,"loaderlayout",[[0,false,false,false,false,false,false,false,false,false],[1,true,false,false,false,false,false,false,false,false],[2,true,false,false,false,false,false,false,false,false],[3,true,false,false,false,false,false,false,false,false],[4,true,false,false,false,false,false,false,false,false],[5,true,false,false,false,false,false,false,false,false],[6,false,true,true,false,true,true,true,true,true],[7,true,false,false,false,false,false,false,false,false],[8,true,false,false,false,false,false,false,false,false],[9,false,true,true,true,true,true,true,true,false],[10,false,true,true,true,true,true,true,true,true],[11,false,true,true,true,true,true,true,true,false],[12,true,false,false,false,false,false,false,false,false],[13,false,true,true,true,true,true,true,true,true]],[["t0",3,false,[],0,0,null,null,[],false,false,466165392372602,[],null,[]],["t1",12,false,[],0,0,null,null,[],false,false,517596698340237,[],null,[1]],["t2",4,false,[],0,0,null,null,[],false,false,154371745714877,[],null,[]],["t3",9,false,[939242505359876,678048934722792,990849584957206,680912114542905,138851308707390,688209092685894,787263476954717,848333068193907,682272672483769,851819424728570,392347966618527,498921876391339,482364165404074,518136694416169,496055965916613,451409918651197],0,0,null,[["Default",0,false,0,0,false,618043342441650,[["images/car_0-sheet0.png",15299,236,222,209,103,1,0.5023923516273499,0.7281553149223328,[["tyre_0",0.7655502557754517,1.019417524337769],["tyre_1",0.2392344474792481,1.019417524337769],["shaft_0",0.7655502557754517,0.8252426981925964],["shaft_1",0.2392344474792481,0.8252426981925964]],[-0.368421345949173,-0.7281553149223328,-0.3110043406486511,-0.7281553149223328,-0.3110043406486511,-0.4466023147106171,0.2057416439056397,-0.4466023147106171,0.2057416439056397,-0.7281553149223328,0.2631576657295227,-0.7281553149223328,0.2631576657295227,-0.3398053050041199,0.4593296647071838,-0.1990293264389038,0.3361246585845947,-0.1262133121490479,0.1955746412277222,-0.1237863302230835,0.1291866302490234,-0.04611629247665405,0.08821767568588257,0.03883469104766846,0.04485666751861572,0.2014566659927368,-0.09008634090423584,0.1990286707878113,-0.1113933622837067,0.02351367473602295,-0.1552033424377441,-0.08100730180740356,-0.2547853589057922,-0.1347083449363709,-0.3564593493938446,-0.1067953109741211,-0.4055025577545166,0.0142596960067749,-0.4712920486927033,-0.04915028810501099,-0.368421345949173,-0.3398053050041199],0],["images/car_0-sheet0.png",15299,1,181,233,95,1,0.5021459460258484,0.7263157963752747,[["tyre_0",0.7381974458694458,1.073684215545654],["tyre_1",0.2575107216835022,1.073684215545654],["shaft_0",0.7381974458694458,0.8736842274665833],["shaft_1",0.2575107216835022,0.8736842274665833]],[-0.3004289269447327,-0.7263157963752747,-0.2403429448604584,-0.7263157963752747,-0.2403429448604584,-0.4631578028202057,0.2188840508460999,-0.4631578028202057,0.2188840508460999,-0.7263157963752747,0.2789700627326965,-0.7263157963752747,0.2789700627326965,-0.3578948080539703,0.306954026222229,-0.3098238110542297,0.4229210615158081,-0.3091208040714264,0.4595760703086853,-0.1971898078918457,0.3685600757598877,0.0598372220993042,0.3090150356292725,-0.08894979953765869,0.2301560640335083,-0.1193147897720337,0.1594760417938232,-0.060066819190979,0.1099230647087097,0.04067420959472656,0.09338706731796265,0.1690852046012878,-0.09842395782470703,0.1771841645240784,-0.1637219488620758,-0.06412076950073242,-0.2332829535007477,-0.123904824256897,-0.3114059567451477,-0.08286881446838379,-0.3744529485702515,0.03188717365264893,-0.4943119287490845,0.02136319875717163,-0.4940860569477081,-0.1618927717208862,-0.4573794603347778,-0.1662008166313171,-0.433322548866272,-0.3116587996482849,-0.3347799479961395,-0.3104687929153442,-0.3004289269447327,-0.3578948080539703],0],["images/car_0-sheet0.png",15299,1,1,326,84,1,0.5030674934387207,0.726190447807312,[["tyre_0",0.7668711543083191,1.071428537368774],["tyre_1",0.3680981695652008,1.071428537368774],["shaft_0",0.7668711543083191,0.8333333134651184],["shaft_1",0.3680981695652008,0.8333333134651184]],[-0.3506914973258972,-0.726190447807312,-0.3159505128860474,-0.7232142686843872,-0.3159505128860474,-0.3809524476528168,0.09815949201583862,-0.3809524476528168,0.09815949201583862,-0.499999463558197,0.1380364894866943,-0.5000004768371582,0.1380364894866943,-0.4285714626312256,0.2838075160980225,-0.3399214446544647,0.4213395118713379,-0.0617484450340271,0.3926374912261963,0.05675053596496582,0.3631734848022461,-0.03571343421936035,0.3176044821739197,-0.05146247148513794,0.2400025129318237,-0.2483964562416077,0.1662344932556152,-0.2578304409980774,0.09845453500747681,-0.09217542409896851,0.06105250120162964,0.1558025479316711,-0.001804471015930176,0.1503985524177551,-0.02924647927284241,-0.06380742788314819,-0.08872750401496887,-0.2276744544506073,-0.1896204948425293,-0.2367804348468781,-0.2401784956455231,-0.09547644853591919,-0.2784664928913117,0.1321375370025635,-0.3116654753684998,0.1312125325202942,-0.3118894994258881,-0.04530644416809082,-0.4906837940216065,-0.08001744747161865,-0.5023006200790405,-0.1177034378051758,-0.5030674934387207,-0.5531374216079712,-0.4520221054553986,-0.5915754437446594,-0.4255164861679077,-0.7014415264129639,-0.3575934767723084,-0.6295071244239807],0],["images/car_0-sheet0.png",15299,1,87,290,92,1,0.5034482479095459,0.72826087474823,[["tyre_0",0.7931034564971924,1.08695650100708],["tyre_1",0.1724137961864471,1.08695650100708],["shaft_0",0.7931034564971924,0.8695651888847351],["shaft_1",0.1724137961864471,0.8695651888847351]],[-0.4862068593502045,-0.5652178525924683,-0.4448275566101074,-0.5733698606491089,-0.4448275566101074,-0.2608698606491089,0.1172417402267456,-0.2608698606491089,0.1172417402267456,-0.5652178525924683,0.1586207747459412,-0.5652178525924683,0.1586207747459412,-0.72826087474823,0.4724137783050537,-0.72826087474823,0.4741377234458923,-0.2663048803806305,0.4720957279205322,-0.07065290212631226,0.4475067257881165,0.03872913122177124,0.4090157747268677,-0.1625688672065735,0.3013327717781067,-0.3270238637924194,0.1936497688293457,-0.2088698744773865,0.1635527610778809,-0.02142184972763062,0.1162147521972656,0.1198291182518005,-0.07648724317550659,0.1168481111526489,-0.111587256193161,-0.04452687501907349,-0.1743622422218323,-0.1870908737182617,-0.2834272384643555,-0.2000318765640259,-0.3738942444324493,-0.1911398768424988,-0.4272481501102448,-0.04834586381912231,-0.4473479390144348,0.2010871171951294,-0.4862068593502045,0.1956521272659302],0],["images/car_0-sheet0.png",15299,293,87,198,133,1,0.5,0.7293233275413513,[["tyre_0",0.7676767706871033,1.052631616592407],["tyre_1",0.2373737394809723,1.052631616592407],["shaft_0",0.7676767706871033,0.902255654335022],["shaft_1",0.2373737394809723,0.902255654335022]],[-0.4292929172515869,-0.7293233275413513,-0.3636360168457031,-0.7293233275413513,-0.3636360168457031,-0.5187973380088806,0.3585860133171082,-0.5187973380088806,0.3585860133171082,-0.7293233275413513,0.4242420196533203,-0.7293233275413513,0.4242420196533203,-0.4360903203487396,0.4646459817886353,-0.4370303153991699,0.4635159969329834,-0.3379073143005371,0.4132279753684998,-0.3354213237762451,0.4677370190620422,-0.1722203493118286,0.3719930052757263,-0.10958331823349,0.197966992855072,-0.1249543428421021,0.1315789818763733,-0.04728430509567261,0.09061002731323242,0.0376666784286499,0.04346102476119995,0.1589356660842896,-0.04476499557495117,0.1621466875076294,-0.09006199240684509,0.01858669519424439,-0.1528109908103943,-0.08217531442642212,-0.2523930072784424,-0.1358763575553894,-0.3540669977664948,-0.1079633235931397,-0.4712919890880585,0.04316669702529907,-0.4651117920875549,-0.441295325756073,-0.4278976917266846,-0.4387173354625702],0]]]],[],false,false,471903250143268,[],null],["t4",9,false,[758674793871285,931473615217218,407429057905417],0,0,null,[["Default",0,false,0,0,false,911625296707744,[["images/car_0_tyre-sheet1.png",1196,0,0,60,60,1,0.5,0.5,[["Imagepoint 1",0.5,0.5]],[-0.3499999940395355,-0.3499999940395355,0,-0.5,0.3500000238418579,-0.3499999940395355,0.5,0,0.3500000238418579,0.3500000238418579,0,0.5,-0.3499999940395355,0.3500000238418579,-0.5,0],0],["images/car_0_tyre-sheet0.png",1651,0,0,62,62,1,0.5,0.5,[],[-0.29032301902771,-0.29032301902771,0,-0.5,0.29032301902771,-0.29032301902771,0.5,0,0.29032301902771,0.29032301902771,0,0.5,-0.29032301902771,0.29032301902771,-0.5,0],0]]]],[],false,false,942833713890079,[],null],["t5",9,false,[254599962372085,173788934016196,952153190905389],0,0,null,[["Default",0,false,0,0,false,911252239720661,[["images/a_egg-sheet0.png",5602,0,0,100,130,1,0.5099999904632568,0.5076923370361328,[],[-0.3224999904632568,-0.3631143569946289,-0.2092189788818359,-0.4594995379447937,-0.009999990463256836,-0.4956441521644592,0.1774999499320984,-0.4474513530731201,0.2868750095367432,-0.3510653376579285,0.4196879863739014,-0.2004633247852325,0.4743750095367432,-0.01371634006500244,0.4509379863739014,0.2302596569061279,0.3337500095367432,0.371825635433197,0.1540629863739014,0.4651986360549927,-0.04320299625396729,0.4892956614494324,-0.2170310020446777,0.4501396417617798,-0.3771869838237763,0.3658016920089722,-0.4787499904632568,0.2272476553916931,-0.4943749904632568,-0.01371634006500244,-0.4357811808586121,-0.1974513232707977],0]]]],[],false,false,571818538741793,[],null],["t6",9,false,[640929515728473,731547919224874,109213957815732],0,0,null,[["Default",0,false,0,0,false,243396524536528,[["images/a_track-sheet5.png",133012,1,456,1536,452,1,0,1,[["right",1,0],["power_up",0.9674479365348816,0.1526548713445664],["coin_p0",0.4329427182674408,-0.008849557489156723],["coin_p1",0.4778645932674408,-0.06194690242409706],["coin_p2",0.5240885615348816,-0.09292035549879074],["coin_p3",0.5794270634651184,-0.1194690242409706],["coin_p4",0.0846354141831398,0.6703540086746216],["coin_p5",0.6861979365348816,-0.08407079428434372]],[],0],["images/a_track-sheet1.png",251838,1,1269,1536,603,1,0,1,[["right",1,0.2470978498458862],["coin_p0",0.4329427182674408,-0.008291874080896378],["coin_p1",0.4778645932674408,-0.06135986745357513],["coin_p2",0.5240885615348816,-0.09286899119615555],["coin_p3",0.5794270634651184,-0.1194029822945595],["coin_p4",0.63671875,-0.1028192341327667],["coin_p5",0.6861979365348816,-0.08457711338996887],["coin_p6",0.73046875,-0.05804311856627464],["power_up",0.9674479365348816,0.1525704860687256]],[0,-0.7512440085411072,0.303386002779007,-0.7512440085411072,0.3417159914970398,-0.7684490084648132,0.3735350072383881,-0.8005800247192383,0.406576007604599,-0.8615260124206543,0.4394530057907105,-0.9170812964439392,0.4788410067558289,-0.9552239179611206,0.5258790254592896,-0.9842454195022583,0.5734869837760925,-1,0.6226810216903687,-1,0.6655070185661316,-0.9842454195022583,0.7084400057792664,-0.9568822979927063,0.7565810084342957,-0.9063019156455994,0.8203480243682861,-0.8316749930381775,0.8725759983062744,-0.7815089821815491,0.9167569875717163,-0.7572550177574158,0.9362429976463318,-0.7525910139083862,1,-0.7512440085411072,1,0,0,0],0],["images/a_track-sheet3.png",208604,1,1,1536,580,1,0,1,[["right",1,0.2172413766384125],["power_up",0.912109375,0.1275862008333206],["coin_p0",0.255859375,-0.105172410607338],["coin_p1",0.2981770932674408,-0.1258620619773865],["coin_p2",0.3430989682674408,-0.1293103396892548],["coin_p3",0.3860677182674408,-0.1034482792019844],["coin_p4",0.4264322817325592,-0.07068965584039688]],[0,-0.7793099880218506,0.02311190031468868,-0.7775859832763672,0.05631500110030174,-0.7898709774017334,0.09033189713954926,-0.8197200298309326,0.1206870004534721,-0.8691270351409912,0.1679690033197403,-0.9288793206214905,0.2109380066394806,-0.9644396305084229,0.2439779937267304,-0.9849677085876465,0.2792969942092896,-0.9994611740112305,0.3178710043430328,-1,0.3450930118560791,-0.9961207509040833,0.3749389946460724,-0.9862070083618164,0.4023540019989014,-0.971336305141449,0.4234670102596283,-0.954525887966156,0.4460450112819672,-0.9250000715255737,0.483927994966507,-0.8534480333328247,0.5262349843978882,-0.7721980214118958,0.5510510206222534,-0.741055965423584,0.5704960227012634,-0.7288789749145508,0.5854889750480652,-0.727774977684021,0.6025059819221497,-0.7354120016098023,0.6195600032806397,-0.7523770332336426,0.6378530263900757,-0.7811189889907837,0.6622989773750305,-0.8327739834785461,0.6815369725227356,-0.8844289779663086,0.6947389841079712,-0.9259967803955078,0.7087460160255432,-0.9416083097457886,0.7300770282745361,-0.9524784088134766,0.7631940245628357,-0.9553878903388977,0.7910209894180298,-0.9464439749717712,0.8101019859313965,-0.934967577457428,0.8239150047302246,-0.919638991355896,0.8357909917831421,-0.8964099884033203,0.855804979801178,-0.8214570283889771,0.8702849745750427,-0.7900390028953552,0.8859890103340149,-0.7777780294418335,0.9491789937019348,-0.7750959992408752,1,-0.7793099880218506,1,0,0,0],0],["images/a_track-sheet1.png",251838,1,657,1536,610,1,0,1,[["right",1,0.2606557309627533],["power_up",0.9322916865348816,0.1426229476928711],["coin_p0",0.4329427182674408,-0.08360655605792999],["coin_p1",0.4811197817325592,-0.07704918086528778],["coin_p2",0.5240885615348816,-0.03934426233172417],["coin_p3",0.5690104365348816,0.0114754093810916],["coin_p4",0.6061198115348816,0.07704918086528778],["coin_p5",0.6861979365348816,-0.08524589985609055]],[0.1126300022006035,-0.7450820207595825,0.1542969942092896,-0.7733609676361084,0.2029619961977005,-0.8133199810981751,0.2333170026540756,-0.8460040092468262,0.2683509886264801,-0.899232029914856,0.2870079874992371,-0.9360911846160889,0.3039860129356384,-0.9596439003944397,0.3243559896945953,-0.9785925149917603,0.350492000579834,-0.9897060990333557,0.3946470022201538,-0.9969022274017334,0.4178639948368073,-0.9984511137008667,0.4573040008544922,-1,0.4793030023574829,-0.987704873085022,0.5104169845581055,-0.9602459073066711,0.5447589755058289,-0.9180328249931335,0.5871580243110657,-0.8418030142784119,0.6106359958648682,-0.7864750027656555,0.6350709795951843,-0.7465159893035889,0.6603090167045593,-0.7207989692687988,0.6825309991836548,-0.7103999853134155,0.6958469748497009,-0.7093049883842468,0.7120940089225769,-0.7151769995689392,0.7270380258560181,-0.7261719703674316,0.7488330006599426,-0.7468340396881104,0.7859339714050293,-0.7620819807052612,0.8272680044174194,-0.7752820253372192,0.8678169846534729,-0.767969012260437,0.9422199726104736,-0.7467210292816162,1,-0.7393440008163452,1,0,0,0,0,-0.7393440008163452],0],["images/a_track-sheet4.png",281708,1,486,1536,460,1,0,1,[["right",1,0.01739130355417728],["power_up",0.31640625,0.1304347813129425],["coin_p0",0.564453125,0.4000000059604645],["coin_p1",0.5970051884651184,0.332608699798584],["coin_p2",0.626953125,0.258695662021637],["coin_p3",0.6555989384651184,0.176086962223053],["coin_p4",0.6868489384651184,0.1086956486105919],["coin_p5",0.7174479365348816,0.04347826167941093]],[0,-0.9826086759567261,0.04833979904651642,-0.9885869026184082,0.06770829856395721,-0.9967391490936279,0.09488929808139801,-0.988043487071991,0.1321620047092438,-0.9853261113166809,0.1503860056400299,-0.97605299949646,0.1740649938583374,-0.9442424774169922,0.2003480046987534,-0.8917800188064575,0.2173510044813156,-0.8528870344161987,0.2905069887638092,-0.7335599660873413,0.3104430139064789,-0.7101730108261108,0.3456780016422272,-0.6829830408096314,0.3632510006427765,-0.6655570268630981,0.3821209967136383,-0.6366850137710571,0.4176329970359802,-0.5727579593658447,0.456400990486145,-0.5207880139350891,0.4855499863624573,-0.4896399974822998,0.5137969851493835,-0.4708049893379211,0.5384989976882935,-0.4646480083465576,0.5607789754867554,-0.4691789746284485,0.5794060230255127,-0.4855750203132629,0.5942530035972595,-0.5111640095710754,0.6124190092086792,-0.5652619600296021,0.6343280076980591,-0.6242530345916748,0.6671730279922485,-0.7009339928627014,0.7080100178718567,-0.7838400006294251,0.7612149715423584,-0.8732680082321167,0.8041179776191711,-0.9288042783737183,0.8450930118560791,-0.9720109105110169,0.8847860097885132,-0.997826099395752,0.9052839875221252,-0.997826099395752,0.9405980110168457,-0.9869564771652222,1,-0.9826086759567261,1,0,0,0],0],["images/a_track-sheet1.png",251838,1,1,1536,654,1,0,1,[["right",1,0.3088684976100922],["power_up",0.9674479365348816,0.1529051959514618],["coin_p0",0.4348958432674408,-0.03975535184144974],["coin_p1",0.4759114682674408,-0.05198776721954346],["coin_p2",0.515625,-0.06574923545122147],["coin_p3",0.5618489384651184,-0.07798165082931519]],[0.07226569950580597,-0.6934249997138977,0.1166990026831627,-0.6808099746704102,0.1617020070552826,-0.6561540365219116,0.2084549963474274,-0.6671440005302429,0.2322030067443848,-0.6842870116233826,0.2611590027809143,-0.7236000299453735,0.3005169928073883,-0.7976399660110474,0.3439429998397827,-0.8690029978752136,0.3803049921989441,-0.9184466004371643,0.4098789989948273,-0.9462264180183411,0.4667969942092896,-0.9495413303375244,0.5944010019302368,-0.98050457239151,0.6731770038604736,-1,0.7356770038604736,-1,0.7600910067558289,-0.9923547506332398,0.7735999822616577,-0.9839450120925903,0.7919920086860657,-0.9633027911186218,0.808023989200592,-0.9348242282867432,0.8280839920043945,-0.8840789794921875,0.8518880009651184,-0.8371559977531433,0.881184995174408,-0.790136992931366,0.9117019772529602,-0.7485660314559937,0.9409589767456055,-0.7189890146255493,0.9658409953117371,-0.7003769874572754,0.9808859825134277,-0.694130003452301,1,-0.6911320090293884,1,0,0,0,0,-0.6911320090293884],0],["images/a_track-sheet3.png",208604,1,583,1536,515,1,0,1,[["right",1,0.124271847307682],["power_up",0.7760416865348816,-0.1145631074905396],["coin_p0",0.5579426884651184,0.2737863957881928],["coin_p1",0.59375,0.231067955493927],["coin_p2",0.6263020634651184,0.1572815477848053],["coin_p3",0.6536458134651184,0.08349514752626419],["coin_p4",0.6829426884651184,-0.003883495228365064],["coin_p5",0.6861979365348816,-0.08543689548969269]],[0.1363929957151413,-0.8766989707946777,0.1806640028953552,-0.8669899702072144,0.2191160023212433,-0.8486649990081787,0.2525230050086975,-0.8220869898796082,0.2890830039978027,-0.7807639837265015,0.3308509886264801,-0.7253639698028565,0.3769530057907105,-0.6504850387573242,0.392659991979599,-0.6346479654312134,0.4210610091686249,-0.6168689727783203,0.4506840109825134,-0.6060680150985718,0.4877929985523224,-0.6029130220413208,0.5313929915428162,-0.6149269938468933,0.5579109787940979,-0.6277300119400024,0.5867109894752502,-0.6492719650268555,0.6173809766769409,-0.7004250288009644,0.6450859904289246,-0.7590110301971436,0.6736040115356445,-0.8341020345687866,0.7070419788360596,-0.9381675124168396,0.7204239964485169,-0.9596177935600281,0.7445480227470398,-0.9791262149810791,0.7710270285606384,-0.9902306199073792,0.8018999695777893,-0.9959951639175415,0.828948974609375,-0.9995145797729492,0.8388919830322266,-0.9858009815216065,0.8516770005226135,-0.9575849771499634,0.8680419921875,-0.9182038903236389,0.8812050223350525,-0.8972089886665344,0.8941400051116943,-0.8850420117378235,0.9077249765396118,-0.8714200258255005,0.9162650108337402,-0.8711470365524292,0.9244409799575806,-0.8768360018730164,1,-0.8776699900627136,1,0,0,0,0,-0.8776699900627136],0],["images/a_track-sheet4.png",281708,1,1404,1536,453,1,0,1,[["right",1,0],["power_up",0.2434895783662796,-0.04856512323021889],["coin_p0",0.693359375,0.3090507686138153],["coin_p1",0.720703125,0.2295805811882019],["coin_p2",0.7532551884651184,0.1456953585147858],["coin_p3",0.7825520634651184,0.06843267381191254],["coin_p4",0.8157551884651184,0.01545253861695528],["coin_p5",0.6861979365348816,-0.08388520777225494]],[0.0006510419771075249,-0.9977924823760986,0.06054690107703209,-0.9977925419807434,0.1020099967718124,-0.9921358227729797,0.1328019946813583,-0.981477677822113,0.1531780064105988,-0.9647489786148071,0.1726070046424866,-0.9174944758415222,0.1938270032405853,-0.8834850192070007,0.21390800178051,-0.8599610328674316,0.2377019971609116,-0.8444740176200867,0.2707720100879669,-0.843887984752655,0.2904160022735596,-0.8548910021781921,0.307779997587204,-0.8636869788169861,0.3401950001716614,-0.8620139956474304,0.3716199994087219,-0.8484839797019959,0.3978370130062103,-0.8266760110855103,0.4193469882011414,-0.7940980195999146,0.470317006111145,-0.6958470344543457,0.5012919902801514,-0.6301389932632446,0.5604249835014343,-0.5097960233688355,0.5900880098342896,-0.4787529706954956,0.6111760139465332,-0.4667840003967285,0.6372280120849609,-0.4644730091094971,0.6618099808692932,-0.4776660203933716,0.6811019778251648,-0.5010690093040466,0.6993740200996399,-0.538985013961792,0.7197620272636414,-0.6050460338592529,0.7378910183906555,-0.6600140333175659,0.7586240172386169,-0.7149820327758789,0.7748810052871704,-0.7727090120315552,0.7870050072669983,-0.8024140000343323,0.8238670229911804,-0.8586090207099915,0.8578789830207825,-0.9053254127502441,0.903203010559082,-0.9630793929100037,0.9306229948997498,-0.9871690273284912,0.9542639851570129,-0.9972406029701233,0.9993489980697632,-0.9977924823760986,1,0,0,0],0],["images/a_track-sheet5.png",133012,1,1,1536,453,1,0,1,[["right",1,0],["power_up",0.0598958320915699,-0.1545253843069077],["coin_p0",0.455078125,0.3245033025741577],["coin_p1",0.4876302182674408,0.2671081721782684],["coin_p2",0.521484375,0.2141280323266983],["coin_p3",0.5520833134651184,0.1589404046535492],["coin_p4",0.5846354365348816,0.1081677675247192],["coin_p5",0.6184895634651184,0.07064017653465271]],[0.0006510419771075249,-0.9977924823760986,0.06144209951162338,-1,0.09147139638662338,-0.990618109703064,0.1222739964723587,-0.9670253992080689,0.1547040045261383,-0.9230132102966309,0.1834719926118851,-0.8679640293121338,0.2159730046987534,-0.7809399962425232,0.2815139889717102,-0.5907149910926819,0.3050130009651184,-0.5209710001945496,0.3232829868793488,-0.4890999794006348,0.3438310027122498,-0.4671630263328552,0.3738609850406647,-0.4586089849472046,0.3979899883270264,-0.4664729833602905,0.4191890060901642,-0.4826160073280335,0.4375199973583221,-0.5028280019760132,0.4581300020217896,-0.5429080128669739,0.4824019968509674,-0.5956820249557495,0.5058599710464478,-0.6412799954414368,0.5718590021133423,-0.7546910047531128,0.6152750253677368,-0.8191230297088623,0.6526690125465393,-0.8592720031738281,0.6754559874534607,-0.8744480013847351,0.6949869990348816,-0.8796910047531128,0.7049869894981384,-0.8778629899024963,0.7424920201301575,-0.8600299954414368,0.7828369736671448,-0.8563740253448486,0.8024290204048157,-0.8712059855461121,0.8210449814796448,-0.9092162847518921,0.8366900086402893,-0.9469509124755859,0.8533120155334473,-0.9725440740585327,0.8715819716453552,-0.9845473766326904,0.8946120142936707,-0.99227374792099,0.950357973575592,-1,0.9993489980697632,-0.9977924823760986,1,0,0,0],0],["images/a_track-sheet0.png",210395,1,929,1536,665,1,0,1,[["right",1,0.3187969923019409],["power_up",0.2552083432674408,0.1503759324550629],["coin_p0",0.52734375,0.03157894685864449],["coin_p1",0.56640625,-0.01052631624042988],["coin_p2",0.6041666865348816,-0.04661654308438301],["coin_p3",0.640625,-0.0736842080950737],["coin_p4",0.6829426884651184,-0.07669173181056976],["coin_p5",0.7272135615348816,-0.06165413558483124]],[0.04101559892296791,-0.6796990036964417,0.09969069808721542,-0.7214289903640747,0.145345002412796,-0.7466169595718384,0.1874189972877502,-0.7484959959983826,0.2307939976453781,-0.726315975189209,0.2636309862136841,-0.7240599989891052,0.2893069982528687,-0.7421050071716309,0.3195390105247498,-0.7785719633102417,0.3523760139942169,-0.7992479801177979,0.3915610015392304,-0.8114659786224365,0.4220579862594605,-0.8130639791488648,0.4603680074214935,-0.8056390285491943,0.4831140041351318,-0.8065789937973023,0.504252016544342,-0.825469970703125,0.5333759784698486,-0.8672460317611694,0.5784509778022766,-0.9421052932739258,0.6075040102005005,-0.9674811959266663,0.6461179852485657,-0.995958685874939,0.6729130148887634,-1,0.6950989961624146,-0.9949248433113098,0.7198650240898132,-0.9826127886772156,0.755033016204834,-0.9546523094177246,0.783519983291626,-0.9207823872566223,0.836745023727417,-0.8395439982414246,0.872232973575592,-0.768796980381012,0.9003909826278687,-0.7142859697341919,0.9178869724273682,-0.6909779906272888,0.9399409890174866,-0.6796990036964417,1,-0.6781949996948242,1,0,0,0,0,-0.6781960129737854],0],["images/a_track-sheet2.png",266220,1,1181,1536,585,1,0,1,[["right",1,0.2256410270929337],["power_up",0.212890625,-0.1111111119389534],["coin_p0",0.3020833432674408,-0.02393162436783314],["coin_p1",0.333984375,0.02051282115280628],["coin_p2",0.3658854067325592,0.06837607175111771],["coin_p3",0.39453125,0.121367521584034],["coin_p4",0.4283854067325592,0.1726495772600174]],[0.09505210071802139,-0.7777780294418335,0.1214189976453781,-0.8217949867248535,0.1554359942674637,-0.9711537957191467,0.1893720030784607,-1,0.2502849996089935,-0.9927350282669067,0.3884890079498291,-0.768589973449707,0.4752599895000458,-0.6418800354003906,0.5397130250930786,-0.5841879844665527,0.5846350193023682,-0.5846149921417236,0.6233720183372498,-0.6324790120124817,0.6625980138778687,-0.698291003704071,0.6988120079040527,-0.7217949628829956,0.8834630250930786,-0.7692310214042664,1,-0.7794870138168335,1,0,0,0,0,-0.7658119797706604],0],["images/a_track-sheet4.png",281708,1,1,1536,483,1,0,1,[["right",1,0.06418219208717346],["power_up",0.7747395634651184,0.1759834438562393],["coin_p0",0.439453125,0.02484472095966339],["coin_p1",0.474609375,-0.02898550778627396],["coin_p2",0.51171875,-0.07246376574039459],["coin_p3",0.5579426884651184,-0.1035196706652641],["coin_p4",0.6015625,-0.1200828179717064],["coin_p5",0.6861979365348816,-0.08488612622022629]],[0,-0.9358177781105042,0.05989589914679527,-0.9315475821495056,0.1290690004825592,-0.9164078831672669,0.1488039940595627,-0.9003300070762634,0.1729329973459244,-0.8749350309371948,0.1971029937267304,-0.843297004699707,0.229654997587204,-0.7857140302658081,0.2644859850406647,-0.718878984451294,0.2949219942092896,-0.6867240071296692,0.3216150104999542,-0.6794120073318481,0.3468419909477234,-0.6861090064048767,0.3761389851570129,-0.7101609706878662,0.4125980138778687,-0.7637159824371338,0.4434410035610199,-0.8286100029945374,0.4678960144519806,-0.8934069871902466,0.5,-0.9318063855171204,0.5327960252761841,-0.967714786529541,0.5469970107078552,-0.9812694191932678,0.5734050273895264,-0.9984471797943115,0.5933629870414734,-0.9984471797943115,0.6055960059165955,-0.9964738488197327,0.6185479760169983,-0.9846175909042358,0.6268140077590942,-0.971960723400116,0.6757709980010986,-0.8314570188522339,0.6956400275230408,-0.7753459811210632,0.7132319808006287,-0.7451150417327881,0.7356240153312683,-0.7143670320510864,0.7624109983444214,-0.6919000148773193,0.7755990028381348,-0.6892310380935669,0.7918810248374939,-0.6907030344009399,0.8050690293312073,-0.7025269865989685,0.8167089819908142,-0.7218959927558899,0.8346959948539734,-0.769216001033783,0.8560389876365662,-0.8190990090370178,0.8843989968299866,-0.8671070337295532,0.9098820090293884,-0.8972240090370178,0.9374799728393555,-0.9185429811477661,0.9594619870185852,-0.9297683835029602,1,-0.9358177781105042,1,0,0,0],0],["images/a_track-sheet4.png",281708,1,948,1536,454,1,0,1,[["right",1,0],["power_up",0.2024739533662796,0.147577092051506],["coin_p0",0.5208333134651184,-0.00440528616309166],["coin_p1",0.5559895634651184,0.07268722355365753],["coin_p2",0.6002604365348816,0.1167400851845741],["coin_p3",0.6458333134651184,0.1343612372875214],["coin_p4",0.6868489384651184,0.1255506575107575],["coin_p5",0.6861979365348816,-0.08370044082403183]],[0.001302079996094108,-0.9955947399139404,0.02115890011191368,-0.9933921098709106,0.04671230167150497,-0.9829983711242676,0.06563320010900497,-0.9638801217079163,0.08683270215988159,-0.9315459728240967,0.1134029999375343,-0.8650709986686707,0.146809995174408,-0.757847011089325,0.1723629981279373,-0.7083560228347778,0.1906740069389343,-0.6924220323562622,0.2170819938182831,-0.6987709999084473,0.2410279959440231,-0.7206690311431885,0.2738339900970459,-0.7822780013084412,0.3004559874534607,-0.8549010157585144,0.3717449903488159,-0.982929527759552,0.390951007604599,-1,0.4231770038604736,-0.9994493722915649,0.4659830033779144,-0.9936674237251282,0.4784339964389801,-0.9668226838111877,0.4955649971961975,-0.9079707860946655,0.5131840109825134,-0.8557270169258118,0.5362039804458618,-0.8209660053253174,0.5733850002288818,-0.7862060070037842,0.6018220186233521,-0.7674490213394165,0.6320499777793884,-0.7541990280151367,0.6655960083007813,-0.7449580430984497,0.6883999705314636,-0.7511360049247742,0.7106260061264038,-0.7718459963798523,0.7271549701690674,-0.7975119948387146,0.7417309880256653,-0.8289600014686585,0.7532140016555786,-0.8620589971542358,0.7724909782409668,-0.8936539888381958,0.7955120205879211,-0.9241464138031006,0.8269140124320984,-0.9546393156051636,0.8618980050086975,-0.9719163179397583,0.9036049842834473,-0.9815528988838196,0.9593709707260132,-0.9918777346611023,0.9986979961395264,-0.9955947399139404,1,0,0,0],0],["images/a_track-sheet3.png",208604,1,583,1536,515,1,0,1,[["right",1,0.1184466034173966],["power_up",0.2415364533662796,0.04660193994641304],["coin_p0",0.541015625,0.269902914762497],["coin_p1",0.583984375,0.2407767027616501],["coin_p2",0.619140625,0.1553398072719574],["coin_p3",0.650390625,0.07184465974569321],["coin_p4",0.6796875,-0.009708737954497337],["coin_p5",0.6861979365348816,-0.08543689548969269]],[0,-0.8776699900627136,0.1053870022296906,-0.8774269819259644,0.1545410007238388,-0.873058021068573,0.2049970030784607,-0.8553400039672852,0.2375690042972565,-0.8356789946556091,0.2909750044345856,-0.7800970077514648,0.3329870104789734,-0.7201449871063232,0.3795570135116577,-0.6485440135002136,0.4049479961395264,-0.6259709596633911,0.4550780057907105,-0.6049759984016419,0.5040689706802368,-0.6058250069618225,0.5408530235290527,-0.6186890006065369,0.5826820135116577,-0.645630955696106,0.6105960011482239,-0.6881070137023926,0.6450200080871582,-0.7592229843139648,0.6757000088691711,-0.8398060202598572,0.7063800096511841,-0.9378640055656433,0.7216799855232239,-0.9604368805885315,0.7431640028953552,-0.9775484800338745,0.7672529816627502,-0.9878640174865723,0.7957350015640259,-0.9953883290290833,0.8269039988517761,-1,0.8351650238037109,-0.9936892986297607,0.8715819716453552,-0.9101940989494324,0.8911129832267761,-0.8847090005874634,0.9117839932441711,-0.8713589906692505,0.9324949979782105,-0.8773059844970703,0.9647619724273682,-0.8764560222625732,1,-0.8776699900627136,1,0,0,0],0],["images/a_track-sheet2.png",266220,1,1,1536,588,1,0,1,[["right",1,0.2278911620378494],["power_up",0.818359375,0.005102040711790323],["coin_p0",0.4342447817325592,-0.06122449040412903],["coin_p1",0.4765625,-0.03401360660791397],["coin_p2",0.5149739384651184,-0.001700680237263441],["coin_p3",0.5572916865348816,0.03401360660791397]],[0.1985680013895035,-0.7653059959411621,0.2216800004243851,-0.7627550363540649,0.2418619990348816,-0.7739689946174622,0.2592769861221314,-0.7972999811172485,0.2758179903030396,-0.8308219909667969,0.2897540032863617,-0.8717849850654602,0.3026530146598816,-0.9069408774375916,0.3133539855480194,-0.9287043213844299,0.3325090110301971,-0.9539155960083008,0.3466190099716187,-0.9821029901504517,0.3579100072383881,-0.992559552192688,0.3754880130290985,-1,0.3925170004367828,-0.9991496801376343,0.4137780070304871,-0.9902210831642151,0.4356279969215393,-0.9766156077384949,0.5,-0.9268707036972046,0.5285639762878418,-0.9030612111091614,0.5658969879150391,-0.8585249781608582,0.5933020114898682,-0.8161140084266663,0.6006060242652893,-0.8043149709701538,0.6172789931297302,-0.7635520100593567,0.6336259841918945,-0.7359690070152283,0.6534019708633423,-0.7185369729995728,0.6694539785385132,-0.7132229804992676,0.6897379755973816,-0.7206630110740662,0.7067570090293884,-0.7390519976615906,0.7200319766998291,-0.7625429630279541,0.7330729961395264,-0.7903909683227539,0.7445470094680786,-0.8274340033531189,0.7516679763793945,-0.8531830310821533,0.7602739930152893,-0.8728610277175903,0.7701820135116577,-0.8908380270004273,0.7870690226554871,-0.9018123149871826,0.8021649718284607,-0.9085353016853333,0.8232420086860657,-0.9130526781082153,0.8454790115356445,-0.9127073287963867,0.8617249727249146,-0.9099835157394409,0.8802490234375,-0.9030081033706665,0.8995559811592102,-0.8743889927864075,0.9193519949913025,-0.838966965675354,0.9308270215988159,-0.8095239996910095,0.9473059773445129,-0.7827379703521729,0.9664919972419739,-0.767645001411438,1,-0.7687070369720459,1,0,0.0006510419771075249,-0.001700997352600098,0,-0.7687070369720459],0],["images/a_track-sheet3.png",208604,1,1100,1536,515,1,0,1,[["right",1,0.1184466034173966],["power_up",0.21875,-0.1281553357839584],["coin_p0",0.330078125,0.03106796182692051],["coin_p1",0.35546875,0.1029126197099686],["coin_p2",0.384765625,0.1825242787599564],["coin_p3",0.4186197817325592,0.2407767027616501]],[0.4645180106163025,-0.6160190105438232,0.5008140206336975,-0.604369044303894,0.5437620282173157,-0.6064929962158203,0.578095018863678,-0.6162930130958557,0.6199139952659607,-0.6455099582672119,0.6384580135345459,-0.6761829853057861,0.66497802734375,-0.7189930081367493,0.7070410251617432,-0.7766079902648926,0.7520340085029602,-0.8254849910736084,0.7930300235748291,-0.8560069799423218,0.8408709764480591,-0.8712680339813232,0.8870850205421448,-0.8777909874916077,1,-0.8776699900627136,1,0,0,0,0,-0.8776699900627136,0.0752767026424408,-0.8800970315933228,0.08980309963226318,-0.8686890006065369,0.1069340035319328,-0.8864079713821411,0.1229249984025955,-0.9012135863304138,0.1365250051021576,-0.9282159805297852,0.1532540023326874,-0.9693871140480042,0.1683550029993057,-0.9975728392601013,0.1940920054912567,-0.9975728392601013,0.2287999987602234,-0.9898058176040649,0.2571409940719605,-0.9779126048088074,0.2794600129127502,-0.9587377905845642,0.2913410067558289,-0.9419901967048645,0.3057050108909607,-0.9001820087432861,0.3246259987354279,-0.8389559984207153,0.3453780114650726,-0.7820389866828919,0.3780919909477234,-0.7094659805297852,0.4090169966220856,-0.6548539996147156,0.4297690093517304,-0.6364079713821411],0],["images/a_track-sheet2.png",266220,1,591,1536,588,1,0,1,[["right",1,0.2329932004213333],["power_up",0.16796875,-0.005102040711790323],["coin_p0",0.4329427182674408,0.04251700639724731],["coin_p1",0.4733072817325592,0],["coin_p2",0.5130208134651184,-0.03231292590498924],["coin_p3",0.5533854365348816,-0.06462585180997849],["coin_p4",0.61328125,-0.09013605117797852]],[0.03352870047092438,-0.7687070369720459,0.05863450095057488,-0.7891160249710083,0.08062750101089478,-0.8375849723815918,0.1162919998168945,-0.9005101919174194,0.1483969986438751,-0.9145407676696777,0.1905920058488846,-0.9111393690109253,0.2290849983692169,-0.8915820121765137,0.2480060011148453,-0.8565050363540649,0.2633459866046906,-0.8018710017204285,0.2740069925785065,-0.774446964263916,0.2913819849491119,-0.7441539764404297,0.3075560033321381,-0.7243300080299377,0.3255720138549805,-0.7152689695358276,0.3480069935321808,-0.7192419767379761,0.3703739941120148,-0.7433370351791382,0.3898110091686249,-0.7784860134124756,0.403564989566803,-0.8118619918823242,0.4267779886722565,-0.8484799861907959,0.4604080021381378,-0.8910499811172485,0.4939779937267304,-0.9234694242477417,0.5217080116271973,-0.9434790015220642,0.558879017829895,-0.9732673764228821,0.5841779708862305,-0.9893043041229248,0.6076859831809998,-0.9987244606018066,0.6301270127296448,-1,0.6440430283546448,-0.9929847121238709,0.6524249911308289,-0.9820365905761719,0.669963002204895,-0.9493516087532044,0.6852419972419739,-0.9304580688476563,0.6945379972457886,-0.9132270812988281,0.7101730108261108,-0.8710229992866516,0.7245050072669983,-0.8296700119972229,0.7437490224838257,-0.7918059825897217,0.7598999738693237,-0.7724379897117615,0.7796319723129273,-0.7628480195999146,0.8445690274238586,-0.7632269859313965,1,-0.7670069932937622,0.9993489980697632,-0.001700997352600098,0,0,0,-0.7670069932937622],0],["images/a_track-sheet0.png",210395,1,1,1536,926,1,0,1,[["right",1,0.511879026889801],["power_up",0.5026041865348816,-0.1328293681144714],["coin_p0",0.2337239533662796,0.2904967665672302],["coin_p1",0.2630208432674408,0.2419006526470184],["coin_p2",0.2845052182674408,0.1760259121656418],["coin_p3",0.3177083432674408,0.1317494660615921],["coin_p4",0.3587239682674408,0.1079913601279259]],[0.04036460071802139,-0.4897410273551941,0.09098310023546219,-0.5116770267486572,0.1139319986104965,-0.5255129933357239,0.1408690065145493,-0.5328359603881836,0.160970002412796,-0.5396189689636231,0.1796060055494309,-0.5558519959449768,0.1959230005741119,-0.5769270062446594,0.2144979983568192,-0.6090630292892456,0.2405499964952469,-0.6418690085411072,0.2581300139427185,-0.6645150184631348,0.2822209894657135,-0.7146979570388794,0.3017550110816956,-0.7678509950637817,0.3125,-0.7961660027503967,0.3274739980697632,-0.8181700110435486,0.3417969942092896,-0.8291710019111633,0.3668619990348816,-0.835211992263794,0.3860679864883423,-0.839851975440979,0.4030759930610657,-0.8545910120010376,0.4176639914512634,-0.8765000104904175,0.4325770139694214,-0.9105570316314697,0.4439800083637238,-0.9519512057304382,0.4542390108108521,-0.9766979813575745,0.4661259949207306,-0.9882158041000366,0.493153989315033,-0.9968076944351196,0.522786021232605,-1,0.5431320071220398,-0.9946004152297974,0.559732973575592,-0.9832612872123718,0.5728350281715393,-0.9619330167770386,0.5845950245857239,-0.9226511716842651,0.5968220233917236,-0.8749330043792725,0.6089580059051514,-0.8451340198516846,0.6276170015335083,-0.8136559724807739,0.6462759971618652,-0.792976975440979,0.6821879744529724,-0.7749980092048645,0.6978639960289002,-0.761148989200592,0.7151299715042114,-0.7317689657211304,0.7320700287818909,-0.6824100017547607,0.7429879903793335,-0.639801025390625,0.7604169845581055,-0.6025919914245606,0.7825520038604736,-0.5580450296401978,0.8183590173721314,-0.4983800053596497,0.8473309874534607,-0.4786720275878906,0.8815109729766846,-0.4805619716644287,1,-0.488120973110199,1,0,0,0,0,-0.4870409965515137],0]]]],[],false,false,796881399186053,[],null],["t7",9,false,[],0,0,null,[["Default",5,false,1,0,false,337239737033539,[["images/shaft-sheet0.png",92,0,0,40,10,1,0,0.5,[["right",1,0.5],["left",0,0.5]],[1,0.5,0,0.5,0,-0.5,1,-0.5],1]]]],[],false,false,919257936517872,[],null],["t8",9,false,[],0,0,null,[["Default",0,false,0,0,false,969046932377140,[["images/sprite2-sheet0.png",94,0,0,50,50,1,0.5,0.5,[],[],1],["images/sprite2-sheet1.png",94,0,0,50,50,1,0.5,0.5,[],[],1]]]],[],false,false,156016240913298,[],null],["t9",2,false,[],0,0,null,null,[],false,false,898815903716757,[],null,[]],["t10",9,false,[124456785019839],0,0,null,[["Default",5,false,1,0,false,233038749581815,[["images/ground_detector-sheet0.png",94,0,0,50,50,1,0.5,0,[],[],1]]]],[],false,false,599127020886521,[],null],["t11",11,false,[],0,0,null,null,[],false,false,813435601922122,[],null],["t12",0,false,[],0,0,null,null,[],true,false,527976176952214,[],null],["t13",6,false,[],0,0,["images/particles.png",512,0],null,[],false,false,331444020445699,[],null],["t14",9,false,[],0,0,null,[["Default",0,false,0,0,false,888035128718638,[["images/a_egg_outline-sheet0.png",2404,0,0,100,130,1,0.5,0.5,[],[],0]]]],[],false,false,208803087860435,[],null],["t15",6,false,[],0,0,["images/particles2.png",1071,0],null,[],false,false,786853907274721,[],null],["t16",6,false,[],0,0,["images/particles3.png",1071,0],null,[],false,false,510474352398796,[],null],["t17",9,false,[476114818005129,645106956169507,678531476742050,704265137964370,177864083902431],0,0,null,[["Default",0,false,0,0,false,450345696223370,[["images/bg_parrallax_front-sheet0.png",140034,1,1,1280,521,1,0,1,[],[0.04843749850988388,-0.8809980154037476,0.5,-0.7735120058059692,0.9281250238418579,-0.8234170079231262,1,-0.5009599924087524,1,0,0,0,0,-0.5009599924087524],0],["images/bg_parrallax_front-sheet0.png",140034,1,524,1280,489,1,0,1,[],[0.06953120231628418,-0.8179960250854492,0.9374999403953552,-0.8364009857177734,1,-0.5010219812393189,1,0,0,0,0,-0.5010219812393189],0]]]],[],false,false,833557904288148,[],null],["t18",9,false,[476114818005129,645106956169507,678531476742050,704265137964370,177864083902431],0,0,null,[["Default",0,false,0,0,false,626765463520642,[["images/bg_parrallax_back-sheet0.png",224312,1,1,1138,356,1,0,1,[],[],0],["images/bg_parrallax_back-sheet0.png",224312,1,359,1138,308,1,0,1,[],[],0]]]],[],false,false,351654305346426,[],null],["t19",9,false,[476114818005129,645106956169507,678531476742050,704265137964370,177864083902431],0,0,null,[["Default",0,false,0,0,false,950492729368393,[["images/sprite3-sheet0.png",23069,0,0,246,246,1,0.5,0.5,[],[],0]]]],[],false,false,136276284631825,[],null],["t20",0,false,[],0,0,null,null,[],true,false,310224226140766,[],null],["t21",0,false,[],0,0,null,null,[],true,false,653602238666466,[],null],["t22",9,false,[],0,0,null,[["Default",5,false,1,0,false,590065887000409,[["images/blockage-sheet0.png",10289,0,0,144,143,1,0.5,1,[],[],0]]]],[],false,false,759797325989666,[],null],["t23",9,false,[639062338976045,716512423134002],0,0,null,[["Default",25,true,1,0,false,485607172443594,[["images/a_coin-sheet0.png",33669,163,1,75,75,1,0.5066666603088379,0.5066666603088379,[],[],0],["images/a_coin-sheet0.png",33669,1,1,79,74,1,0.5063291192054749,0.5,[],[],0],["images/a_coin-sheet0.png",33669,1,77,68,74,1,0.5,0.5,[],[],0],["images/a_coin-sheet0.png",33669,1,77,68,74,1,0.5,0.5,[],[],0],["images/a_coin-sheet0.png",33669,133,78,47,75,1,0.5106382966041565,0.5066666603088379,[],[],0],["images/a_coin-sheet0.png",33669,1,153,40,75,1,0.5,0.5066666603088379,[],[],0],["images/a_coin-sheet0.png",33669,240,1,14,77,1,0.5,0.5064935088157654,[],[],0],["images/a_coin-sheet0.png",33669,43,154,40,75,1,0.5,0.5066666603088379,[],[0.5,0.4933333396911621,-0.5,0.4933333396911621,-0.5,-0.5066666603088379,0.5,-0.5066666603088379],0],["images/a_coin-sheet0.png",33669,182,78,47,75,1,0.4893617033958435,0.5066666603088379,[],[0.5106382966041565,0.4933333396911621,-0.4893617033958435,0.4933333396911621,-0.4893617033958435,-0.5066666603088379,0.5106382966041565,-0.5066666603088379],0],["images/a_coin-sheet0.png",33669,71,77,60,75,1,0.5,0.5066666603088379,[],[0.5,0.4933333396911621,-0.5,0.4933333396911621,-0.5,-0.5066666603088379,0.5,-0.5066666603088379],0],["images/a_coin-sheet0.png",33669,71,77,60,75,1,0.5,0.5066666603088379,[],[0.5,0.4933333396911621,-0.5,0.4933333396911621,-0.5,-0.5066666603088379,0.5,-0.5066666603088379],0],["images/a_coin-sheet0.png",33669,82,1,79,74,1,0.4936708807945252,0.5,[],[0.5063291192054749,0.5,-0.4936708807945252,0.5,-0.4936708807945252,-0.5,0.5063291192054749,-0.5],0]]]],[],false,false,183971530538193,[],null],["t24",9,false,[],0,0,null,[["Default",0,false,0,0,false,736646968892680,[["images/a_egg_crack-sheet1.png",4684,0,0,100,83,1,0.5,0.5060241222381592,[],[-0.3199999928474426,-0.2891571223735809,-0.1924999952316284,-0.4246988296508789,-0.02000001072883606,-0.5030120611190796,0.1700000166893005,-0.4608434140682221,0.3299999833106995,-0.3012051284313202,0.4025000333786011,-0.1626511216163635,0.449999988079071,-0.01204812526702881,0.5,0.3072288632392883,0.4174999594688416,0.4457828998565674,0.3225000500679016,0.2138548493385315,0.252500057220459,0.3524098992347717,0.1549999713897705,0.2319278717041016,0.06375002861022949,0.2725898623466492,-0.04750001430511475,0.02710789442062378,-0.2181249856948853,0.2929208874702454,-0.2821879982948303,0.2405868768692017,-0.3662499785423279,0.3719878792762756,-0.4925000071525574,0.1837348937988281,-0.4300000071525574,-0.07530111074447632],0],["images/a_egg_crack-sheet0.png",4800,0,0,100,84,1,0.5,0.5,[],[-0.375,-0.3958330154418945,-0.2775000035762787,-0.2529760003089905,-0.21875,-0.2991070151329041,-0.04249998927116394,-0.02976199984550476,0.06375002861022949,-0.255952000617981,0.159375011920929,-0.2470239996910095,0.2346879839897156,-0.3348209857940674,0.3223440051078796,-0.2180060148239136,0.4036719799041748,-0.4542410969734192,0.4900000095367432,-0.3214290142059326,0.4674999713897705,-0.04464301466941834,0.4074999690055847,0.1547619700431824,0.3299999833106995,0.2976189851760864,0.1800000071525574,0.4374999403953552,0.004999995231628418,0.4851189851760864,-0.1649999916553497,0.4255949854850769,-0.324999988079071,0.2738100290298462,-0.4549999833106995,0,-0.487500011920929,-0.1845239996910095],0]]]],[],false,false,758334965846932,[],null],["t25",9,false,[555873085906943,603623643386744,579507754173600,945708553159216,493918203990164,804538701337090],0,0,null,[["Default",0,false,0,0,false,528487908857035,[["images/a_power_up-sheet0.png",6158,0,0,82,84,1,0.5,0.4285714328289032,[],[],0],["images/a_power_up-sheet1.png",7647,0,0,63,61,1,0.5079365372657776,0.5081967115402222,[],[],0]]]],[],false,false,393680056153829,[],null],["t26",9,false,[],3,0,null,[["Default",0,false,0,0,false,818554099839157,[["images/a_focus-sheet0.png",22245,0,0,233,233,1,0.5021459460258484,0.5021459460258484,[],[],0]]]],[["Pin",14,483470362329178],["Rotate",15,547878884482362],["Sine",16,995312170307469]],false,false,720569299537805,[],null],["t27",9,false,[829136499250640],0,0,null,[["Default",0,false,0,0,false,509375983185661,[["images/a_dial-sheet0.png",11905,0,0,165,169,1,0.5030303001403809,0.5325443744659424,[],[],0],["images/a_dial-sheet1.png",12024,0,0,165,169,1,0.5030303001403809,0.5325443744659424,[],[],0]]]],[],false,false,964118943135258,[],null],["t28",9,false,[890055103057434,447742278246090,220341141832227,663706487429087,954794261466735,616539714332001,382751111974019,585647413571385,491656391840986,897434507703637],0,0,null,[["Default",0,false,0,0,false,749650426798672,[["images/icon_coin-sheet0.png",7088,0,0,77,77,1,0.5064935088157654,0.5064935088157654,[],[],0]]]],[],false,false,375693801051165,[],null],["t29",11,false,[],0,0,null,null,[],false,false,296259459329297,[],null],["t30",10,false,[],0,0,["images/spritefont.png",29972,0],null,[],false,false,933799845164043,[],null],["t31",7,false,[],0,0,null,null,[],false,false,107978926274829,[],null,[]],["t32",9,false,[808530949819576,946123310868298,564937613154856],0,0,null,[["Default",0,false,0,0,false,539144040156987,[["images/hud_paddle-sheet0.png",12985,0,0,138,207,1,0.2971014380455017,1,[],[],0],["images/hud_paddle-sheet1.png",9734,0,0,154,124,1,0.5844155550003052,1,[],[],0]]]],[],false,false,708779197523355,[],null],["t33",9,false,[372851269599266,519922834736622,789349525276572,653424666179997,316355721690176,104115823866786,541897271924559],0,0,null,[["Default",0,false,0,0,false,507767351244038,[["images/a_dial_needle-sheet0.png",539,0,0,73,17,1,0.8904109597206116,0.529411792755127,[],[],0]]]],[],false,false,152682629473903,[],null],["t34",11,false,[],0,0,null,null,[],false,false,787768683176757,[],null],["t35",11,false,[],0,0,null,null,[],false,false,202907620014504,[],null],["t36",9,false,[890055103057434,447742278246090,220341141832227,663706487429087,954794261466735,616539714332001,382751111974019,585647413571385,491656391840986,897434507703637],0,0,null,[["Default",0,false,0,0,false,511134792322023,[["images/icon_trophy-sheet0.png",4043,0,0,128,128,1,0.5,0.5,[],[],0]]]],[],false,false,232271265883690,[],null],["t37",13,false,[370287668776813],0,0,["images/dotted_line.png",112,3],null,[],false,false,361552608866663,[],null],["t38",11,false,[926420131854004],0,0,null,null,[],false,false,539098750971298,[],null],["t39",6,false,[],0,0,["images/particles4.png",1696,0],null,[],false,false,403547390482061,[],null],["t40",11,false,[],0,0,null,null,[],false,false,164773787867573,[],null],["t41",11,false,[],0,0,null,null,[],false,false,193933097838227,[],null],["t42",13,false,[450601492019944,951567391380411,106485162691010,586193918657688,636936560957559,740491210631319,660230449231458,538401153918565,977777313842562],0,0,["images/power_up_bar.png",421,0],null,[],false,false,965553225465640,[],null],["t43",9,false,[],0,0,null,[["Default",5,false,1,0,false,870132488565593,[["images/power_up_bar_frame-sheet0.png",305,0,0,126,24,1,0,0.5,[],[],0]]]],[],false,false,478838279739679,[],null],["t44",9,false,[],2,0,null,[["Default",5,false,1,0,false,641034384845456,[["images/egg_freeze_vfx-sheet0.png",9114,0,0,100,166,1,0.5,0.4156626462936401,[],[],0]]]],[["Pin",14,787436920601171],["Flash",17,606801495920967]],false,false,211674352442487,[],null],["t45",9,false,[816472931974824,604492468335414],0,0,null,[["Default",0,false,0,0,false,919273425782850,[["images/a_logo-sheet0.png",48331,0,0,561,256,1,0.5008912682533264,0.5,[["tyre_0",0.7468805909156799,0.875],["tyre_1",0.8805704116821289,0.84375],["egg",0.8092691898345947,0.5859375]],[],0]]]],[],false,true,795912231917955,[],null],["t46",9,false,[890055103057434,447742278246090,220341141832227,663706487429087,954794261466735,616539714332001,382751111974019,585647413571385,491656391840986,897434507703637],2,0,null,[["Default",0,false,0,0,false,515880141293447,[["images/a_logo_tyre-sheet0.png",1722,0,0,64,64,1,0.5,0.5,[],[],0]]]],[["Rotate",15,741635228202895],["Pin",14,166590942810313]],false,true,843559730256992,[],null],["t47",9,false,[890055103057434,447742278246090,220341141832227,663706487429087,954794261466735,616539714332001,382751111974019,585647413571385,491656391840986,897434507703637,466353137323271,126764197946735,960812191858448,569893559151970,177523624520845],0,0,null,[["Default",0,false,0,0,false,451399627180116,[["images/btn_play-sheet0.png",16401,0,0,310,113,1,0.5,0.5044247508049011,[],[],0]]]],[],false,false,336002755178019,[],null],["t48",9,false,[890055103057434,447742278246090,220341141832227,663706487429087,954794261466735,616539714332001,382751111974019,585647413571385,491656391840986,897434507703637,466353137323271,126764197946735,960812191858448,569893559151970,177523624520845],0,0,null,[["Default",0,false,0,0,false,571352316359586,[["images/btn_car_selection-sheet0.png",17438,0,0,310,113,1,0.5,0.5044247508049011,[],[],0]]]],[],false,false,406595972060623,[],null],["t49",8,false,[],0,0,null,null,[],false,false,498700929456049,[],null,[]],["t50",1,false,[],0,0,null,null,[],false,false,723018488520912,[],null,[0,0,0,1,1,600,600,10000,1]],["t51",5,false,[],0,0,null,null,[],false,false,770737379420423,[],null,["59a98bf799ef499d9d7b9285bccaa196",""]],["t52",9,false,[],0,0,null,[["Default",0,false,0,0,false,918075206498570,[["images/car_sel_frame-sheet0.png",119642,0,0,876,599,1,0.5,0.5008347034454346,[],[],0]]]],[],false,false,752040849878490,[],null],["t53",9,false,[767706281784932,870866451398056,452546199701982,611066092464583,372712293535894],0,0,null,[["car_0",5,false,1,0,false,358862608313734,[["images/car_sel_card-sheet1.png",42504,1,190,175,186,1,0.5028571486473084,0.5,[],[],0]]],["car_1",0,false,0,0,false,341389809292753,[["images/car_sel_card-sheet0.png",39904,1,1,176,187,1,0.5,0.5026738047599793,[],[],0],["images/car_sel_card-sheet0.png",39904,179,1,176,187,1,0.5,0.5026738047599793,[],[],0]]],["car_2",0,false,0,0,false,985572550608161,[["images/car_sel_card-sheet1.png",42504,178,190,175,186,1,0.5028571486473084,0.5,[],[],0],["images/car_sel_card-sheet2.png",8627,0,0,175,186,1,0.5028571486473084,0.5,[],[],0]]],["car_3",0,false,0,0,false,180935209479464,[["images/car_sel_card-sheet0.png",39904,1,190,176,187,1,0.5,0.5026738047599793,[],[],0],["images/car_sel_card-sheet0.png",39904,179,190,176,187,1,0.5,0.5026738047599793,[],[],0]]],["car_4",0,false,0,0,false,562365650366626,[["images/car_sel_card-sheet1.png",42504,1,1,176,187,1,0.5,0.5026738047599793,[],[],0],["images/car_sel_card-sheet1.png",42504,179,1,176,187,1,0.5,0.5026738047599793,[],[],0]]]],[],false,false,313219240373030,[],null],["t54",0,false,[],0,0,null,null,[],true,false,295297314258044,[],null],["t55",9,false,[890055103057434,447742278246090,220341141832227,663706487429087,954794261466735,616539714332001,382751111974019,585647413571385,491656391840986,897434507703637,466353137323271,126764197946735,960812191858448,569893559151970,177523624520845],0,0,null,[["Default",0,false,0,0,false,692621470465933,[["images/car_sel_button-sheet0.png",8190,1,45,105,41,1,0.5047619342803955,0.5121951103210449,[],[],0],["images/car_sel_button-sheet1.png",5315,0,0,105,41,1,0.5047619342803955,0.5121951103210449,[],[],0],["images/car_sel_button-sheet0.png",8190,1,1,107,42,1,0.5046728849411011,0.5,[],[],0]]]],[],false,false,831193031891594,[],null],["t56",11,false,[],0,0,null,null,[],false,false,622505995581980,[],null],["t57",9,false,[466353137323271,126764197946735,960812191858448,569893559151970,177523624520845],0,0,null,[["Default",0,false,0,0,false,520555716526215,[["images/btn_close-sheet0.png",7081,0,0,82,83,1,0.5,0.5060241222381592,[],[],0]]]],[],false,false,681369596427278,[],null],["t58",9,false,[816472931974824,604492468335414],0,0,null,[["Default",0,false,0,0,false,332570220866297,[["images/tuto-sheet0.png",233649,0,0,672,690,1,0.5,0.9884058237075806,[["button",0.5,0.852173924446106]],[-0.4947916567325592,-0.9814614057540894,0.4947919845581055,-0.9814614057540894,0.4947919845581055,0.00465017557144165,-0.4947916567325592,0.00465017557144165],0]]]],[],false,false,528307125898000,[],null],["t59",9,false,[466353137323271,126764197946735,960812191858448,569893559151970,177523624520845],0,0,null,[["Default",0,false,0,0,false,351523259500998,[["images/btn_continue-sheet0.png",20366,0,0,292,119,1,0.5,0.5042017102241516,[],[],0]]]],[],false,false,556431755393608,[],null],["t60",9,false,[890055103057434,447742278246090,220341141832227,663706487429087,954794261466735,616539714332001,382751111974019,585647413571385,491656391840986,897434507703637,466353137323271,126764197946735,960812191858448,569893559151970,177523624520845],0,0,null,[["Default",0,false,0,0,false,944300294634479,[["images/btn_sound-sheet0.png",21501,1,1,128,94,1,0.5,0.5,[],[],0],["images/btn_sound-sheet0.png",21501,1,97,128,94,1,0.5,0.5,[],[],0]]]],[],false,false,893621022077340,[],null],["t61",9,false,[890055103057434,447742278246090,220341141832227,663706487429087,954794261466735,616539714332001,382751111974019,585647413571385,491656391840986,897434507703637,466353137323271,126764197946735,960812191858448,569893559151970,177523624520845],0,0,null,[["Default",0,false,0,0,false,116815367305020,[["images/btn_music-sheet0.png",22013,1,1,128,94,1,0.5,0.5,[],[],0],["images/btn_music-sheet0.png",22013,1,97,128,94,1,0.5,0.5,[],[],0]]]],[],false,false,198277350567764,[],null],["t62",11,false,[],0,0,null,null,[],false,true,471120263083707,[],null],["t63",9,false,[],0,0,null,[["Default",0,false,0,0,false,407053765624598,[["images/a_loading_frame-sheet0.png",6095,0,0,398,120,1,0.5,0.5,[],[],0]]]],[],false,true,691546350352600,[],null],["t64",13,false,[],0,0,["images/a_loading_bar.png",2548,0],null,[],false,true,168683633636155,[],null],["t65",9,false,[890055103057434,447742278246090,220341141832227,663706487429087,954794261466735,616539714332001,382751111974019,585647413571385,491656391840986,897434507703637,466353137323271,126764197946735,960812191858448,569893559151970,177523624520845],0,0,null,[["Default",0,false,0,0,false,730986013041428,[["images/btn_invite-sheet0.png",8525,0,0,116,85,1,0.5,0.5058823823928833,[],[],0]]]],[],false,false,674241775674086,[],null],["t66",9,false,[890055103057434,447742278246090,220341141832227,663706487429087,954794261466735,616539714332001,382751111974019,585647413571385,491656391840986,897434507703637,466353137323271,126764197946735,960812191858448,569893559151970,177523624520845],0,0,null,[["Default",0,false,0,0,false,124117724132074,[["images/btn_leaderboard-sheet0.png",8194,0,0,116,85,1,0.5,0.5058823823928833,[],[],0]]]],[],false,false,915290299357923,[],null],["t67",9,false,[890055103057434,447742278246090,220341141832227,663706487429087,954794261466735,616539714332001,382751111974019,585647413571385,491656391840986,897434507703637,466353137323271,126764197946735,960812191858448,569893559151970,177523624520845],0,0,null,[["Default",0,false,0,0,false,422982083441680,[["images/btn_challenge-sheet0.png",13442,0,0,224,93,1,0.5,0.5053763389587402,[],[],0]]]],[],false,false,879882738251044,[],null],["t68",0,false,[],0,0,null,null,[],true,false,558604810993546,[],null],["t69",9,false,[568385342049927],0,0,null,[["Default",5,false,1,0,false,609623603987962,[["images/challenge_pic-sheet0.png",117,0,0,100,100,1,0.5,0.5,[],[],3]]]],[],false,false,283072392105345,[],null],["t70",11,false,[749607443325818],0,0,null,null,[],false,false,994908955043136,[],null],["t71",9,true,[939242505359876,678048934722792,990849584957206,680912114542905,138851308707390,688209092685894,787263476954717,848333068193907,682272672483769,851819424728570,392347966618527,498921876391339,482364165404074,518136694416169,496055965916613,451409918651197],2,0,null,null,[["ScrollTo",18,866247415518107],["Chipmunk",19,971804683617474]],false,false,571492705993638,[],null],["t72",9,true,[758674793871285,931473615217218,407429057905417],1,0,null,null,[["Chipmunk",19,466078923952866]],false,false,618976135757035,[],null],["t73",9,true,[254599962372085,173788934016196,952153190905389],2,0,null,null,[["Chipmunk",19,374663385358043],["Pin",14,119843349940313]],false,false,591653245166269,[],null],["t74",9,true,[640929515728473,731547919224874,109213957815732],1,0,null,null,[["Chipmunk",19,474425232570980]],false,false,956486310742859,[],null],["t75",9,true,[],0,0,null,null,[],false,false,336921584854705,[],null],["t76",9,true,[124456785019839],1,0,null,null,[["Pin",14,791968716760609]],false,false,411831939844669,[],null],["t77",6,true,[],1,0,null,null,[["Fade",20,513320743159258]],false,false,335531389206786,[],null],["t78",9,true,[476114818005129,645106956169507,678531476742050,704265137964370,177864083902431],0,0,null,null,[],false,false,470301415655857,[],null],["t79",9,true,[],1,0,null,null,[["Chipmunk",19,646782690803153]],false,false,564824180258984,[],null],["t80",9,true,[],1,0,null,null,[["Chipmunk",19,909616457879709]],false,false,393925475516863,[],null],["t81",9,true,[555873085906943,603623643386744,579507754173600,945708553159216,493918203990164,804538701337090],1,0,null,null,[["Sine",16,991181802616949]],false,false,692928059936430,[],null],["t82",9,true,[],0,0,null,null,[],false,false,802972847874883,[],null],["t83",9,true,[639062338976045,716512423134002],2,0,null,null,[["Spline",21,208778489477855],["Fade",20,739050464138909]],false,false,377604002394632,[],null],["t84",11,true,[],0,1,null,null,[],false,false,950180896531819,[["outline","Outline"]],null],["t85",9,true,[890055103057434,447742278246090,220341141832227,663706487429087,954794261466735,616539714332001,382751111974019,585647413571385,491656391840986,897434507703637],0,0,null,null,[],false,false,285837008013107,[],null],["t86",13,true,[450601492019944,951567391380411,106485162691010,586193918657688,636936560957559,740491210631319,660230449231458,538401153918565,977777313842562],0,1,null,null,[],false,false,621773497392965,[["tint","Tint"]],null],["t87",9,true,[816472931974824,604492468335414],1,0,null,null,[["LiteTween",22,485240101753096]],false,false,248558132986799,[],null],["t88",9,true,[466353137323271,126764197946735,960812191858448,569893559151970,177523624520845],0,0,null,null,[],false,false,869099069077809,[],null]],[[71,3],[72,4],[73,5],[74,6],[75,7],[76,10],[77,13,15,16,39],[78,18,17,19],[79,22],[80,24],[81,25],[82,26,44],[83,23],[84,38,70,35,29,40,41,34,56],[85,46,48,67,65,66,61,47,60,55,28,36],[86,42],[87,45,58],[88,48,67,57,59,65,66,61,47,60,55]],[["gamelayout",20000,1440,true,"GameManager",442887351584918,[["bg",0,188067109334037,true,[75,200,239],false,1,1,1,false,false,1,0,0,[],[["brightness","Brightness",[1]]]],["parallax",1,210775471790304,true,[255,255,255],true,0,0.5,1,false,false,1,0,0,[[[0,697,0,1138,356,0,0,1,0,1,0,0,[]],18,25,[[0.02],[2],[-1280],[1280],[1280]],[],[0,"Default",0,0]],[[1280,697,0,1138,356,0,0,1,0,1,0,0,[]],18,27,[[0.02],[2],[-1280],[1280],[1280]],[],[0,"Default",0,0]],[[679,651,0,1138,308,0,0,0.5,0,1,0,0,[]],18,26,[[0.02],[2],[-1280],[1280],[1280]],[],[0,"Default",1,0]],[[0,981,0,1280,521,0,0,1,0,1,0,0,[]],17,23,[[0.1],[2],[-1280],[1280],[1280]],[],[0,"Default",0,0]],[[1280,981,0,1280,489,0,0,1,0,1,0,0,[]],17,24,[[0.1],[2],[-1280],[1280],[1280]],[],[0,"Default",1,0]],[[362,380,0,246,246,0,0,1,0.5,0.5,0,0,[]],19,28,[[0.001],[2],[-1280],[1280],[1280]],[],[0,"Default",0,0]]],[["brightness","Brightness",[1]]]],["track",2,558887067715856,true,[255,255,255],true,1,1,1,false,false,1,0,0,[[[897.2589721679688,872.0112915039063,0,209,103,0,0,1,0.5023923516273499,0.7281553149223328,0,0,[]],3,3,[[0],[0],[-1],[0],[0],[1],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0]],[[0],[0,3,0,"ffffffff",4,0,1,0,0,0]],[0,"Default",0,1]],[[850.7803955078125,893.7456665039063,0,60,60,0,0,1,0.5,0.5,0,0,[]],4,4,[[0],[100],[-1]],[[0,2,0,"ffffffff",2,0,0.7,0,30,0]],[0,"Default",0,1]],[[860,732,0,100,130,0,0,1,0.5099999904632568,0.5076923370361328,0,0,[]],5,5,[[0],[1],[0]],[[0,3,0,"ffffffff",0.5,0,1,0,0,0],[]],[0,"Default",0,1]],[[0,1440,0,1536,452,0,0,1,0,1,0,0,[]],6,6,[[-1],[0],[0]],[[1,3,0,"ffffffff",1,0,1,0,0,0]],[0,"Default",0,1]],[[1536,1440,0,1536,515,0,0,1,0,1,0,0,[]],6,7,[[-1],[0],[0]],[[1,3,0,"ffffffff",1,0,1,0,0,0]],[0,"Default",13,1]],[[4608,1440,0,1536,585,0,0,1,0,1,0,0,[]],6,8,[[-1],[0],[0]],[[1,3,0,"ffffffff",1,0,1,0,0,0]],[0,"Default",10,1]],[[3072,1440,0,1536,483,0,0,1,0,1,0,0,[]],6,10,[[-1],[0],[0]],[[1,3,0,"ffffffff",1,0,1,0,0,0]],[0,"Default",11,1]],[[6144,1440,0,1536,453,0,0,1,0,1,0,0,[]],6,9,[[-1],[0],[0]],[[1,3,0,"ffffffff",1,0,1,0,0,0]],[0,"Default",7,1]],[[7680,1440,0,1536,515,0,0,1,0,1,0,0,[]],6,11,[[-1],[0],[0]],[[1,3,0,"ffffffff",1,0,1,0,0,0]],[0,"Default",15,1]],[[9216,1440,0,1536,452,0,0,1,0,1,0,0,[]],6,12,[[-1],[0],[0]],[[1,3,0,"ffffffff",1,0,1,0,0,0]],[0,"Default",0,1]],[[1083,805,0,40,10,0,0,1,0,0.5,0,0,[]],7,15,[],[],[0,"Default",0,1]],[[1409,390,0,5,5,0,0,1,0.5,0.5,0,0,[]],8,16,[],[],[0,"Default",0,1]],[[1110.505615234375,551.7259521484375,0,50,50,0,0,1,0.5,0,0,0,[]],10,18,[[0]],[[]],[1,"Default",0,1]],[[272,731,0,128,128,0,0,1,0,0.5,0,0,[]],13,19,[],[[1,0,1,1,1]],[5,90,1,100,4,100,-4,12,12,100,4,0,0,0,0,800,0,0,0.25]],[[-138,994,0,100,130,0,0,1,0.5,0.5,0,0,[]],14,20,[],[],[0,"Default",0,0]],[[549,775,0,128,128,0,0,1,0,0.5,0,0,[]],15,21,[],[[1,0,1,1,1]],[12,360,1,200,32,100,-64,0,0,125,24,0,-100,0,0,800,50,1,0.5]],[[490,508,0,128,128,0,0,1,0,0.5,0,0,[]],16,22,[],[[1,0,1,1,1]],[20,360,1,200,16,100,-48,0,0,150,8,0,-150,0,0,800,0,1,0.4]],[[520.9137573242188,988.1682739257813,0,144,143,0,0,1,0.5,1,0,0,[]],22,31,[],[[1,1,0,"ffffffff",1,0,0.8,0,0,0]],[0,"Default",0,1]],[[700,895,0,48.07692337036133,48.07692337036133,0,0,1,0.5066666603088379,0.5066666603088379,0,0,[]],23,32,[[0],[0]],[[1,1200,0,0,0],[0,0,0.25,1,1]],[0,"Default",0,1]],[[793.3934326171875,477.574462890625,0,100,83,0,0,1,0.5,0.5060241222381592,0,0,[]],24,33,[],[[1,3,0,"ffffffff",1,1,0.8,0,0,0]],[0,"Default",0,1]],[[797,1211,0,233,233,0,0,0.25,0.5021459460258484,0.5021459460258484,0,0,[]],26,35,[],[[],[90,0],[1,2,0,2,0,0,0,10,0]],[0,"Default",0,0]],[[1244,882,0,82,84,0,0,1,0.5,0.4285714328289032,0,0,[]],25,34,[[0],[0],[0],[""],[0],[0]],[[1,1,0,2,0,0,0,5,0]],[0,"Default",0,1]],[[524,238,0,200,75,0,0,1,0.5,0.5,0,0,[[33,33,33,1,0]]],35,46,[],[],["Text",0,"20pt Changa One","rgb(255,255,255)",1,1,4,0,0]],[[939,286,0,128,128,0,0,1,0.5,0.5,0,0,[]],36,47,[[0],[0],[0],[0.35],[0.45],[200],[128],[128],[-1],[0]],[],[0,"Default",0,0]],[[1452,393,0,8,750,0,0,1,0.5,1,0,0,[]],37,48,[[""]],[],[0,7]],[[938,161.5,0,200,75,0,0,1,0,0.5,0,0,[[33,33,33,1,0]]],38,49,[[""]],[],["0",0,"28pt Changa One","rgb(255,255,255)",0,1,3,0,0]],[[973,903,0,128,128,0,0,1,0,0.5,1,0,[]],39,50,[],[[1,0,1,1,1]],[20,360,1,150,32,100,-24,0,0,150,20,0,-100,0,0,800,0,1,1]],[[1199,55,0,150,40,0,0,1,1,0,0,0,[[33,33,33,1,0]]],40,51,[],[],["Text",0,"20pt Changa One","rgb(255,255,255)",2,0,2,0,0]],[[1235,12,0,200,34,0,0,1,1,0,0,0,[[33,33,33,1,0]]],41,52,[],[],["Text",0,"16pt Changa One","rgb(250,205,51)",2,1,2,0,0]],[[-255,1229,0,100,166,0,0,1,0.5,0.4156626462936401,0,0,[]],44,55,[],[[],[]],[0,"Default",0,1]]],[["brightness","Brightness",[1]]]],["hud",3,116090611649182,true,[255,255,255],true,0,0,1,false,false,1,0,0,[[[294,1608,0,800,70,0,0,1,0,0,0,0,[]],11,13,[],[],["Text",0,"bold 14pt Arial","rgb(0,0,0)",0,0,0,0,0]],[[417,609,0,165,169,0,0,1,0.5030303001403809,0.5325443744659424,0,0,[]],27,36,[["RPM"]],[],[0,"Default",0,0]],[[615,607,0,165,169,0,0,1,0.5030303001403809,0.5325443744659424,0,0,[]],27,37,[["BOOST"]],[],[0,"Default",1,0]],[[81.81790161132813,82.81661987304688,0,77,77,0,0,1,0.5064935088157654,0.5064935088157654,0,0,[]],28,38,[[0],[0],[0],[0.5],[0.575],[400],[77],[77],[-1],[0]],[],[0,"Default",0,1]],[[136.8294677734375,79.74348449707031,0,150,50,0,0,1,0,0.5,0,0,[[33,33,33,1,0]]],29,39,[],[],["Text",0,"24pt Changa One","rgb(255,255,255)",0,1,3,0,0]],[[-148.6812744140625,274.5432434082031,0,389,318,0,0,1,0,0,0,0,[]],30,40,[],[],[93,100,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:?!-_~#\"'&()[]|`\\/@°+=*$£€<>","Text",0.5,0,0,0,0,0,0,0,"{\"\"c2array\"\":true,\"\"size\"\":[2,40,1],\"\"data\"\":[[[15],[19],[26],[27],[28],[29],[30],[32],[33],[36],[37],[38],[39],[40],[41],[42],[46],[47],[48],[52],[53],[56],[57],[58],[59],[60],[61],[62],[63],[64],[65],[66],[67],[68],[69],[72],[83],[85],[86],[91]],[[\"\" \"\"],[\"\"|\"\"],[\"\"I\"\"],[\"\"'\"\"],[\"\".,;:\"\"],[\"\"i\"\"],[\"\"!\"\"],[\"\"l\"\"],[\"\"()[]\"\"],[\"\"`\"\"],[\"\"-\"\"],[\"\"r\"\"],[\"\"jt\"\"],[\"\"J\"\"],[\"\"f\"\"],[\"\"°\"\"],[\"\"<>\"\"],[\"\"Lc\"\"],[\"\"F\"\"],[\"\"E?\"\"],[\"\"C\\\"\"+=\"\"],[\"\"sz*$\"\"],[\"\"T7\"\"],[\"\"hknu1\\\\/£\"\"],[\"\"abdepq3€\"\"],[\"\"Bvy\"\"],[\"\"KPSgo25689\"\"],[\"\"GRUZx0\"\"],[\"\"HN_\"\"],[\"\"Y\"\"],[\"\"D\"\"],[\"\"4~\"\"],[\"\"OX\"\"],[\"\"V\"\"],[\"\"Q&\"\"],[\"\"A\"\"],[\"\"#\"\"],[\"\"Mm\"\"],[\"\"w@\"\"],[\"\"W\"\"]]]}",-1]],[[932,670,0,138,207,0,0,1,0.2971014380455017,1,0,0,[]],32,42,[[""],["IDLE"],[0]],[],[0,"Default",0,1]],[[417,609,0,73,17,0,0,1,0.8904109597206116,0.529411792755127,0,0,[]],33,43,[[0],[0],[0],[2],[1],[0],[0]],[],[0,"Default",0,1]],[[615,607,0,73,17,0,-3.054326295852661,1,0.8904109597206116,0.529411792755127,0,0,[]],33,44,[[95],[0],[185],[2],[1],[0],[0]],[],[0,"Default",0,1]],[[558.5,45,0,200,75,0,0,1,0.5,0,0,0,[[33,33,33,1,0]]],34,45,[],[],["Text",0,"40pt Changa One","rgb(250,206,68)",1,0,1,0,0]],[[138.123779296875,152.5989379882813,0,124,21,0,0,1,0,0.5,0,0,[[0.9300000000000001,0.15,0.15]]],42,53,[["HUD"],[124],[0],[0],[0],[0],[0],[0],[""]],[],[0,3]],[[145.4376220703125,184.7249298095703,0,126,24,0,0,1,0,0.5,0,0,[]],43,54,[],[],[0,"Default",0,0]],[[-431,567,0,100,100,0,0,1,0.5,0.5,0,0,[]],69,83,[[""]],[],[0,"Default",0,1]],[[-439,642,0,125,65,0,0,1,1,0,0,0,[[33,33,33,1,0]]],70,84,[[""]],[],["Text",0,"18pt Changa One","rgb(250,206,68)",2,0,2,0,0]]],[]],["menu",4,604618933586574,true,[255,255,255],true,0,0,1,false,false,1,0,0,[[[586,146,0,561,256,0,0,1,0.5008912682533264,0.5,0,0,[]],45,56,[["logo"],[""]],[[1,0,18,"100,100",0,1,1]],[0,"Default",0,1]],[[556,-63,0,64,64,0,0,1,0.5,0.5,0,0,[]],46,57,[[0],[0],[0],[0.35],[0.45],[400],[77],[77],[-1],[0]],[[75,0],[]],[0,"Default",0,0]],[[640,400,0,310,113,0,0,1,0.5,0.5044247508049011,0,0,[]],47,58,[[0],[0],[0],[0.5],[0.575],[200],[77],[77],[0],[0.85],[0],[0],[1],[0],[0.85]],[],[0,"Default",0,1]],[[640,500,0,310,113,0,0,1,0.5,0.5044247508049011,0,0,[]],48,59,[[0],[0],[0],[0.5],[0.575],[100],[77],[77],[0],[0.75],[1],[0],[1],[0],[0.75]],[],[0,"Default",0,1]],[[-1157,599,0,672,690,0,0,1,0.5,0.9884058237075806,0,0,[]],58,69,[["logo"],[""]],[[0,9,18,"0.75",0,0.45,1]],[0,"Default",0,0]],[[-1191,962,0,292,119,0,0,1,0.5,0.5042017102241516,0,0,[]],59,70,[[20],[2],[1],[0],[0.55]],[],[0,"Default",0,1]],[[584,658,0,128,94,0,0,1,0.5,0.5,0,0,[]],60,71,[[0],[0],[0],[0.5],[0.575],[100],[77],[77],[0],[0.75],[5],[0],[1],[0],[0.75]],[],[0,"Default",1,1]],[[725,656,0,128,94,0,0,1,0.5,0.5,0,0,[]],61,72,[[0],[0],[0],[0.5],[0.575],[100],[77],[77],[0],[0.75],[6],[0],[1],[0],[0.75]],[],[0,"Default",1,1]],[[225,666,0,116,85,0,0,1,0.5,0.5058823823928833,0,0,[]],65,79,[[0],[0],[0],[0.5],[0.575],[400],[77],[77],[0],[0.85],[4],[0],[1],[0],[0.85]],[],[0,"Default",0,1]],[[210,447,0,116,85,0,0,1,0.5,0.5058823823928833,0,0,[]],66,80,[[0],[0],[0],[0.5],[0.575],[400],[77],[77],[0],[0.85],[3],[0],[1],[0],[0.85]],[],[0,"Default",0,1]],[[640,595,0,224,93,0,0,1,0.5,0.5053763389587402,0,0,[]],67,81,[[0],[0],[0],[0.5],[0.575],[400],[77],[77],[0],[0.85],[2],[0],[1],[0],[0.85]],[],[0,"Default",0,1]]],[]],["tutorial_bg",5,136825339506039,false,[0,0,0],false,0,0,0.25,false,false,1,0,0,[],[]],["tutorial",6,158211556045122,false,[255,255,255],true,0,0,1,false,false,1,0,0,[],[]],["flash",7,921665041804266,false,[0,0,0],false,1,1,1,false,false,1,0,0,[],[]],["selection_bg",8,200262077004007,false,[0,0,0],false,0,0,0.25,false,false,1,0,0,[],[]],["selection",9,638106780938384,false,[255,255,255],true,0,0,1,false,false,1,0,0,[[[640,360,0,876,599,0,0,1,0.5,0.5008347034454346,0,0,[]],52,63,[],[],[0,"Default",0,1]],[[439,240,0,175,186,0,0,1,0.5028571486473084,0.5,0,0,[]],53,64,[[0],[0],[0],[0],[0]],[],[0,"Default",0,1]],[[651,238,0,105,41,0,0,1,0.5047619342803955,0.5121951103210449,0,0,[]],55,66,[[0],[0],[0],[0.75],[1],[150],[77],[77],[-1],[0],[11],[1],[1],[0],[1]],[],[0,"Default",0,1]],[[621,352,0,200,50,0,0,1,0,0.5,0,0,[[33,33,33,1,0]]],56,67,[],[],["Text",0,"16pt Changa One","rgb(255,255,255)",0,1,3,0,0]],[[1021,115,0,82,83,0,0,1,0.5,0.5060241222381592,0,0,[]],57,68,[[10],[1],[1],[0],[1]],[],[0,"Default",0,1]]],[]],["overlay",10,737174848624036,false,[0,0,0],false,1,1,0.5,false,false,1,0,0,[],[]]],[[null,12,14,[],[],[10,1,1]],[null,20,29,[],[],[10,1,1]],[null,21,30,[],[],[10,1,1]],[null,54,65,[],[],[10,1,1]],[null,68,82,[],[],[10,1,1]]],[]],["loaderlayout",1280,720,false,"LoaderSheet",542078829082308,[["loading_bg",0,996521632035910,true,[75,202,239],false,0,0,1,false,false,1,0,0,[[[640,192,0,561,256,0,0,1,0.5008912682533264,0.5,0,0,[]],45,73,[["logo"],[""]],[[0,0,18,"100,100",0,1,1]],[0,"Default",0,1]]],[]],["loading",1,207360349185955,true,[255,255,255],true,1,1,1,false,false,1,0,0,[[[640,440,0,400,85,0,0,1,0.5,1,0,0,[]],62,74,[],[],["Loading ...",0,"22pt Changa One","rgb(255,255,255)",1,2,7,0,0]],[[640,500,0,398,120,0,0,1,0.5,0.5,0,0,[]],63,75,[],[],[0,"Default",0,1]],[[465,494,0,349,74,0,0,1,0,0.5,0,0,[]],64,76,[],[],[0,3]],[[778,287,0,32,32,0,0,1,0.5,0.5,0,0,[]],46,77,[[0],[0],[0],[0.35],[0.45],[400],[77],[77],[-1],[0]],[[75,0],[]],[0,"Default",0,0]],[[853,280,0,32,32,0,0,1,0.5,0.5,0,0,[]],46,78,[[0],[0],[0],[0.35],[0.45],[400],[77],[77],[-1],[0]],[[75,0],[]],[0,"Default",0,0]]],[]]],[],[]]],[["GameManager",[[2,"PlatformManager",false],[2,"CarManager",false],[2,"UIManager",false],[0,[true,"On Start of Layout"],false,null,990728617257414,[[-1,23,null,0,false,false,false,990728617257414,false,[[1,[2,"On Start of Layout"]]]]],[],[[0,null,false,null,730799314560504,[[-1,24,null,1,false,false,false,999478165883383,false]],[[81,25,null,226052173528885,false],[83,25,null,130041386804932,false],[0,26,null,849027420075566,false,[[1,[2,"Play_GpTrack"]],[13]]],[0,26,null,904456713378380,false,[[1,[2,"Destroy_Props"]],[13]]],[0,26,null,744237895290639,false,[[1,[2,"Init_Layout"]],[13]]],[0,26,null,431783967379006,false,[[1,[2,"Init_TrackData"]],[13]]],[0,26,null,622796687694496,false,[[1,[2,"Play_MM_Animation"]],[13,[7,[2,"forward"]]]]],[0,26,null,205467922033932,false,[[1,[2,"Init_PreGame"]],[13]]]],[[0,null,false,null,989025374555501,[[-1,27,null,0,false,false,false,138181769855310,false,[[11,"EXECUTE_ONCE"],[8,0],[7,[0,1]]]]],[],[[0,null,false,null,471168996562718,[[-1,27,null,0,false,false,false,418923127692419,false,[[11,"platform"],[8,0],[7,[23,"PLATFORM_GD"]]]]],[[51,28,null,346492242518764,false]]],[0,null,false,null,609335160974870,[],[[-1,29,null,515608719277261,false,[[11,"EXECUTE_ONCE"],[7,[0,0]]]],[0,26,null,484640965982119,false,[[1,[2,"Load_LocalProfile"]],[13]]]]]]],[0,null,false,null,966645278048570,[],[]]]]]],[1,"EXECUTE_ONCE",0,1,false,false,548275781276639,false],[1,"START_COINS",0,25,false,false,150633215466898,false],[0,[true,"STORAGE"],false,null,188171755689176,[[-1,23,null,0,false,false,false,188171755689176,false,[[1,[2,"STORAGE"]]]]],[]],[1,"PREFIX",1,"eggcar_",false,false,336380718670397,false],[0,[true,"Local Storage"],false,null,424935215473698,[[-1,23,null,0,false,false,false,424935215473698,false,[[1,[2,"Local Storage"]]]]],[],[[0,null,false,null,809952191908015,[[0,30,null,2,false,false,false,769655419968886,false,[[1,[2,"Load_LocalProfile"]]]]],[[31,31,null,939114157650097,false,[[1,[10,[23,"PREFIX"],[2,"coins"]]]]],[31,31,null,331306818995078,false,[[1,[10,[23,"PREFIX"],[2,"best"]]]]],[31,31,null,384545799005396,false,[[1,[10,[23,"PREFIX"],[2,"sound"]]]]],[31,31,null,191403403177162,false,[[1,[10,[23,"PREFIX"],[2,"music"]]]]],[31,31,null,390242281757102,false,[[1,[10,[23,"PREFIX"],[2,"lockkey"]]]]]]],[0,null,false,null,380010360618177,[[31,32,null,1,false,false,false,753398083343666,false]],[],[[0,null,false,null,428719398498737,[[-1,33,null,0,false,false,false,402741051596708,false,[[7,[20,31,34,true,null]],[8,0],[7,[10,[23,"PREFIX"],[2,"coins"]]]]]],[],[[0,null,false,null,957626841548592,[[-1,33,null,0,false,false,false,342218669769664,false,[[7,[20,31,35,false,null]],[8,1],[7,[2,""]]]]],[[0,26,null,854701060983769,false,[[1,[2,"Update_Coins"]],[13,[7,[19,36,[[20,31,35,false,null]]]]]]]]],[0,null,false,null,388474372696432,[[-1,37,null,0,false,false,false,409924843871840,false]],[[0,26,null,948538328864309,false,[[1,[2,"Update_Coins"]],[13,[7,[23,"START_COINS"]]]]]]]]],[0,null,false,null,255098971589770,[[-1,33,null,0,false,false,false,947872276719942,false,[[7,[20,31,34,true,null]],[8,0],[7,[10,[23,"PREFIX"],[2,"best"]]]]]],[],[[0,null,false,null,213971226757258,[[-1,33,null,0,false,false,false,442639168646051,false,[[7,[20,31,35,false,null]],[8,1],[7,[2,""]]]]],[[0,26,null,172283259088753,false,[[1,[2,"Update_BestDistance"]],[13,[7,[19,36,[[20,31,35,false,null]]]]]]]]],[0,null,false,null,927308391783351,[[-1,37,null,0,false,false,false,854182238244843,false]],[[0,26,null,414988891474209,false,[[1,[2,"Update_BestDistance"]],[13,[7,[0,0]]]]]]]]],[0,null,false,null,720262233817508,[[-1,33,null,0,false,false,false,111621608260210,false,[[7,[20,31,34,true,null]],[8,0],[7,[10,[23,"PREFIX"],[2,"sound"]]]]]],[],[[0,null,false,null,911812346612034,[[-1,33,null,0,false,false,false,789729958156357,false,[[7,[20,31,35,false,null]],[8,1],[7,[2,""]]]]],[[0,26,null,484511414312580,false,[[1,[2,"Update_Sound"]],[13,[7,[19,36,[[20,31,35,false,null]]]]]]]]]]],[0,null,false,null,564417152850002,[[-1,33,null,0,false,false,false,114060698504729,false,[[7,[20,31,34,true,null]],[8,0],[7,[10,[23,"PREFIX"],[2,"music"]]]]]],[],[[0,null,false,null,299695480617218,[[-1,33,null,0,false,false,false,608715229950657,false,[[7,[20,31,35,false,null]],[8,1],[7,[2,""]]]]],[[0,26,null,576000291899943,false,[[1,[2,"Update_Music"]],[13,[7,[19,36,[[20,31,35,false,null]]]]]]]]]]],[0,null,false,null,738581440543574,[[-1,33,null,0,false,false,false,634775470741324,false,[[7,[20,31,34,true,null]],[8,0],[7,[10,[23,"PREFIX"],[2,"lockkey"]]]]]],[],[[0,null,false,null,808367693204323,[[-1,33,null,0,false,false,false,255065137061920,false,[[7,[20,31,35,false,null]],[8,1],[7,[2,""]]]]],[[0,26,null,234165333378802,false,[[1,[2,"Parse_LockKey"]],[13,[7,[20,31,35,false,null]]]]]]]]]]],[0,null,false,null,302952687756021,[[0,30,null,2,false,false,false,103505011936217,false,[[1,[2,"Parse_LockKey"]]]]],[],[[1,"saveString",1,"",false,false,709798764278237,false],[0,null,false,null,290779289341357,[],[[-1,29,null,335606683271961,false,[[11,"saveString"],[7,[20,0,38,false,null,[[0,0]]]]]]]],[0,null,false,null,568028675497600,[[-1,39,null,0,true,false,false,151119990746707,false,[[0,[23,"MAX_SKINS"]]]]],[[54,40,null,464923371353318,false,[[0,[19,41]],[7,[19,36,[[19,42,[[23,"saveString"],[19,41],[2,"|"]]]]]]]]]]]],[0,null,false,null,590414409908951,[[0,30,null,2,false,false,false,640014956010873,false,[[1,[2,"Save_LockKey"]]]]],[],[[1,"saveString",1,"",false,false,572603448134574,false],[0,null,false,null,773854481650007,[[-1,39,null,0,true,false,false,342020820519407,false,[[0,[23,"MAX_SKINS"]]]]],[],[[0,null,false,null,726755616792121,[[-1,33,null,0,false,false,false,577170852204726,false,[[7,[19,41]],[8,2],[7,[5,[23,"MAX_SKINS"],[0,1]]]]]],[[-1,29,null,396362547629928,false,[[11,"saveString"],[7,[10,[10,[23,"saveString"],[20,54,43,false,null,[[19,41]]]],[2,"|"]]]]]]],[0,null,false,null,461499353067110,[[-1,33,null,0,false,false,false,170308212777089,false,[[7,[19,41]],[8,0],[7,[5,[23,"MAX_SKINS"],[0,1]]]]]],[[-1,29,null,715216997126831,false,[[11,"saveString"],[7,[10,[23,"saveString"],[20,54,43,false,null,[[19,41]]]]]]]]]]],[0,null,false,null,826698098549562,[],[[31,44,null,443119887027924,false,[[1,[10,[23,"PREFIX"],[2,"lockkey"]]],[7,[23,"saveString"]]]]]]]]]],[0,[true,"User Params"],false,null,866090913860874,[[-1,23,null,0,false,false,false,866090913860874,false,[[1,[2,"User Params"]]]]],[]],[1,"myCoins",0,0,false,false,925009367024982,false],[1,"myScore",0,0,false,false,536407654593874,false],[1,"myLastDistance",0,0,false,false,162803993198861,false],[1,"myBestDistance",0,0,false,false,848828147650913,false],[1,"myPreRecordBeaten",0,0,false,false,421662785088816,false],[0,[true,"Uses Preferences"],false,null,247162104959040,[[-1,23,null,0,false,false,false,247162104959040,false,[[1,[2,"Uses Preferences"]]]]],[],[[0,null,false,null,461635448476941,[[0,30,null,2,false,false,false,181549610665431,false,[[1,[2,"Update_Coins"]]]]],[[-1,29,null,337968122839000,false,[[11,"myCoins"],[7,[20,0,38,false,null,[[0,0]]]]]],[31,44,null,301883031251877,false,[[1,[10,[23,"PREFIX"],[2,"coins"]]],[7,[23,"myCoins"]]]],[29,45,null,511014535838775,false,[[7,[23,"myCoins"]]]]]],[0,null,false,null,495817978338706,[[0,30,null,2,false,false,false,416167814974308,false,[[1,[2,"Update_BestDistance"]]]]],[[-1,29,null,796170983874069,false,[[11,"myBestDistance"],[7,[20,0,38,false,null,[[0,0]]]]]],[31,44,null,669521366579201,false,[[1,[10,[23,"PREFIX"],[2,"best"]]],[7,[23,"myBestDistance"]]]]]],[0,null,false,null,671797946135301,[[0,30,null,2,false,false,false,271923743228005,false,[[1,[2,"Update_Score"]]]]],[[-1,29,null,554065366738627,false,[[11,"myScore"],[7,[20,0,38,false,null,[[0,0]]]]]],[34,45,null,997614812950102,false,[[7,[10,[23,"myScore"],[2,"m"]]]]]],[[0,null,false,null,183769608884025,[[-1,27,null,0,false,false,false,986468962483867,false,[[11,"myBestDistance"],[8,1],[7,[0,0]]]]],[],[[0,null,false,null,215356396857096,[[-1,27,null,0,false,false,false,908793530525561,false,[[11,"myPreRecordBeaten"],[8,0],[7,[0,1]]]]],[[40,45,null,444575365633480,false,[[7,[10,[19,46,[[23,"myScore"],[19,36,[[6,[23,"myBestDistance"],[23,"SCORE_PER_PIXEL"]]]],[19,47]]],[2,"m"]]]]]]]]]]]]],[0,[true," Layout Params"],false,null,820859247570866,[[-1,23,null,0,false,false,false,820859247570866,false,[[1,[2," Layout Params"]]]]],[]],[1,"canvasWidth",0,0,false,false,649624717334055,false],[1,"canvasHeight",0,0,false,false,567330587603975,false],[1,"CANVAS_WIDTH",0,1280,false,false,504310959155005,false],[1,"CANVAS_HEIGHT",0,720,false,false,991893344878627,false],[1,"CANVAS_MID_X",0,0,false,false,665686665232915,false],[1,"CANVAS_MID_Y",0,0,false,false,772617476044288,false],[1,"canvasDeltaWidth",0,0,false,false,944334487217682,false],[1,"canvasDeltaHeight",0,0,false,false,479593720758289,false],[0,[true," Layout"],false,null,311076216714241,[[-1,23,null,0,false,false,false,311076216714241,false,[[1,[2," Layout"]]]]],[],[[0,null,false,null,736960205266658,[[0,30,null,2,false,false,false,408432197520810,false,[[1,[2,"Init_Layout"]]]]],[],[[0,null,false,null,338488814499947,[[-1,33,null,0,false,false,false,718549576879822,false,[[7,[19,48]],[8,0],[7,[2,"gamelayout"]]]]],[[-1,29,null,126799655868186,false,[[11,"CANVAS_MID_X"],[7,[6,[23,"CANVAS_WIDTH"],[1,0.5]]]]],[-1,29,null,199302616947421,false,[[11,"CANVAS_MID_Y"],[7,[6,[23,"CANVAS_HEIGHT"],[1,0.5]]]]],[-1,29,null,836443969200982,false,[[11,"canvasWidth"],[7,[5,[19,49,[[2,"hud"]]],[19,50,[[2,"hud"]]]]]]],[-1,29,null,824036948115675,false,[[11,"canvasHeight"],[7,[5,[19,51,[[2,"hud"]]],[19,52,[[2,"hud"]]]]]]],[-1,29,null,408359656809404,false,[[11,"canvasDeltaWidth"],[7,[5,[23,"canvasWidth"],[23,"CANVAS_WIDTH"]]]]],[-1,29,null,245097435480222,false,[[11,"canvasDeltaHeight"],[7,[5,[23,"canvasHeight"],[23,"CANVAS_HEIGHT"]]]]],[60,53,null,926536915448573,false,[[0,[4,[6,[3,[23,"canvasDeltaWidth"]],[1,0.5]],[0,60]]],[0,[4,[6,[3,[23,"canvasDeltaHeight"]],[1,0.5]],[0,50]]]]],[61,53,null,306065819293829,false,[[0,[5,[4,[23,"CANVAS_WIDTH"],[6,[23,"canvasDeltaWidth"],[1,0.5]]],[0,60]]],[0,[4,[6,[3,[23,"canvasDeltaHeight"]],[1,0.5]],[0,50]]]]],[65,53,null,766439569982447,false,[[0,[4,[6,[3,[23,"canvasDeltaWidth"]],[1,0.5]],[0,160]]],[0,[4,[6,[3,[23,"canvasDeltaHeight"]],[1,0.5]],[0,50]]]]],[66,53,null,522038314645816,false,[[0,[5,[4,[23,"CANVAS_WIDTH"],[6,[23,"canvasDeltaWidth"],[1,0.5]]],[0,160]]],[0,[4,[6,[3,[23,"canvasDeltaHeight"]],[1,0.5]],[0,50]]]]]],[[0,null,false,null,389051117448561,[[-1,27,null,0,false,false,false,941757520641249,false,[[11,"platform"],[8,1],[7,[23,"PLATFORM_FACEBOOK"]]]]],[[67,25,null,931891489575476,false],[65,25,null,101157885856693,false],[66,25,null,756022020748128,false]]]]]]]]],[0,[true,"Track Params"],false,null,743720788646250,[[-1,23,null,0,false,false,false,743720788646250,false,[[1,[2,"Track Params"]]]]],[]],[1,"TRACK_FRAMES",0,18,false,false,152153420929489,false],[1,"TRACK_UNIT_WIDTH",0,1536,false,false,740219448412646,false],[1,"TRACK_CHUNK_SIZE",0,5,false,false,712369006798388,false],[1,"TRACK_CHUNKS",0,8,false,false,971237539595264,false],[1,"TRACK_POS_Y",0,1440,false,false,528251733418207,false],[1,"TRACK_START_X",0,-500,false,false,444424934998042,false],[1,"trackSpawnX",0,0,false,false,490339833686346,false],[1,"chunkNo",0,0,false,false,669042399287224,false],[1,"trackTraceX",0,0,false,false,471837870337532,false],[1,"trackTraceX2",0,0,false,false,714996127780880,false],[0,[true,"Track"],false,null,410675441414955,[[-1,23,null,0,false,false,false,410675441414955,false,[[1,[2,"Track"]]]]],[],[[0,null,false,null,537167947413148,[[0,30,null,2,false,false,false,818271821014176,false,[[1,[2,"Init_TrackData"]]]]],[[21,54,null,108705903865104,false,[[0,[0,0]],[0,[0,1]],[0,[0,1]]]],[21,55,null,374396656643559,false,[[3,0],[7,[0,0]],[3,0]]]],[[1,"ind",0,0,false,false,856453917378342,false],[0,null,false,null,640127617641835,[[-1,56,null,0,true,false,false,605738294455533,false,[[1,[2,"i"]],[0,[0,0]],[0,[5,[23,"TRACK_CHUNKS"],[0,1]]]]]],[[20,54,null,729817707816958,false,[[0,[23,"TRACK_CHUNK_SIZE"]],[0,[0,1]],[0,[0,1]]]]],[[0,null,false,null,316242946295484,[[-1,39,null,0,true,false,false,952619086397562,false,[[0,[23,"TRACK_CHUNK_SIZE"]]]]],[[20,40,null,931255627015548,false,[[0,[19,41]],[7,[4,[4,[6,[19,41,[[2,"i"]]],[0,2]],[19,41]],[0,1]]]]]]],[0,null,false,null,451657535475925,[[-1,39,null,0,true,false,false,691421801696152,false,[[0,[23,"TRACK_CHUNK_SIZE"]]]]],[[-1,29,null,397199071380085,false,[[11,"ind"],[7,[19,36,[[19,57,[[20,20,58,false,null]]]]]]]],[21,55,null,812857642305512,false,[[3,0],[7,[20,20,43,false,null,[[23,"ind"]]]],[3,0]]],[20,59,null,126533686422895,false,[[0,[23,"ind"]],[3,0]]]]],[0,null,false,null,388276765366065,[[-1,33,null,0,false,false,false,354241929371968,false,[[7,[19,41,[[2,"i"]]]],[8,0],[7,[5,[23,"TRACK_CHUNKS"],[0,1]]]]]],[],[[0,null,false,null,613626021808415,[[-1,39,null,0,true,false,false,388021171731442,false,[[0,[5,[23,"TRACK_CHUNK_SIZE"],[0,1]]]]]],[[21,55,null,141040003289601,false,[[3,0],[7,[4,[19,41],[0,1]]],[3,0]]]]]]]]]]],[0,null,false,null,388428194977842,[[0,30,null,2,false,false,false,739270433278861,false,[[1,[2,"Init_Track"]]]]],[[74,25,null,882203844782810,false],[83,25,null,762695306305534,false],[81,25,null,451434675442334,false],[26,25,null,847453292189307,false],[-1,29,null,194456088553247,false,[[11,"trackSpawnX"],[7,[23,"TRACK_START_X"]]]],[-1,29,null,464197490319399,false,[[11,"chunkNo"],[7,[0,-1]]]],[-1,29,null,266697842961243,false,[[11,"trackTraceX"],[7,[5,[4,[23,"TRACK_START_X"],[6,[6,[1,1.5],[23,"TRACK_CHUNK_SIZE"]],[23,"TRACK_UNIT_WIDTH"]]],[6,[23,"TRACK_UNIT_WIDTH"],[1,0.5]]]]]]],[[0,null,false,null,918923413824990,[[-1,39,null,0,true,false,false,778399671945655,false,[[0,[0,3]]]]],[[0,26,null,951288805911054,false,[[1,[2,"Spawn_aTrackChunk"]],[13]]]]]]],[0,null,false,null,643377502522982,[[0,30,null,2,false,false,false,955132789452191,false,[[1,[2,"Spawn_aTrackChunk"]]]]],[[-1,60,null,753778241231172,false,[[11,"chunkNo"],[7,[0,1]]]]],[[1,"isTriggerChunk",0,0,false,false,993962527633049,false],[0,null,false,null,560624770381898,[[-1,39,null,0,true,false,false,218188536310107,false,[[0,[23,"TRACK_CHUNK_SIZE"]]]]],[[0,26,null,359384208302232,false,[[1,[2,"Spawn_aTrack"]],[13,[7,[20,21,43,false,null,[[4,[6,[23,"chunkNo"],[23,"TRACK_CHUNK_SIZE"]],[19,41]]]]],[7,[23,"chunkNo"]],[7,[19,41]]]]]]]]],[0,null,false,null,662364226500657,[[0,30,null,2,false,false,false,283638964852438,false,[[1,[2,"Spawn_aTrack"]]]]],[[-1,61,null,108331033041883,false,[[4,6],[5,[2,"track"]],[0,[23,"trackSpawnX"]],[0,[23,"TRACK_POS_Y"]]]],[6,62,null,497982131573200,false,[[0,[20,0,38,false,null,[[0,0]]]]]],[6,63,null,479168732404709,false,[[10,0],[7,[20,0,38,false,null,[[0,1]]]]]],[6,63,null,420752899734646,false,[[10,1],[7,[20,0,38,false,null,[[0,2]]]]]],[-1,60,null,482890061244613,false,[[11,"trackSpawnX"],[7,[23,"TRACK_UNIT_WIDTH"]]]]],[[0,null,false,null,895152604778120,[[6,64,null,0,false,false,false,778355634484534,false,[[8,0],[0,[0,1]]]]],[[6,63,null,781178465256844,false,[[10,2],[7,[0,7]]]]]],[0,null,true,null,649444832393868,[[6,64,null,0,false,false,false,768149344558681,false,[[8,0],[0,[0,2]]]],[6,64,null,0,false,false,false,667602374429293,false,[[8,0],[0,[0,3]]]],[6,64,null,0,false,false,false,203942973386118,false,[[8,0],[0,[0,6]]]],[6,64,null,0,false,false,false,212559965077726,false,[[8,0],[0,[0,7]]]],[6,64,null,0,false,false,false,323322389426356,false,[[8,0],[0,[0,10]]]],[6,64,null,0,false,false,false,497358608024311,false,[[8,0],[0,[0,11]]]],[6,64,null,0,false,false,false,701276576071463,false,[[8,0],[0,[0,12]]]],[6,64,null,0,false,false,false,867070772108549,false,[[8,0],[0,[0,13]]]],[6,64,null,0,false,false,false,686146820762032,false,[[8,0],[0,[0,17]]]]],[[6,63,null,994636184434817,false,[[10,2],[7,[0,5]]]]]],[0,null,true,null,786067795148529,[[6,64,null,0,false,false,false,919800142842229,false,[[8,0],[0,[0,4]]]],[6,64,null,0,false,false,false,770267250856990,false,[[8,0],[0,[0,8]]]],[6,64,null,0,false,false,false,553183605108644,false,[[8,0],[0,[0,9]]]]],[[6,63,null,971112525597742,false,[[10,2],[7,[0,6]]]]]],[0,null,true,null,926733930269613,[[6,64,null,0,false,false,false,869176794006339,false,[[8,0],[0,[0,5]]]],[6,64,null,0,false,false,false,322137935441754,false,[[8,0],[0,[0,14]]]],[6,64,null,0,false,false,false,991223907216166,false,[[8,0],[0,[0,15]]]],[6,64,null,0,false,false,false,519765290662407,false,[[8,0],[0,[0,16]]]]],[[6,63,null,770170243000931,false,[[10,2],[7,[0,4]]]]]],[0,null,false,null,956495763962661,[[-1,39,null,0,true,false,false,732174759429699,false,[[0,[21,6,false,null,2]]]]],[[-1,61,null,704398916605024,false,[[4,23],[5,[2,"track"]],[0,[20,6,65,false,null,[[10,[2,"coin_p"],[19,41]]]]],[0,[4,[20,6,66,false,null,[[10,[2,"coin_p"],[19,41]]]],[0,5]]]]]]],[0,null,false,null,426658881520619,[[6,67,null,0,false,false,false,251717797519682,false,[[10,1],[8,0],[7,[0,2]]]]],[[0,26,null,833730161675056,false,[[1,[2,"Spawn_aPowerUp"]],[13,[7,[20,6,65,false,null,[[2,"power_up"]]]],[7,[20,6,66,false,null,[[2,"power_up"]]]],[7,[19,68,[[2,"FREEZE"],[2,"MAGNET"]]]]]]]]],[0,null,false,null,753120119510402,[],[]]]],[0,null,false,null,724500777646472,[[0,30,null,2,false,false,false,417598177808988,false,[[1,[2,"On_TrackMid_Covered"]]]]],[[9,69,null,834627371828335,false,[[3,0],[7,[2,""]]]],[-1,60,null,913983907892311,false,[[11,"trackTraceX"],[7,[6,[23,"TRACK_CHUNK_SIZE"],[23,"TRACK_UNIT_WIDTH"]]]]]],[[0,null,false,null,514617009646078,[[74,67,null,0,false,false,false,895358423586741,false,[[10,0],[8,0],[7,[5,[23,"chunkNo"],[0,3]]]]]],[[0,26,null,394177119701860,false,[[1,[2,"Destroy_This_TrackChunk"]],[13,[7,[21,74,false,null,0]]]]]]],[0,null,false,null,193560267202302,[[74,67,null,0,false,false,false,920410944045111,false,[[10,0],[8,0],[7,[5,[23,"chunkNo"],[0,2]]]]]],[],[[0,null,false,null,718048869770936,[[74,67,null,0,false,false,false,328708443133390,false,[[10,1],[8,0],[7,[5,[23,"TRACK_CHUNK_SIZE"],[0,1]]]]]],[[-1,61,null,203249864428260,false,[[4,22],[5,[2,"track"]],[0,[20,74,65,false,null,[[2,"right"]]]],[0,[20,74,66,false,null,[[2,"right"]]]]]]]]]],[0,null,false,null,662259695137957,[[74,67,null,0,false,false,false,523219932950758,false,[[10,0],[8,5],[7,[23,"TRACK_CHUNKS"]]]]],[],[[0,null,false,null,220625051191690,[[-1,39,null,0,true,false,false,955666051462116,false,[[0,[23,"TRACK_CHUNK_SIZE"]]]]],[[21,55,null,924634456425842,false,[[3,0],[7,[4,[0,13],[19,36,[[19,57,[[0,5]]]]]]],[3,0]]]]]]],[0,null,false,null,554844860703545,[],[[0,26,null,558154221343581,false,[[1,[2,"Spawn_aTrackChunk"]],[13]]]]]]],[0,null,false,null,769648508840369,[[0,30,null,2,false,false,false,545978088652532,false,[[1,[2,"Destroy_This_TrackChunk"]]]]],[],[[0,null,false,null,971669625025442,[[74,67,null,0,false,false,false,231061165079985,false,[[10,0],[8,0],[7,[20,0,38,false,null,[[0,0]]]]]]],[[74,25,null,880335809004239,false]]]]]]],[0,[true,"Power Ups Params"],false,null,979306291238837,[[-1,23,null,0,false,false,false,979306291238837,false,[[1,[2,"Power Ups Params"]]]]],[]],[1,"MAGNET_TIME",0,6,false,false,670345262987024,false],[1,"FREEZE_TIME",0,4,false,false,309093370166949,false],[0,[true,"Power Ups"],false,null,190246459742705,[[-1,23,null,0,false,false,false,190246459742705,false,[[1,[2,"Power Ups"]]]]],[],[[0,null,false,null,879381637302131,[[0,30,null,2,false,false,false,544756987139735,false,[[1,[2,"Spawn_aPowerUp"]]]]],[[-1,61,null,624374165193683,false,[[4,26],[5,[2,"track"]],[0,[20,0,38,false,null,[[0,0]]]],[0,[20,0,38,false,null,[[0,1]]]]]],[-1,61,null,476335151780746,false,[[4,25],[5,[2,"track"]],[0,[20,0,38,false,null,[[0,0]]]],[0,[20,0,38,false,null,[[0,1]]]]]],[25,63,null,968409174557607,false,[[10,4],[7,[20,26,70,false,null]]]],[25,63,null,119467451560469,false,[[10,3],[7,[20,0,38,false,null,[[0,2]]]]]]],[[0,null,false,null,129836426083615,[[0,71,null,0,false,false,false,701500952811546,false,[[0,[0,2]],[8,0],[7,[2,"MAGNET"]]]]],[[25,63,null,332082286202484,false,[[10,5],[7,[23,"MAGNET_TIME"]]]],[25,72,null,193693038398400,false,[[0,[1,0.75]]]],[25,63,null,697749042641726,false,[[10,1],[7,[20,25,73,false,null]]]],[25,63,null,918039346052709,false,[[10,2],[7,[20,25,74,false,null]]]],[25,62,null,914994953364111,false,[[0,[0,0]]]],[26,72,null,947626102049996,false,[[0,[1,0.5]]]],[26,75,"Sine",195284671271279,false],[26,76,"Pin",186942129909556,false,[[4,25],[3,1]]]]],[0,null,false,null,728292789557356,[[0,71,null,0,false,false,false,192046844881757,false,[[0,[0,2]],[8,0],[7,[2,"FREEZE"]]]]],[[25,63,null,395427131005051,false,[[10,5],[7,[23,"FREEZE_TIME"]]]],[25,72,null,336085872967439,false,[[0,[1,0.85]]]],[25,63,null,368297811943689,false,[[10,1],[7,[20,25,73,false,null]]]],[25,63,null,800658677748378,false,[[10,2],[7,[20,25,74,false,null]]]],[25,62,null,991881625851354,false,[[0,[0,1]]]],[26,72,null,386294665174990,false,[[0,[1,0.5]]]],[26,75,"Sine",867989170495663,false],[26,76,"Pin",572990281883197,false,[[4,25],[3,1]]]]]]],[0,null,false,null,856084650504685,[[0,30,null,2,false,false,false,531043529533752,false,[[1,[2,"Pick_aPowerUp"]]]]],[],[[0,null,false,null,546198922839836,[[81,77,null,0,false,false,true,682983466995248,false,[[0,[20,0,38,false,null,[[0,0]]]]]]],[[81,78,null,619611789910255,false,[[10,0],[3,1]]],[0,26,null,266293774890609,false,[[1,[2,"Activate_aPowerBar"]],[13,[7,[21,81,true,null,3]],[7,[21,81,false,null,5]]]]]],[[0,null,false,null,107461684836105,[[71,79,null,0,false,false,false,316132213000073,false,[[10,5]]]],[],[[0,null,false,null,577374346038826,[[81,67,null,0,false,false,false,397852543034170,false,[[10,3],[8,0],[7,[2,"MAGNET"]]]]],[[71,78,null,197881915292169,false,[[10,13],[3,1]]]]],[0,null,false,null,796000847420000,[[81,67,null,0,false,false,false,167138834368187,false,[[10,3],[8,0],[7,[2,"FREEZE"]]]]],[[71,78,null,304888870640405,false,[[10,14],[3,1]]]],[[0,null,false,null,661431451235460,[[73,80,"Chipmunk",0,false,true,false,622921013182021,false]],[[73,81,"Chipmunk",987809242890104,false,[[3,0]]],[73,76,"Pin",926069479824789,false,[[4,71],[3,0]]],[73,82,null,386034115377396,false,[[4,44],[5,[2,"track"]],[7,[0,0]]]],[44,72,null,158556648137965,false,[[0,[23,"EGG_SCALE"]]]],[44,83,null,686188652901297,false,[[0,[20,73,84,false,null]]]],[44,76,"Pin",298753171615990,false,[[4,73],[3,0]]],[0,26,null,860236463220073,false,[[1,[2,"Play_GpSound"]],[13,[7,[2,"ice"]]]]]]]]]]],[0,null,false,null,840739896726121,[[26,77,null,0,false,false,true,870948989344288,false,[[0,[21,81,false,null,4]]]]],[[26,25,null,827518171790592,false]]]]]]],[0,null,false,null,471743485058267,[[81,79,null,0,false,false,false,961351830220031,false,[[10,0]]]],[[81,85,null,831088011554311,false,[[0,[5,[20,81,86,false,null],[6,[0,200],[19,87]]]]]],[81,88,null,867705593784601,false,[[0,[5,[20,81,89,false,null],[6,[0,200],[19,87]]]]]]],[[0,null,false,null,154459014944370,[[81,90,null,0,false,false,false,259643618897835,false,[[8,3],[0,[0,0]]]]],[[81,25,null,934296823327656,false]]]]],[0,null,false,null,296988038968650,[[0,30,null,2,false,false,false,390485956869036,false,[[1,[2,"Destroy_PowerUps"]]]]],[[81,25,null,831476274225764,false],[26,25,null,227688767158304,false]]]]],[0,[true,"Coins"],false,null,826232856607046,[[-1,23,null,0,false,false,false,826232856607046,false,[[1,[2,"Coins"]]]]],[],[[0,null,false,null,959263935126759,[[0,30,null,2,false,false,false,199589632171551,false,[[1,[2,"Pick_aCoin"]]]]],[],[[1,"beforeLastX",0,0,false,false,290713513031859,false],[1,"beforeLastY",0,0,false,false,138758675563261,false],[1,"acuDistance",0,0,false,false,759865204381436,false],[1,"directionAngle",0,0,false,false,563802270222173,false],[1,"oY",0,75,false,false,569879109850544,false],[0,null,false,null,126973433977447,[[83,77,null,0,false,false,true,889500829556510,false,[[0,[20,0,38,false,null,[[0,0]]]]]]],[[0,26,null,519084110400795,false,[[1,[2,"Play_GpSound"]],[13,[7,[2,"coin"]]]]],[83,78,null,732139218941500,false,[[10,0],[3,1]]],[83,78,null,549390077483889,false,[[10,1],[3,0]]],[83,91,null,728491042585143,false,[[5,[2,"hud"]]]],[83,92,null,233572404956215,false],[83,53,null,455919466210849,false,[[0,[4,[5,[20,83,93,false,null],[19,94]],[23,"CANVAS_MID_X"]]],[0,[4,[5,[20,83,86,false,null],[19,95]],[23,"CANVAS_MID_Y"]]]]],[-1,29,null,937869152845332,false,[[11,"beforeLastX"],[7,[4,[20,28,93,false,null],[0,25]]]]],[-1,29,null,992069629942813,false,[[11,"beforeLastY"],[7,[4,[20,28,86,false,null],[0,35]]]]],[-1,29,null,661631044978626,false,[[11,"acuDistance"],[7,[19,96,[[20,83,93,false,null],[5,[20,83,86,false,null],[23,"oY"]],[23,"beforeLastX"],[23,"beforeLastY"]]]]]],[-1,29,null,184187144565938,false,[[11,"directionAngle"],[7,[19,97,[[20,83,93,false,null],[5,[20,83,86,false,null],[23,"oY"]],[23,"beforeLastX"],[23,"beforeLastY"]]]]]]],[[0,null,false,null,700984253443349,[],[[83,98,null,428916916578558,false],[83,62,null,294766537750232,false,[[0,[0,0]]]],[83,99,"Spline",218220171353619,false],[83,100,"Spline",557882670075141,false,[[0,[20,83,93,false,null]],[0,[20,83,86,false,null]]]],[83,100,"Spline",713455142004980,false,[[0,[20,83,93,false,null]],[0,[5,[20,83,86,false,null],[23,"oY"]]]]],[83,100,"Spline",377175054678313,false,[[0,[4,[20,83,93,false,null],[6,[6,[1,0.5],[23,"acuDistance"]],[19,101,[[23,"directionAngle"]]]]]],[0,[4,[5,[20,83,86,false,null],[23,"oY"]],[6,[6,[1,0.5],[23,"acuDistance"]],[19,102,[[23,"directionAngle"]]]]]]]],[83,100,"Spline",701406237433349,false,[[0,[23,"beforeLastX"]],[0,[23,"beforeLastY"]]]],[83,100,"Spline",216031031226025,false,[[0,[20,28,93,false,null]],[0,[20,28,86,false,null]]]],[83,103,"Spline",376160298145360,false],[83,104,"Fade",383039279289533,false]]]]]]],[0,null,false,null,576612736025000,[[83,105,"Spline",1,false,false,false,465760410048109,false]],[],[[0,null,false,null,419572366506438,[[-1,106,null,0,true,false,false,831319783392108,false,[[4,83]]]],[[83,25,null,280478574318639,false],[0,26,null,203478524102700,false,[[1,[2,"Play_GpSound"]],[13,[7,[2,"coin_collect"]]]]],[0,26,null,862923441165914,false,[[1,[2,"Update_Coins"]],[13,[7,[4,[23,"myCoins"],[0,1]]]]]],[0,26,null,902148239333066,false,[[1,[2,"Play_CoinIcon_Animation"]],[13]]]]]]],[0,null,false,null,243905903608229,[[83,79,null,0,false,false,false,997211884438311,false,[[10,1]]]],[[83,107,null,642336366818120,false,[[0,[19,97,[[20,83,93,false,null],[20,83,86,false,null],[20,71,93,false,null],[20,71,86,false,null]]]],[0,[6,[0,800],[19,87]]]]]],[[0,null,false,null,781661155336083,[[83,108,null,0,false,false,false,519045069950443,false,[[4,74],[0,[0,0]],[0,[0,25]]]]],[[83,85,null,274869430759891,false,[[0,[5,[20,83,86,false,null],[6,[0,250],[19,87]]]]]]]],[0,null,false,null,808648363592758,[[83,108,null,0,false,true,false,420236375163921,false,[[4,74],[0,[0,0]],[0,[0,40]]]]],[[83,85,null,715551557525381,false,[[0,[4,[20,83,86,false,null],[6,[0,250],[19,87]]]]]]]]]]]],[0,[true,"Control Params"],false,null,301741459470168,[[-1,23,null,0,false,false,false,301741459470168,false,[[1,[2,"Control Params"]]]]],[]],[1,"gameSequence",0,0,false,false,786045216911323,false],[1,"soundOn",0,1,false,false,628880825676308,false],[1,"isTutorialActive",0,1,false,false,887738943596555,false],[1,"musicOn",0,1,false,false,486475731544481,false],[1,"DEBUG_MODE",0,0,false,false,877571498333277,false],[1,"GAME_START",0,0,false,false,237216155741071,false],[1,"playCount",0,0,false,false,961953942609942,false],[1,"saveGS",0,0,false,false,911926045797493,false],[0,[true,"Game Manager"],false,null,454070649154455,[[-1,23,null,0,false,false,false,454070649154455,false,[[1,[2,"Game Manager"]]]]],[],[[0,null,false,null,717158303815325,[[0,30,null,2,false,false,false,923748497223632,false,[[1,[2,"Init_PreGame"]]]]],[[0,26,null,399740093430801,false,[[1,[2,"Clean_CarManager"]],[13]]],[-1,109,null,358516341727325,false,[[0,[23,"startX"]],[0,[5,[19,110],[0,700]]]]],[0,26,null,393843021521817,false,[[1,[2,"Destroy_Hud"]],[13]]],[0,26,null,120486225044053,false,[[1,[2,"Init_Track"]],[13]]],[0,26,null,632796940666401,false,[[1,[2,"Init_Props"]],[13]]]]],[0,null,false,null,397694503518675,[[0,30,null,2,false,false,false,270818355406562,false,[[1,[2,"Start_Game"]]]]],[[-1,60,null,900543748567619,false,[[11,"playCount"],[7,[0,1]]]],[0,26,null,264855384269107,false,[[1,[2,"Init_CarManager"]],[13]]],[0,26,null,302874831396705,false,[[1,[2,"Init_Hud"]],[13]]],[-1,29,null,817157098802436,false,[[11,"GAME_START"],[7,[0,1]]]],[-1,29,null,691343318789871,false,[[11,"isControllerActive"],[7,[0,1]]]]],[[0,null,false,null,309220318117875,[[-1,27,null,0,false,false,false,151294536547858,false,[[11,"myBestDistance"],[8,1],[7,[0,0]]]]],[[-1,29,null,396511711398849,false,[[11,"myPreRecordBeaten"],[7,[0,0]]]],[0,26,null,211767696573652,false,[[1,[2,"Spawn_preBest_Mark"]],[13,[7,[4,[23,"startX"],[23,"myBestDistance"]]],[7,[19,36,[[6,[23,"myBestDistance"],[23,"SCORE_PER_PIXEL"]]]]]]]]]],[0,null,false,null,768297301405302,[[-1,27,null,0,false,false,false,307031127410238,false,[[11,"platform"],[8,0],[7,[23,"PLATFORM_FACEBOOK"]]]]],[[0,26,null,575088635223066,false,[[1,[2,"Init_Challenge"]],[13,[7,[23,"myBestDistance"]]]]]]]]],[0,null,false,null,355977286909666,[[0,30,null,2,false,false,false,978207032788640,false,[[1,[2,"End_Game"]]]]],[[-1,29,null,807227907206892,false,[[11,"GAME_START"],[7,[0,0]]]],[-1,29,null,752756478132115,false,[[11,"isControllerActive"],[7,[0,0]]]],[-1,29,null,354142826239837,false,[[11,"gameSequence"],[7,[23,"SEQ_TUTORIAL"]]]]],[[0,null,false,null,844978116661477,[[-1,27,null,0,false,false,false,602779694076923,false,[[11,"myLastDistance"],[8,4],[7,[23,"myBestDistance"]]]]],[[0,26,null,180371143541658,false,[[1,[2,"Update_BestDistance"]],[13,[7,[23,"myLastDistance"]]]]]],[[0,null,false,null,632780041694527,[[-1,27,null,0,false,false,false,758330137703079,false,[[11,"platform"],[8,0],[7,[23,"PLATFORM_FACEBOOK"]]]]],[[9,111,null,933585259499238,false,[[1,[10,[10,[2,"onFB_gameOver("],[19,36,[[23,"myBestDistance"]]]],[2,");"]]]]]]]]],[0,null,false,null,828150914876420,[[71,79,null,0,false,false,false,790572889137470,false,[[10,5]]]],[[71,78,null,464284003751806,false,[[10,4],[3,0]]]]],[0,null,false,null,579084982558050,[],[[-1,112,null,746435059746231,false,[[0,[1,2.5]]]],[0,26,null,770258174733526,false,[[1,[2,"Play_MM_Animation"]],[13,[7,[2,"forward"]]]]],[0,26,null,939257470138765,false,[[1,[2,"Destroy_Hud"]],[13]]],[0,26,null,660106283467555,false,[[1,[2,"Destroy_Challenge"]],[13]]],[-1,29,null,539104603563352,false,[[11,"gameSequence"],[7,[23,"SEQ_MENU"]]]]]]]]]],[0,[true,"Props"],false,null,306202166633113,[[-1,23,null,0,false,false,false,306202166633113,false,[[1,[2,"Props"]]]]],[],[[0,null,false,null,252674553072306,[[0,30,null,2,false,false,false,932053382212355,false,[[1,[2,"Destroy_Props"]]]]],[[79,25,null,252869437819445,false],[35,113,null,388960336648590,false],[36,25,null,726329730056744,false],[37,114,null,175477866473294,false],[38,113,null,318845983448113,false]]],[0,null,false,null,183693757925311,[[0,30,null,2,false,false,false,417782866330564,false,[[1,[2,"Init_Props"]]]]],[[0,26,null,335421166270674,false,[[1,[2,"Destroy_Props"]],[13]]],[-1,61,null,411186825155439,false,[[4,22],[5,[2,"track"]],[0,[5,[23,"startX"],[0,300]]],[0,[5,[23,"TRACK_POS_Y"],[0,452]]]]]]],[0,null,false,null,787028717893455,[[0,30,null,2,false,false,false,429980293337979,false,[[1,[2,"Spawn_preBest_Mark"]]]]],[],[[1,"deltaY",0,40,false,false,963684891520039,false],[1,"oY",0,75,false,false,626602581588027,false],[0,null,false,null,743954128086560,[],[[-1,61,null,805115171361754,false,[[4,37],[5,[2,"track"]],[0,[20,0,38,false,null,[[0,0]]]],[0,[4,[5,[6,[19,110],[1,0.5]],[23,"deltaY"]],[23,"oY"]]]]],[37,115,null,274197991923630,false,[[10,0],[7,[2,"best"]]]],[37,116,null,358563266134347,false,[[0,[0,2]],[0,[0,4000]]]],[37,117,null,642842001932161,false,[[0,[0,0]]]],[-1,61,null,804390115289127,false,[[4,37],[5,[2,"track"]],[0,[20,0,38,false,null,[[0,0]]]],[0,[4,[4,[6,[19,110],[1,0.5]],[23,"deltaY"]],[23,"oY"]]]]],[37,115,null,494067232808610,false,[[10,0],[7,[2,"best"]]]],[37,116,null,290509439756085,false,[[0,[0,2]],[0,[0,2000]]]],[37,117,null,131007834183546,false,[[0,[0,180]]]],[-1,61,null,150082219417041,false,[[4,36],[5,[2,"track"]],[0,[20,0,38,false,null,[[0,0]]]],[0,[4,[6,[19,110],[1,0.5]],[23,"oY"]]]]],[36,83,null,622739069826952,false,[[0,[0,-10]]]],[36,63,null,932028223282482,false,[[10,1],[7,[0,1]]]],[36,78,null,546340110724141,false,[[10,0],[3,1]]],[-1,61,null,354921166827581,false,[[4,38],[5,[2,"track"]],[0,[20,36,93,false,null]],[0,[4,[20,36,86,false,null],[0,5]]]]],[38,45,null,854605390357415,false,[[7,[10,[20,0,38,false,null,[[0,1]]],[2,"m"]]]]],[38,118,null,874482613455181,false,[[10,0],[7,[2,"best"]]]]]]]],[0,null,false,null,110140726599460,[[0,30,null,2,false,false,false,462521670346277,false,[[1,[2,"On_BestLine_Crossed"]]]]],[[0,26,null,761392970431526,false,[[1,[2,"Play_UISound"]],[13,[7,[2,"unlock"]]]]],[-1,29,null,271533479079255,false,[[11,"myPreRecordBeaten"],[7,[0,1]]]],[36,82,null,667350233644112,false,[[4,39],[5,[2,"track"]],[7,[0,0]]]],[36,25,null,476357783880574,false]],[[0,null,false,null,695481259921469,[[37,119,null,0,false,false,false,977643557979914,false,[[10,0],[8,0],[7,[2,"best"]]]]],[[37,114,null,618871174946180,false]]],[0,null,false,null,633355927642346,[[38,120,null,0,false,false,false,743097930850285,false,[[10,0],[8,0],[7,[2,"best"]]]]],[[38,113,null,644131381976876,false]]]]],[0,null,false,null,268081114831630,[[0,30,null,2,false,false,false,164806710581336,false,[[1,[2,"Spawn_Challenge_Mark"]]]]],[],[[1,"deltaY",0,40,false,false,873834794563380,false],[1,"oY",0,75,false,false,695302287297320,false],[0,null,false,null,136105823084772,[],[[-1,61,null,328963599145961,false,[[4,37],[5,[2,"track"]],[0,[20,0,38,false,null,[[0,0]]]],[0,[4,[5,[6,[19,110],[1,0.5]],[23,"deltaY"]],[23,"oY"]]]]],[37,115,null,467362203886032,false,[[10,0],[7,[2,"challenge"]]]],[37,116,null,832151549334137,false,[[0,[0,2]],[0,[0,4000]]]],[37,117,null,695781642678912,false,[[0,[0,0]]]],[-1,61,null,753322180759386,false,[[4,37],[5,[2,"track"]],[0,[20,0,38,false,null,[[0,0]]]],[0,[4,[4,[4,[6,[19,110],[1,0.5]],[23,"deltaY"]],[23,"oY"]],[0,40]]]]],[37,115,null,751946880838505,false,[[10,0],[7,[2,"challenge"]]]],[37,116,null,524747231830304,false,[[0,[0,2]],[0,[0,2000]]]],[37,117,null,163771059026990,false,[[0,[0,180]]]],[-1,61,null,445986124820631,false,[[4,69],[5,[2,"track"]],[0,[20,0,38,false,null,[[0,0]]]],[0,[4,[6,[19,110],[1,0.5]],[23,"oY"]]]]],[69,121,null,384299962324712,false,[[0,[0,80]],[0,[0,80]]]],[69,63,null,235875118170789,false,[[10,0],[7,[2,"challenge"]]]],[-1,61,null,309815825043873,false,[[4,38],[5,[2,"track"]],[0,[20,69,93,false,null]],[0,[4,[4,[20,69,86,false,null],[6,[20,69,74,false,null],[1,0.5]]],[0,18]]]]],[38,45,null,853865048556094,false,[[7,[10,[20,0,38,false,null,[[0,1]]],[2,"m"]]]]],[38,118,null,658634730275314,false,[[10,0],[7,[2,"challenge"]]]],[38,122,null,141372644455087,false,[[0,[0,24]]]]]]]],[0,null,false,null,259877203909015,[[0,30,null,2,false,false,false,553148664541306,false,[[1,[2,"On_ChallengeLine_Crossed"]]]]],[[0,26,null,196466220653267,false,[[1,[2,"Play_UISound"]],[13,[7,[2,"challenge_won"]]]]]],[[0,null,false,null,249160065796662,[[69,67,null,0,false,false,false,282631637520811,false,[[10,0],[8,0],[7,[2,"challenge"]]]]],[[69,82,null,334710930799540,false,[[4,39],[5,[2,"track"]],[7,[0,0]]]],[69,25,null,785434952862049,false]]],[0,null,false,null,779737788623659,[[37,119,null,0,false,false,false,414503150354761,false,[[10,0],[8,0],[7,[2,"challenge"]]]]],[[37,114,null,761519321716677,false]]],[0,null,false,null,629071091422750,[[38,120,null,0,false,false,false,821019749004113,false,[[10,0],[8,0],[7,[2,"challenge"]]]]],[[38,113,null,281779560725089,false]]]]]]],[0,[true,"Day Night Params"],false,null,782974879425495,[[-1,23,null,0,false,false,false,782974879425495,false,[[1,[2,"Day Night Params"]]]]],[]],[1,"DAY_TIME",0,60,false,false,708360471180972,false],[1,"NIGHT_TIME",0,20,false,false,187183382430521,false],[1,"NIGHT_STRENGTH",0,75,false,false,749270969996475,false],[1,"dayTc",0,0,false,false,128592297244047,false],[1,"dayState",1,"day",false,false,840374122927345,false],[1,"isDayTransitioning",0,0,false,false,129166961213680,false],[1,"dayVfxCounter",0,0,false,false,325979807641624,false],[0,[true,"Day Night"],false,null,446462024556510,[[-1,23,null,0,false,false,false,446462024556510,false,[[1,[2,"Day Night"]]]]],[],[[0,null,false,null,558321981905273,[[-1,123,null,0,false,false,false,283325998030906,false,[[0,[0,1]]]]],[[-1,60,null,789113191684120,false,[[11,"dayTc"],[7,[0,1]]]]],[[0,null,false,null,796166053992966,[[-1,27,null,0,false,false,false,975743627450555,false,[[11,"dayState"],[8,0],[7,[2,"day"]]]]],[],[[0,null,false,null,981393399533872,[[-1,27,null,0,false,false,false,405353054614818,false,[[11,"dayTc"],[8,5],[7,[23,"DAY_TIME"]]]]],[[-1,124,null,999531511575982,false,[[11,"dayTc"],[7,[23,"DAY_TIME"]]]],[0,26,null,857188027959815,false,[[1,[2,"Update_DayNight"]],[13,[7,[2,"night"]]]]]]]]],[0,null,false,null,457539442417221,[[-1,27,null,0,false,false,false,779921003636067,false,[[11,"dayState"],[8,0],[7,[2,"night"]]]]],[],[[0,null,false,null,818813143242051,[[-1,27,null,0,false,false,false,875773988083363,false,[[11,"dayTc"],[8,5],[7,[23,"NIGHT_TIME"]]]]],[[-1,124,null,567161400698076,false,[[11,"dayTc"],[7,[23,"NIGHT_TIME"]]]],[0,26,null,360428599949316,false,[[1,[2,"Update_DayNight"]],[13,[7,[2,"day"]]]]]]]]]]],[0,null,false,null,798232809125443,[[0,30,null,2,false,false,false,514165562529185,false,[[1,[2,"Update_DayNight"]]]]],[[-1,29,null,466220278062044,false,[[11,"dayState"],[7,[20,0,38,false,null,[[0,0]]]]]],[-1,29,null,567901165042010,false,[[11,"isDayTransitioning"],[7,[0,1]]]]],[[0,null,false,null,737239319875809,[[-1,27,null,0,false,false,false,790076525491857,false,[[11,"dayState"],[8,0],[7,[2,"day"]]]]],[[-1,29,null,138785425164952,false,[[11,"dayVfxCounter"],[7,[23,"NIGHT_STRENGTH"]]]]]],[0,null,false,null,276396164651546,[[-1,27,null,0,false,false,false,264578327123564,false,[[11,"dayState"],[8,0],[7,[2,"night"]]]]],[[-1,29,null,736541665532201,false,[[11,"dayVfxCounter"],[7,[0,100]]]]]]]],[0,null,false,null,462546152105687,[[-1,27,null,0,false,false,false,228706850118179,false,[[11,"isDayTransitioning"],[8,0],[7,[0,1]]]]],[],[[0,null,false,null,632060956053450,[[-1,27,null,0,false,false,false,550196048053282,false,[[11,"dayState"],[8,0],[7,[2,"day"]]]]],[[-1,60,null,263135198299168,false,[[11,"dayVfxCounter"],[7,[6,[0,10],[19,87]]]]],[-1,125,null,559123335758892,false,[[5,[2,"bg"]],[1,[2,"Brightness"]],[0,[0,0]],[0,[23,"dayVfxCounter"]]]],[-1,125,null,191382518891651,false,[[5,[2,"parallax"]],[1,[2,"Brightness"]],[0,[0,0]],[0,[23,"dayVfxCounter"]]]],[-1,125,null,729856774445576,false,[[5,[2,"track"]],[1,[2,"Brightness"]],[0,[0,0]],[0,[23,"dayVfxCounter"]]]]],[[0,null,false,null,713236415986066,[[-1,27,null,0,false,false,false,803618605512845,false,[[11,"dayVfxCounter"],[8,5],[7,[0,100]]]]],[[-1,29,null,763007327482812,false,[[11,"isDayTransitioning"],[7,[0,0]]]],[-1,29,null,574050256553932,false,[[11,"dayVfxCounter"],[7,[0,100]]]],[-1,125,null,334538473461804,false,[[5,[2,"bg"]],[1,[2,"Brightness"]],[0,[0,0]],[0,[23,"dayVfxCounter"]]]],[-1,125,null,331275407358125,false,[[5,[2,"parallax"]],[1,[2,"Brightness"]],[0,[0,0]],[0,[23,"dayVfxCounter"]]]],[-1,125,null,759872348938679,false,[[5,[2,"track"]],[1,[2,"Brightness"]],[0,[0,0]],[0,[23,"dayVfxCounter"]]]]]]]],[0,null,false,null,641251088512543,[[-1,27,null,0,false,false,false,623935581116924,false,[[11,"dayState"],[8,0],[7,[2,"night"]]]]],[[-1,60,null,678245838288213,false,[[11,"dayVfxCounter"],[7,[6,[0,-10],[19,87]]]]],[-1,125,null,148486079323013,false,[[5,[2,"bg"]],[1,[2,"Brightness"]],[0,[0,0]],[0,[23,"dayVfxCounter"]]]],[-1,125,null,384835260642657,false,[[5,[2,"parallax"]],[1,[2,"Brightness"]],[0,[0,0]],[0,[23,"dayVfxCounter"]]]],[-1,125,null,502521906360422,false,[[5,[2,"track"]],[1,[2,"Brightness"]],[0,[0,0]],[0,[23,"dayVfxCounter"]]]]],[[0,null,false,null,723362861907641,[[-1,27,null,0,false,false,false,562538112650060,false,[[11,"dayVfxCounter"],[8,3],[7,[23,"NIGHT_STRENGTH"]]]]],[[-1,29,null,370965143205566,false,[[11,"isDayTransitioning"],[7,[0,0]]]],[-1,29,null,524288732042422,false,[[11,"dayVfxCounter"],[7,[23,"NIGHT_STRENGTH"]]]],[-1,125,null,373129049209402,false,[[5,[2,"bg"]],[1,[2,"Brightness"]],[0,[0,0]],[0,[23,"dayVfxCounter"]]]],[-1,125,null,364622071064637,false,[[5,[2,"parallax"]],[1,[2,"Brightness"]],[0,[0,0]],[0,[23,"dayVfxCounter"]]]],[-1,125,null,953791727855844,false,[[5,[2,"track"]],[1,[2,"Brightness"]],[0,[0,0]],[0,[23,"dayVfxCounter"]]]]]]]],[0,null,false,null,764154373749859,[],[[19,88,null,875236258843667,false,[[0,[23,"dayVfxCounter"]]]]]]]]]],[1,"bgTrackVolume",0,-10,false,false,930704992104592,false],[1,"bgTrack_nVolume",0,-10,false,false,889950782990257,false],[1,"bgTrack_minVolume",0,-14,false,false,908604958364391,false],[0,[true,"SOUND"],false,null,249126202407988,[[-1,23,null,0,false,false,false,249126202407988,false,[[1,[2,"SOUND"]]]]],[],[[0,null,false,null,619842961153638,[[0,30,null,2,false,false,false,205244248628111,false,[[1,[2,"Update_Sound"]]]]],[[-1,29,null,946575081518567,false,[[11,"soundOn"],[7,[20,0,38,false,null,[[0,0]]]]]],[31,44,null,962163451510457,false,[[1,[10,[23,"PREFIX"],[2,"sound"]]],[7,[23,"soundOn"]]]],[60,62,null,300268423675775,false,[[0,[23,"soundOn"]]]]]],[0,null,false,null,119416407719908,[[0,30,null,2,false,false,false,256641839806303,false,[[1,[2,"Update_Music"]]]]],[[-1,29,null,406479437705763,false,[[11,"musicOn"],[7,[20,0,38,false,null,[[0,0]]]]]],[31,44,null,769774392074900,false,[[1,[10,[23,"PREFIX"],[2,"music"]]],[7,[23,"musicOn"]]]],[61,62,null,958195861199280,false,[[0,[23,"musicOn"]]]]],[[0,null,false,null,980468983043160,[[-1,27,null,0,false,false,false,122896385727200,false,[[11,"musicOn"],[8,0],[7,[0,1]]]]],[[0,26,null,442050849579962,false,[[1,[2,"Resume_aTrack"]],[13,[7,[2,"gp_track"]]]]]]],[0,null,false,null,453007765263918,[[-1,37,null,0,false,false,false,709282709384497,false]],[[0,26,null,377297126313765,false,[[1,[2,"Pause_aTrack"]],[13,[7,[2,"gp_track"]]]]]]]]],[0,null,false,null,958435447126102,[[0,30,null,2,false,false,false,179079814047540,false,[[1,[2,"Play_GpTrack"]]]]],[[50,126,null,489000399763574,false,[[2,["bg music",false]],[3,1],[0,[0,-10]],[1,[2,"gp_track"]]]]]],[0,null,false,null,910959392000901,[[0,30,null,2,false,false,false,456092163508386,false,[[1,[2,"Pause_aTrack"]]]]],[[50,127,null,184502886991589,false,[[1,[20,0,38,false,null,[[0,0]]]],[3,0]]]]],[0,null,false,null,493696983798373,[[0,30,null,2,false,false,false,287587140632008,false,[[1,[2,"Resume_aTrack"]]]]],[[50,127,null,452502825530867,false,[[1,[20,0,38,false,null,[[0,0]]]],[3,1]]]]],[0,null,false,null,359778601841654,[[0,30,null,2,false,false,false,492217503207306,false,[[1,[2,"Play_GpSound"]]]]],[],[[0,null,false,null,647677607249863,[[-1,27,null,0,false,false,false,658397634922666,false,[[11,"soundOn"],[8,0],[7,[0,1]]]]],[],[[0,null,false,null,418977478307535,[[0,71,null,0,false,false,false,303422081579070,false,[[0,[0,0]],[8,0],[7,[2,"coin"]]]]],[[50,126,null,459579841177981,false,[[2,["coin",false]],[3,0],[0,[0,-5]],[1,[2,"gp_audio"]]]]]],[0,null,false,null,339877900555107,[[0,71,null,0,false,false,false,939171873990235,false,[[0,[0,0]],[8,0],[7,[2,"coin_collect"]]]]],[[50,126,null,153019003509940,false,[[2,["coin_add",false]],[3,0],[0,[0,-5]],[1,[2,"gp_audio"]]]]]],[0,null,false,null,373755028010624,[[0,71,null,0,false,false,false,314491659672154,false,[[0,[0,0]],[8,0],[7,[2,"egg_broken"]]]]],[[50,126,null,816370866462561,false,[[2,["egg_broken",false]],[3,0],[0,[0,0]],[1,[2,"gp_audio"]]]]]],[0,null,false,null,993038589705157,[[0,71,null,0,false,false,false,679131523825644,false,[[0,[0,0]],[8,0],[7,[2,"egg_hit"]]]]],[[50,128,null,916818509068090,false,[[3,0],[1,[10,[2,"egg_hit_"],[20,0,38,false,null,[[0,1]]]]],[3,0],[0,[0,0]],[1,[2,""]]]]]],[0,null,false,null,916388498729046,[[0,71,null,0,false,false,false,968383856896471,false,[[0,[0,0]],[8,0],[7,[2,"ice"]]]]],[[50,126,null,509935604252653,false,[[2,["ice",false]],[3,0],[0,[0,0]],[1,[2,"gp_audio"]]]]]],[0,null,false,null,328054891214362,[[0,71,null,0,false,false,false,208338249234139,false,[[0,[0,0]],[8,0],[7,[2,"game_over"]]]]],[[50,126,null,132062819422507,false,[[2,["game_over",false]],[3,0],[0,[0,0]],[1,[2,""]]]]]]]]]],[0,null,false,null,928848042336494,[[0,30,null,2,false,false,false,955387294813468,false,[[1,[2,"Play_UISound"]]]]],[],[[0,null,false,null,262837960973862,[[-1,27,null,0,false,false,false,336309791463598,false,[[11,"soundOn"],[8,0],[7,[0,1]]]]],[],[[0,null,false,null,943983396217869,[[0,71,null,0,false,false,false,219003639879893,false,[[0,[0,0]],[8,0],[7,[2,"click_0"]]]]],[[50,126,null,257548921346924,false,[[2,["click_0",false]],[3,0],[0,[0,0]],[1,[2,""]]]]]],[0,null,false,null,108079103405225,[[0,71,null,0,false,false,false,320288833286926,false,[[0,[0,0]],[8,0],[7,[2,"not_ready"]]]]],[[50,126,null,333737137859016,false,[[2,["not_ready",false]],[3,0],[0,[0,0]],[1,[2,""]]]]]],[0,null,false,null,839207857324296,[[0,71,null,0,false,false,false,314278467345817,false,[[0,[0,0]],[8,0],[7,[2,"unlock"]]]]],[[50,126,null,275146422897036,false,[[2,["unlock",false]],[3,0],[0,[0,0]],[1,[2,""]]]]]],[0,null,false,null,771129480684641,[[0,71,null,0,false,false,false,590817133227944,false,[[0,[0,0]],[8,0],[7,[2,"challenge_won"]]]]],[[50,126,null,299292261532007,false,[[2,["challenge_won",false]],[3,0],[0,[0,-5]],[1,[2,""]]]]]]]]]]]]]],["UIManager",[[0,[true,"UI - On Start"],false,null,321192755613962,[[-1,23,null,0,false,false,false,321192755613962,false,[[1,[2,"UI - On Start"]]]]],[],[[0,null,false,null,399056870989542,[[-1,24,null,1,false,false,false,230664452391386,false]],[[77,129,null,140060165529437,false],[82,25,null,202592187139384,false],[19,92,null,509973960687595,false],[88,72,null,728120107355638,false,[[0,[21,88,false,null,4]]]],[0,26,null,318247316854097,false,[[1,[2,"Destroy_Hud"]],[13]]],[0,26,null,825414359280121,false,[[1,[2,"Destroy_Tutorial"]],[13]]]]]]],[0,[true,"Animation - Functions"],false,null,869847338302528,[[-1,23,null,0,false,false,false,869847338302528,false,[[1,[2,"Animation - Functions"]]]]],[],[[0,null,false,null,990380929923492,[[0,30,null,2,false,false,false,113749319508015,false,[[1,[2,"Play_CoinIcon_Animation"]]]]],[[28,63,null,407627212820379,false,[[10,1],[7,[0,5]]]],[28,78,null,290973247376775,false,[[10,0],[3,1]]]]],[0,null,false,null,115677915178893,[[0,30,null,2,false,false,false,870515394986528,false,[[1,[2,"Play_MM_Animation"]]]]],[[45,72,null,161501051870222,false,[[0,[1,0.85]]]]],[[0,null,false,null,209976200380017,[[0,71,null,0,false,false,false,716842867559697,false,[[0,[0,0]],[8,0],[7,[2,"forward"]]]]],[[46,25,null,207764037100241,false],[45,53,null,569486241012398,false,[[0,[23,"CANVAS_MID_X"]],[0,[5,[6,[3,[23,"canvasDeltaHeight"]],[1,0.5]],[0,150]]]]],[45,130,"LiteTween",795096854459183,false,[[3,0],[3,0],[0,[23,"CANVAS_MID_X"]]]],[45,130,"LiteTween",319966426723194,false,[[3,1],[3,0],[0,[4,[6,[3,[23,"canvasDeltaHeight"]],[1,0.5]],[0,110]]]]],[45,131,"LiteTween",389773777783884,false,[[3,0],[3,1]]],[45,63,null,748963241022504,false,[[10,1],[7,[20,0,38,false,null,[[0,0]]]]]]],[[0,null,false,null,846252815275052,[[85,67,null,0,false,false,false,636239279357853,false,[[10,8],[8,0],[7,[0,0]]]]],[[85,72,null,419041158399418,false,[[0,[0,0]]]]]],[0,null,false,null,388985809524464,[],[[-1,112,null,904540929462993,false,[[0,[1,0.75]]]]],[[0,null,false,null,248852678278838,[[85,67,null,0,false,false,false,763378675313139,false,[[10,8],[8,0],[7,[0,0]]]]],[[85,63,null,895550952972687,false,[[10,3],[7,[6,[21,85,false,null,9],[1,0.75]]]]],[85,63,null,723755450232291,false,[[10,4],[7,[21,85,false,null,9]]]],[85,63,null,222669130400407,false,[[10,2],[7,[0,0]]]],[85,63,null,775875331370648,false,[[10,1],[7,[0,1]]]],[85,63,null,206509514038424,false,[[10,5],[7,[0,150]]]],[85,78,null,358506920266236,false,[[10,0],[3,1]]]]]]]]],[0,null,false,null,195938545726484,[[0,71,null,0,false,false,false,331127974068596,false,[[0,[0,0]],[8,0],[7,[2,"backward"]]]]],[[45,132,"LiteTween",215039880394943,false,[[3,0]]],[45,63,null,811157776805236,false,[[10,1],[7,[20,0,38,false,null,[[0,0]]]]]]],[[0,null,false,null,751883885737113,[[85,67,null,0,false,false,false,427756310704667,false,[[10,8],[8,0],[7,[0,0]]]]],[[85,63,null,422573146723662,false,[[10,3],[7,[21,85,false,null,9]]]],[85,63,null,839731742736855,false,[[10,4],[7,[0,0]]]],[85,63,null,910881838703351,false,[[10,2],[7,[0,0]]]],[85,63,null,475129805322594,false,[[10,1],[7,[0,1]]]],[85,63,null,209058126991831,false,[[10,5],[7,[0,400]]]],[85,78,null,845402956544764,false,[[10,0],[3,1]]]]],[0,null,false,null,410072904500637,[],[[-1,112,null,898281795190609,false,[[0,[1,0.5]]]]],[[0,null,false,null,608024038068445,[[-1,27,null,0,false,false,false,348556337626744,false,[[11,"playCount"],[8,5],[7,[0,1]]]]],[[0,26,null,778600302902690,false,[[1,[2,"Init_PreGame"]],[13]]],[0,26,null,764261139015624,false,[[1,[2,"Start_Game"]],[13]]]]],[0,null,false,null,688634745075090,[[-1,37,null,0,false,false,false,436213749718601,false]],[[0,26,null,140844252476321,false,[[1,[2,"Start_Game"]],[13]]]]]]]]]]]]],[0,[true,"Animations"],false,null,470873912340914,[[-1,23,null,0,false,false,false,470873912340914,false,[[1,[2,"Animations"]]]]],[],[[0,[true,"Sprites"],false,null,435949237583189,[[-1,23,null,0,false,false,false,435949237583189,false,[[1,[2,"Sprites"]]]]],[],[[0,null,false,null,672878452552951,[[85,79,null,0,false,false,false,638334345161523,false,[[10,0]]]],[],[[0,null,false,null,955140877072091,[[85,67,null,0,false,false,false,862846384875593,false,[[10,1],[8,0],[7,[0,1]]]]],[[85,133,null,363218162707353,false,[[10,2],[7,[6,[21,85,false,null,5],[19,87]]]]],[85,72,null,240380251371187,false,[[0,[19,134,[[21,85,false,null,3],[21,85,false,null,4],[19,102,[[21,85,false,null,2]]]]]]]]],[[0,null,false,null,361550531199600,[[85,67,null,0,false,false,false,950319778516264,false,[[10,2],[8,5],[7,[0,90]]]]],[[85,72,null,608415040499827,false,[[0,[21,85,false,null,4]]]],[85,63,null,612894325943139,false,[[10,1],[7,[0,0]]]],[85,78,null,625112050886469,false,[[10,0],[3,0]]]]]]],[0,null,false,null,273491257268167,[[85,67,null,0,false,false,false,880414460939090,false,[[10,1],[8,0],[7,[0,5]]]]],[[85,121,null,702767729202611,false,[[0,[4,[20,85,73,false,null],[6,[6,[21,85,false,null,6],[0,2]],[19,87]]]],[0,[4,[20,85,74,false,null],[6,[6,[21,85,false,null,7],[0,2]],[19,87]]]]]]],[[0,null,false,null,766222188980863,[[85,135,null,0,false,false,false,195760046593091,false,[[8,5],[0,[6,[21,85,false,null,6],[21,85,false,null,4]]]]]],[[85,63,null,776688324831508,false,[[10,1],[7,[0,6]]]]]]]],[0,null,false,null,744199390500235,[[85,67,null,0,false,false,false,634054608087734,false,[[10,1],[8,0],[7,[0,6]]]]],[[85,121,null,100219614340428,false,[[0,[5,[20,85,73,false,null],[6,[6,[21,85,false,null,6],[1,1.5]],[19,87]]]],[0,[5,[20,85,74,false,null],[6,[6,[21,85,false,null,7],[1,1.5]],[19,87]]]]]]],[[0,null,false,null,690555304866264,[[85,135,null,0,false,false,false,187196519257020,false,[[8,3],[0,[6,[21,85,false,null,6],[21,85,false,null,3]]]]]],[[85,72,null,738706678521419,false,[[0,[21,85,false,null,3]]]],[85,63,null,971450490633454,false,[[10,1],[7,[0,0]]]],[85,63,null,800709253191527,false,[[10,2],[7,[0,0]]]],[85,78,null,678865479421475,false,[[10,0],[3,0]]]]]]]]]]],[0,[true,"Lite Tweens"],false,null,624464129045661,[[-1,23,null,0,false,false,false,624464129045661,false,[[1,[2,"Lite Tweens"]]]]],[],[[0,null,false,null,204268677092402,[[87,136,"LiteTween",1,false,false,false,228972350711345,false]],[],[[0,null,false,null,684927702540957,[[87,67,null,0,false,false,false,961502823339273,false,[[10,0],[8,0],[7,[2,"logo"]]]]],[],[[0,null,false,null,483289451612368,[[87,67,null,0,false,false,false,243920879567643,false,[[10,1],[8,0],[7,[2,"forward"]]]]],[[87,82,null,218377138196834,false,[[4,46],[5,[2,"menu"]],[7,[2,"tyre_0"]]]],[46,63,null,346811242184851,false,[[10,1],[7,[0,1]]]],[46,78,null,736894138386034,false,[[10,0],[3,1]]],[46,76,"Pin",195138427841493,false,[[4,87],[3,1]]],[87,82,null,247734152992478,false,[[4,46],[5,[2,"menu"]],[7,[2,"tyre_1"]]]],[46,63,null,183028867449075,false,[[10,1],[7,[0,1]]]],[46,78,null,164110595528316,false,[[10,0],[3,1]]],[46,76,"Pin",364468973644621,false,[[4,87],[3,1]]]]],[0,null,false,null,857246853024635,[[87,67,null,0,false,false,false,486513370890747,false,[[10,1],[8,0],[7,[2,"backward"]]]]],[[46,25,null,187182359685593,false]]]]]]]]],[0,[true,"Game Seq"],false,null,474278191632172,[[-1,23,null,0,false,false,false,474278191632172,false,[[1,[2,"Game Seq"]]]]],[],[[0,null,false,null,707502177905960,[[-1,27,null,0,false,false,false,587780624315365,false,[[11,"gameSequence"],[8,0],[7,[0,20]]]]],[[-1,137,null,747306188145610,false,[[5,[2,"menu"]],[0,[5,[19,138,[[2,"menu"]]],[6,[0,300],[19,87]]]]]],[-1,137,null,733446703805739,false,[[5,[2,"selection"]],[0,[5,[0,100],[19,138,[[2,"menu"]]]]]]],[-1,139,null,560640095217572,false,[[5,[2,"selection"]],[0,[5,[1,1.35],[6,[19,138,[[2,"selection"]]],[1,0.0035]]]]]],[-1,137,null,719433104176006,false,[[5,[2,"selection_bg"]],[0,[6,[19,138,[[2,"selection"]]],[1,0.25]]]]]],[[0,null,false,null,787111820084881,[[-1,140,null,0,false,false,false,624503973175926,false,[[5,[2,"menu"]],[8,3],[0,[0,0]]]]],[[-1,137,null,857604240124370,false,[[5,[2,"selection"]],[0,[0,100]]]],[-1,139,null,669398543715647,false,[[5,[2,"selection"]],[0,[0,1]]]],[-1,29,null,521033465086813,false,[[11,"gameSequence"],[7,[23,"SEQ_SELECTION"]]]]]]]],[0,null,false,null,896116788585175,[[-1,27,null,0,false,false,false,616925112798165,false,[[11,"gameSequence"],[8,0],[7,[0,21]]]]],[[-1,137,null,938230555009591,false,[[5,[2,"menu"]],[0,[4,[19,138,[[2,"menu"]]],[6,[0,300],[19,87]]]]]],[-1,137,null,889304616182510,false,[[5,[2,"selection"]],[0,[5,[0,100],[19,138,[[2,"menu"]]]]]]],[-1,139,null,465181728262457,false,[[5,[2,"selection"]],[0,[5,[1,1.35],[6,[19,138,[[2,"selection"]]],[1,0.0035]]]]]],[-1,137,null,714256687444770,false,[[5,[2,"selection_bg"]],[0,[6,[19,138,[[2,"selection"]]],[1,0.25]]]]]],[[0,null,false,null,113010197580084,[[-1,140,null,0,false,false,false,839487935152994,false,[[5,[2,"menu"]],[8,5],[0,[0,100]]]]],[[-1,137,null,216002232841461,false,[[5,[2,"selection"]],[0,[0,0]]]],[-1,139,null,375011675346729,false,[[5,[2,"selection"]],[0,[0,1]]]],[-1,29,null,711190644285345,false,[[11,"gameSequence"],[7,[23,"SEQ_MENU"]]]],[0,26,null,931087547177261,false,[[1,[2,"Destroy_SelectionScreen"]],[13]]]]]]]]]]],[0,[true,"UI PARAMS"],false,null,724362257691247,[[-1,23,null,0,false,false,false,724362257691247,false,[[1,[2,"UI PARAMS"]]]]],[]],[0,[true,"Flash Params"],false,null,680135736235091,[[-1,23,null,0,false,false,false,680135736235091,false,[[1,[2,"Flash Params"]]]]],[]],[1,"flash_fadeIn",0,400,false,false,452840499907002,false],[1,"flash_fadeOut",0,800,false,false,189955802379592,false],[1,"flashSeq",0,0,false,false,354798718379060,false],[1,"isFlashActive",0,0,false,false,160491388562783,false],[1,"flashTrace",1,"",false,false,632715825457037,false],[0,[true,"Flash"],false,null,253724787615555,[[-1,23,null,0,false,false,false,253724787615555,false,[[1,[2,"Flash"]]]]],[],[[0,null,false,null,776646772400993,[[0,30,null,2,false,false,false,650274754126626,false,[[1,[2,"Flash_Screen"]]]]],[[-1,141,null,152372759653219,false,[[5,[2,"flash"]],[3,1]]],[-1,137,null,697325564351995,false,[[5,[2,"flash"]],[0,[20,0,38,false,null,[[0,0]]]]]],[-1,29,null,488165181586662,false,[[11,"flash_fadeIn"],[7,[20,0,38,false,null,[[0,1]]]]]],[-1,29,null,689365958489078,false,[[11,"flash_fadeOut"],[7,[20,0,38,false,null,[[0,2]]]]]],[-1,29,null,810332369707934,false,[[11,"flashTrace"],[7,[20,0,38,false,null,[[0,3]]]]]],[-1,29,null,951479913103680,false,[[11,"isFlashActive"],[7,[0,1]]]],[-1,29,null,865625625916641,false,[[11,"flashSeq"],[7,[0,1]]]],[-1,29,null,483797613967390,false,[[11,"gameSequence"],[7,[23,"SEQ_BETWEEN"]]]]]],[0,null,false,null,239863724071464,[[-1,27,null,0,false,false,false,363318474691910,false,[[11,"isFlashActive"],[8,0],[7,[0,1]]]]],[],[[0,null,false,null,756115204648772,[[-1,27,null,0,false,false,false,161282578222247,false,[[11,"flashSeq"],[8,0],[7,[0,1]]]]],[[-1,137,null,783317708723575,false,[[5,[2,"flash"]],[0,[4,[19,138,[[2,"flash"]]],[6,[23,"flash_fadeIn"],[19,87]]]]]]],[[0,null,false,null,483862691319539,[[-1,33,null,0,false,false,false,171245248076775,false,[[7,[19,138,[[2,"flash"]]]],[8,5],[7,[0,100]]]]],[[-1,29,null,374316808852411,false,[[11,"flashSeq"],[7,[0,2]]]]],[[0,null,false,null,489273794372201,[[-1,27,null,0,false,false,false,792905534167593,false,[[11,"flashTrace"],[8,0],[7,[2,"game_over"]]]]],[[0,26,null,637353053710099,false,[[1,[2,"Play_MM_Animation"]],[13,[7,[2,"forward"]]]]],[0,26,null,890858377995466,false,[[1,[2,"Init_PreGame"]],[13]]]]]]]]],[0,null,false,null,880396895522751,[[-1,27,null,0,false,false,false,176658659981726,false,[[11,"flashSeq"],[8,0],[7,[0,2]]]]],[[-1,137,null,958713021940780,false,[[5,[2,"flash"]],[0,[5,[19,138,[[2,"flash"]]],[6,[23,"flash_fadeOut"],[19,87]]]]]]],[[0,null,false,null,716200393461448,[[-1,33,null,0,false,false,false,848034141685628,false,[[7,[19,138,[[2,"flash"]]]],[8,3],[7,[0,0]]]]],[[-1,29,null,674977062901604,false,[[11,"flashSeq"],[7,[0,0]]]],[-1,29,null,190666737087970,false,[[11,"isFlashActive"],[7,[0,0]]]]],[[0,null,false,null,875857035750420,[[-1,27,null,0,false,false,false,290113404544115,false,[[11,"flashTrace"],[8,0],[7,[2,"game_over"]]]]],[[-1,29,null,323892249434779,false,[[11,"gameSequence"],[7,[23,"SEQ_MENU"]]]]]]]]]]]]]],[0,[true,"SEQ PARAMS"],false,null,348480028706698,[[-1,23,null,0,false,false,false,348480028706698,false,[[1,[2,"SEQ PARAMS"]]]]],[]],[1,"SEQ_MENU",0,0,false,false,240425828238921,false],[1,"SEQ_SELECTION",0,1,false,false,927705383957452,false],[1,"SEQ_TUTORIAL",0,2,false,false,528446179239802,false],[1,"SEQ_GP",0,5,false,false,290717822069165,false],[1,"SEQ_BETWEEN",0,10,false,false,286671274505458,false],[0,[true,"Button Params"],false,null,958035318786761,[[-1,23,null,0,false,false,false,958035318786761,false,[[1,[2,"Button Params"]]]]],[]],[1,"chbuttonId",0,-1,false,false,586166298195894,false],[1,"chbuttonScale",0,0.95,false,false,115251759160033,false],[0,[true,"Screens"],false,null,573643329399072,[[-1,23,null,0,false,false,false,573643329399072,false,[[1,[2,"Screens"]]]]],[],[[0,null,false,null,488049379445031,[[0,30,null,2,false,false,false,202632648726789,false,[[1,[2,"Reset_Buttons"]]]]],[]],[0,null,false,null,432799491000150,[[0,30,null,2,false,false,false,178794806440921,false,[[1,[2,"Hide_aButton"]]]]],[],[[0,null,false,null,922672226509869,[[88,77,null,0,false,false,true,839159321145001,false,[[0,[20,0,38,false,null,[[0,0]]]]]]],[[88,142,null,671607057528024,false,[[3,0]]],[88,78,null,245876878776072,false,[[10,2],[3,0]]]]]]],[0,null,false,null,404025581547369,[[0,30,null,2,false,false,false,163041081586508,false,[[1,[2,"Show_aButton"]]]]],[],[[0,null,false,null,694420089822448,[[88,77,null,0,false,false,true,647611690699792,false,[[0,[20,0,38,false,null,[[0,0]]]]]]],[[88,142,null,590479543338943,false,[[3,1]]],[88,78,null,585612086053840,false,[[10,2],[3,1]]]]]]],[0,null,false,null,905653282352422,[[88,67,null,0,false,false,false,584142141353887,false,[[10,1],[8,0],[7,[23,"gameSequence"]]]]],[],[[0,null,false,null,772917648371895,[[88,79,null,0,false,false,false,785321992133210,false,[[10,2]]]],[],[[0,null,false,null,284283935562389,[[49,143,null,0,false,false,false,699504122539160,false,[[4,88]]],[88,67,null,0,false,false,false,240653499985474,false,[[10,0],[8,1],[7,[23,"chbuttonId"]]]]],[[-1,29,null,701513852311707,false,[[11,"chbuttonId"],[7,[21,88,false,null,0]]]],[49,144,null,452861724412587,false,[[3,1]]]]],[0,null,false,null,412562835954587,[[49,143,null,0,false,true,false,288562597154995,false,[[4,88]]],[-1,27,null,0,false,false,false,358901207282845,false,[[11,"chbuttonId"],[8,1],[7,[0,-1]]]]],[[-1,29,null,261424877589768,false,[[11,"chbuttonId"],[7,[0,-1]]]],[49,144,null,608552580465744,false,[[3,0]]]]]]]]],[0,null,false,null,775344723227923,[[1,145,null,1,false,false,false,998559573189109,false,[[4,88]]]],[],[[0,null,false,null,391396674647737,[[88,67,null,0,false,false,false,797574642924902,false,[[10,1],[8,0],[7,[23,"gameSequence"]]]]],[],[[0,null,false,null,822910478591248,[[88,79,null,0,false,false,false,926498303719370,false,[[10,2]]]],[[88,72,null,926142815699977,false,[[0,[6,[23,"chbuttonScale"],[21,88,false,null,4]]]]],[88,78,null,776867835864512,false,[[10,3],[3,1]]]]]]]]],[0,null,false,null,404514587652730,[[1,146,null,1,false,false,false,658621882364130,false]],[],[[0,null,false,null,345554561634389,[[88,79,null,0,false,false,false,546678252320849,false,[[10,3]]]],[[88,78,null,676914580697054,false,[[10,3],[3,0]]],[88,72,null,498281739070138,false,[[0,[21,88,false,null,4]]]]],[[0,[true,"MENU"],false,null,310171931952185,[[-1,23,null,0,false,false,false,310171931952185,false,[[1,[2,"MENU"]]]]],[],[[0,null,false,null,764838873632024,[[88,67,null,0,false,false,false,685087657021485,false,[[10,1],[8,0],[7,[23,"SEQ_MENU"]]]]],[],[[0,null,false,null,653415250050041,[[88,67,null,0,false,false,false,458603908063319,false,[[10,0],[8,0],[7,[0,0]]]]],[[0,26,null,561877402014374,false,[[1,[2,"Play_UISound"]],[13,[7,[2,"click_0"]]]]]],[[0,null,false,null,826149637390430,[[-1,27,null,0,false,false,false,220160271428057,false,[[11,"isTutorialActive"],[8,0],[7,[0,1]]]]],[[0,26,null,770700156362933,false,[[1,[2,"Show_Tutorial"]],[13]]]]],[0,null,false,null,913539896226900,[[-1,37,null,0,false,false,false,359426769583479,false]],[],[[0,null,false,null,910149832993811,[[-1,27,null,0,false,false,false,191594613554724,false,[[11,"platform"],[8,0],[7,[23,"PLATFORM_GD"]]]]],[[0,26,null,974258441215397,false,[[1,[2,"Show_Ads"]],[13]]]]],[0,null,false,null,116728907368113,[[-1,37,null,0,false,false,false,550442718728716,false]],[[0,26,null,487986799994689,false,[[1,[2,"Play_MM_Animation"]],[13,[7,[2,"backward"]]]]]]]]]]],[0,null,false,null,929740414716359,[[88,67,null,0,false,false,false,900182153351705,false,[[10,0],[8,0],[7,[0,1]]]]],[[0,26,null,303796686705198,false,[[1,[2,"Play_UISound"]],[13,[7,[2,"click_0"]]]]],[0,26,null,929433421580943,false,[[1,[2,"Show_SelectionScreen"]],[13]]]]],[0,null,false,null,392837789778027,[[88,67,null,0,false,false,false,349712135045027,false,[[10,0],[8,0],[7,[0,2]]]]],[[0,26,null,300217955949936,false,[[1,[2,"Play_UISound"]],[13,[7,[2,"click_0"]]]]],[9,111,null,136722112198587,false,[[1,[10,[10,[10,[10,[2,"onFB_ChallengeBtn_Clicked("],[19,36,[[23,"myBestDistance"]]]],[2,","]],[19,147,[[6,[23,"myBestDistance"],[23,"SCORE_PER_PIXEL"]]]]],[2,");"]]]]]]],[0,null,false,null,217950014396558,[[88,67,null,0,false,false,false,752543088538340,false,[[10,0],[8,0],[7,[0,3]]]]],[[0,26,null,720274343262114,false,[[1,[2,"Play_UISound"]],[13,[7,[2,"click_0"]]]]],[9,111,null,211302621641758,false,[[1,[2,"onFB_LBBtn_Clicked();"]]]]]],[0,null,false,null,191046093781803,[[88,67,null,0,false,false,false,358453490495789,false,[[10,0],[8,0],[7,[0,4]]]]],[[0,26,null,920124726404191,false,[[1,[2,"Play_UISound"]],[13,[7,[2,"click_0"]]]]],[9,111,null,925140862769466,false,[[1,[2,"onFB_InviteBtn_Clicked();"]]]]]],[0,null,false,null,951760087445909,[[88,67,null,0,false,false,false,255658046371569,false,[[10,0],[8,0],[7,[0,5]]]]],[[0,26,null,324419657664725,false,[[1,[2,"Update_Sound"]],[13,[7,[0,0]]]]]],[[0,null,false,null,346467594785131,[[-1,27,null,0,false,false,false,495387874649518,false,[[11,"soundOn"],[8,0],[7,[0,1]]]]],[]],[0,null,false,null,412281055290768,[[-1,37,null,0,false,false,false,103681096780247,false]],[[0,26,null,287065703602560,false,[[1,[2,"Update_Sound"]],[13,[7,[0,1]]]]]]],[0,null,false,null,629930156505496,[],[[0,26,null,184902272042392,false,[[1,[2,"Play_UISound"]],[13,[7,[2,"click_0"]]]]]]]]],[0,null,false,null,332851346227184,[[88,67,null,0,false,false,false,566234024284167,false,[[10,0],[8,0],[7,[0,6]]]]],[],[[0,null,false,null,543680502898144,[[-1,27,null,0,false,false,false,311999256195516,false,[[11,"musicOn"],[8,0],[7,[0,1]]]]],[[0,26,null,938080797141759,false,[[1,[2,"Update_Music"]],[13,[7,[0,0]]]]]]],[0,null,false,null,542310864805260,[[-1,37,null,0,false,false,false,722120843530233,false]],[[0,26,null,562226734642042,false,[[1,[2,"Update_Music"]],[13,[7,[0,1]]]]]]],[0,null,false,null,109692864737472,[],[[0,26,null,169037936618828,false,[[1,[2,"Play_UISound"]],[13,[7,[2,"click_0"]]]]]]]]]]]]],[0,[true,"SELECTION"],false,null,583919917145470,[[-1,23,null,0,false,false,false,583919917145470,false,[[1,[2,"SELECTION"]]]]],[],[[0,null,false,null,722864467277457,[[88,67,null,0,false,false,false,463076726250922,false,[[10,1],[8,0],[7,[23,"SEQ_SELECTION"]]]]],[],[[0,null,false,null,580648164992524,[[88,67,null,0,false,false,false,775423664050076,false,[[10,0],[8,0],[7,[0,10]]]]],[[0,26,null,175264869238945,false,[[1,[2,"Play_UISound"]],[13,[7,[2,"click_0"]]]]],[-1,29,null,592060889146166,false,[[11,"gameSequence"],[7,[0,21]]]]]],[0,null,false,null,498443590745375,[[88,67,null,0,false,false,false,346408378121345,false,[[10,0],[8,5],[7,[0,11]]]]],[[0,26,null,372508608692560,false,[[1,[2,"On_CarSelectBtn_Clicked"]],[13,[7,[5,[21,88,false,null,0],[0,11]]]]]]]]]]]],[0,[true,"TUTO"],false,null,942088085397062,[[-1,23,null,0,false,false,false,942088085397062,false,[[1,[2,"TUTO"]]]]],[],[[0,null,false,null,199751750617593,[[88,67,null,0,false,false,false,253834653408801,false,[[10,1],[8,0],[7,[23,"SEQ_TUTORIAL"]]]]],[],[[0,null,false,null,435597785037401,[[88,67,null,0,false,false,false,631822351017908,false,[[10,0],[8,0],[7,[0,20]]]]],[[0,26,null,995906736819091,false,[[1,[2,"Play_UISound"]],[13,[7,[2,"click_0"]]]]]],[[0,null,false,null,601999655763473,[[-1,27,null,0,false,false,false,375412352785897,false,[[11,"platform"],[8,0],[7,[23,"PLATFORM_GD"]]]]],[[49,144,null,500727810420023,false,[[3,0]]],[0,26,null,295851437768406,false,[[1,[2,"Show_Ads"]],[13]]]]],[0,null,false,null,353089335084126,[[-1,37,null,0,false,false,false,941491252799449,false]],[[0,26,null,820390405717620,false,[[1,[2,"Destroy_Tutorial"]],[13]]],[0,26,null,649497514070243,false,[[1,[2,"Play_MM_Animation"]],[13,[7,[2,"backward"]]]]]]]]]]]]]]]]]]],[0,[true,"HUD Params"],false,null,389251154266613,[[-1,23,null,0,false,false,false,389251154266613,false,[[1,[2,"HUD Params"]]]]],[]],[1,"HUD_SCALE",0,0.75,false,false,556831409849001,false],[0,[true,"HUD"],false,null,446927424454860,[[-1,23,null,0,false,false,false,446927424454860,false,[[1,[2,"HUD"]]]]],[],[[0,null,false,null,478568042219828,[[0,30,null,2,false,false,false,703336495149119,false,[[1,[2,"Destroy_Hud"]]]]],[[27,25,null,671446044214610,false],[28,25,null,914005668622209,false],[29,113,null,796574969498164,false],[34,113,null,372050529420235,false],[32,25,null,875505195149992,false],[41,113,null,690876847311780,false],[40,113,null,747652641138166,false],[42,114,null,297505936904396,false],[43,25,null,838995915687939,false]]],[0,null,false,null,514366921532116,[[0,30,null,2,false,false,false,721220222266321,false,[[1,[2,"Init_Hud"]]]]],[[0,26,null,673296892364766,false,[[1,[2,"Destroy_Hud"]],[13]]],[-1,61,null,468379129694183,false,[[4,28],[5,[2,"hud"]],[0,[4,[6,[3,[23,"canvasDeltaWidth"]],[1,0.5]],[0,40]]],[0,[4,[6,[3,[23,"canvasDeltaHeight"]],[1,0.5]],[0,40]]]]],[28,72,null,654606274628298,false,[[0,[21,28,false,null,3]]]],[-1,61,null,387884185855995,false,[[4,29],[5,[2,"hud"]],[0,[4,[4,[20,28,93,false,null],[6,[20,28,73,false,null],[1,0.5]]],[0,7]]],[0,[20,28,86,false,null]]]],[29,45,null,475242855791933,false,[[7,[23,"myCoins"]]]],[-1,61,null,720123064354321,false,[[4,34],[5,[2,"hud"]],[0,[23,"CANVAS_MID_X"]],[0,[4,[6,[3,[23,"canvasDeltaHeight"]],[1,0.5]],[0,13]]]]],[34,45,null,463934953741521,false,[[7,[2,"0m"]]]],[34,148,null,859087554092071,false,[[0,[19,149,[[0,0],[0,0],[0,0]]]]]],[34,150,null,340171312318296,false,[[1,[2,"Outline"]],[0,[0,3]],[0,[0,0]]]],[-1,61,null,386167628198428,false,[[4,34],[5,[2,"hud"]],[0,[23,"CANVAS_MID_X"]],[0,[4,[6,[3,[23,"canvasDeltaHeight"]],[1,0.5]],[0,10]]]]],[34,45,null,975949520320649,false,[[7,[2,"0m"]]]]],[[0,null,false,null,227049709697633,[[-1,27,null,0,false,false,false,592923080775934,false,[[11,"myBestDistance"],[8,1],[7,[0,0]]]]],[[-1,61,null,667697060333840,false,[[4,41],[5,[2,"hud"]],[0,[5,[4,[23,"CANVAS_WIDTH"],[6,[23,"canvasDeltaWidth"],[1,0.5]]],[0,10]]],[0,[4,[6,[3,[23,"canvasDeltaHeight"]],[1,0.5]],[0,10]]]]],[41,45,null,650954727902017,false,[[7,[2,"BEST"]]]],[-1,61,null,480785461620878,false,[[4,40],[5,[2,"hud"]],[0,[5,[4,[23,"CANVAS_WIDTH"],[6,[23,"canvasDeltaWidth"],[1,0.5]]],[0,10]]],[0,[4,[6,[3,[23,"canvasDeltaHeight"]],[1,0.5]],[0,35]]]]],[40,45,null,287122335211431,false,[[7,[10,[19,36,[[6,[23,"myBestDistance"],[23,"SCORE_PER_PIXEL"]]]],[2,"m"]]]]]]],[1,"paddeDX",0,400,false,false,813167822998157,false],[0,null,false,null,600476149971516,[],[[-1,61,null,401058580422119,false,[[4,32],[5,[2,"hud"]],[0,[4,[23,"CANVAS_MID_X"],[23,"paddeDX"]]],[0,[4,[4,[23,"CANVAS_HEIGHT"],[6,[23,"canvasDeltaHeight"],[1,0.5]]],[0,25]]]]],[32,63,null,621007262209047,false,[[10,0],[7,[2,"FORWARD"]]]],[-1,61,null,519280214632063,false,[[4,32],[5,[2,"hud"]],[0,[5,[23,"CANVAS_MID_X"],[23,"paddeDX"]]],[0,[4,[4,[23,"CANVAS_HEIGHT"],[6,[23,"canvasDeltaHeight"],[1,0.5]]],[0,25]]]]],[32,63,null,101936723775840,false,[[10,0],[7,[2,"BACKWARD"]]]],[32,151,null,564643056406241,false,[[3,0]]]]],[1,"DIAL_DX",0,90,false,false,344277835300822,false],[0,null,false,null,346753343894461,[],[[-1,61,null,565644339505446,false,[[4,27],[5,[2,"hud"]],[0,[5,[23,"CANVAS_MID_X"],[23,"DIAL_DX"]]],[0,[5,[4,[23,"CANVAS_HEIGHT"],[6,[23,"canvasDeltaHeight"],[1,0.5]]],[0,90]]]]],[27,63,null,373605472891692,false,[[10,0],[7,[2,"RPM"]]]],[33,53,null,143063259894569,false,[[0,[20,27,93,false,null]],[0,[20,27,86,false,null]]]],[33,63,null,975891171579508,false,[[10,0],[7,[0,0]]]],[33,83,null,852303613011505,false,[[0,[21,33,false,null,0]]]],[33,63,null,871743559146382,false,[[10,2],[7,[0,165]]]],[-1,61,null,272802690812281,false,[[4,27],[5,[2,"hud"]],[0,[4,[23,"CANVAS_MID_X"],[23,"DIAL_DX"]]],[0,[5,[4,[23,"CANVAS_HEIGHT"],[6,[23,"canvasDeltaHeight"],[1,0.5]]],[0,90]]]]],[27,62,null,286243510002688,false,[[0,[0,1]]]],[27,63,null,317625314019060,false,[[10,0],[7,[2,"BOOST"]]]],[33,53,null,801105932216840,false,[[0,[20,27,93,false,null]],[0,[20,27,86,false,null]]]],[33,63,null,745701542778642,false,[[10,0],[7,[0,85]]]],[33,83,null,150902054386985,false,[[0,[21,33,false,null,0]]]],[33,63,null,412150109204007,false,[[10,2],[7,[0,100]]]],[33,63,null,820290479869160,false,[[10,1],[7,[0,-85]]]]]]]],[0,null,false,null,659885323062060,[[0,30,null,2,false,false,false,872640903078781,false,[[1,[2,"Update_aPaddleState"]]]]],[],[[0,null,false,null,664787176200258,[[32,67,null,0,false,false,false,633025788763738,false,[[10,0],[8,0],[7,[20,0,38,false,null,[[0,0]]]]]]],[[32,63,null,274931468123367,false,[[10,1],[7,[20,0,38,false,null,[[0,1]]]]]]],[[0,null,false,null,942526789285603,[[32,67,null,0,false,false,false,447646830442675,false,[[10,1],[8,0],[7,[2,"PRESSED"]]]]],[[32,62,null,876785444874391,false,[[0,[0,1]]]]]],[0,null,false,null,981080431749534,[[32,67,null,0,false,false,false,780423830810461,false,[[10,1],[8,0],[7,[2,"IDLE"]]]]],[[32,62,null,222787963793667,false,[[0,[0,0]]]]]]]]]]]],[0,[true,"Bars"],false,null,544819178583130,[[-1,23,null,0,false,false,false,544819178583130,false,[[1,[2,"Bars"]]]]],[],[[0,null,false,null,330840095302527,[[0,30,null,2,false,false,false,877488831688008,false,[[1,[2,"Activate_aPowerBar"]]]]],[],[[1,"oX",0,25,false,false,620342873625772,false],[1,"oY",0,100,false,false,558698212984917,false],[1,"posX",0,0,false,false,913527432796964,false],[1,"posY",0,0,false,false,991762916100978,false],[1,"barOccupyY",0,50,false,false,135758834710213,false],[0,null,false,null,125853680003393,[],[[-1,29,null,718708063315772,false,[[11,"posX"],[7,[4,[6,[3,[23,"canvasDeltaWidth"]],[1,0.5]],[23,"oX"]]]]],[-1,29,null,351107040441246,false,[[11,"posY"],[7,[4,[6,[3,[23,"canvasDeltaHeight"]],[1,0.5]],[23,"oY"]]]]]]],[0,null,false,null,383189241642021,[[-1,33,null,0,false,false,false,439781748755659,false,[[7,[20,42,152,false,null]],[8,4],[7,[0,0]]]]],[[-1,60,null,280236396805969,false,[[11,"posY"],[7,[6,[23,"barOccupyY"],[20,42,152,false,null]]]]]]],[0,null,false,null,442979732437661,[[42,119,null,0,false,false,false,105598654914303,false,[[10,8],[8,0],[7,[20,0,38,false,null,[[0,0]]]]]]],[[42,115,null,995908557698306,false,[[10,2],[7,[20,0,38,false,null,[[0,1]]]]]]]],[0,null,false,null,427046668856989,[[-1,37,null,0,false,false,false,509463744508439,false]],[[-1,61,null,858534238576803,false,[[4,43],[5,[2,"hud"]],[0,[23,"posX"]],[0,[23,"posY"]]]],[-1,61,null,218002592757941,false,[[4,42],[5,[2,"hud"]],[0,[4,[23,"posX"],[0,1]]],[0,[23,"posY"]]]],[42,115,null,594523937979069,false,[[10,8],[7,[20,0,38,false,null,[[0,0]]]]]],[42,115,null,404465623298339,false,[[10,4],[7,[20,43,70,false,null]]]],[-1,61,null,149175862518102,false,[[4,25],[5,[2,"hud"]],[0,[23,"posX"]],[0,[23,"posY"]]]],[42,115,null,779737508067427,false,[[10,5],[7,[20,25,70,false,null]]]],[25,153,"Sine",601658647094599,false,[[3,0]]],[42,115,null,206587469393720,false,[[10,3],[7,[20,0,38,false,null,[[0,1]]]]]],[42,115,null,552463329022230,false,[[10,6],[7,[7,[0,1],[21,42,false,null,3]]]]],[42,115,null,533299232156296,false,[[10,2],[7,[21,42,false,null,3]]]],[42,154,null,282317097954707,false,[[10,7],[3,1]]]],[[0,null,false,null,887967313631057,[[0,71,null,0,false,false,false,914880540454892,false,[[0,[0,0]],[8,0],[7,[2,"MAGNET"]]]]],[[25,85,null,457354456126631,false,[[0,[5,[20,25,86,false,null],[0,15]]]]],[25,72,null,511066943424956,false,[[0,[1,0.4]]]],[25,62,null,293091758789837,false,[[0,[0,0]]]],[42,155,null,172931218002170,false,[[1,[2,"Tint"]],[0,[0,0]],[0,[0,93]]]],[42,155,null,854411712470355,false,[[1,[2,"Tint"]],[0,[0,1]],[0,[0,15]]]],[42,155,null,367980887297586,false,[[1,[2,"Tint"]],[0,[0,2]],[0,[0,15]]]]]],[0,null,false,null,388308129200185,[[0,71,null,0,false,false,false,956813731817873,false,[[0,[0,0]],[8,0],[7,[2,"FREEZE"]]]]],[[25,62,null,472779913322970,false,[[0,[0,1]]]],[25,85,null,257356799728907,false,[[0,[20,25,86,false,null]]]],[25,156,null,144952920890525,false,[[0,[5,[20,25,93,false,null],[0,10]]]]],[25,72,null,347131352642743,false,[[0,[1,0.65]]]],[42,155,null,316276003937777,false,[[1,[2,"Tint"]],[0,[0,0]],[0,[0,55]]]],[42,155,null,307807112218864,false,[[1,[2,"Tint"]],[0,[0,1]],[0,[0,100]]]],[42,155,null,128779403828715,false,[[1,[2,"Tint"]],[0,[0,2]],[0,[0,100]]]]]],[0,null,false,null,985762662661403,[],[[25,156,null,569999291261353,false,[[0,[4,[20,25,93,false,null],[6,[20,25,73,false,null],[1,0.5]]]]]]]]]]]],[0,null,false,null,212982573205213,[[0,30,null,2,false,false,false,298341222199774,false,[[1,[2,"On_PowerBar_Finished"]]]]],[],[[0,null,false,null,657334941841941,[[86,157,null,0,false,false,true,419694150900369,false,[[0,[20,0,38,false,null,[[0,0]]]]]]],[[86,154,null,877001494472119,false,[[10,7],[3,0]]],[86,114,null,924137512992446,false]],[[0,null,false,null,268511133143740,[[86,119,null,0,false,false,false,516851806177325,false,[[10,8],[8,0],[7,[2,"MAGNET"]]]]],[],[[0,null,false,null,406120854509697,[[71,79,null,0,false,false,false,500182488642048,false,[[10,5]]]],[[71,78,null,307466860998708,false,[[10,13],[3,0]]]]]]],[0,null,false,null,647785020914214,[[86,119,null,0,false,false,false,745536176723616,false,[[10,8],[8,0],[7,[2,"FREEZE"]]]]],[],[[0,null,false,null,602958640287548,[[71,79,null,0,false,false,false,951590750193447,false,[[10,5]]]],[[71,78,null,595954528601407,false,[[10,14],[3,0]]],[73,158,"Pin",179873148543679,false],[73,81,"Chipmunk",638641684601430,false,[[3,1]]],[73,159,"Chipmunk",700986746430685,false,[[3,0],[0,[0,0]],[0,[0,0]]]],[44,25,null,625478616392818,false]]]]],[0,null,false,null,398819350235871,[[81,77,null,0,false,false,true,966507697756245,false,[[0,[21,86,false,null,5]]]]],[[81,25,null,495537034391151,false]]],[0,null,false,null,785345007223612,[[43,77,null,0,false,false,true,945650381961385,false,[[0,[21,86,false,null,4]]]]],[[43,25,null,174329215447082,false]]]]]]],[0,null,false,null,921520992469502,[[86,160,null,0,false,false,false,597909091284058,false,[[10,7]]]],[[86,161,null,268650142709131,false,[[10,2],[7,[19,87]]]],[86,162,null,620660565058060,false,[[0,[6,[6,[21,86,false,null,2],[21,86,false,null,6]],[21,86,false,null,1]]]]]],[[0,null,false,null,119662347800675,[[86,119,null,0,false,false,false,389583042092256,false,[[10,8],[8,0],[7,[2,"FREEZE"]]]]],[],[[0,null,false,null,363754818116376,[[86,119,null,0,false,false,false,958612568813829,false,[[10,2],[8,3],[7,[0,1]]]],[-1,163,null,0,false,false,false,100043921624061,false]],[[44,164,"Flash",699822322084341,false,[[0,[1,0.1]],[0,[1,0.1]],[0,[1,1]]]]]]]],[0,null,false,null,102355511365746,[[86,119,null,0,false,false,false,940881822777851,false,[[10,2],[8,3],[7,[0,0]]]]],[[86,162,null,546786076279390,false,[[0,[0,0]]]]],[[0,null,false,null,910715716560178,[[86,119,null,0,false,false,false,388089814289683,false,[[10,0],[8,0],[7,[2,"HUD"]]]]],[[0,26,null,836556925822799,false,[[1,[2,"On_PowerBar_Finished"]],[13,[7,[20,86,165,false,null]]]]]]]]]]]]],[0,[true,"Selection Screen Params"],false,null,741643226186183,[[-1,23,null,0,false,false,false,741643226186183,false,[[1,[2,"Selection Screen Params"]]]]],[]],[0,[true,"Selection Screen"],false,null,567916837216117,[[-1,23,null,0,false,false,false,567916837216117,false,[[1,[2,"Selection Screen"]]]]],[],[[0,null,false,null,213877432419110,[[0,30,null,2,false,false,false,495051668999293,false,[[1,[2,"Destroy_SelectionScreen"]]]]],[[53,25,null,553737082851440,false],[55,25,null,247391843341818,false],[56,113,null,821215226932808,false],[29,113,null,652477728033713,false],[28,25,null,321926761572395,false]]],[0,null,false,null,797423627727185,[[0,30,null,2,false,false,false,141238407656758,false,[[1,[2,"Show_SelectionScreen"]]]]],[[-1,141,null,879823247677990,false,[[5,[2,"selection"]],[3,1]]],[-1,141,null,988552378286342,false,[[5,[2,"selection_bg"]],[3,1]]],[-1,29,null,731315557680102,false,[[11,"gameSequence"],[7,[0,20]]]],[0,26,null,472674704914143,false,[[1,[2,"Spawn_SelectionScreen"]],[13]]],[-1,112,null,416677846221073,false,[[0,[1,0.5]]]],[0,26,null,590708328301895,false,[[1,[2,"Spawn_CarSelection_Buttons"]],[13]]]]],[0,null,false,null,168284767113956,[[0,30,null,2,false,false,false,675820013659002,false,[[1,[2,"Spawn_SelectionScreen"]]]]],[[0,26,null,590700829049372,false,[[1,[2,"Destroy_SelectionScreen"]],[13]]],[-1,61,null,806649130466353,false,[[4,28],[5,[2,"selection"]],[0,[4,[6,[3,[23,"canvasDeltaWidth"]],[1,0.5]],[0,40]]],[0,[4,[6,[3,[23,"canvasDeltaHeight"]],[1,0.5]],[0,40]]]]],[28,72,null,483513962511269,false,[[0,[1,0.55]]]],[-1,61,null,473898771771117,false,[[4,29],[5,[2,"selection"]],[0,[4,[4,[20,28,93,false,null],[6,[20,28,73,false,null],[1,0.5]]],[0,7]]],[0,[20,28,86,false,null]]]],[29,45,null,404593725753797,false,[[7,[23,"myCoins"]]]]],[[1,"posX",0,0,false,false,530026840136672,false],[1,"posY",0,0,false,false,249046334142190,false],[1,"dx",0,200,false,false,967875570530801,false],[1,"maxItemsPerRow",0,3,false,false,386106127204596,false],[0,null,false,null,220567748087671,[],[[-1,29,null,810431216212863,false,[[11,"posX"],[7,[5,[23,"CANVAS_MID_X"],[6,[5,[6,[19,46,[[23,"MAX_SKINS"],[0,0],[23,"maxItemsPerRow"]]],[1,0.5]],[1,0.5]],[23,"dx"]]]]]],[-1,29,null,574433484197313,false,[[11,"posY"],[7,[0,250]]]]]],[0,null,false,null,174392418644457,[[-1,39,null,0,true,false,false,557021281819330,false,[[0,[23,"MAX_SKINS"]]]]],[[-1,61,null,150178471608680,false,[[4,53],[5,[2,"selection"]],[0,[23,"posX"]],[0,[23,"posY"]]]],[53,166,null,100346670635064,false,[[1,[10,[2,"car_"],[19,41]]],[3,1]]],[53,63,null,312742885098877,false,[[10,1],[7,[19,41]]]],[-1,60,null,741892052153606,false,[[11,"posX"],[7,[23,"dx"]]]]],[[0,null,false,null,259799466696406,[[54,167,null,0,false,false,false,510084889440885,false,[[0,[19,41]],[8,1],[7,[0,1]]]]],[[53,78,null,901744468668380,false,[[10,0],[3,1]]],[53,62,null,772467416576395,false,[[0,[0,1]]]]]],[0,null,false,null,860592856044511,[[-1,33,null,0,false,false,false,920309300552748,false,[[7,[19,41]],[8,4],[7,[0,0]]]],[-1,33,null,0,false,false,false,623231582503715,false,[[7,[8,[4,[19,41],[0,1]],[23,"maxItemsPerRow"]]],[8,0],[7,[0,0]]]]],[[-1,29,null,773798498034491,false,[[11,"posX"],[7,[5,[23,"CANVAS_MID_X"],[6,[5,[6,[19,46,[[5,[5,[23,"MAX_SKINS"],[0,1]],[19,41]],[0,0],[23,"maxItemsPerRow"]]],[1,0.5]],[1,0.5]],[23,"dx"]]]]]],[-1,60,null,481727857197885,false,[[11,"posY"],[7,[0,220]]]]]]]]]],[0,null,false,null,252390100650662,[[0,30,null,2,false,false,false,754326087284280,false,[[1,[2,"Spawn_CarSelection_Buttons"]]]]],[],[[0,null,false,null,889829549202144,[[-1,106,null,0,true,false,false,761832530188001,false,[[4,53]]]],[[-1,61,null,162964618725506,false,[[4,55],[5,[2,"selection"]],[0,[20,53,93,false,null]],[0,[4,[20,53,86,false,null],[0,52]]]]],[55,63,null,926031495094874,false,[[10,10],[7,[4,[0,11],[21,53,false,null,1]]]]],[55,63,null,957361028533361,false,[[10,1],[7,[0,1]]]],[55,78,null,632266185351676,false,[[10,0],[3,1]]],[53,63,null,267031759438825,false,[[10,4],[7,[20,55,70,false,null]]]]],[[0,null,false,null,570993976638653,[[54,167,null,0,false,false,false,846547101094467,false,[[0,[21,53,false,null,1]],[8,1],[7,[0,1]]]]],[[55,62,null,101366758770645,false,[[0,[0,2]]]],[-1,61,null,566634110427975,false,[[4,56],[5,[2,"selection"]],[0,[5,[20,55,93,false,null],[0,15]]],[0,[20,55,86,false,null]]]],[56,45,null,319189751271149,false,[[7,[20,12,43,false,null,[[21,53,false,null,1],[0,2]]]]]],[53,63,null,195431644937308,false,[[10,2],[7,[20,56,168,false,null]]]],[-1,61,null,932204404666661,false,[[4,28],[5,[2,"selection"]],[0,[5,[20,55,93,false,null],[0,30]]],[0,[5,[20,55,86,false,null],[0,1]]]]],[28,72,null,168678902989342,false,[[0,[1,0.25]]]],[53,63,null,157190893456289,false,[[10,3],[7,[20,28,70,false,null]]]]]],[0,null,false,null,799851945165921,[[-1,37,null,0,false,false,false,624406812478604,false]],[],[[0,null,false,null,822704277000199,[[-1,33,null,0,false,false,false,684601003810175,false,[[7,[21,53,false,null,1]],[8,0],[7,[23,"myCarSkin"]]]]],[[55,62,null,900397614649487,false,[[0,[0,0]]]]]],[0,null,false,null,182767624106391,[[-1,37,null,0,false,false,false,230937013797935,false]],[[55,62,null,394584914554646,false,[[0,[0,1]]]]]]]]]]]],[0,null,false,null,751014039866955,[[0,30,null,2,false,false,false,852585441709338,false,[[1,[2,"On_CarSelectBtn_Clicked"]]]]],[],[[0,null,false,null,157097796010615,[[0,71,null,0,false,false,false,561358250664822,false,[[0,[0,0]],[8,1],[7,[23,"myCarSkin"]]]]],[],[[0,null,false,null,672470171827125,[[54,167,null,0,false,false,false,660038692663334,false,[[0,[20,0,38,false,null,[[0,0]]]],[8,1],[7,[0,1]]]]],[],[[0,null,false,null,220938612013901,[[-1,27,null,0,false,false,false,786652288700005,false,[[11,"myCoins"],[8,5],[7,[20,12,43,false,null,[[20,0,38,false,null,[[0,0]]],[0,2]]]]]]],[[0,26,null,467663011436957,false,[[1,[2,"On_Car_Unlocked"]],[13,[7,[20,0,38,false,null,[[0,0]]]]]]],[0,26,null,577229168403274,false,[[1,[2,"Play_UISound"]],[13,[7,[2,"unlock"]]]]]]],[0,null,false,null,150617785288337,[[-1,37,null,0,false,false,false,360388706805235,false]],[[0,26,null,673620488018336,false,[[1,[2,"Play_UISound"]],[13,[7,[2,"not_ready"]]]]]]]]],[0,null,false,null,260233952263523,[[-1,37,null,0,false,false,false,367538037628141,false]],[[0,26,null,706502608809151,false,[[1,[2,"Play_UISound"]],[13,[7,[2,"click_0"]]]]],[0,26,null,634664893643103,false,[[1,[2,"Select_ThisCar"]],[13,[7,[20,0,38,false,null,[[0,0]]]]]]]]]]]]],[0,null,false,null,807979770204121,[[0,30,null,2,false,false,false,400867781905612,false,[[1,[2,"Select_ThisCar"]]]]],[],[[0,null,false,null,658680996061779,[[53,67,null,0,false,false,false,166057525147597,false,[[10,1],[8,0],[7,[23,"myCarSkin"]]]]],[],[[0,null,false,null,900374879203519,[[55,77,null,0,false,false,true,985835595302130,false,[[0,[21,53,false,null,4]]]]],[[55,62,null,450947986005938,false,[[0,[0,1]]]]]]]],[0,null,false,null,693739676488702,[],[[-1,29,null,608244070352782,false,[[11,"myCarSkin"],[7,[20,0,38,false,null,[[0,0]]]]]]]],[0,null,false,null,730589287025701,[[53,67,null,0,false,false,false,341472045234405,false,[[10,1],[8,0],[7,[23,"myCarSkin"]]]]],[],[[0,null,false,null,617906693109027,[[55,77,null,0,false,false,true,906795077377609,false,[[0,[21,53,false,null,4]]]]],[[55,62,null,870167390848854,false,[[0,[0,0]]]]]]]]]],[0,null,false,null,251374898254718,[[0,30,null,2,false,false,false,801996388062578,false,[[1,[2,"On_Car_Unlocked"]]]]],[[0,26,null,576863295340030,false,[[1,[2,"Select_ThisCar"]],[13,[7,[20,0,38,false,null,[[0,0]]]]]]],[54,40,null,800081371349354,false,[[0,[20,0,38,false,null,[[0,0]]]],[7,[0,1]]]],[0,26,null,159744809682756,false,[[1,[2,"Save_LockKey"]],[13]]],[0,26,null,744949969002019,false,[[1,[2,"Update_Coins"]],[13,[7,[5,[23,"myCoins"],[20,12,43,false,null,[[20,0,38,false,null,[[0,0]]],[0,2]]]]]]]]],[[0,null,false,null,819808328034759,[[53,67,null,0,false,false,false,181102824129932,false,[[10,1],[8,0],[7,[20,0,38,false,null,[[0,0]]]]]]],[[53,62,null,773086457953775,false,[[0,[0,0]]]],[53,82,null,446297766227508,false,[[4,39],[5,[2,"selection"]],[7,[0,0]]]]],[[0,null,false,null,736228689197167,[[28,77,null,0,false,false,true,961009084790046,false,[[0,[21,53,false,null,3]]]]],[[28,25,null,960181359084624,false]]],[0,null,false,null,518604770485354,[[56,169,null,0,false,false,true,164542201098788,false,[[0,[21,53,false,null,2]]]]],[[56,113,null,578226237483138,false]]]]]]]]],[0,[true,"Tutorial"],false,null,785700447192806,[[-1,23,null,0,false,false,false,785700447192806,false,[[1,[2,"Tutorial"]]]]],[],[[0,null,false,null,871457631452967,[[0,30,null,2,false,false,false,391707590856718,false,[[1,[2,"Show_Tutorial"]]]]],[[-1,29,null,124150636431404,false,[[11,"isTutorialActive"],[7,[0,0]]]],[-1,141,null,367887665993424,false,[[5,[2,"tutorial_bg"]],[3,1]]],[-1,141,null,758148693165545,false,[[5,[2,"tutorial"]],[3,1]]],[-1,141,null,166968300404113,false,[[5,[2,"menu"]],[3,0]]],[-1,29,null,242359386462729,false,[[11,"gameSequence"],[7,[23,"SEQ_TUTORIAL"]]]],[-1,61,null,786130629529813,false,[[4,58],[5,[2,"tutorial"]],[0,[23,"CANVAS_MID_X"]],[0,[4,[23,"CANVAS_MID_Y"],[0,250]]]]],[58,72,null,870570171886459,false,[[0,[1,0.55]]]],[58,131,"LiteTween",979241153328228,false,[[3,0],[3,1]]],[-1,61,null,150185988753074,false,[[4,59],[5,[2,"tutorial"]],[0,[5,[23,"CANVAS_MID_X"],[0,10]]],[0,[5,[4,[23,"CANVAS_HEIGHT"],[6,[23,"canvasDeltaHeight"],[1,0.5]]],[0,125]]]]],[59,72,null,604881183210150,false,[[0,[21,59,false,null,4]]]]]],[0,null,false,null,988564597466900,[[0,30,null,2,false,false,false,360667802036723,false,[[1,[2,"Destroy_Tutorial"]]]]],[[58,25,null,165887926578801,false],[59,25,null,467048823911142,false],[-1,141,null,152929800685578,false,[[5,[2,"tutorial_bg"]],[3,0]]],[-1,141,null,941950528738900,false,[[5,[2,"tutorial"]],[3,0]]],[-1,141,null,186462753190912,false,[[5,[2,"menu"]],[3,1]]]]]]]]],["CarManager",[[0,[true,"CM - On Start"],false,null,448462659487543,[[-1,23,null,0,false,false,false,448462659487543,false,[[1,[2,"CM - On Start"]]]]],[],[[0,null,false,null,856635614345968,[[-1,24,null,1,false,false,false,126246209917035,false]],[[0,26,null,692685119813208,false,[[1,[2,"Init_CarsData"]],[13]]],[71,170,"Chipmunk",530480564195392,false,[[0,[1,0.05]]]],[71,171,"Chipmunk",977737921838183,false,[[3,0],[0,[0,0]],[0,[0,150]]]],[0,26,null,404481939084725,false,[[1,[2,"Clean_CarManager"]],[13]]]]]]],[0,[true,"CM - User Params"],false,null,312250656856091,[[-1,23,null,0,false,false,false,312250656856091,false,[[1,[2,"CM - User Params"]]]]],[]],[1,"myCarSkin",0,0,false,false,509927787402518,false],[0,[true,"CM CONTATNS"],false,null,352257931047112,[[-1,23,null,0,false,false,false,352257931047112,false,[[1,[2,"CM CONTATNS"]]]]],[]],[1,"MAX_SKINS",0,5,false,false,143729125929979,false],[1,"MAX_VIR_SPEED",0,1200,false,false,934484839228825,false],[1,"SCORE_PER_PIXEL",0,0.02,false,false,761089241257778,false],[0,[true,"Balance Params"],false,null,384826172169141,[[-1,23,null,0,false,false,false,384826172169141,false,[[1,[2,"Balance Params"]]]]],[]],[1,"COM_BALANCE_FORCE",0,150,false,false,857910951301962,false],[1,"comForce_ShiftX",0,0,false,false,664493991599433,false],[1,"comForce_ShiftY",0,0,false,false,399675045328321,false],[1,"slopeBalanceMag",0,10,false,false,747319776250575,false],[1,"motionDampingDT",0,0.025,false,false,691887230888278,false],[0,[true,"Camera Params"],false,null,673480222972493,[[-1,23,null,0,false,false,false,673480222972493,false,[[1,[2,"Camera Params"]]]]],[]],[1,"cameraLerp",0,3,false,false,641819865147628,false],[1,"cameraOY",0,50,false,false,121493648660446,false],[1,"startX",0,400,false,false,221352874561827,false],[1,"dropY",0,900,false,false,565312075287010,false],[0,[true,"Car Params"],false,null,117981845434695,[[-1,23,null,0,false,false,false,117981845434695,false,[[1,[2,"Car Params"]]]]],[]],[1,"isControllerActive",0,0,false,false,192693776887627,false],[1,"isGrounded",0,1,false,false,815274497405752,false],[1,"werightPoint",1,"wp_origin",false,false,399545440454164,false],[0,[true,"Boost Dial"],false,null,271432015731080,[[-1,23,null,0,false,false,false,271432015731080,false,[[1,[2,"Boost Dial"]]]]],[]],[1,"needleSimulateAngle",0,0,false,false,419165441739180,false],[1,"boostDial_accMag",0,240,false,false,803316821897777,false],[1,"boostDial_daccMag",0,175,false,false,724312915663753,false],[0,[true,"Cars"],false,null,930800223638274,[[-1,23,null,0,false,false,false,930800223638274,false,[[1,[2,"Cars"]]]]],[],[[0,[true,"Cars - Functions"],false,null,189982599591916,[[-1,23,null,0,false,false,false,189982599591916,false,[[1,[2,"Cars - Functions"]]]]],[],[[0,null,false,null,293761952467524,[[0,30,null,2,false,false,false,123889257131687,false,[[1,[2,"Init_CarsData"]]]]],[[12,54,null,406552785721032,false,[[0,[23,"MAX_SKINS"]],[0,[0,3]],[0,[0,1]]]]],[[0,null,false,null,259078072858043,[],[[12,172,null,194060331505679,false,[[0,[0,0]],[0,[0,0]],[7,[0,0]]]],[12,172,null,460320323865851,false,[[0,[0,0]],[0,[0,1]],[7,[0,1500]]]],[12,172,null,870724337641983,false,[[0,[0,0]],[0,[0,2]],[7,[0,0]]]]]],[0,null,false,null,847234543253960,[],[[12,172,null,107498978684318,false,[[0,[0,1]],[0,[0,0]],[7,[0,0]]]],[12,172,null,460325146684209,false,[[0,[0,1]],[0,[0,1]],[7,[0,1500]]]],[12,172,null,991095006298295,false,[[0,[0,1]],[0,[0,2]],[7,[0,200]]]]]],[0,null,false,null,519637570851272,[],[[12,172,null,168476110710540,false,[[0,[0,2]],[0,[0,0]],[7,[0,0]]]],[12,172,null,403146393147068,false,[[0,[0,2]],[0,[0,1]],[7,[0,2000]]]],[12,172,null,676622443825731,false,[[0,[0,2]],[0,[0,2]],[7,[0,300]]]]]],[0,null,false,null,677697994463766,[],[[12,172,null,400405092823590,false,[[0,[0,3]],[0,[0,0]],[7,[0,1]]]],[12,172,null,889959535487954,false,[[0,[0,3]],[0,[0,1]],[7,[0,2000]]]],[12,172,null,497931048487861,false,[[0,[0,3]],[0,[0,2]],[7,[0,500]]]]]],[0,null,false,null,391566782085064,[],[[12,172,null,489598070060295,false,[[0,[0,4]],[0,[0,0]],[7,[0,1]]]],[12,172,null,407961133698568,false,[[0,[0,4]],[0,[0,1]],[7,[0,2000]]]],[12,172,null,675360751898835,false,[[0,[0,4]],[0,[0,2]],[7,[0,1000]]]]]],[0,null,false,null,482790095694824,[],[[54,54,null,636500828165732,false,[[0,[23,"MAX_SKINS"]],[0,[0,1]],[0,[0,1]]]],[54,40,null,400415353376439,false,[[0,[0,0]],[7,[0,1]]]]]]]],[0,null,false,null,249073449127567,[[0,30,null,2,false,false,false,923453088404721,false,[[1,[2,"Init_CarManager"]]]]],[[0,26,null,384107980996325,false,[[1,[2,"Spawn_aCar"]],[13,[7,[0,0]],[7,[23,"myCarSkin"]],[7,[23,"startX"]],[7,[23,"dropY"]]]]],[-1,112,null,450410779194477,false,[[0,[1,0.25]]]],[0,26,null,749392564151760,false,[[1,[2,"Spawn_aEgg"]],[13]]]]],[0,null,false,null,593920435326214,[[0,30,null,2,false,false,false,725570438582798,false,[[1,[2,"Clean_CarManager"]]]]],[[71,25,null,907191593417553,false],[72,25,null,472958413411327,false],[75,25,null,607500795325605,false],[73,25,null,109106495281883,false],[14,25,null,312473452527459,false],[76,25,null,924180295166269,false],[80,25,null,424284600851460,false]]],[0,null,false,null,480387335821122,[[0,30,null,2,false,false,false,657809004641582,false,[[1,[2,"Spawn_aCar"]]]]],[[-1,61,null,185384220477600,false,[[4,3],[5,[2,"track"]],[0,[20,0,38,false,null,[[0,2]]]],[0,[20,0,38,false,null,[[0,3]]]]]],[3,63,null,643507772056140,false,[[10,9],[7,[7,[0,1],[23,"MAX_VIR_SPEED"]]]]],[3,63,null,448724785359477,false,[[10,6],[7,[20,0,38,false,null,[[0,0]]]]]],[3,63,null,633029918261621,false,[[10,2],[7,[20,0,38,false,null,[[0,1]]]]]],[3,62,null,412412049498580,false,[[0,[21,3,false,null,2]]]],[3,63,null,163116459282967,false,[[10,8],[7,[20,3,93,false,null]]]],[3,78,null,372120050820753,false,[[10,4],[3,1]]]],[[0,null,false,null,879429648016886,[[-1,39,null,0,true,false,false,833414597330658,false,[[0,[0,2]]]]],[[-1,61,null,704356478602557,false,[[4,4],[5,[2,"track"]],[0,[20,3,65,false,null,[[10,[2,"tyre_"],[19,41]]]]],[0,[20,3,66,false,null,[[10,[2,"tyre_"],[19,41]]]]]]],[4,63,null,149784775639640,false,[[10,2],[7,[21,3,false,null,6]]]],[4,62,null,861978097997276,false,[[0,[20,12,43,false,null,[[21,3,false,null,2],[0,0]]]]]],[4,173,"Chipmunk",155430055688310,false,[[3,2],[0,[0,31]]]],[3,174,"Chipmunk",815267658368588,false,[[3,2],[0,[20,3,65,false,null,[[10,[2,"shaft_"],[19,41]]]]],[0,[20,3,66,false,null,[[10,[2,"shaft_"],[19,41]]]]],[3,2],[0,[20,3,65,false,null,[[10,[2,"tyre_"],[19,41]]]]],[0,[20,3,66,false,null,[[10,[2,"tyre_"],[19,41]]]]],[0,[20,4,70,false,null]],[3,0],[0,[0,0]],[0,[0,0]],[1,[2,""]]]],[3,175,"Chipmunk",837163192587776,false,[[3,2],[0,[20,3,65,false,null,[[10,[2,"shaft_"],[19,41]]]]],[0,[5,[20,3,66,false,null,[[10,[2,"shaft_"],[19,41]]]],[0,10]]],[0,[20,4,70,false,null]],[3,0],[0,[0,0]],[0,[0,0]],[0,[0,50]],[0,[0,20]],[0,[0,10]],[1,[2,""]]]],[-1,61,null,274985767278199,false,[[4,10],[5,[2,"track"]],[0,[20,4,93,false,null]],[0,[20,4,86,false,null]]]],[10,176,null,365041848555243,false,[[0,[4,[6,[20,4,74,false,null],[1,0.5]],[0,15]]]]],[10,76,"Pin",274527529489506,false,[[4,4],[3,1]]],[10,63,null,972412668899804,false,[[10,0],[7,[19,41]]]]],[[0,null,false,null,306668886304386,[[-1,33,null,0,false,false,false,233224265174853,false,[[7,[19,41]],[8,0],[7,[0,1]]]]],[[4,78,null,316296358801137,false,[[10,0],[3,1]]],[4,63,null,337277335105401,false,[[10,1],[7,[20,12,43,false,null,[[21,3,false,null,2],[0,1]]]]]]]]]]]],[0,null,false,null,955491372887288,[[0,30,null,2,false,false,false,833401047687704,false,[[1,[2,"Push_aCar"]]]]],[],[[0,null,false,null,760573312339743,[[71,79,null,0,false,false,false,895824684042797,false,[[10,5]]]],[[71,78,null,658861061341884,false,[[10,1],[3,1]]]],[[0,null,false,null,269722505950454,[[72,67,null,0,false,false,false,167242040875958,false,[[10,2],[8,0],[7,[21,71,false,null,6]]]]],[],[[0,null,false,null,472440707465652,[[71,79,null,0,false,false,false,509150517203940,false,[[10,3]]]],[],[[0,null,false,null,955686565259287,[[72,79,null,0,false,false,false,298348362334445,false,[[10,0]]]],[],[[0,null,false,null,317208288498053,[[0,71,null,0,false,false,false,117514897174135,false,[[0,[0,0]],[8,0],[7,[2,"FORWARD"]]]]],[[72,177,"Chipmunk",334908153942961,false,[[3,1],[0,[20,71,84,false,null]],[0,[21,72,false,null,1]],[3,0],[0,[0,0]],[0,[0,0]]]]]],[0,null,false,null,217364709794605,[[0,71,null,0,false,false,false,940252490844325,false,[[0,[0,0]],[8,0],[7,[2,"BACKWARD"]]]]],[[72,177,"Chipmunk",755926657447432,false,[[3,1],[0,[4,[20,71,84,false,null],[0,180]]],[0,[21,72,false,null,1]],[3,0],[0,[0,0]],[0,[0,0]]]]]]]]]]]]]]]]]],[0,[true,"Cars - Input"],false,null,908850373277060,[[-1,23,null,0,false,false,false,908850373277060,false,[[1,[2,"Cars - Input"]]]]],[],[[0,null,false,null,812348958874475,[[1,145,null,1,false,false,false,311956083062569,false,[[4,32]]]],[],[[0,null,false,null,625270815733870,[[-1,27,null,0,false,false,false,102217595590082,false,[[11,"isControllerActive"],[8,0],[7,[0,1]]]]],[],[[0,null,false,null,702610932302966,[[32,79,null,0,false,true,false,218468986973972,false,[[10,2]]]],[[0,26,null,933447415519696,false,[[1,[2,"Update_aPaddleState"]],[13,[7,[21,32,true,null,0]],[7,[2,"PRESSED"]]]]]]]]]]],[0,null,false,null,933151021552588,[[1,146,null,1,false,false,false,922749953123398,false]],[],[[0,null,false,null,814637775624640,[[32,67,null,0,false,false,false,853156540237579,false,[[10,1],[8,0],[7,[2,"PRESSED"]]]]],[],[[0,null,false,null,382923224243404,[[32,79,null,0,false,true,false,622584842948542,false,[[10,2]]]],[],[[0,null,false,null,208738689299993,[[-1,106,null,0,true,false,false,104183965628339,false,[[4,32]]]],[[0,26,null,648426006760847,false,[[1,[2,"Update_aPaddleState"]],[13,[7,[21,32,true,null,0]],[7,[2,"IDLE"]]]]]]]]]]]]],[0,null,false,null,233629433570840,[[-1,27,null,0,false,false,false,701353055485336,false,[[11,"isControllerActive"],[8,0],[7,[0,1]]]]],[],[[1,"inputActive",0,0,false,false,315515277788245,false],[1,"isMovingForward",0,0,false,false,309982345142202,false],[1,"isMovingBackward",0,0,false,false,412887495690549,false],[0,null,false,null,556236851220673,[[32,67,null,0,false,false,false,123633052390832,false,[[10,1],[8,0],[7,[2,"PRESSED"]]]]],[],[[0,null,false,null,774996704483439,[[32,67,null,0,false,false,false,609526685136074,false,[[10,0],[8,0],[7,[2,"FORWARD"]]]]],[[-1,29,null,993994692037705,false,[[11,"inputActive"],[7,[0,1]]]],[-1,29,null,498004619884544,false,[[11,"isMovingForward"],[7,[0,1]]]]]],[0,null,false,null,923486427807882,[[32,67,null,0,false,false,false,475500964842443,false,[[10,0],[8,0],[7,[2,"BACKWARD"]]]]],[[-1,29,null,832743443806735,false,[[11,"inputActive"],[7,[0,1]]]],[-1,29,null,106933573005424,false,[[11,"isMovingBackward"],[7,[0,1]]]]]]]],[0,null,false,null,607792595307777,[[-1,178,null,0,false,true,false,506785583472097,false]],[],[[0,null,true,null,802778897162593,[[2,179,null,0,false,false,false,187683080764271,false,[[9,68]]],[2,179,null,0,false,false,false,642447734179952,false,[[9,39]]]],[[-1,29,null,194149765549824,false,[[11,"inputActive"],[7,[0,1]]]],[-1,29,null,319647889707884,false,[[11,"isMovingForward"],[7,[0,1]]]]],[[0,null,false,null,508024099649656,[[32,67,null,0,false,false,false,246311040075561,false,[[10,0],[8,0],[7,[2,"FORWARD"]]]]],[[32,78,null,686828871705727,false,[[10,2],[3,1]]],[0,26,null,915124902369471,false,[[1,[2,"Update_aPaddleState"]],[13,[7,[21,32,true,null,0]],[7,[2,"PRESSED"]]]]]]]]],[0,null,true,null,878786336234897,[[2,179,null,0,false,false,false,842016217648617,false,[[9,65]]],[2,179,null,0,false,false,false,695393389823282,false,[[9,37]]]],[[-1,29,null,380520045034453,false,[[11,"inputActive"],[7,[0,1]]]],[-1,29,null,172425989591681,false,[[11,"isMovingBackward"],[7,[0,1]]]]],[[0,null,false,null,937381505820567,[[32,67,null,0,false,false,false,481781829540663,false,[[10,0],[8,0],[7,[2,"BACKWARD"]]]]],[[32,78,null,780838684212680,false,[[10,2],[3,1]]],[0,26,null,242019085231047,false,[[1,[2,"Update_aPaddleState"]],[13,[7,[21,32,true,null,0]],[7,[2,"PRESSED"]]]]]]]]],[0,null,false,null,611536126288454,[[32,79,null,0,false,false,false,557842870452608,false,[[10,2]]]],[],[[0,null,false,null,249579359744839,[[32,67,null,0,false,false,false,551942054279669,false,[[10,0],[8,0],[7,[2,"FORWARD"]]]]],[],[[0,null,false,null,321435256544048,[[2,179,null,0,false,true,false,320751115890024,false,[[9,68]]],[2,179,null,0,false,true,false,677125952098832,false,[[9,39]]]],[[-1,29,null,260681455826901,false,[[11,"isMovingForward"],[7,[0,0]]]],[32,78,null,806939393285909,false,[[10,2],[3,0]]],[0,26,null,261267826836405,false,[[1,[2,"Update_aPaddleState"]],[13,[7,[21,32,true,null,0]],[7,[2,"IDLE"]]]]]]]]],[0,null,false,null,426878057050485,[[32,67,null,0,false,false,false,248124933979753,false,[[10,0],[8,0],[7,[2,"BACKWARD"]]]]],[],[[0,null,false,null,777596468413522,[[2,179,null,0,false,true,false,587768414305288,false,[[9,65]]],[2,179,null,0,false,true,false,382022439606887,false,[[9,37]]]],[[-1,29,null,112591608030605,false,[[11,"isMovingBackward"],[7,[0,0]]]],[32,78,null,478226022325534,false,[[10,2],[3,0]]],[0,26,null,673192152104633,false,[[1,[2,"Update_aPaddleState"]],[13,[7,[21,32,true,null,0]],[7,[2,"IDLE"]]]]]]]]]]]]],[0,null,false,null,391420988223311,[[-1,27,null,0,false,false,false,464920461259346,false,[[11,"inputActive"],[8,0],[7,[0,1]]]]],[],[[0,null,false,null,356532572604661,[[-1,27,null,0,false,false,false,538611140635919,false,[[11,"isMovingForward"],[8,0],[7,[0,1]]]]],[[0,26,null,981298284533784,false,[[1,[2,"Push_aCar"]],[13,[7,[2,"FORWARD"]]]]],[-1,60,null,716830624764602,false,[[11,"needleSimulateAngle"],[7,[6,[23,"boostDial_accMag"],[19,87]]]]]]],[0,null,false,null,704399712329733,[[-1,27,null,0,false,false,false,631422458018152,false,[[11,"isMovingBackward"],[8,0],[7,[0,1]]]]],[[0,26,null,170915386050529,false,[[1,[2,"Push_aCar"]],[13,[7,[2,"BACKWARD"]]]]],[-1,60,null,929522911729108,false,[[11,"needleSimulateAngle"],[7,[6,[3,[23,"boostDial_accMag"]],[19,87]]]]]]]]],[0,null,false,null,625776764613278,[[-1,27,null,0,false,false,false,101724026100706,false,[[11,"inputActive"],[8,0],[7,[0,0]]]]],[],[[0,null,false,null,963567840801925,[[-1,27,null,0,false,false,false,820850397018543,false,[[11,"needleSimulateAngle"],[8,4],[7,[0,0]]]]],[[-1,124,null,539547503376600,false,[[11,"needleSimulateAngle"],[7,[6,[23,"boostDial_daccMag"],[19,87]]]]]],[[0,null,false,null,419569444157638,[[-1,27,null,0,false,false,false,920716590731154,false,[[11,"needleSimulateAngle"],[8,3],[7,[0,0]]]]],[[-1,29,null,273113416108601,false,[[11,"needleSimulateAngle"],[7,[0,0]]]]]]]],[0,null,false,null,821761981428553,[[-1,27,null,0,false,false,false,837767291554665,false,[[11,"needleSimulateAngle"],[8,2],[7,[0,0]]]]],[[-1,60,null,460710958002737,false,[[11,"needleSimulateAngle"],[7,[6,[23,"boostDial_daccMag"],[19,87]]]]]],[[0,null,false,null,502572492202796,[[-1,27,null,0,false,false,false,287604508953224,false,[[11,"needleSimulateAngle"],[8,5],[7,[0,0]]]]],[[-1,29,null,854505154799800,false,[[11,"needleSimulateAngle"],[7,[0,0]]]]]]]],[0,null,false,null,230495063643488,[[71,79,null,0,false,false,false,233055183633632,false,[[10,5]]]],[],[[0,null,false,null,667273771882175,[[71,79,null,0,false,false,false,135062269155453,false,[[10,1]]]],[[71,78,null,547890694015737,false,[[10,1],[3,0]]]]]]]]],[0,null,false,null,873791627041557,[[27,67,null,0,false,false,false,548959688399941,false,[[10,0],[8,0],[7,[2,"BOOST"]]]]],[[-1,29,null,867521828630321,false,[[11,"needleSimulateAngle"],[7,[19,46,[[23,"needleSimulateAngle"],[0,-90],[0,90]]]]]]],[[0,null,false,null,993227116047663,[[-1,27,null,0,false,false,false,146696708522948,false,[[11,"needleSimulateAngle"],[8,4],[7,[0,0]]]]],[[33,83,null,776890121135755,false,[[0,[4,[4,[21,33,false,null,0],[6,[21,33,false,null,2],[19,102,[[23,"needleSimulateAngle"]]]]],[21,33,false,null,5]]]]]]],[0,null,false,null,875730948581530,[[-1,27,null,0,false,false,false,722111216905073,false,[[11,"needleSimulateAngle"],[8,2],[7,[0,0]]]]],[[33,83,null,231833275315639,false,[[0,[4,[5,[21,33,false,null,0],[6,[21,33,false,null,1],[19,102,[[23,"needleSimulateAngle"]]]]],[21,33,false,null,5]]]]]]],[0,null,false,null,704158352827961,[[-1,27,null,0,false,false,false,245384091461825,false,[[11,"needleSimulateAngle"],[8,0],[7,[0,0]]]]],[[33,83,null,397017496097319,false,[[0,[4,[21,33,false,null,0],[21,33,false,null,5]]]]]]],[0,null,false,null,975166410822475,[],[[33,133,null,633558826350706,false,[[10,6],[7,[3,[19,87]]]]]],[[0,null,false,null,482309463009362,[[33,67,null,0,false,false,false,757228438617598,false,[[10,6],[8,3],[7,[0,0]]]]],[[33,133,null,731908237993142,false,[[10,6],[7,[5,[1,0.05],[6,[19,102,[[19,180,[[23,"needleSimulateAngle"]]]]],[1,0.035]]]]]]],[[0,null,false,null,585077987963569,[[-1,33,null,0,false,false,false,211879923283646,false,[[7,[19,180,[[19,102,[[23,"needleSimulateAngle"]]]]]],[8,0],[7,[0,1]]]]],[[33,63,null,189238502707948,false,[[10,5],[7,[4,[3,[21,33,false,null,3]],[19,57,[[6,[21,33,false,null,3],[0,2]]]]]]]]]],[0,null,false,null,854128958732671,[[-1,37,null,0,false,false,false,807237043054499,false]],[[33,63,null,689735045960570,false,[[10,5],[7,[4,[3,[21,33,false,null,4]],[19,57,[[6,[21,33,false,null,4],[0,2]]]]]]]]]]]]]]]]]]]],[0,[true,"Cars - Tick"],false,null,929063332777303,[[-1,23,null,0,false,false,false,929063332777303,false,[[1,[2,"Cars - Tick"]]]]],[],[[0,null,false,null,465430883390607,[[71,79,null,0,false,false,false,313202833347373,false,[[10,4]]]],[[71,78,null,748214200322330,false,[[10,3],[3,1]]],[71,63,null,338775868545607,false,[[10,0],[7,[22,71,"Chipmunk",181,false,null]]]],[71,177,"Chipmunk",574503562357729,false,[[3,1],[0,[4,[20,71,84,false,null],[0,90]]],[0,[23,"COM_BALANCE_FORCE"]],[3,0],[0,[23,"comForce_ShiftX"]],[0,[0,0]]]],[-1,29,null,249943772128512,false,[[11,"comForce_ShiftX"],[7,[6,[6,[3,[19,102,[[20,71,84,false,null]]]],[20,71,73,false,null]],[1,0.5]]]]],[11,45,null,606738115498461,false,[[7,[19,36,[[22,71,"Chipmunk",181,false,null]]]]]]],[[0,null,false,null,398013264053586,[[74,182,null,0,false,false,true,363483860595865,false,[[3,0],[0,[5,[4,[20,71,93,false,null],[0,50]],[6,[23,"TRACK_UNIT_WIDTH"],[1,0.5]]]],[0,[19,110]]]]],[],[[0,null,false,null,210097211104428,[[76,67,null,0,false,false,false,570451436165717,false,[[10,0],[8,0],[7,[0,0]]]]],[],[[0,null,false,null,827426279976374,[[76,183,null,0,false,true,false,907077197476968,false,[[4,74]]]],[[71,78,null,866345350530570,false,[[10,3],[3,0]]]]]]]]],[0,null,false,null,105177799862619,[[74,182,null,0,false,false,true,428117007427363,false,[[3,0],[0,[5,[5,[20,71,93,false,null],[0,50]],[6,[23,"TRACK_UNIT_WIDTH"],[1,0.5]]]],[0,[19,110]]]]],[],[[0,null,false,null,344892795220273,[[76,67,null,0,false,false,false,182174606917154,false,[[10,0],[8,0],[7,[0,1]]]]],[],[[0,null,false,null,231617014479949,[[76,183,null,0,false,true,false,665971350314509,false,[[4,74]]]],[[71,78,null,261347591639148,false,[[10,3],[3,0]]]]]]]]],[0,null,false,null,660924775075560,[[71,184,null,0,false,false,false,532901700177305,false,[[0,[0,275]],[0,[0,325]]]]],[],[[0,null,false,null,862202616712290,[[-1,33,null,0,false,false,false,724087109319491,false,[[7,[22,71,"Chipmunk",185,false,null]],[8,2],[7,[0,0]]]]],[[71,177,"Chipmunk",153868324882108,false,[[3,1],[0,[4,[20,71,84,false,null],[0,90]]],[0,[6,[3,[22,71,"Chipmunk",185,false,null]],[23,"slopeBalanceMag"]]],[3,0],[0,[3,[4,[6,[20,71,73,false,null],[1,0.5]],[0,20]]]],[0,[6,[3,[20,71,74,false,null]],[1,0.5]]]]]]],[0,null,false,null,347190724440427,[[-1,33,null,0,false,false,false,401022669102915,false,[[7,[22,71,"Chipmunk",185,false,null]],[8,4],[7,[0,0]]]]],[[71,177,"Chipmunk",926586069680333,false,[[3,1],[0,[4,[20,71,84,false,null],[0,90]]],[0,[6,[3,[22,71,"Chipmunk",185,false,null]],[23,"slopeBalanceMag"]]],[3,0],[0,[3,[5,[6,[20,71,73,false,null],[1,0.5]],[0,20]]]],[0,[6,[3,[20,71,74,false,null]],[1,0.5]]]]]]]]],[0,null,false,null,794631652278874,[[71,79,null,0,false,true,false,161624499321574,false,[[10,1]]]],[[71,159,"Chipmunk",458203162977570,false,[[3,0],[0,[19,134,[[22,71,"Chipmunk",186,false,null],[0,0],[23,"motionDampingDT"]]]],[0,[19,134,[[22,71,"Chipmunk",185,false,null],[0,0],[23,"motionDampingDT"]]]]]]]],[0,null,false,null,488369896996369,[],[[71,63,null,112482256104468,false,[[10,10],[7,[6,[22,71,"Chipmunk",181,false,null],[21,71,false,null,9]]]]]]],[0,null,false,null,203051479880660,[[71,79,null,0,false,false,false,752613255915985,false,[[10,5]]]],[[71,63,null,780316719122311,false,[[10,7],[7,[5,[20,71,93,false,null],[21,71,false,null,8]]]]],[71,63,null,162763919384883,false,[[10,8],[7,[20,71,93,false,null]]]]],[[0,null,false,null,269582552541883,[[73,187,null,0,false,false,false,699710908866970,false]],[[-1,109,null,297431782948836,false,[[0,[19,134,[[19,94],[20,73,93,false,null],[6,[23,"cameraLerp"],[19,87]]]]],[0,[19,134,[[19,95],[19,46,[[4,[20,73,86,false,null],[23,"cameraOY"]],[0,0],[5,[23,"TRACK_POS_Y"],[23,"CANVAS_MID_Y"]]]],[6,[23,"cameraLerp"],[19,87]]]]]]]]],[0,null,false,null,633383162644412,[[-1,37,null,0,false,false,false,561972511332310,false]],[[-1,109,null,840201548954386,false,[[0,[19,134,[[19,94],[20,71,93,false,null],[6,[23,"cameraLerp"],[19,87]]]]],[0,[19,134,[[19,95],[19,46,[[4,[20,71,86,false,null],[23,"cameraOY"]],[0,0],[5,[23,"TRACK_POS_Y"],[23,"CANVAS_MID_Y"]]]],[6,[23,"cameraLerp"],[19,87]]]]]]]]],[0,null,false,null,269552807050496,[[71,188,null,0,false,false,false,785195985181580,false,[[8,5],[0,[23,"trackTraceX"]]]]],[[0,26,null,939001670993944,false,[[1,[2,"On_TrackMid_Covered"]],[13]]]]],[0,null,false,null,334061088742891,[[-1,27,null,0,false,false,false,730130903723347,false,[[11,"GAME_START"],[8,0],[7,[0,1]]]]],[[71,63,null,108986601793293,false,[[10,15],[7,[19,46,[[5,[20,73,93,false,null],[21,73,false,null,2]],[0,0],[19,47]]]]]],[0,26,null,118448076577827,false,[[1,[2,"Update_Score"]],[13,[7,[19,36,[[6,[21,71,false,null,15],[23,"SCORE_PER_PIXEL"]]]]]]]]],[[0,null,false,null,557525169346204,[[-1,27,null,0,false,false,false,531162628499893,false,[[11,"myPreRecordBeaten"],[8,0],[7,[0,0]]]],[-1,27,null,0,false,false,false,648406922663969,false,[[11,"myBestDistance"],[8,1],[7,[0,0]]]]],[],[[0,null,false,null,859882783699783,[[71,67,null,0,false,false,false,648584785050751,false,[[10,15],[8,4],[7,[23,"myBestDistance"]]]]],[[0,26,null,645965097536307,false,[[1,[2,"On_BestLine_Crossed"]],[13]]]]]]],[0,null,false,null,977317192296217,[[-1,27,null,0,false,false,false,618186232231114,false,[[11,"platform"],[8,0],[7,[23,"PLATFORM_FACEBOOK"]]]]],[],[[0,null,false,null,887386168952890,[[-1,27,null,0,false,false,false,301198929539778,false,[[11,"LBScoreToBeat"],[8,1],[7,[0,-1]]]]],[[0,26,null,326205679591558,false,[[1,[2,"on_LBScoreToBeat_Update"]],[13,[7,[21,71,false,null,15]]]]]]],[0,null,false,null,144140836324574,[[-1,27,null,0,false,false,false,743734170681058,false,[[11,"scoreToBeat"],[8,1],[7,[0,-1]]]]],[[0,26,null,521362105326000,false,[[1,[2,"on_ScoreToBeat_Update"]],[13,[7,[21,71,false,null,15]]]]]]]]]]],[0,null,false,null,838886534740861,[[71,79,null,0,false,false,false,555559918923313,false,[[10,13]]]],[],[[0,null,false,null,484117540881702,[[83,189,null,0,false,false,false,741045805417281,false]],[],[[0,null,false,null,222455941909802,[[83,79,null,0,false,true,false,301250861434886,false,[[10,1]]],[83,79,null,0,false,true,false,647019663803871,false,[[10,0]]]],[[83,78,null,466719307866983,false,[[10,1],[3,1]]]],[[0,null,false,null,996447127718027,[],[]]]]]]]],[0,null,false,null,201240100714201,[],[[78,156,null,158694466781931,false,[[0,[5,[20,78,93,false,null],[6,[21,71,false,null,7],[21,78,false,null,0]]]]]]],[[0,null,false,null,551709979420712,[[78,188,null,0,false,false,false,438020233597770,false,[[8,2],[0,[21,78,false,null,2]]]]],[[78,156,null,171329919778125,false,[[0,[4,[20,78,93,false,null],[6,[21,78,false,null,1],[21,78,false,null,4]]]]]]]],[0,null,false,null,202592215446279,[[78,188,null,0,false,false,false,942501749128467,false,[[8,4],[0,[21,78,false,null,3]]]]],[[78,156,null,306845165646600,false,[[0,[5,[20,78,93,false,null],[6,[21,78,false,null,1],[21,78,false,null,4]]]]]]]]]],[0,null,false,null,834671251984877,[[27,67,null,0,false,false,false,171391492364904,false,[[10,0],[8,0],[7,[2,"RPM"]]]]],[[33,83,null,714068190127062,false,[[0,[4,[4,[21,33,false,null,0],[6,[21,33,false,null,2],[21,71,false,null,10]]],[21,33,false,null,5]]]]]],[[0,null,false,null,238574807986766,[],[[33,133,null,138387931118008,false,[[10,6],[7,[3,[19,87]]]]]],[[0,null,false,null,642267434773242,[[33,67,null,0,false,false,false,380949652782562,false,[[10,6],[8,3],[7,[0,0]]]]],[[33,133,null,463614310053057,false,[[10,6],[7,[5,[1,0.05],[6,[19,102,[[19,180,[[23,"needleSimulateAngle"]]]]],[1,0.035]]]]]]],[[0,null,false,null,613477547213292,[[-1,33,null,0,false,false,false,438709069440063,false,[[7,[19,180,[[21,71,false,null,10]]]],[8,3],[7,[1,0.05]]]]],[[33,63,null,548764371037678,false,[[10,5],[7,[4,[3,[21,33,false,null,4]],[19,57,[[6,[21,33,false,null,4],[0,2]]]]]]]]]],[0,null,false,null,551865200270897,[[-1,37,null,0,false,false,false,260472700878672,false]],[[33,63,null,600715204146265,false,[[10,5],[7,[0,0]]]]]]]]]]]]]]]]]],[0,[true,"Cars - Triggers"],false,null,688037297886230,[[-1,23,null,0,false,false,false,688037297886230,false,[[1,[2,"Cars - Triggers"]]]]],[],[[0,null,false,null,397615896680494,[[71,190,null,0,false,false,true,363918900764275,false,[[4,83]]]],[],[[0,null,false,null,733205834725333,[[71,79,null,0,false,false,false,949960363656628,false,[[10,4]]]],[],[[0,null,false,null,452056208954513,[[83,79,null,0,false,true,false,364446998907954,false,[[10,0]]]],[],[[0,null,false,null,460430860223676,[[-1,106,null,0,true,false,false,430796649620677,false,[[4,83]]]],[[0,26,null,829166240493568,false,[[1,[2,"Pick_aCoin"]],[13,[7,[20,83,70,false,null]]]]]]]]]]]]],[0,null,false,null,534807431034584,[[71,190,null,0,false,false,true,264935626415185,false,[[4,81]]]],[],[[0,null,false,null,307395532244963,[[71,79,null,0,false,false,false,507886013590353,false,[[10,4]]]],[],[[0,null,false,null,334255380983713,[[81,79,null,0,false,true,false,308695356800941,false,[[10,0]]]],[[0,26,null,360802531608449,false,[[1,[2,"Pick_aPowerUp"]],[13,[7,[20,81,70,false,null]]]]]]]]]]]]]]],[0,[true,"Egg Params"],false,null,506693994301675,[[-1,23,null,0,false,false,false,506693994301675,false,[[1,[2,"Egg Params"]]]]],[]],[1,"EGG_SCALE",0,0.65,false,false,490844703400992,false],[1,"eggDropX",0,0,false,false,595978107118735,false],[1,"eggDropY",0,0,false,false,210370061199847,false],[0,[true,"Eggs"],false,null,673193186483794,[[-1,23,null,0,false,false,false,673193186483794,false,[[1,[2,"Eggs"]]]]],[],[[0,[true,"Egg - Functions"],false,null,332100307571283,[[-1,23,null,0,false,false,false,332100307571283,false,[[1,[2,"Egg - Functions"]]]]],[],[[0,null,false,null,944564312628516,[[0,30,null,2,false,false,false,995933930091130,false,[[1,[2,"Spawn_aEgg"]]]]],[[-1,61,null,423287672300519,false,[[4,5],[5,[2,"track"]],[0,[20,71,93,false,null]],[0,[5,[20,71,86,false,null],[0,150]]]]],[5,63,null,994359062609596,false,[[10,2],[7,[20,5,93,false,null]]]],[5,72,null,182588085946860,false,[[0,[23,"EGG_SCALE"]]]]]],[0,null,false,null,577337269248211,[[0,30,null,2,false,false,false,586620191177338,false,[[1,[2,"Spawn_aEggOutline"]]]]],[[-1,61,null,927601449439320,false,[[4,14],[5,[2,"track"]],[0,[20,0,38,false,null,[[0,0]]]],[0,[20,0,38,false,null,[[0,1]]]]]],[14,83,null,528963396952834,false,[[0,[20,0,38,false,null,[[0,2]]]]]],[14,72,null,516894423531862,false,[[0,[23,"EGG_SCALE"]]]]]]]],[0,[true,"Egg - Triggers"],false,null,553407137334835,[[-1,23,null,0,false,false,false,553407137334835,false,[[1,[2,"Egg - Triggers"]]]]],[],[[0,null,false,null,465287170659329,[[73,191,"Chipmunk",1,false,false,false,600338962757599,false]],[],[[0,null,false,null,144295714845947,[[74,77,null,0,false,false,true,649429738728984,false,[[0,[22,73,"Chipmunk",192,false,null]]]]],[[9,69,null,313936746328147,false,[[3,0],[7,[2,"Collided with track"]]]]],[[0,null,false,null,301339133878580,[[-1,27,null,0,false,false,false,164268446460686,false,[[11,"GAME_START"],[8,0],[7,[0,1]]]]],[[0,26,null,513574800619485,false,[[1,[2,"Play_GpSound"]],[13,[7,[2,"egg_broken"]]]]],[-1,29,null,326263015515853,false,[[11,"myLastDistance"],[7,[19,36,[[19,46,[[5,[20,73,93,false,null],[21,73,false,null,2]],[0,0],[19,47]]]]]]]],[-1,29,null,691450033194556,false,[[11,"eggDropX"],[7,[20,73,93,false,null]]]],[-1,29,null,185551916967798,false,[[11,"eggDropY"],[7,[20,73,86,false,null]]]],[0,26,null,596925964198192,false,[[1,[2,"End_Game"]],[13]]],[0,26,null,557494768845196,false,[[1,[2,"Spawn_aEggOutline"]],[13,[7,[20,73,93,false,null]],[7,[20,73,86,false,null]],[7,[20,73,84,false,null]]]]],[0,26,null,376044415668877,false,[[1,[2,"Spawn_eggBroke_Particles"]],[13,[7,[20,73,93,false,null]],[7,[20,73,86,false,null]]]]],[-1,61,null,869457094167020,false,[[4,24],[5,[2,"track"]],[0,[4,[20,73,93,false,null],[6,[6,[0,50],[19,102,[[20,73,84,false,null]]]],[23,"EGG_SCALE"]]]],[0,[5,[20,73,86,false,null],[6,[6,[0,50],[19,101,[[20,73,84,false,null]]]],[23,"EGG_SCALE"]]]]]],[24,83,null,140084213014356,false,[[0,[20,73,84,false,null]]]],[24,72,null,575906607618611,false,[[0,[23,"EGG_SCALE"]]]],[24,193,"Chipmunk",354621454412379,false,[[3,0]]],[24,194,"Chipmunk",595302608004247,false,[[3,1],[0,[20,73,84,false,null]],[0,[0,100]],[3,0],[0,[0,0]],[0,[0,0]]]],[-1,61,null,909074715826877,false,[[4,24],[5,[2,"track"]],[0,[5,[20,73,93,false,null],[6,[6,[0,50],[19,102,[[20,73,84,false,null]]]],[23,"EGG_SCALE"]]]],[0,[4,[20,73,86,false,null],[6,[6,[0,50],[19,101,[[20,73,84,false,null]]]],[23,"EGG_SCALE"]]]]]],[24,62,null,629163394124577,false,[[0,[0,1]]]],[24,83,null,425247289140296,false,[[0,[20,73,84,false,null]]]],[24,72,null,142860714182664,false,[[0,[23,"EGG_SCALE"]]]],[24,193,"Chipmunk",616840100759864,false,[[3,0]]],[24,194,"Chipmunk",466333487510254,false,[[3,1],[0,[4,[20,73,84,false,null],[0,180]]],[0,[0,100]],[3,0],[0,[0,0]],[0,[0,0]]]],[73,25,null,948733496931452,false],[-1,61,null,465871858753430,false,[[4,35],[5,[2,"track"]],[0,[20,73,93,false,null]],[0,[5,[20,73,86,false,null],[19,195,[[19,180,[[6,[4,[6,[20,73,74,false,null],[1,0.5]],[0,20]],[19,102,[[4,[20,73,84,false,null],[0,90]]]]]]],[19,180,[[6,[4,[6,[20,73,73,false,null],[1,0.5]],[0,20]],[19,101,[[4,[20,73,84,false,null],[0,90]]]]]]]]]]]]],[35,45,null,502603328215340,false,[[7,[10,[23,"myScore"],[2,"m"]]]]]]]]],[0,null,false,null,969602783382728,[[73,79,null,0,false,false,false,648779049555223,false,[[10,1]]]],[],[[0,null,false,null,913414347891714,[[-1,33,null,0,false,false,false,292448902648689,false,[[7,[22,73,"Chipmunk",196,false,null]],[8,5],[7,[0,600]]]]],[[73,133,null,785605750253176,false,[[10,0],[7,[1,0.15]]]],[73,78,null,379122871876509,false,[[10,1],[3,0]]],[0,26,null,452415592665988,false,[[1,[2,"Spawn_eggHit_Particles"]],[13,[7,[22,73,"Chipmunk",197,false,null,[[5,[22,73,"Chipmunk",198,false,null],[0,1]]]]],[7,[22,73,"Chipmunk",199,false,null,[[5,[22,73,"Chipmunk",198,false,null],[0,1]]]]],[7,[19,97,[[20,73,93,false,null],[20,73,86,false,null],[22,73,"Chipmunk",197,false,null,[[5,[22,73,"Chipmunk",198,false,null],[0,1]]]],[22,73,"Chipmunk",199,false,null,[[5,[22,73,"Chipmunk",198,false,null],[0,1]]]]]]]]]],[0,26,null,655973871885036,false,[[1,[2,"Play_GpSound"]],[13,[7,[2,"egg_hit"]],[7,[19,46,[[19,36,[[7,[22,73,"Chipmunk",196,false,null],[0,600]]]],[0,0],[0,3]]]]]]]]]]]]]]],[0,[true,"Egg - Tick"],false,null,867539372878842,[[-1,23,null,0,false,false,false,867539372878842,false,[[1,[2,"Egg - Tick"]]]]],[],[[0,null,false,null,681447489883377,[[-1,200,null,0,false,false,false,395658539424806,false]],[],[[0,null,false,null,250720621352886,[[-1,27,null,0,false,false,false,796492775783300,false,[[11,"gameSequence"],[8,0],[7,[23,"SEQ_TUTORIAL"]]]]],[]],[0,null,false,null,390383309694278,[[73,79,null,0,false,true,false,507544146714762,false,[[10,1]]]],[[73,201,null,320763549758236,false,[[10,0],[7,[19,87]]]]],[[0,null,false,null,578101845338359,[[73,67,null,0,false,false,false,625597717492081,false,[[10,0],[8,3],[7,[0,0]]]]],[[73,78,null,731560148618001,false,[[10,1],[3,1]]]]]]]]]]]]],[0,[true,"CM VFX"],false,null,613784146524289,[[-1,23,null,0,false,false,false,613784146524289,false,[[1,[2,"CM VFX"]]]]],[],[[0,null,false,null,244372693851331,[[0,30,null,2,false,false,false,118447996343269,false,[[1,[2,"Spawn_eggHit_Particles"]]]]],[[-1,61,null,509580025704358,false,[[4,13],[5,[2,"track"]],[0,[20,0,38,false,null,[[0,0]]]],[0,[20,0,38,false,null,[[0,1]]]]]],[13,202,null,808144420352177,false,[[0,[20,0,38,false,null,[[0,2]]]]]]]],[0,null,false,null,521219448179391,[[0,30,null,2,false,false,false,102188759602544,false,[[1,[2,"Spawn_eggBroke_Particles"]]]]],[[-1,61,null,536314573178156,false,[[4,16],[5,[2,"track"]],[0,[20,0,38,false,null,[[0,0]]]],[0,[20,0,38,false,null,[[0,1]]]]]],[-1,61,null,511319481881834,false,[[4,15],[5,[2,"track"]],[0,[20,0,38,false,null,[[0,0]]]],[0,[20,0,38,false,null,[[0,1]]]]]]]]]],[0,[true,"CM - Debug"],false,null,532869089379210,[[-1,23,null,0,false,false,false,532869089379210,false,[[1,[2,"CM - Debug"]]]]],[],[[0,null,false,null,731705297430147,[[-1,27,null,0,false,false,false,632442906921375,false,[[11,"DEBUG_MODE"],[8,0],[7,[0,1]]]]],[],[[0,null,false,null,908936022136507,[[2,179,null,0,false,false,false,840539777495620,false,[[9,87]]]],[[71,177,"Chipmunk",996884518446052,false,[[3,1],[0,[5,[20,71,84,false,null],[0,90]]],[0,[0,5000]],[3,0],[0,[0,0]],[0,[0,0]]]]]],[0,null,false,null,970184471956160,[[2,179,null,0,false,false,false,995984760369105,false,[[9,68]]]],[]],[0,null,false,null,771306427884288,[[2,179,null,0,false,false,false,479811862426580,false,[[9,65]]]],[]],[0,null,false,null,300903218618116,[[1,203,null,1,false,false,false,347790999569933,false]],[]]]]]]]],["LoaderSheet",[[1,"isLoadingDone",0,0,false,false,245730859107426,false],[0,null,false,null,741230669645374,[[-1,24,null,1,false,false,false,881455104235510,false]],[[-1,61,null,990654254213783,false,[[4,62],[5,[2,"loading"]],[0,[4,[20,62,204,false,null],[0,1]]],[0,[4,[20,62,205,false,null],[0,2]]]]],[62,148,null,723382831494446,false,[[0,[19,149,[[0,33],[0,33],[0,33]]]]]],[62,206,null,871314674998289,false]]],[0,null,false,null,763754342733272,[[-1,200,null,0,false,false,false,879181695806678,false]],[[62,45,null,719311374598865,false,[[7,[10,[10,[2,"Loading ...\n"],[19,36,[[6,[19,207],[0,100]]]]],[2,"%"]]]]],[64,162,null,230651187162291,false,[[0,[6,[19,207],[0,349]]]]]],[[0,null,false,null,261788483134638,[[-1,33,null,0,false,false,false,187442190453135,false,[[7,[19,207]],[8,5],[7,[0,1]]]]],[],[[0,null,false,null,344996203231690,[[-1,27,null,0,false,false,false,165487539971418,false,[[11,"isLoadingDone"],[8,0],[7,[0,0]]]]],[[-1,29,null,310832857710816,false,[[11,"isLoadingDone"],[7,[0,1]]]],[-1,208,null,197929956291263,false,[[6,"gamelayout"]]]]]]]]]]],["PlatformManager",[[0,[true,"Platform - On Start of Layout"],false,null,156360003225077,[[-1,23,null,0,false,false,false,156360003225077,false,[[1,[2,"Platform - On Start of Layout"]]]]],[],[[0,null,false,null,474380893104234,[[-1,24,null,1,false,false,false,213627584855017,false]],[[0,26,null,767890830346283,false,[[1,[2,"Destroy_Challenge"]],[13]]]],[[0,null,false,null,567626759286755,[[-1,27,null,0,false,false,false,462566639263337,false,[[11,"platform"],[8,0],[7,[23,"PLATFORM_FACEBOOK"]]]]],[],[[0,null,false,null,452892570018005,[[-1,27,null,0,false,false,false,320392119218892,false,[[11,"FB_OFFLINE"],[8,0],[7,[0,1]]]]],[[0,26,null,411066805755361,false,[[1,[2,"onC2_LoggedIn"]],[13,[7,[2,"8"]],[7,[2,"Waqas Siddique"]],[7,[0,125]]]]],[0,26,null,882235256140336,false,[[1,[2,"onC2_EntryPointData"]],[13,[7,[0,1]],[7,[2,"Jeff"]],[7,[2,""]],[7,[2,"1000"]]]]],[0,26,null,560593206691877,false,[[1,[2,"onC2_LBUpdate"]],[13,[7,[0,8]],[7,[2,"1*rana*https://www.gstatic.com/webp/gallery3/1.sm.png*10000|2*momo*https://www.gstatic.com/webp/gallery3/1.sm.png*8000|3*hah*https://www.gstatic.com/webp/gallery3/1.sm.png*7000|4*abc*https://www.gstatic.com/webp/gallery3/1.sm.png*6000|5*xyz*https://www.gstatic.com/webp/gallery3/1.sm.png*3000|6*xyzzzz*https://www.gstatic.com/webp/gallery3/1.sm.png*2000|7*blah blas*https://www.gstatic.com/webp/gallery3/1.sm.png*1000|8*waqas*https://www.gstatic.com/webp/gallery3/1.sm.png*0"]]]]]]],[0,null,false,null,997404085125786,[[-1,37,null,0,false,false,false,897989818176705,false]],[[9,111,null,241403032354818,false,[[1,[2,"onFB_init();"]]]]]]]]]]]],[0,[true,"Platforms"],false,null,808927714356792,[[-1,23,null,0,false,false,false,808927714356792,false,[[1,[2,"Platforms"]]]]],[]],[1,"PLATFORM_WEB",0,0,false,false,584982582954678,false],[1,"PLATFORM_GD",0,1,false,false,536760030772674,false],[1,"PLATFORM_FACEBOOK",0,2,false,false,660654964659168,false],[0,[true,"Platform Params"],false,null,742209607388126,[[-1,23,null,0,false,false,false,742209607388126,false,[[1,[2,"Platform Params"]]]]],[]],[1,"platform",0,1,false,false,972762467653787,false],[0,[true,"AD Params"],false,null,509943102587010,[[-1,23,null,0,false,false,false,509943102587010,false,[[1,[2,"AD Params"]]]]],[]],[1,"adBlockerEnabled",0,0,false,false,472429460863011,false],[1,"adRequested",0,0,false,false,107761010457578,false],[1,"adDisplayPending",0,0,false,false,447747872214209,false],[0,[true,"GD Params"],false,null,741039806731856,[[-1,23,null,0,false,false,false,741039806731856,false,[[1,[2,"GD Params"]]]]],[]],[1,"GD_SDK_READY",0,0,false,false,839966493257383,false],[0,[true,"GD"],false,null,924872371197346,[[-1,23,null,0,false,false,false,924872371197346,false,[[1,[2,"GD"]]]]],[],[[0,null,false,null,853256768227505,[[51,209,null,1,false,false,false,494017680376801,false]],[[9,69,null,832800520795962,false,[[3,0],[7,[2,"SDK Ready"]]]],[-1,29,null,721707291908459,false,[[11,"GD_SDK_READY"],[7,[0,1]]]]],[[0,null,false,null,323406093660374,[[-1,27,null,0,false,false,false,878476708946759,false,[[11,"adRequested"],[8,0],[7,[0,1]]]]],[[51,210,null,470374674756218,false,[[1,[2,"ec_dca"]]]]]]]],[0,null,false,null,937941578238046,[[51,211,null,1,false,false,false,624785026483748,false]],[[9,69,null,491891133250554,false,[[3,0],[7,[2,"SDK Error"]]]],[-1,29,null,529833345845637,false,[[11,"GD_SDK_READY"],[7,[0,1]]]],[-1,29,null,665386616140935,false,[[11,"adBlockerEnabled"],[7,[0,1]]]]]],[0,null,false,null,129572420520628,[[51,212,null,1,false,false,false,768272715623950,false]],[],[[0,null,false,null,588855827380751,[[-1,27,null,0,false,false,false,245906143084048,false,[[11,"adRequested"],[8,0],[7,[0,1]]]]],[[0,26,null,678993973599283,false,[[1,[2,"On_Ad_Served"]],[13]]]]]]]]],[0,[true,"AD Functions"],false,null,526452600911650,[[-1,23,null,0,false,false,false,526452600911650,false,[[1,[2,"AD Functions"]]]]],[],[[0,null,false,null,373351312880615,[[0,30,null,2,false,false,false,712671251811496,false,[[1,[2,"On_AdSDK_Ready"]]]]],[],[[0,null,false,null,752819969743691,[[-1,27,null,0,false,false,false,957786445376749,false,[[11,"adRequested"],[8,0],[7,[0,1]]]]],[],[[0,null,false,null,716744560589269,[[-1,27,null,0,false,false,false,196723185657572,false,[[11,"platform"],[8,0],[7,[23,"PLATFORM_GD"]]]]],[[51,210,null,171593038179593,false,[[1,[2,"ec_dca"]]]]]]]]]],[0,null,false,null,568949664675177,[[0,30,null,2,false,false,false,855682422449276,false,[[1,[2,"Show_Ads"]]]]],[[9,69,null,314537798530956,false,[[3,0],[7,[2," Called"]]]],[-1,29,null,648084689246465,false,[[11,"saveGS"],[7,[23,"gameSequence"]]]],[-1,29,null,812334567875149,false,[[11,"gameSequence"],[7,[23,"SEQ_BETWEEN"]]]],[-1,141,null,847787017609030,false,[[5,[2,"overlay"]],[3,1]]],[-1,213,null,638210026416189,false,[[0,[0,0]]]],[50,214,null,642396433506373,false,[[3,0]]]],[[0,null,false,null,736664496942077,[[-1,27,null,0,false,false,false,513773731605984,false,[[11,"adRequested"],[8,1],[7,[0,1]]]]],[[-1,29,null,887638770222832,false,[[11,"adRequested"],[7,[0,1]]]]],[[0,null,false,null,824287184456294,[[-1,27,null,0,false,false,false,233671345594998,false,[[11,"platform"],[8,0],[7,[23,"PLATFORM_GD"]]]]],[],[[0,null,false,null,127367976001939,[[-1,27,null,0,false,false,false,741961967494852,false,[[11,"GD_SDK_READY"],[8,0],[7,[0,1]]]]],[[51,210,null,847683472111353,false,[[1,[2,"ec_dca"]]]]]]]]]]]],[0,null,false,null,661286617130012,[[0,30,null,2,false,false,false,417966302353843,false,[[1,[2,"On_Ad_Served"]]]]],[[9,69,null,550978402033596,false,[[3,0],[7,[2," Served"]]]],[-1,29,null,116764285995859,false,[[11,"adRequested"],[7,[0,0]]]],[-1,141,null,920751441852935,false,[[5,[2,"overlay"]],[3,0]]],[-1,213,null,233966477613025,false,[[0,[0,1]]]],[50,214,null,212314134888131,false,[[3,1]]]],[[0,null,false,null,157026202057799,[[-1,27,null,0,false,false,false,355056435373219,false,[[11,"saveGS"],[8,0],[7,[23,"SEQ_TUTORIAL"]]]]],[[0,26,null,353362129203148,false,[[1,[2,"Destroy_Tutorial"]],[13]]],[0,26,null,466705273357739,false,[[1,[2,"Play_MM_Animation"]],[13,[7,[2,"backward"]]]]]]],[0,null,false,null,494133146944099,[[-1,27,null,0,false,false,false,245267502284250,false,[[11,"saveGS"],[8,0],[7,[23,"SEQ_MENU"]]]]],[[0,26,null,628430437643954,false,[[1,[2,"Play_MM_Animation"]],[13,[7,[2,"backward"]]]]]]],[0,null,false,null,105178916382459,[],[[-1,29,null,608688684833882,false,[[11,"gameSequence"],[7,[23,"SEQ_TUTORIAL"]]]]]]]]]],[0,[true,"Facebook"],false,null,143082246552620,[[-1,23,null,0,false,false,false,143082246552620,false,[[1,[2,"Facebook"]]]]],[]],[0,[true,"FB - Entrydata"],false,null,185137906843725,[[-1,23,null,0,false,false,false,185137906843725,false,[[1,[2,"FB - Entrydata"]]]]],[]],[1,"entryDataName",1,"",false,false,363478419645466,false],[1,"entryDataPIC",1,"",false,false,804029372255176,false],[1,"entryDataScore",0,0,false,false,170958417460896,false],[1,"isEntryPointHasData",0,0,false,false,221421603605127,false],[0,[true,"FB - Control Params"],false,null,756005174213814,[[-1,23,null,0,false,false,false,756005174213814,false,[[1,[2,"FB - Control Params"]]]]],[]],[1,"FB_OFFLINE",0,0,false,false,347750152655026,false],[0,[true,"FB - My Details"],false,null,132239187558498,[[-1,23,null,0,false,false,false,132239187558498,false,[[1,[2,"FB - My Details"]]]]],[]],[1,"fb_myName",1,"",false,false,999330706460999,false],[1,"fb_myBestScore",0,0,false,false,619609824294620,false],[1,"fb_myID",1,"",false,false,606938799711182,false],[0,[true,"FB - Profile"],false,null,788219312987640,[[-1,23,null,0,false,false,false,788219312987640,false,[[1,[2,"FB - Profile"]]]]],[],[[0,null,false,null,974715443928452,[[0,30,null,2,false,false,false,592706889565397,false,[[1,[2,"onC2_LoggedIn"]]]]],[[-1,29,null,610792987927045,false,[[11,"fb_myID"],[7,[20,0,38,false,null,[[0,0]]]]]],[-1,29,null,856499713792895,false,[[11,"fb_myName"],[7,[20,0,38,false,null,[[0,1]]]]]]]],[0,null,false,null,958589461295076,[[0,30,null,2,false,false,false,486241544667666,false,[[1,[2,"onC2_EntryPointData"]]]]],[],[[0,null,false,null,270178850156482,[[0,71,null,0,false,false,false,737807180870679,false,[[0,[0,0]],[8,0],[7,[0,1]]]]],[[-1,29,null,286892087219317,false,[[11,"isEntryPointHasData"],[7,[0,1]]]],[-1,29,null,506881591645044,false,[[11,"entryDataName"],[7,[20,0,38,false,null,[[0,1]]]]]],[-1,29,null,926179450753325,false,[[11,"entryDataPIC"],[7,[20,0,38,false,null,[[0,2]]]]]],[-1,29,null,338749830127238,false,[[11,"entryDataScore"],[7,[19,36,[[20,0,38,false,null,[[0,3]]]]]]]]]],[0,null,false,null,596943322075409,[[-1,37,null,0,false,false,false,827087791741052,false]],[[-1,29,null,600389300922992,false,[[11,"isEntryPointHasData"],[7,[0,0]]]]]]]]]],[0,[true,"FB - LB Params"],false,null,864757834614469,[[-1,23,null,0,false,false,false,864757834614469,false,[[1,[2,"FB - LB Params"]]]]],[]],[1,"isFB_LeaderboardReady",0,0,false,false,728729800558764,false],[1,"isFB_LeaderboardHasData",0,0,false,false,947491326607104,false],[1,"scoreToBeat",0,0,false,false,513145237577246,false],[1,"LBScoreToBeat",0,0,false,false,691367743313851,false],[1,"challengedCompleted",0,0,false,false,554168830711021,false],[0,[true,"FB - LB"],false,null,919506271733769,[[-1,23,null,0,false,false,false,919506271733769,false,[[1,[2,"FB - LB"]]]]],[],[[0,null,false,null,710460443937665,[[0,30,null,2,false,false,false,201453206134368,false,[[1,[2,"onC2_LBUpdate"]]]]],[[-1,29,null,849586352441084,false,[[11,"isFB_LeaderboardReady"],[7,[0,1]]]],[68,54,null,289102673928726,false,[[0,[20,0,38,false,null,[[0,0]]]],[0,[0,4]],[0,[0,1]]]]],[[0,null,false,null,334577471618882,[[0,71,null,0,false,false,false,695570863284040,false,[[0,[0,0]],[8,4],[7,[0,0]]]]],[[-1,29,null,462544183524432,false,[[11,"isFB_LeaderboardHasData"],[7,[0,1]]]]]],[0,null,false,null,250542566434541,[[-1,39,null,0,true,false,false,602194048157015,false,[[0,[20,0,38,false,null,[[0,0]]]]]]],[],[[1,"user_data",1,"",false,false,359892418375399,false],[0,null,false,null,451064246958518,[],[[-1,29,null,781850631099993,false,[[11,"user_data"],[7,[19,42,[[20,0,38,false,null,[[0,1]]],[19,41],[2,"|"]]]]]]]],[0,null,false,null,927384951225712,[],[[68,172,null,688541891230025,false,[[0,[19,41]],[0,[0,0]],[7,[19,42,[[23,"user_data"],[0,0],[2,"*"]]]]]],[68,172,null,369037604200359,false,[[0,[19,41]],[0,[0,1]],[7,[19,42,[[23,"user_data"],[0,1],[2,"*"]]]]]],[68,172,null,217199530033381,false,[[0,[19,41]],[0,[0,2]],[7,[19,42,[[23,"user_data"],[0,2],[2,"*"]]]]]],[68,172,null,271615915320631,false,[[0,[19,41]],[0,[0,3]],[7,[19,36,[[19,42,[[23,"user_data"],[0,3],[2,"*"]]]]]]]]]]]]]]]],[0,[true,"Fb - Challenge"],false,null,372138832013677,[[-1,23,null,0,false,false,false,372138832013677,false,[[1,[2,"Fb - Challenge"]]]]],[],[[0,null,false,null,683671035051354,[[0,30,null,2,false,false,false,482894042381149,false,[[1,[2,"Init_Challenge"]]]]],[[-1,29,null,777530986408633,false,[[11,"scoreToBeat"],[7,[0,-1]]]],[-1,29,null,875052754578010,false,[[11,"LBScoreToBeat"],[7,[0,-1]]]]],[[1,"challengeFound",0,0,false,false,338757653590092,false],[0,null,false,null,498547436737950,[[-1,27,null,0,false,false,false,372478774952117,false,[[11,"isEntryPointHasData"],[8,0],[7,[0,1]]]]],[],[[0,null,false,null,485871865896937,[[-1,27,null,0,false,true,false,388216430086370,false,[[11,"challengedCompleted"],[8,0],[7,[0,1]]]]],[[-1,29,null,348293425080253,false,[[11,"scoreToBeat"],[7,[23,"entryDataScore"]]]]],[[0,null,false,null,650860076778831,[[-1,27,null,0,false,false,false,405499989368461,false,[[11,"scoreToBeat"],[8,2],[7,[20,0,38,false,null,[[0,0]]]]]]],[[0,26,null,314120864792777,false,[[1,[2,"Spawn_Challenge"]],[13,[7,[19,215,[[23,"entryDataName"]]]],[7,[23,"entryDataPIC"]],[7,[23,"scoreToBeat"]]]]]]],[0,null,false,null,879210595536559,[[-1,37,null,0,false,false,false,269994843520237,false]],[[0,26,null,501048180881851,false,[[1,[2,"on_Challenge_Completed"]],[13]]]]]]]]],[0,null,false,null,163363111788291,[[-1,27,null,0,false,false,false,822123163963419,false,[[11,"isFB_LeaderboardHasData"],[8,0],[7,[0,1]]]],[-1,27,null,0,false,true,false,783734770286463,false,[[11,"isEntryPointHasData"],[8,0],[7,[0,1]]]]],[],[[0,null,false,null,107016453714644,[[-1,56,null,0,true,false,false,529966794581529,false,[[1,[2,"i"]],[0,[5,[20,68,58,false,null],[0,1]]],[0,[0,0]]]]],[],[[0,null,false,null,236580208574068,[[-1,27,null,0,false,false,false,176851151391484,false,[[11,"challengeFound"],[8,0],[7,[0,0]]]]],[],[[0,null,false,null,766890080443099,[[68,216,null,0,false,false,false,889414242755242,false,[[0,[19,41,[[2,"i"]]]],[0,[0,0]],[8,1],[7,[23,"fb_myID"]]]]],[[9,69,null,715532240486215,false,[[3,0],[7,[10,[20,0,38,false,null,[[0,0]]],[2,"<>"]]]]]],[[0,null,false,null,656272591728837,[[68,216,null,0,false,false,false,652414729533763,false,[[0,[19,41,[[2,"i"]]]],[0,[0,3]],[8,1],[7,[0,0]]]],[68,216,null,0,false,false,false,668142011701914,false,[[0,[19,41,[[2,"i"]]]],[0,[0,3]],[8,5],[7,[20,0,38,false,null,[[0,0]]]]]]],[[-1,29,null,341088825918806,false,[[11,"LBScoreToBeat"],[7,[20,68,43,false,null,[[19,41,[[2,"i"]]],[0,3]]]]]],[-1,29,null,965866471149910,false,[[11,"challengeFound"],[7,[0,1]]]]],[[0,null,false,null,381984776851646,[[-1,27,null,0,false,true,false,511365308227658,false,[[11,"isEntryPointHasData"],[8,0],[7,[0,1]]]]],[[0,26,null,834408503038413,false,[[1,[2,"Spawn_Challenge"]],[13,[7,[19,215,[[20,68,43,false,null,[[19,41,[[2,"i"]]],[0,1]]]]]],[7,[20,68,43,false,null,[[19,41,[[2,"i"]]],[0,2]]]],[7,[23,"LBScoreToBeat"]]]]]]]]]]]]]]]]],[0,null,false,null,320326822899780,[[-1,27,null,0,false,true,false,870094089619323,false,[[11,"isEntryPointHasData"],[8,0],[7,[0,1]]]]],[],[[0,null,false,null,445330653684294,[[-1,27,null,0,false,false,false,480978389277989,false,[[11,"isFB_LeaderboardHasData"],[8,0],[7,[0,1]]]]],[],[[0,null,false,null,188766581925327,[[-1,27,null,0,false,false,false,668465334503235,false,[[11,"LBScoreToBeat"],[8,0],[7,[0,-1]]]]],[[0,26,null,849368859012609,false,[[1,[2,"Destroy_Challenge"]],[13]]]]]]],[0,null,false,null,484920631826345,[[-1,37,null,0,false,false,false,154736514765494,false]],[[0,26,null,555572531899962,false,[[1,[2,"Destroy_Challenge"]],[13]]]]]]]]],[0,null,false,null,620107877497427,[[0,30,null,2,false,false,false,802193536441890,false,[[1,[2,"On_Challenge_Completed"]]]]],[[-1,29,null,212897286911212,false,[[11,"scoreToBeat"],[7,[0,-1]]]],[0,26,null,806527597998655,false,[[1,[2,"Destroy_Challenge"]],[13]]],[-1,29,null,595789157263511,false,[[11,"challengedCompleted"],[7,[0,1]]]],[9,111,null,105612728322996,false,[[1,[2,"onFB_challengeCompleted()"]]]]],[[0,null,false,null,603328626468625,[],[[-1,29,null,267277529204614,false,[[11,"isEntryPointHasData"],[7,[0,0]]]],[0,26,null,509452725053776,false,[[1,[2,"Init_Challenge"]],[13]]]]]]],[0,null,false,null,742189040940250,[[0,30,null,2,false,false,false,494689131111426,false,[[1,[2,"Destroy_Challenge"]]]]],[[69,25,null,576493882076930,false],[70,113,null,618192604403487,false]]],[0,null,false,null,974934389526549,[[0,30,null,2,false,false,false,587014412050847,false,[[1,[2,"Spawn_Challenge"]]]]],[[0,26,null,143063697531693,false,[[1,[2,"Destroy_Challenge"]],[13]]],[-1,61,null,950791516734200,false,[[4,69],[5,[2,"hud"]],[0,[5,[4,[23,"CANVAS_WIDTH"],[6,[23,"canvasDeltaWidth"],[1,0.5]]],[0,50]]],[0,[4,[6,[3,[23,"canvasDeltaHeight"]],[1,0.5]],[0,110]]]]],[69,121,null,575971299349074,false,[[0,[0,80]],[0,[0,80]]]],[69,142,null,204622008532997,false,[[3,0]]],[70,148,null,302101926001754,false,[[0,[19,149,[[0,33],[0,33],[0,33]]]]]],[-1,61,null,853917562778148,false,[[4,70],[5,[2,"hud"]],[0,[4,[20,69,93,false,null],[6,[20,69,73,false,null],[1,0.5]]]],[0,[4,[4,[20,69,86,false,null],[6,[20,69,74,false,null],[1,0.5]]],[0,8]]]]],[70,45,null,575926102359073,false,[[7,[10,[19,36,[[6,[20,0,38,false,null,[[0,2]]],[23,"SCORE_PER_PIXEL"]]]],[2,"m"]]]]],[70,118,null,899197501670944,false,[[10,0],[7,[2,"hud"]]]],[0,26,null,614133460291183,false,[[1,[2,"Spawn_Challenge_Mark"]],[13,[7,[4,[23,"startX"],[20,0,38,false,null,[[0,2]]]]],[7,[19,36,[[6,[20,0,38,false,null,[[0,2]]],[23,"SCORE_PER_PIXEL"]]]]]]]],[9,69,null,663726873652663,false,[[3,0],[7,[10,[20,0,38,false,null,[[0,2]]],[2,"m"]]]]]],[[0,null,false,null,672788848807165,[[-1,217,null,0,false,false,false,101964796676462,false]],[[69,218,null,218614792653650,false,[[1,[2,"icon-128.png"]],[3,1],[3,0]]]]],[0,null,false,null,955770208692046,[[-1,37,null,0,false,false,false,616917023768171,false]],[[69,218,null,790551790179122,false,[[1,[20,0,38,false,null,[[0,1]]]],[3,1],[3,0]]]]]]],[0,null,false,null,980868308410527,[[69,219,null,1,false,false,false,888936081655110,false]],[[69,121,null,301160330529143,false,[[0,[0,80]],[0,[0,80]]]],[69,142,null,489821532453476,false,[[3,1]]]]],[0,null,false,null,339864782678544,[[0,30,null,2,false,false,false,789758125968363,false,[[1,[2,"on_LBScoreToBeat_Update"]]]]],[],[[0,null,false,null,587928026438244,[[0,71,null,0,false,false,false,879960709378070,false,[[0,[0,0]],[8,3],[7,[23,"LBScoreToBeat"]]]]],[],[[0,null,false,null,816401022621021,[[70,120,null,0,false,false,false,291640666500397,false,[[10,0],[8,0],[7,[2,"hud"]]]]],[[70,45,null,605799317076702,false,[[7,[10,[19,147,[[6,[5,[23,"LBScoreToBeat"],[20,0,38,false,null,[[0,0]]]],[23,"SCORE_PER_PIXEL"]]]],[2,"m"]]]]]]]]],[0,null,false,null,411038596748081,[[-1,37,null,0,false,false,false,331478793998667,false]],[[0,26,null,521705885410539,false,[[1,[2,"On_ChallengeLine_Crossed"]],[13]]],[0,26,null,902033387958948,false,[[1,[2,"Init_Challenge"]],[13,[7,[20,0,38,false,null,[[0,0]]]]]]]]]]],[0,null,false,null,680777258347889,[[0,30,null,2,false,false,false,974830951439242,false,[[1,[2,"on_ScoreToBeat_Update"]]]]],[],[[0,null,false,null,697059591273497,[[0,71,null,0,false,false,false,987735098943984,false,[[0,[0,0]],[8,3],[7,[23,"scoreToBeat"]]]]],[],[[0,null,false,null,245295769455912,[[70,120,null,0,false,false,false,360493842931273,false,[[10,0],[8,0],[7,[2,"hud"]]]]],[[70,45,null,263082875424393,false,[[7,[10,[19,147,[[6,[5,[23,"scoreToBeat"],[20,0,38,false,null,[[0,0]]]],[23,"SCORE_PER_PIXEL"]]]],[2,"m"]]]]]]]]],[0,null,false,null,292054072858106,[[-1,37,null,0,false,false,false,522210100474863,false]],[[0,26,null,741443151343824,false,[[1,[2,"On_ChallengeLine_Crossed"]],[13]]],[0,26,null,310590308327892,false,[[1,[2,"On_Challenge_Completed"]],[13]]]]]]]]]]]],[["chat_msg.m4a",9070],["chat_msg.ogg",8952],["coin_add.m4a",2284],["coin_add.ogg",6074],["coin_hit.m4a",2818],["coin_hit.ogg",6192],["not_ready.m4a",15164],["not_ready.ogg",15384],["egg_broken.m4a",13166],["egg_broken.ogg",14652],["click_0.m4a",1723],["click_0.ogg",5031],["egg_hit_0.m4a",4575],["egg_hit_0.ogg",7215],["egg_hit_1.m4a",3972],["egg_hit_1.ogg",6730],["egg_hit_2.m4a",4686],["egg_hit_2.ogg",7300],["egg_hit_3.m4a",3871],["egg_hit_3.ogg",6907],["ice.m4a",24961],["ice.ogg",34608],["coin.m4a",8622],["coin.ogg",10150],["unlock.m4a",42092],["unlock.ogg",36815],["bg music.m4a",2275437],["bg music.ogg",1787218],["game_over.m4a",25652],["game_over.ogg",26302],["challenge_won.m4a",11327],["challenge_won.ogg",12738]],"media/",false,1280,720,2,true,true,true,"1.0.0.0",true,true,1,0,85,false,true,1,true,"Eggy Car",0,[[27,33]]]} \ No newline at end of file diff --git a/eggycar/eggy-car.png b/eggycar/eggy-car.png new file mode 100644 index 00000000..c369ca99 Binary files /dev/null and b/eggycar/eggy-car.png differ diff --git a/eggycar/favicon.ico b/eggycar/favicon.ico new file mode 100644 index 00000000..ccbe3d11 Binary files /dev/null and b/eggycar/favicon.ico differ diff --git a/eggycar/icon-256.png b/eggycar/icon-256.png new file mode 100644 index 00000000..45c04aa2 Binary files /dev/null and b/eggycar/icon-256.png differ diff --git a/eggycar/images/a_coin-sheet0.png b/eggycar/images/a_coin-sheet0.png new file mode 100644 index 00000000..2808f44b Binary files /dev/null and b/eggycar/images/a_coin-sheet0.png differ diff --git a/eggycar/images/a_dial-sheet0.png b/eggycar/images/a_dial-sheet0.png new file mode 100644 index 00000000..579c332f Binary files /dev/null and b/eggycar/images/a_dial-sheet0.png differ diff --git a/eggycar/images/a_dial-sheet1.png b/eggycar/images/a_dial-sheet1.png new file mode 100644 index 00000000..5efce63d Binary files /dev/null and b/eggycar/images/a_dial-sheet1.png differ diff --git a/eggycar/images/a_dial_needle-sheet0.png b/eggycar/images/a_dial_needle-sheet0.png new file mode 100644 index 00000000..bdfa6ad8 Binary files /dev/null and b/eggycar/images/a_dial_needle-sheet0.png differ diff --git a/eggycar/images/a_egg-sheet0.png b/eggycar/images/a_egg-sheet0.png new file mode 100644 index 00000000..a8102c8a Binary files /dev/null and b/eggycar/images/a_egg-sheet0.png differ diff --git a/eggycar/images/a_egg_crack-sheet0.png b/eggycar/images/a_egg_crack-sheet0.png new file mode 100644 index 00000000..868bcaa8 Binary files /dev/null and b/eggycar/images/a_egg_crack-sheet0.png differ diff --git a/eggycar/images/a_egg_crack-sheet1.png b/eggycar/images/a_egg_crack-sheet1.png new file mode 100644 index 00000000..c756063f Binary files /dev/null and b/eggycar/images/a_egg_crack-sheet1.png differ diff --git a/eggycar/images/a_egg_outline-sheet0.png b/eggycar/images/a_egg_outline-sheet0.png new file mode 100644 index 00000000..00f58315 Binary files /dev/null and b/eggycar/images/a_egg_outline-sheet0.png differ diff --git a/eggycar/images/a_focus-sheet0.png b/eggycar/images/a_focus-sheet0.png new file mode 100644 index 00000000..719f56e1 Binary files /dev/null and b/eggycar/images/a_focus-sheet0.png differ diff --git a/eggycar/images/a_loading_bar.png b/eggycar/images/a_loading_bar.png new file mode 100644 index 00000000..088f521c Binary files /dev/null and b/eggycar/images/a_loading_bar.png differ diff --git a/eggycar/images/a_loading_frame-sheet0.png b/eggycar/images/a_loading_frame-sheet0.png new file mode 100644 index 00000000..06d295f2 Binary files /dev/null and b/eggycar/images/a_loading_frame-sheet0.png differ diff --git a/eggycar/images/a_logo-sheet0.png b/eggycar/images/a_logo-sheet0.png new file mode 100644 index 00000000..2334f86d Binary files /dev/null and b/eggycar/images/a_logo-sheet0.png differ diff --git a/eggycar/images/a_logo_tyre-sheet0.png b/eggycar/images/a_logo_tyre-sheet0.png new file mode 100644 index 00000000..215865d2 Binary files /dev/null and b/eggycar/images/a_logo_tyre-sheet0.png differ diff --git a/eggycar/images/a_power_up-sheet0.png b/eggycar/images/a_power_up-sheet0.png new file mode 100644 index 00000000..5cc9b8de Binary files /dev/null and b/eggycar/images/a_power_up-sheet0.png differ diff --git a/eggycar/images/a_power_up-sheet1.png b/eggycar/images/a_power_up-sheet1.png new file mode 100644 index 00000000..185cfbd7 Binary files /dev/null and b/eggycar/images/a_power_up-sheet1.png differ diff --git a/eggycar/images/a_track-sheet0.png b/eggycar/images/a_track-sheet0.png new file mode 100644 index 00000000..e04f8ed8 Binary files /dev/null and b/eggycar/images/a_track-sheet0.png differ diff --git a/eggycar/images/a_track-sheet1.png b/eggycar/images/a_track-sheet1.png new file mode 100644 index 00000000..ad088c6b Binary files /dev/null and b/eggycar/images/a_track-sheet1.png differ diff --git a/eggycar/images/a_track-sheet2.png b/eggycar/images/a_track-sheet2.png new file mode 100644 index 00000000..2193cdc7 Binary files /dev/null and b/eggycar/images/a_track-sheet2.png differ diff --git a/eggycar/images/a_track-sheet3.png b/eggycar/images/a_track-sheet3.png new file mode 100644 index 00000000..0f411d51 Binary files /dev/null and b/eggycar/images/a_track-sheet3.png differ diff --git a/eggycar/images/a_track-sheet4.png b/eggycar/images/a_track-sheet4.png new file mode 100644 index 00000000..28b3d778 Binary files /dev/null and b/eggycar/images/a_track-sheet4.png differ diff --git a/eggycar/images/a_track-sheet5.png b/eggycar/images/a_track-sheet5.png new file mode 100644 index 00000000..27c41dee Binary files /dev/null and b/eggycar/images/a_track-sheet5.png differ diff --git a/eggycar/images/bg_parrallax_front-sheet0.png b/eggycar/images/bg_parrallax_front-sheet0.png new file mode 100644 index 00000000..2b6ebbe5 Binary files /dev/null and b/eggycar/images/bg_parrallax_front-sheet0.png differ diff --git a/eggycar/images/blockage-sheet0.png b/eggycar/images/blockage-sheet0.png new file mode 100644 index 00000000..54df03dc Binary files /dev/null and b/eggycar/images/blockage-sheet0.png differ diff --git a/eggycar/images/btn_car_selection-sheet0.png b/eggycar/images/btn_car_selection-sheet0.png new file mode 100644 index 00000000..d21d7214 Binary files /dev/null and b/eggycar/images/btn_car_selection-sheet0.png differ diff --git a/eggycar/images/btn_challenge-sheet0.png b/eggycar/images/btn_challenge-sheet0.png new file mode 100644 index 00000000..60a4f7cb Binary files /dev/null and b/eggycar/images/btn_challenge-sheet0.png differ diff --git a/eggycar/images/btn_close-sheet0.png b/eggycar/images/btn_close-sheet0.png new file mode 100644 index 00000000..798aaf54 Binary files /dev/null and b/eggycar/images/btn_close-sheet0.png differ diff --git a/eggycar/images/btn_continue-sheet0.png b/eggycar/images/btn_continue-sheet0.png new file mode 100644 index 00000000..cfc10342 Binary files /dev/null and b/eggycar/images/btn_continue-sheet0.png differ diff --git a/eggycar/images/btn_invite-sheet0.png b/eggycar/images/btn_invite-sheet0.png new file mode 100644 index 00000000..a2f48196 Binary files /dev/null and b/eggycar/images/btn_invite-sheet0.png differ diff --git a/eggycar/images/btn_leaderboard-sheet0.png b/eggycar/images/btn_leaderboard-sheet0.png new file mode 100644 index 00000000..0ffb5309 Binary files /dev/null and b/eggycar/images/btn_leaderboard-sheet0.png differ diff --git a/eggycar/images/btn_music-sheet0.png b/eggycar/images/btn_music-sheet0.png new file mode 100644 index 00000000..c71d9c3c Binary files /dev/null and b/eggycar/images/btn_music-sheet0.png differ diff --git a/eggycar/images/btn_play-sheet0.png b/eggycar/images/btn_play-sheet0.png new file mode 100644 index 00000000..d6df7088 Binary files /dev/null and b/eggycar/images/btn_play-sheet0.png differ diff --git a/eggycar/images/btn_sound-sheet0.png b/eggycar/images/btn_sound-sheet0.png new file mode 100644 index 00000000..782edc42 Binary files /dev/null and b/eggycar/images/btn_sound-sheet0.png differ diff --git a/eggycar/images/car_0-sheet0.png b/eggycar/images/car_0-sheet0.png new file mode 100644 index 00000000..bc27bd91 Binary files /dev/null and b/eggycar/images/car_0-sheet0.png differ diff --git a/eggycar/images/car_0_tyre-sheet0.png b/eggycar/images/car_0_tyre-sheet0.png new file mode 100644 index 00000000..63955b56 Binary files /dev/null and b/eggycar/images/car_0_tyre-sheet0.png differ diff --git a/eggycar/images/car_0_tyre-sheet1.png b/eggycar/images/car_0_tyre-sheet1.png new file mode 100644 index 00000000..1bab5735 Binary files /dev/null and b/eggycar/images/car_0_tyre-sheet1.png differ diff --git a/eggycar/images/car_sel_button-sheet0.png b/eggycar/images/car_sel_button-sheet0.png new file mode 100644 index 00000000..a57b6d87 Binary files /dev/null and b/eggycar/images/car_sel_button-sheet0.png differ diff --git a/eggycar/images/car_sel_button-sheet1.png b/eggycar/images/car_sel_button-sheet1.png new file mode 100644 index 00000000..97177702 Binary files /dev/null and b/eggycar/images/car_sel_button-sheet1.png differ diff --git a/eggycar/images/car_sel_card-sheet0.png b/eggycar/images/car_sel_card-sheet0.png new file mode 100644 index 00000000..706e127e Binary files /dev/null and b/eggycar/images/car_sel_card-sheet0.png differ diff --git a/eggycar/images/car_sel_card-sheet1.png b/eggycar/images/car_sel_card-sheet1.png new file mode 100644 index 00000000..61d034ca Binary files /dev/null and b/eggycar/images/car_sel_card-sheet1.png differ diff --git a/eggycar/images/car_sel_card-sheet2.png b/eggycar/images/car_sel_card-sheet2.png new file mode 100644 index 00000000..f00dd9ca Binary files /dev/null and b/eggycar/images/car_sel_card-sheet2.png differ diff --git a/eggycar/images/car_sel_frame-sheet0.png b/eggycar/images/car_sel_frame-sheet0.png new file mode 100644 index 00000000..95861553 Binary files /dev/null and b/eggycar/images/car_sel_frame-sheet0.png differ diff --git a/eggycar/images/challenge_pic-sheet0.png b/eggycar/images/challenge_pic-sheet0.png new file mode 100644 index 00000000..25ba51d7 Binary files /dev/null and b/eggycar/images/challenge_pic-sheet0.png differ diff --git a/eggycar/images/dotted_line.png b/eggycar/images/dotted_line.png new file mode 100644 index 00000000..00666bce Binary files /dev/null and b/eggycar/images/dotted_line.png differ diff --git a/eggycar/images/egg_freeze_vfx-sheet0.png b/eggycar/images/egg_freeze_vfx-sheet0.png new file mode 100644 index 00000000..d61a5423 Binary files /dev/null and b/eggycar/images/egg_freeze_vfx-sheet0.png differ diff --git a/eggycar/images/ground_detector-sheet0.png b/eggycar/images/ground_detector-sheet0.png new file mode 100644 index 00000000..645e933c Binary files /dev/null and b/eggycar/images/ground_detector-sheet0.png differ diff --git a/eggycar/images/hud_paddle-sheet0.png b/eggycar/images/hud_paddle-sheet0.png new file mode 100644 index 00000000..805696e1 Binary files /dev/null and b/eggycar/images/hud_paddle-sheet0.png differ diff --git a/eggycar/images/hud_paddle-sheet1.png b/eggycar/images/hud_paddle-sheet1.png new file mode 100644 index 00000000..4c3a3c29 Binary files /dev/null and b/eggycar/images/hud_paddle-sheet1.png differ diff --git a/eggycar/images/icon_coin-sheet0.png b/eggycar/images/icon_coin-sheet0.png new file mode 100644 index 00000000..32b07e81 Binary files /dev/null and b/eggycar/images/icon_coin-sheet0.png differ diff --git a/eggycar/images/icon_trophy-sheet0.png b/eggycar/images/icon_trophy-sheet0.png new file mode 100644 index 00000000..5988cd93 Binary files /dev/null and b/eggycar/images/icon_trophy-sheet0.png differ diff --git a/eggycar/images/particles.png b/eggycar/images/particles.png new file mode 100644 index 00000000..b863eb08 Binary files /dev/null and b/eggycar/images/particles.png differ diff --git a/eggycar/images/particles2.png b/eggycar/images/particles2.png new file mode 100644 index 00000000..9bf07eb3 Binary files /dev/null and b/eggycar/images/particles2.png differ diff --git a/eggycar/images/particles3.png b/eggycar/images/particles3.png new file mode 100644 index 00000000..bd5b0df1 Binary files /dev/null and b/eggycar/images/particles3.png differ diff --git a/eggycar/images/particles4.png b/eggycar/images/particles4.png new file mode 100644 index 00000000..e242717d Binary files /dev/null and b/eggycar/images/particles4.png differ diff --git a/eggycar/images/power_up_bar.png b/eggycar/images/power_up_bar.png new file mode 100644 index 00000000..fa60c39b Binary files /dev/null and b/eggycar/images/power_up_bar.png differ diff --git a/eggycar/images/power_up_bar_frame-sheet0.png b/eggycar/images/power_up_bar_frame-sheet0.png new file mode 100644 index 00000000..229f78e7 Binary files /dev/null and b/eggycar/images/power_up_bar_frame-sheet0.png differ diff --git a/eggycar/images/shaft-sheet0.png b/eggycar/images/shaft-sheet0.png new file mode 100644 index 00000000..4cd4df4e Binary files /dev/null and b/eggycar/images/shaft-sheet0.png differ diff --git a/eggycar/images/sprite2-sheet0.png b/eggycar/images/sprite2-sheet0.png new file mode 100644 index 00000000..dfb80610 Binary files /dev/null and b/eggycar/images/sprite2-sheet0.png differ diff --git a/eggycar/images/sprite2-sheet1.png b/eggycar/images/sprite2-sheet1.png new file mode 100644 index 00000000..3e5c93c5 Binary files /dev/null and b/eggycar/images/sprite2-sheet1.png differ diff --git a/eggycar/images/sprite3-sheet0.png b/eggycar/images/sprite3-sheet0.png new file mode 100644 index 00000000..465d98e5 Binary files /dev/null and b/eggycar/images/sprite3-sheet0.png differ diff --git a/eggycar/images/spritefont.png b/eggycar/images/spritefont.png new file mode 100644 index 00000000..377a8189 Binary files /dev/null and b/eggycar/images/spritefont.png differ diff --git a/eggycar/images/tuto-sheet0.png b/eggycar/images/tuto-sheet0.png new file mode 100644 index 00000000..93eca1ff Binary files /dev/null and b/eggycar/images/tuto-sheet0.png differ diff --git a/eggycar/index.html b/eggycar/index.html new file mode 100644 index 00000000..d8df2fb5 --- /dev/null +++ b/eggycar/index.html @@ -0,0 +1,154 @@ + + + + + + Eggy Car + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + +

Your browser does not appear to support HTML5. Try upgrading your browser to the latest version. What is a browser? +

Microsoft Internet Explorer
+ Mozilla Firefox
+ Google Chrome
+ Apple Safari

+
+ +
+ + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/eggycar/jquery-2.1.1.min.js b/eggycar/jquery-2.1.1.min.js new file mode 100644 index 00000000..e5ace116 --- /dev/null +++ b/eggycar/jquery-2.1.1.min.js @@ -0,0 +1,4 @@ +/*! jQuery v2.1.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.1",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="
",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+Math.random()}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b) +},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*\s*$/g,ib={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,"script"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n(" \ No newline at end of file diff --git a/roblox/476030_ROBLOX_rider.swf b/roblox/476030_ROBLOX_rider.swf new file mode 100644 index 00000000..de60547a Binary files /dev/null and b/roblox/476030_ROBLOX_rider.swf differ diff --git a/roblox/cover.svg b/roblox/cover.svg new file mode 100644 index 00000000..578bd362 --- /dev/null +++ b/roblox/cover.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/roblox/index.html b/roblox/index.html new file mode 100644 index 00000000..f3810c0b --- /dev/null +++ b/roblox/index.html @@ -0,0 +1,28 @@ + + + + + + + + Roblox + + + +
+ + + + diff --git a/sb2toswf/ cover.svg b/sb2toswf/ cover.svg new file mode 100644 index 00000000..df65a21e --- /dev/null +++ b/sb2toswf/ cover.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/sb2toswf/Converter.swf b/sb2toswf/Converter.swf new file mode 100644 index 00000000..4ba697fa Binary files /dev/null and b/sb2toswf/Converter.swf differ diff --git a/sb2toswf/index.html b/sb2toswf/index.html new file mode 100644 index 00000000..90c940c4 --- /dev/null +++ b/sb2toswf/index.html @@ -0,0 +1,28 @@ + + + + + + + + Scratch 2 to Flash + + + +
+ + + + diff --git a/scratch1/cover.svg b/scratch1/cover.svg new file mode 100644 index 00000000..ef8ceec2 --- /dev/null +++ b/scratch1/cover.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/scratch1/index.html b/scratch1/index.html new file mode 100644 index 00000000..b6ebf323 --- /dev/null +++ b/scratch1/index.html @@ -0,0 +1,60 @@ + + + + +ScratchJS + + + + + + + + + + + + + + + + + + +
+

Scratch on SqueakJS

+ + +
+
+

This is SqueakJS running a Scratch image. + Feedback and contributions welcome! — Vanessa Freudenberg

+
+ +
+ + \ No newline at end of file diff --git a/scratch1/scratch.css b/scratch1/scratch.css new file mode 100644 index 00000000..f7f7267a --- /dev/null +++ b/scratch1/scratch.css @@ -0,0 +1,51 @@ +body { + background-color: #eae6d1; + font-family: sans-serif; +} +canvas { + position: fixed; + background: #000; + cursor: default; +} +canvas.pixelated { + image-rendering: -moz-crisp-edges; + image-rendering: -webkit-optimize-contrast; + image-rendering: pixelated; + -ms-interpolation-mode: nearest-neighbor; +} +div#sqHeader { + position: fixed; + top: 0; + left: 0; + right: 0; + padding: 10px; + border-bottom: 6px double gray; +} +div#sqFooter { + position: fixed; + left: 0; + right: 0; + bottom: 0; + padding: 10px; + border-top: 6px double gray; +} +div#sqSpinner { + position: fixed; + margin: auto; top: 0; left: 0; bottom: 0; right: 0; + width: 100px; + height: 100px; + border-radius: 50px; + background: rgba(0, 0, 0, 0.3); + box-shadow: 0 0 5px 5px #F90; + display: none; + transform: rotate(30deg); +} +div#sqSpinner > div { + position: absolute; + top: 45px; + left: 5px; + width: 90px; + height: 10px; + border-radius: 5px; + box-shadow: 0 0 5px 5px #F90; +} \ No newline at end of file diff --git a/scratch1/scratch.js b/scratch1/scratch.js new file mode 100644 index 00000000..c59b4ca8 --- /dev/null +++ b/scratch1/scratch.js @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2013-2020 Vanessa Freudenberg + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +var fullscreen = navigator.standalone || + window.matchMedia('(max-device-width: 800px) and (max-device-height: 800px)').matches; + +window.onload = function() { + var url = "https://freudenbergs.de/vanessa/squeakjs/scratch/Scratch.image"; + SqueakJS.runSqueak(url, sqCanvas, { + appName: "Scratch", + fullscreen: fullscreen, + header: sqHeader, + footer: sqFooter, + spinner: sqSpinner, + fullscreenCheckbox: sqFullscreen, + root: "/Scratch", + templates: ["Projects", "Media", "Help", "locale"], + }); +}; + +if (addToHomescreen.isStandalone) + fullscreen = true; +else addToHomescreen({ + appID: 'squeakjs.scratch.add2home', +}); \ No newline at end of file diff --git a/scratch2/cover.svg b/scratch2/cover.svg new file mode 100644 index 00000000..32127d88 --- /dev/null +++ b/scratch2/cover.svg @@ -0,0 +1,3 @@ + + + diff --git a/scratch2/index.html b/scratch2/index.html new file mode 100644 index 00000000..a9762ca8 --- /dev/null +++ b/scratch2/index.html @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/scratch2/s2.swf b/scratch2/s2.swf new file mode 100644 index 00000000..653da642 Binary files /dev/null and b/scratch2/s2.swf differ diff --git a/shadow/index.html b/shadow/index.html index 35e75187..ab3ee047 100644 --- a/shadow/index.html +++ b/shadow/index.html @@ -31,6 +31,7 @@ Compile it yourself here: https://gitlab.com/lax1dude/eaglercraftx-1.8/ EaglercraftX 1.8 + diff --git a/simcity/cover.svg b/simcity/cover.svg new file mode 100644 index 00000000..61e5e820 --- /dev/null +++ b/simcity/cover.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/simcity/index.html b/simcity/index.html new file mode 100644 index 00000000..7807ab71 --- /dev/null +++ b/simcity/index.html @@ -0,0 +1,28 @@ + + + + + + + + Sim City + + + +
+ + + + diff --git a/simcity/simcity.swf b/simcity/simcity.swf new file mode 100644 index 00000000..389409d7 Binary files /dev/null and b/simcity/simcity.swf differ diff --git a/simon/294148_simon4bg.swf b/simon/294148_simon4bg.swf new file mode 100644 index 00000000..3e62851a Binary files /dev/null and b/simon/294148_simon4bg.swf differ diff --git a/simon/cover.svg b/simon/cover.svg new file mode 100644 index 00000000..20b16129 --- /dev/null +++ b/simon/cover.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/simon/index.html b/simon/index.html new file mode 100644 index 00000000..ce800c66 --- /dev/null +++ b/simon/index.html @@ -0,0 +1,28 @@ + + + + + + + + Simon + + + +
+ + + + diff --git a/sonicte/190480_sonic_blox.swf b/sonicte/190480_sonic_blox.swf new file mode 100644 index 00000000..4093f528 Binary files /dev/null and b/sonicte/190480_sonic_blox.swf differ diff --git a/sonicte/cover.svg b/sonicte/cover.svg new file mode 100644 index 00000000..10d8917d --- /dev/null +++ b/sonicte/cover.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/sonicte/index.html b/sonicte/index.html new file mode 100644 index 00000000..f24a33fa --- /dev/null +++ b/sonicte/index.html @@ -0,0 +1,28 @@ + + + + + + + + Sonic Blox + + + +
+ + + + diff --git a/splash/cover.svg b/splash/cover.svg new file mode 100644 index 00000000..4ec81bf9 --- /dev/null +++ b/splash/cover.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/splash/index.html b/splash/index.html new file mode 100644 index 00000000..cb8a14b4 --- /dev/null +++ b/splash/index.html @@ -0,0 +1,28 @@ + + + + + + + + Splash and Dash + + + +
+ + + + diff --git a/splash/sad.swf b/splash/sad.swf new file mode 100644 index 00000000..a21fedac Binary files /dev/null and b/splash/sad.swf differ diff --git a/style.css b/style.css index 54d78434..5082cf04 100644 --- a/style.css +++ b/style.css @@ -1,86 +1,113 @@ @import url('https://fonts.googleapis.com/css2?family=Prompt:wght@300&display=swap'); +@import url('bootstrap3.css'); @keyframes loadInAnimation { 0% { - opacity: 0; + opacity: 0 !important; } 100% { - opacity: 100; + opacity: 100 !important; } } +:root { + --inputbg: #3c096c !important; + --inputborder: #5a189a !important; + --uibg: #240046 !important; + --textcolor: #fff !important; + --bg: #10002b !important; +} +.suggest { + fill: white; +} +.hiddenUpload { + display:none !important; + visibility: hidden !important; +} * { - transition-duration: 0.5s; - outline: none; - border: none; - box-sizing: border-box; - align-content: center; - text-align: center; - font-family: 'Prompt', sans-serif; - color: var(--textcolor); + transition-duration: 0.5s !important; + outline: none !important; + border: none !important; + box-sizing: border-box !important; + align-content: center !important; + text-align: center !important; + font-family: 'Prompt', sans-serif !important; + color: var(--textcolor) !important; +} +.modal-content { +background:var(--uibg)!important; +} +#myModal { +color:white!important; +} +.modal-footer { +border:0!important; +} +.modal-header { +border:0!important; } body { - margin: 0; - padding: 0; - background: var(--bg); - color: var(--textcolor); - background-position: center; - background-repeat: no-repeat; - background-size: cover; - background-attachment: fixed; + margin: 0 !important; + padding: 0 !important; + background: var(--bg) !important; + color: var(--textcolor) !important; + background-position: center !important; + background-repeat: no-repeat !important; + background-size: cover !important; + background-attachment: fixed !important; } header, footer { - background-color: var(--uibg); - display: flex; - padding: 0.7rem; - width: 100%; - z-index: 1; - justify-content: center; + background-color: var(--uibg) !important; + display: flex !important; + padding: 0.7rem !important; + width: 100% !important; + z-index: 1 !important; + justify-content: center !important; } header { - top: 0; - border-radius: 0 0 20px 20px; - position: fixed; - box-shadow: 0 5px 10px var(--uibg); + top: 0 !important; + border-radius: 0 0 20px 20px !important; + position: fixed !important; + box-shadow: 0 5px 10px var(--uibg) !important; } footer.noscroll { - position: fixed; - overflow: hidden; + position: fixed !important; + overflow: hidden !important; } footer { - bottom: 0; - border-radius: 20px 20px 0 0; - box-shadow: 0 -5px 10px var(--uibg); + bottom: 0 !important; + border-radius: 20px 20px 0 0 !important; + box-shadow: 0 -5px 10px var(--uibg) !important; } footer a, footer a:visited, header a, header a:visited { - text-align: center; - font-weight: 700; - text-decoration: none; - margin-right: 2rem; - margin-left: 1rem; + text-align: center !important; + font-weight: 700 !important; + text-decoration: none !important; + margin-right: 2rem !important; + margin-left: 1rem !important; } footer a:hover, header a:hover { - text-shadow: 2px 2px 6px var(--textcolor); + text-shadow: 2px 2px 6px var(--textcolor) !important; } main { - animation: 1.25s ease-in-out 0s 1 loadInAnimation; - align-items: center; - flex-direction: column; - display: flex; - min-height: calc(100vh - (2 * 0.7rem)); - gap: 0; - flex-wrap: wrap; - margin: auto; - margin-top: 4rem; - width: 90%; + animation: 1.25s ease-in-out 0s 1 loadInAnimation !important; + align-items: center !important; + flex-direction: column !important; + display: flex !important; + min-height: calc(100vh - (2 * 0.7rem)) !important; + gap: 0 !important; + flex-wrap: wrap !important; + margin: auto !important; + margin-top: 4rem !important; + width: 90% !important; } main#main.noscroll { - justify-content: center; + justify-content: center !important; } h1, h2, @@ -88,217 +115,217 @@ h3, p, a, label { - margin: 0; - padding: 0; - text-shadow: var(--shadow); + margin: 0 !important; + padding: 0 !important; + text-shadow: var(--shadow) !important; } .samerow { - display: flex; - justify-content: center; - gap: 0; - flex-wrap: wrap; + display: flex !important; + justify-content: center !important; + gap: 0 !important; + flex-wrap: wrap !important; } h1 { - font-size: 60px; + font-size: 60px !important; } h2 { - font-size: 40px; + font-size: 40px !important; } h3 { - font-size: 20px; + font-size: 20px !important; } p, a { - font-size: 16px; + font-size: 16px !important; } button, input#websubmit.submit, input[type=submit] { - cursor: pointer; - background-color: var(--inputbg); - border-color: var(--inputborder); - border-width: 3px; - border-radius: 10px; - border-style: solid; - padding: 7px; - margin-left: 20px; - margin-right: 20px; - margin: 10px; + cursor: pointer !important; + background-color: var(--inputbg) !important; + border-color: var(--inputborder) !important; + border-width: 3px !important; + border-radius: 10px !important; + border-style: solid !important; + padding: 7px !important; + margin-left: 20px !important; + margin-right: 20px !important; + margin: 10px !important; } button:hover, input#websubmit.submit:hover, input[type=submit]:hover { - filter: brightness(80%); - transform: scale(1.07); + filter: brightness(80%) !important; + transform: scale(1.07) !important; } img { - width: 100%; - aspect-ratio: auto; - user-select: none; - filter: drop-shadow(var(--shadow)); - image-rendering: pixelated; + width: 100% !important; + aspect-ratio: auto !important; + user-select: none !important; + filter: drop-shadow(var(--shadow)) !important; + image-rendering: pixelated !important; } .img-container a { - width: 100%; + width: 100% !important; } .img-container { - display: flex; - justify-content: center; - align-items: center; - flex-direction: row; - gap: 0; - flex-wrap: wrap; - width: 6%; - aspect-ratio: 1 / 1; - margin: 2%; + display: flex !important; + justify-content: center !important; + align-items: center !important; + flex-direction: row !important; + gap: 0 !important; + flex-wrap: wrap !important; + width: 6% !important; + aspect-ratio: 1 / 1 !important; + margin: 2% !important; } .game, .suggest { - width: 15%; - border-radius: 20px; + width: 15% !important; + border-radius: 20px !important; display: inline-block; - background-color: var(--uibg); - margin: 15px; - cursor: pointer; - box-shadow: 0px 0px 5px 5px var(--uibg); + background-color: var(--uibg) !important; + margin: 15px !important; + cursor: pointer !important; + box-shadow: 0px 0px 5px 5px var(--uibg) !important; } .game:hover, .suggest:hover { - transform: scale(1.1); - filter: brightness(85%); - box-shadow: 0px 0px 5px 5px var(--uibg); + transform: scale(1.1) !important; + filter: brightness(85%) !important; + box-shadow: 0px 0px 5px 5px var(--uibg) !important; } .game h1, .suggest h1 { - font-size: 12px; - float: right; - margin-right: 10px; - margin-top: 3px; - margin-bottom: 3px; + font-size: 12px !important; + float: right !important; + margin-right: 10px !important; + margin-top: 3px !important; + margin-bottom: 3px !important; } .game img, .suggest img { - width: 100%; - border-radius: 20px; - aspect-ratio: 1 / 1; + width: 100% !important; + border-radius: 20px !important; + aspect-ratio: 1 / 1 !important; } img.star { - float: left; - width: 10%; - margin-top: 3px; - margin-bottom: 3px; - margin-left: 10px; + float: left !important; + width: 10% !important; + margin-top: 3px !important; + margin-bottom: 3px !important; + margin-left: 10px !important; } #noscroll { - overflow-y: hidden; - justify-content: center; + overflow-y: hidden !important; + justify-content: center !important; } #games, #pinned { - width: 100%; - justify-content: center; + width: 100% !important; + justify-content: center !important; } a { - font-size: 16px; + font-size: 16px !important; } input[type="text"] { - width: 50%; - background-color: var(--inputbg); - box-sizing: border-box; - font-size: 20px; - padding: 0.8% 0.8%; - text-align: center; - border-radius: 5px; - outline: none; - margin: 10px; - border: 2px solid var(--inputborder); - border-radius: 5px; - transition: opacity 0.25s ease-in-out; - opacity: 100%; + width: 50% !important; + background-color: var(--inputbg) !important; + box-sizing: border-box !important; + font-size: 20px !important; + padding: 0.8% 0.8% !important; + text-align: center !important; + border-radius: 5px !important; + outline: none !important; + margin: 10px !important; + border: 2px solid var(--inputborder) !important; + border-radius: 5px !important; + transition: opacity 0.25s ease-in-out !important; + opacity: 100% !important; } input[type=text]:hover { - opacity: 80%; + opacity: 80% !important; } ::placeholder { - color: var(--textcolor); - opacity: 0.4; /* Firefox */ + color: var(--textcolor) !important; + opacity: 0.4 !important; /* Firefox */ } .bookmarkletdiv { - width: 30%; - background-color: var(--uibg); - box-shadow: 0px 0px 5px 5px var(--uibg); - padding: 5px; - margin: 15px; - border-radius: 10px; - display: inline-block; + width: 30% !important; + background-color: var(--uibg) !important; + box-shadow: 0px 0px 5px 5px var(--uibg) !important; + padding: 5px !important; + margin: 15px !important; + border-radius: 10px !important; + display: inline-block !important; } .bookmarkletdiv a { - font-size: 30px; + font-size: 30px !important; } form { - width: 100%; + width: 100% !important; } .samerow.themebtns { - width: 70%; + width: 70% !important; } select { - border-radius: 5px; - background-color: var(--inputbg); - border-color: var(--inputborder); - border-width: 5px; - border-radius: 10px; - border-style: solid; - padding: 0.5% 0.5%; - margin: 0.25%; + border-radius: 5px !important; + background-color: var(--inputbg) !important; + border-color: var(--inputborder) !important; + border-width: 5px !important; + border-radius: 10px !important; + border-style: solid !important; + padding: 0.5% 0.5% !important; + margin: 0.25% !important; } gameframe { - width: 100vw; - height: 90vh; + width: 100vw !important; + height: 90vh !important; } gameframe iframe { - width: 100%; - height: 100%; + width: 100% !important; + height: 100% !important; } gameframe.header { - display: flex; - justify-content: space-between; + display: flex !important; + justify-content: space-between !important; } sl-icon-button { - font-size: 2rem; - padding-right: 5px; + font-size: 2rem !important; + padding-right: 5px !important; } h3#gametitle { - font-size: 2rem; + font-size: 2rem !important; }thumb.png .img-credits { - height: 40vh; - width: auto; - box-shadow: 0px 0px 20px rgba(255, 255, 255, 0.555) + height: 40vh !important; + width: auto !important; + box-shadow: 0px 0px 20px rgba(255, 255, 255, 0.555) !important; } label { - font-size: 20px; - padding-left: 5px; + font-size: 20px !important; + padding-left: 5px !important; } .avatar { - margin: 5px; + margin: 5px !important; } #bgimg { - width: 30vw; - font-size: 16px; + width: 30vw !important; + font-size: 16px !important; } \ No newline at end of file diff --git a/tboi/cover.svg b/tboi/cover.svg new file mode 100644 index 00000000..a9e945a7 --- /dev/null +++ b/tboi/cover.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/tboi/index.html b/tboi/index.html new file mode 100644 index 00000000..c6a68b88 --- /dev/null +++ b/tboi/index.html @@ -0,0 +1,28 @@ + + + + + + + + The Binding of Issac + + + +
+ + + + diff --git a/tboi/the_binding_of_isaac.swf b/tboi/the_binding_of_isaac.swf new file mode 100644 index 00000000..b4a20fba Binary files /dev/null and b/tboi/the_binding_of_isaac.swf differ diff --git a/themes.css b/themes.css index 9872b370..215ca799 100644 --- a/themes.css +++ b/themes.css @@ -1,9 +1,16 @@ +:root { + --inputbg: #3c096c; + --inputborder: #5a189a; + --uibg: #240046; + --textcolor: #fff; + --bg: #10002b; +} body { - --inputbg: #000000; - --inputborder: #000000; - --uibg: #000000; - --textcolor: #000; - --bg: #000000; + --inputbg: #3c096c; + --inputborder: #5a189a; + --uibg: #240046; + --textcolor: #fff; + --bg: #10002b; } body[theme=custom] { --inputbg: #3c096c; diff --git a/vm/cover.svg b/vm/cover.svg new file mode 100644 index 00000000..4f02a00a --- /dev/null +++ b/vm/cover.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/vm/index.html b/vm/index.html new file mode 100644 index 00000000..d5e02476 --- /dev/null +++ b/vm/index.html @@ -0,0 +1,28 @@ + + + + + + + + VMware Workstation Pro 9 + + + +
+ + + + \ No newline at end of file diff --git a/vm/vm.swf b/vm/vm.swf new file mode 100644 index 00000000..e605d96e Binary files /dev/null and b/vm/vm.swf differ diff --git a/waflash/ b/waflash/ new file mode 100644 index 00000000..e69de29b diff --git a/waflash/alt/ b/waflash/alt/ new file mode 100644 index 00000000..e69de29b diff --git a/waflash/alt/api b/waflash/alt/api new file mode 100644 index 00000000..ea7da2de --- /dev/null +++ b/waflash/alt/api @@ -0,0 +1,40 @@ + + + + + + + + + diff --git a/waflash/alt/emulator2/waflash_latest/ b/waflash/alt/emulator2/waflash_latest/ new file mode 100644 index 00000000..e69de29b diff --git a/waflash/alt/emulator2/waflash_latest/waflash-player.js b/waflash/alt/emulator2/waflash_latest/waflash-player.js new file mode 100644 index 00000000..6bf19bed --- /dev/null +++ b/waflash/alt/emulator2/waflash_latest/waflash-player.js @@ -0,0 +1,131 @@ +import createWaflashModule from "./waflash.js?2021111901"; +const WAFLASH_BASE_URL = "https://clubpenguinadvanced.github.io/waflash-demo/alt/emulator2/waflash_latest/", + createWaflash = (t, e) => { + if (t || (t = ""), (e = e || {}).flashVars && (t += (t.includes("?") ? "&" : "?") + e.flashVars), self != top) return; + let a = { + arguments: [t, "0", e.gpu ? "webgl" : "default", !0 === e.enableFilters ? "0" : "1"], + options: e, + preRun: [], + postRun: [], + locateFile: (t, e) => WAFLASH_BASE_URL + t + "?2021111901", + print(t) { + console.log(t) + }, + printErr(t) { + console.error(t) + }, + canvas: function() { + const t = document.getElementById("canvas"); + return t.addEventListener("webglcontextlost", (function(t) { + alert("WebGL context lost. You will need to reload the page."), t.preventDefault() + }), !1), t + }(), + statusElement: document.getElementById("waflashStatus"), + setStatus: t => { + if (!t) return; + t = t.replace(/Downloading data\.\.\. \((\d+)\/(\d+)\)/, ((t, e, a) => "Downloading player... " + Math.floor(parseInt(e) / parseInt(a) * 100) + "%")), console.log("WAFLASH> " + t); + const e = ''; + 0 == t.indexOf("Downloading player...") && (t = "Downloading player " + e), 0 == t.indexOf("Loading SWF...") && (t = "Loading SWF " + e), a.statusElement.innerHTML = t, a.showStatus() + }, + showStatus() { + a.statusElement.style.display = "block" + }, + hideStatus() { + a.statusElement.style.display = "none" + }, + unload() {}, + WAFLASH: { + hal: { + url_transformRequestUrl(t) { + const a = "owner" == window.T?.config?.ROLE; + const n = function(t) { + let n = e.resourceMap; + if (Array.isArray(n)) + for (let [e, a] of n) { + if ("string" != typeof e && !e instanceof RegExp) continue; + const n = e instanceof RegExp || "~" == e.charAt(0); + if (!n && "=" == e.charAt(0)) { + if (e = e.substr(1), e == t) return a + } else if (n) { + let n = e instanceof RegExp ? e : new RegExp(e = e.substr(1)); + if (n.test(t)) { + return null === a ? null : t.replace(n, a) + } + } else { + let n = t.indexOf("?"), + s = "", + o = t; + if (n >= 0 && (o = t.substring(0, n), s = "&" + t.substr(n + 1)), e == o) return null === a ? null : a + s + } + } else if (a && console.log("old-style resourceMap mode!!!!!!!!!!!!!!!"), n = window.wafResourceMap || e.resourceMap, n && "object" == typeof n) + for (let [e, a] of Object.entries(n)) { + const n = "=" == e.charAt(0), + s = "~" == e.charAt(0); + if (n) { + if (e = e.substr(1), e == t) return a + } else if (s) { + e = e.substr(1); + let n = new RegExp(e); + if (n.test(t)) { + return null === a ? null : t.replace(n, a) + } + } else { + let n = t.indexOf("?"), + s = "", + o = t; + if (n >= 0 && (o = t.substring(0, n), s = "&" + t.substr(n + 1)), e == o) return null === a ? null : a + s + } + } + var s = t.lastIndexOf("/"); + if (s >= 0) { + let e, a = t.substr(0, s + 1), + n = t.substr(s + 1), + o = n.substr(n.lastIndexOf(".")); + if (".swf" == o) { + if ("http://images.hangame.co.kr/static/flash/flashgame/game/lang/" == a) return "https://swfs.waflash.io/uploads/hangame/" + n; + if ("http://img.ibravo.com/game/source/" == a) return "https://darkviky.github.io/assets/ibravo/" + n; + if ("http://www.ibravo.com/web/game/popup/signed.aspx" == t) return "https://darkviky.github.io/assets/ibravo/web/game/popup/signed.aspx"; + if (t.lastIndexOf("/ads/default/loading.swf") >= 0) return "https://darkviky.github.io/assets/dearyou/loading.swf" + } + if (t.lastIndexOf("/loading/loading640x480.swf") > 0) return "https://blog.kakaocdn.net/dn/Ek0nH/btq3lUD7jcQ/gEYgOPz64grAZsrYbmX0Dk/loading640x480.swf?attach=1&knm=tfile.swf"; + if (t.lastIndexOf("/loading/loading.swf") > 0) return "https://blog.kakaocdn.net/dn/Vv9ag/btq3mYTdq8w/hHts2k7y4VYKN9y5f9eT5K/loading.swf?attach=1&knm=tfile.swf"; + if (t.lastIndexOf("/loading/result2_v3_2.swf") > 0) return "https://blog.kakaocdn.net/dn/eqSlVE/btqSX7mihN2/zlCy2XV43iQX4GahzZDkIk/result2_v3_2.swf?attach=1&knm=tfile.swf"; + if (t.startsWith("http://www.kiniwini.com/games/common/user_info.php")) return "https://blog.kakaocdn.net/dn/RhEMp/btq17btItmP/cJHm5tYvKfKe1ztq8XOzw1/user_info.php.txt?attach=1&knm=tfile.txt"; + if (t.indexOf("//panyroom.jr.naver.com/game/gameset.php") > 0) return "https://xwvy1u8cxc.execute-api.ap-northeast-2.amazonaws.com/prod/panyroom_game_gameset"; + if (e = "http://zuzunza.joins.com/all/check_id.php", t.startsWith(e)) return "https://ieazco9902.execute-api.ap-northeast-2.amazonaws.com/zuzunza/all/check_id" + t.substr(e.length); + if (e = "http://www.zuzunza.com/all/check_id.php", t.startsWith(e)) return "https://ieazco9902.execute-api.ap-northeast-2.amazonaws.com/zuzunza/all/check_id" + t.substr(e.length); + if (0 == t.lastIndexOf("https://blog.kakaocdn.net/swf/loading_default.swf")) return "https://blog.kakaocdn.net/dn/ccsyy7/btqU4Zs74KE/CLNg8AqGHfOkobsqhoKWok/loading_default.swf?attach=1&knm=tfile.swf"; + if (t.match(/^http\:\/\/file\.barunson\.com\/upfile\/object\/Loading\/loading[0-9a-z]+\.swf$/)) return "https://blog.kakaocdn.net/dn/bq8LCx/btq6W2p55q8/U7FtlDnJwgORqSF3zE7WuK/barunson-loading.waf?attach=1&knm=tfile.waf"; + if (t.startsWith("http://file.barunson.com/upfile/object/Loading/www.swf")) return "https://blog.kakaocdn.net/dn/ytl0f/btq6AtDeWRF/utoYw63znPZzuBDKeIOFd1/barunson-logo.waf?attach=1&knm=tfile.waf"; + if (t.endsWith("/loading/loading_lg.swf")) return "https://blog.kakaocdn.net/dn/uyECc/btq6BEraq42/M2P9hB84fAZFDsJSJgLCA0/loading_lg.swf?attach=1&knm=tfile.swf"; + if (".mp3" == o && "http://juter01.tistory.com/attachment/" == a) return "https://darkviky.github.io/assets/gog/" + n + } + return [".kakaocdn.net", ".github.io", ".waflash.io", "waflash.cdn.ntruss.com", ".archive.org"].some((e => t.indexOf(e) > 0)) ? t.replace("http://", "https://") : null + }(t); + return a && t != n && (n ? console.log(`redirect ${t} => ${n}`) : console.error(`redirect ${t} => ${n}`)), n + } + } + } + }; + window.waflash = a, window.onerror = (t, e, n, s, o) => { + "string" != typeof t && (o = t.error, t.filename || t.fileName, t.lineno || t.lineNumber, t.colno || t.columnNumber, t = t.message || t.name || o.message || o.name); + let l = ""; + o && o.stack && (l = o.stack); + let r = document.location + "|" + t; + a.ga && a.ga("event", document.location.origin, { + event_category: "error", + event_label: r, + non_interaction: !0, + send_to: a.gid + }) + }, a.setStatus("Prepairing..."), createWaflashModule(a).then((t => { + console.log("WAFLASH> Waflash module created!") + })) + }, + destroyWaflash = () => { + console.log("WAFLASH> Waflash component will unmount!"), waflash.unload(), waflash = null, window.waflash = null + }; +export { + createWaflash, + destroyWaflash +}; diff --git a/waflash/alt/emulator2/waflash_latest/waflash.data b/waflash/alt/emulator2/waflash_latest/waflash.data new file mode 100644 index 00000000..bc0f7094 Binary files /dev/null and b/waflash/alt/emulator2/waflash_latest/waflash.data differ diff --git a/waflash/alt/emulator2/waflash_latest/waflash.js b/waflash/alt/emulator2/waflash_latest/waflash.js new file mode 100644 index 00000000..c7f651cb --- /dev/null +++ b/waflash/alt/emulator2/waflash_latest/waflash.js @@ -0,0 +1,8238 @@ +var Module = function() { + var e = "undefined" != typeof document && document.currentScript ? document.currentScript.src : void 0; + return function(r) { + var t; + (r = void 0 !== (r = r || {}) ? r : {}).ready = new Promise((function(e, r) { + t = e, r + })), r.expectedDataFileDownloads || (r.expectedDataFileDownloads = 0, r.finishedDataFileDownloads = 0), r.expectedDataFileDownloads++, + function(e) { + if ("object" == typeof window) window.encodeURIComponent(window.location.pathname.toString().substring(0, window.location.pathname.toString().lastIndexOf("/")) + "/"); + else { + if ("undefined" == typeof location) throw "using preloaded data can only be done on a web page or in a web worker"; + encodeURIComponent(location.pathname.toString().substring(0, location.pathname.toString().lastIndexOf("/")) + "/") + } + var t = "waflash.data"; + "function" != typeof r.locateFilePackage || r.locateFile || (r.locateFile = r.locateFilePackage, p("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")); + var n = r.locateFile ? r.locateFile(t, "") : t, + i = e.remote_package_size; + e.package_uuid; + var a, o, u, s, c = null, + l = r.getPreloadedPackage ? r.getPreloadedPackage(n, i) : null; + + function f() { + function t(e, r) { + if (!e) throw r + (new Error).stack + } + + function n(e, r, t) { + this.start = e, this.end = r, this.audio = t + } + n.prototype = { + requests: {}, + open: function(e, t) { + this.name = t, this.requests[t] = this, r.addRunDependency("fp " + this.name) + }, + send: function() {}, + onload: function() { + var e = this.byteArray.subarray(this.start, this.end); + this.finish(e) + }, + finish: function(e) { + r.FS_createDataFile(this.name, null, e, !0, !0, !0), r.removeRunDependency("fp " + this.name), this.requests[this.name] = null + } + }; + for (var i = e.files, a = 0; a < i.length; ++a) new n(i[a].start, i[a].end, i[a].audio).open("GET", i[a].filename); + + function o(i) { + r.finishedDataFileDownloads++, t(i, "Loading data file failed."), t(i instanceof ArrayBuffer, "bad input to processPackageData"); + var a = new Uint8Array(i); + n.prototype.byteArray = a; + for (var o = e.files, u = 0; u < o.length; ++u) n.prototype.requests[o[u].filename].onload(); + r.removeRunDependency("datafile_waflash.data") + } + r.addRunDependency("datafile_waflash.data"), r.preloadResults || (r.preloadResults = {}), r.preloadResults["waflash.data"] = { + fromCache: !1 + }, l ? (o(l), l = null) : c = o + } + l || (a = n, o = i, u = function(e) { + c ? (c(e), c = null) : l = e + }, (s = new XMLHttpRequest).open("GET", a, !0), s.responseType = "arraybuffer", s.onprogress = function(e) { + var t = a, + n = o; + if (e.total && (n = e.total), e.loaded) { + s.addedTotal ? r.dataFileDownloads[t].loaded = e.loaded : (s.addedTotal = !0, r.dataFileDownloads || (r.dataFileDownloads = {}), r.dataFileDownloads[t] = { + loaded: e.loaded, + total: n + }); + var i = 0, + u = 0, + c = 0; + for (var l in r.dataFileDownloads) { + var f = r.dataFileDownloads[l]; + i += f.total, u += f.loaded, c++ + } + i = Math.ceil(i * r.expectedDataFileDownloads / c), r.setStatus && r.setStatus("Downloading data... (" + u + "/" + i + ")") + } else r.dataFileDownloads || r.setStatus && r.setStatus("Downloading data...") + }, s.onerror = function(e) { + throw new Error("NetworkError for: " + a) + }, s.onload = function(e) { + if (!(200 == s.status || 304 == s.status || 206 == s.status || 0 == s.status && s.response)) throw new Error(s.statusText + " : " + s.responseURL); + var r = s.response; + u(r) + }, s.send(null)), r.calledRun ? f() : (r.preRun || (r.preRun = []), r.preRun.push(f)) + }({ + files: [{ + filename: "/desktop.ini", + start: 0, + end: 46, + audio: 0 + }, { + filename: "/NanumSquareRoundOTFR.otf", + start: 46, + end: 465950, + audio: 0 + }], + remote_package_size: 465950, + package_uuid: "8f31e25d-d0a6-4a8f-a179-96a610fbbec2" + }); + var n, i = {}; + for (n in r) r.hasOwnProperty(n) && (i[n] = r[n]); + var a, o, u, s, c = [], + l = "./this.program", + f = function(e, r) { + throw r + }, + d = ""; + document.currentScript && (d = document.currentScript.src), e && (d = e), d = 0 !== d.indexOf("blob:") ? d.substr(0, d.lastIndexOf("/") + 1) : "", a = function(e) { + var r = new XMLHttpRequest; + return r.open("GET", e, !1), r.send(null), r.responseText + }, o = function(e, r, t) { + var n = new XMLHttpRequest; + n.open("GET", e, !0), n.responseType = "arraybuffer", n.onload = function() { + 200 == n.status || 0 == n.status && n.response ? r(n.response) : t() + }, n.onerror = t, n.send(null) + }, s = function(e) { + document.title = e + }; + var m = r.print || console.log.bind(console), + p = r.printErr || console.warn.bind(console); + for (n in i) i.hasOwnProperty(n) && (r[n] = i[n]); + i = null, r.arguments && (c = r.arguments), r.thisProgram && (l = r.thisProgram), r.quit && (f = r.quit); + + function v(e) { + var r = q[W >> 2], + t = r + e + 15 & -16; + return q[W >> 2] = t, r + } + + function g(e) { + switch (e) { + case "i1": + case "i8": + return 1; + case "i16": + return 2; + case "i32": + return 4; + case "i64": + return 8; + case "float": + return 4; + case "double": + return 8; + default: + if ("*" === e[e.length - 1]) return 4; + if ("i" === e[0]) { + var r = Number(e.substr(1)); + return D(r % 8 == 0, "getNativeTypeSize invalid bits " + r + ", type " + e), r / 8 + } + return 0 + } + } + + function h(e) { + h.shown || (h.shown = {}), h.shown[e] || (h.shown[e] = 1, p(e)) + } + + function _(e, t, n) { + return n && n.length ? r["dynCall_" + e].apply(null, [t].concat(n)) : r["dynCall_" + e].call(null, t) + } + var b, y, w, E = 0, + x = function(e) { + E = e + }; + + function k(e, r, t, n) { + switch ("*" === (t = t || "i8").charAt(t.length - 1) && (t = "i32"), t) { + case "i1": + case "i8": + O[e >> 0] = r; + break; + case "i16": + j[e >> 1] = r; + break; + case "i32": + q[e >> 2] = r; + break; + case "i64": + _e = [r >>> 0, (he = r, +ae(he) >= 1 ? he > 0 ? (0 | se(+ue(he / 4294967296), 4294967295)) >>> 0 : ~~+oe((he - +(~~he >>> 0)) / 4294967296) >>> 0 : 0)], q[e >> 2] = _e[0], q[e + 4 >> 2] = _e[1]; + break; + case "float": + V[e >> 2] = r; + break; + case "double": + X[e >> 3] = r; + break; + default: + pe("invalid type for setValue: " + t) + } + } + r.wasmBinary && (b = r.wasmBinary), r.noExitRuntime && (y = r.noExitRuntime), "object" != typeof WebAssembly && p("no native wasm support detected"); + var C = new WebAssembly.Table({ + initial: 12757, + maximum: 12757, + element: "anyfunc" + }), + S = !1; + + function D(e, r) { + e || pe("Assertion failed: " + r) + } + + function F(e) { + var t = r["_" + e]; + return D(t, "Cannot call unknown function " + e + ", make sure it is exported"), t + } + + function A(e, r, t, n, i) { + var a = { + string: function(e) { + var r = 0; + if (null != e && 0 !== e) { + var t = 1 + (e.length << 2); + B(e, r = wt(t), t) + } + return r + }, + array: function(e) { + var r = wt(e.length); + return function(e, r) { + O.set(e, r) + }(e, r), r + } + }; + var o = F(e), + u = [], + s = 0; + if (n) + for (var c = 0; c < n.length; c++) { + var l = a[t[c]]; + l ? (0 === s && (s = yt()), u[c] = l(n[c])) : u[c] = n[c] + } + var f = o.apply(null, u); + return f = function(e) { + return "string" === r ? L(e) : "boolean" === r ? Boolean(e) : e + }(f), 0 !== s && Et(s), f + } + var P = "undefined" != typeof TextDecoder ? new TextDecoder("utf8") : void 0; + + function T(e, r, t) { + for (var n = r + t, i = r; e[i] && !(i >= n);) ++i; + if (i - r > 16 && e.subarray && P) return P.decode(e.subarray(r, i)); + for (var a = ""; r < i;) { + var o = e[r++]; + if (128 & o) { + var u = 63 & e[r++]; + if (192 != (224 & o)) { + var s = 63 & e[r++]; + if ((o = 224 == (240 & o) ? (15 & o) << 12 | u << 6 | s : (7 & o) << 18 | u << 12 | s << 6 | 63 & e[r++]) < 65536) a += String.fromCharCode(o); + else { + var c = o - 65536; + a += String.fromCharCode(55296 | c >> 10, 56320 | 1023 & c) + } + } else a += String.fromCharCode((31 & o) << 6 | u) + } else a += String.fromCharCode(o) + } + return a + } + + function L(e, r) { + return e ? T(G, e, r) : "" + } + + function I(e, r, t, n) { + if (!(n > 0)) return 0; + for (var i = t, a = t + n - 1, o = 0; o < e.length; ++o) { + var u = e.charCodeAt(o); + if (u >= 55296 && u <= 57343) u = 65536 + ((1023 & u) << 10) | 1023 & e.charCodeAt(++o); + if (u <= 127) { + if (t >= a) break; + r[t++] = u + } else if (u <= 2047) { + if (t + 1 >= a) break; + r[t++] = 192 | u >> 6, r[t++] = 128 | 63 & u + } else if (u <= 65535) { + if (t + 2 >= a) break; + r[t++] = 224 | u >> 12, r[t++] = 128 | u >> 6 & 63, r[t++] = 128 | 63 & u + } else { + if (t + 3 >= a) break; + r[t++] = 240 | u >> 18, r[t++] = 128 | u >> 12 & 63, r[t++] = 128 | u >> 6 & 63, r[t++] = 128 | 63 & u + } + } + return r[t] = 0, t - i + } + + function B(e, r, t) { + return I(e, G, r, t) + } + + function R(e) { + for (var r = 0, t = 0; t < e.length; ++t) { + var n = e.charCodeAt(t); + n >= 55296 && n <= 57343 && (n = 65536 + ((1023 & n) << 10) | 1023 & e.charCodeAt(++t)), n <= 127 ? ++r : r += n <= 2047 ? 2 : n <= 65535 ? 3 : 4 + } + return r + } + "undefined" != typeof TextDecoder && new TextDecoder("utf-16le"); + + function M(e) { + var r = R(e) + 1, + t = Zr(r); + return t && I(e, O, t, r), t + } + + function N(e) { + var r = R(e) + 1, + t = wt(r); + return I(e, O, t, r), t + } + var U, O, G, j, z, q, Q, V, X; + + function H(e) { + U = e, r.HEAP8 = O = new Int8Array(e), r.HEAP16 = j = new Int16Array(e), r.HEAP32 = q = new Int32Array(e), r.HEAPU8 = G = new Uint8Array(e), r.HEAPU16 = z = new Uint16Array(e), r.HEAPU32 = Q = new Uint32Array(e), r.HEAPF32 = V = new Float32Array(e), r.HEAPF64 = X = new Float64Array(e) + } + var W = 1052496, + Y = r.INITIAL_MEMORY || 16777216; + + function Z(e) { + for (; e.length > 0;) { + var t = e.shift(); + if ("function" != typeof t) { + var n = t.func; + "number" == typeof n ? void 0 === t.arg ? r.dynCall_v(n) : r.dynCall_vi(n, t.arg) : n(void 0 === t.arg ? null : t.arg) + } else t(r) + } + }(w = r.wasmMemory ? r.wasmMemory : new WebAssembly.Memory({ + initial: Y / 65536, + maximum: 32768 + })) && (U = w.buffer), Y = U.byteLength, H(U), q[W >> 2] = 6295552; + var K = [], + $ = [], + J = [], + ee = [], + re = [], + te = !1; + + function ne(e, r, t) { + return e >= 0 ? e : r <= 32 ? 2 * Math.abs(1 << r - 1) + e : Math.pow(2, r) + e + } + + function ie(e, r, t) { + if (e <= 0) return e; + var n = r <= 32 ? Math.abs(1 << r - 1) : Math.pow(2, r - 1); + return e >= n && (r <= 32 || e > n) && (e = -2 * n + e), e + } + var ae = Math.abs, + oe = Math.ceil, + ue = Math.floor, + se = Math.min, + ce = 0, + le = null, + fe = null; + + function de(e) { + ce++, r.monitorRunDependencies && r.monitorRunDependencies(ce) + } + + function me(e) { + if (ce--, r.monitorRunDependencies && r.monitorRunDependencies(ce), 0 == ce && (null !== le && (clearInterval(le), le = null), fe)) { + var t = fe; + fe = null, t() + } + } + + function pe(e) { + throw r.onAbort && r.onAbort(e), m(e += ""), p(e), S = !0, 1, e = "abort(" + e + "). Build with -s ASSERTIONS=1 for more info.", new WebAssembly.RuntimeError(e) + } + r.preloadedImages = {}, r.preloadedAudios = {}; + + function ve(e) { + return r = e, t = "data:application/octet-stream;base64,", String.prototype.startsWith ? r.startsWith(t) : 0 === r.indexOf(t); + var r, t + } + var ge, he, _e, be = "waflash.wasm"; + + function ye() { + try { + if (b) return new Uint8Array(b); + if (u) return u(be); + throw "both async and sync fetching of the wasm failed" + } catch (e) { + pe(e) + } + } + ve(be) || (ge = be, be = r.locateFile ? r.locateFile(ge, d) : d + ge); + var we = { + 2390: function(e) { + const r = L(e); + Pe.mkdir(r), Pe.mount(Ae, {}, r), Pe.syncfs(!0, (e => {})) + }, + 2968: function() { + if ("function" != typeof URLSearchParams) return !1; + return "1" == new URLSearchParams(window.location.search).get("wafv") + }, + 3162: function() { + const e = window.location.origin + window.location.pathname.substr(0, window.location.pathname.lastIndexOf("/") + 1), + r = R(e) + 1, + t = Zr(r); + return B(e, t, r), t + }, + 3499: function() { + r.canvas.addEventListener("keydown", (e => { + r.keyboardModifierState = r.keyboardModifierState || {}, r.keyboardModifierState.NumLock = e.getModifierState("NumLock") + })), document.addEventListener("keydown", (e => { + r.keyboardModifierState = r.keyboardModifierState || {}, r.keyboardModifierState.NumLock = e.getModifierState("NumLock") + })) + }, + 3889: function() { + if ("function" != typeof URLSearchParams) return 0; + const e = new URLSearchParams(window.location.search).get("wafsrc"); + if (e) { + let r; + if (e.startsWith("http://") || e.startsWith("https://")) r = e; + else if ("/" == e[0]) r = window.location.origin + e; + else { + let t = window.location.pathname.substr(0, window.location.pathname.lastIndexOf("/") + 1); + r = window.location.origin + t + e + } + const t = R(r) + 1, + n = Zr(t); + return B(r, n, t), n + } + return 0 + }, + 4531: function() { + if ("function" != typeof URLSearchParams) return !1; + return "gpu" == new URLSearchParams(window.location.search).get("wafm") + }, + 4718: function() { + let e = r.canvas.id; + if (!e) return 0; + e = "#" + e; + const t = R(e) + 1, + n = Zr(t); + return B(e, n, t), n + }, + 5713: function() { + return !(!r.options || !r.options.useMouseWheel) + }, + 6655: function() { + return r.keyboardModifierState.NumLock + }, + 6704: function() { + const e = r.canvas.wafActiveInputText; + e && r.canvas.parentNode.removeChild(e), r.canvas.wafActiveInputText = null, r.canvas.focus() + }, + 6877: function(e, t) { + const n = r.canvas.wafActiveInputText; + n && (n.wafSelectionChangedByEngine = !0, n.wafSelectionStart = n.selectionStart = e, n.wafSelectionEnd = n.selectionEnd = t) + }, + 7073: function(e) { + const t = r.canvas.wafActiveInputText; + if (t) { + const r = L(e); + t.value != r && (t.value = r, t.wafSelectionStart = t.selectionStart = r.length, t.wafSelectionEnd = t.selectionEnd = r.length) + } + }, + 264563: function(e, t) { + return { + high: 2, + medium: 1, + low: 0 + } [r.options.quality] || t + }, + 886362: function(e) { + var r = L(e) + "\n\nAbort/Retry/Ignore/AlwaysIgnore? [ariA] :", + t = window.prompt(r, "i"); + return null === t && (t = "i"), + function(e, r, t, n) { + var i, a; + "number" == typeof e ? (i = !0, a = e) : (i = !1, a = e.length); + var o, u = "string" == typeof r ? r : null; + if (o = 3 == t ? n : [Zr, wt, v][t](Math.max(a, u ? 1 : r.length)), i) { + var s; + for (n = o, D(0 == (3 & o)), s = o + (-4 & a); n < s; n += 4) q[n >> 2] = 0; + for (s = o + a; n < s;) O[n++ >> 0] = 0; + return o + } + if ("i8" === u) return e.subarray || e.slice ? G.set(e, o) : G.set(new Uint8Array(e), o), o; + for (var c, l, f, d = 0; d < a;) { + var m = e[d]; + 0 !== (c = u || r[d]) ? ("i64" == c && (c = "i32"), k(o + d, m, c), f !== c && (l = g(c), f = c), d += l) : d++ + } + return o + }(Qr(t), "i8", 0) + }, + 922252: function(e, t, n) { + var i = e, + a = t, + o = n; + r.SDL2 || (r.SDL2 = {}); + var u = r.SDL2; + u.ctxCanvas !== r.canvas && (u.ctx = r.createContext(r.canvas, !1, !0), u.ctxCanvas = r.canvas), u.w === i && u.h === a && u.imageCtx === u.ctx || (u.image = u.ctx.createImageData(i, a), u.w = i, u.h = a, u.imageCtx = u.ctx); + var s, c = u.image.data, + l = o >> 2, + f = 0; + if ("undefined" != typeof CanvasPixelArray && c instanceof CanvasPixelArray) + for (s = c.length; f < s;) { + var d = q[l]; + c[f] = 255 & d, c[f + 1] = d >> 8 & 255, c[f + 2] = d >> 16 & 255, c[f + 3] = 255, l++, f += 4 + } else { + u.data32Data !== c && (u.data32 = new Int32Array(c.buffer), u.data8 = new Uint8Array(c.buffer)); + var m = u.data32; + s = m.length, m.set(q.subarray(l, l + s)); + var p = u.data8, + v = 3, + g = v + 4 * s; + if (s % 8 == 0) + for (; v < g;) p[v] = 255, p[v = v + 4 | 0] = 255, p[v = v + 4 | 0] = 255, p[v = v + 4 | 0] = 255, p[v = v + 4 | 0] = 255, p[v = v + 4 | 0] = 255, p[v = v + 4 | 0] = 255, p[v = v + 4 | 0] = 255, v = v + 4 | 0; + else + for (; v < g;) p[v] = 255, v = v + 4 | 0 + } + return u.ctx.putImageData(u.image, 0, 0), 0 + }, + 923731: function(e, r, t, n, i) { + var a = e, + o = r, + u = t, + s = n, + c = i, + l = document.createElement("canvas"); + l.width = a, l.height = o; + var f, d = l.getContext("2d"), + m = d.createImageData(a, o), + p = m.data, + v = c >> 2, + g = 0; + if ("undefined" != typeof CanvasPixelArray && p instanceof CanvasPixelArray) + for (f = p.length; g < f;) { + var h = q[v]; + p[g] = 255 & h, p[g + 1] = h >> 8 & 255, p[g + 2] = h >> 16 & 255, p[g + 3] = h >> 24 & 255, v++, g += 4 + } else { + var _ = new Int32Array(p.buffer); + f = _.length, _.set(q.subarray(v, v + f)) + } + d.putImageData(m, 0, 0); + var b = 0 === u && 0 === s ? "url(" + l.toDataURL() + "), auto" : "url(" + l.toDataURL() + ") " + u + " " + s + ", auto", + y = Zr(b.length + 1); + return B(b, y, b.length + 1), y + }, + 924720: function(e) { + return r.canvas && (r.canvas.style.cursor = L(e)), 0 + }, + 924813: function() { + r.canvas && (r.canvas.style.cursor = "none") + }, + 926038: function() { + return screen.width + }, + 926065: function() { + return screen.height + }, + 926093: function() { + return window.innerWidth + }, + 926125: function() { + return window.innerHeight + }, + 926203: function(e) { + return void 0 !== s && s(L(e)), 0 + }, + 926337: function() { + return "undefined" != typeof AudioContext || "undefined" != typeof webkitAudioContext ? 1 : 0 + }, + 926503: function() { + return void 0 !== navigator.mediaDevices && void 0 !== navigator.mediaDevices.getUserMedia || void 0 !== navigator.webkitGetUserMedia ? 1 : 0 + }, + 926729: function(e) { + void 0 === r.SDL2 && (r.SDL2 = {}); + var t = r.SDL2; + return e ? t.capture = {} : t.audio = {}, t.audioContext || ("undefined" != typeof AudioContext ? t.audioContext = new AudioContext : "undefined" != typeof webkitAudioContext && (t.audioContext = new webkitAudioContext)), void 0 === t.audioContext ? -1 : 0 + }, + 927212: function() { + return r.SDL2.audioContext.sampleRate + }, + 927282: function(e, t, n, i) { + var a = r.SDL2, + o = function(r) { + void 0 !== a.capture.silenceTimer && (clearTimeout(a.capture.silenceTimer), a.capture.silenceTimer = void 0), a.capture.mediaStreamNode = a.audioContext.createMediaStreamSource(r), a.capture.scriptProcessorNode = a.audioContext.createScriptProcessor(t, e, 1), a.capture.scriptProcessorNode.onaudioprocess = function(e) { + void 0 !== a && void 0 !== a.capture && (e.outputBuffer.getChannelData(0).fill(0), a.capture.currentCaptureBuffer = e.inputBuffer, _("vi", n, [i])) + }, a.capture.mediaStreamNode.connect(a.capture.scriptProcessorNode), a.capture.scriptProcessorNode.connect(a.audioContext.destination), a.capture.stream = r + }, + u = function(e) {}; + a.capture.silenceBuffer = a.audioContext.createBuffer(e, t, a.audioContext.sampleRate), a.capture.silenceBuffer.getChannelData(0).fill(0); + a.capture.silenceTimer = setTimeout((function() { + a.capture.currentCaptureBuffer = a.capture.silenceBuffer, _("vi", n, [i]) + }), t / a.audioContext.sampleRate * 1e3), void 0 !== navigator.mediaDevices && void 0 !== navigator.mediaDevices.getUserMedia ? navigator.mediaDevices.getUserMedia({ + audio: !0, + video: !1 + }).then(o).catch(u) : void 0 !== navigator.webkitGetUserMedia && navigator.webkitGetUserMedia({ + audio: !0, + video: !1 + }, o, u) + }, + 928934: function(e, t, n, i) { + var a = r.SDL2; + a.audio.scriptProcessorNode = a.audioContext.createScriptProcessor(t, 0, e), a.audio.scriptProcessorNode.onaudioprocess = function(e) { + void 0 !== a && void 0 !== a.audio && (a.audio.currentOutputBuffer = e.outputBuffer, _("vi", n, [i])) + }, a.audio.scriptProcessorNode.connect(a.audioContext.destination) + }, + 929344: function(e, t) { + for (var n = r.SDL2, i = n.capture.currentCaptureBuffer.numberOfChannels, a = 0; a < i; ++a) { + var o = n.capture.currentCaptureBuffer.getChannelData(a); + if (o.length != t) throw "Web Audio capture buffer length mismatch! Destination size: " + o.length + " samples vs expected " + t + " samples!"; + if (1 == i) + for (var u = 0; u < t; ++u) k(e + 4 * u, o[u], "float"); + else + for (u = 0; u < t; ++u) k(e + 4 * (u * i + a), o[u], "float") + } + }, + 929949: function(e, t) { + for (var n = r.SDL2, i = n.audio.currentOutputBuffer.numberOfChannels, a = 0; a < i; ++a) { + var o = n.audio.currentOutputBuffer.getChannelData(a); + if (o.length != t) throw "Web Audio output buffer length mismatch! Destination size: " + o.length + " samples vs expected " + t + " samples!"; + for (var u = 0; u < t; ++u) o[u] = V[e + (u * i + a << 2) >> 2] + } + }, + 930429: function(e) { + var t = r.SDL2; + if (e) { + if (void 0 !== t.capture.silenceTimer && clearTimeout(t.capture.silenceTimer), void 0 !== t.capture.stream) { + for (var n = t.capture.stream.getAudioTracks(), i = 0; i < n.length; i++) t.capture.stream.removeTrack(n[i]); + t.capture.stream = void 0 + } + void 0 !== t.capture.scriptProcessorNode && (t.capture.scriptProcessorNode.onaudioprocess = function(e) {}, t.capture.scriptProcessorNode.disconnect(), t.capture.scriptProcessorNode = void 0), void 0 !== t.capture.mediaStreamNode && (t.capture.mediaStreamNode.disconnect(), t.capture.mediaStreamNode = void 0), void 0 !== t.capture.silenceBuffer && (t.capture.silenceBuffer = void 0), t.capture = void 0 + } else null != t.audio.scriptProcessorNode && (t.audio.scriptProcessorNode.disconnect(), t.audio.scriptProcessorNode = void 0), t.audio = void 0; + void 0 !== t.audioContext && void 0 === t.audio && void 0 === t.capture && (t.audioContext.close(), t.audioContext = void 0) + } + }; + + function Ee() { + var e = new Error; + if (!e.stack) { + try { + throw new Error + } catch (r) { + e = r + } + if (!e.stack) return "(no stack trace available)" + } + return e.stack.toString() + } + + function xe(e) { + return q[$r() >> 2] = e, e + } + $.push({ + func: function() { + Wr() + } + }); + var ke, Ce = { + splitPath: function(e) { + return /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1) + }, + normalizeArray: function(e, r) { + for (var t = 0, n = e.length - 1; n >= 0; n--) { + var i = e[n]; + "." === i ? e.splice(n, 1) : ".." === i ? (e.splice(n, 1), t++) : t && (e.splice(n, 1), t--) + } + if (r) + for (; t; t--) e.unshift(".."); + return e + }, + normalize: function(e) { + var r = "/" === e.charAt(0), + t = "/" === e.substr(-1); + return (e = Ce.normalizeArray(e.split("/").filter((function(e) { + return !!e + })), !r).join("/")) || r || (e = "."), e && t && (e += "/"), (r ? "/" : "") + e + }, + dirname: function(e) { + var r = Ce.splitPath(e), + t = r[0], + n = r[1]; + return t || n ? (n && (n = n.substr(0, n.length - 1)), t + n) : "." + }, + basename: function(e) { + if ("/" === e) return "/"; + var r = e.lastIndexOf("/"); + return -1 === r ? e : e.substr(r + 1) + }, + extname: function(e) { + return Ce.splitPath(e)[3] + }, + join: function() { + var e = Array.prototype.slice.call(arguments, 0); + return Ce.normalize(e.join("/")) + }, + join2: function(e, r) { + return Ce.normalize(e + "/" + r) + } + }, + Se = { + resolve: function() { + for (var e = "", r = !1, t = arguments.length - 1; t >= -1 && !r; t--) { + var n = t >= 0 ? arguments[t] : Pe.cwd(); + if ("string" != typeof n) throw new TypeError("Arguments to path.resolve must be strings"); + if (!n) return ""; + e = n + "/" + e, r = "/" === n.charAt(0) + } + return (r ? "/" : "") + (e = Ce.normalizeArray(e.split("/").filter((function(e) { + return !!e + })), !r).join("/")) || "." + }, + relative: function(e, r) { + function t(e) { + for (var r = 0; r < e.length && "" === e[r]; r++); + for (var t = e.length - 1; t >= 0 && "" === e[t]; t--); + return r > t ? [] : e.slice(r, t - r + 1) + } + e = Se.resolve(e).substr(1), r = Se.resolve(r).substr(1); + for (var n = t(e.split("/")), i = t(r.split("/")), a = Math.min(n.length, i.length), o = a, u = 0; u < a; u++) + if (n[u] !== i[u]) { + o = u; + break + } var s = []; + for (u = o; u < n.length; u++) s.push(".."); + return (s = s.concat(i.slice(o))).join("/") + } + }, + De = { + ttys: [], + init: function() {}, + shutdown: function() {}, + register: function(e, r) { + De.ttys[e] = { + input: [], + output: [], + ops: r + }, Pe.registerDevice(e, De.stream_ops) + }, + stream_ops: { + open: function(e) { + var r = De.ttys[e.node.rdev]; + if (!r) throw new Pe.ErrnoError(43); + e.tty = r, e.seekable = !1 + }, + close: function(e) { + e.tty.ops.flush(e.tty) + }, + flush: function(e) { + e.tty.ops.flush(e.tty) + }, + read: function(e, r, t, n, i) { + if (!e.tty || !e.tty.ops.get_char) throw new Pe.ErrnoError(60); + for (var a = 0, o = 0; o < n; o++) { + var u; + try { + u = e.tty.ops.get_char(e.tty) + } catch (e) { + throw new Pe.ErrnoError(29) + } + if (void 0 === u && 0 === a) throw new Pe.ErrnoError(6); + if (null == u) break; + a++, r[t + o] = u + } + return a && (e.node.timestamp = Date.now()), a + }, + write: function(e, r, t, n, i) { + if (!e.tty || !e.tty.ops.put_char) throw new Pe.ErrnoError(60); + try { + for (var a = 0; a < n; a++) e.tty.ops.put_char(e.tty, r[t + a]) + } catch (e) { + throw new Pe.ErrnoError(29) + } + return n && (e.node.timestamp = Date.now()), a + } + }, + default_tty_ops: { + get_char: function(e) { + if (!e.input.length) { + var r = null; + if ("undefined" != typeof window && "function" == typeof window.prompt ? null !== (r = window.prompt("Input: ")) && (r += "\n") : "function" == typeof readline && null !== (r = readline()) && (r += "\n"), !r) return null; + e.input = Qr(r, !0) + } + return e.input.shift() + }, + put_char: function(e, r) { + null === r || 10 === r ? (m(T(e.output, 0)), e.output = []) : 0 != r && e.output.push(r) + }, + flush: function(e) { + e.output && e.output.length > 0 && (m(T(e.output, 0)), e.output = []) + } + }, + default_tty1_ops: { + put_char: function(e, r) { + null === r || 10 === r ? (p(T(e.output, 0)), e.output = []) : 0 != r && e.output.push(r) + }, + flush: function(e) { + e.output && e.output.length > 0 && (p(T(e.output, 0)), e.output = []) + } + } + }, + Fe = { + ops_table: null, + mount: function(e) { + return Fe.createNode(null, "/", 16895, 0) + }, + createNode: function(e, r, t, n) { + if (Pe.isBlkdev(t) || Pe.isFIFO(t)) throw new Pe.ErrnoError(63); + Fe.ops_table || (Fe.ops_table = { + dir: { + node: { + getattr: Fe.node_ops.getattr, + setattr: Fe.node_ops.setattr, + lookup: Fe.node_ops.lookup, + mknod: Fe.node_ops.mknod, + rename: Fe.node_ops.rename, + unlink: Fe.node_ops.unlink, + rmdir: Fe.node_ops.rmdir, + readdir: Fe.node_ops.readdir, + symlink: Fe.node_ops.symlink + }, + stream: { + llseek: Fe.stream_ops.llseek + } + }, + file: { + node: { + getattr: Fe.node_ops.getattr, + setattr: Fe.node_ops.setattr + }, + stream: { + llseek: Fe.stream_ops.llseek, + read: Fe.stream_ops.read, + write: Fe.stream_ops.write, + allocate: Fe.stream_ops.allocate, + mmap: Fe.stream_ops.mmap, + msync: Fe.stream_ops.msync + } + }, + link: { + node: { + getattr: Fe.node_ops.getattr, + setattr: Fe.node_ops.setattr, + readlink: Fe.node_ops.readlink + }, + stream: {} + }, + chrdev: { + node: { + getattr: Fe.node_ops.getattr, + setattr: Fe.node_ops.setattr + }, + stream: Pe.chrdev_stream_ops + } + }); + var i = Pe.createNode(e, r, t, n); + return Pe.isDir(i.mode) ? (i.node_ops = Fe.ops_table.dir.node, i.stream_ops = Fe.ops_table.dir.stream, i.contents = {}) : Pe.isFile(i.mode) ? (i.node_ops = Fe.ops_table.file.node, i.stream_ops = Fe.ops_table.file.stream, i.usedBytes = 0, i.contents = null) : Pe.isLink(i.mode) ? (i.node_ops = Fe.ops_table.link.node, i.stream_ops = Fe.ops_table.link.stream) : Pe.isChrdev(i.mode) && (i.node_ops = Fe.ops_table.chrdev.node, i.stream_ops = Fe.ops_table.chrdev.stream), i.timestamp = Date.now(), e && (e.contents[r] = i), i + }, + getFileDataAsRegularArray: function(e) { + if (e.contents && e.contents.subarray) { + for (var r = [], t = 0; t < e.usedBytes; ++t) r.push(e.contents[t]); + return r + } + return e.contents + }, + getFileDataAsTypedArray: function(e) { + return e.contents ? e.contents.subarray ? e.contents.subarray(0, e.usedBytes) : new Uint8Array(e.contents) : new Uint8Array(0) + }, + expandFileStorage: function(e, r) { + var t = e.contents ? e.contents.length : 0; + if (!(t >= r)) { + r = Math.max(r, t * (t < 1048576 ? 2 : 1.125) >>> 0), 0 != t && (r = Math.max(r, 256)); + var n = e.contents; + e.contents = new Uint8Array(r), e.usedBytes > 0 && e.contents.set(n.subarray(0, e.usedBytes), 0) + } + }, + resizeFileStorage: function(e, r) { + if (e.usedBytes != r) { + if (0 == r) return e.contents = null, void(e.usedBytes = 0); + if (!e.contents || e.contents.subarray) { + var t = e.contents; + return e.contents = new Uint8Array(r), t && e.contents.set(t.subarray(0, Math.min(r, e.usedBytes))), void(e.usedBytes = r) + } + if (e.contents || (e.contents = []), e.contents.length > r) e.contents.length = r; + else + for (; e.contents.length < r;) e.contents.push(0); + e.usedBytes = r + } + }, + node_ops: { + getattr: function(e) { + var r = {}; + return r.dev = Pe.isChrdev(e.mode) ? e.id : 1, r.ino = e.id, r.mode = e.mode, r.nlink = 1, r.uid = 0, r.gid = 0, r.rdev = e.rdev, Pe.isDir(e.mode) ? r.size = 4096 : Pe.isFile(e.mode) ? r.size = e.usedBytes : Pe.isLink(e.mode) ? r.size = e.link.length : r.size = 0, r.atime = new Date(e.timestamp), r.mtime = new Date(e.timestamp), r.ctime = new Date(e.timestamp), r.blksize = 4096, r.blocks = Math.ceil(r.size / r.blksize), r + }, + setattr: function(e, r) { + void 0 !== r.mode && (e.mode = r.mode), void 0 !== r.timestamp && (e.timestamp = r.timestamp), void 0 !== r.size && Fe.resizeFileStorage(e, r.size) + }, + lookup: function(e, r) { + throw Pe.genericErrors[44] + }, + mknod: function(e, r, t, n) { + return Fe.createNode(e, r, t, n) + }, + rename: function(e, r, t) { + if (Pe.isDir(e.mode)) { + var n; + try { + n = Pe.lookupNode(r, t) + } catch (e) {} + if (n) + for (var i in n.contents) throw new Pe.ErrnoError(55) + } + delete e.parent.contents[e.name], e.name = t, r.contents[t] = e, e.parent = r + }, + unlink: function(e, r) { + delete e.contents[r] + }, + rmdir: function(e, r) { + var t = Pe.lookupNode(e, r); + for (var n in t.contents) throw new Pe.ErrnoError(55); + delete e.contents[r] + }, + readdir: function(e) { + var r = [".", ".."]; + for (var t in e.contents) e.contents.hasOwnProperty(t) && r.push(t); + return r + }, + symlink: function(e, r, t) { + var n = Fe.createNode(e, r, 41471, 0); + return n.link = t, n + }, + readlink: function(e) { + if (!Pe.isLink(e.mode)) throw new Pe.ErrnoError(28); + return e.link + } + }, + stream_ops: { + read: function(e, r, t, n, i) { + var a = e.node.contents; + if (i >= e.node.usedBytes) return 0; + var o = Math.min(e.node.usedBytes - i, n); + if (o > 8 && a.subarray) r.set(a.subarray(i, i + o), t); + else + for (var u = 0; u < o; u++) r[t + u] = a[i + u]; + return o + }, + write: function(e, r, t, n, i, a) { + if (r.buffer === O.buffer && (a = !1), !n) return 0; + var o = e.node; + if (o.timestamp = Date.now(), r.subarray && (!o.contents || o.contents.subarray)) { + if (a) return o.contents = r.subarray(t, t + n), o.usedBytes = n, n; + if (0 === o.usedBytes && 0 === i) return o.contents = r.slice(t, t + n), o.usedBytes = n, n; + if (i + n <= o.usedBytes) return o.contents.set(r.subarray(t, t + n), i), n + } + if (Fe.expandFileStorage(o, i + n), o.contents.subarray && r.subarray) o.contents.set(r.subarray(t, t + n), i); + else + for (var u = 0; u < n; u++) o.contents[i + u] = r[t + u]; + return o.usedBytes = Math.max(o.usedBytes, i + n), n + }, + llseek: function(e, r, t) { + var n = r; + if (1 === t ? n += e.position : 2 === t && Pe.isFile(e.node.mode) && (n += e.node.usedBytes), n < 0) throw new Pe.ErrnoError(28); + return n + }, + allocate: function(e, r, t) { + Fe.expandFileStorage(e.node, r + t), e.node.usedBytes = Math.max(e.node.usedBytes, r + t) + }, + mmap: function(e, r, t, n, i, a, o) { + if (!Pe.isFile(e.node.mode)) throw new Pe.ErrnoError(43); + var u, s, c = e.node.contents; + if (2 & o || c.buffer !== r.buffer) { + (i > 0 || i + n < c.length) && (c = c.subarray ? c.subarray(i, i + n) : Array.prototype.slice.call(c, i, i + n)), s = !0; + var l = r.buffer == O.buffer; + if (!(u = Zr(n))) throw new Pe.ErrnoError(48); + (l ? O : r).set(c, u) + } else s = !1, u = c.byteOffset; + return { + ptr: u, + allocated: s + } + }, + msync: function(e, r, t, n, i) { + if (!Pe.isFile(e.node.mode)) throw new Pe.ErrnoError(43); + if (2 & i) return 0; + Fe.stream_ops.write(e, r, 0, n, t, !1); + return 0 + } + } + }, + Ae = { + dbs: {}, + indexedDB: function() { + if ("undefined" != typeof indexedDB) return indexedDB; + var e = null; + return "object" == typeof window && (e = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB), D(e, "IDBFS used, but indexedDB not supported"), e + }, + DB_VERSION: 21, + DB_STORE_NAME: "FILE_DATA", + mount: function(e) { + return Fe.mount.apply(null, arguments) + }, + syncfs: function(e, r, t) { + Ae.getLocalSet(e, (function(n, i) { + if (n) return t(n); + Ae.getRemoteSet(e, (function(e, n) { + if (e) return t(e); + var a = r ? n : i, + o = r ? i : n; + Ae.reconcile(a, o, t) + })) + })) + }, + getDB: function(e, r) { + var t, n = Ae.dbs[e]; + if (n) return r(null, n); + try { + t = Ae.indexedDB().open(e, Ae.DB_VERSION) + } catch (e) { + return r(e) + } + if (!t) return r("Unable to connect to IndexedDB"); + t.onupgradeneeded = function(e) { + var r, t = e.target.result, + n = e.target.transaction; + (r = t.objectStoreNames.contains(Ae.DB_STORE_NAME) ? n.objectStore(Ae.DB_STORE_NAME) : t.createObjectStore(Ae.DB_STORE_NAME)).indexNames.contains("timestamp") || r.createIndex("timestamp", "timestamp", { + unique: !1 + }) + }, t.onsuccess = function() { + n = t.result, Ae.dbs[e] = n, r(null, n) + }, t.onerror = function(e) { + r(this.error), e.preventDefault() + } + }, + getLocalSet: function(e, r) { + var t = {}; + + function n(e) { + return "." !== e && ".." !== e + } + + function i(e) { + return function(r) { + return Ce.join2(e, r) + } + } + for (var a = Pe.readdir(e.mountpoint).filter(n).map(i(e.mountpoint)); a.length;) { + var o, u = a.pop(); + try { + o = Pe.stat(u) + } catch (e) { + return r(e) + } + Pe.isDir(o.mode) && a.push.apply(a, Pe.readdir(u).filter(n).map(i(u))), t[u] = { + timestamp: o.mtime + } + } + return r(null, { + type: "local", + entries: t + }) + }, + getRemoteSet: function(e, r) { + var t = {}; + Ae.getDB(e.mountpoint, (function(e, n) { + if (e) return r(e); + try { + var i = n.transaction([Ae.DB_STORE_NAME], "readonly"); + i.onerror = function(e) { + r(this.error), e.preventDefault() + }, i.objectStore(Ae.DB_STORE_NAME).index("timestamp").openKeyCursor().onsuccess = function(e) { + var i = e.target.result; + if (!i) return r(null, { + type: "remote", + db: n, + entries: t + }); + t[i.primaryKey] = { + timestamp: i.key + }, i.continue() + } + } catch (e) { + return r(e) + } + })) + }, + loadLocalEntry: function(e, r) { + var t, n; + try { + n = Pe.lookupPath(e).node, t = Pe.stat(e) + } catch (e) { + return r(e) + } + return Pe.isDir(t.mode) ? r(null, { + timestamp: t.mtime, + mode: t.mode + }) : Pe.isFile(t.mode) ? (n.contents = Fe.getFileDataAsTypedArray(n), r(null, { + timestamp: t.mtime, + mode: t.mode, + contents: n.contents + })) : r(new Error("node type not supported")) + }, + storeLocalEntry: function(e, r, t) { + try { + if (Pe.isDir(r.mode)) Pe.mkdir(e, r.mode); + else { + if (!Pe.isFile(r.mode)) return t(new Error("node type not supported")); + Pe.writeFile(e, r.contents, { + canOwn: !0 + }) + } + Pe.chmod(e, r.mode), Pe.utime(e, r.timestamp, r.timestamp) + } catch (e) { + return t(e) + } + t(null) + }, + removeLocalEntry: function(e, r) { + try { + Pe.lookupPath(e); + var t = Pe.stat(e); + Pe.isDir(t.mode) ? Pe.rmdir(e) : Pe.isFile(t.mode) && Pe.unlink(e) + } catch (e) { + return r(e) + } + r(null) + }, + loadRemoteEntry: function(e, r, t) { + var n = e.get(r); + n.onsuccess = function(e) { + t(null, e.target.result) + }, n.onerror = function(e) { + t(this.error), e.preventDefault() + } + }, + storeRemoteEntry: function(e, r, t, n) { + var i = e.put(t, r); + i.onsuccess = function() { + n(null) + }, i.onerror = function(e) { + n(this.error), e.preventDefault() + } + }, + removeRemoteEntry: function(e, r, t) { + var n = e.delete(r); + n.onsuccess = function() { + t(null) + }, n.onerror = function(e) { + t(this.error), e.preventDefault() + } + }, + reconcile: function(e, r, t) { + var n = 0, + i = []; + Object.keys(e.entries).forEach((function(t) { + var a = e.entries[t], + o = r.entries[t]; + (!o || a.timestamp > o.timestamp) && (i.push(t), n++) + })); + var a = []; + if (Object.keys(r.entries).forEach((function(t) { + r.entries[t]; + e.entries[t] || (a.push(t), n++) + })), !n) return t(null); + var o = !1, + u = ("remote" === e.type ? e.db : r.db).transaction([Ae.DB_STORE_NAME], "readwrite"), + s = u.objectStore(Ae.DB_STORE_NAME); + + function c(e) { + if (e && !o) return o = !0, t(e) + } + u.onerror = function(e) { + c(this.error), e.preventDefault() + }, u.oncomplete = function(e) { + o || t(null) + }, i.sort().forEach((function(e) { + "local" === r.type ? Ae.loadRemoteEntry(s, e, (function(r, t) { + if (r) return c(r); + Ae.storeLocalEntry(e, t, c) + })) : Ae.loadLocalEntry(e, (function(r, t) { + if (r) return c(r); + Ae.storeRemoteEntry(s, e, t, c) + })) + })), a.sort().reverse().forEach((function(e) { + "local" === r.type ? Ae.removeLocalEntry(e, c) : Ae.removeRemoteEntry(s, e, c) + })) + } + }, + Pe = { + root: null, + mounts: [], + devices: {}, + streams: [], + nextInode: 1, + nameTable: null, + currentPath: "/", + initialized: !1, + ignorePermissions: !0, + trackingDelegate: {}, + tracking: { + openFlags: { + READ: 1, + WRITE: 2 + } + }, + ErrnoError: null, + genericErrors: {}, + filesystems: null, + syncFSRequests: 0, + handleFSError: function(e) { + if (!(e instanceof Pe.ErrnoError)) throw e + " : " + (t = Ee(), r.extraStackTrace && (t += "\n" + r.extraStackTrace()), t.replace(/\b_Z[\w\d_]+/g, (function(e) { + return e == e ? e : e + " [" + e + "]" + }))); + var t; + return xe(e.errno) + }, + lookupPath: function(e, r) { + if (r = r || {}, !(e = Se.resolve(Pe.cwd(), e))) return { + path: "", + node: null + }; + var t = { + follow_mount: !0, + recurse_count: 0 + }; + for (var n in t) void 0 === r[n] && (r[n] = t[n]); + if (r.recurse_count > 8) throw new Pe.ErrnoError(32); + for (var i = Ce.normalizeArray(e.split("/").filter((function(e) { + return !!e + })), !1), a = Pe.root, o = "/", u = 0; u < i.length; u++) { + var s = u === i.length - 1; + if (s && r.parent) break; + if (a = Pe.lookupNode(a, i[u]), o = Ce.join2(o, i[u]), Pe.isMountpoint(a) && (!s || s && r.follow_mount) && (a = a.mounted.root), !s || r.follow) + for (var c = 0; Pe.isLink(a.mode);) { + var l = Pe.readlink(o); + if (o = Se.resolve(Ce.dirname(o), l), a = Pe.lookupPath(o, { + recurse_count: r.recurse_count + }).node, c++ > 40) throw new Pe.ErrnoError(32) + } + } + return { + path: o, + node: a + } + }, + getPath: function(e) { + for (var r;;) { + if (Pe.isRoot(e)) { + var t = e.mount.mountpoint; + return r ? "/" !== t[t.length - 1] ? t + "/" + r : t + r : t + } + r = r ? e.name + "/" + r : e.name, e = e.parent + } + }, + hashName: function(e, r) { + for (var t = 0, n = 0; n < r.length; n++) t = (t << 5) - t + r.charCodeAt(n) | 0; + return (e + t >>> 0) % Pe.nameTable.length + }, + hashAddNode: function(e) { + var r = Pe.hashName(e.parent.id, e.name); + e.name_next = Pe.nameTable[r], Pe.nameTable[r] = e + }, + hashRemoveNode: function(e) { + var r = Pe.hashName(e.parent.id, e.name); + if (Pe.nameTable[r] === e) Pe.nameTable[r] = e.name_next; + else + for (var t = Pe.nameTable[r]; t;) { + if (t.name_next === e) { + t.name_next = e.name_next; + break + } + t = t.name_next + } + }, + lookupNode: function(e, r) { + var t = Pe.mayLookup(e); + if (t) throw new Pe.ErrnoError(t, e); + for (var n = Pe.hashName(e.id, r), i = Pe.nameTable[n]; i; i = i.name_next) { + var a = i.name; + if (i.parent.id === e.id && a === r) return i + } + return Pe.lookup(e, r) + }, + createNode: function(e, r, t, n) { + var i = new Pe.FSNode(e, r, t, n); + return Pe.hashAddNode(i), i + }, + destroyNode: function(e) { + Pe.hashRemoveNode(e) + }, + isRoot: function(e) { + return e === e.parent + }, + isMountpoint: function(e) { + return !!e.mounted + }, + isFile: function(e) { + return 32768 == (61440 & e) + }, + isDir: function(e) { + return 16384 == (61440 & e) + }, + isLink: function(e) { + return 40960 == (61440 & e) + }, + isChrdev: function(e) { + return 8192 == (61440 & e) + }, + isBlkdev: function(e) { + return 24576 == (61440 & e) + }, + isFIFO: function(e) { + return 4096 == (61440 & e) + }, + isSocket: function(e) { + return 49152 == (49152 & e) + }, + flagModes: { + r: 0, + rs: 1052672, + "r+": 2, + w: 577, + wx: 705, + xw: 705, + "w+": 578, + "wx+": 706, + "xw+": 706, + a: 1089, + ax: 1217, + xa: 1217, + "a+": 1090, + "ax+": 1218, + "xa+": 1218 + }, + modeStringToFlags: function(e) { + var r = Pe.flagModes[e]; + if (void 0 === r) throw new Error("Unknown file open mode: " + e); + return r + }, + flagsToPermissionString: function(e) { + var r = ["r", "w", "rw"][3 & e]; + return 512 & e && (r += "w"), r + }, + nodePermissions: function(e, r) { + return Pe.ignorePermissions || (-1 === r.indexOf("r") || 292 & e.mode) && (-1 === r.indexOf("w") || 146 & e.mode) && (-1 === r.indexOf("x") || 73 & e.mode) ? 0 : 2 + }, + mayLookup: function(e) { + var r = Pe.nodePermissions(e, "x"); + return r || (e.node_ops.lookup ? 0 : 2) + }, + mayCreate: function(e, r) { + try { + Pe.lookupNode(e, r); + return 20 + } catch (e) {} + return Pe.nodePermissions(e, "wx") + }, + mayDelete: function(e, r, t) { + var n; + try { + n = Pe.lookupNode(e, r) + } catch (e) { + return e.errno + } + var i = Pe.nodePermissions(e, "wx"); + if (i) return i; + if (t) { + if (!Pe.isDir(n.mode)) return 54; + if (Pe.isRoot(n) || Pe.getPath(n) === Pe.cwd()) return 10 + } else if (Pe.isDir(n.mode)) return 31; + return 0 + }, + mayOpen: function(e, r) { + return e ? Pe.isLink(e.mode) ? 32 : Pe.isDir(e.mode) && ("r" !== Pe.flagsToPermissionString(r) || 512 & r) ? 31 : Pe.nodePermissions(e, Pe.flagsToPermissionString(r)) : 44 + }, + MAX_OPEN_FDS: 4096, + nextfd: function(e, r) { + e = e || 0, r = r || Pe.MAX_OPEN_FDS; + for (var t = e; t <= r; t++) + if (!Pe.streams[t]) return t; + throw new Pe.ErrnoError(33) + }, + getStream: function(e) { + return Pe.streams[e] + }, + createStream: function(e, r, t) { + Pe.FSStream || (Pe.FSStream = function() {}, Pe.FSStream.prototype = { + object: { + get: function() { + return this.node + }, + set: function(e) { + this.node = e + } + }, + isRead: { + get: function() { + return 1 != (2097155 & this.flags) + } + }, + isWrite: { + get: function() { + return 0 != (2097155 & this.flags) + } + }, + isAppend: { + get: function() { + return 1024 & this.flags + } + } + }); + var n = new Pe.FSStream; + for (var i in e) n[i] = e[i]; + e = n; + var a = Pe.nextfd(r, t); + return e.fd = a, Pe.streams[a] = e, e + }, + closeStream: function(e) { + Pe.streams[e] = null + }, + chrdev_stream_ops: { + open: function(e) { + var r = Pe.getDevice(e.node.rdev); + e.stream_ops = r.stream_ops, e.stream_ops.open && e.stream_ops.open(e) + }, + llseek: function() { + throw new Pe.ErrnoError(70) + } + }, + major: function(e) { + return e >> 8 + }, + minor: function(e) { + return 255 & e + }, + makedev: function(e, r) { + return e << 8 | r + }, + registerDevice: function(e, r) { + Pe.devices[e] = { + stream_ops: r + } + }, + getDevice: function(e) { + return Pe.devices[e] + }, + getMounts: function(e) { + for (var r = [], t = [e]; t.length;) { + var n = t.pop(); + r.push(n), t.push.apply(t, n.mounts) + } + return r + }, + syncfs: function(e, r) { + "function" == typeof e && (r = e, e = !1), Pe.syncFSRequests++, Pe.syncFSRequests > 1 && p("warning: " + Pe.syncFSRequests + " FS.syncfs operations in flight at once, probably just doing extra work"); + var t = Pe.getMounts(Pe.root.mount), + n = 0; + + function i(e) { + return Pe.syncFSRequests--, r(e) + } + + function a(e) { + if (e) return a.errored ? void 0 : (a.errored = !0, i(e)); + ++n >= t.length && i(null) + } + t.forEach((function(r) { + if (!r.type.syncfs) return a(null); + r.type.syncfs(r, e, a) + })) + }, + mount: function(e, r, t) { + var n, i = "/" === t, + a = !t; + if (i && Pe.root) throw new Pe.ErrnoError(10); + if (!i && !a) { + var o = Pe.lookupPath(t, { + follow_mount: !1 + }); + if (t = o.path, n = o.node, Pe.isMountpoint(n)) throw new Pe.ErrnoError(10); + if (!Pe.isDir(n.mode)) throw new Pe.ErrnoError(54) + } + var u = { + type: e, + opts: r, + mountpoint: t, + mounts: [] + }, + s = e.mount(u); + return s.mount = u, u.root = s, i ? Pe.root = s : n && (n.mounted = u, n.mount && n.mount.mounts.push(u)), s + }, + unmount: function(e) { + var r = Pe.lookupPath(e, { + follow_mount: !1 + }); + if (!Pe.isMountpoint(r.node)) throw new Pe.ErrnoError(28); + var t = r.node, + n = t.mounted, + i = Pe.getMounts(n); + Object.keys(Pe.nameTable).forEach((function(e) { + for (var r = Pe.nameTable[e]; r;) { + var t = r.name_next; - 1 !== i.indexOf(r.mount) && Pe.destroyNode(r), r = t + } + })), t.mounted = null; + var a = t.mount.mounts.indexOf(n); + t.mount.mounts.splice(a, 1) + }, + lookup: function(e, r) { + return e.node_ops.lookup(e, r) + }, + mknod: function(e, r, t) { + var n = Pe.lookupPath(e, { + parent: !0 + }).node, + i = Ce.basename(e); + if (!i || "." === i || ".." === i) throw new Pe.ErrnoError(28); + var a = Pe.mayCreate(n, i); + if (a) throw new Pe.ErrnoError(a); + if (!n.node_ops.mknod) throw new Pe.ErrnoError(63); + return n.node_ops.mknod(n, i, r, t) + }, + create: function(e, r) { + return r = void 0 !== r ? r : 438, r &= 4095, r |= 32768, Pe.mknod(e, r, 0) + }, + mkdir: function(e, r) { + return r = void 0 !== r ? r : 511, r &= 1023, r |= 16384, Pe.mknod(e, r, 0) + }, + mkdirTree: function(e, r) { + for (var t = e.split("/"), n = "", i = 0; i < t.length; ++i) + if (t[i]) { + n += "/" + t[i]; + try { + Pe.mkdir(n, r) + } catch (e) { + if (20 != e.errno) throw e + } + } + }, + mkdev: function(e, r, t) { + return void 0 === t && (t = r, r = 438), r |= 8192, Pe.mknod(e, r, t) + }, + symlink: function(e, r) { + if (!Se.resolve(e)) throw new Pe.ErrnoError(44); + var t = Pe.lookupPath(r, { + parent: !0 + }).node; + if (!t) throw new Pe.ErrnoError(44); + var n = Ce.basename(r), + i = Pe.mayCreate(t, n); + if (i) throw new Pe.ErrnoError(i); + if (!t.node_ops.symlink) throw new Pe.ErrnoError(63); + return t.node_ops.symlink(t, n, e) + }, + rename: function(e, r) { + var t, n, i = Ce.dirname(e), + a = Ce.dirname(r), + o = Ce.basename(e), + u = Ce.basename(r); + try { + t = Pe.lookupPath(e, { + parent: !0 + }).node, n = Pe.lookupPath(r, { + parent: !0 + }).node + } catch (e) { + throw new Pe.ErrnoError(10) + } + if (!t || !n) throw new Pe.ErrnoError(44); + if (t.mount !== n.mount) throw new Pe.ErrnoError(75); + var s, c = Pe.lookupNode(t, o), + l = Se.relative(e, a); + if ("." !== l.charAt(0)) throw new Pe.ErrnoError(28); + if ("." !== (l = Se.relative(r, i)).charAt(0)) throw new Pe.ErrnoError(55); + try { + s = Pe.lookupNode(n, u) + } catch (e) {} + if (c !== s) { + var f = Pe.isDir(c.mode), + d = Pe.mayDelete(t, o, f); + if (d) throw new Pe.ErrnoError(d); + if (d = s ? Pe.mayDelete(n, u, f) : Pe.mayCreate(n, u)) throw new Pe.ErrnoError(d); + if (!t.node_ops.rename) throw new Pe.ErrnoError(63); + if (Pe.isMountpoint(c) || s && Pe.isMountpoint(s)) throw new Pe.ErrnoError(10); + if (n !== t && (d = Pe.nodePermissions(t, "w"))) throw new Pe.ErrnoError(d); + try { + Pe.trackingDelegate.willMovePath && Pe.trackingDelegate.willMovePath(e, r) + } catch (t) { + p("FS.trackingDelegate['willMovePath']('" + e + "', '" + r + "') threw an exception: " + t.message) + } + Pe.hashRemoveNode(c); + try { + t.node_ops.rename(c, n, u) + } catch (e) { + throw e + } finally { + Pe.hashAddNode(c) + } + try { + Pe.trackingDelegate.onMovePath && Pe.trackingDelegate.onMovePath(e, r) + } catch (t) { + p("FS.trackingDelegate['onMovePath']('" + e + "', '" + r + "') threw an exception: " + t.message) + } + } + }, + rmdir: function(e) { + var r = Pe.lookupPath(e, { + parent: !0 + }).node, + t = Ce.basename(e), + n = Pe.lookupNode(r, t), + i = Pe.mayDelete(r, t, !0); + if (i) throw new Pe.ErrnoError(i); + if (!r.node_ops.rmdir) throw new Pe.ErrnoError(63); + if (Pe.isMountpoint(n)) throw new Pe.ErrnoError(10); + try { + Pe.trackingDelegate.willDeletePath && Pe.trackingDelegate.willDeletePath(e) + } catch (r) { + p("FS.trackingDelegate['willDeletePath']('" + e + "') threw an exception: " + r.message) + } + r.node_ops.rmdir(r, t), Pe.destroyNode(n); + try { + Pe.trackingDelegate.onDeletePath && Pe.trackingDelegate.onDeletePath(e) + } catch (r) { + p("FS.trackingDelegate['onDeletePath']('" + e + "') threw an exception: " + r.message) + } + }, + readdir: function(e) { + var r = Pe.lookupPath(e, { + follow: !0 + }).node; + if (!r.node_ops.readdir) throw new Pe.ErrnoError(54); + return r.node_ops.readdir(r) + }, + unlink: function(e) { + var r = Pe.lookupPath(e, { + parent: !0 + }).node, + t = Ce.basename(e), + n = Pe.lookupNode(r, t), + i = Pe.mayDelete(r, t, !1); + if (i) throw new Pe.ErrnoError(i); + if (!r.node_ops.unlink) throw new Pe.ErrnoError(63); + if (Pe.isMountpoint(n)) throw new Pe.ErrnoError(10); + try { + Pe.trackingDelegate.willDeletePath && Pe.trackingDelegate.willDeletePath(e) + } catch (r) { + p("FS.trackingDelegate['willDeletePath']('" + e + "') threw an exception: " + r.message) + } + r.node_ops.unlink(r, t), Pe.destroyNode(n); + try { + Pe.trackingDelegate.onDeletePath && Pe.trackingDelegate.onDeletePath(e) + } catch (r) { + p("FS.trackingDelegate['onDeletePath']('" + e + "') threw an exception: " + r.message) + } + }, + readlink: function(e) { + var r = Pe.lookupPath(e).node; + if (!r) throw new Pe.ErrnoError(44); + if (!r.node_ops.readlink) throw new Pe.ErrnoError(28); + return Se.resolve(Pe.getPath(r.parent), r.node_ops.readlink(r)) + }, + stat: function(e, r) { + var t = Pe.lookupPath(e, { + follow: !r + }).node; + if (!t) throw new Pe.ErrnoError(44); + if (!t.node_ops.getattr) throw new Pe.ErrnoError(63); + return t.node_ops.getattr(t) + }, + lstat: function(e) { + return Pe.stat(e, !0) + }, + chmod: function(e, r, t) { + var n; + "string" == typeof e ? n = Pe.lookupPath(e, { + follow: !t + }).node : n = e; + if (!n.node_ops.setattr) throw new Pe.ErrnoError(63); + n.node_ops.setattr(n, { + mode: 4095 & r | -4096 & n.mode, + timestamp: Date.now() + }) + }, + lchmod: function(e, r) { + Pe.chmod(e, r, !0) + }, + fchmod: function(e, r) { + var t = Pe.getStream(e); + if (!t) throw new Pe.ErrnoError(8); + Pe.chmod(t.node, r) + }, + chown: function(e, r, t, n) { + var i; + "string" == typeof e ? i = Pe.lookupPath(e, { + follow: !n + }).node : i = e; + if (!i.node_ops.setattr) throw new Pe.ErrnoError(63); + i.node_ops.setattr(i, { + timestamp: Date.now() + }) + }, + lchown: function(e, r, t) { + Pe.chown(e, r, t, !0) + }, + fchown: function(e, r, t) { + var n = Pe.getStream(e); + if (!n) throw new Pe.ErrnoError(8); + Pe.chown(n.node, r, t) + }, + truncate: function(e, r) { + if (r < 0) throw new Pe.ErrnoError(28); + var t; + "string" == typeof e ? t = Pe.lookupPath(e, { + follow: !0 + }).node : t = e; + if (!t.node_ops.setattr) throw new Pe.ErrnoError(63); + if (Pe.isDir(t.mode)) throw new Pe.ErrnoError(31); + if (!Pe.isFile(t.mode)) throw new Pe.ErrnoError(28); + var n = Pe.nodePermissions(t, "w"); + if (n) throw new Pe.ErrnoError(n); + t.node_ops.setattr(t, { + size: r, + timestamp: Date.now() + }) + }, + ftruncate: function(e, r) { + var t = Pe.getStream(e); + if (!t) throw new Pe.ErrnoError(8); + if (0 == (2097155 & t.flags)) throw new Pe.ErrnoError(28); + Pe.truncate(t.node, r) + }, + utime: function(e, r, t) { + var n = Pe.lookupPath(e, { + follow: !0 + }).node; + n.node_ops.setattr(n, { + timestamp: Math.max(r, t) + }) + }, + open: function(e, t, n, i, a) { + if ("" === e) throw new Pe.ErrnoError(44); + var o; + if (n = void 0 === n ? 438 : n, n = 64 & (t = "string" == typeof t ? Pe.modeStringToFlags(t) : t) ? 4095 & n | 32768 : 0, "object" == typeof e) o = e; + else { + e = Ce.normalize(e); + try { + o = Pe.lookupPath(e, { + follow: !(131072 & t) + }).node + } catch (e) {} + } + var u = !1; + if (64 & t) + if (o) { + if (128 & t) throw new Pe.ErrnoError(20) + } else o = Pe.mknod(e, n, 0), u = !0; + if (!o) throw new Pe.ErrnoError(44); + if (Pe.isChrdev(o.mode) && (t &= -513), 65536 & t && !Pe.isDir(o.mode)) throw new Pe.ErrnoError(54); + if (!u) { + var s = Pe.mayOpen(o, t); + if (s) throw new Pe.ErrnoError(s) + } + 512 & t && Pe.truncate(o, 0), t &= -131713; + var c = Pe.createStream({ + node: o, + path: Pe.getPath(o), + flags: t, + seekable: !0, + position: 0, + stream_ops: o.stream_ops, + ungotten: [], + error: !1 + }, i, a); + c.stream_ops.open && c.stream_ops.open(c), !r.logReadFiles || 1 & t || (Pe.readFiles || (Pe.readFiles = {}), e in Pe.readFiles || (Pe.readFiles[e] = 1, p("FS.trackingDelegate error on read file: " + e))); + try { + if (Pe.trackingDelegate.onOpenFile) { + var l = 0; + 1 != (2097155 & t) && (l |= Pe.tracking.openFlags.READ), 0 != (2097155 & t) && (l |= Pe.tracking.openFlags.WRITE), Pe.trackingDelegate.onOpenFile(e, l) + } + } catch (r) { + p("FS.trackingDelegate['onOpenFile']('" + e + "', flags) threw an exception: " + r.message) + } + return c + }, + close: function(e) { + if (Pe.isClosed(e)) throw new Pe.ErrnoError(8); + e.getdents && (e.getdents = null); + try { + e.stream_ops.close && e.stream_ops.close(e) + } catch (e) { + throw e + } finally { + Pe.closeStream(e.fd) + } + e.fd = null + }, + isClosed: function(e) { + return null === e.fd + }, + llseek: function(e, r, t) { + if (Pe.isClosed(e)) throw new Pe.ErrnoError(8); + if (!e.seekable || !e.stream_ops.llseek) throw new Pe.ErrnoError(70); + if (0 != t && 1 != t && 2 != t) throw new Pe.ErrnoError(28); + return e.position = e.stream_ops.llseek(e, r, t), e.ungotten = [], e.position + }, + read: function(e, r, t, n, i) { + if (n < 0 || i < 0) throw new Pe.ErrnoError(28); + if (Pe.isClosed(e)) throw new Pe.ErrnoError(8); + if (1 == (2097155 & e.flags)) throw new Pe.ErrnoError(8); + if (Pe.isDir(e.node.mode)) throw new Pe.ErrnoError(31); + if (!e.stream_ops.read) throw new Pe.ErrnoError(28); + var a = void 0 !== i; + if (a) { + if (!e.seekable) throw new Pe.ErrnoError(70) + } else i = e.position; + var o = e.stream_ops.read(e, r, t, n, i); + return a || (e.position += o), o + }, + write: function(e, r, t, n, i, a) { + if (n < 0 || i < 0) throw new Pe.ErrnoError(28); + if (Pe.isClosed(e)) throw new Pe.ErrnoError(8); + if (0 == (2097155 & e.flags)) throw new Pe.ErrnoError(8); + if (Pe.isDir(e.node.mode)) throw new Pe.ErrnoError(31); + if (!e.stream_ops.write) throw new Pe.ErrnoError(28); + e.seekable && 1024 & e.flags && Pe.llseek(e, 0, 2); + var o = void 0 !== i; + if (o) { + if (!e.seekable) throw new Pe.ErrnoError(70) + } else i = e.position; + var u = e.stream_ops.write(e, r, t, n, i, a); + o || (e.position += u); + try { + e.path && Pe.trackingDelegate.onWriteToFile && Pe.trackingDelegate.onWriteToFile(e.path) + } catch (r) { + p("FS.trackingDelegate['onWriteToFile']('" + e.path + "') threw an exception: " + r.message) + } + return u + }, + allocate: function(e, r, t) { + if (Pe.isClosed(e)) throw new Pe.ErrnoError(8); + if (r < 0 || t <= 0) throw new Pe.ErrnoError(28); + if (0 == (2097155 & e.flags)) throw new Pe.ErrnoError(8); + if (!Pe.isFile(e.node.mode) && !Pe.isDir(e.node.mode)) throw new Pe.ErrnoError(43); + if (!e.stream_ops.allocate) throw new Pe.ErrnoError(138); + e.stream_ops.allocate(e, r, t) + }, + mmap: function(e, r, t, n, i, a, o) { + if (0 != (2 & a) && 0 == (2 & o) && 2 != (2097155 & e.flags)) throw new Pe.ErrnoError(2); + if (1 == (2097155 & e.flags)) throw new Pe.ErrnoError(2); + if (!e.stream_ops.mmap) throw new Pe.ErrnoError(43); + return e.stream_ops.mmap(e, r, t, n, i, a, o) + }, + msync: function(e, r, t, n, i) { + return e && e.stream_ops.msync ? e.stream_ops.msync(e, r, t, n, i) : 0 + }, + munmap: function(e) { + return 0 + }, + ioctl: function(e, r, t) { + if (!e.stream_ops.ioctl) throw new Pe.ErrnoError(59); + return e.stream_ops.ioctl(e, r, t) + }, + readFile: function(e, r) { + if ((r = r || {}).flags = r.flags || "r", r.encoding = r.encoding || "binary", "utf8" !== r.encoding && "binary" !== r.encoding) throw new Error('Invalid encoding type "' + r.encoding + '"'); + var t, n = Pe.open(e, r.flags), + i = Pe.stat(e).size, + a = new Uint8Array(i); + return Pe.read(n, a, 0, i, 0), "utf8" === r.encoding ? t = T(a, 0) : "binary" === r.encoding && (t = a), Pe.close(n), t + }, + writeFile: function(e, r, t) { + (t = t || {}).flags = t.flags || "w"; + var n = Pe.open(e, t.flags, t.mode); + if ("string" == typeof r) { + var i = new Uint8Array(R(r) + 1), + a = I(r, i, 0, i.length); + Pe.write(n, i, 0, a, void 0, t.canOwn) + } else { + if (!ArrayBuffer.isView(r)) throw new Error("Unsupported data type"); + Pe.write(n, r, 0, r.byteLength, void 0, t.canOwn) + } + Pe.close(n) + }, + cwd: function() { + return Pe.currentPath + }, + chdir: function(e) { + var r = Pe.lookupPath(e, { + follow: !0 + }); + if (null === r.node) throw new Pe.ErrnoError(44); + if (!Pe.isDir(r.node.mode)) throw new Pe.ErrnoError(54); + var t = Pe.nodePermissions(r.node, "x"); + if (t) throw new Pe.ErrnoError(t); + Pe.currentPath = r.path + }, + createDefaultDirectories: function() { + Pe.mkdir("/tmp"), Pe.mkdir("/home"), Pe.mkdir("/home/web_user") + }, + createDefaultDevices: function() { + var e; + if (Pe.mkdir("/dev"), Pe.registerDevice(Pe.makedev(1, 3), { + read: function() { + return 0 + }, + write: function(e, r, t, n, i) { + return n + } + }), Pe.mkdev("/dev/null", Pe.makedev(1, 3)), De.register(Pe.makedev(5, 0), De.default_tty_ops), De.register(Pe.makedev(6, 0), De.default_tty1_ops), Pe.mkdev("/dev/tty", Pe.makedev(5, 0)), Pe.mkdev("/dev/tty1", Pe.makedev(6, 0)), "object" == typeof crypto && "function" == typeof crypto.getRandomValues) { + var r = new Uint8Array(1); + e = function() { + return crypto.getRandomValues(r), r[0] + } + } + e || (e = function() { + pe("random_device") + }), Pe.createDevice("/dev", "random", e), Pe.createDevice("/dev", "urandom", e), Pe.mkdir("/dev/shm"), Pe.mkdir("/dev/shm/tmp") + }, + createSpecialDirectories: function() { + Pe.mkdir("/proc"), Pe.mkdir("/proc/self"), Pe.mkdir("/proc/self/fd"), Pe.mount({ + mount: function() { + var e = Pe.createNode("/proc/self", "fd", 16895, 73); + return e.node_ops = { + lookup: function(e, r) { + var t = +r, + n = Pe.getStream(t); + if (!n) throw new Pe.ErrnoError(8); + var i = { + parent: null, + mount: { + mountpoint: "fake" + }, + node_ops: { + readlink: function() { + return n.path + } + } + }; + return i.parent = i, i + } + }, e + } + }, {}, "/proc/self/fd") + }, + createStandardStreams: function() { + r.stdin ? Pe.createDevice("/dev", "stdin", r.stdin) : Pe.symlink("/dev/tty", "/dev/stdin"), r.stdout ? Pe.createDevice("/dev", "stdout", null, r.stdout) : Pe.symlink("/dev/tty", "/dev/stdout"), r.stderr ? Pe.createDevice("/dev", "stderr", null, r.stderr) : Pe.symlink("/dev/tty1", "/dev/stderr"); + Pe.open("/dev/stdin", "r"), Pe.open("/dev/stdout", "w"), Pe.open("/dev/stderr", "w") + }, + ensureErrnoError: function() { + Pe.ErrnoError || (Pe.ErrnoError = function(e, r) { + this.node = r, this.setErrno = function(e) { + this.errno = e + }, this.setErrno(e), this.message = "FS error" + }, Pe.ErrnoError.prototype = new Error, Pe.ErrnoError.prototype.constructor = Pe.ErrnoError, [44].forEach((function(e) { + Pe.genericErrors[e] = new Pe.ErrnoError(e), Pe.genericErrors[e].stack = "" + }))) + }, + staticInit: function() { + Pe.ensureErrnoError(), Pe.nameTable = new Array(4096), Pe.mount(Fe, {}, "/"), Pe.createDefaultDirectories(), Pe.createDefaultDevices(), Pe.createSpecialDirectories(), Pe.filesystems = { + MEMFS: Fe, + IDBFS: Ae + } + }, + init: function(e, t, n) { + Pe.init.initialized = !0, Pe.ensureErrnoError(), r.stdin = e || r.stdin, r.stdout = t || r.stdout, r.stderr = n || r.stderr, Pe.createStandardStreams() + }, + quit: function() { + Pe.init.initialized = !1; + var e = r._fflush; + e && e(0); + for (var t = 0; t < Pe.streams.length; t++) { + var n = Pe.streams[t]; + n && Pe.close(n) + } + }, + getMode: function(e, r) { + var t = 0; + return e && (t |= 365), r && (t |= 146), t + }, + joinPath: function(e, r) { + var t = Ce.join.apply(null, e); + return r && "/" == t[0] && (t = t.substr(1)), t + }, + absolutePath: function(e, r) { + return Se.resolve(r, e) + }, + standardizePath: function(e) { + return Ce.normalize(e) + }, + findObject: function(e, r) { + var t = Pe.analyzePath(e, r); + return t.exists ? t.object : (xe(t.error), null) + }, + analyzePath: function(e, r) { + try { + e = (n = Pe.lookupPath(e, { + follow: !r + })).path + } catch (e) {} + var t = { + isRoot: !1, + exists: !1, + error: 0, + name: null, + path: null, + object: null, + parentExists: !1, + parentPath: null, + parentObject: null + }; + try { + var n = Pe.lookupPath(e, { + parent: !0 + }); + t.parentExists = !0, t.parentPath = n.path, t.parentObject = n.node, t.name = Ce.basename(e), n = Pe.lookupPath(e, { + follow: !r + }), t.exists = !0, t.path = n.path, t.object = n.node, t.name = n.node.name, t.isRoot = "/" === n.path + } catch (e) { + t.error = e.errno + } + return t + }, + createFolder: function(e, r, t, n) { + var i = Ce.join2("string" == typeof e ? e : Pe.getPath(e), r), + a = Pe.getMode(t, n); + return Pe.mkdir(i, a) + }, + createPath: function(e, r, t, n) { + e = "string" == typeof e ? e : Pe.getPath(e); + for (var i = r.split("/").reverse(); i.length;) { + var a = i.pop(); + if (a) { + var o = Ce.join2(e, a); + try { + Pe.mkdir(o) + } catch (e) {} + e = o + } + } + return o + }, + createFile: function(e, r, t, n, i) { + var a = Ce.join2("string" == typeof e ? e : Pe.getPath(e), r), + o = Pe.getMode(n, i); + return Pe.create(a, o) + }, + createDataFile: function(e, r, t, n, i, a) { + var o = r ? Ce.join2("string" == typeof e ? e : Pe.getPath(e), r) : e, + u = Pe.getMode(n, i), + s = Pe.create(o, u); + if (t) { + if ("string" == typeof t) { + for (var c = new Array(t.length), l = 0, f = t.length; l < f; ++l) c[l] = t.charCodeAt(l); + t = c + } + Pe.chmod(s, 146 | u); + var d = Pe.open(s, "w"); + Pe.write(d, t, 0, t.length, 0, a), Pe.close(d), Pe.chmod(s, u) + } + return s + }, + createDevice: function(e, r, t, n) { + var i = Ce.join2("string" == typeof e ? e : Pe.getPath(e), r), + a = Pe.getMode(!!t, !!n); + Pe.createDevice.major || (Pe.createDevice.major = 64); + var o = Pe.makedev(Pe.createDevice.major++, 0); + return Pe.registerDevice(o, { + open: function(e) { + e.seekable = !1 + }, + close: function(e) { + n && n.buffer && n.buffer.length && n(10) + }, + read: function(e, r, n, i, a) { + for (var o = 0, u = 0; u < i; u++) { + var s; + try { + s = t() + } catch (e) { + throw new Pe.ErrnoError(29) + } + if (void 0 === s && 0 === o) throw new Pe.ErrnoError(6); + if (null == s) break; + o++, r[n + u] = s + } + return o && (e.node.timestamp = Date.now()), o + }, + write: function(e, r, t, i, a) { + for (var o = 0; o < i; o++) try { + n(r[t + o]) + } catch (e) { + throw new Pe.ErrnoError(29) + } + return i && (e.node.timestamp = Date.now()), o + } + }), Pe.mkdev(i, a, o) + }, + createLink: function(e, r, t, n, i) { + var a = Ce.join2("string" == typeof e ? e : Pe.getPath(e), r); + return Pe.symlink(t, a) + }, + forceLoadFile: function(e) { + if (e.isDevice || e.isFolder || e.link || e.contents) return !0; + var r = !0; + if ("undefined" != typeof XMLHttpRequest) 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."); + if (!a) throw new Error("Cannot load without read() or XMLHttpRequest."); + try { + e.contents = Qr(a(e.url), !0), e.usedBytes = e.contents.length + } catch (e) { + r = !1 + } + return r || xe(29), r + }, + createLazyFile: function(e, r, t, n, i) { + function a() { + this.lengthKnown = !1, this.chunks = [] + } + if (a.prototype.get = function(e) { + if (!(e > this.length - 1 || e < 0)) { + var r = e % this.chunkSize, + t = e / this.chunkSize | 0; + return this.getter(t)[r] + } + }, a.prototype.setDataGetter = function(e) { + this.getter = e + }, a.prototype.cacheLength = function() { + var e = new XMLHttpRequest; + if (e.open("HEAD", t, !1), e.send(null), !(e.status >= 200 && e.status < 300 || 304 === e.status)) throw new Error("Couldn't load " + t + ". Status: " + e.status); + var r, n = Number(e.getResponseHeader("Content-length")), + i = (r = e.getResponseHeader("Accept-Ranges")) && "bytes" === r, + a = (r = e.getResponseHeader("Content-Encoding")) && "gzip" === r, + o = 1048576; + i || (o = n); + var u = this; + u.setDataGetter((function(e) { + var r = e * o, + i = (e + 1) * o - 1; + if (i = Math.min(i, n - 1), void 0 === u.chunks[e] && (u.chunks[e] = function(e, r) { + if (e > r) throw new Error("invalid range (" + e + ", " + r + ") or no bytes requested!"); + if (r > n - 1) throw new Error("only " + n + " bytes available! programmer error!"); + var i = new XMLHttpRequest; + if (i.open("GET", t, !1), n !== o && i.setRequestHeader("Range", "bytes=" + e + "-" + r), "undefined" != typeof Uint8Array && (i.responseType = "arraybuffer"), i.overrideMimeType && i.overrideMimeType("text/plain; charset=x-user-defined"), i.send(null), !(i.status >= 200 && i.status < 300 || 304 === i.status)) throw new Error("Couldn't load " + t + ". Status: " + i.status); + return void 0 !== i.response ? new Uint8Array(i.response || []) : Qr(i.responseText || "", !0) + }(r, i)), void 0 === u.chunks[e]) throw new Error("doXHR failed!"); + return u.chunks[e] + })), !a && n || (o = n = 1, n = this.getter(0).length, o = n, m("LazyFiles on gzip forces download of the whole file when length is accessed")), this._length = n, this._chunkSize = o, this.lengthKnown = !0 + }, "undefined" != typeof XMLHttpRequest) throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"; + var o = { + isDevice: !1, + url: t + }, + u = Pe.createFile(e, r, o, n, i); + o.contents ? u.contents = o.contents : o.url && (u.contents = null, u.url = o.url), Object.defineProperties(u, { + usedBytes: { + get: function() { + return this.contents.length + } + } + }); + var s = {}; + return Object.keys(u.stream_ops).forEach((function(e) { + var r = u.stream_ops[e]; + s[e] = function() { + if (!Pe.forceLoadFile(u)) throw new Pe.ErrnoError(29); + return r.apply(null, arguments) + } + })), s.read = function(e, r, t, n, i) { + if (!Pe.forceLoadFile(u)) throw new Pe.ErrnoError(29); + var a = e.node.contents; + if (i >= a.length) return 0; + var o = Math.min(a.length - i, n); + if (a.slice) + for (var s = 0; s < o; s++) r[t + s] = a[i + s]; + else + for (s = 0; s < o; s++) r[t + s] = a.get(i + s); + return o + }, u.stream_ops = s, u + }, + createPreloadedFile: function(e, t, n, i, a, o, u, s, c, l) { + Be.init(); + var f = t ? Se.resolve(Ce.join2(e, t)) : e; + + function d(n) { + function d(r) { + l && l(), s || Pe.createDataFile(e, t, r, i, a, c), o && o(), me() + } + var m = !1; + r.preloadPlugins.forEach((function(e) { + m || e.canHandle(f) && (e.handle(n, f, d, (function() { + u && u(), me() + })), m = !0) + })), m || d(n) + } + de(), "string" == typeof n ? Be.asyncLoad(n, (function(e) { + d(e) + }), u) : d(n) + }, + indexedDB: function() { + return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB + }, + DB_NAME: function() { + return "EM_FS_" + window.location.pathname + }, + DB_VERSION: 20, + DB_STORE_NAME: "FILE_DATA", + saveFilesToDB: function(e, r, t) { + r = r || function() {}, t = t || function() {}; + var n = Pe.indexedDB(); + try { + var i = n.open(Pe.DB_NAME(), Pe.DB_VERSION) + } catch (e) { + return t(e) + } + i.onupgradeneeded = function() { + m("creating db"), i.result.createObjectStore(Pe.DB_STORE_NAME) + }, i.onsuccess = function() { + var n = i.result.transaction([Pe.DB_STORE_NAME], "readwrite"), + a = n.objectStore(Pe.DB_STORE_NAME), + o = 0, + u = 0, + s = e.length; + + function c() { + 0 == u ? r() : t() + } + e.forEach((function(e) { + var r = a.put(Pe.analyzePath(e).object.contents, e); + r.onsuccess = function() { + ++o + u == s && c() + }, r.onerror = function() { + u++, o + u == s && c() + } + })), n.onerror = t + }, i.onerror = t + }, + loadFilesFromDB: function(e, r, t) { + r = r || function() {}, t = t || function() {}; + var n = Pe.indexedDB(); + try { + var i = n.open(Pe.DB_NAME(), Pe.DB_VERSION) + } catch (e) { + return t(e) + } + i.onupgradeneeded = t, i.onsuccess = function() { + var n = i.result; + try { + var a = n.transaction([Pe.DB_STORE_NAME], "readonly") + } catch (e) { + return void t(e) + } + var o = a.objectStore(Pe.DB_STORE_NAME), + u = 0, + s = 0, + c = e.length; + + function l() { + 0 == s ? r() : t() + } + e.forEach((function(e) { + var r = o.get(e); + r.onsuccess = function() { + Pe.analyzePath(e).exists && Pe.unlink(e), Pe.createDataFile(Ce.dirname(e), Ce.basename(e), r.result, !0, !0, !0), ++u + s == c && l() + }, r.onerror = function() { + s++, u + s == c && l() + } + })), a.onerror = t + }, i.onerror = t + } + }, + Te = { + mappings: {}, + DEFAULT_POLLMASK: 5, + umask: 511, + calculateAt: function(e, r) { + if ("/" !== r[0]) { + var t; + if (-100 === e) t = Pe.cwd(); + else { + var n = Pe.getStream(e); + if (!n) throw new Pe.ErrnoError(8); + t = n.path + } + r = Ce.join2(t, r) + } + return r + }, + doStat: function(e, r, t) { + try { + var n = e(r) + } catch (e) { + if (e && e.node && Ce.normalize(r) !== Ce.normalize(Pe.getPath(e.node))) return -54; + throw e + } + return q[t >> 2] = n.dev, q[t + 4 >> 2] = 0, q[t + 8 >> 2] = n.ino, q[t + 12 >> 2] = n.mode, q[t + 16 >> 2] = n.nlink, q[t + 20 >> 2] = n.uid, q[t + 24 >> 2] = n.gid, q[t + 28 >> 2] = n.rdev, q[t + 32 >> 2] = 0, _e = [n.size >>> 0, (he = n.size, +ae(he) >= 1 ? he > 0 ? (0 | se(+ue(he / 4294967296), 4294967295)) >>> 0 : ~~+oe((he - +(~~he >>> 0)) / 4294967296) >>> 0 : 0)], q[t + 40 >> 2] = _e[0], q[t + 44 >> 2] = _e[1], q[t + 48 >> 2] = 4096, q[t + 52 >> 2] = n.blocks, q[t + 56 >> 2] = n.atime.getTime() / 1e3 | 0, q[t + 60 >> 2] = 0, q[t + 64 >> 2] = n.mtime.getTime() / 1e3 | 0, q[t + 68 >> 2] = 0, q[t + 72 >> 2] = n.ctime.getTime() / 1e3 | 0, q[t + 76 >> 2] = 0, _e = [n.ino >>> 0, (he = n.ino, +ae(he) >= 1 ? he > 0 ? (0 | se(+ue(he / 4294967296), 4294967295)) >>> 0 : ~~+oe((he - +(~~he >>> 0)) / 4294967296) >>> 0 : 0)], q[t + 80 >> 2] = _e[0], q[t + 84 >> 2] = _e[1], 0 + }, + doMsync: function(e, r, t, n, i) { + var a = G.slice(e, e + t); + Pe.msync(r, a, i, t, n) + }, + doMkdir: function(e, r) { + return "/" === (e = Ce.normalize(e))[e.length - 1] && (e = e.substr(0, e.length - 1)), Pe.mkdir(e, r, 0), 0 + }, + doMknod: function(e, r, t) { + switch (61440 & r) { + case 32768: + case 8192: + case 24576: + case 4096: + case 49152: + break; + default: + return -28 + } + return Pe.mknod(e, r, t), 0 + }, + doReadlink: function(e, r, t) { + if (t <= 0) return -28; + var n = Pe.readlink(e), + i = Math.min(t, R(n)), + a = O[r + i]; + return B(n, r, t + 1), O[r + i] = a, i + }, + doAccess: function(e, r) { + if (-8 & r) return -28; + var t; + if (!(t = Pe.lookupPath(e, { + follow: !0 + }).node)) return -44; + var n = ""; + return 4 & r && (n += "r"), 2 & r && (n += "w"), 1 & r && (n += "x"), n && Pe.nodePermissions(t, n) ? -2 : 0 + }, + doDup: function(e, r, t) { + var n = Pe.getStream(t); + return n && Pe.close(n), Pe.open(e, r, 0, t, t).fd + }, + doReadv: function(e, r, t, n) { + for (var i = 0, a = 0; a < t; a++) { + var o = q[r + 8 * a >> 2], + u = q[r + (8 * a + 4) >> 2], + s = Pe.read(e, O, o, u, n); + if (s < 0) return -1; + if (i += s, s < u) break + } + return i + }, + doWritev: function(e, r, t, n) { + for (var i = 0, a = 0; a < t; a++) { + var o = q[r + 8 * a >> 2], + u = q[r + (8 * a + 4) >> 2], + s = Pe.write(e, O, o, u, n); + if (s < 0) return -1; + i += s + } + return i + }, + varargs: void 0, + get: function() { + return Te.varargs += 4, q[Te.varargs - 4 >> 2] + }, + getStr: function(e) { + return L(e) + }, + getStreamFromFD: function(e) { + var r = Pe.getStream(e); + if (!r) throw new Pe.ErrnoError(8); + return r + }, + get64: function(e, r) { + return e + } + }; + + function Le(e, r) { + if (Be.mainLoop.timingMode = e, Be.mainLoop.timingValue = r, !Be.mainLoop.func) return 1; + if (0 == e) Be.mainLoop.scheduler = function() { + var e = 0 | Math.max(0, Be.mainLoop.tickStartTime + r - ke()); + setTimeout(Be.mainLoop.runner, e) + }, Be.mainLoop.method = "timeout"; + else if (1 == e) Be.mainLoop.scheduler = function() { + Be.requestAnimationFrame(Be.mainLoop.runner) + }, Be.mainLoop.method = "rAF"; + else if (2 == e) { + if ("undefined" == typeof setImmediate) { + var t = [], + n = "setimmediate"; + addEventListener("message", (function(e) { + e.data !== n && e.data.target !== n || (e.stopPropagation(), t.shift()()) + }), !0), setImmediate = function(e) { + t.push(e), postMessage(n, "*") + } + } + Be.mainLoop.scheduler = function() { + setImmediate(Be.mainLoop.runner) + }, Be.mainLoop.method = "immediate" + } + return 0 + } + + function Ie(e, t, n, i, a) { + var o; + y = !0, D(!Be.mainLoop.func, "emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters."), Be.mainLoop.func = e, Be.mainLoop.arg = i, o = void 0 !== i ? function() { + r.dynCall_vi(e, i) + } : function() { + r.dynCall_v(e) + }; + var u = Be.mainLoop.currentlyRunningMainloop; + if (Be.mainLoop.runner = function() { + if (!S) + if (Be.mainLoop.queue.length > 0) { + var e = Date.now(), + r = Be.mainLoop.queue.shift(); + if (r.func(r.arg), Be.mainLoop.remainingBlockers) { + var t = Be.mainLoop.remainingBlockers, + n = t % 1 == 0 ? t - 1 : Math.floor(t); + r.counted ? Be.mainLoop.remainingBlockers = n : (n += .5, Be.mainLoop.remainingBlockers = (8 * t + n) / 9) + } + if (console.log('main loop blocker "' + r.name + '" took ' + (Date.now() - e) + " ms"), Be.mainLoop.updateStatus(), u < Be.mainLoop.currentlyRunningMainloop) return; + setTimeout(Be.mainLoop.runner, 0) + } else u < Be.mainLoop.currentlyRunningMainloop || (Be.mainLoop.currentFrameNumber = Be.mainLoop.currentFrameNumber + 1 | 0, 1 == Be.mainLoop.timingMode && Be.mainLoop.timingValue > 1 && Be.mainLoop.currentFrameNumber % Be.mainLoop.timingValue != 0 ? Be.mainLoop.scheduler() : (0 == Be.mainLoop.timingMode && (Be.mainLoop.tickStartTime = ke()), Be.mainLoop.runIter(o), u < Be.mainLoop.currentlyRunningMainloop || ("object" == typeof SDL && SDL.audio && SDL.audio.queueNewAudioData && SDL.audio.queueNewAudioData(), Be.mainLoop.scheduler()))) + }, a || (t && t > 0 ? Le(0, 1e3 / t) : Le(1, 1), Be.mainLoop.scheduler()), n) throw "unwind" + } + ke = function() { + return performance.now() + }; + var Be = { + mainLoop: { + scheduler: null, + method: "", + currentlyRunningMainloop: 0, + func: null, + arg: 0, + timingMode: 0, + timingValue: 0, + currentFrameNumber: 0, + queue: [], + pause: function() { + Be.mainLoop.scheduler = null, Be.mainLoop.currentlyRunningMainloop++ + }, + resume: function() { + Be.mainLoop.currentlyRunningMainloop++; + var e = Be.mainLoop.timingMode, + r = Be.mainLoop.timingValue, + t = Be.mainLoop.func; + Be.mainLoop.func = null, Ie(t, 0, !1, Be.mainLoop.arg, !0), Le(e, r), Be.mainLoop.scheduler() + }, + updateStatus: function() { + if (r.setStatus) { + var e = r.statusMessage || "Please wait...", + t = Be.mainLoop.remainingBlockers, + n = Be.mainLoop.expectedBlockers; + t ? t < n ? r.setStatus(e + " (" + (n - t) + "/" + n + ")") : r.setStatus(e) : r.setStatus("") + } + }, + runIter: function(e) { + if (!S) { + if (r.preMainLoop) + if (!1 === r.preMainLoop()) return; + try { + e() + } catch (e) { + if (e instanceof xt) return; + throw e && "object" == typeof e && e.stack && p("exception thrown: " + [e, e.stack]), e + } + r.postMainLoop && r.postMainLoop() + } + } + }, + isFullscreen: !1, + pointerLock: !1, + moduleContextCreatedCallbacks: [], + workers: [], + init: function() { + if (r.preloadPlugins || (r.preloadPlugins = []), !Be.initted) { + Be.initted = !0; + try { + new Blob, Be.hasBlobConstructor = !0 + } catch (e) { + Be.hasBlobConstructor = !1, console.log("warning: no blob constructor, cannot create blobs with mimetypes") + } + Be.BlobBuilder = "undefined" != typeof MozBlobBuilder ? MozBlobBuilder : "undefined" != typeof WebKitBlobBuilder ? WebKitBlobBuilder : Be.hasBlobConstructor ? null : console.log("warning: no BlobBuilder"), Be.URLObject = "undefined" != typeof window ? window.URL ? window.URL : window.webkitURL : void 0, r.noImageDecoding || void 0 !== Be.URLObject || (console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."), r.noImageDecoding = !0); + var e = { + canHandle: function(e) { + return !r.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(e) + }, + handle: function(e, t, n, i) { + var a = null; + if (Be.hasBlobConstructor) try { + (a = new Blob([e], { + type: Be.getMimetype(t) + })).size !== e.length && (a = new Blob([new Uint8Array(e).buffer], { + type: Be.getMimetype(t) + })) + } catch (e) { + h("Blob constructor present but fails: " + e + "; falling back to blob builder") + } + if (!a) { + var o = new Be.BlobBuilder; + o.append(new Uint8Array(e).buffer), a = o.getBlob() + } + var u = Be.URLObject.createObjectURL(a), + s = new Image; + s.onload = function() { + D(s.complete, "Image " + t + " could not be decoded"); + var i = document.createElement("canvas"); + i.width = s.width, i.height = s.height, i.getContext("2d").drawImage(s, 0, 0), r.preloadedImages[t] = i, Be.URLObject.revokeObjectURL(u), n && n(e) + }, s.onerror = function(e) { + console.log("Image " + u + " could not be decoded"), i && i() + }, s.src = u + } + }; + r.preloadPlugins.push(e); + var t = { + canHandle: function(e) { + return !r.noAudioDecoding && e.substr(-4) in { + ".ogg": 1, + ".wav": 1, + ".mp3": 1 + } + }, + handle: function(e, t, n, i) { + var a = !1; + + function o(i) { + a || (a = !0, r.preloadedAudios[t] = i, n && n(e)) + } + + function u() { + a || (a = !0, r.preloadedAudios[t] = new Audio, i && i()) + } + if (!Be.hasBlobConstructor) return u(); + try { + var s = new Blob([e], { + type: Be.getMimetype(t) + }) + } catch (e) { + return u() + } + var c = Be.URLObject.createObjectURL(s), + l = new Audio; + l.addEventListener("canplaythrough", (function() { + o(l) + }), !1), l.onerror = function(r) { + a || (console.log("warning: browser could not fully decode audio " + t + ", trying slower base64 approach"), l.src = "data:audio/x-" + t.substr(-3) + ";base64," + function(e) { + for (var r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", t = "", n = 0, i = 0, a = 0; a < e.length; a++) + for (n = n << 8 | e[a], i += 8; i >= 6;) { + var o = n >> i - 6 & 63; + i -= 6, t += r[o] + } + return 2 == i ? (t += r[(3 & n) << 4], t += "==") : 4 == i && (t += r[(15 & n) << 2], t += "="), t + }(e), o(l)) + }, l.src = c, Be.safeSetTimeout((function() { + o(l) + }), 1e4) + } + }; + r.preloadPlugins.push(t); + var n = r.canvas; + n && (n.requestPointerLock = n.requestPointerLock || n.mozRequestPointerLock || n.webkitRequestPointerLock || n.msRequestPointerLock || function() {}, n.exitPointerLock = document.exitPointerLock || document.mozExitPointerLock || document.webkitExitPointerLock || document.msExitPointerLock || function() {}, n.exitPointerLock = n.exitPointerLock.bind(document), document.addEventListener("pointerlockchange", i, !1), document.addEventListener("mozpointerlockchange", i, !1), document.addEventListener("webkitpointerlockchange", i, !1), document.addEventListener("mspointerlockchange", i, !1), r.elementPointerLock && n.addEventListener("click", (function(e) { + !Be.pointerLock && r.canvas.requestPointerLock && (r.canvas.requestPointerLock(), e.preventDefault()) + }), !1)) + } + + function i() { + Be.pointerLock = document.pointerLockElement === r.canvas || document.mozPointerLockElement === r.canvas || document.webkitPointerLockElement === r.canvas || document.msPointerLockElement === r.canvas + } + }, + createContext: function(e, t, n, i) { + if (t && r.ctx && e == r.canvas) return r.ctx; + var a, o; + if (t) { + var u = { + antialias: !1, + alpha: !1, + majorVersion: 2 + }; + if (i) + for (var s in i) u[s] = i[s]; + void 0 !== Ue && (o = Ue.createContext(e, u)) && (a = Ue.getContext(o).GLctx) + } else a = e.getContext("2d"); + return a ? (n && (t || D(void 0 === Or, "cannot set in module if GLctx is used, but we are a non-GL context that would replace it"), r.ctx = a, t && Ue.makeContextCurrent(o), r.useWebGL = t, Be.moduleContextCreatedCallbacks.forEach((function(e) { + e() + })), Be.init()), a) : null + }, + destroyContext: function(e, r, t) {}, + fullscreenHandlersInstalled: !1, + lockPointer: void 0, + resizeCanvas: void 0, + requestFullscreen: function(e, t) { + Be.lockPointer = e, Be.resizeCanvas = t, void 0 === Be.lockPointer && (Be.lockPointer = !0), void 0 === Be.resizeCanvas && (Be.resizeCanvas = !1); + var n = r.canvas; + + function i() { + Be.isFullscreen = !1; + var e = n.parentNode; + (document.fullscreenElement || document.mozFullScreenElement || document.msFullscreenElement || document.webkitFullscreenElement || document.webkitCurrentFullScreenElement) === e ? (n.exitFullscreen = Be.exitFullscreen, Be.lockPointer && n.requestPointerLock(), Be.isFullscreen = !0, Be.resizeCanvas ? Be.setFullscreenCanvasSize() : Be.updateCanvasDimensions(n)) : (e.parentNode.insertBefore(n, e), e.parentNode.removeChild(e), Be.resizeCanvas ? Be.setWindowedCanvasSize() : Be.updateCanvasDimensions(n)), r.onFullScreen && r.onFullScreen(Be.isFullscreen), r.onFullscreen && r.onFullscreen(Be.isFullscreen) + } + Be.fullscreenHandlersInstalled || (Be.fullscreenHandlersInstalled = !0, document.addEventListener("fullscreenchange", i, !1), document.addEventListener("mozfullscreenchange", i, !1), document.addEventListener("webkitfullscreenchange", i, !1), document.addEventListener("MSFullscreenChange", i, !1)); + var a = document.createElement("div"); + n.parentNode.insertBefore(a, n), a.appendChild(n), a.requestFullscreen = a.requestFullscreen || a.mozRequestFullScreen || a.msRequestFullscreen || (a.webkitRequestFullscreen ? function() { + a.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT) + } : null) || (a.webkitRequestFullScreen ? function() { + a.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT) + } : null), a.requestFullscreen() + }, + exitFullscreen: function() { + return !!Be.isFullscreen && ((document.exitFullscreen || document.cancelFullScreen || document.mozCancelFullScreen || document.msExitFullscreen || document.webkitCancelFullScreen || function() {}).apply(document, []), !0) + }, + nextRAF: 0, + fakeRequestAnimationFrame: function(e) { + var r = Date.now(); + if (0 === Be.nextRAF) Be.nextRAF = r + 1e3 / 60; + else + for (; r + 2 >= Be.nextRAF;) Be.nextRAF += 1e3 / 60; + var t = Math.max(Be.nextRAF - r, 0); + setTimeout(e, t) + }, + requestAnimationFrame: function(e) { + "function" != typeof requestAnimationFrame ? (0, Be.fakeRequestAnimationFrame)(e) : requestAnimationFrame(e) + }, + safeCallback: function(e) { + return function() { + if (!S) return e.apply(null, arguments) + } + }, + allowAsyncCallbacks: !0, + queuedAsyncCallbacks: [], + pauseAsyncCallbacks: function() { + Be.allowAsyncCallbacks = !1 + }, + resumeAsyncCallbacks: function() { + if (Be.allowAsyncCallbacks = !0, Be.queuedAsyncCallbacks.length > 0) { + var e = Be.queuedAsyncCallbacks; + Be.queuedAsyncCallbacks = [], e.forEach((function(e) { + e() + })) + } + }, + safeRequestAnimationFrame: function(e) { + return Be.requestAnimationFrame((function() { + S || (Be.allowAsyncCallbacks ? e() : Be.queuedAsyncCallbacks.push(e)) + })) + }, + safeSetTimeout: function(e, r) { + return y = !0, setTimeout((function() { + S || (Be.allowAsyncCallbacks ? e() : Be.queuedAsyncCallbacks.push(e)) + }), r) + }, + safeSetInterval: function(e, r) { + return y = !0, setInterval((function() { + S || Be.allowAsyncCallbacks && e() + }), r) + }, + getMimetype: function(e) { + return { + jpg: "image/jpeg", + jpeg: "image/jpeg", + png: "image/png", + bmp: "image/bmp", + ogg: "audio/ogg", + wav: "audio/wav", + mp3: "audio/mpeg" + } [e.substr(e.lastIndexOf(".") + 1)] + }, + getUserMedia: function(e) { + window.getUserMedia || (window.getUserMedia = navigator.getUserMedia || navigator.mozGetUserMedia), window.getUserMedia(e) + }, + getMovementX: function(e) { + return e.movementX || e.mozMovementX || e.webkitMovementX || 0 + }, + getMovementY: function(e) { + return e.movementY || e.mozMovementY || e.webkitMovementY || 0 + }, + getMouseWheelDelta: function(e) { + var r = 0; + switch (e.type) { + case "DOMMouseScroll": + r = e.detail / 3; + break; + case "mousewheel": + r = e.wheelDelta / 120; + break; + case "wheel": + switch (r = e.deltaY, e.deltaMode) { + case 0: + r /= 100; + break; + case 1: + r /= 3; + break; + case 2: + r *= 80; + break; + default: + throw "unrecognized mouse wheel delta mode: " + e.deltaMode + } + break; + default: + throw "unrecognized mouse wheel event: " + e.type + } + return r + }, + mouseX: 0, + mouseY: 0, + mouseMovementX: 0, + mouseMovementY: 0, + touches: {}, + lastTouches: {}, + calculateMouseEvent: function(e) { + if (Be.pointerLock) "mousemove" != e.type && "mozMovementX" in e ? Be.mouseMovementX = Be.mouseMovementY = 0 : (Be.mouseMovementX = Be.getMovementX(e), Be.mouseMovementY = Be.getMovementY(e)), "undefined" != typeof SDL ? (Be.mouseX = SDL.mouseX + Be.mouseMovementX, Be.mouseY = SDL.mouseY + Be.mouseMovementY) : (Be.mouseX += Be.mouseMovementX, Be.mouseY += Be.mouseMovementY); + else { + var t = r.canvas.getBoundingClientRect(), + n = r.canvas.width, + i = r.canvas.height, + a = void 0 !== window.scrollX ? window.scrollX : window.pageXOffset, + o = void 0 !== window.scrollY ? window.scrollY : window.pageYOffset; + if ("touchstart" === e.type || "touchend" === e.type || "touchmove" === e.type) { + var u = e.touch; + if (void 0 === u) return; + var s = u.pageX - (a + t.left), + c = u.pageY - (o + t.top), + l = { + x: s *= n / t.width, + y: c *= i / t.height + }; + if ("touchstart" === e.type) Be.lastTouches[u.identifier] = l, Be.touches[u.identifier] = l; + else if ("touchend" === e.type || "touchmove" === e.type) { + var f = Be.touches[u.identifier]; + f || (f = l), Be.lastTouches[u.identifier] = f, Be.touches[u.identifier] = l + } + return + } + var d = e.pageX - (a + t.left), + m = e.pageY - (o + t.top); + d *= n / t.width, m *= i / t.height, Be.mouseMovementX = d - Be.mouseX, Be.mouseMovementY = m - Be.mouseY, Be.mouseX = d, Be.mouseY = m + } + }, + asyncLoad: function(e, r, t, n) { + var i = n ? "" : "al " + e; + o(e, (function(t) { + D(t, 'Loading data file "' + e + '" failed (no arrayBuffer).'), r(new Uint8Array(t)), i && me() + }), (function(r) { + if (!t) throw 'Loading data file "' + e + '" failed.'; + t() + })), i && de() + }, + resizeListeners: [], + updateResizeListeners: function() { + var e = r.canvas; + Be.resizeListeners.forEach((function(r) { + r(e.width, e.height) + })) + }, + setCanvasSize: function(e, t, n) { + var i = r.canvas; + Be.updateCanvasDimensions(i, e, t), n || Be.updateResizeListeners() + }, + windowedWidth: 0, + windowedHeight: 0, + setFullscreenCanvasSize: function() { + if ("undefined" != typeof SDL) { + var e = Q[SDL.screen >> 2]; + e |= 8388608, q[SDL.screen >> 2] = e + } + Be.updateCanvasDimensions(r.canvas), Be.updateResizeListeners() + }, + setWindowedCanvasSize: function() { + if ("undefined" != typeof SDL) { + var e = Q[SDL.screen >> 2]; + e &= -8388609, q[SDL.screen >> 2] = e + } + Be.updateCanvasDimensions(r.canvas), Be.updateResizeListeners() + }, + updateCanvasDimensions: function(e, t, n) { + t && n ? (e.widthNative = t, e.heightNative = n) : (t = e.widthNative, n = e.heightNative); + var i = t, + a = n; + if (r.forcedAspectRatio && r.forcedAspectRatio > 0 && (i / a < r.forcedAspectRatio ? i = Math.round(a * r.forcedAspectRatio) : a = Math.round(i / r.forcedAspectRatio)), (document.fullscreenElement || document.mozFullScreenElement || document.msFullscreenElement || document.webkitFullscreenElement || document.webkitCurrentFullScreenElement) === e.parentNode && "undefined" != typeof screen) { + var o = Math.min(screen.width / i, screen.height / a); + i = Math.round(i * o), a = Math.round(a * o) + } + Be.resizeCanvas ? (e.width != i && (e.width = i), e.height != a && (e.height = a), void 0 !== e.style && (e.style.removeProperty("width"), e.style.removeProperty("height"))) : (e.width != t && (e.width = t), e.height != n && (e.height = n), void 0 !== e.style && (i != t || a != n ? (e.style.setProperty("width", i + "px", "important"), e.style.setProperty("height", a + "px", "important")) : (e.style.removeProperty("width"), e.style.removeProperty("height")))) + }, + wgetRequests: {}, + nextWgetRequestHandle: 0, + getNextWgetRequestHandle: function() { + var e = Be.nextWgetRequestHandle; + return Be.nextWgetRequestHandle++, e + } + }, + Re = { + QUEUE_INTERVAL: 25, + QUEUE_LOOKAHEAD: .1, + DEVICE_NAME: "Emscripten OpenAL", + CAPTURE_DEVICE_NAME: "Emscripten OpenAL capture", + ALC_EXTENSIONS: { + ALC_SOFT_pause_device: !0, + ALC_SOFT_HRTF: !0 + }, + AL_EXTENSIONS: { + AL_EXT_float32: !0, + AL_SOFT_loop_points: !0, + AL_SOFT_source_length: !0, + AL_EXT_source_distance_model: !0, + AL_SOFT_source_spatialize: !0 + }, + _alcErr: 0, + alcErr: 0, + deviceRefCounts: {}, + alcStringCache: {}, + paused: !1, + stringCache: {}, + contexts: {}, + currentCtx: null, + buffers: { + 0: { + id: 0, + refCount: 0, + audioBuf: null, + frequency: 0, + bytesPerSample: 2, + channels: 1, + length: 0 + } + }, + paramArray: [], + _nextId: 1, + newId: function() { + return Re.freeIds.length > 0 ? Re.freeIds.pop() : Re._nextId++ + }, + freeIds: [], + scheduleContextAudio: function(e) { + if (1 !== Be.mainLoop.timingMode || "visible" == document.visibilityState) + for (var r in e.sources) Re.scheduleSourceAudio(e.sources[r]) + }, + scheduleSourceAudio: function(e, r) { + if ((1 !== Be.mainLoop.timingMode || "visible" == document.visibilityState) && 4114 === e.state) { + for (var t = Re.updateSourceTime(e), n = e.bufStartTime, i = e.bufOffset, a = e.bufsProcessed, o = 0; o < e.audioQueue.length; o++) { + n = (l = e.audioQueue[o])._startTime + l._duration, i = 0, a += l._skipCount + 1 + } + r || (r = Re.QUEUE_LOOKAHEAD); + for (var u = t + r, s = 0; n < u;) { + if (a >= e.bufQueue.length) { + if (!e.looping) break; + a %= e.bufQueue.length + } + var c = e.bufQueue[a % e.bufQueue.length]; + if (0 === c.length) { + if (++s === e.bufQueue.length) break + } else { + var l; + (l = e.context.audioCtx.createBufferSource()).buffer = c.audioBuf, l.playbackRate.value = e.playbackRate, (c.audioBuf._loopStart || c.audioBuf._loopEnd) && (l.loopStart = c.audioBuf._loopStart, l.loopEnd = c.audioBuf._loopEnd); + var f = 0; + 4136 === e.type && e.looping ? (f = Number.POSITIVE_INFINITY, l.loop = !0, c.audioBuf._loopStart && (l.loopStart = c.audioBuf._loopStart), c.audioBuf._loopEnd && (l.loopEnd = c.audioBuf._loopEnd)) : f = (c.audioBuf.duration - i) / e.playbackRate, l._startOffset = i, l._duration = f, l._skipCount = s, s = 0, l.connect(e.gain), void 0 !== l.start ? (n = Math.max(n, e.context.audioCtx.currentTime), l.start(n, i)) : void 0 !== l.noteOn && (n = Math.max(n, e.context.audioCtx.currentTime), l.noteOn(n)), l._startTime = n, e.audioQueue.push(l), n += f + } + i = 0, a++ + } + } + }, + updateSourceTime: function(e) { + var r = e.context.audioCtx.currentTime; + if (4114 !== e.state) return r; + isFinite(e.bufStartTime) || (e.bufStartTime = r - e.bufOffset / e.playbackRate, e.bufOffset = 0); + for (var t = 0; e.audioQueue.length;) { + var n = e.audioQueue[0]; + if (e.bufsProcessed += n._skipCount, r < (t = n._startTime + n._duration)) break; + e.audioQueue.shift(), e.bufStartTime = t, e.bufOffset = 0, e.bufsProcessed++ + } + if (e.bufsProcessed >= e.bufQueue.length && !e.looping) Re.setSourceState(e, 4116); + else if (4136 === e.type && e.looping) { + if (0 === (c = e.bufQueue[0]).length) e.bufOffset = 0; + else { + var i = (r - e.bufStartTime) * e.playbackRate, + a = c.audioBuf._loopStart || 0, + o = c.audioBuf._loopEnd || c.audioBuf.duration; + o <= a && (o = c.audioBuf.duration), e.bufOffset = i < o ? i : a + (i - a) % (o - a) + } + } else if (e.audioQueue[0]) e.bufOffset = (r - e.audioQueue[0]._startTime) * e.playbackRate; + else { + if (4136 !== e.type && e.looping) { + var u = Re.sourceDuration(e) / e.playbackRate; + u > 0 && (e.bufStartTime += Math.floor((r - e.bufStartTime) / u) * u) + } + for (var s = 0; s < e.bufQueue.length; s++) { + if (e.bufsProcessed >= e.bufQueue.length) { + if (!e.looping) { + Re.setSourceState(e, 4116); + break + } + e.bufsProcessed %= e.bufQueue.length + } + var c; + if ((c = e.bufQueue[e.bufsProcessed]).length > 0) { + if (r < (t = e.bufStartTime + c.audioBuf.duration / e.playbackRate)) { + e.bufOffset = (r - e.bufStartTime) * e.playbackRate; + break + } + e.bufStartTime = t + } + e.bufOffset = 0, e.bufsProcessed++ + } + } + return r + }, + cancelPendingSourceAudio: function(e) { + Re.updateSourceTime(e); + for (var r = 1; r < e.audioQueue.length; r++) { + e.audioQueue[r].stop() + } + e.audioQueue.length > 1 && (e.audioQueue.length = 1) + }, + stopSourceAudio: function(e) { + for (var r = 0; r < e.audioQueue.length; r++) e.audioQueue[r].stop(); + e.audioQueue.length = 0 + }, + setSourceState: function(e, r) { + 4114 === r ? (4114 !== e.state && 4116 != e.state || (e.bufsProcessed = 0, e.bufOffset = 0), Re.stopSourceAudio(e), e.state = 4114, e.bufStartTime = Number.NEGATIVE_INFINITY, Re.scheduleSourceAudio(e)) : 4115 === r ? 4114 === e.state && (Re.updateSourceTime(e), Re.stopSourceAudio(e), e.state = 4115) : 4116 === r ? 4113 !== e.state && (e.state = 4116, e.bufsProcessed = e.bufQueue.length, e.bufStartTime = Number.NEGATIVE_INFINITY, e.bufOffset = 0, Re.stopSourceAudio(e)) : 4113 === r && 4113 !== e.state && (e.state = 4113, e.bufsProcessed = 0, e.bufStartTime = Number.NEGATIVE_INFINITY, e.bufOffset = 0, Re.stopSourceAudio(e)) + }, + initSourcePanner: function(e) { + if (4144 !== e.type) { + for (var r = Re.buffers[0], t = 0; t < e.bufQueue.length; t++) + if (0 !== e.bufQueue[t].id) { + r = e.bufQueue[t]; + break + } if (1 === e.spatialize || 2 === e.spatialize && 1 === r.channels) { + if (e.panner) return; + e.panner = e.context.audioCtx.createPanner(), Re.updateSourceGlobal(e), Re.updateSourceSpace(e), e.panner.connect(e.context.gain), e.gain.disconnect(), e.gain.connect(e.panner) + } else { + if (!e.panner) return; + e.panner.disconnect(), e.gain.disconnect(), e.gain.connect(e.context.gain), e.panner = null + } + } + }, + updateContextGlobal: function(e) { + for (var r in e.sources) Re.updateSourceGlobal(e.sources[r]) + }, + updateSourceGlobal: function(e) { + var r = e.panner; + if (r) switch (r.refDistance = e.refDistance, r.maxDistance = e.maxDistance, r.rolloffFactor = e.rolloffFactor, r.panningModel = e.context.hrtf ? "HRTF" : "equalpower", e.context.sourceDistanceModel ? e.distanceModel : e.context.distanceModel) { + case 0: + r.distanceModel = "inverse", r.refDistance = 340282e33; + break; + case 53249: + case 53250: + r.distanceModel = "inverse"; + break; + case 53251: + case 53252: + r.distanceModel = "linear"; + break; + case 53253: + case 53254: + r.distanceModel = "exponential" + } + }, + updateListenerSpace: function(e) { + var r = e.audioCtx.listener; + for (var t in r.positionX ? (r.positionX.value = e.listener.position[0], r.positionY.value = e.listener.position[1], r.positionZ.value = e.listener.position[2]) : r.setPosition(e.listener.position[0], e.listener.position[1], e.listener.position[2]), r.forwardX ? (r.forwardX.value = e.listener.direction[0], r.forwardY.value = e.listener.direction[1], r.forwardZ.value = e.listener.direction[2], r.upX.value = e.listener.up[0], r.upY.value = e.listener.up[1], r.upZ.value = e.listener.up[2]) : r.setOrientation(e.listener.direction[0], e.listener.direction[1], e.listener.direction[2], e.listener.up[0], e.listener.up[1], e.listener.up[2]), e.sources) Re.updateSourceSpace(e.sources[t]) + }, + updateSourceSpace: function(e) { + if (e.panner) { + var r = e.panner, + t = e.position[0], + n = e.position[1], + i = e.position[2], + a = e.direction[0], + o = e.direction[1], + u = e.direction[2], + s = e.context.listener, + c = s.position[0], + l = s.position[1], + f = s.position[2]; + if (e.relative) { + var d = -s.direction[0], + m = -s.direction[1], + p = -s.direction[2], + v = s.up[0], + g = s.up[1], + h = s.up[2], + _ = function(e, r, t) { + var n = Math.sqrt(e * e + r * r + t * t); + return n < Number.EPSILON ? 0 : 1 / n + }, + b = _(d, m, p); + d *= b, m *= b, p *= b; + var y = (g *= b = _(v, g, h)) * p - (h *= b) * m, + w = h * d - (v *= b) * p, + E = v * m - g * d, + x = a, + k = o, + C = u; + a = x * (y *= b = _(y, w, E)) + k * (v = m * (E *= b) - p * (w *= b)) + C * d, o = x * w + k * (g = p * y - d * E) + C * m, u = x * E + k * (h = d * w - m * y) + C * p, t = (x = t) * y + (k = n) * v + (C = i) * d, n = x * w + k * g + C * m, i = x * E + k * h + C * p, t += c, n += l, i += f + } + r.positionX ? (r.positionX.value = t, r.positionY.value = n, r.positionZ.value = i) : r.setPosition(t, n, i), r.orientationX ? (r.orientationX.value = a, r.orientationY.value = o, r.orientationZ.value = u) : r.setOrientation(a, o, u); + var S = e.dopplerShift, + D = e.velocity[0], + F = e.velocity[1], + A = e.velocity[2], + P = s.velocity[0], + T = s.velocity[1], + L = s.velocity[2]; + if (t === c && n === l && i === f || D === P && F === T && A === L) e.dopplerShift = 1; + else { + var I = e.context.speedOfSound, + B = e.context.dopplerFactor, + R = c - t, + M = l - n, + N = f - i, + U = Math.sqrt(R * R + M * M + N * N), + O = (R * P + M * T + N * L) / U, + G = (R * D + M * F + N * A) / U; + O = Math.min(O, I / B), G = Math.min(G, I / B), e.dopplerShift = (I - B * O) / (I - B * G) + } + e.dopplerShift !== S && Re.updateSourceRate(e) + } + }, + updateSourceRate: function(e) { + if (4114 === e.state) { + Re.cancelPendingSourceAudio(e); + var r, t = e.audioQueue[0]; + if (!t) return; + r = 4136 === e.type && e.looping ? Number.POSITIVE_INFINITY : (t.buffer.duration - t._startOffset) / e.playbackRate, t._duration = r, t.playbackRate.value = e.playbackRate, Re.scheduleSourceAudio(e) + } + }, + sourceDuration: function(e) { + for (var r = 0, t = 0; t < e.bufQueue.length; t++) { + var n = e.bufQueue[t].audioBuf; + r += n ? n.duration : 0 + } + return r + }, + sourceTell: function(e) { + Re.updateSourceTime(e); + for (var r = 0, t = 0; t < e.bufsProcessed; t++) r += e.bufQueue[t].audioBuf.duration; + return r += e.bufOffset + }, + sourceSeek: function(e, r) { + var t = 4114 == e.state; + if (t && Re.setSourceState(e, 4113), null !== e.bufQueue[e.bufsProcessed].audioBuf) { + for (e.bufsProcessed = 0; r > e.bufQueue[e.bufsProcessed].audioBuf.duration;) r -= e.bufQueue[e.bufsProcessed].audiobuf.duration, e.bufsProcessed++; + e.bufOffset = r + } + t && Re.setSourceState(e, 4114) + }, + getGlobalParam: function(e, r) { + if (!Re.currentCtx) return null; + switch (r) { + case 49152: + return Re.currentCtx.dopplerFactor; + case 49155: + return Re.currentCtx.speedOfSound; + case 53248: + return Re.currentCtx.distanceModel; + default: + return Re.currentCtx.err = 40962, null + } + }, + setGlobalParam: function(e, r, t) { + if (Re.currentCtx) switch (r) { + case 49152: + if (!Number.isFinite(t) || t < 0) return void(Re.currentCtx.err = 40963); + Re.currentCtx.dopplerFactor = t, Re.updateListenerSpace(Re.currentCtx); + break; + case 49155: + if (!Number.isFinite(t) || t <= 0) return void(Re.currentCtx.err = 40963); + Re.currentCtx.speedOfSound = t, Re.updateListenerSpace(Re.currentCtx); + break; + case 53248: + switch (t) { + case 0: + case 53249: + case 53250: + case 53251: + case 53252: + case 53253: + case 53254: + Re.currentCtx.distanceModel = t, Re.updateContextGlobal(Re.currentCtx); + break; + default: + return void(Re.currentCtx.err = 40963) + } + break; + default: + return void(Re.currentCtx.err = 40962) + } + }, + getListenerParam: function(e, r) { + if (!Re.currentCtx) return null; + switch (r) { + case 4100: + return Re.currentCtx.listener.position; + case 4102: + return Re.currentCtx.listener.velocity; + case 4111: + return Re.currentCtx.listener.direction.concat(Re.currentCtx.listener.up); + case 4106: + return Re.currentCtx.gain.gain.value; + default: + return Re.currentCtx.err = 40962, null + } + }, + setListenerParam: function(e, r, t) { + if (Re.currentCtx) + if (null !== t) { + var n = Re.currentCtx.listener; + switch (r) { + case 4100: + if (!Number.isFinite(t[0]) || !Number.isFinite(t[1]) || !Number.isFinite(t[2])) return void(Re.currentCtx.err = 40963); + n.position[0] = t[0], n.position[1] = t[1], n.position[2] = t[2], Re.updateListenerSpace(Re.currentCtx); + break; + case 4102: + if (!Number.isFinite(t[0]) || !Number.isFinite(t[1]) || !Number.isFinite(t[2])) return void(Re.currentCtx.err = 40963); + n.velocity[0] = t[0], n.velocity[1] = t[1], n.velocity[2] = t[2], Re.updateListenerSpace(Re.currentCtx); + break; + case 4106: + if (!Number.isFinite(t) || t < 0) return void(Re.currentCtx.err = 40963); + Re.currentCtx.gain.gain.value = t; + break; + case 4111: + if (!(Number.isFinite(t[0]) && Number.isFinite(t[1]) && Number.isFinite(t[2]) && Number.isFinite(t[3]) && Number.isFinite(t[4]) && Number.isFinite(t[5]))) return void(Re.currentCtx.err = 40963); + n.direction[0] = t[0], n.direction[1] = t[1], n.direction[2] = t[2], n.up[0] = t[3], n.up[1] = t[4], n.up[2] = t[5], Re.updateListenerSpace(Re.currentCtx); + break; + default: + return void(Re.currentCtx.err = 40962) + } + } else Re.currentCtx.err = 40962 + }, + getBufferParam: function(e, r, t) { + if (Re.currentCtx) { + var n = Re.buffers[r]; + if (n && 0 !== r) switch (t) { + case 8193: + return n.frequency; + case 8194: + return 8 * n.bytesPerSample; + case 8195: + return n.channels; + case 8196: + return n.length * n.bytesPerSample * n.channels; + case 8213: + return 0 === n.length ? [0, 0] : [(n.audioBuf._loopStart || 0) * n.frequency, (n.audioBuf._loopEnd || n.length) * n.frequency]; + default: + return Re.currentCtx.err = 40962, null + } else Re.currentCtx.err = 40961 + } + }, + setBufferParam: function(e, r, t, n) { + if (Re.currentCtx) { + var i = Re.buffers[r]; + if (i && 0 !== r) + if (null !== n) switch (t) { + case 8196: + if (0 !== n) return void(Re.currentCtx.err = 40963); + break; + case 8213: + if (n[0] < 0 || n[0] > i.length || n[1] < 0 || n[1] > i.Length || n[0] >= n[1]) return void(Re.currentCtx.err = 40963); + if (i.refCount > 0) return void(Re.currentCtx.err = 40964); + i.audioBuf && (i.audioBuf._loopStart = n[0] / i.frequency, i.audioBuf._loopEnd = n[1] / i.frequency); + break; + default: + return void(Re.currentCtx.err = 40962) + } else Re.currentCtx.err = 40962; + else Re.currentCtx.err = 40961 + } + }, + getSourceParam: function(e, r, t) { + if (!Re.currentCtx) return null; + var n = Re.currentCtx.sources[r]; + if (!n) return Re.currentCtx.err = 40961, null; + switch (t) { + case 514: + return n.relative; + case 4097: + return n.coneInnerAngle; + case 4098: + return n.coneOuterAngle; + case 4099: + return n.pitch; + case 4100: + return n.position; + case 4101: + return n.direction; + case 4102: + return n.velocity; + case 4103: + return n.looping; + case 4105: + return 4136 === n.type ? n.bufQueue[0].id : 0; + case 4106: + return n.gain.gain.value; + case 4109: + return n.minGain; + case 4110: + return n.maxGain; + case 4112: + return n.state; + case 4117: + return 1 === n.bufQueue.length && 0 === n.bufQueue[0].id ? 0 : n.bufQueue.length; + case 4118: + return 1 === n.bufQueue.length && 0 === n.bufQueue[0].id || n.looping ? 0 : n.bufsProcessed; + case 4128: + return n.refDistance; + case 4129: + return n.rolloffFactor; + case 4130: + return n.coneOuterGain; + case 4131: + return n.maxDistance; + case 4132: + return Re.sourceTell(n); + case 4133: + return (i = Re.sourceTell(n)) > 0 && (i *= n.bufQueue[0].frequency), i; + case 4134: + var i; + return (i = Re.sourceTell(n)) > 0 && (i *= n.bufQueue[0].frequency * n.bufQueue[0].bytesPerSample), i; + case 4135: + return n.type; + case 4628: + return n.spatialize; + case 8201: + for (var a = 0, o = 0, u = 0; u < n.bufQueue.length; u++) a += n.bufQueue[u].length, 0 !== n.bufQueue[u].id && (o = n.bufQueue[u].bytesPerSample * n.bufQueue[u].channels); + return a * o; + case 8202: + for (a = 0, u = 0; u < n.bufQueue.length; u++) a += n.bufQueue[u].length; + return a; + case 8203: + return Re.sourceDuration(n); + case 53248: + return n.distanceModel; + default: + return Re.currentCtx.err = 40962, null + } + }, + setSourceParam: function(e, r, t, n) { + if (Re.currentCtx) { + var i = Re.currentCtx.sources[r]; + if (i) + if (null !== n) switch (t) { + case 514: + if (1 === n) i.relative = !0, Re.updateSourceSpace(i); + else { + if (0 !== n) return void(Re.currentCtx.err = 40963); + i.relative = !1, Re.updateSourceSpace(i) + } + break; + case 4097: + if (!Number.isFinite(n)) return void(Re.currentCtx.err = 40963); + i.coneInnerAngle = n, i.panner && (i.panner.coneInnerAngle = n % 360); + break; + case 4098: + if (!Number.isFinite(n)) return void(Re.currentCtx.err = 40963); + i.coneOuterAngle = n, i.panner && (i.panner.coneOuterAngle = n % 360); + break; + case 4099: + if (!Number.isFinite(n) || n <= 0) return void(Re.currentCtx.err = 40963); + if (i.pitch === n) break; + i.pitch = n, Re.updateSourceRate(i); + break; + case 4100: + if (!Number.isFinite(n[0]) || !Number.isFinite(n[1]) || !Number.isFinite(n[2])) return void(Re.currentCtx.err = 40963); + i.position[0] = n[0], i.position[1] = n[1], i.position[2] = n[2], Re.updateSourceSpace(i); + break; + case 4101: + if (!Number.isFinite(n[0]) || !Number.isFinite(n[1]) || !Number.isFinite(n[2])) return void(Re.currentCtx.err = 40963); + i.direction[0] = n[0], i.direction[1] = n[1], i.direction[2] = n[2], Re.updateSourceSpace(i); + break; + case 4102: + if (!Number.isFinite(n[0]) || !Number.isFinite(n[1]) || !Number.isFinite(n[2])) return void(Re.currentCtx.err = 40963); + i.velocity[0] = n[0], i.velocity[1] = n[1], i.velocity[2] = n[2], Re.updateSourceSpace(i); + break; + case 4103: + if (1 === n) { + if (i.looping = !0, Re.updateSourceTime(i), 4136 === i.type && i.audioQueue.length > 0)(a = i.audioQueue[0]).loop = !0, a._duration = Number.POSITIVE_INFINITY + } else { + if (0 !== n) return void(Re.currentCtx.err = 40963); + i.looping = !1; + var a, o = Re.updateSourceTime(i); + 4136 === i.type && i.audioQueue.length > 0 && ((a = i.audioQueue[0]).loop = !1, a._duration = i.bufQueue[0].audioBuf.duration / i.playbackRate, a._startTime = o - i.bufOffset / i.playbackRate) + } + break; + case 4105: + if (4114 === i.state || 4115 === i.state) return void(Re.currentCtx.err = 40964); + if (0 === n) { + for (var u = 0; u < i.bufQueue.length; u++) i.bufQueue[u].refCount--; + i.bufQueue.length = 1, i.bufQueue[0] = Re.buffers[0], i.bufsProcessed = 0, i.type = 4144 + } else { + if (!(d = Re.buffers[n])) return void(Re.currentCtx.err = 40963); + for (u = 0; u < i.bufQueue.length; u++) i.bufQueue[u].refCount--; + i.bufQueue.length = 0, d.refCount++, i.bufQueue = [d], i.bufsProcessed = 0, i.type = 4136 + } + Re.initSourcePanner(i), Re.scheduleSourceAudio(i); + break; + case 4106: + if (!Number.isFinite(n) || n < 0) return void(Re.currentCtx.err = 40963); + i.gain.gain.value = n; + break; + case 4109: + if (!Number.isFinite(n) || n < 0 || n > Math.min(i.maxGain, 1)) return void(Re.currentCtx.err = 40963); + i.minGain = n; + break; + case 4110: + if (!Number.isFinite(n) || n < Math.max(0, i.minGain) || n > 1) return void(Re.currentCtx.err = 40963); + i.maxGain = n; + break; + case 4128: + if (!Number.isFinite(n) || n < 0) return void(Re.currentCtx.err = 40963); + i.refDistance = n, i.panner && (i.panner.refDistance = n); + break; + case 4129: + if (!Number.isFinite(n) || n < 0) return void(Re.currentCtx.err = 40963); + i.rolloffFactor = n, i.panner && (i.panner.rolloffFactor = n); + break; + case 4130: + if (!Number.isFinite(n) || n < 0 || n > 1) return void(Re.currentCtx.err = 40963); + i.coneOuterGain = n, i.panner && (i.panner.coneOuterGain = n); + break; + case 4131: + if (!Number.isFinite(n) || n < 0) return void(Re.currentCtx.err = 40963); + i.maxDistance = n, i.panner && (i.panner.maxDistance = n); + break; + case 4132: + if (n < 0 || n > Re.sourceDuration(i)) return void(Re.currentCtx.err = 40963); + Re.sourceSeek(i, n); + break; + case 4133: + if ((l = Re.sourceDuration(i)) > 0) { + var s; + for (var c in i.bufQueue) + if (c) { + s = i.bufQueue[c].frequency; + break + } n /= s + } + if (n < 0 || n > l) return void(Re.currentCtx.err = 40963); + Re.sourceSeek(i, n); + break; + case 4134: + var l; + if ((l = Re.sourceDuration(i)) > 0) { + var f; + for (var c in i.bufQueue) + if (c) { + var d; + f = (d = i.bufQueue[c]).frequency * d.bytesPerSample * d.channels; + break + } n /= f + } + if (n < 0 || n > l) return void(Re.currentCtx.err = 40963); + Re.sourceSeek(i, n); + break; + case 4628: + if (0 !== n && 1 !== n && 2 !== n) return void(Re.currentCtx.err = 40963); + i.spatialize = n, Re.initSourcePanner(i); + break; + case 8201: + case 8202: + case 8203: + Re.currentCtx.err = 40964; + break; + case 53248: + switch (n) { + case 0: + case 53249: + case 53250: + case 53251: + case 53252: + case 53253: + case 53254: + i.distanceModel = n, Re.currentCtx.sourceDistanceModel && Re.updateContextGlobal(Re.currentCtx); + break; + default: + return void(Re.currentCtx.err = 40963) + } + break; + default: + return void(Re.currentCtx.err = 40962) + } else Re.currentCtx.err = 40962; + else Re.currentCtx.err = 40961 + } + }, + captures: {}, + sharedCaptureAudioCtx: null, + requireValidCaptureDevice: function(e, r) { + if (0 === e) return Re.alcErr = 40961, null; + var t = Re.captures[e]; + return t ? t.mediaStreamError ? (Re.alcErr = 40961, null) : t : (Re.alcErr = 40961, null) + } + }; + + function Me(e, r, t) { + switch (r) { + case 514: + case 4097: + case 4098: + case 4103: + case 4105: + case 4128: + case 4129: + case 4131: + case 4132: + case 4133: + case 4134: + case 4628: + case 8201: + case 8202: + case 53248: + Re.setSourceParam("alSourcei", e, r, t); + break; + default: + Re.setSourceParam("alSourcei", e, r, null) + } + } + var Ne = { + errorCode: 12288, + defaultDisplayInitialized: !1, + currentContext: 0, + currentReadSurface: 0, + currentDrawSurface: 0, + contextAttributes: { + alpha: !1, + depth: !1, + stencil: !1, + antialias: !1 + }, + stringCache: {}, + setErrorCode: function(e) { + Ne.errorCode = e + }, + chooseConfig: function(e, r, t, n, i) { + if (62e3 != e) return Ne.setErrorCode(12296), 0; + if (r) + for (;;) { + var a = q[r >> 2]; + if (12321 == a) { + var o = q[r + 4 >> 2]; + Ne.contextAttributes.alpha = o > 0 + } else if (12325 == a) { + var u = q[r + 4 >> 2]; + Ne.contextAttributes.depth = u > 0 + } else if (12326 == a) { + var s = q[r + 4 >> 2]; + Ne.contextAttributes.stencil = s > 0 + } else if (12337 == a) { + var c = q[r + 4 >> 2]; + Ne.contextAttributes.antialias = c > 0 + } else if (12338 == a) { + c = q[r + 4 >> 2]; + Ne.contextAttributes.antialias = 1 == c + } else if (12544 == a) { + var l = q[r + 4 >> 2]; + Ne.contextAttributes.lowLatency = 12547 != l + } else if (12344 == a) break; + r += 8 + } + return t && n || i ? (i && (q[i >> 2] = 1), t && n > 0 && (q[t >> 2] = 62002), Ne.setErrorCode(12288), 1) : (Ne.setErrorCode(12300), 0) + } + }; + var Ue = { + counter: 1, + lastError: 0, + buffers: [], + mappedBuffers: {}, + programs: [], + framebuffers: [], + renderbuffers: [], + textures: [], + uniforms: [], + shaders: [], + vaos: [], + contexts: [], + currentContext: null, + offscreenCanvases: {}, + timerQueriesEXT: [], + queries: [], + samplers: [], + transformFeedbacks: [], + syncs: [], + programInfos: {}, + stringCache: {}, + stringiCache: {}, + unpackAlignment: 4, + init: function() { + for (var e = new Float32Array(Ue.MINI_TEMP_BUFFER_SIZE), r = 0; r < Ue.MINI_TEMP_BUFFER_SIZE; r++) Ue.miniTempBufferFloatViews[r] = e.subarray(0, r + 1); + var t = new Int32Array(Ue.MINI_TEMP_BUFFER_SIZE); + for (r = 0; r < Ue.MINI_TEMP_BUFFER_SIZE; r++) Ue.miniTempBufferIntViews[r] = t.subarray(0, r + 1) + }, + recordError: function(e) { + Ue.lastError || (Ue.lastError = e) + }, + getNewId: function(e) { + for (var r = Ue.counter++, t = e.length; t < r; t++) e[t] = null; + return r + }, + MINI_TEMP_BUFFER_SIZE: 256, + miniTempBufferFloatViews: [0], + miniTempBufferIntViews: [0], + getSource: function(e, r, t, n) { + for (var i = "", a = 0; a < r; ++a) { + var o = n ? q[n + 4 * a >> 2] : -1; + i += L(q[t + 4 * a >> 2], o < 0 ? void 0 : o) + } + return i + }, + createContext: function(e, r) { + var t = r.majorVersion > 1 ? e.getContext("webgl2", r) : e.getContext("webgl", r); + return t ? Ue.registerContext(t, r) : 0 + }, + registerContext: function(e, r) { + var t = Ue.getNewId(Ue.contexts), + n = { + handle: t, + attributes: r, + version: r.majorVersion, + GLctx: e + }; + return e.canvas && (e.canvas.GLctxObject = n), Ue.contexts[t] = n, (void 0 === r.enableExtensionsByDefault || r.enableExtensionsByDefault) && Ue.initExtensions(n), t + }, + makeContextCurrent: function(e) { + return Ue.currentContext = Ue.contexts[e], r.ctx = Or = Ue.currentContext && Ue.currentContext.GLctx, !(e && !Or) + }, + getContext: function(e) { + return Ue.contexts[e] + }, + deleteContext: function(e) { + Ue.currentContext === Ue.contexts[e] && (Ue.currentContext = null), "object" == typeof Oe && Oe.removeAllHandlersOnTarget(Ue.contexts[e].GLctx.canvas), Ue.contexts[e] && Ue.contexts[e].GLctx.canvas && (Ue.contexts[e].GLctx.canvas.GLctxObject = void 0), Ue.contexts[e] = null + }, + initExtensions: function(e) { + if (e || (e = Ue.currentContext), !e.initExtensionsDone) { + e.initExtensionsDone = !0; + var r, t = e.GLctx; + (r = t).dibvbi = r.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"), t.disjointTimerQueryExt = t.getExtension("EXT_disjoint_timer_query"); + var n = ["OES_texture_float", "OES_texture_half_float", "OES_standard_derivatives", "OES_vertex_array_object", "WEBGL_compressed_texture_s3tc", "WEBGL_depth_texture", "OES_element_index_uint", "EXT_texture_filter_anisotropic", "EXT_frag_depth", "WEBGL_draw_buffers", "ANGLE_instanced_arrays", "OES_texture_float_linear", "OES_texture_half_float_linear", "EXT_blend_minmax", "EXT_shader_texture_lod", "EXT_texture_norm16", "WEBGL_compressed_texture_pvrtc", "EXT_color_buffer_half_float", "WEBGL_color_buffer_float", "EXT_sRGB", "WEBGL_compressed_texture_etc1", "EXT_disjoint_timer_query", "WEBGL_compressed_texture_etc", "WEBGL_compressed_texture_astc", "EXT_color_buffer_float", "WEBGL_compressed_texture_s3tc_srgb", "EXT_disjoint_timer_query_webgl2", "WEBKIT_WEBGL_compressed_texture_pvrtc"]; + (t.getSupportedExtensions() || []).forEach((function(e) { + -1 != n.indexOf(e) && t.getExtension(e) + })) + } + }, + populateUniformTable: function(e) { + for (var r = Ue.programs[e], t = Ue.programInfos[e] = { + uniforms: {}, + maxUniformLength: 0, + maxAttributeLength: -1, + maxUniformBlockNameLength: -1 + }, n = t.uniforms, i = Or.getProgramParameter(r, 35718), a = 0; a < i; ++a) { + var o = Or.getActiveUniform(r, a), + u = o.name; + t.maxUniformLength = Math.max(t.maxUniformLength, u.length + 1), "]" == u.slice(-1) && (u = u.slice(0, u.lastIndexOf("["))); + var s = Or.getUniformLocation(r, u); + if (s) { + var c = Ue.getNewId(Ue.uniforms); + n[u] = [o.size, c], Ue.uniforms[c] = s; + for (var l = 1; l < o.size; ++l) { + var f = u + "[" + l + "]"; + s = Or.getUniformLocation(r, f), c = Ue.getNewId(Ue.uniforms), Ue.uniforms[c] = s + } + } + } + } + }; + var Oe = { + keyEvent: 0, + mouseEvent: 0, + wheelEvent: 0, + uiEvent: 0, + focusEvent: 0, + deviceOrientationEvent: 0, + deviceMotionEvent: 0, + fullscreenChangeEvent: 0, + pointerlockChangeEvent: 0, + visibilityChangeEvent: 0, + touchEvent: 0, + previousFullscreenElement: null, + previousScreenX: null, + previousScreenY: null, + removeEventListenersRegistered: !1, + removeAllEventListeners: function() { + for (var e = Oe.eventHandlers.length - 1; e >= 0; --e) Oe._removeHandler(e); + Oe.eventHandlers = [], Oe.deferredCalls = [] + }, + registerRemoveEventListeners: function() { + Oe.removeEventListenersRegistered || (ee.push(Oe.removeAllEventListeners), Oe.removeEventListenersRegistered = !0) + }, + deferredCalls: [], + deferCall: function(e, r, t) { + function n(e, r) { + if (e.length != r.length) return !1; + for (var t in e) + if (e[t] != r[t]) return !1; + return !0 + } + for (var i in Oe.deferredCalls) { + var a = Oe.deferredCalls[i]; + if (a.targetFunction == e && n(a.argsList, t)) return + } + Oe.deferredCalls.push({ + targetFunction: e, + precedence: r, + argsList: t + }), Oe.deferredCalls.sort((function(e, r) { + return e.precedence < r.precedence + })) + }, + removeDeferredCalls: function(e) { + for (var r = 0; r < Oe.deferredCalls.length; ++r) Oe.deferredCalls[r].targetFunction == e && (Oe.deferredCalls.splice(r, 1), --r) + }, + canPerformEventHandlerRequests: function() { + return Oe.inEventHandler && Oe.currentEventHandler.allowsDeferredCalls + }, + runDeferredCalls: function() { + if (Oe.canPerformEventHandlerRequests()) + for (var e = 0; e < Oe.deferredCalls.length; ++e) { + var r = Oe.deferredCalls[e]; + Oe.deferredCalls.splice(e, 1), --e, r.targetFunction.apply(null, r.argsList) + } + }, + inEventHandler: 0, + currentEventHandler: null, + eventHandlers: [], + removeAllHandlersOnTarget: function(e, r) { + for (var t = 0; t < Oe.eventHandlers.length; ++t) Oe.eventHandlers[t].target != e || r && r != Oe.eventHandlers[t].eventTypeString || Oe._removeHandler(t--) + }, + _removeHandler: function(e) { + var r = Oe.eventHandlers[e]; + r.target.removeEventListener(r.eventTypeString, r.eventListenerFunc, r.useCapture), Oe.eventHandlers.splice(e, 1) + }, + registerOrRemoveHandler: function(e) { + var r = function(r) { + ++Oe.inEventHandler, Oe.currentEventHandler = e, Oe.runDeferredCalls(), e.handlerFunc(r), Oe.runDeferredCalls(), --Oe.inEventHandler + }; + if (e.callbackfunc) e.eventListenerFunc = r, e.target.addEventListener(e.eventTypeString, r, e.useCapture), Oe.eventHandlers.push(e), Oe.registerRemoveEventListeners(); + else + for (var t = 0; t < Oe.eventHandlers.length; ++t) Oe.eventHandlers[t].target == e.target && Oe.eventHandlers[t].eventTypeString == e.eventTypeString && Oe._removeHandler(t--) + }, + getNodeNameForTarget: function(e) { + return e ? e == window ? "#window" : e == screen ? "#screen" : e && e.nodeName ? e.nodeName : "" : "" + }, + fullscreenEnabled: function() { + return document.fullscreenEnabled || document.webkitFullscreenEnabled + } + }, + Ge = {}; + var je = [0, document, window]; + + function ze(e) { + var r; + return e = (r = e) > 2 ? L(r) : r, je[e] || document.querySelector(e) + } + + function qe(e) { + return ze(e) + } + + function Qe(e, r, t) { + var n = qe(e); + if (!n) return -4; + q[r >> 2] = n.width, q[t >> 2] = n.height + } + + function Ve(e) { + var r = yt(), + t = wt(8), + n = t + 4, + i = wt(e.id.length + 1); + B(e.id, i, e.id.length + 1); + Qe(i, t, n); + var a = [q[t >> 2], q[n >> 2]]; + return Et(r), a + } + + function Xe(e, r, t) { + var n = qe(e); + return n ? (n.width = r, n.height = t, 0) : -4 + } + + function He(e, r, t) { + if (e.controlTransferredOffscreen) { + var n = yt(), + i = wt(e.id.length + 1); + B(e.id, i, e.id.length + 1), Xe(i, r, t), Et(n) + } else e.width = r, e.height = t + } + + function We(e, r, t) { + e.style.paddingLeft = e.style.paddingRight = t + "px", e.style.paddingTop = e.style.paddingBottom = r + "px" + } + + function Ye(e) { + return je.indexOf(e) < 0 ? e.getBoundingClientRect() : { + left: 0, + top: 0 + } + } + + function Ze(e, r) { + var t = function(e) { + var r = Ve(e), + t = r[0], + n = r[1], + i = e.style.width, + a = e.style.height, + o = e.style.backgroundColor, + u = document.body.style.backgroundColor, + s = e.style.paddingLeft, + c = e.style.paddingRight, + l = e.style.paddingTop, + f = e.style.paddingBottom, + d = e.style.marginLeft, + m = e.style.marginRight, + p = e.style.marginTop, + v = e.style.marginBottom, + g = document.body.style.margin, + h = document.documentElement.style.overflow, + _ = document.body.scroll, + b = e.style.imageRendering; + + function y() { + document.fullscreenElement || document.webkitFullscreenElement || document.msFullscreenElement || (document.removeEventListener("fullscreenchange", y), document.removeEventListener("webkitfullscreenchange", y), He(e, t, n), e.style.width = i, e.style.height = a, e.style.backgroundColor = o, u || (document.body.style.backgroundColor = "white"), document.body.style.backgroundColor = u, e.style.paddingLeft = s, e.style.paddingRight = c, e.style.paddingTop = l, e.style.paddingBottom = f, e.style.marginLeft = d, e.style.marginRight = m, e.style.marginTop = p, e.style.marginBottom = v, document.body.style.margin = g, document.documentElement.style.overflow = h, document.body.scroll = _, e.style.imageRendering = b, e.GLctxObject && e.GLctxObject.GLctx.viewport(0, 0, t, n), Ge.canvasResizedCallback && mt(Ge.canvasResizedCallback, 37, 0, Ge.canvasResizedCallbackUserData)) + } + return document.addEventListener("fullscreenchange", y), document.addEventListener("webkitfullscreenchange", y), y + }(e), + n = r.softFullscreen ? innerWidth : screen.width, + i = r.softFullscreen ? innerHeight : screen.height, + a = Ye(e), + o = a.width, + u = a.height, + s = Ve(e), + c = s[0], + l = s[1]; + if (3 == r.scaleMode) We(e, (i - u) / 2, (n - o) / 2), n = o, i = u; + else if (2 == r.scaleMode) + if (n * l < c * i) { + var f = l * n / c; + We(e, (i - f) / 2, 0), i = f + } else { + var d = c * i / l; + We(e, 0, (n - d) / 2), n = d + } e.style.backgroundColor || (e.style.backgroundColor = "black"), document.body.style.backgroundColor || (document.body.style.backgroundColor = "black"), e.style.width = n + "px", e.style.height = i + "px", 1 == r.filteringMode && (e.style.imageRendering = "optimizeSpeed", e.style.imageRendering = "-moz-crisp-edges", e.style.imageRendering = "-o-crisp-edges", e.style.imageRendering = "-webkit-optimize-contrast", e.style.imageRendering = "optimize-contrast", e.style.imageRendering = "crisp-edges", e.style.imageRendering = "pixelated"); + var m = 2 == r.canvasResolutionScaleMode ? devicePixelRatio : 1; + if (0 != r.canvasResolutionScaleMode) { + var p = n * m | 0, + v = i * m | 0; + He(e, p, v), e.GLctxObject && e.GLctxObject.GLctx.viewport(0, 0, p, v) + } + return t + } + + function Ke(e, r) { + if (0 == r.scaleMode && 0 == r.canvasResolutionScaleMode || Ze(e, r), e.requestFullscreen) e.requestFullscreen(); + else { + if (!e.webkitRequestFullscreen) return Oe.fullscreenEnabled() ? -3 : -1; + e.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT) + } + return Ge = r, r.canvasResizedCallback && mt(r.canvasResizedCallback, 37, 0, r.canvasResizedCallbackUserData), 0 + } + + function $e(e) { + if (e.requestPointerLock) e.requestPointerLock(); + else { + if (!e.msRequestPointerLock) return document.body.requestPointerLock || document.body.msRequestPointerLock ? -3 : -1; + e.msRequestPointerLock() + } + return 0 + } + + function Je(e) { + var r = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || document.msFullscreenElement, + t = !!r; + q[e >> 2] = t, q[e + 4 >> 2] = Oe.fullscreenEnabled(); + var n = t ? r : Oe.previousFullscreenElement, + i = Oe.getNodeNameForTarget(n), + a = n && n.id ? n.id : ""; + B(i, e + 8, 128), B(a, e + 136, 128), q[e + 264 >> 2] = n ? n.clientWidth : 0, q[e + 268 >> 2] = n ? n.clientHeight : 0, q[e + 272 >> 2] = screen.width, q[e + 276 >> 2] = screen.height, t && (Oe.previousFullscreenElement = r) + } + + function er(e, r) { + X[e >> 3] = r.timestamp; + for (var t = 0; t < r.axes.length; ++t) X[e + 8 * t + 16 >> 3] = r.axes[t]; + for (t = 0; t < r.buttons.length; ++t) "object" == typeof r.buttons[t] ? X[e + 8 * t + 528 >> 3] = r.buttons[t].value : X[e + 8 * t + 528 >> 3] = r.buttons[t]; + for (t = 0; t < r.buttons.length; ++t) "object" == typeof r.buttons[t] ? q[e + 4 * t + 1040 >> 2] = r.buttons[t].pressed : q[e + 4 * t + 1040 >> 2] = 1 == r.buttons[t]; + q[e + 1296 >> 2] = r.connected, q[e + 1300 >> 2] = r.index, q[e + 8 >> 2] = r.axes.length, q[e + 12 >> 2] = r.buttons.length, B(r.id, e + 1304, 64), B(r.mapping, e + 1368, 64) + } + + function rr(e, r) { + return (e >>> 0) + 4294967296 * r + } + var tr = []; + + function nr(e, r, t, n) { + Or.drawElements(e, r, t, n) + } + + function ir(e, r, t, n) { + for (var i = 0; i < e; i++) { + var a = Or[t](), + o = a && Ue.getNewId(n); + a ? (a.name = o, n[o] = a) : Ue.recordError(1282), q[r + 4 * i >> 2] = o + } + } + + function ar(e, r) { + Q[e >> 2] = r, Q[e + 4 >> 2] = (r - Q[e >> 2]) / 4294967296 + } + + function or(e, r, t) { + if (r) { + var n = void 0; + switch (e) { + case 36346: + n = 1; + break; + case 36344: + return void(0 != t && 1 != t && Ue.recordError(1280)); + case 34814: + case 36345: + n = 0; + break; + case 34466: + var i = Or.getParameter(34467); + n = i ? i.length : 0; + break; + case 33309: + if (Ue.currentContext.version < 2) return void Ue.recordError(1282); + n = 2 * (Or.getSupportedExtensions() || []).length; + break; + case 33307: + case 33308: + if (Ue.currentContext.version < 2) return void Ue.recordError(1280); + n = 33307 == e ? 3 : 0 + } + if (void 0 === n) { + var a = Or.getParameter(e); + switch (typeof a) { + case "number": + n = a; + break; + case "boolean": + n = a ? 1 : 0; + break; + case "string": + return void Ue.recordError(1280); + case "object": + if (null === a) switch (e) { + 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: + n = 0; + break; + default: + return void Ue.recordError(1280) + } else { + if (a instanceof Float32Array || a instanceof Uint32Array || a instanceof Int32Array || a instanceof Array) { + for (var o = 0; o < a.length; ++o) switch (t) { + case 0: + q[r + 4 * o >> 2] = a[o]; + break; + case 2: + V[r + 4 * o >> 2] = a[o]; + break; + case 4: + O[r + o >> 0] = a[o] ? 1 : 0 + } + return + } + try { + n = 0 | a.name + } catch (r) { + return Ue.recordError(1280), void p("GL_INVALID_ENUM in glGet" + t + "v: Unknown object returned from WebGL getParameter(" + e + ")! (error: " + r + ")") + } + } + break; + default: + return Ue.recordError(1280), void p("GL_INVALID_ENUM in glGet" + t + "v: Native code calling glGet" + t + "v(" + e + ") and it returns " + a + " of type " + typeof a + "!") + } + } + switch (t) { + case 1: + ar(r, n); + break; + case 0: + q[r >> 2] = n; + break; + case 2: + V[r >> 2] = n; + break; + case 4: + O[r >> 0] = n ? 1 : 0 + } + } else Ue.recordError(1281) + } + + function ur(e, r, t, n) { + if (t) { + var i, a = Or.getIndexedParameter(e, r); + switch (typeof a) { + case "boolean": + i = a ? 1 : 0; + break; + case "number": + i = a; + break; + case "object": + if (null === a) switch (e) { + case 35983: + case 35368: + i = 0; + break; + default: + return void Ue.recordError(1280) + } else { + if (!(a instanceof WebGLBuffer)) return void Ue.recordError(1280); + i = 0 | a.name + } + break; + default: + return void Ue.recordError(1280) + } + switch (n) { + case 1: + ar(t, i); + break; + case 0: + q[t >> 2] = i; + break; + case 2: + V[t >> 2] = i; + break; + case 4: + O[t >> 0] = i ? 1 : 0; + break; + default: + throw "internal emscriptenWebGLGetIndexed() error, bad type: " + n + } + } else Ue.recordError(1281) + } + + function sr(e) { + var r = R(e) + 1, + t = Zr(r); + return B(e, t, r), t + } + + function cr(e) { + return parseInt(e) + } + + function lr(e, r, t, n) { + if (t) { + var i = Or.getUniform(Ue.programs[e], Ue.uniforms[r]); + if ("number" == typeof i || "boolean" == typeof i) switch (n) { + case 0: + q[t >> 2] = i; + break; + case 2: + V[t >> 2] = i; + break; + default: + throw "internal emscriptenWebGLGetUniform() error, bad type: " + n + } else + for (var a = 0; a < i.length; a++) switch (n) { + case 0: + q[t + 4 * a >> 2] = i[a]; + break; + case 2: + V[t + 4 * a >> 2] = i[a]; + break; + default: + throw "internal emscriptenWebGLGetUniform() error, bad type: " + n + } + } else Ue.recordError(1281) + } + + function fr(e, r, t, n) { + if (t) { + var i = Or.getVertexAttrib(e, r); + if (34975 == r) q[t >> 2] = i && i.name; + else if ("number" == typeof i || "boolean" == typeof i) switch (n) { + case 0: + q[t >> 2] = i; + break; + case 2: + V[t >> 2] = i; + break; + case 5: + q[t >> 2] = Math.fround(i); + break; + default: + throw "internal emscriptenWebGLGetVertexAttrib() error, bad type: " + n + } else + for (var a = 0; a < i.length; a++) switch (n) { + case 0: + q[t + 4 * a >> 2] = i[a]; + break; + case 2: + V[t + 4 * a >> 2] = i[a]; + break; + case 5: + q[t + 4 * a >> 2] = Math.fround(i[a]); + break; + default: + throw "internal emscriptenWebGLGetVertexAttrib() error, bad type: " + n + } + } else Ue.recordError(1281) + } + + function dr(e) { + return 0 == (e -= 5120) ? O : 1 == e ? G : 2 == e ? j : 4 == e ? q : 6 == e ? V : 5 == e || 28922 == e || 28520 == e || 30779 == e || 30782 == e ? Q : z + } + + function mr(e) { + return 31 - Math.clz32(e.BYTES_PER_ELEMENT) + } + + function pr(e, r, t, n, i, a) { + var o = dr(e), + u = mr(o), + s = 1 << u, + c = function(e, r, t, n) { + var i; + return r * (e * t + (i = n) - 1 & -i) + }(t, n, function(e) { + return { + 5: 3, + 6: 4, + 8: 2, + 29502: 3, + 29504: 4, + 26917: 2, + 26918: 2, + 29846: 3, + 29847: 4 + } [e - 6402] || 1 + }(r) * s, Ue.unpackAlignment); + return o.subarray(i >> u, i + c >> u) + } + + function vr(e) { + if (!e || !e.callee || !e.callee.name) return [null, "", ""]; + e.callee.toString(); + var r = e.callee.name, + t = "(", + n = !0; + for (var i in e) { + var a = e[i]; + n || (t += ", "), n = !1, t += "number" == typeof a || "string" == typeof a ? a : "(" + typeof a + ")" + } + t += ")"; + var o = e.callee.caller; + return n && (t = ""), [e = o ? o.arguments : [], r, t] + } + + function gr(e, r) { + 24 & e && (r = r.replace(/\s+$/, ""), r += (r.length > 0 ? "\n" : "") + function(e) { + var r = Ee(), + t = r.lastIndexOf("_emscripten_log"), + n = r.lastIndexOf("_emscripten_get_callstack"), + i = r.indexOf("\n", Math.max(t, n)) + 1; + r = r.slice(i), 8 & e && "undefined" == typeof emscripten_source_map && (h('Source map information is not available, emscripten_log with EM_LOG_C_STACK will be ignored. Build with "--pre-js $EMSCRIPTEN/src/emscripten-source-map.min.js" linker flag to add source map loading to code.'), e ^= 8, e |= 16); + var a = null; + if (128 & e) + for (a = vr(arguments); a[1].indexOf("_emscripten_") >= 0;) a = vr(a[0]); + var o = r.split("\n"); + r = ""; + var u = new RegExp("\\s*(.*?)@(.*?):([0-9]+):([0-9]+)"), + s = new RegExp("\\s*(.*?)@(.*):(.*)(:(.*))?"), + c = new RegExp("\\s*at (.*?) \\((.*):(.*):(.*)\\)"); + for (var l in o) { + var f = o[l], + d = "", + m = "", + p = 0, + v = 0, + g = c.exec(f); + if (g && 5 == g.length) d = g[1], m = g[2], p = g[3], v = g[4]; + else { + if ((g = u.exec(f)) || (g = s.exec(f)), !(g && g.length >= 4)) { + r += f + "\n"; + continue + } + d = g[1], m = g[2], p = g[3], v = 0 | g[4] + } + var _ = d; + _ || (_ = d); + var b = !1; + if (8 & e) { + var y = emscripten_source_map.originalPositionFor({ + line: p, + column: v + }); + (b = y && y.source) && (64 & e && (y.source = y.source.substring(y.source.replace(/\\/g, "/").lastIndexOf("/") + 1)), r += " at " + _ + " (" + y.source + ":" + y.line + ":" + y.column + ")\n") + }(16 & e || !b) && (64 & e && (m = m.substring(m.replace(/\\/g, "/").lastIndexOf("/") + 1)), r += (b ? " = " + d : " at " + _) + " (" + m + ":" + p + ":" + v + ")\n"), 128 & e && a[0] && (a[1] == d && a[2].length > 0 && (r = r.replace(/\s+$/, ""), r += " with values: " + a[1] + a[2] + "\n"), a = vr(a[0])) + } + return r.replace(/\s+$/, "") + }(e)), 1 & e ? 4 & e ? console.error(r) : 2 & e ? console.warn(r) : 512 & e ? console.info(r) : 256 & e ? console.debug(r) : console.log(r) : 6 & e ? p(r) : m(r) + } + var hr = 0; + + function _r(e) { + try { + return w.grow(e - U.byteLength + 65535 >>> 16), H(w.buffer), 1 + } catch (e) {} + } + + function br(e, r, t, n, i, a, o) { + Oe.focusEvent || (Oe.focusEvent = Zr(256)); + var u = { + target: ze(e), + eventTypeString: a, + callbackfunc: n, + handlerFunc: function(e) { + var t = e || event, + a = Oe.getNodeNameForTarget(t.target), + o = t.target.id ? t.target.id : "", + u = Oe.focusEvent; + B(a, u + 0, 128), B(o, u + 128, 128), mt(n, i, u, r) && t.preventDefault() + }, + useCapture: t + }; + Oe.registerOrRemoveHandler(u) + } + + function yr(e, r, t, n, i, a, o) { + Oe.fullscreenChangeEvent || (Oe.fullscreenChangeEvent = Zr(280)); + var u = { + target: e, + eventTypeString: a, + callbackfunc: n, + handlerFunc: function(e) { + var t = e || event, + a = Oe.fullscreenChangeEvent; + Je(a), mt(n, i, a, r) && t.preventDefault() + }, + useCapture: t + }; + Oe.registerOrRemoveHandler(u) + } + + function wr(e, r, t, n, i, a, o) { + Oe.gamepadEvent || (Oe.gamepadEvent = Zr(1432)); + var u = { + target: ze(e), + allowsDeferredCalls: !0, + eventTypeString: a, + callbackfunc: n, + handlerFunc: function(e) { + var t = e || event, + a = Oe.gamepadEvent; + er(a, t.gamepad), mt(n, i, a, r) && t.preventDefault() + }, + useCapture: t + }; + Oe.registerOrRemoveHandler(u) + } + + function Er(e, r, t, n, i, a, o) { + Oe.keyEvent || (Oe.keyEvent = Zr(164)); + var u = { + target: ze(e), + allowsDeferredCalls: !0, + eventTypeString: a, + callbackfunc: n, + handlerFunc: function(e) { + var t = e || event, + a = Oe.keyEvent; + B(t.key ? t.key : "", a + 0, 32), B(t.code ? t.code : "", a + 32, 32), q[a + 64 >> 2] = t.location, q[a + 68 >> 2] = t.ctrlKey, q[a + 72 >> 2] = t.shiftKey, q[a + 76 >> 2] = t.altKey, q[a + 80 >> 2] = t.metaKey, q[a + 84 >> 2] = t.repeat, B(t.locale ? t.locale : "", a + 88, 32), B(t.char ? t.char : "", a + 120, 32), q[a + 152 >> 2] = t.charCode, q[a + 156 >> 2] = t.keyCode, q[a + 160 >> 2] = t.which, mt(n, i, a, r) && t.preventDefault() + }, + useCapture: t + }; + Oe.registerOrRemoveHandler(u) + } + + function xr(e, r, t) { + q[e >> 2] = r.screenX, q[e + 4 >> 2] = r.screenY, q[e + 8 >> 2] = r.clientX, q[e + 12 >> 2] = r.clientY, q[e + 16 >> 2] = r.ctrlKey, q[e + 20 >> 2] = r.shiftKey, q[e + 24 >> 2] = r.altKey, q[e + 28 >> 2] = r.metaKey, j[e + 32 >> 1] = r.button, j[e + 34 >> 1] = r.buttons; + var n = r.movementX || r.screenX - Oe.previousScreenX, + i = r.movementY || r.screenY - Oe.previousScreenY; + q[e + 36 >> 2] = n, q[e + 40 >> 2] = i; + var a = Ye(t); + q[e + 44 >> 2] = r.clientX - a.left, q[e + 48 >> 2] = r.clientY - a.top, "wheel" !== r.type && "mousewheel" !== r.type && (Oe.previousScreenX = r.screenX, Oe.previousScreenY = r.screenY) + } + + function kr(e, r, t, n, i, a, o) { + Oe.mouseEvent || (Oe.mouseEvent = Zr(64)); + var u = { + target: e = ze(e), + allowsDeferredCalls: "mousemove" != a && "mouseenter" != a && "mouseleave" != a, + eventTypeString: a, + callbackfunc: n, + handlerFunc: function(t) { + var a = t || event; + xr(Oe.mouseEvent, a, e), mt(n, i, Oe.mouseEvent, r) && a.preventDefault() + }, + useCapture: t + }; + Oe.registerOrRemoveHandler(u) + } + + function Cr(e, r, t, n, i, a, o) { + Oe.pointerlockChangeEvent || (Oe.pointerlockChangeEvent = Zr(260)); + var u = { + target: e, + eventTypeString: a, + callbackfunc: n, + handlerFunc: function(e) { + var t = e || event, + a = Oe.pointerlockChangeEvent; + ! function(e) { + var r = document.pointerLockElement || document.mozPointerLockElement || document.webkitPointerLockElement || document.msPointerLockElement, + t = !!r; + q[e >> 2] = t; + var n = Oe.getNodeNameForTarget(r), + i = r && r.id ? r.id : ""; + B(n, e + 4, 128), B(i, e + 132, 128) + }(a), mt(n, i, a, r) && t.preventDefault() + }, + useCapture: t + }; + Oe.registerOrRemoveHandler(u) + } + + function Sr(e, r, t, n, i, a, o) { + Oe.touchEvent || (Oe.touchEvent = Zr(1684)); + var u = { + target: e = ze(e), + allowsDeferredCalls: "touchstart" == a || "touchend" == a, + eventTypeString: a, + callbackfunc: n, + handlerFunc: function(t) { + for (var a = t || event, o = {}, u = 0; u < a.touches.length; ++u) { + (s = a.touches[u]).changed = !1, o[s.identifier] = s + } + for (u = 0; u < a.changedTouches.length; ++u) { + o[(s = a.changedTouches[u]).identifier] = s, s.changed = !0 + } + for (u = 0; u < a.targetTouches.length; ++u) { + var s; + o[(s = a.targetTouches[u]).identifier].onTarget = !0 + } + var c = Oe.touchEvent, + l = c; + q[l + 4 >> 2] = a.ctrlKey, q[l + 8 >> 2] = a.shiftKey, q[l + 12 >> 2] = a.altKey, q[l + 16 >> 2] = a.metaKey, l += 20; + var f = Ye(e), + d = 0; + for (var u in o) { + var m = o[u]; + if (q[l >> 2] = m.identifier, q[l + 4 >> 2] = m.screenX, q[l + 8 >> 2] = m.screenY, q[l + 12 >> 2] = m.clientX, q[l + 16 >> 2] = m.clientY, q[l + 20 >> 2] = m.pageX, q[l + 24 >> 2] = m.pageY, q[l + 28 >> 2] = m.changed, q[l + 32 >> 2] = m.onTarget, q[l + 36 >> 2] = m.clientX - f.left, q[l + 40 >> 2] = m.clientY - f.top, l += 52, ++d >= 32) break + } + q[c >> 2] = d, mt(n, i, c, r) && a.preventDefault() + }, + useCapture: t + }; + Oe.registerOrRemoveHandler(u) + } + + function Dr(e, r, t, n, i, a, o) { + Oe.visibilityChangeEvent || (Oe.visibilityChangeEvent = Zr(8)); + var u = { + target: e, + eventTypeString: a, + callbackfunc: n, + handlerFunc: function(e) { + var t, a, o = e || event, + u = Oe.visibilityChangeEvent; + t = u, a = ["hidden", "visible", "prerender", "unloaded"].indexOf(document.visibilityState), q[t >> 2] = document.hidden, q[t + 4 >> 2] = a, mt(n, i, u, r) && o.preventDefault() + }, + useCapture: t + }; + Oe.registerOrRemoveHandler(u) + } + + function Fr(e, r, t, n, i, a, o) { + Oe.wheelEvent || (Oe.wheelEvent = Zr(96)); + var u = { + target: e, + allowsDeferredCalls: !0, + eventTypeString: a, + callbackfunc: n, + handlerFunc: "wheel" == a ? function(t) { + var a = t || event, + o = Oe.wheelEvent; + xr(o, a, e), X[o + 64 >> 3] = a.deltaX, X[o + 72 >> 3] = a.deltaY, X[o + 80 >> 3] = a.deltaZ, q[o + 88 >> 2] = a.deltaMode, mt(n, i, o, r) && a.preventDefault() + } : function(t) { + var a = t || event; + xr(Oe.wheelEvent, a, e), X[Oe.wheelEvent + 64 >> 3] = a.wheelDeltaX || 0; + var o = -(a.wheelDeltaY || a.wheelDelta); + X[Oe.wheelEvent + 72 >> 3] = o, X[Oe.wheelEvent + 80 >> 3] = 0, q[Oe.wheelEvent + 88 >> 2] = 0, mt(n, i, Oe.wheelEvent, r) && a.preventDefault() + }, + useCapture: t + }; + Oe.registerOrRemoveHandler(u) + } + var Ar = { + xhrs: [], + setu64: function(e, r) { + Q[e >> 2] = r, Q[e + 4 >> 2] = r / 4294967296 | 0 + }, + openDatabase: function(e, r, t, n) { + try { + var i = indexedDB.open(e, r) + } catch (e) { + return n(e) + } + i.onupgradeneeded = function(e) { + var r = e.target.result; + r.objectStoreNames.contains("FILES") && r.deleteObjectStore("FILES"), r.createObjectStore("FILES") + }, i.onsuccess = function(e) { + t(e.target.result) + }, i.onerror = function(e) { + n(e) + } + }, + staticInit: function() { + Ar.openDatabase("emscripten_filesystem", 1, (function(e) { + Ar.dbInstance = e, me() + }), (function() { + Ar.dbInstance = !1, me() + })), "undefined" != typeof ENVIRONMENT_IS_FETCH_WORKER && ENVIRONMENT_IS_FETCH_WORKER || de() + } + }; + + function Pr(e, r, t, n, i) { + var a = Q[e + 8 >> 2]; + if (a) { + var o = L(a), + u = e + 112, + s = L(u); + s || (s = "GET"); + Q[u + 32 >> 2]; + var c = Q[u + 52 >> 2], + l = Q[u + 56 >> 2], + f = !!Q[u + 60 >> 2], + d = (Q[u + 64 >> 2], Q[u + 68 >> 2]), + m = Q[u + 72 >> 2], + p = Q[u + 76 >> 2], + v = Q[u + 80 >> 2], + g = Q[u + 84 >> 2], + h = Q[u + 88 >> 2], + _ = !!(1 & c), + b = !!(2 & c), + y = !!(64 & c), + w = d ? L(d) : void 0, + E = m ? L(m) : void 0, + x = v ? L(v) : void 0, + k = new XMLHttpRequest; + if (k.withCredentials = f, k.open(s, o, !y, w, E), y || (k.timeout = l), k.url_ = o, k.responseType = "arraybuffer", v && k.overrideMimeType(x), p) + for (;;) { + var C = Q[p >> 2]; + if (!C) break; + var S = Q[p + 4 >> 2]; + if (!S) break; + p += 8; + var D = L(C), + F = L(S); + k.setRequestHeader(D, F) + } + Ar.xhrs.push(k); + var A = Ar.xhrs.length; + Q[e + 0 >> 2] = A; + var P = g && h ? G.slice(g, g + h) : null; + k.onload = function(n) { + var i = k.response ? k.response.byteLength : 0, + a = 0, + o = 0; + _ && !b && (a = Zr(o = i), G.set(new Uint8Array(k.response), a)), Q[e + 12 >> 2] = a, Ar.setu64(e + 16, o), Ar.setu64(e + 24, 0), i && Ar.setu64(e + 32, i), z[e + 40 >> 1] = k.readyState, 4 === k.readyState && 0 === k.status && (k.status = i > 0 ? 200 : 404), z[e + 42 >> 1] = k.status, k.statusText && B(k.statusText, e + 44, 64), k.status >= 200 && k.status < 300 ? r && r(e, k, n) : t && t(e, k, n) + }, k.onerror = function(r) { + var n = k.status; + 4 === k.readyState && 0 === n && (n = 404), Q[e + 12 >> 2] = 0, Ar.setu64(e + 16, 0), Ar.setu64(e + 24, 0), Ar.setu64(e + 32, 0), z[e + 40 >> 1] = k.readyState, z[e + 42 >> 1] = n, t && t(e, k, r) + }, k.ontimeout = function(r) { + t && t(e, k, r) + }, k.onprogress = function(r) { + var t = _ && b && k.response ? k.response.byteLength : 0, + i = 0; + _ && b && (i = Zr(t), G.set(new Uint8Array(k.response), i)), Q[e + 12 >> 2] = i, Ar.setu64(e + 16, t), Ar.setu64(e + 24, r.loaded - t), Ar.setu64(e + 32, r.total), z[e + 40 >> 1] = k.readyState, k.readyState >= 3 && 0 === k.status && r.loaded > 0 && (k.status = 200), z[e + 42 >> 1] = k.status, k.statusText && B(k.statusText, e + 44, 64), n && n(e, k, r) + }, k.onreadystatechange = function(r) { + z[e + 40 >> 1] = k.readyState, k.readyState >= 2 && (z[e + 42 >> 1] = k.status), i && i(e, k, r) + }; + try { + k.send(P) + } catch (r) { + t && t(e, k, r) + } + } else t(e, 0, "no url specified!") + } + + function Tr(e, r, t, n, i) { + if (e) { + var a = Q[r + 112 + 64 >> 2]; + a || (a = Q[r + 8 >> 2]); + var o = L(a); + try { + var u = e.transaction(["FILES"], "readwrite").objectStore("FILES").put(t, o); + u.onsuccess = function(e) { + z[r + 40 >> 1] = 4, z[r + 42 >> 1] = 200, B("OK", r + 44, 64), n(r, 0, o) + }, u.onerror = function(e) { + z[r + 40 >> 1] = 4, z[r + 42 >> 1] = 413, B("Payload Too Large", r + 44, 64), i(r, 0, e) + } + } catch (e) { + i(r, 0, e) + } + } else i(r, 0, "IndexedDB not available!") + } + var Lr = {}; + + function Ir() { + if (!Ir.strings) { + var e = { + USER: "web_user", + LOGNAME: "web_user", + PATH: "/", + PWD: "/", + HOME: "/home/web_user", + LANG: ("object" == typeof navigator && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8", + _: l || "./this.program" + }; + for (var r in Lr) e[r] = Lr[r]; + var t = []; + for (var r in e) t.push(r + "=" + e[r]); + Ir.strings = t + } + return Ir.strings + } + var Br = (B("GMT", 1052560, 4), 1052560); + + function Rr() { + if (!Rr.called) { + Rr.called = !0, q[tt() >> 2] = 60 * (new Date).getTimezoneOffset(); + var e = (new Date).getFullYear(), + r = new Date(e, 0, 1), + t = new Date(e, 6, 1); + q[rt() >> 2] = Number(r.getTimezoneOffset() != t.getTimezoneOffset()); + var n = u(r), + i = u(t), + a = M(n), + o = M(i); + t.getTimezoneOffset() < r.getTimezoneOffset() ? (q[et() >> 2] = a, q[et() + 4 >> 2] = o) : (q[et() >> 2] = o, q[et() + 4 >> 2] = a) + } + + function u(e) { + var r = e.toTimeString().match(/\(([A-Za-z ]+)\)$/); + return r ? r[1] : "GMT" + } + } + + function Mr(e, r) { + Rr(); + var t = new Date(1e3 * q[e >> 2]); + q[r >> 2] = t.getSeconds(), q[r + 4 >> 2] = t.getMinutes(), q[r + 8 >> 2] = t.getHours(), q[r + 12 >> 2] = t.getDate(), q[r + 16 >> 2] = t.getMonth(), q[r + 20 >> 2] = t.getFullYear() - 1900, q[r + 24 >> 2] = t.getDay(); + var n = new Date(t.getFullYear(), 0, 1), + i = (t.getTime() - n.getTime()) / 864e5 | 0; + q[r + 28 >> 2] = i, q[r + 36 >> 2] = -60 * t.getTimezoneOffset(); + var a = new Date(t.getFullYear(), 6, 1).getTimezoneOffset(), + o = n.getTimezoneOffset(), + u = 0 | (a != o && t.getTimezoneOffset() == Math.min(o, a)); + q[r + 32 >> 2] = u; + var s = q[et() + (u ? 4 : 0) >> 2]; + return q[r + 40 >> 2] = s, r + } + + function Nr(e) { + for (var r = ke(); ke() - r < e / 1e3;); + } + + function Ur(e, r) { + Ur.array || (Ur.array = []); + var t, n = Ur.array; + for (n.length = 0; t = G[e++];) 100 === t || 102 === t ? (r = r + 7 & -8, n.push(X[r >> 3]), r += 8) : (r = r + 3 & -4, n.push(q[r >> 2]), r += 4); + return n + } + var Or, Gr = function(e, r, t, n) { + e || (e = this), this.parent = e, this.mount = e.mount, this.mounted = null, this.id = Pe.nextInode++, this.name = r, this.mode = t, this.node_ops = {}, this.stream_ops = {}, this.rdev = n + }, + jr = 365, + zr = 146; + Object.defineProperties(Gr.prototype, { + read: { + get: function() { + return (this.mode & jr) === jr + }, + set: function(e) { + e ? this.mode |= jr : this.mode &= -366 + } + }, + write: { + get: function() { + return (this.mode & zr) === zr + }, + set: function(e) { + e ? this.mode |= zr : this.mode &= -147 + } + }, + isFolder: { + get: function() { + return Pe.isDir(this.mode) + } + }, + isDevice: { + get: function() { + return Pe.isChrdev(this.mode) + } + } + }), Pe.FSNode = Gr, Pe.staticInit(), r.FS_createFolder = Pe.createFolder, r.FS_createPath = Pe.createPath, r.FS_createDataFile = Pe.createDataFile, r.FS_createPreloadedFile = Pe.createPreloadedFile, r.FS_createLazyFile = Pe.createLazyFile, r.FS_createLink = Pe.createLink, r.FS_createDevice = Pe.createDevice, r.FS_unlink = Pe.unlink, r.requestFullscreen = function(e, r) { + Be.requestFullscreen(e, r) + }, r.requestAnimationFrame = function(e) { + Be.requestAnimationFrame(e) + }, r.setCanvasSize = function(e, r, t) { + Be.setCanvasSize(e, r, t) + }, r.pauseMainLoop = function() { + Be.mainLoop.pause() + }, r.resumeMainLoop = function() { + Be.mainLoop.resume() + }, r.getUserMedia = function() { + Be.getUserMedia() + }, r.createContext = function(e, r, t, n) { + return Be.createContext(e, r, t, n) + }, Ue.init(); + for (var qr = 0; qr < 32; qr++) tr.push(new Array(qr)); + Ar.staticInit(); + + function Qr(e, r, t) { + var n = t > 0 ? t : R(e) + 1, + i = new Array(n), + a = I(e, i, 0, i.length); + return r && (i.length = a), i + } + var Vr = { + __cxa_atexit: function(e, r) { + return t = e, n = r, void ee.unshift({ + func: t, + arg: n + }); + var t, n + }, + __sys_fcntl64: function(e, r, t) { + Te.varargs = t; + try { + var n = Te.getStreamFromFD(e); + switch (r) { + case 0: + return (i = Te.get()) < 0 ? -28 : Pe.open(n.path, n.flags, 0, i).fd; + case 1: + case 2: + return 0; + case 3: + return n.flags; + case 4: + var i = Te.get(); + return n.flags |= i, 0; + case 12: + i = Te.get(); + return j[i + 0 >> 1] = 2, 0; + case 13: + case 14: + return 0; + case 16: + case 8: + return -28; + case 9: + return xe(28), -1; + default: + return -28 + } + } catch (e) { + return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), -e.errno + } + }, + __sys_fstat64: function(e, r) { + try { + var t = Te.getStreamFromFD(e); + return Te.doStat(Pe.stat, t.path, r) + } catch (e) { + return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), -e.errno + } + }, + __sys_ioctl: function(e, r, t) { + Te.varargs = t; + try { + var n = Te.getStreamFromFD(e); + switch (r) { + case 21509: + case 21505: + return n.tty ? 0 : -59; + case 21510: + case 21511: + case 21512: + case 21506: + case 21507: + case 21508: + return n.tty ? 0 : -59; + case 21519: + if (!n.tty) return -59; + var i = Te.get(); + return q[i >> 2] = 0, 0; + case 21520: + return n.tty ? -28 : -59; + case 21531: + i = Te.get(); + return Pe.ioctl(n, r, i); + case 21523: + case 21524: + return n.tty ? 0 : -59; + default: + pe("bad ioctl syscall " + r) + } + } catch (e) { + return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), -e.errno + } + }, + __sys_open: function(e, r, t) { + Te.varargs = t; + try { + var n = Te.getStr(e), + i = Te.get(); + return Pe.open(n, r, i).fd + } catch (e) { + return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), -e.errno + } + }, + __sys_stat64: function(e, r) { + try { + return e = Te.getStr(e), Te.doStat(Pe.stat, e, r) + } catch (e) { + return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), -e.errno + } + }, + _emscripten_fetch_free: function(e) { + delete Ar.xhrs[e - 1] + }, + abort: function() { + pe() + }, + alBufferData: function(e, r, t, n, i) { + if (Re.currentCtx) { + var a = Re.buffers[e]; + if (a) + if (i <= 0) Re.currentCtx.err = 40963; + else { + var o = null; + try { + switch (r) { + case 4352: + if (n > 0) + for (var u = (o = Re.currentCtx.audioCtx.createBuffer(1, n, i)).getChannelData(0), s = 0; s < n; ++s) u[s] = .0078125 * G[t++] - 1; + a.bytesPerSample = 1, a.channels = 1, a.length = n; + break; + case 4353: + if (n > 0) { + u = (o = Re.currentCtx.audioCtx.createBuffer(1, n >> 1, i)).getChannelData(0); + t >>= 1; + for (s = 0; s < n >> 1; ++s) u[s] = 30517578125e-15 * j[t++] + } + a.bytesPerSample = 2, a.channels = 1, a.length = n >> 1; + break; + case 4354: + if (n > 0) { + u = (o = Re.currentCtx.audioCtx.createBuffer(2, n >> 1, i)).getChannelData(0); + var c = o.getChannelData(1); + for (s = 0; s < n >> 1; ++s) u[s] = .0078125 * G[t++] - 1, c[s] = .0078125 * G[t++] - 1 + } + a.bytesPerSample = 1, a.channels = 2, a.length = n >> 1; + break; + case 4355: + if (n > 0) { + u = (o = Re.currentCtx.audioCtx.createBuffer(2, n >> 2, i)).getChannelData(0), c = o.getChannelData(1); + t >>= 1; + for (s = 0; s < n >> 2; ++s) u[s] = 30517578125e-15 * j[t++], c[s] = 30517578125e-15 * j[t++] + } + a.bytesPerSample = 2, a.channels = 2, a.length = n >> 2; + break; + case 65552: + if (n > 0) { + u = (o = Re.currentCtx.audioCtx.createBuffer(1, n >> 2, i)).getChannelData(0); + t >>= 2; + for (s = 0; s < n >> 2; ++s) u[s] = V[t++] + } + a.bytesPerSample = 4, a.channels = 1, a.length = n >> 2; + break; + case 65553: + if (n > 0) { + u = (o = Re.currentCtx.audioCtx.createBuffer(2, n >> 3, i)).getChannelData(0), c = o.getChannelData(1); + t >>= 2; + for (s = 0; s < n >> 3; ++s) u[s] = V[t++], c[s] = V[t++] + } + a.bytesPerSample = 4, a.channels = 2, a.length = n >> 3; + break; + default: + return void(Re.currentCtx.err = 40963) + } + a.frequency = i, a.audioBuf = o + } catch (e) { + return void(Re.currentCtx.err = 40963) + } + } + else Re.currentCtx.err = 40963 + } + }, + alDeleteBuffers: function(e, r) { + if (Re.currentCtx) { + for (var t = 0; t < e; ++t) { + if (0 !== (n = q[r + 4 * t >> 2])) { + if (!Re.buffers[n]) return void(Re.currentCtx.err = 40961); + if (Re.buffers[n].refCount) return void(Re.currentCtx.err = 40964) + } + } + for (t = 0; t < e; ++t) { + var n; + 0 !== (n = q[r + 4 * t >> 2]) && (Re.deviceRefCounts[Re.buffers[n].deviceId]--, delete Re.buffers[n], Re.freeIds.push(n)) + } + } + }, + alDeleteSources: function(e, r) { + if (Re.currentCtx) { + for (var t = 0; t < e; ++t) { + var n = q[r + 4 * t >> 2]; + if (!Re.currentCtx.sources[n]) return void(Re.currentCtx.err = 40961) + } + for (t = 0; t < e; ++t) { + n = q[r + 4 * t >> 2]; + Re.setSourceState(Re.currentCtx.sources[n], 4116), Me(n, 4105, 0), delete Re.currentCtx.sources[n], Re.freeIds.push(n) + } + } + }, + alGenBuffers: function(e, r) { + if (Re.currentCtx) + for (var t = 0; t < e; ++t) { + var n = { + deviceId: Re.currentCtx.deviceId, + id: Re.newId(), + refCount: 0, + audioBuf: null, + frequency: 0, + bytesPerSample: 2, + channels: 1, + length: 0 + }; + Re.deviceRefCounts[n.deviceId]++, Re.buffers[n.id] = n, q[r + 4 * t >> 2] = n.id + } + }, + alGenSources: function(e, r) { + if (Re.currentCtx) + for (var t = 0; t < e; ++t) { + var n = Re.currentCtx.audioCtx.createGain(); + n.connect(Re.currentCtx.gain); + var i = { + context: Re.currentCtx, + id: Re.newId(), + type: 4144, + state: 4113, + bufQueue: [Re.buffers[0]], + audioQueue: [], + looping: !1, + pitch: 1, + dopplerShift: 1, + gain: n, + minGain: 0, + maxGain: 1, + panner: null, + bufsProcessed: 0, + bufStartTime: Number.NEGATIVE_INFINITY, + bufOffset: 0, + relative: !1, + refDistance: 1, + maxDistance: 340282e33, + rolloffFactor: 1, + position: [0, 0, 0], + velocity: [0, 0, 0], + direction: [0, 0, 0], + coneOuterGain: 0, + coneInnerAngle: 360, + coneOuterAngle: 360, + distanceModel: 53250, + spatialize: 2, + get playbackRate() { + return this.pitch * this.dopplerShift + } + }; + Re.currentCtx.sources[i.id] = i, q[r + 4 * t >> 2] = i.id + } + }, + alGetSourcei: function(e, r, t) { + var n = Re.getSourceParam("alGetSourcei", e, r); + if (null !== n) + if (t) switch (r) { + case 514: + case 4097: + case 4098: + case 4103: + case 4105: + case 4112: + case 4117: + case 4118: + case 4128: + case 4129: + case 4131: + case 4132: + case 4133: + case 4134: + case 4135: + case 4628: + case 8201: + case 8202: + case 53248: + q[t >> 2] = n; + break; + default: + return void(Re.currentCtx.err = 40962) + } else Re.currentCtx.err = 40963 + }, + alSource3i: function(e, r, t, n, i) { + switch (r) { + case 4100: + case 4101: + case 4102: + Re.paramArray[0] = t, Re.paramArray[1] = n, Re.paramArray[2] = i, Re.setSourceParam("alSource3i", e, r, Re.paramArray); + break; + default: + Re.setSourceParam("alSource3i", e, r, null) + } + }, + alSourcePlay: function(e) { + if (Re.currentCtx) { + var r = Re.currentCtx.sources[e]; + r ? Re.setSourceState(r, 4114) : Re.currentCtx.err = 40961 + } + }, + alSourceQueueBuffers: function(e, r, t) { + if (Re.currentCtx) { + var n = Re.currentCtx.sources[e]; + if (n) + if (4136 !== n.type) { + if (0 !== r) { + for (var i = Re.buffers[0], a = 0; a < n.bufQueue.length; a++) + if (0 !== n.bufQueue[a].id) { + i = n.bufQueue[a]; + break + } for (a = 0; a < r; ++a) { + var o = q[t + 4 * a >> 2]; + if (!(u = Re.buffers[o])) return void(Re.currentCtx.err = 40961); + 0 === i.id || u.frequency === i.frequency && u.bytesPerSample === i.bytesPerSample && u.channels === i.channels || (Re.currentCtx.err = 40964) + } + 1 === n.bufQueue.length && 0 === n.bufQueue[0].id && (n.bufQueue.length = 0), n.type = 4137; + for (a = 0; a < r; ++a) { + var u; + o = q[t + 4 * a >> 2]; + (u = Re.buffers[o]).refCount++, n.bufQueue.push(u) + } + n.looping && Re.cancelPendingSourceAudio(n), Re.initSourcePanner(n), Re.scheduleSourceAudio(n) + } + } else Re.currentCtx.err = 40964; + else Re.currentCtx.err = 40961 + } + }, + alSourceStop: function(e) { + if (Re.currentCtx) { + var r = Re.currentCtx.sources[e]; + r ? Re.setSourceState(r, 4116) : Re.currentCtx.err = 40961 + } + }, + alSourceUnqueueBuffers: function(e, r, t) { + if (Re.currentCtx) { + var n = Re.currentCtx.sources[e]; + if (n) { + if (r > (1 === n.bufQueue.length && 0 === n.bufQueue[0].id ? 0 : n.bufsProcessed)) Re.currentCtx.err = 40963; + else if (0 !== r) { + for (var i = 0; i < r; i++) { + var a = n.bufQueue.shift(); + a.refCount--, q[t + 4 * i >> 2] = a.id, n.bufsProcessed-- + } + 0 === n.bufQueue.length && n.bufQueue.push(Re.buffers[0]), Re.initSourcePanner(n), Re.scheduleSourceAudio(n) + } + } else Re.currentCtx.err = 40961 + } + }, + alSourcef: function(e, r, t) { + switch (r) { + case 4097: + case 4098: + case 4099: + case 4106: + case 4109: + case 4110: + case 4128: + case 4129: + case 4130: + case 4131: + case 4132: + case 4133: + case 4134: + case 8203: + Re.setSourceParam("alSourcef", e, r, t); + break; + default: + Re.setSourceParam("alSourcef", e, r, null) + } + }, + alSourcei: Me, + alcCloseDevice: function(e) { + return !(e in Re.deviceRefCounts) || Re.deviceRefCounts[e] > 0 ? 0 : (delete Re.deviceRefCounts[e], Re.freeIds.push(e), 1) + }, + alcCreateContext: function(e, t) { + if (!(e in Re.deviceRefCounts)) return Re.alcErr = 40961, 0; + var n = null, + i = [], + a = null; + if (t >>= 2) + for (var o = 0, u = 0; o = q[t++], i.push(o), 0 !== o;) switch (u = q[t++], i.push(u), o) { + case 4103: + n || (n = {}), n.sampleRate = u; + break; + case 4112: + case 4113: + break; + case 6546: + switch (u) { + case 0: + a = !1; + break; + case 1: + a = !0; + break; + case 2: + break; + default: + return Re.alcErr = 40964, 0 + } + break; + case 6550: + if (0 !== u) return Re.alcErr = 40964, 0; + break; + default: + return Re.alcErr = 40964, 0 + } + var s = window.AudioContext || window.webkitAudioContext, + c = null; + try { + c = n ? new s(n) : new s + } catch (e) { + return "NotSupportedError" === e.name ? Re.alcErr = 40964 : Re.alcErr = 40961, 0 + }! function(e, t) { + t || (t = [document, r.canvas]), ["keydown", "mousedown", "touchstart"].forEach((function(r) { + t.forEach((function(t) { + t && function(e, r, t) { + e.addEventListener(r, t, { + once: !0 + }) + }(t, r, (function() { + "suspended" === e.state && e.resume().then((() => {})) + })) + })) + })) + }(c), void 0 === c.createGain && (c.createGain = c.createGainNode); + var l = c.createGain(); + l.connect(c.destination); + var f = { + deviceId: e, + id: Re.newId(), + attrs: i, + audioCtx: c, + listener: { + position: [0, 0, 0], + velocity: [0, 0, 0], + direction: [0, 0, 0], + up: [0, 0, 0] + }, + sources: [], + interval: setInterval((function() { + Re.scheduleContextAudio(f) + }), Re.QUEUE_INTERVAL), + gain: l, + distanceModel: 53250, + speedOfSound: 343.3, + dopplerFactor: 1, + sourceDistanceModel: !1, + hrtf: a || !1, + _err: 0, + get err() { + return this._err + }, + set err(e) { + 0 !== this._err && 0 !== e || (this._err = e) + } + }; + if (Re.deviceRefCounts[e]++, Re.contexts[f.id] = f, null !== a) + for (var d in Re.contexts) { + var m = Re.contexts[d]; + m.deviceId === e && (m.hrtf = a, Re.updateContextGlobal(m)) + } + return f.id + }, + alcDestroyContext: function(e) { + var r = Re.contexts[e]; + Re.currentCtx !== r ? (Re.contexts[e].interval && clearInterval(Re.contexts[e].interval), Re.deviceRefCounts[r.deviceId]--, delete Re.contexts[e], Re.freeIds.push(e)) : Re.alcErr = 40962 + }, + alcGetIntegerv: function(e, r, t, n) { + if (0 !== t && n) switch (r) { + case 4096: + case 4097: + q[n >> 2] = 1; + break; + case 4098: + if (!(e in Re.deviceRefCounts)) return void(Re.alcErr = 40961); + if (!Re.currentCtx) return void(Re.alcErr = 40962); + q[n >> 2] = Re.currentCtx.attrs.length; + break; + case 4099: + if (!(e in Re.deviceRefCounts)) return void(Re.alcErr = 40961); + if (!Re.currentCtx) return void(Re.alcErr = 40962); + for (var i = 0; i < Re.currentCtx.attrs.length; i++) q[n + 4 * i >> 2] = Re.currentCtx.attrs[i]; + break; + case 4103: + if (!(e in Re.deviceRefCounts)) return void(Re.alcErr = 40961); + if (!Re.currentCtx) return void(Re.alcErr = 40962); + q[n >> 2] = Re.currentCtx.audioCtx.sampleRate; + break; + case 4112: + case 4113: + if (!(e in Re.deviceRefCounts)) return void(Re.alcErr = 40961); + if (!Re.currentCtx) return void(Re.alcErr = 40962); + q[n >> 2] = 2147483647; + break; + case 6546: + case 6547: + if (!(e in Re.deviceRefCounts)) return void(Re.alcErr = 40961); + var a = 0; + for (var o in Re.contexts) { + var u = Re.contexts[o]; + u.deviceId === e && (a = u.hrtf ? 1 : 0) + } + q[n >> 2] = a; + break; + case 6548: + if (!(e in Re.deviceRefCounts)) return void(Re.alcErr = 40961); + q[n >> 2] = 1; + break; + case 131075: + if (!(e in Re.deviceRefCounts)) return void(Re.alcErr = 40961); + if (!Re.currentCtx) return void(Re.alcErr = 40962); + q[n >> 2] = 1; + case 786: + var s = Re.requireValidCaptureDevice(e, "alcGetIntegerv"); + if (!s) return; + var c = s.capturedFrameCount, + l = s.requestedSampleRate, + f = s.audioCtx.sampleRate, + d = Math.floor(c * (l / f)); + q[n >> 2] = d; + break; + default: + return void(Re.alcErr = 40963) + } + }, + alcMakeContextCurrent: function(e) { + return 0 === e ? (Re.currentCtx = null, 0) : (Re.currentCtx = Re.contexts[e], 1) + }, + alcOpenDevice: function(e) { + if (e && L(e) !== Re.DEVICE_NAME) return 0; + if ("undefined" != typeof AudioContext || "undefined" != typeof webkitAudioContext) { + var r = Re.newId(); + return Re.deviceRefCounts[r] = 0, r + } + return 0 + }, + changeCursor: function(e) { + const t = r.canvas; + t && (t.style.cursor = L(e)) + }, + clock_gettime: function(e, r) { + var t; + if (0 === e) t = Date.now(); + else { + if (1 !== e && 4 !== e) return xe(28), -1; + t = ke() + } + return q[r >> 2] = t / 1e3 | 0, q[r + 4 >> 2] = t % 1e3 * 1e3 * 1e3 | 0, 0 + }, + dlclose: function(e) { + pe("To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking") + }, + eglBindAPI: function(e) { + return 12448 == e ? (Ne.setErrorCode(12288), 1) : (Ne.setErrorCode(12300), 0) + }, + eglChooseConfig: function(e, r, t, n, i) { + return Ne.chooseConfig(e, r, t, n, i) + }, + eglCreateContext: function(e, t, n, i) { + if (62e3 != e) return Ne.setErrorCode(12296), 0; + for (var a = 1;;) { + var o = q[i >> 2]; + if (12440 != o) { + if (12344 == o) break; + return Ne.setErrorCode(12292), 0 + } + a = q[i + 4 >> 2], i += 8 + } + return a < 2 || a > 3 ? (Ne.setErrorCode(12293), 0) : (Ne.contextAttributes.majorVersion = a - 1, Ne.contextAttributes.minorVersion = 0, Ne.context = Ue.createContext(r.canvas, Ne.contextAttributes), 0 != Ne.context ? (Ne.setErrorCode(12288), Ue.makeContextCurrent(Ne.context), r.useWebGL = !0, Be.moduleContextCreatedCallbacks.forEach((function(e) { + e() + })), Ue.makeContextCurrent(null), 62004) : (Ne.setErrorCode(12297), 0)) + }, + eglCreateWindowSurface: function(e, r, t, n) { + return 62e3 != e ? (Ne.setErrorCode(12296), 0) : 62002 != r ? (Ne.setErrorCode(12293), 0) : (Ne.setErrorCode(12288), 62006) + }, + eglDestroyContext: function(e, r) { + return 62e3 != e ? (Ne.setErrorCode(12296), 0) : 62004 != r ? (Ne.setErrorCode(12294), 0) : (Ue.deleteContext(Ne.context), Ne.setErrorCode(12288), Ne.currentContext == r && (Ne.currentContext = 0), 1) + }, + eglDestroySurface: function(e, r) { + return 62e3 != e ? (Ne.setErrorCode(12296), 0) : 62006 != r ? (Ne.setErrorCode(12301), 1) : (Ne.currentReadSurface == r && (Ne.currentReadSurface = 0), Ne.currentDrawSurface == r && (Ne.currentDrawSurface = 0), Ne.setErrorCode(12288), 1) + }, + eglGetConfigAttrib: function(e, r, t, n) { + if (62e3 != e) return Ne.setErrorCode(12296), 0; + if (62002 != r) return Ne.setErrorCode(12293), 0; + if (!n) return Ne.setErrorCode(12300), 0; + switch (Ne.setErrorCode(12288), t) { + case 12320: + return q[n >> 2] = Ne.contextAttributes.alpha ? 32 : 24, 1; + case 12321: + return q[n >> 2] = Ne.contextAttributes.alpha ? 8 : 0, 1; + case 12322: + case 12323: + case 12324: + return q[n >> 2] = 8, 1; + case 12325: + return q[n >> 2] = Ne.contextAttributes.depth ? 24 : 0, 1; + case 12326: + return q[n >> 2] = Ne.contextAttributes.stencil ? 8 : 0, 1; + case 12327: + return q[n >> 2] = 12344, 1; + case 12328: + return q[n >> 2] = 62002, 1; + case 12329: + return q[n >> 2] = 0, 1; + case 12330: + return q[n >> 2] = 4096, 1; + case 12331: + return q[n >> 2] = 16777216, 1; + case 12332: + return q[n >> 2] = 4096, 1; + case 12333: + case 12334: + return q[n >> 2] = 0, 1; + case 12335: + return q[n >> 2] = 12344, 1; + case 12337: + return q[n >> 2] = Ne.contextAttributes.antialias ? 4 : 0, 1; + case 12338: + return q[n >> 2] = Ne.contextAttributes.antialias ? 1 : 0, 1; + case 12339: + return q[n >> 2] = 4, 1; + case 12340: + return q[n >> 2] = 12344, 1; + case 12341: + case 12342: + case 12343: + return q[n >> 2] = -1, 1; + case 12345: + case 12346: + case 12347: + return q[n >> 2] = 0, 1; + case 12348: + return q[n >> 2] = 1, 1; + case 12349: + case 12350: + return q[n >> 2] = 0, 1; + case 12351: + return q[n >> 2] = 12430, 1; + case 12352: + return q[n >> 2] = 4, 1; + case 12354: + return q[n >> 2] = 0, 1; + default: + return Ne.setErrorCode(12292), 0 + } + }, + eglGetDisplay: function(e) { + return Ne.setErrorCode(12288), 62e3 + }, + eglGetError: function() { + return Ne.errorCode + }, + eglGetProcAddress: function(e) { + return Jr(e) + }, + eglInitialize: function(e, r, t) { + return 62e3 == e ? (r && (q[r >> 2] = 1), t && (q[t >> 2] = 4), Ne.defaultDisplayInitialized = !0, Ne.setErrorCode(12288), 1) : (Ne.setErrorCode(12296), 0) + }, + eglMakeCurrent: function(e, r, t, n) { + return 62e3 != e ? (Ne.setErrorCode(12296), 0) : 0 != n && 62004 != n ? (Ne.setErrorCode(12294), 0) : 0 != t && 62006 != t || 0 != r && 62006 != r ? (Ne.setErrorCode(12301), 0) : (Ue.makeContextCurrent(n ? Ne.context : null), Ne.currentContext = n, Ne.currentDrawSurface = r, Ne.currentReadSurface = t, Ne.setErrorCode(12288), 1) + }, + eglQueryString: function(e, r) { + if (62e3 != e) return Ne.setErrorCode(12296), 0; + if (Ne.setErrorCode(12288), Ne.stringCache[r]) return Ne.stringCache[r]; + var t; + switch (r) { + case 12371: + t = M("Emscripten"); + break; + case 12372: + t = M("1.4 Emscripten EGL"); + break; + case 12373: + t = M(""); + break; + case 12429: + t = M("OpenGL_ES"); + break; + default: + return Ne.setErrorCode(12300), 0 + } + return Ne.stringCache[r] = t, t + }, + eglSwapBuffers: function() { + if (Ne.defaultDisplayInitialized) + if (r.ctx) { + if (!r.ctx.isContextLost()) return Ne.setErrorCode(12288), 1; + Ne.setErrorCode(12302) + } else Ne.setErrorCode(12290); + else Ne.setErrorCode(12289); + return 0 + }, + eglSwapInterval: function(e, r) { + return 62e3 != e ? (Ne.setErrorCode(12296), 0) : (0 == r ? Le(0, 0) : Le(1, r), Ne.setErrorCode(12288), 1) + }, + eglTerminate: function(e) { + return 62e3 != e ? (Ne.setErrorCode(12296), 0) : (Ne.currentContext = 0, Ne.currentReadSurface = 0, Ne.currentDrawSurface = 0, Ne.defaultDisplayInitialized = !1, Ne.setErrorCode(12288), 1) + }, + eglWaitGL: function() { + return Ne.setErrorCode(12288), 1 + }, + eglWaitNative: function(e) { + return Ne.setErrorCode(12288), 1 + }, + emscripten_asm_const_iii: function(e, r, t) { + var n = Ur(r, t); + return we[e].apply(null, n) + }, + emscripten_cancel_main_loop: function() { + Be.mainLoop.pause(), Be.mainLoop.func = null + }, + emscripten_exit_fullscreen: function() { + if (!Oe.fullscreenEnabled()) return -1; + Oe.removeDeferredCalls(Ke); + var e = je[1]; + if (e.exitFullscreen) e.fullscreenElement && e.exitFullscreen(); + else { + if (!e.webkitExitFullscreen) return -1; + e.webkitFullscreenElement && e.webkitExitFullscreen() + } + return 0 + }, + emscripten_exit_pointerlock: function() { + if (Oe.removeDeferredCalls($e), document.exitPointerLock) document.exitPointerLock(); + else { + if (!document.msExitPointerLock) return -1; + document.msExitPointerLock() + } + return 0 + }, + emscripten_get_canvas_element_id: function(e) { + const t = document && document.location || null, + n = t && t.origin || "unknown", + i = t && t.pathname || "unknown"; + r.ga("event", n, { + event_category: "license", + event_label: i, + non_interaction: !0, + send_to: r.gid + }) + }, + emscripten_get_canvas_element_size: Qe, + emscripten_get_device_pixel_ratio: function() { + return devicePixelRatio + }, + emscripten_get_element_css_size: function(e, r, t) { + if (!(e = ze(e))) return -4; + var n = Ye(e); + return X[r >> 3] = n.width, X[t >> 3] = n.height, 0 + }, + emscripten_get_fullscreen_status: function(e) { + return Oe.fullscreenEnabled() ? (Je(e), 0) : -1 + }, + emscripten_get_gamepad_status: function(e, r) { + return e < 0 || e >= Oe.lastGamepadState.length ? -5 : Oe.lastGamepadState[e] ? (er(r, Oe.lastGamepadState[e]), 0) : -7 + }, + emscripten_get_now: ke, + emscripten_get_num_gamepads: function() { + return Oe.lastGamepadState.length + }, + emscripten_get_sbrk_ptr: function() { + return 1052496 + }, + emscripten_glActiveTexture: function(e) { + Or.activeTexture(e) + }, + emscripten_glAttachShader: function(e, r) { + Or.attachShader(Ue.programs[e], Ue.shaders[r]) + }, + emscripten_glBeginQuery: function(e, r) { + Or.beginQuery(e, Ue.queries[r]) + }, + emscripten_glBeginQueryEXT: function(e, r) { + Or.disjointTimerQueryExt.beginQueryEXT(e, Ue.timerQueriesEXT[r]) + }, + emscripten_glBeginTransformFeedback: function(e) { + Or.beginTransformFeedback(e) + }, + emscripten_glBindAttribLocation: function(e, r, t) { + Or.bindAttribLocation(Ue.programs[e], r, L(t)) + }, + emscripten_glBindBuffer: function(e, r) { + 35051 == e ? Or.currentPixelPackBufferBinding = r : 35052 == e && (Or.currentPixelUnpackBufferBinding = r), Or.bindBuffer(e, Ue.buffers[r]) + }, + emscripten_glBindBufferBase: function(e, r, t) { + Or.bindBufferBase(e, r, Ue.buffers[t]) + }, + emscripten_glBindBufferRange: function(e, r, t, n, i) { + Or.bindBufferRange(e, r, Ue.buffers[t], n, i) + }, + emscripten_glBindFramebuffer: function(e, r) { + Or.bindFramebuffer(e, Ue.framebuffers[r]) + }, + emscripten_glBindRenderbuffer: function(e, r) { + Or.bindRenderbuffer(e, Ue.renderbuffers[r]) + }, + emscripten_glBindSampler: function(e, r) { + Or.bindSampler(e, Ue.samplers[r]) + }, + emscripten_glBindTexture: function(e, r) { + Or.bindTexture(e, Ue.textures[r]) + }, + emscripten_glBindTransformFeedback: function(e, r) { + Or.bindTransformFeedback(e, Ue.transformFeedbacks[r]) + }, + emscripten_glBindVertexArray: function(e) { + Or.bindVertexArray(Ue.vaos[e]) + }, + emscripten_glBindVertexArrayOES: function(e) { + Or.bindVertexArray(Ue.vaos[e]) + }, + emscripten_glBlendColor: function(e, r, t, n) { + Or.blendColor(e, r, t, n) + }, + emscripten_glBlendEquation: function(e) { + Or.blendEquation(e) + }, + emscripten_glBlendEquationSeparate: function(e, r) { + Or.blendEquationSeparate(e, r) + }, + emscripten_glBlendFunc: function(e, r) { + Or.blendFunc(e, r) + }, + emscripten_glBlendFuncSeparate: function(e, r, t, n) { + Or.blendFuncSeparate(e, r, t, n) + }, + emscripten_glBlitFramebuffer: function(e, r, t, n, i, a, o, u, s, c) { + Or.blitFramebuffer(e, r, t, n, i, a, o, u, s, c) + }, + emscripten_glBufferData: function(e, r, t, n) { + Ue.currentContext.version >= 2 ? t ? Or.bufferData(e, G, n, t, r) : Or.bufferData(e, r, n) : Or.bufferData(e, t ? G.subarray(t, t + r) : r, n) + }, + emscripten_glBufferSubData: function(e, r, t, n) { + Ue.currentContext.version >= 2 ? Or.bufferSubData(e, r, G, n, t) : Or.bufferSubData(e, r, G.subarray(n, n + t)) + }, + emscripten_glCheckFramebufferStatus: function(e) { + return Or.checkFramebufferStatus(e) + }, + emscripten_glClear: function(e) { + Or.clear(e) + }, + emscripten_glClearBufferfi: function(e, r, t, n) { + Or.clearBufferfi(e, r, t, n) + }, + emscripten_glClearBufferfv: function(e, r, t) { + Or.clearBufferfv(e, r, V, t >> 2) + }, + emscripten_glClearBufferiv: function(e, r, t) { + Or.clearBufferiv(e, r, q, t >> 2) + }, + emscripten_glClearBufferuiv: function(e, r, t) { + Or.clearBufferuiv(e, r, Q, t >> 2) + }, + emscripten_glClearColor: function(e, r, t, n) { + Or.clearColor(e, r, t, n) + }, + emscripten_glClearDepthf: function(e) { + Or.clearDepth(e) + }, + emscripten_glClearStencil: function(e) { + Or.clearStencil(e) + }, + emscripten_glClientWaitSync: function(e, r, t, n) { + return Or.clientWaitSync(Ue.syncs[e], r, rr(t, n)) + }, + emscripten_glColorMask: function(e, r, t, n) { + Or.colorMask(!!e, !!r, !!t, !!n) + }, + emscripten_glCompileShader: function(e) { + Or.compileShader(Ue.shaders[e]) + }, + emscripten_glCompressedTexImage2D: function(e, r, t, n, i, a, o, u) { + Ue.currentContext.version >= 2 ? Or.currentPixelUnpackBufferBinding ? Or.compressedTexImage2D(e, r, t, n, i, a, o, u) : Or.compressedTexImage2D(e, r, t, n, i, a, G, u, o) : Or.compressedTexImage2D(e, r, t, n, i, a, u ? G.subarray(u, u + o) : null) + }, + emscripten_glCompressedTexImage3D: function(e, r, t, n, i, a, o, u, s) { + Or.currentPixelUnpackBufferBinding ? Or.compressedTexImage3D(e, r, t, n, i, a, o, u, s) : Or.compressedTexImage3D(e, r, t, n, i, a, o, G, s, u) + }, + emscripten_glCompressedTexSubImage2D: function(e, r, t, n, i, a, o, u, s) { + Ue.currentContext.version >= 2 ? Or.currentPixelUnpackBufferBinding ? Or.compressedTexSubImage2D(e, r, t, n, i, a, o, u, s) : Or.compressedTexSubImage2D(e, r, t, n, i, a, o, G, s, u) : Or.compressedTexSubImage2D(e, r, t, n, i, a, o, s ? G.subarray(s, s + u) : null) + }, + emscripten_glCompressedTexSubImage3D: function(e, r, t, n, i, a, o, u, s, c, l) { + Or.currentPixelUnpackBufferBinding ? Or.compressedTexSubImage3D(e, r, t, n, i, a, o, u, s, c, l) : Or.compressedTexSubImage3D(e, r, t, n, i, a, o, u, s, G, l, c) + }, + emscripten_glCopyBufferSubData: function(e, r, t, n, i) { + Or.copyBufferSubData(e, r, t, n, i) + }, + emscripten_glCopyTexImage2D: function(e, r, t, n, i, a, o, u) { + Or.copyTexImage2D(e, r, t, n, i, a, o, u) + }, + emscripten_glCopyTexSubImage2D: function(e, r, t, n, i, a, o, u) { + Or.copyTexSubImage2D(e, r, t, n, i, a, o, u) + }, + emscripten_glCopyTexSubImage3D: function(e, r, t, n, i, a, o, u, s) { + Or.copyTexSubImage3D(e, r, t, n, i, a, o, u, s) + }, + emscripten_glCreateProgram: function() { + var e = Ue.getNewId(Ue.programs), + r = Or.createProgram(); + return r.name = e, Ue.programs[e] = r, e + }, + emscripten_glCreateShader: function(e) { + var r = Ue.getNewId(Ue.shaders); + return Ue.shaders[r] = Or.createShader(e), r + }, + emscripten_glCullFace: function(e) { + Or.cullFace(e) + }, + emscripten_glDeleteBuffers: function(e, r) { + for (var t = 0; t < e; t++) { + var n = q[r + 4 * t >> 2], + i = Ue.buffers[n]; + i && (Or.deleteBuffer(i), i.name = 0, Ue.buffers[n] = null, n == Ue.currArrayBuffer && (Ue.currArrayBuffer = 0), n == Ue.currElementArrayBuffer && (Ue.currElementArrayBuffer = 0), n == Or.currentPixelPackBufferBinding && (Or.currentPixelPackBufferBinding = 0), n == Or.currentPixelUnpackBufferBinding && (Or.currentPixelUnpackBufferBinding = 0)) + } + }, + emscripten_glDeleteFramebuffers: function(e, r) { + for (var t = 0; t < e; ++t) { + var n = q[r + 4 * t >> 2], + i = Ue.framebuffers[n]; + i && (Or.deleteFramebuffer(i), i.name = 0, Ue.framebuffers[n] = null) + } + }, + emscripten_glDeleteProgram: function(e) { + if (e) { + var r = Ue.programs[e]; + r ? (Or.deleteProgram(r), r.name = 0, Ue.programs[e] = null, Ue.programInfos[e] = null) : Ue.recordError(1281) + } + }, + emscripten_glDeleteQueries: function(e, r) { + for (var t = 0; t < e; t++) { + var n = q[r + 4 * t >> 2], + i = Ue.queries[n]; + i && (Or.deleteQuery(i), Ue.queries[n] = null) + } + }, + emscripten_glDeleteQueriesEXT: function(e, r) { + for (var t = 0; t < e; t++) { + var n = q[r + 4 * t >> 2], + i = Ue.timerQueriesEXT[n]; + i && (Or.disjointTimerQueryExt.deleteQueryEXT(i), Ue.timerQueriesEXT[n] = null) + } + }, + emscripten_glDeleteRenderbuffers: function(e, r) { + for (var t = 0; t < e; t++) { + var n = q[r + 4 * t >> 2], + i = Ue.renderbuffers[n]; + i && (Or.deleteRenderbuffer(i), i.name = 0, Ue.renderbuffers[n] = null) + } + }, + emscripten_glDeleteSamplers: function(e, r) { + for (var t = 0; t < e; t++) { + var n = q[r + 4 * t >> 2], + i = Ue.samplers[n]; + i && (Or.deleteSampler(i), i.name = 0, Ue.samplers[n] = null) + } + }, + emscripten_glDeleteShader: function(e) { + if (e) { + var r = Ue.shaders[e]; + r ? (Or.deleteShader(r), Ue.shaders[e] = null) : Ue.recordError(1281) + } + }, + emscripten_glDeleteSync: function(e) { + if (e) { + var r = Ue.syncs[e]; + r ? (Or.deleteSync(r), r.name = 0, Ue.syncs[e] = null) : Ue.recordError(1281) + } + }, + emscripten_glDeleteTextures: function(e, r) { + for (var t = 0; t < e; t++) { + var n = q[r + 4 * t >> 2], + i = Ue.textures[n]; + i && (Or.deleteTexture(i), i.name = 0, Ue.textures[n] = null) + } + }, + emscripten_glDeleteTransformFeedbacks: function(e, r) { + for (var t = 0; t < e; t++) { + var n = q[r + 4 * t >> 2], + i = Ue.transformFeedbacks[n]; + i && (Or.deleteTransformFeedback(i), i.name = 0, Ue.transformFeedbacks[n] = null) + } + }, + emscripten_glDeleteVertexArrays: function(e, r) { + for (var t = 0; t < e; t++) { + var n = q[r + 4 * t >> 2]; + Or.deleteVertexArray(Ue.vaos[n]), Ue.vaos[n] = null + } + }, + emscripten_glDeleteVertexArraysOES: function(e, r) { + for (var t = 0; t < e; t++) { + var n = q[r + 4 * t >> 2]; + Or.deleteVertexArray(Ue.vaos[n]), Ue.vaos[n] = null + } + }, + emscripten_glDepthFunc: function(e) { + Or.depthFunc(e) + }, + emscripten_glDepthMask: function(e) { + Or.depthMask(!!e) + }, + emscripten_glDepthRangef: function(e, r) { + Or.depthRange(e, r) + }, + emscripten_glDetachShader: function(e, r) { + Or.detachShader(Ue.programs[e], Ue.shaders[r]) + }, + emscripten_glDisable: function(e) { + Or.disable(e) + }, + emscripten_glDisableVertexAttribArray: function(e) { + Or.disableVertexAttribArray(e) + }, + emscripten_glDrawArrays: function(e, r, t) { + Or.drawArrays(e, r, t) + }, + emscripten_glDrawArraysInstanced: function(e, r, t, n) { + Or.drawArraysInstanced(e, r, t, n) + }, + emscripten_glDrawArraysInstancedANGLE: function(e, r, t, n) { + Or.drawArraysInstanced(e, r, t, n) + }, + emscripten_glDrawArraysInstancedARB: function(e, r, t, n) { + Or.drawArraysInstanced(e, r, t, n) + }, + emscripten_glDrawArraysInstancedEXT: function(e, r, t, n) { + Or.drawArraysInstanced(e, r, t, n) + }, + emscripten_glDrawArraysInstancedNV: function(e, r, t, n) { + Or.drawArraysInstanced(e, r, t, n) + }, + emscripten_glDrawBuffers: function(e, r) { + for (var t = tr[e], n = 0; n < e; n++) t[n] = q[r + 4 * n >> 2]; + Or.drawBuffers(t) + }, + emscripten_glDrawBuffersEXT: function(e, r) { + for (var t = tr[e], n = 0; n < e; n++) t[n] = q[r + 4 * n >> 2]; + Or.drawBuffers(t) + }, + emscripten_glDrawBuffersWEBGL: function(e, r) { + for (var t = tr[e], n = 0; n < e; n++) t[n] = q[r + 4 * n >> 2]; + Or.drawBuffers(t) + }, + emscripten_glDrawElements: function(e, r, t, n) { + Or.drawElements(e, r, t, n) + }, + emscripten_glDrawElementsInstanced: function(e, r, t, n, i) { + Or.drawElementsInstanced(e, r, t, n, i) + }, + emscripten_glDrawElementsInstancedANGLE: function(e, r, t, n, i) { + Or.drawElementsInstanced(e, r, t, n, i) + }, + emscripten_glDrawElementsInstancedARB: function(e, r, t, n, i) { + Or.drawElementsInstanced(e, r, t, n, i) + }, + emscripten_glDrawElementsInstancedEXT: function(e, r, t, n, i) { + Or.drawElementsInstanced(e, r, t, n, i) + }, + emscripten_glDrawElementsInstancedNV: function(e, r, t, n, i) { + Or.drawElementsInstanced(e, r, t, n, i) + }, + emscripten_glDrawRangeElements: function(e, r, t, n, i, a) { + nr(e, n, i, a) + }, + emscripten_glEnable: function(e) { + Or.enable(e) + }, + emscripten_glEnableVertexAttribArray: function(e) { + Or.enableVertexAttribArray(e) + }, + emscripten_glEndQuery: function(e) { + Or.endQuery(e) + }, + emscripten_glEndQueryEXT: function(e) { + Or.disjointTimerQueryExt.endQueryEXT(e) + }, + emscripten_glEndTransformFeedback: function() { + Or.endTransformFeedback() + }, + emscripten_glFenceSync: function(e, r) { + var t = Or.fenceSync(e, r); + if (t) { + var n = Ue.getNewId(Ue.syncs); + return t.name = n, Ue.syncs[n] = t, n + } + return 0 + }, + emscripten_glFinish: function() { + Or.finish() + }, + emscripten_glFlush: function() { + Or.flush() + }, + emscripten_glFramebufferRenderbuffer: function(e, r, t, n) { + Or.framebufferRenderbuffer(e, r, t, Ue.renderbuffers[n]) + }, + emscripten_glFramebufferTexture2D: function(e, r, t, n, i) { + Or.framebufferTexture2D(e, r, t, Ue.textures[n], i) + }, + emscripten_glFramebufferTextureLayer: function(e, r, t, n, i) { + Or.framebufferTextureLayer(e, r, Ue.textures[t], n, i) + }, + emscripten_glFrontFace: function(e) { + Or.frontFace(e) + }, + emscripten_glGenBuffers: function(e, r) { + ir(e, r, "createBuffer", Ue.buffers) + }, + emscripten_glGenFramebuffers: function(e, r) { + ir(e, r, "createFramebuffer", Ue.framebuffers) + }, + emscripten_glGenQueries: function(e, r) { + ir(e, r, "createQuery", Ue.queries) + }, + emscripten_glGenQueriesEXT: function(e, r) { + for (var t = 0; t < e; t++) { + var n = Or.disjointTimerQueryExt.createQueryEXT(); + if (!n) { + for (Ue.recordError(1282); t < e;) q[r + 4 * t++ >> 2] = 0; + return + } + var i = Ue.getNewId(Ue.timerQueriesEXT); + n.name = i, Ue.timerQueriesEXT[i] = n, q[r + 4 * t >> 2] = i + } + }, + emscripten_glGenRenderbuffers: function(e, r) { + ir(e, r, "createRenderbuffer", Ue.renderbuffers) + }, + emscripten_glGenSamplers: function(e, r) { + ir(e, r, "createSampler", Ue.samplers) + }, + emscripten_glGenTextures: function(e, r) { + ir(e, r, "createTexture", Ue.textures) + }, + emscripten_glGenTransformFeedbacks: function(e, r) { + ir(e, r, "createTransformFeedback", Ue.transformFeedbacks) + }, + emscripten_glGenVertexArrays: function(e, r) { + ir(e, r, "createVertexArray", Ue.vaos) + }, + emscripten_glGenVertexArraysOES: function(e, r) { + ir(e, r, "createVertexArray", Ue.vaos) + }, + emscripten_glGenerateMipmap: function(e) { + Or.generateMipmap(e) + }, + emscripten_glGetActiveAttrib: function(e, r, t, n, i, a, o) { + e = Ue.programs[e]; + var u = Or.getActiveAttrib(e, r); + if (u) { + var s = t > 0 && o ? B(u.name, o, t) : 0; + n && (q[n >> 2] = s), i && (q[i >> 2] = u.size), a && (q[a >> 2] = u.type) + } + }, + emscripten_glGetActiveUniform: function(e, r, t, n, i, a, o) { + e = Ue.programs[e]; + var u = Or.getActiveUniform(e, r); + if (u) { + var s = t > 0 && o ? B(u.name, o, t) : 0; + n && (q[n >> 2] = s), i && (q[i >> 2] = u.size), a && (q[a >> 2] = u.type) + } + }, + emscripten_glGetActiveUniformBlockName: function(e, r, t, n, i) { + e = Ue.programs[e]; + var a = Or.getActiveUniformBlockName(e, r); + if (a) + if (i && t > 0) { + var o = B(a, i, t); + n && (q[n >> 2] = o) + } else n && (q[n >> 2] = 0) + }, + emscripten_glGetActiveUniformBlockiv: function(e, r, t, n) { + if (n) switch (e = Ue.programs[e], t) { + case 35393: + var i = Or.getActiveUniformBlockName(e, r); + return void(q[n >> 2] = i.length + 1); + default: + var a = Or.getActiveUniformBlockParameter(e, r, t); + if (!a) return; + if ("number" == typeof a) q[n >> 2] = a; + else + for (var o = 0; o < a.length; o++) q[n + 4 * o >> 2] = a[o] + } else Ue.recordError(1281) + }, + emscripten_glGetActiveUniformsiv: function(e, r, t, n, i) { + if (i) + if (r > 0 && 0 == t) Ue.recordError(1281); + else { + e = Ue.programs[e]; + for (var a = [], o = 0; o < r; o++) a.push(q[t + 4 * o >> 2]); + var u = Or.getActiveUniforms(e, a, n); + if (u) { + var s = u.length; + for (o = 0; o < s; o++) q[i + 4 * o >> 2] = u[o] + } + } + else Ue.recordError(1281) + }, + emscripten_glGetAttachedShaders: function(e, r, t, n) { + var i = Or.getAttachedShaders(Ue.programs[e]), + a = i.length; + a > r && (a = r), q[t >> 2] = a; + for (var o = 0; o < a; ++o) { + var u = Ue.shaders.indexOf(i[o]); + q[n + 4 * o >> 2] = u + } + }, + emscripten_glGetAttribLocation: function(e, r) { + return Or.getAttribLocation(Ue.programs[e], L(r)) + }, + emscripten_glGetBooleanv: function(e, r) { + or(e, r, 4) + }, + emscripten_glGetBufferParameteri64v: function(e, r, t) { + t ? ar(t, Or.getBufferParameter(e, r)) : Ue.recordError(1281) + }, + emscripten_glGetBufferParameteriv: function(e, r, t) { + t ? q[t >> 2] = Or.getBufferParameter(e, r) : Ue.recordError(1281) + }, + emscripten_glGetError: function() { + var e = Or.getError() || Ue.lastError; + return Ue.lastError = 0, e + }, + emscripten_glGetFloatv: function(e, r) { + or(e, r, 2) + }, + emscripten_glGetFragDataLocation: function(e, r) { + return Or.getFragDataLocation(Ue.programs[e], L(r)) + }, + emscripten_glGetFramebufferAttachmentParameteriv: function(e, r, t, n) { + var i = Or.getFramebufferAttachmentParameter(e, r, t); + (i instanceof WebGLRenderbuffer || i instanceof WebGLTexture) && (i = 0 | i.name), q[n >> 2] = i + }, + emscripten_glGetInteger64i_v: function(e, r, t) { + ur(e, r, t, 1) + }, + emscripten_glGetInteger64v: function(e, r) { + or(e, r, 1) + }, + emscripten_glGetIntegeri_v: function(e, r, t) { + ur(e, r, t, 0) + }, + emscripten_glGetIntegerv: function(e, r) { + or(e, r, 0) + }, + emscripten_glGetInternalformativ: function(e, r, t, n, i) { + if (n < 0) Ue.recordError(1281); + else if (i) { + var a = Or.getInternalformatParameter(e, r, t); + if (null !== a) + for (var o = 0; o < a.length && o < n; ++o) q[i + o >> 2] = a[o] + } else Ue.recordError(1281) + }, + emscripten_glGetProgramBinary: function(e, r, t, n, i) { + Ue.recordError(1282) + }, + emscripten_glGetProgramInfoLog: function(e, r, t, n) { + var i = Or.getProgramInfoLog(Ue.programs[e]); + null === i && (i = "(unknown error)"); + var a = r > 0 && n ? B(i, n, r) : 0; + t && (q[t >> 2] = a) + }, + emscripten_glGetProgramiv: function(e, r, t) { + if (t) + if (e >= Ue.counter) Ue.recordError(1281); + else { + var n = Ue.programInfos[e]; + if (n) + if (35716 == r) { + var i = Or.getProgramInfoLog(Ue.programs[e]); + null === i && (i = "(unknown error)"), q[t >> 2] = i.length + 1 + } else if (35719 == r) q[t >> 2] = n.maxUniformLength; + else if (35722 == r) { + if (-1 == n.maxAttributeLength) { + e = Ue.programs[e]; + var a = Or.getProgramParameter(e, 35721); + n.maxAttributeLength = 0; + for (var o = 0; o < a; ++o) { + var u = Or.getActiveAttrib(e, o); + n.maxAttributeLength = Math.max(n.maxAttributeLength, u.name.length + 1) + } + } + q[t >> 2] = n.maxAttributeLength + } else if (35381 == r) { + if (-1 == n.maxUniformBlockNameLength) { + e = Ue.programs[e]; + var s = Or.getProgramParameter(e, 35382); + n.maxUniformBlockNameLength = 0; + for (o = 0; o < s; ++o) { + var c = Or.getActiveUniformBlockName(e, o); + n.maxUniformBlockNameLength = Math.max(n.maxUniformBlockNameLength, c.length + 1) + } + } + q[t >> 2] = n.maxUniformBlockNameLength + } else q[t >> 2] = Or.getProgramParameter(Ue.programs[e], r); + else Ue.recordError(1282) + } + else Ue.recordError(1281) + }, + emscripten_glGetQueryObjecti64vEXT: function(e, r, t) { + if (t) { + var n = Ue.timerQueriesEXT[e], + i = Or.disjointTimerQueryExt.getQueryObjectEXT(n, r); + ar(t, "boolean" == typeof i ? i ? 1 : 0 : i) + } else Ue.recordError(1281) + }, + emscripten_glGetQueryObjectivEXT: function(e, r, t) { + if (t) { + var n, i = Ue.timerQueriesEXT[e], + a = Or.disjointTimerQueryExt.getQueryObjectEXT(i, r); + n = "boolean" == typeof a ? a ? 1 : 0 : a, q[t >> 2] = n + } else Ue.recordError(1281) + }, + emscripten_glGetQueryObjectui64vEXT: function(e, r, t) { + if (t) { + var n = Ue.timerQueriesEXT[e], + i = Or.disjointTimerQueryExt.getQueryObjectEXT(n, r); + ar(t, "boolean" == typeof i ? i ? 1 : 0 : i) + } else Ue.recordError(1281) + }, + emscripten_glGetQueryObjectuiv: function(e, r, t) { + if (t) { + var n, i = Ue.queries[e], + a = Or.getQueryParameter(i, r); + n = "boolean" == typeof a ? a ? 1 : 0 : a, q[t >> 2] = n + } else Ue.recordError(1281) + }, + emscripten_glGetQueryObjectuivEXT: function(e, r, t) { + if (t) { + var n, i = Ue.timerQueriesEXT[e], + a = Or.disjointTimerQueryExt.getQueryObjectEXT(i, r); + n = "boolean" == typeof a ? a ? 1 : 0 : a, q[t >> 2] = n + } else Ue.recordError(1281) + }, + emscripten_glGetQueryiv: function(e, r, t) { + t ? q[t >> 2] = Or.getQuery(e, r) : Ue.recordError(1281) + }, + emscripten_glGetQueryivEXT: function(e, r, t) { + t ? q[t >> 2] = Or.disjointTimerQueryExt.getQueryEXT(e, r) : Ue.recordError(1281) + }, + emscripten_glGetRenderbufferParameteriv: function(e, r, t) { + t ? q[t >> 2] = Or.getRenderbufferParameter(e, r) : Ue.recordError(1281) + }, + emscripten_glGetSamplerParameterfv: function(e, r, t) { + t ? (e = Ue.samplers[e], V[t >> 2] = Or.getSamplerParameter(e, r)) : Ue.recordError(1281) + }, + emscripten_glGetSamplerParameteriv: function(e, r, t) { + t ? (e = Ue.samplers[e], q[t >> 2] = Or.getSamplerParameter(e, r)) : Ue.recordError(1281) + }, + emscripten_glGetShaderInfoLog: function(e, r, t, n) { + var i = Or.getShaderInfoLog(Ue.shaders[e]); + null === i && (i = "(unknown error)"); + var a = r > 0 && n ? B(i, n, r) : 0; + t && (q[t >> 2] = a) + }, + emscripten_glGetShaderPrecisionFormat: function(e, r, t, n) { + var i = Or.getShaderPrecisionFormat(e, r); + q[t >> 2] = i.rangeMin, q[t + 4 >> 2] = i.rangeMax, q[n >> 2] = i.precision + }, + emscripten_glGetShaderSource: function(e, r, t, n) { + var i = Or.getShaderSource(Ue.shaders[e]); + if (i) { + var a = r > 0 && n ? B(i, n, r) : 0; + t && (q[t >> 2] = a) + } + }, + emscripten_glGetShaderiv: function(e, r, t) { + if (t) + if (35716 == r) { + var n = Or.getShaderInfoLog(Ue.shaders[e]); + null === n && (n = "(unknown error)"), q[t >> 2] = n.length + 1 + } else if (35720 == r) { + var i = Or.getShaderSource(Ue.shaders[e]), + a = null === i || 0 == i.length ? 0 : i.length + 1; + q[t >> 2] = a + } else q[t >> 2] = Or.getShaderParameter(Ue.shaders[e], r); + else Ue.recordError(1281) + }, + emscripten_glGetString: function(e) { + if (Ue.stringCache[e]) return Ue.stringCache[e]; + var r; + switch (e) { + case 7939: + var t = Or.getSupportedExtensions() || []; + r = sr((t = t.concat(t.map((function(e) { + return "GL_" + e + })))).join(" ")); + break; + case 7936: + case 7937: + case 37445: + case 37446: + var n = Or.getParameter(e); + n || Ue.recordError(1280), r = sr(n); + break; + case 7938: + var i = Or.getParameter(7938); + r = sr(i = Ue.currentContext.version >= 2 ? "OpenGL ES 3.0 (" + i + ")" : "OpenGL ES 2.0 (" + i + ")"); + break; + case 35724: + var a = Or.getParameter(35724), + o = a.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/); + null !== o && (3 == o[1].length && (o[1] = o[1] + "0"), a = "OpenGL ES GLSL ES " + o[1] + " (" + a + ")"), r = sr(a); + break; + default: + return Ue.recordError(1280), 0 + } + return Ue.stringCache[e] = r, r + }, + emscripten_glGetStringi: function(e, r) { + if (Ue.currentContext.version < 2) return Ue.recordError(1282), 0; + var t = Ue.stringiCache[e]; + if (t) return r < 0 || r >= t.length ? (Ue.recordError(1281), 0) : t[r]; + switch (e) { + case 7939: + var n = Or.getSupportedExtensions() || []; + return n = (n = n.concat(n.map((function(e) { + return "GL_" + e + })))).map((function(e) { + return sr(e) + })), t = Ue.stringiCache[e] = n, r < 0 || r >= t.length ? (Ue.recordError(1281), 0) : t[r]; + default: + return Ue.recordError(1280), 0 + } + }, + emscripten_glGetSynciv: function(e, r, t, n, i) { + if (t < 0) Ue.recordError(1281); + else if (i) { + var a = Or.getSyncParameter(Ue.syncs[e], r); + q[n >> 2] = a, null !== a && n && (q[n >> 2] = 1) + } else Ue.recordError(1281) + }, + emscripten_glGetTexParameterfv: function(e, r, t) { + t ? V[t >> 2] = Or.getTexParameter(e, r) : Ue.recordError(1281) + }, + emscripten_glGetTexParameteriv: function(e, r, t) { + t ? q[t >> 2] = Or.getTexParameter(e, r) : Ue.recordError(1281) + }, + emscripten_glGetTransformFeedbackVarying: function(e, r, t, n, i, a, o) { + e = Ue.programs[e]; + var u = Or.getTransformFeedbackVarying(e, r); + if (u) { + if (o && t > 0) { + var s = B(u.name, o, t); + n && (q[n >> 2] = s) + } else n && (q[n >> 2] = 0); + i && (q[i >> 2] = u.size), a && (q[a >> 2] = u.type) + } + }, + emscripten_glGetUniformBlockIndex: function(e, r) { + return Or.getUniformBlockIndex(Ue.programs[e], L(r)) + }, + emscripten_glGetUniformIndices: function(e, r, t, n) { + if (n) + if (r > 0 && (0 == t || 0 == n)) Ue.recordError(1281); + else { + e = Ue.programs[e]; + for (var i = [], a = 0; a < r; a++) i.push(L(q[t + 4 * a >> 2])); + var o = Or.getUniformIndices(e, i); + if (o) { + var u = o.length; + for (a = 0; a < u; a++) q[n + 4 * a >> 2] = o[a] + } + } + else Ue.recordError(1281) + }, + emscripten_glGetUniformLocation: function(e, r) { + var t = 0; + if ("]" == (r = L(r))[r.length - 1]) { + var n = r.lastIndexOf("["); + t = "]" != r[n + 1] ? cr(r.slice(n + 1)) : 0, r = r.slice(0, n) + } + var i = Ue.programInfos[e] && Ue.programInfos[e].uniforms[r]; + return i && t >= 0 && t < i[0] ? i[1] + t : -1 + }, + emscripten_glGetUniformfv: function(e, r, t) { + lr(e, r, t, 2) + }, + emscripten_glGetUniformiv: function(e, r, t) { + lr(e, r, t, 0) + }, + emscripten_glGetUniformuiv: function(e, r, t) { + lr(e, r, t, 0) + }, + emscripten_glGetVertexAttribIiv: function(e, r, t) { + fr(e, r, t, 0) + }, + emscripten_glGetVertexAttribIuiv: function(e, r, t) { + fr(e, r, t, 0) + }, + emscripten_glGetVertexAttribPointerv: function(e, r, t) { + t ? q[t >> 2] = Or.getVertexAttribOffset(e, r) : Ue.recordError(1281) + }, + emscripten_glGetVertexAttribfv: function(e, r, t) { + fr(e, r, t, 2) + }, + emscripten_glGetVertexAttribiv: function(e, r, t) { + fr(e, r, t, 5) + }, + emscripten_glHint: function(e, r) { + Or.hint(e, r) + }, + emscripten_glInvalidateFramebuffer: function(e, r, t) { + for (var n = tr[r], i = 0; i < r; i++) n[i] = q[t + 4 * i >> 2]; + Or.invalidateFramebuffer(e, n) + }, + emscripten_glInvalidateSubFramebuffer: function(e, r, t, n, i, a, o) { + for (var u = tr[r], s = 0; s < r; s++) u[s] = q[t + 4 * s >> 2]; + Or.invalidateSubFramebuffer(e, u, n, i, a, o) + }, + emscripten_glIsBuffer: function(e) { + var r = Ue.buffers[e]; + return r ? Or.isBuffer(r) : 0 + }, + emscripten_glIsEnabled: function(e) { + return Or.isEnabled(e) + }, + emscripten_glIsFramebuffer: function(e) { + var r = Ue.framebuffers[e]; + return r ? Or.isFramebuffer(r) : 0 + }, + emscripten_glIsProgram: function(e) { + return (e = Ue.programs[e]) ? Or.isProgram(e) : 0 + }, + emscripten_glIsQuery: function(e) { + var r = Ue.queries[e]; + return r ? Or.isQuery(r) : 0 + }, + emscripten_glIsQueryEXT: function(e) { + var r = Ue.timerQueriesEXT[e]; + return r ? Or.disjointTimerQueryExt.isQueryEXT(r) : 0 + }, + emscripten_glIsRenderbuffer: function(e) { + var r = Ue.renderbuffers[e]; + return r ? Or.isRenderbuffer(r) : 0 + }, + emscripten_glIsSampler: function(e) { + var r = Ue.samplers[e]; + return r ? Or.isSampler(r) : 0 + }, + emscripten_glIsShader: function(e) { + var r = Ue.shaders[e]; + return r ? Or.isShader(r) : 0 + }, + emscripten_glIsSync: function(e) { + return Or.isSync(Ue.syncs[e]) + }, + emscripten_glIsTexture: function(e) { + var r = Ue.textures[e]; + return r ? Or.isTexture(r) : 0 + }, + emscripten_glIsTransformFeedback: function(e) { + return Or.isTransformFeedback(Ue.transformFeedbacks[e]) + }, + emscripten_glIsVertexArray: function(e) { + var r = Ue.vaos[e]; + return r ? Or.isVertexArray(r) : 0 + }, + emscripten_glIsVertexArrayOES: function(e) { + var r = Ue.vaos[e]; + return r ? Or.isVertexArray(r) : 0 + }, + emscripten_glLineWidth: function(e) { + Or.lineWidth(e) + }, + emscripten_glLinkProgram: function(e) { + Or.linkProgram(Ue.programs[e]), Ue.populateUniformTable(e) + }, + emscripten_glPauseTransformFeedback: function() { + Or.pauseTransformFeedback() + }, + emscripten_glPixelStorei: function(e, r) { + 3317 == e && (Ue.unpackAlignment = r), Or.pixelStorei(e, r) + }, + emscripten_glPolygonOffset: function(e, r) { + Or.polygonOffset(e, r) + }, + emscripten_glProgramBinary: function(e, r, t, n) { + Ue.recordError(1280) + }, + emscripten_glProgramParameteri: function(e, r, t) { + Ue.recordError(1280) + }, + emscripten_glQueryCounterEXT: function(e, r) { + Or.disjointTimerQueryExt.queryCounterEXT(Ue.timerQueriesEXT[e], r) + }, + emscripten_glReadBuffer: function(e) { + Or.readBuffer(e) + }, + emscripten_glReadPixels: function(e, r, t, n, i, a, o) { + if (Ue.currentContext.version >= 2) + if (Or.currentPixelPackBufferBinding) Or.readPixels(e, r, t, n, i, a, o); + else { + var u = dr(a); + Or.readPixels(e, r, t, n, i, a, u, o >> mr(u)) + } + else { + var s = pr(a, i, t, n, o); + s ? Or.readPixels(e, r, t, n, i, a, s) : Ue.recordError(1280) + } + }, + emscripten_glReleaseShaderCompiler: function() {}, + emscripten_glRenderbufferStorage: function(e, r, t, n) { + Or.renderbufferStorage(e, r, t, n) + }, + emscripten_glRenderbufferStorageMultisample: function(e, r, t, n, i) { + Or.renderbufferStorageMultisample(e, r, t, n, i) + }, + emscripten_glResumeTransformFeedback: function() { + Or.resumeTransformFeedback() + }, + emscripten_glSampleCoverage: function(e, r) { + Or.sampleCoverage(e, !!r) + }, + emscripten_glSamplerParameterf: function(e, r, t) { + Or.samplerParameterf(Ue.samplers[e], r, t) + }, + emscripten_glSamplerParameterfv: function(e, r, t) { + var n = V[t >> 2]; + Or.samplerParameterf(Ue.samplers[e], r, n) + }, + emscripten_glSamplerParameteri: function(e, r, t) { + Or.samplerParameteri(Ue.samplers[e], r, t) + }, + emscripten_glSamplerParameteriv: function(e, r, t) { + var n = q[t >> 2]; + Or.samplerParameteri(Ue.samplers[e], r, n) + }, + emscripten_glScissor: function(e, r, t, n) { + Or.scissor(e, r, t, n) + }, + emscripten_glShaderBinary: function() { + Ue.recordError(1280) + }, + emscripten_glShaderSource: function(e, r, t, n) { + var i = Ue.getSource(e, r, t, n); + Or.shaderSource(Ue.shaders[e], i) + }, + emscripten_glStencilFunc: function(e, r, t) { + Or.stencilFunc(e, r, t) + }, + emscripten_glStencilFuncSeparate: function(e, r, t, n) { + Or.stencilFuncSeparate(e, r, t, n) + }, + emscripten_glStencilMask: function(e) { + Or.stencilMask(e) + }, + emscripten_glStencilMaskSeparate: function(e, r) { + Or.stencilMaskSeparate(e, r) + }, + emscripten_glStencilOp: function(e, r, t) { + Or.stencilOp(e, r, t) + }, + emscripten_glStencilOpSeparate: function(e, r, t, n) { + Or.stencilOpSeparate(e, r, t, n) + }, + emscripten_glTexImage2D: function(e, r, t, n, i, a, o, u, s) { + if (Ue.currentContext.version >= 2) + if (Or.currentPixelUnpackBufferBinding) Or.texImage2D(e, r, t, n, i, a, o, u, s); + else if (s) { + var c = dr(u); + Or.texImage2D(e, r, t, n, i, a, o, u, c, s >> mr(c)) + } else Or.texImage2D(e, r, t, n, i, a, o, u, null); + else Or.texImage2D(e, r, t, n, i, a, o, u, s ? pr(u, o, n, i, s) : null) + }, + emscripten_glTexImage3D: function(e, r, t, n, i, a, o, u, s, c) { + if (Or.currentPixelUnpackBufferBinding) Or.texImage3D(e, r, t, n, i, a, o, u, s, c); + else if (c) { + var l = dr(s); + Or.texImage3D(e, r, t, n, i, a, o, u, s, l, c >> mr(l)) + } else Or.texImage3D(e, r, t, n, i, a, o, u, s, null) + }, + emscripten_glTexParameterf: function(e, r, t) { + Or.texParameterf(e, r, t) + }, + emscripten_glTexParameterfv: function(e, r, t) { + var n = V[t >> 2]; + Or.texParameterf(e, r, n) + }, + emscripten_glTexParameteri: function(e, r, t) { + Or.texParameteri(e, r, t) + }, + emscripten_glTexParameteriv: function(e, r, t) { + var n = q[t >> 2]; + Or.texParameteri(e, r, n) + }, + emscripten_glTexStorage2D: function(e, r, t, n, i) { + Or.texStorage2D(e, r, t, n, i) + }, + emscripten_glTexStorage3D: function(e, r, t, n, i, a) { + Or.texStorage3D(e, r, t, n, i, a) + }, + emscripten_glTexSubImage2D: function(e, r, t, n, i, a, o, u, s) { + if (Ue.currentContext.version >= 2) + if (Or.currentPixelUnpackBufferBinding) Or.texSubImage2D(e, r, t, n, i, a, o, u, s); + else if (s) { + var c = dr(u); + Or.texSubImage2D(e, r, t, n, i, a, o, u, c, s >> mr(c)) + } else Or.texSubImage2D(e, r, t, n, i, a, o, u, null); + else { + var l = null; + s && (l = pr(u, o, i, a, s)), Or.texSubImage2D(e, r, t, n, i, a, o, u, l) + } + }, + emscripten_glTexSubImage3D: function(e, r, t, n, i, a, o, u, s, c, l) { + if (Or.currentPixelUnpackBufferBinding) Or.texSubImage3D(e, r, t, n, i, a, o, u, s, c, l); + else if (l) { + var f = dr(c); + Or.texSubImage3D(e, r, t, n, i, a, o, u, s, c, f, l >> mr(f)) + } else Or.texSubImage3D(e, r, t, n, i, a, o, u, s, c, null) + }, + emscripten_glTransformFeedbackVaryings: function(e, r, t, n) { + e = Ue.programs[e]; + for (var i = [], a = 0; a < r; a++) i.push(L(q[t + 4 * a >> 2])); + Or.transformFeedbackVaryings(e, i, n) + }, + emscripten_glUniform1f: function(e, r) { + Or.uniform1f(Ue.uniforms[e], r) + }, + emscripten_glUniform1fv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform1fv(Ue.uniforms[e], V, t >> 2, r); + else { + if (r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var n = Ue.miniTempBufferFloatViews[r - 1], i = 0; i < r; ++i) n[i] = V[t + 4 * i >> 2]; + else n = V.subarray(t >> 2, t + 4 * r >> 2); + Or.uniform1fv(Ue.uniforms[e], n) + } + }, + emscripten_glUniform1i: function(e, r) { + Or.uniform1i(Ue.uniforms[e], r) + }, + emscripten_glUniform1iv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform1iv(Ue.uniforms[e], q, t >> 2, r); + else { + if (r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var n = Ue.miniTempBufferIntViews[r - 1], i = 0; i < r; ++i) n[i] = q[t + 4 * i >> 2]; + else n = q.subarray(t >> 2, t + 4 * r >> 2); + Or.uniform1iv(Ue.uniforms[e], n) + } + }, + emscripten_glUniform1ui: function(e, r) { + Or.uniform1ui(Ue.uniforms[e], r) + }, + emscripten_glUniform1uiv: function(e, r, t) { + Or.uniform1uiv(Ue.uniforms[e], Q, t >> 2, r) + }, + emscripten_glUniform2f: function(e, r, t) { + Or.uniform2f(Ue.uniforms[e], r, t) + }, + emscripten_glUniform2fv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform2fv(Ue.uniforms[e], V, t >> 2, 2 * r); + else { + if (2 * r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var n = Ue.miniTempBufferFloatViews[2 * r - 1], i = 0; i < 2 * r; i += 2) n[i] = V[t + 4 * i >> 2], n[i + 1] = V[t + (4 * i + 4) >> 2]; + else n = V.subarray(t >> 2, t + 8 * r >> 2); + Or.uniform2fv(Ue.uniforms[e], n) + } + }, + emscripten_glUniform2i: function(e, r, t) { + Or.uniform2i(Ue.uniforms[e], r, t) + }, + emscripten_glUniform2iv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform2iv(Ue.uniforms[e], q, t >> 2, 2 * r); + else { + if (2 * r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var n = Ue.miniTempBufferIntViews[2 * r - 1], i = 0; i < 2 * r; i += 2) n[i] = q[t + 4 * i >> 2], n[i + 1] = q[t + (4 * i + 4) >> 2]; + else n = q.subarray(t >> 2, t + 8 * r >> 2); + Or.uniform2iv(Ue.uniforms[e], n) + } + }, + emscripten_glUniform2ui: function(e, r, t) { + Or.uniform2ui(Ue.uniforms[e], r, t) + }, + emscripten_glUniform2uiv: function(e, r, t) { + Or.uniform2uiv(Ue.uniforms[e], Q, t >> 2, 2 * r) + }, + emscripten_glUniform3f: function(e, r, t, n) { + Or.uniform3f(Ue.uniforms[e], r, t, n) + }, + emscripten_glUniform3fv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform3fv(Ue.uniforms[e], V, t >> 2, 3 * r); + else { + if (3 * r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var n = Ue.miniTempBufferFloatViews[3 * r - 1], i = 0; i < 3 * r; i += 3) n[i] = V[t + 4 * i >> 2], n[i + 1] = V[t + (4 * i + 4) >> 2], n[i + 2] = V[t + (4 * i + 8) >> 2]; + else n = V.subarray(t >> 2, t + 12 * r >> 2); + Or.uniform3fv(Ue.uniforms[e], n) + } + }, + emscripten_glUniform3i: function(e, r, t, n) { + Or.uniform3i(Ue.uniforms[e], r, t, n) + }, + emscripten_glUniform3iv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform3iv(Ue.uniforms[e], q, t >> 2, 3 * r); + else { + if (3 * r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var n = Ue.miniTempBufferIntViews[3 * r - 1], i = 0; i < 3 * r; i += 3) n[i] = q[t + 4 * i >> 2], n[i + 1] = q[t + (4 * i + 4) >> 2], n[i + 2] = q[t + (4 * i + 8) >> 2]; + else n = q.subarray(t >> 2, t + 12 * r >> 2); + Or.uniform3iv(Ue.uniforms[e], n) + } + }, + emscripten_glUniform3ui: function(e, r, t, n) { + Or.uniform3ui(Ue.uniforms[e], r, t, n) + }, + emscripten_glUniform3uiv: function(e, r, t) { + Or.uniform3uiv(Ue.uniforms[e], Q, t >> 2, 3 * r) + }, + emscripten_glUniform4f: function(e, r, t, n, i) { + Or.uniform4f(Ue.uniforms[e], r, t, n, i) + }, + emscripten_glUniform4fv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform4fv(Ue.uniforms[e], V, t >> 2, 4 * r); + else { + if (4 * r <= Ue.MINI_TEMP_BUFFER_SIZE) { + var n = Ue.miniTempBufferFloatViews[4 * r - 1], + i = V; + t >>= 2; + for (var a = 0; a < 4 * r; a += 4) { + var o = t + a; + n[a] = i[o], n[a + 1] = i[o + 1], n[a + 2] = i[o + 2], n[a + 3] = i[o + 3] + } + } else n = V.subarray(t >> 2, t + 16 * r >> 2); + Or.uniform4fv(Ue.uniforms[e], n) + } + }, + emscripten_glUniform4i: function(e, r, t, n, i) { + Or.uniform4i(Ue.uniforms[e], r, t, n, i) + }, + emscripten_glUniform4iv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform4iv(Ue.uniforms[e], q, t >> 2, 4 * r); + else { + if (4 * r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var n = Ue.miniTempBufferIntViews[4 * r - 1], i = 0; i < 4 * r; i += 4) n[i] = q[t + 4 * i >> 2], n[i + 1] = q[t + (4 * i + 4) >> 2], n[i + 2] = q[t + (4 * i + 8) >> 2], n[i + 3] = q[t + (4 * i + 12) >> 2]; + else n = q.subarray(t >> 2, t + 16 * r >> 2); + Or.uniform4iv(Ue.uniforms[e], n) + } + }, + emscripten_glUniform4ui: function(e, r, t, n, i) { + Or.uniform4ui(Ue.uniforms[e], r, t, n, i) + }, + emscripten_glUniform4uiv: function(e, r, t) { + Or.uniform4uiv(Ue.uniforms[e], Q, t >> 2, 4 * r) + }, + emscripten_glUniformBlockBinding: function(e, r, t) { + e = Ue.programs[e], Or.uniformBlockBinding(e, r, t) + }, + emscripten_glUniformMatrix2fv: function(e, r, t, n) { + if (Ue.currentContext.version >= 2) Or.uniformMatrix2fv(Ue.uniforms[e], !!t, V, n >> 2, 4 * r); + else { + if (4 * r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var i = Ue.miniTempBufferFloatViews[4 * r - 1], a = 0; a < 4 * r; a += 4) i[a] = V[n + 4 * a >> 2], i[a + 1] = V[n + (4 * a + 4) >> 2], i[a + 2] = V[n + (4 * a + 8) >> 2], i[a + 3] = V[n + (4 * a + 12) >> 2]; + else i = V.subarray(n >> 2, n + 16 * r >> 2); + Or.uniformMatrix2fv(Ue.uniforms[e], !!t, i) + } + }, + emscripten_glUniformMatrix2x3fv: function(e, r, t, n) { + Or.uniformMatrix2x3fv(Ue.uniforms[e], !!t, V, n >> 2, 6 * r) + }, + emscripten_glUniformMatrix2x4fv: function(e, r, t, n) { + Or.uniformMatrix2x4fv(Ue.uniforms[e], !!t, V, n >> 2, 8 * r) + }, + emscripten_glUniformMatrix3fv: function(e, r, t, n) { + if (Ue.currentContext.version >= 2) Or.uniformMatrix3fv(Ue.uniforms[e], !!t, V, n >> 2, 9 * r); + else { + if (9 * r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var i = Ue.miniTempBufferFloatViews[9 * r - 1], a = 0; a < 9 * r; a += 9) i[a] = V[n + 4 * a >> 2], i[a + 1] = V[n + (4 * a + 4) >> 2], i[a + 2] = V[n + (4 * a + 8) >> 2], i[a + 3] = V[n + (4 * a + 12) >> 2], i[a + 4] = V[n + (4 * a + 16) >> 2], i[a + 5] = V[n + (4 * a + 20) >> 2], i[a + 6] = V[n + (4 * a + 24) >> 2], i[a + 7] = V[n + (4 * a + 28) >> 2], i[a + 8] = V[n + (4 * a + 32) >> 2]; + else i = V.subarray(n >> 2, n + 36 * r >> 2); + Or.uniformMatrix3fv(Ue.uniforms[e], !!t, i) + } + }, + emscripten_glUniformMatrix3x2fv: function(e, r, t, n) { + Or.uniformMatrix3x2fv(Ue.uniforms[e], !!t, V, n >> 2, 6 * r) + }, + emscripten_glUniformMatrix3x4fv: function(e, r, t, n) { + Or.uniformMatrix3x4fv(Ue.uniforms[e], !!t, V, n >> 2, 12 * r) + }, + emscripten_glUniformMatrix4fv: function(e, r, t, n) { + if (Ue.currentContext.version >= 2) Or.uniformMatrix4fv(Ue.uniforms[e], !!t, V, n >> 2, 16 * r); + else { + if (16 * r <= Ue.MINI_TEMP_BUFFER_SIZE) { + var i = Ue.miniTempBufferFloatViews[16 * r - 1], + a = V; + n >>= 2; + for (var o = 0; o < 16 * r; o += 16) { + var u = n + o; + i[o] = a[u], i[o + 1] = a[u + 1], i[o + 2] = a[u + 2], i[o + 3] = a[u + 3], i[o + 4] = a[u + 4], i[o + 5] = a[u + 5], i[o + 6] = a[u + 6], i[o + 7] = a[u + 7], i[o + 8] = a[u + 8], i[o + 9] = a[u + 9], i[o + 10] = a[u + 10], i[o + 11] = a[u + 11], i[o + 12] = a[u + 12], i[o + 13] = a[u + 13], i[o + 14] = a[u + 14], i[o + 15] = a[u + 15] + } + } else i = V.subarray(n >> 2, n + 64 * r >> 2); + Or.uniformMatrix4fv(Ue.uniforms[e], !!t, i) + } + }, + emscripten_glUniformMatrix4x2fv: function(e, r, t, n) { + Or.uniformMatrix4x2fv(Ue.uniforms[e], !!t, V, n >> 2, 8 * r) + }, + emscripten_glUniformMatrix4x3fv: function(e, r, t, n) { + Or.uniformMatrix4x3fv(Ue.uniforms[e], !!t, V, n >> 2, 12 * r) + }, + emscripten_glUseProgram: function(e) { + Or.useProgram(Ue.programs[e]) + }, + emscripten_glValidateProgram: function(e) { + Or.validateProgram(Ue.programs[e]) + }, + emscripten_glVertexAttrib1f: function(e, r) { + Or.vertexAttrib1f(e, r) + }, + emscripten_glVertexAttrib1fv: function(e, r) { + Or.vertexAttrib1f(e, V[r >> 2]) + }, + emscripten_glVertexAttrib2f: function(e, r, t) { + Or.vertexAttrib2f(e, r, t) + }, + emscripten_glVertexAttrib2fv: function(e, r) { + Or.vertexAttrib2f(e, V[r >> 2], V[r + 4 >> 2]) + }, + emscripten_glVertexAttrib3f: function(e, r, t, n) { + Or.vertexAttrib3f(e, r, t, n) + }, + emscripten_glVertexAttrib3fv: function(e, r) { + Or.vertexAttrib3f(e, V[r >> 2], V[r + 4 >> 2], V[r + 8 >> 2]) + }, + emscripten_glVertexAttrib4f: function(e, r, t, n, i) { + Or.vertexAttrib4f(e, r, t, n, i) + }, + emscripten_glVertexAttrib4fv: function(e, r) { + Or.vertexAttrib4f(e, V[r >> 2], V[r + 4 >> 2], V[r + 8 >> 2], V[r + 12 >> 2]) + }, + emscripten_glVertexAttribDivisor: function(e, r) { + Or.vertexAttribDivisor(e, r) + }, + emscripten_glVertexAttribDivisorANGLE: function(e, r) { + Or.vertexAttribDivisor(e, r) + }, + emscripten_glVertexAttribDivisorARB: function(e, r) { + Or.vertexAttribDivisor(e, r) + }, + emscripten_glVertexAttribDivisorEXT: function(e, r) { + Or.vertexAttribDivisor(e, r) + }, + emscripten_glVertexAttribDivisorNV: function(e, r) { + Or.vertexAttribDivisor(e, r) + }, + emscripten_glVertexAttribI4i: function(e, r, t, n, i) { + Or.vertexAttribI4i(e, r, t, n, i) + }, + emscripten_glVertexAttribI4iv: function(e, r) { + Or.vertexAttribI4i(e, q[r >> 2], q[r + 4 >> 2], q[r + 8 >> 2], q[r + 12 >> 2]) + }, + emscripten_glVertexAttribI4ui: function(e, r, t, n, i) { + Or.vertexAttribI4ui(e, r, t, n, i) + }, + emscripten_glVertexAttribI4uiv: function(e, r) { + Or.vertexAttribI4ui(e, Q[r >> 2], Q[r + 4 >> 2], Q[r + 8 >> 2], Q[r + 12 >> 2]) + }, + emscripten_glVertexAttribIPointer: function(e, r, t, n, i) { + Or.vertexAttribIPointer(e, r, t, n, i) + }, + emscripten_glVertexAttribPointer: function(e, r, t, n, i, a) { + Or.vertexAttribPointer(e, r, t, !!n, i, a) + }, + emscripten_glViewport: function(e, r, t, n) { + Or.viewport(e, r, t, n) + }, + emscripten_glWaitSync: function(e, r, t, n) { + Or.waitSync(Ue.syncs[e], r, rr(t, n)) + }, + emscripten_has_asyncify: function() { + return 0 + }, + emscripten_is_main_browser_thread: function() { + return !0 + }, + emscripten_log: function(e, r, t) { + for (var n = "", i = function(e, r) { + var t = e, + n = r; + + function i(e) { + var r; + return n = function(e, r) { + return "double" !== r && "i64" !== r || 7 & e && (e += 4), e + }(n, e), "double" === e ? (r = X[n >> 3], n += 8) : "i64" == e ? (r = [q[n >> 2], q[n + 4 >> 2]], n += 8) : (e = "i32", r = q[n >> 2], n += 4), r + } + for (var a, o, u, s, c = [];;) { + var l = t; + if (0 === (a = O[t >> 0])) break; + if (o = O[t + 1 >> 0], 37 == a) { + var f = !1, + d = !1, + m = !1, + p = !1, + v = !1; + e: for (;;) { + switch (o) { + case 43: + f = !0; + break; + case 45: + d = !0; + break; + case 35: + m = !0; + break; + case 48: + if (p) break e; + p = !0; + break; + case 32: + v = !0; + break; + default: + break e + } + t++, o = O[t + 1 >> 0] + } + var g = 0; + if (42 == o) g = i("i32"), t++, o = O[t + 1 >> 0]; + else + for (; o >= 48 && o <= 57;) g = 10 * g + (o - 48), t++, o = O[t + 1 >> 0]; + var h, _ = !1, + b = -1; + if (46 == o) { + if (b = 0, _ = !0, t++, 42 == (o = O[t + 1 >> 0])) b = i("i32"), t++; + else + for (;;) { + var y = O[t + 1 >> 0]; + if (y < 48 || y > 57) break; + b = 10 * b + (y - 48), t++ + } + o = O[t + 1 >> 0] + } + switch (b < 0 && (b = 6, _ = !1), String.fromCharCode(o)) { + case "h": + 104 == O[t + 2 >> 0] ? (t++, h = 1) : h = 2; + break; + case "l": + 108 == O[t + 2 >> 0] ? (t++, h = 8) : h = 4; + break; + case "L": + case "q": + case "j": + h = 8; + break; + case "z": + case "t": + case "I": + h = 4; + break; + default: + h = null + } + switch (h && t++, o = O[t + 1 >> 0], String.fromCharCode(o)) { + case "d": + case "i": + case "u": + case "o": + case "x": + case "X": + case "p": + var w = 100 == o || 105 == o; + u = i("i" + 8 * (h = h || 4)), 8 == h && (u = 117 == o ? (u[0] >>> 0) + 4294967296 * (u[1] >>> 0) : rr(u[0], u[1])), h <= 4 && (u = (w ? ie : ne)(u & Math.pow(256, h) - 1, 8 * h)); + var E = Math.abs(u), + x = ""; + if (100 == o || 105 == o) S = ie(u, 8 * h).toString(10); + else if (117 == o) S = ne(u, 8 * h).toString(10), u = Math.abs(u); + else if (111 == o) S = (m ? "0" : "") + E.toString(8); + else if (120 == o || 88 == o) { + if (x = m && 0 != u ? "0x" : "", u < 0) { + u = -u, S = (E - 1).toString(16); + for (var k = [], C = 0; C < S.length; C++) k.push((15 - parseInt(S[C], 16)).toString(16)); + for (S = k.join(""); S.length < 2 * h;) S = "f" + S + } else S = E.toString(16); + 88 == o && (x = x.toUpperCase(), S = S.toUpperCase()) + } else 112 == o && (0 === E ? S = "(nil)" : (x = "0x", S = E.toString(16))); + if (_) + for (; S.length < b;) S = "0" + S; + for (u >= 0 && (f ? x = "+" + x : v && (x = " " + x)), "-" == S.charAt(0) && (x = "-" + x, S = S.substr(1)); x.length + S.length < g;) d ? S += " " : p ? S = "0" + S : x = " " + x; + (S = x + S).split("").forEach((function(e) { + c.push(e.charCodeAt(0)) + })); + break; + case "f": + case "F": + case "e": + case "E": + case "g": + case "G": + var S; + if (u = i("double"), isNaN(u)) S = "nan", p = !1; + else if (isFinite(u)) { + var D = !1, + F = Math.min(b, 20); + if (103 == o || 71 == o) { + D = !0, b = b || 1; + var A = parseInt(u.toExponential(F).split("e")[1], 10); + b > A && A >= -4 ? (o = (103 == o ? "f" : "F").charCodeAt(0), b -= A + 1) : (o = (103 == o ? "e" : "E").charCodeAt(0), b--), F = Math.min(b, 20) + } + 101 == o || 69 == o ? (S = u.toExponential(F), /[eE][-+]\d$/.test(S) && (S = S.slice(0, -1) + "0" + S.slice(-1))) : 102 != o && 70 != o || (S = u.toFixed(F), 0 === u && ((s = u) < 0 || 0 === s && 1 / s == -1 / 0) && (S = "-" + S)); + var P = S.split("e"); + if (D && !m) + for (; P[0].length > 1 && -1 != P[0].indexOf(".") && ("0" == P[0].slice(-1) || "." == P[0].slice(-1));) P[0] = P[0].slice(0, -1); + else + for (m && -1 == S.indexOf(".") && (P[0] += "."); b > F++;) P[0] += "0"; + S = P[0] + (P.length > 1 ? "e" + P[1] : ""), 69 == o && (S = S.toUpperCase()), u >= 0 && (f ? S = "+" + S : v && (S = " " + S)) + } else S = (u < 0 ? "-" : "") + "inf", p = !1; + for (; S.length < g;) d ? S += " " : S = !p || "-" != S[0] && "+" != S[0] ? (p ? "0" : " ") + S : S[0] + "0" + S.slice(1); + o < 97 && (S = S.toUpperCase()), S.split("").forEach((function(e) { + c.push(e.charCodeAt(0)) + })); + break; + case "s": + var T = i("i8*"), + L = T ? Yr(T) : "(null)".length; + if (_ && (L = Math.min(L, b)), !d) + for (; L < g--;) c.push(32); + if (T) + for (C = 0; C < L; C++) c.push(G[T++ >> 0]); + else c = c.concat(Qr("(null)".substr(0, L), !0)); + if (d) + for (; L < g--;) c.push(32); + break; + case "c": + for (d && c.push(i("i8")); --g > 0;) c.push(32); + d || c.push(i("i8")); + break; + case "n": + var I = i("i32*"); + q[I >> 2] = c.length; + break; + case "%": + c.push(a); + break; + default: + for (C = l; C < t + 2; C++) c.push(O[C >> 0]) + } + t += 2 + } else c.push(a), t += 1 + } + return c + }(r, t), a = 0; a < i.length; ++a) n += String.fromCharCode(i[a]); + gr(e, n) + }, + emscripten_longjmp: function(e, r) { + ! function(e, r) { + throw nt(e, r || 1), "longjmp" + }(e, r) + }, + emscripten_memcpy_big: function(e, r, t) { + G.copyWithin(e, r, r + t) + }, + emscripten_request_fullscreen_strategy: function(e, r, t) { + return function(e, r) { + return Oe.fullscreenEnabled() ? (e = ze(e)) ? e.requestFullscreen || e.webkitRequestFullscreen ? Oe.canPerformEventHandlerRequests() ? Ke(e, r) : r.deferUntilInEventHandler ? (Oe.deferCall(Ke, 1, [e, r]), 1) : -2 : -3 : -4 : -1 + }(e, { + scaleMode: q[t >> 2], + canvasResolutionScaleMode: q[t + 4 >> 2], + filteringMode: q[t + 8 >> 2], + deferUntilInEventHandler: r, + canvasResizedCallback: q[t + 12 >> 2], + canvasResizedCallbackUserData: q[t + 16 >> 2] + }) + }, + emscripten_request_pointerlock: function(e, r) { + return (e = ze(e)) ? e.requestPointerLock || e.msRequestPointerLock ? Oe.canPerformEventHandlerRequests() ? $e(e) : r ? (Oe.deferCall($e, 2, [e]), 1) : -2 : -1 : -4 + }, + emscripten_resize_heap: function(e) { + e >>>= 0; + var r = G.length, + t = 2147483648; + if (e > t) return !1; + for (var n, i, a = 1; a <= 4; a *= 2) { + var o = r * (1 + .2 / a); + if (o = Math.min(o, e + 100663296), _r(Math.min(t, ((n = Math.max(16777216, e, o)) % (i = 65536) > 0 && (n += i - n % i), n)))) return !0 + } + return !1 + }, + emscripten_sample_gamepad_data: function() { + return (Oe.lastGamepadState = navigator.getGamepads ? navigator.getGamepads() : navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : null) ? 0 : -1 + }, + emscripten_set_beforeunload_callback_on_thread: function(e, r, t) { + return "undefined" == typeof onbeforeunload ? -1 : 1 !== t ? -5 : (function(e, r, t, n, i, a) { + var o = { + target: ze(e), + eventTypeString: a, + callbackfunc: n, + handlerFunc: function(e) { + var t = e || event, + a = mt(n, i, 0, r); + if (a && (a = L(a)), a) return t.preventDefault(), t.returnValue = a, a + }, + useCapture: t + }; + Oe.registerOrRemoveHandler(o) + }(2, e, !0, r, 28, "beforeunload"), 0) + }, + emscripten_set_blur_callback_on_thread: function(e, r, t, n, i) { + return br(e, r, t, n, 12, "blur"), 0 + }, + emscripten_set_canvas_element_id: function(e) { + if (r.gid = L(e), window.dataLayer) r.ga = function() { + window.dataLayer.push(arguments) + }; + else { + const e = document.createElement("script"); + e.async = 1, e.src = "//www.googletagmanager.com/gtag/js?id=" + r.gid, document.head.append(e), window.dataLayer = window.dataLayer || [], r.ga = function() { + window.dataLayer.push(arguments) + }, r.ga("js", new Date) + } + r.ga("config", r.gid, { + send_page_view: !1 + }) + }, + emscripten_set_canvas_element_size: Xe, + emscripten_set_element_css_size: function(e, r, t) { + return (e = ze(e)) ? (e.style.width = r + "px", e.style.height = t + "px", 0) : -4 + }, + emscripten_set_focus_callback_on_thread: function(e, r, t, n, i) { + return br(e, r, t, n, 13, "focus"), 0 + }, + emscripten_set_fullscreenchange_callback_on_thread: function(e, r, t, n, i) { + return Oe.fullscreenEnabled() ? (e = ze(e)) ? (yr(e, r, t, n, 19, "fullscreenchange"), yr(e, r, t, n, 19, "webkitfullscreenchange"), 0) : -4 : -1 + }, + emscripten_set_gamepadconnected_callback_on_thread: function(e, r, t, n) { + return navigator.getGamepads || navigator.webkitGetGamepads ? (wr(2, e, r, t, 26, "gamepadconnected"), 0) : -1 + }, + emscripten_set_gamepaddisconnected_callback_on_thread: function(e, r, t, n) { + return navigator.getGamepads || navigator.webkitGetGamepads ? (wr(2, e, r, t, 27, "gamepaddisconnected"), 0) : -1 + }, + emscripten_set_keydown_callback_on_thread: function(e, r, t, n, i) { + return Er(e, r, t, n, 2, "keydown"), 0 + }, + emscripten_set_keypress_callback_on_thread: function(e, r, t, n, i) { + return Er(e, r, t, n, 1, "keypress"), 0 + }, + emscripten_set_keyup_callback_on_thread: function(e, r, t, n, i) { + return Er(e, r, t, n, 3, "keyup"), 0 + }, + emscripten_set_main_loop_arg: function(e, r, t, n) { + Ie(e, t, n, r) + }, + emscripten_set_mousedown_callback_on_thread: function(e, r, t, n, i) { + return kr(e, r, t, n, 5, "mousedown"), 0 + }, + emscripten_set_mouseenter_callback_on_thread: function(e, r, t, n, i) { + return kr(e, r, t, n, 33, "mouseenter"), 0 + }, + emscripten_set_mouseleave_callback_on_thread: function(e, r, t, n, i) { + return kr(e, r, t, n, 34, "mouseleave"), 0 + }, + emscripten_set_mousemove_callback_on_thread: function(e, r, t, n, i) { + return kr(e, r, t, n, 8, "mousemove"), 0 + }, + emscripten_set_mouseup_callback_on_thread: function(e, r, t, n, i) { + return kr(e, r, t, n, 6, "mouseup"), 0 + }, + emscripten_set_pointerlockchange_callback_on_thread: function(e, r, t, n, i) { + return document && document.body && (document.body.requestPointerLock || document.body.mozRequestPointerLock || document.body.webkitRequestPointerLock || document.body.msRequestPointerLock) ? (e = ze(e)) ? (Cr(e, r, t, n, 20, "pointerlockchange"), Cr(e, r, t, n, 20, "mozpointerlockchange"), Cr(e, r, t, n, 20, "webkitpointerlockchange"), Cr(e, r, t, n, 20, "mspointerlockchange"), 0) : -4 : -1 + }, + emscripten_set_resize_callback_on_thread: function(e, r, t, n, i) { + return function(e, r, t, n, i, a, o) { + Oe.uiEvent || (Oe.uiEvent = Zr(36)); + var u = { + target: e = ze(e), + eventTypeString: a, + callbackfunc: n, + handlerFunc: function(t) { + var a = t || event; + if (a.target == e) { + var o = Oe.uiEvent, + u = document.body; + q[o >> 2] = a.detail, q[o + 4 >> 2] = u.clientWidth, q[o + 8 >> 2] = u.clientHeight, q[o + 12 >> 2] = innerWidth, q[o + 16 >> 2] = innerHeight, q[o + 20 >> 2] = outerWidth, q[o + 24 >> 2] = outerHeight, q[o + 28 >> 2] = pageXOffset, q[o + 32 >> 2] = pageYOffset, mt(n, i, o, r) && a.preventDefault() + } + }, + useCapture: t + }; + Oe.registerOrRemoveHandler(u) + }(e, r, t, n, 10, "resize"), 0 + }, + emscripten_set_touchcancel_callback_on_thread: function(e, r, t, n, i) { + return Sr(e, r, t, n, 25, "touchcancel"), 0 + }, + emscripten_set_touchend_callback_on_thread: function(e, r, t, n, i) { + return Sr(e, r, t, n, 23, "touchend"), 0 + }, + emscripten_set_touchmove_callback_on_thread: function(e, r, t, n, i) { + return Sr(e, r, t, n, 24, "touchmove"), 0 + }, + emscripten_set_touchstart_callback_on_thread: function(e, r, t, n, i) { + return Sr(e, r, t, n, 22, "touchstart"), 0 + }, + emscripten_set_visibilitychange_callback_on_thread: function(e, r, t, n) { + return Dr(je[1], e, r, t, 21, "visibilitychange"), 0 + }, + emscripten_set_wheel_callback_on_thread: function(e, r, t, n, i) { + return void 0 !== (e = ze(e)).onwheel ? (Fr(e, r, t, n, 9, "wheel"), 0) : void 0 !== e.onmousewheel ? (Fr(e, r, t, n, 9, "mousewheel"), 0) : -1 + }, + emscripten_sleep: function() { + throw "Please compile your program with async support in order to use asynchronous operations like emscripten_sleep" + }, + emscripten_start_fetch: function(e, r, t, n, i) { + void 0 !== y && (y = !0); + var a = e + 112, + o = L(a), + u = Q[a + 36 >> 2], + s = Q[a + 40 >> 2], + c = Q[a + 44 >> 2], + l = Q[a + 48 >> 2], + f = Q[a + 52 >> 2], + d = !!(4 & f), + m = !!(32 & f), + p = !!(16 & f), + v = function(e, t, n) { + u ? it(u, e) : r && r(e) + }, + g = function(e, r, t) { + c ? it(c, e) : n && n(e) + }, + h = function(e, r, n) { + s ? it(s, e) : t && t(e) + }, + _ = function(e, r, t) { + l ? it(l, e) : i && i(e) + }, + b = function(e, t, n) { + Tr(Ar.dbInstance, e, t.response, (function(e, t, n) { + u ? it(u, e) : r && r(e) + }), (function(e, t, n) { + u ? it(u, e) : r && r(e) + })) + }; + if ("EM_IDB_STORE" === o) { + var w = Q[a + 84 >> 2]; + Tr(Ar.dbInstance, e, G.slice(w, w + Q[a + 88 >> 2]), v, h) + } else if ("EM_IDB_DELETE" === o) ! function(e, r, t, n) { + if (e) { + var i = Q[r + 112 + 64 >> 2]; + i || (i = Q[r + 8 >> 2]); + var a = L(i); + try { + var o = e.transaction(["FILES"], "readwrite").objectStore("FILES").delete(a); + o.onsuccess = function(e) { + var n = e.target.result; + Q[r + 12 >> 2] = 0, Ar.setu64(r + 16, 0), Ar.setu64(r + 24, 0), Ar.setu64(r + 32, 0), z[r + 40 >> 1] = 4, z[r + 42 >> 1] = 200, B("OK", r + 44, 64), t(r, 0, n) + }, o.onerror = function(e) { + z[r + 40 >> 1] = 4, z[r + 42 >> 1] = 404, B("Not Found", r + 44, 64), n(r, 0, e) + } + } catch (e) { + n(r, 0, e) + } + } else n(r, 0, "IndexedDB not available!") + }(Ar.dbInstance, e, v, h); + else if (p) { + if (m) return 0; + Pr(e, d ? b : v, h, g, _) + } else ! function(e, r, t, n) { + if (e) { + var i = Q[r + 112 + 64 >> 2]; + i || (i = Q[r + 8 >> 2]); + var a = L(i); + try { + var o = e.transaction(["FILES"], "readonly").objectStore("FILES").get(a); + o.onsuccess = function(e) { + if (e.target.result) { + var i = e.target.result, + a = i.byteLength || i.length, + o = Zr(a); + G.set(new Uint8Array(i), o), Q[r + 12 >> 2] = o, Ar.setu64(r + 16, a), Ar.setu64(r + 24, 0), Ar.setu64(r + 32, a), z[r + 40 >> 1] = 4, z[r + 42 >> 1] = 200, B("OK", r + 44, 64), t(r, 0, i) + } else z[r + 40 >> 1] = 4, z[r + 42 >> 1] = 404, B("Not Found", r + 44, 64), n(r, 0, "no data") + }, o.onerror = function(e) { + z[r + 40 >> 1] = 4, z[r + 42 >> 1] = 404, B("Not Found", r + 44, 64), n(r, 0, e) + } + } catch (e) { + n(r, 0, e) + } + } else n(r, 0, "IndexedDB not available!") + }(Ar.dbInstance, e, v, m ? h : d ? function(e, r, t) { + Pr(e, b, h, g, _) + } : function(e, r, t) { + Pr(e, v, h, g, _) + }); + return e + }, + environ_get: function(e, r) { + var t = 0; + return Ir().forEach((function(n, i) { + var a = r + t; + q[e + 4 * i >> 2] = a, + function(e, r, t) { + for (var n = 0; n < e.length; ++n) O[r++ >> 0] = e.charCodeAt(n); + t || (O[r >> 0] = 0) + }(n, a), t += n.length + 1 + })), 0 + }, + environ_sizes_get: function(e, r) { + var t = Ir(); + q[e >> 2] = t.length; + var n = 0; + return t.forEach((function(e) { + n += e.length + 1 + })), q[r >> 2] = n, 0 + }, + exit: function(e) { + Ct(e) + }, + fd_close: function(e) { + try { + var r = Te.getStreamFromFD(e); + return Pe.close(r), 0 + } catch (e) { + return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), e.errno + } + }, + fd_fdstat_get: function(e, r) { + try { + var t = Te.getStreamFromFD(e), + n = t.tty ? 2 : Pe.isDir(t.mode) ? 3 : Pe.isLink(t.mode) ? 7 : 4; + return O[r >> 0] = n, 0 + } catch (e) { + return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), e.errno + } + }, + fd_read: function(e, r, t, n) { + try { + var i = Te.getStreamFromFD(e), + a = Te.doReadv(i, r, t); + return q[n >> 2] = a, 0 + } catch (e) { + return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), e.errno + } + }, + fd_seek: function(e, r, t, n, i) { + try { + var a = Te.getStreamFromFD(e), + o = 4294967296 * t + (r >>> 0), + u = 9007199254740992; + return o <= -u || o >= u ? -61 : (Pe.llseek(a, o, n), _e = [a.position >>> 0, (he = a.position, +ae(he) >= 1 ? he > 0 ? (0 | se(+ue(he / 4294967296), 4294967295)) >>> 0 : ~~+oe((he - +(~~he >>> 0)) / 4294967296) >>> 0 : 0)], q[i >> 2] = _e[0], q[i + 4 >> 2] = _e[1], a.getdents && 0 === o && 0 === n && (a.getdents = null), 0) + } catch (e) { + return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), e.errno + } + }, + fd_write: function(e, r, t, n) { + try { + var i = Te.getStreamFromFD(e), + a = Te.doWritev(i, r, t); + return q[n >> 2] = a, 0 + } catch (e) { + return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), e.errno + } + }, + getCanvasPaddingLeft: function() { + return r.canvas.style.paddingLeft + }, + getCanvasPaddingTop: function() { + return r.canvas.style.paddingTop + }, + getTempRet0: function() { + return 0 | E + }, + gettimeofday: function(e) { + var r = Date.now(); + return q[e >> 2] = r / 1e3 | 0, q[e + 4 >> 2] = r % 1e3 * 1e3 | 0, 0 + }, + glActiveTexture: function(e) { + Or.activeTexture(e) + }, + glAttachShader: function(e, r) { + Or.attachShader(Ue.programs[e], Ue.shaders[r]) + }, + glBindAttribLocation: function(e, r, t) { + Or.bindAttribLocation(Ue.programs[e], r, L(t)) + }, + glBindBuffer: function(e, r) { + 35051 == e ? Or.currentPixelPackBufferBinding = r : 35052 == e && (Or.currentPixelUnpackBufferBinding = r), Or.bindBuffer(e, Ue.buffers[r]) + }, + glBindFramebuffer: function(e, r) { + Or.bindFramebuffer(e, Ue.framebuffers[r]) + }, + glBindRenderbuffer: function(e, r) { + Or.bindRenderbuffer(e, Ue.renderbuffers[r]) + }, + glBindTexture: function(e, r) { + Or.bindTexture(e, Ue.textures[r]) + }, + glBlendEquation: function(e) { + Or.blendEquation(e) + }, + glBlendEquationSeparate: function(e, r) { + Or.blendEquationSeparate(e, r) + }, + glBlendFunc: function(e, r) { + Or.blendFunc(e, r) + }, + glBlendFuncSeparate: function(e, r, t, n) { + Or.blendFuncSeparate(e, r, t, n) + }, + glBufferData: function(e, r, t, n) { + Ue.currentContext.version >= 2 ? t ? Or.bufferData(e, G, n, t, r) : Or.bufferData(e, r, n) : Or.bufferData(e, t ? G.subarray(t, t + r) : r, n) + }, + glBufferSubData: function(e, r, t, n) { + Ue.currentContext.version >= 2 ? Or.bufferSubData(e, r, G, n, t) : Or.bufferSubData(e, r, G.subarray(n, n + t)) + }, + glCheckFramebufferStatus: function(e) { + return Or.checkFramebufferStatus(e) + }, + glClear: function(e) { + Or.clear(e) + }, + glClearColor: function(e, r, t, n) { + Or.clearColor(e, r, t, n) + }, + glColorMask: function(e, r, t, n) { + Or.colorMask(!!e, !!r, !!t, !!n) + }, + glCompileShader: function(e) { + Or.compileShader(Ue.shaders[e]) + }, + glCompressedTexImage2D: function(e, r, t, n, i, a, o, u) { + Ue.currentContext.version >= 2 ? Or.currentPixelUnpackBufferBinding ? Or.compressedTexImage2D(e, r, t, n, i, a, o, u) : Or.compressedTexImage2D(e, r, t, n, i, a, G, u, o) : Or.compressedTexImage2D(e, r, t, n, i, a, u ? G.subarray(u, u + o) : null) + }, + glCreateProgram: function() { + var e = Ue.getNewId(Ue.programs), + r = Or.createProgram(); + return r.name = e, Ue.programs[e] = r, e + }, + glCreateShader: function(e) { + var r = Ue.getNewId(Ue.shaders); + return Ue.shaders[r] = Or.createShader(e), r + }, + glDeleteBuffers: function(e, r) { + for (var t = 0; t < e; t++) { + var n = q[r + 4 * t >> 2], + i = Ue.buffers[n]; + i && (Or.deleteBuffer(i), i.name = 0, Ue.buffers[n] = null, n == Ue.currArrayBuffer && (Ue.currArrayBuffer = 0), n == Ue.currElementArrayBuffer && (Ue.currElementArrayBuffer = 0), n == Or.currentPixelPackBufferBinding && (Or.currentPixelPackBufferBinding = 0), n == Or.currentPixelUnpackBufferBinding && (Or.currentPixelUnpackBufferBinding = 0)) + } + }, + glDeleteFramebuffers: function(e, r) { + for (var t = 0; t < e; ++t) { + var n = q[r + 4 * t >> 2], + i = Ue.framebuffers[n]; + i && (Or.deleteFramebuffer(i), i.name = 0, Ue.framebuffers[n] = null) + } + }, + glDeleteProgram: function(e) { + if (e) { + var r = Ue.programs[e]; + r ? (Or.deleteProgram(r), r.name = 0, Ue.programs[e] = null, Ue.programInfos[e] = null) : Ue.recordError(1281) + } + }, + glDeleteRenderbuffers: function(e, r) { + for (var t = 0; t < e; t++) { + var n = q[r + 4 * t >> 2], + i = Ue.renderbuffers[n]; + i && (Or.deleteRenderbuffer(i), i.name = 0, Ue.renderbuffers[n] = null) + } + }, + glDeleteShader: function(e) { + if (e) { + var r = Ue.shaders[e]; + r ? (Or.deleteShader(r), Ue.shaders[e] = null) : Ue.recordError(1281) + } + }, + glDeleteTextures: function(e, r) { + for (var t = 0; t < e; t++) { + var n = q[r + 4 * t >> 2], + i = Ue.textures[n]; + i && (Or.deleteTexture(i), i.name = 0, Ue.textures[n] = null) + } + }, + glDetachShader: function(e, r) { + Or.detachShader(Ue.programs[e], Ue.shaders[r]) + }, + glDisable: function(e) { + Or.disable(e) + }, + glDisableVertexAttribArray: function(e) { + Or.disableVertexAttribArray(e) + }, + glDrawArrays: function(e, r, t) { + Or.drawArrays(e, r, t) + }, + glDrawElements: nr, + glEnable: function(e) { + Or.enable(e) + }, + glEnableVertexAttribArray: function(e) { + Or.enableVertexAttribArray(e) + }, + glFramebufferRenderbuffer: function(e, r, t, n) { + Or.framebufferRenderbuffer(e, r, t, Ue.renderbuffers[n]) + }, + glFramebufferTexture2D: function(e, r, t, n, i) { + Or.framebufferTexture2D(e, r, t, Ue.textures[n], i) + }, + glFrontFace: function(e) { + Or.frontFace(e) + }, + glGenBuffers: function(e, r) { + ir(e, r, "createBuffer", Ue.buffers) + }, + glGenFramebuffers: function(e, r) { + ir(e, r, "createFramebuffer", Ue.framebuffers) + }, + glGenRenderbuffers: function(e, r) { + ir(e, r, "createRenderbuffer", Ue.renderbuffers) + }, + glGenTextures: function(e, r) { + ir(e, r, "createTexture", Ue.textures) + }, + glGetActiveAttrib: function(e, r, t, n, i, a, o) { + e = Ue.programs[e]; + var u = Or.getActiveAttrib(e, r); + if (u) { + var s = t > 0 && o ? B(u.name, o, t) : 0; + n && (q[n >> 2] = s), i && (q[i >> 2] = u.size), a && (q[a >> 2] = u.type) + } + }, + glGetActiveUniform: function(e, r, t, n, i, a, o) { + e = Ue.programs[e]; + var u = Or.getActiveUniform(e, r); + if (u) { + var s = t > 0 && o ? B(u.name, o, t) : 0; + n && (q[n >> 2] = s), i && (q[i >> 2] = u.size), a && (q[a >> 2] = u.type) + } + }, + glGetAttribLocation: function(e, r) { + return Or.getAttribLocation(Ue.programs[e], L(r)) + }, + glGetError: function() { + var e = Or.getError() || Ue.lastError; + return Ue.lastError = 0, e + }, + glGetFramebufferAttachmentParameteriv: function(e, r, t, n) { + var i = Or.getFramebufferAttachmentParameter(e, r, t); + (i instanceof WebGLRenderbuffer || i instanceof WebGLTexture) && (i = 0 | i.name), q[n >> 2] = i + }, + glGetIntegerv: function(e, r) { + or(e, r, 0) + }, + glGetProgramInfoLog: function(e, r, t, n) { + var i = Or.getProgramInfoLog(Ue.programs[e]); + null === i && (i = "(unknown error)"); + var a = r > 0 && n ? B(i, n, r) : 0; + t && (q[t >> 2] = a) + }, + glGetProgramiv: function(e, r, t) { + if (t) + if (e >= Ue.counter) Ue.recordError(1281); + else { + var n = Ue.programInfos[e]; + if (n) + if (35716 == r) { + var i = Or.getProgramInfoLog(Ue.programs[e]); + null === i && (i = "(unknown error)"), q[t >> 2] = i.length + 1 + } else if (35719 == r) q[t >> 2] = n.maxUniformLength; + else if (35722 == r) { + if (-1 == n.maxAttributeLength) { + e = Ue.programs[e]; + var a = Or.getProgramParameter(e, 35721); + n.maxAttributeLength = 0; + for (var o = 0; o < a; ++o) { + var u = Or.getActiveAttrib(e, o); + n.maxAttributeLength = Math.max(n.maxAttributeLength, u.name.length + 1) + } + } + q[t >> 2] = n.maxAttributeLength + } else if (35381 == r) { + if (-1 == n.maxUniformBlockNameLength) { + e = Ue.programs[e]; + var s = Or.getProgramParameter(e, 35382); + n.maxUniformBlockNameLength = 0; + for (o = 0; o < s; ++o) { + var c = Or.getActiveUniformBlockName(e, o); + n.maxUniformBlockNameLength = Math.max(n.maxUniformBlockNameLength, c.length + 1) + } + } + q[t >> 2] = n.maxUniformBlockNameLength + } else q[t >> 2] = Or.getProgramParameter(Ue.programs[e], r); + else Ue.recordError(1282) + } + else Ue.recordError(1281) + }, + glGetShaderInfoLog: function(e, r, t, n) { + var i = Or.getShaderInfoLog(Ue.shaders[e]); + null === i && (i = "(unknown error)"); + var a = r > 0 && n ? B(i, n, r) : 0; + t && (q[t >> 2] = a) + }, + glGetShaderiv: function(e, r, t) { + if (t) + if (35716 == r) { + var n = Or.getShaderInfoLog(Ue.shaders[e]); + null === n && (n = "(unknown error)"), q[t >> 2] = n.length + 1 + } else if (35720 == r) { + var i = Or.getShaderSource(Ue.shaders[e]), + a = null === i || 0 == i.length ? 0 : i.length + 1; + q[t >> 2] = a + } else q[t >> 2] = Or.getShaderParameter(Ue.shaders[e], r); + else Ue.recordError(1281) + }, + glGetString: function(e) { + if (Ue.stringCache[e]) return Ue.stringCache[e]; + var r; + switch (e) { + case 7939: + var t = Or.getSupportedExtensions() || []; + r = sr((t = t.concat(t.map((function(e) { + return "GL_" + e + })))).join(" ")); + break; + case 7936: + case 7937: + case 37445: + case 37446: + var n = Or.getParameter(e); + n || Ue.recordError(1280), r = sr(n); + break; + case 7938: + var i = Or.getParameter(7938); + r = sr(i = Ue.currentContext.version >= 2 ? "OpenGL ES 3.0 (" + i + ")" : "OpenGL ES 2.0 (" + i + ")"); + break; + case 35724: + var a = Or.getParameter(35724), + o = a.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/); + null !== o && (3 == o[1].length && (o[1] = o[1] + "0"), a = "OpenGL ES GLSL ES " + o[1] + " (" + a + ")"), r = sr(a); + break; + default: + return Ue.recordError(1280), 0 + } + return Ue.stringCache[e] = r, r + }, + glGetUniformLocation: function(e, r) { + var t = 0; + if ("]" == (r = L(r))[r.length - 1]) { + var n = r.lastIndexOf("["); + t = "]" != r[n + 1] ? cr(r.slice(n + 1)) : 0, r = r.slice(0, n) + } + var i = Ue.programInfos[e] && Ue.programInfos[e].uniforms[r]; + return i && t >= 0 && t < i[0] ? i[1] + t : -1 + }, + glIsEnabled: function(e) { + return Or.isEnabled(e) + }, + glLineWidth: function(e) { + Or.lineWidth(e) + }, + glLinkProgram: function(e) { + Or.linkProgram(Ue.programs[e]), Ue.populateUniformTable(e) + }, + glPixelStorei: function(e, r) { + 3317 == e && (Ue.unpackAlignment = r), Or.pixelStorei(e, r) + }, + glReadPixels: function(e, r, t, n, i, a, o) { + if (Ue.currentContext.version >= 2) + if (Or.currentPixelPackBufferBinding) Or.readPixels(e, r, t, n, i, a, o); + else { + var u = dr(a); + Or.readPixels(e, r, t, n, i, a, u, o >> mr(u)) + } + else { + var s = pr(a, i, t, n, o); + s ? Or.readPixels(e, r, t, n, i, a, s) : Ue.recordError(1280) + } + }, + glRenderbufferStorage: function(e, r, t, n) { + Or.renderbufferStorage(e, r, t, n) + }, + glScissor: function(e, r, t, n) { + Or.scissor(e, r, t, n) + }, + glShaderBinary: function() { + Ue.recordError(1280) + }, + glShaderSource: function(e, r, t, n) { + var i = Ue.getSource(e, r, t, n); + Or.shaderSource(Ue.shaders[e], i) + }, + glStencilFunc: function(e, r, t) { + Or.stencilFunc(e, r, t) + }, + glStencilOp: function(e, r, t) { + Or.stencilOp(e, r, t) + }, + glTexImage2D: function(e, r, t, n, i, a, o, u, s) { + if (Ue.currentContext.version >= 2) + if (Or.currentPixelUnpackBufferBinding) Or.texImage2D(e, r, t, n, i, a, o, u, s); + else if (s) { + var c = dr(u); + Or.texImage2D(e, r, t, n, i, a, o, u, c, s >> mr(c)) + } else Or.texImage2D(e, r, t, n, i, a, o, u, null); + else Or.texImage2D(e, r, t, n, i, a, o, u, s ? pr(u, o, n, i, s) : null) + }, + glTexParameteri: function(e, r, t) { + Or.texParameteri(e, r, t) + }, + glTexSubImage2D: function(e, r, t, n, i, a, o, u, s) { + if (Ue.currentContext.version >= 2) + if (Or.currentPixelUnpackBufferBinding) Or.texSubImage2D(e, r, t, n, i, a, o, u, s); + else if (s) { + var c = dr(u); + Or.texSubImage2D(e, r, t, n, i, a, o, u, c, s >> mr(c)) + } else Or.texSubImage2D(e, r, t, n, i, a, o, u, null); + else { + var l = null; + s && (l = pr(u, o, i, a, s)), Or.texSubImage2D(e, r, t, n, i, a, o, u, l) + } + }, + glUniform1f: function(e, r) { + Or.uniform1f(Ue.uniforms[e], r) + }, + glUniform1fv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform1fv(Ue.uniforms[e], V, t >> 2, r); + else { + if (r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var n = Ue.miniTempBufferFloatViews[r - 1], i = 0; i < r; ++i) n[i] = V[t + 4 * i >> 2]; + else n = V.subarray(t >> 2, t + 4 * r >> 2); + Or.uniform1fv(Ue.uniforms[e], n) + } + }, + glUniform1i: function(e, r) { + Or.uniform1i(Ue.uniforms[e], r) + }, + glUniform1iv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform1iv(Ue.uniforms[e], q, t >> 2, r); + else { + if (r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var n = Ue.miniTempBufferIntViews[r - 1], i = 0; i < r; ++i) n[i] = q[t + 4 * i >> 2]; + else n = q.subarray(t >> 2, t + 4 * r >> 2); + Or.uniform1iv(Ue.uniforms[e], n) + } + }, + glUniform2f: function(e, r, t) { + Or.uniform2f(Ue.uniforms[e], r, t) + }, + glUniform2fv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform2fv(Ue.uniforms[e], V, t >> 2, 2 * r); + else { + if (2 * r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var n = Ue.miniTempBufferFloatViews[2 * r - 1], i = 0; i < 2 * r; i += 2) n[i] = V[t + 4 * i >> 2], n[i + 1] = V[t + (4 * i + 4) >> 2]; + else n = V.subarray(t >> 2, t + 8 * r >> 2); + Or.uniform2fv(Ue.uniforms[e], n) + } + }, + glUniform2iv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform2iv(Ue.uniforms[e], q, t >> 2, 2 * r); + else { + if (2 * r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var n = Ue.miniTempBufferIntViews[2 * r - 1], i = 0; i < 2 * r; i += 2) n[i] = q[t + 4 * i >> 2], n[i + 1] = q[t + (4 * i + 4) >> 2]; + else n = q.subarray(t >> 2, t + 8 * r >> 2); + Or.uniform2iv(Ue.uniforms[e], n) + } + }, + glUniform3fv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform3fv(Ue.uniforms[e], V, t >> 2, 3 * r); + else { + if (3 * r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var n = Ue.miniTempBufferFloatViews[3 * r - 1], i = 0; i < 3 * r; i += 3) n[i] = V[t + 4 * i >> 2], n[i + 1] = V[t + (4 * i + 4) >> 2], n[i + 2] = V[t + (4 * i + 8) >> 2]; + else n = V.subarray(t >> 2, t + 12 * r >> 2); + Or.uniform3fv(Ue.uniforms[e], n) + } + }, + glUniform3iv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform3iv(Ue.uniforms[e], q, t >> 2, 3 * r); + else { + if (3 * r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var n = Ue.miniTempBufferIntViews[3 * r - 1], i = 0; i < 3 * r; i += 3) n[i] = q[t + 4 * i >> 2], n[i + 1] = q[t + (4 * i + 4) >> 2], n[i + 2] = q[t + (4 * i + 8) >> 2]; + else n = q.subarray(t >> 2, t + 12 * r >> 2); + Or.uniform3iv(Ue.uniforms[e], n) + } + }, + glUniform4f: function(e, r, t, n, i) { + Or.uniform4f(Ue.uniforms[e], r, t, n, i) + }, + glUniform4fv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform4fv(Ue.uniforms[e], V, t >> 2, 4 * r); + else { + if (4 * r <= Ue.MINI_TEMP_BUFFER_SIZE) { + var n = Ue.miniTempBufferFloatViews[4 * r - 1], + i = V; + t >>= 2; + for (var a = 0; a < 4 * r; a += 4) { + var o = t + a; + n[a] = i[o], n[a + 1] = i[o + 1], n[a + 2] = i[o + 2], n[a + 3] = i[o + 3] + } + } else n = V.subarray(t >> 2, t + 16 * r >> 2); + Or.uniform4fv(Ue.uniforms[e], n) + } + }, + glUniform4iv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform4iv(Ue.uniforms[e], q, t >> 2, 4 * r); + else { + if (4 * r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var n = Ue.miniTempBufferIntViews[4 * r - 1], i = 0; i < 4 * r; i += 4) n[i] = q[t + 4 * i >> 2], n[i + 1] = q[t + (4 * i + 4) >> 2], n[i + 2] = q[t + (4 * i + 8) >> 2], n[i + 3] = q[t + (4 * i + 12) >> 2]; + else n = q.subarray(t >> 2, t + 16 * r >> 2); + Or.uniform4iv(Ue.uniforms[e], n) + } + }, + glUniformMatrix2fv: function(e, r, t, n) { + if (Ue.currentContext.version >= 2) Or.uniformMatrix2fv(Ue.uniforms[e], !!t, V, n >> 2, 4 * r); + else { + if (4 * r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var i = Ue.miniTempBufferFloatViews[4 * r - 1], a = 0; a < 4 * r; a += 4) i[a] = V[n + 4 * a >> 2], i[a + 1] = V[n + (4 * a + 4) >> 2], i[a + 2] = V[n + (4 * a + 8) >> 2], i[a + 3] = V[n + (4 * a + 12) >> 2]; + else i = V.subarray(n >> 2, n + 16 * r >> 2); + Or.uniformMatrix2fv(Ue.uniforms[e], !!t, i) + } + }, + glUniformMatrix3fv: function(e, r, t, n) { + if (Ue.currentContext.version >= 2) Or.uniformMatrix3fv(Ue.uniforms[e], !!t, V, n >> 2, 9 * r); + else { + if (9 * r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var i = Ue.miniTempBufferFloatViews[9 * r - 1], a = 0; a < 9 * r; a += 9) i[a] = V[n + 4 * a >> 2], i[a + 1] = V[n + (4 * a + 4) >> 2], i[a + 2] = V[n + (4 * a + 8) >> 2], i[a + 3] = V[n + (4 * a + 12) >> 2], i[a + 4] = V[n + (4 * a + 16) >> 2], i[a + 5] = V[n + (4 * a + 20) >> 2], i[a + 6] = V[n + (4 * a + 24) >> 2], i[a + 7] = V[n + (4 * a + 28) >> 2], i[a + 8] = V[n + (4 * a + 32) >> 2]; + else i = V.subarray(n >> 2, n + 36 * r >> 2); + Or.uniformMatrix3fv(Ue.uniforms[e], !!t, i) + } + }, + glUniformMatrix4fv: function(e, r, t, n) { + if (Ue.currentContext.version >= 2) Or.uniformMatrix4fv(Ue.uniforms[e], !!t, V, n >> 2, 16 * r); + else { + if (16 * r <= Ue.MINI_TEMP_BUFFER_SIZE) { + var i = Ue.miniTempBufferFloatViews[16 * r - 1], + a = V; + n >>= 2; + for (var o = 0; o < 16 * r; o += 16) { + var u = n + o; + i[o] = a[u], i[o + 1] = a[u + 1], i[o + 2] = a[u + 2], i[o + 3] = a[u + 3], i[o + 4] = a[u + 4], i[o + 5] = a[u + 5], i[o + 6] = a[u + 6], i[o + 7] = a[u + 7], i[o + 8] = a[u + 8], i[o + 9] = a[u + 9], i[o + 10] = a[u + 10], i[o + 11] = a[u + 11], i[o + 12] = a[u + 12], i[o + 13] = a[u + 13], i[o + 14] = a[u + 14], i[o + 15] = a[u + 15] + } + } else i = V.subarray(n >> 2, n + 64 * r >> 2); + Or.uniformMatrix4fv(Ue.uniforms[e], !!t, i) + } + }, + glUseProgram: function(e) { + Or.useProgram(Ue.programs[e]) + }, + glVertexAttrib1fv: function(e, r) { + Or.vertexAttrib1f(e, V[r >> 2]) + }, + glVertexAttrib2fv: function(e, r) { + Or.vertexAttrib2f(e, V[r >> 2], V[r + 4 >> 2]) + }, + glVertexAttrib3fv: function(e, r) { + Or.vertexAttrib3f(e, V[r >> 2], V[r + 4 >> 2], V[r + 8 >> 2]) + }, + glVertexAttrib4f: function(e, r, t, n, i) { + Or.vertexAttrib4f(e, r, t, n, i) + }, + glVertexAttrib4fv: function(e, r) { + Or.vertexAttrib4f(e, V[r >> 2], V[r + 4 >> 2], V[r + 8 >> 2], V[r + 12 >> 2]) + }, + glVertexAttribPointer: function(e, r, t, n, i, a) { + Or.vertexAttribPointer(e, r, t, !!n, i, a) + }, + glViewport: function(e, r, t, n) { + Or.viewport(e, r, t, n) + }, + gmtime_r: function(e, r) { + var t = new Date(1e3 * q[e >> 2]); + q[r >> 2] = t.getUTCSeconds(), q[r + 4 >> 2] = t.getUTCMinutes(), q[r + 8 >> 2] = t.getUTCHours(), q[r + 12 >> 2] = t.getUTCDate(), q[r + 16 >> 2] = t.getUTCMonth(), q[r + 20 >> 2] = t.getUTCFullYear() - 1900, q[r + 24 >> 2] = t.getUTCDay(), q[r + 36 >> 2] = 0, q[r + 32 >> 2] = 0; + var n = Date.UTC(t.getUTCFullYear(), 0, 1, 0, 0, 0, 0), + i = (t.getTime() - n) / 864e5 | 0; + return q[r + 28 >> 2] = i, q[r + 40 >> 2] = Br, r + }, + invoke_di: function(e, r) { + var t = yt(); + try { + return bt(e, r) + } catch (e) { + if (Et(t), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_i: function(e) { + var r = yt(); + try { + return lt(e) + } catch (e) { + if (Et(r), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_ii: function(e, r) { + var t = yt(); + try { + return ft(e, r) + } catch (e) { + if (Et(t), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_iid: function(e, r, t) { + var n = yt(); + try { + return _t(e, r, t) + } catch (e) { + if (Et(n), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_iii: function(e, r, t) { + var n = yt(); + try { + return dt(e, r, t) + } catch (e) { + if (Et(n), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_iiii: function(e, r, t, n) { + var i = yt(); + try { + return mt(e, r, t, n) + } catch (e) { + if (Et(i), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_iiiii: function(e, r, t, n, i) { + var a = yt(); + try { + return pt(e, r, t, n, i) + } catch (e) { + if (Et(a), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_iiiiii: function(e, r, t, n, i, a) { + var o = yt(); + try { + return vt(e, r, t, n, i, a) + } catch (e) { + if (Et(o), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_iiiiiii: function(e, r, t, n, i, a, o) { + var u = yt(); + try { + return gt(e, r, t, n, i, a, o) + } catch (e) { + if (Et(u), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_iiiiiiii: function(e, r, t, n, i, a, o, u) { + var s = yt(); + try { + return ht(e, r, t, n, i, a, o, u) + } catch (e) { + if (Et(s), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_vi: function(e, r) { + var t = yt(); + try { + it(e, r) + } catch (e) { + if (Et(t), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_vii: function(e, r, t) { + var n = yt(); + try { + at(e, r, t) + } catch (e) { + if (Et(n), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_viii: function(e, r, t, n) { + var i = yt(); + try { + ot(e, r, t, n) + } catch (e) { + if (Et(i), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_viiii: function(e, r, t, n, i) { + var a = yt(); + try { + ut(e, r, t, n, i) + } catch (e) { + if (Et(a), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_viiiii: function(e, r, t, n, i, a) { + var o = yt(); + try { + st(e, r, t, n, i, a) + } catch (e) { + if (Et(o), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_viiiiii: function(e, r, t, n, i, a, o) { + var u = yt(); + try { + ct(e, r, t, n, i, a, o) + } catch (e) { + if (Et(u), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + localtime: function(e) { + return Mr(e, 1052512) + }, + localtime_r: Mr, + memory: w, + mktime: function(e) { + Rr(); + var r = new Date(q[e + 20 >> 2] + 1900, q[e + 16 >> 2], q[e + 12 >> 2], q[e + 8 >> 2], q[e + 4 >> 2], q[e >> 2], 0), + t = q[e + 32 >> 2], + n = r.getTimezoneOffset(), + i = new Date(r.getFullYear(), 0, 1), + a = new Date(r.getFullYear(), 6, 1).getTimezoneOffset(), + o = i.getTimezoneOffset(), + u = Math.min(o, a); + if (t < 0) q[e + 32 >> 2] = Number(a != o && u == n); + else if (t > 0 != (u == n)) { + var s = Math.max(o, a), + c = t > 0 ? u : s; + r.setTime(r.getTime() + 6e4 * (c - n)) + } + q[e + 24 >> 2] = r.getDay(); + var l = (r.getTime() - i.getTime()) / 864e5 | 0; + return q[e + 28 >> 2] = l, r.getTime() / 1e3 | 0 + }, + nanosleep: function(e, r) { + if (0 === e) return xe(28), -1; + var t = q[e >> 2], + n = q[e + 4 >> 2]; + return n < 0 || n > 999999999 || t < 0 ? (xe(28), -1) : (0 !== r && (q[r >> 2] = 0, q[r + 4 >> 2] = 0), Nr(1e6 * t + n / 1e3)) + }, + round: function(e) { + return (e = +e) >= 0 ? +ue(e + .5) : +oe(e - .5) + }, + saveSetjmp: function e(r, t, n, i) { + t |= 0, n |= 0, i |= 0; + var a = 0; + for (hr = hr + 1 | 0, q[(r |= 0) >> 2] = hr; + (0 | a) < (0 | i);) { + if (0 == (0 | q[n + (a << 3) >> 2])) return q[n + (a << 3) >> 2] = hr, q[n + (4 + (a << 3)) >> 2] = t, q[n + (8 + (a << 3)) >> 2] = 0, x(0 | i), 0 | n; + a = a + 1 | 0 + } + return n = 0 | e(0 | r, 0 | t, 0 | (n = 0 | Kr(0 | n, 8 * ((i = 2 * i | 0) + 1 | 0) | 0)), 0 | i), x(0 | i), 0 | n + }, + setTempRet0: function(e) { + x(0 | e) + }, + sigaction: function(e, r, t) { + return 0 + }, + signal: function(e, r) { + return 14 == e && r, 0 + }, + sysconf: function(e) { + switch (e) { + case 30: + return 16384; + case 85: + return 131072; + case 132: + case 133: + case 12: + case 137: + case 138: + case 15: + case 235: + case 16: + case 17: + case 18: + case 19: + case 20: + case 149: + case 13: + case 10: + case 236: + case 153: + case 9: + case 21: + case 22: + case 159: + case 154: + case 14: + case 77: + case 78: + case 139: + case 80: + case 81: + case 82: + case 68: + case 67: + case 164: + case 11: + case 29: + case 47: + case 48: + case 95: + case 52: + case 51: + case 46: + case 79: + return 200809; + case 27: + case 246: + case 127: + case 128: + case 23: + case 24: + case 160: + case 161: + case 181: + case 182: + case 242: + case 183: + case 184: + case 243: + case 244: + case 245: + case 165: + case 178: + case 179: + case 49: + case 50: + case 168: + case 169: + case 175: + case 170: + case 171: + case 172: + case 97: + case 76: + case 32: + case 173: + case 35: + return -1; + case 176: + case 177: + case 7: + case 155: + case 8: + case 157: + case 125: + case 126: + case 92: + case 93: + case 129: + case 130: + case 131: + case 94: + case 91: + return 1; + case 74: + case 60: + case 69: + case 70: + case 4: + return 1024; + case 31: + case 42: + case 72: + return 32; + case 87: + case 26: + case 33: + return 2147483647; + case 34: + case 1: + return 47839; + case 38: + case 36: + return 99; + case 43: + case 37: + return 2048; + case 0: + return 2097152; + case 3: + return 65536; + case 28: + return 32768; + case 44: + return 32767; + case 75: + return 16384; + case 39: + return 1e3; + case 89: + return 700; + case 71: + return 256; + case 40: + return 255; + case 2: + return 100; + case 180: + return 64; + case 25: + return 20; + case 5: + return 16; + case 6: + return 6; + case 73: + return 4; + case 84: + return "object" == typeof navigator && navigator.hardwareConcurrency || 1 + } + return xe(28), -1 + }, + table: C, + testSetjmp: function(e, r, t) { + e |= 0, r |= 0, t |= 0; + for (var n = 0, i = 0; + (0 | n) < (0 | t) && 0 != (0 | (i = 0 | q[r + (n << 3) >> 2]));) { + if ((0 | i) == (0 | e)) return 0 | q[r + (4 + (n << 3)) >> 2]; + n = n + 1 | 0 + } + return 0 + }, + time: function(e) { + var r = Date.now() / 1e3 | 0; + return e && (q[e >> 2] = r), r + }, + usleep: Nr, + wafjs_file_loaddata: function(e) { + const t = localStorage.getItem(L(e)); + if (t && t.length > 0) { + const e = new Uint8Array(JSON.parse(t)), + n = r._malloc(e.length + 4); + return r.HEAP8.set(e, n + 4), r.HEAP32[n >> 2] = e.length, n + } + return 0 + }, + wafjs_file_savedata: function(e, t, n) { + if (t && n > 0) { + const i = L(e), + a = new Uint8Array(r.HEAP8.buffer, t, n); + a && a.length > 0 ? localStorage.setItem(i, JSON.stringify(Array.from(a))) : localStorage.removeItem(i) + } + }, + wafjs_hal_inputtext_begin: function(e, t, n, i, a, o, u, s, c) { + const l = document.createElement("input"); + l.value = L(e), l.style.position = "absolute", l.style.resize = "none", l.style.overflow = "hidden", l.style.zIndex = -999, l.style.top = "50%", l.style.left = "50%", l.style.width = "32px", l.wafSelectionStart = l.wafSelectionEnd = l.value ? l.value.length : 0; + let f = !1, + d = !1; + const m = (e, r) => { + ut(u, c, 0, e, r) + }; + window.requestAnimationFrame((function() { + l.focus() + })), l.addEventListener("input", (function(e) { + if ("insertCompositionText" != e.inputType || e.isComposing) { + if ("deleteContentForward" == e.inputType || "insertText" == e.inputType && null == e.data) m(l.wafSelectionStart, l.wafSelectionEnd + 1); + else if ("deleteContentBackward" == e.inputType) { + if (l.wafSelectionStart <= 0) return; + m(l.wafSelectionStart - 1, l.wafSelectionEnd), l.wafSelectionEnd = --l.wafSelectionStart + } else { + const r = e.data || ""; + let t = l.wafSelectionStart, + n = l.wafSelectionEnd; + e.isComposing ? (f ? (l.wafSelectionEnd = ++l.wafSelectionStart, f = !1) : t -= 1, r || (l.wafSelectionEnd = --l.wafSelectionStart)) : l.wafSelectionEnd = ++l.wafSelectionStart, ((e, r, t) => { + const n = R(e) + 1, + i = Zr(n); + B(e, i, n), ut(u, c, i, r, t) + })(r, t, n) + } + var r, t; + r = l.wafSelectionStart, t = l.wafSelectionEnd, ot(s, c, r, t) + } + })), l.addEventListener("select", (e => { + e.preventDefault(), e.stopPropagation() + })), l.addEventListener("keydown", (e => { + d = !0; + const t = e.key, + n = e.ctrlKey && "/a/A/c/C/v/V/".indexOf("/" + t + "/") >= 0, + i = "Home" == t || "End" == t, + a = (e.ctrlKey || e.shiftKey) && "/Home/End/ArrowUp/ArrowDown/ArrowLeft/ArrowRight/".indexOf("/" + t + "/") >= 0; + if (n || a || i) return e.preventDefault(), void e.stopPropagation(); + const o = new e.constructor(e.type, e); + r.canvas.dispatchEvent(o) + })), l.addEventListener("keyup", (e => { + d = !1; + const t = new e.constructor(e.type, e); + r.canvas.dispatchEvent(t) + })), l.addEventListener("keypress", (e => {})), l.addEventListener("compositionstart", (e => { + f = !0 + })), l.addEventListener("compositionupdate", (e => {})), l.addEventListener("compositionend", (e => {})), !r.canvas.inputTextFocusHandler && (r.canvas.inputTextFocusHandler = e => { + r.canvas.wafActiveInputText && window.requestAnimationFrame((function() { + r.canvas.wafActiveInputText.focus() + })) + }, r.canvas.addEventListener("focus", r.canvas.inputTextFocusHandler)), r.canvas.parentNode.appendChild(l), r.canvas.wafActiveInputText = l + }, + wafjs_hidestatus: function() { + "function" == typeof r.hideStatus && r.hideStatus() + }, + wafjs_setcontentinfo: function(e, t, n) { + r.canvas.setAttribute("waf-content-width", e), r.canvas.setAttribute("waf-content-height", t), r.canvas.setAttribute("waf-content-fps", n), r.canvas.style.setProperty("--waf-content-width", e + "px"), r.canvas.style.setProperty("--waf-content-height", t + "px") + }, + wafjs_setstatus: function(e) { + "function" == typeof r.setStatus && r.setStatus(L(e)) + }, + wafjs_url_transformNavigateUrl: function(e, t) { + const n = L(e), + i = L(t) || "_self", + a = r.WAFLASH, + o = a && a.hal && "function" == typeof a.hal.url_transformNavigateUrl && a.hal.url_transformNavigateUrl(n, i); + "function" == typeof o && window.requestAnimationFrame((() => o())) + }, + wafjs_url_transformRequestUrl: function(e) { + const t = L(e), + n = r.WAFLASH, + i = n ? n.hal && "function" == typeof n.hal.url_transformRequestUrl && n.hal.url_transformRequestUrl(t) : t; + if (i) { + const e = R(i) + 1, + r = Zr(e); + return B(i, r, e), r + } + return 0 + } + }, + Xr = function() { + var e = { + env: Vr, + wasi_snapshot_preview1: Vr + }; + + function t(e, t) { + var n = e.exports; + r.asm = n, me() + } + + function n(e) { + t(e.instance) + } + + function i(r) { + return (b || "function" != typeof fetch ? new Promise((function(e, r) { + e(ye()) + })) : fetch(be, { + credentials: "same-origin" + }).then((function(e) { + if (!e.ok) throw "failed to load wasm binary file at '" + be + "'"; + return e.arrayBuffer() + })).catch((function() { + return ye() + }))).then((function(r) { + return WebAssembly.instantiate(r, e) + })).then(r, (function(e) { + p("failed to asynchronously prepare wasm: " + e), pe(e) + })) + } + if (de(), r.instantiateWasm) try { + return r.instantiateWasm(e, t) + } catch (e) { + return p("Module.instantiateWasm callback failed with error: " + e), !1 + } + return function() { + if (b || "function" != typeof WebAssembly.instantiateStreaming || ve(be) || "function" != typeof fetch) return i(n); + fetch(be, { + credentials: "same-origin" + }).then((function(r) { + return WebAssembly.instantiateStreaming(r, e).then(n, (function(e) { + p("wasm streaming compile failed: " + e), p("falling back to ArrayBuffer instantiation"), i(n) + })) + })) + }(), {} + }(); + r.asm = Xr; + var Hr, Wr = r.___wasm_call_ctors = function() { + return (Wr = r.___wasm_call_ctors = r.asm.__wasm_call_ctors).apply(null, arguments) + }, + Yr = (r._reopenBuffer = function() { + return (r._reopenBuffer = r.asm.reopenBuffer).apply(null, arguments) + }, r._invokeExternalCallback = function() { + return (r._invokeExternalCallback = r.asm.invokeExternalCallback).apply(null, arguments) + }, r.___em_js__wafjs_setstatus = function() { + return (r.___em_js__wafjs_setstatus = r.asm.__em_js__wafjs_setstatus).apply(null, arguments) + }, r.___em_js__wafjs_hidestatus = function() { + return (r.___em_js__wafjs_hidestatus = r.asm.__em_js__wafjs_hidestatus).apply(null, arguments) + }, r.___em_js__wafjs_setcontentinfo = function() { + return (r.___em_js__wafjs_setcontentinfo = r.asm.__em_js__wafjs_setcontentinfo).apply(null, arguments) + }, r.___em_js__emscripten_set_canvas_element_id = function() { + return (r.___em_js__emscripten_set_canvas_element_id = r.asm.__em_js__emscripten_set_canvas_element_id).apply(null, arguments) + }, r.___em_js__emscripten_get_canvas_element_id = function() { + return (r.___em_js__emscripten_get_canvas_element_id = r.asm.__em_js__emscripten_get_canvas_element_id).apply(null, arguments) + }, r._memset = function() { + return (r._memset = r.asm.memset).apply(null, arguments) + }, r._strlen = function() { + return (Yr = r._strlen = r.asm.strlen).apply(null, arguments) + }), + Zr = (r._free = function() { + return (r._free = r.asm.free).apply(null, arguments) + }, r.___em_js__getCanvasPaddingLeft = function() { + return (r.___em_js__getCanvasPaddingLeft = r.asm.__em_js__getCanvasPaddingLeft).apply(null, arguments) + }, r.___em_js__getCanvasPaddingTop = function() { + return (r.___em_js__getCanvasPaddingTop = r.asm.__em_js__getCanvasPaddingTop).apply(null, arguments) + }, r._main = function() { + return (r._main = r.asm.main).apply(null, arguments) + }, r._fileno = function() { + return (r._fileno = r.asm.fileno).apply(null, arguments) + }, r.___em_js__wafjs_file_savedata = function() { + return (r.___em_js__wafjs_file_savedata = r.asm.__em_js__wafjs_file_savedata).apply(null, arguments) + }, r.___em_js__wafjs_file_loaddata = function() { + return (r.___em_js__wafjs_file_loaddata = r.asm.__em_js__wafjs_file_loaddata).apply(null, arguments) + }, r._memcpy = function() { + return (r._memcpy = r.asm.memcpy).apply(null, arguments) + }, r._malloc = function() { + return (Zr = r._malloc = r.asm.malloc).apply(null, arguments) + }), + Kr = (r.___em_js__wafjs_url_transformRequestUrl = function() { + return (r.___em_js__wafjs_url_transformRequestUrl = r.asm.__em_js__wafjs_url_transformRequestUrl).apply(null, arguments) + }, r.___em_js__wafjs_url_transformNavigateUrl = function() { + return (r.___em_js__wafjs_url_transformNavigateUrl = r.asm.__em_js__wafjs_url_transformNavigateUrl).apply(null, arguments) + }, r._strstr = function() { + return (r._strstr = r.asm.strstr).apply(null, arguments) + }, r.___em_js__changeCursor = function() { + return (r.___em_js__changeCursor = r.asm.__em_js__changeCursor).apply(null, arguments) + }, r._realloc = function() { + return (Kr = r._realloc = r.asm.realloc).apply(null, arguments) + }), + $r = r.___errno_location = function() { + return ($r = r.___errno_location = r.asm.__errno_location).apply(null, arguments) + }, + Jr = r._emscripten_GetProcAddress = function() { + return (Jr = r._emscripten_GetProcAddress = r.asm.emscripten_GetProcAddress).apply(null, arguments) + }, + et = r.__get_tzname = function() { + return (et = r.__get_tzname = r.asm._get_tzname).apply(null, arguments) + }, + rt = r.__get_daylight = function() { + return (rt = r.__get_daylight = r.asm._get_daylight).apply(null, arguments) + }, + tt = r.__get_timezone = function() { + return (tt = r.__get_timezone = r.asm._get_timezone).apply(null, arguments) + }, + nt = r._setThrew = function() { + return (nt = r._setThrew = r.asm.setThrew).apply(null, arguments) + }, + it = (r._emscripten_main_thread_process_queued_calls = function() { + return (r._emscripten_main_thread_process_queued_calls = r.asm.emscripten_main_thread_process_queued_calls).apply(null, arguments) + }, r.dynCall_vi = function() { + return (it = r.dynCall_vi = r.asm.dynCall_vi).apply(null, arguments) + }), + at = r.dynCall_vii = function() { + return (at = r.dynCall_vii = r.asm.dynCall_vii).apply(null, arguments) + }, + ot = r.dynCall_viii = function() { + return (ot = r.dynCall_viii = r.asm.dynCall_viii).apply(null, arguments) + }, + ut = r.dynCall_viiii = function() { + return (ut = r.dynCall_viiii = r.asm.dynCall_viiii).apply(null, arguments) + }, + st = r.dynCall_viiiii = function() { + return (st = r.dynCall_viiiii = r.asm.dynCall_viiiii).apply(null, arguments) + }, + ct = r.dynCall_viiiiii = function() { + return (ct = r.dynCall_viiiiii = r.asm.dynCall_viiiiii).apply(null, arguments) + }, + lt = r.dynCall_i = function() { + return (lt = r.dynCall_i = r.asm.dynCall_i).apply(null, arguments) + }, + ft = r.dynCall_ii = function() { + return (ft = r.dynCall_ii = r.asm.dynCall_ii).apply(null, arguments) + }, + dt = r.dynCall_iii = function() { + return (dt = r.dynCall_iii = r.asm.dynCall_iii).apply(null, arguments) + }, + mt = r.dynCall_iiii = function() { + return (mt = r.dynCall_iiii = r.asm.dynCall_iiii).apply(null, arguments) + }, + pt = r.dynCall_iiiii = function() { + return (pt = r.dynCall_iiiii = r.asm.dynCall_iiiii).apply(null, arguments) + }, + vt = r.dynCall_iiiiii = function() { + return (vt = r.dynCall_iiiiii = r.asm.dynCall_iiiiii).apply(null, arguments) + }, + gt = r.dynCall_iiiiiii = function() { + return (gt = r.dynCall_iiiiiii = r.asm.dynCall_iiiiiii).apply(null, arguments) + }, + ht = r.dynCall_iiiiiiii = function() { + return (ht = r.dynCall_iiiiiiii = r.asm.dynCall_iiiiiiii).apply(null, arguments) + }, + _t = r.dynCall_iid = function() { + return (_t = r.dynCall_iid = r.asm.dynCall_iid).apply(null, arguments) + }, + bt = r.dynCall_di = function() { + return (bt = r.dynCall_di = r.asm.dynCall_di).apply(null, arguments) + }, + yt = r.stackSave = function() { + return (yt = r.stackSave = r.asm.stackSave).apply(null, arguments) + }, + wt = r.stackAlloc = function() { + return (wt = r.stackAlloc = r.asm.stackAlloc).apply(null, arguments) + }, + Et = r.stackRestore = function() { + return (Et = r.stackRestore = r.asm.stackRestore).apply(null, arguments) + }; + r.__growWasmMemory = function() { + return (r.__growWasmMemory = r.asm.__growWasmMemory).apply(null, arguments) + }, r.dynCall_viiiiiii = function() { + return (r.dynCall_viiiiiii = r.asm.dynCall_viiiiiii).apply(null, arguments) + }, r.dynCall_viiiiiiiii = function() { + return (r.dynCall_viiiiiiiii = r.asm.dynCall_viiiiiiiii).apply(null, arguments) + }, r.dynCall_v = function() { + return (r.dynCall_v = r.asm.dynCall_v).apply(null, arguments) + }, r.dynCall_diii = function() { + return (r.dynCall_diii = r.asm.dynCall_diii).apply(null, arguments) + }, r.dynCall_viiiiiiii = function() { + return (r.dynCall_viiiiiiii = r.asm.dynCall_viiiiiiii).apply(null, arguments) + }, r.dynCall_iiiiiiiiii = function() { + return (r.dynCall_iiiiiiiiii = r.asm.dynCall_iiiiiiiiii).apply(null, arguments) + }, r.dynCall_jiji = function() { + return (r.dynCall_jiji = r.asm.dynCall_jiji).apply(null, arguments) + }, r.dynCall_ji = function() { + return (r.dynCall_ji = r.asm.dynCall_ji).apply(null, arguments) + }, r.dynCall_iiiiiidii = function() { + return (r.dynCall_iiiiiidii = r.asm.dynCall_iiiiiidii).apply(null, arguments) + }, r.dynCall_iiiiiiiii = function() { + return (r.dynCall_iiiiiiiii = r.asm.dynCall_iiiiiiiii).apply(null, arguments) + }, r.dynCall_viiiiiiiiiii = function() { + return (r.dynCall_viiiiiiiiiii = r.asm.dynCall_viiiiiiiiiii).apply(null, arguments) + }, r.dynCall_iidiiii = function() { + return (r.dynCall_iidiiii = r.asm.dynCall_iidiiii).apply(null, arguments) + }, r.dynCall_vffff = function() { + return (r.dynCall_vffff = r.asm.dynCall_vffff).apply(null, arguments) + }, r.dynCall_vf = function() { + return (r.dynCall_vf = r.asm.dynCall_vf).apply(null, arguments) + }, r.dynCall_vff = function() { + return (r.dynCall_vff = r.asm.dynCall_vff).apply(null, arguments) + }, r.dynCall_vfi = function() { + return (r.dynCall_vfi = r.asm.dynCall_vfi).apply(null, arguments) + }, r.dynCall_viif = function() { + return (r.dynCall_viif = r.asm.dynCall_viif).apply(null, arguments) + }, r.dynCall_vif = function() { + return (r.dynCall_vif = r.asm.dynCall_vif).apply(null, arguments) + }, r.dynCall_viff = function() { + return (r.dynCall_viff = r.asm.dynCall_viff).apply(null, arguments) + }, r.dynCall_vifff = function() { + return (r.dynCall_vifff = r.asm.dynCall_vifff).apply(null, arguments) + }, r.dynCall_viffff = function() { + return (r.dynCall_viffff = r.asm.dynCall_viffff).apply(null, arguments) + }, r.dynCall_viiiiiiiiii = function() { + return (r.dynCall_viiiiiiiiii = r.asm.dynCall_viiiiiiiiii).apply(null, arguments) + }, r.dynCall_viifi = function() { + return (r.dynCall_viifi = r.asm.dynCall_viifi).apply(null, arguments) + }; + + function xt(e) { + this.name = "ExitStatus", this.message = "Program terminated with exit(" + e + ")", this.status = e + } + r.asm = Xr, r.ccall = A, r.cwrap = function(e, r, t, n) { + var i = (t = t || []).every((function(e) { + return "number" === e + })); + return "string" !== r && i && !n ? F(e) : function() { + return A(e, r, t, arguments) + } + }, r.getMemory = function(e) { + return te ? Zr(e) : v(e) + }, r.addRunDependency = de, r.removeRunDependency = me, r.FS_createFolder = Pe.createFolder, r.FS_createPath = Pe.createPath, r.FS_createDataFile = Pe.createDataFile, r.FS_createPreloadedFile = Pe.createPreloadedFile, r.FS_createLazyFile = Pe.createLazyFile, r.FS_createLink = Pe.createLink, r.FS_createDevice = Pe.createDevice, r.FS_unlink = Pe.unlink; + + function kt(e) { + function n() { + Hr || (Hr = !0, r.calledRun = !0, S || (te = !0, r.noFSInit || Pe.init.initialized || Pe.init(), De.init(), Z($), Pe.ignorePermissions = !1, Z(J), t(r), r.onRuntimeInitialized && r.onRuntimeInitialized(), St && function(e) { + var t = r._main, + n = (e = e || []).length + 1, + i = wt(4 * (n + 1)); + q[i >> 2] = N(l); + for (var a = 1; a < n; a++) q[(i >> 2) + a] = N(e[a - 1]); + q[(i >> 2) + n] = 0; + try { + Ct(t(n, i), !0) + } catch (e) { + if (e instanceof xt) return; + if ("unwind" == e) return void(y = !0); + var o = e; + e && "object" == typeof e && e.stack && (o = [e, e.stack]), p("exception thrown: " + o), f(1, e) + } finally { + !0 + } + }(e), function() { + if (r.postRun) + for ("function" == typeof r.postRun && (r.postRun = [r.postRun]); r.postRun.length;) e = r.postRun.shift(), re.unshift(e); + var e; + Z(re) + }())) + } + e = e || c, ce > 0 || (! function() { + if (r.preRun) + for ("function" == typeof r.preRun && (r.preRun = [r.preRun]); r.preRun.length;) e = r.preRun.shift(), K.unshift(e); + var e; + Z(K) + }(), ce > 0 || (r.setStatus ? (r.setStatus("Running..."), setTimeout((function() { + setTimeout((function() { + r.setStatus("") + }), 1), n() + }), 1)) : n())) + } + + function Ct(e, t) { + t && y && 0 === e || (y || (S = !0, e, !0, r.onExit && r.onExit(e)), f(e, new xt(e))) + } + if (fe = function e() { + Hr || kt(), Hr || (fe = e) + }, r.run = kt, r.preInit) + for ("function" == typeof r.preInit && (r.preInit = [r.preInit]); r.preInit.length > 0;) r.preInit.pop()(); + var St = !0; + return r.noInitialRun && (St = !1), y = !0, kt(), r.ready + } +}(); +export default Module; \ No newline at end of file diff --git a/waflash/alt/emulator2/waflash_latest/waflash.wasm b/waflash/alt/emulator2/waflash_latest/waflash.wasm new file mode 100644 index 00000000..bc151586 Binary files /dev/null and b/waflash/alt/emulator2/waflash_latest/waflash.wasm differ diff --git a/waflash/alt/index.html b/waflash/alt/index.html new file mode 100644 index 00000000..93111e2b --- /dev/null +++ b/waflash/alt/index.html @@ -0,0 +1,2397 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 버블 슈터 (Bubble Shooter) - 플래시게임 | 와플래시 아카이브 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+

HTML5 기술로 플래시가 새롭게 태어납니다!

+

이제 모바일을 포함한 모든 브라우저에서 플래시를 재생할 수 있게

+

직접 플레이어 개발하고 콘텐츠를 보존하고 있습니다

+
+ +
+

+ 인기 게임 +

+
+ + + + + +
+

+ 추천 게임 +

+
+ + + +
+

+ 추천 애니메이션 +

+
+ + +
+ +
+
플래시게임
+

버블 슈터 (Bubble Shooter)

+ +
+
+ + + + +
+ + + + +
+
+ + + +
+ + + +
+

같은색 공맞추기 버블 슈터 (Bubble Shooter) 플래시게임입니다

+

 

+

+ 조작방법 +

+

마우스

+

 

+

 

+

+

+ + + +
게임설명
+
+

+

 

+

+

+ + + +
게임화면
+
+

+

 

+

 

+
+ + + + + + + + + + + + +
제작자 정보
제작자 + Absolutist + 출처 
+
+

 

+

 

+

+

+ +
+
+
+ loader.swf +
+
0.14MB
+
+
+
+

+
+
+ +
+ +
+ +
+
+ +
+
+ +
+ + + +
+ +
+
+
+ +
+
+
+
+

+ '플래시게임 + ' 카테고리의 다른 글 +

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ 부시 로얄 램페이지 (Bush Royal Rampage) +   (2) + 2020.12.28
+ 피구왕 마시마로 +   (0) + 2020.12.28
+ 버블 슈터 (Bubble Shooter) +   (111) + 2020.12.27
+ 스위트 발렌타인 미니게임 - 도시락을 전해라 +   (4) + 2020.12.27
+ 호박씨의 쵸콜릿찾기 +   (5) + 2020.12.27
+ 슈의 애견미용실 - 슈게임 +   (30) + 2020.12.27
+
+
+
+
+

태그

+ +
+ +
+
+
+ +
+
+
+
+ + +
+ + +
+
+ +
+ +
+
+
+
+
+ +
+ + +
+ +
+
+
+ +
+
+ + + + + + + + + + + + + +
+
+

+
+
+
+
+ + diff --git a/waflash/alt/readme.md b/waflash/alt/readme.md new file mode 100644 index 00000000..f0d0f63d --- /dev/null +++ b/waflash/alt/readme.md @@ -0,0 +1 @@ +alt diff --git a/waflash/cover.svg b/waflash/cover.svg new file mode 100644 index 00000000..3ec23b39 --- /dev/null +++ b/waflash/cover.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/waflash/emulator2/ b/waflash/emulator2/ new file mode 100644 index 00000000..e69de29b diff --git a/waflash/emulator2/emu2.php b/waflash/emulator2/emu2.php new file mode 100644 index 00000000..25c8132a --- /dev/null +++ b/waflash/emulator2/emu2.php @@ -0,0 +1,337 @@ + + + + + +
+Loading library... Please wait a moment. +
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/waflash/emulator2/waflash_latest/ b/waflash/emulator2/waflash_latest/ new file mode 100644 index 00000000..e69de29b diff --git a/waflash/emulator2/waflash_latest/waflash.data b/waflash/emulator2/waflash_latest/waflash.data new file mode 100644 index 00000000..bc0f7094 Binary files /dev/null and b/waflash/emulator2/waflash_latest/waflash.data differ diff --git a/waflash/emulator2/waflash_latest/waflash.js b/waflash/emulator2/waflash_latest/waflash.js new file mode 100644 index 00000000..f15be37f --- /dev/null +++ b/waflash/emulator2/waflash_latest/waflash.js @@ -0,0 +1,13021 @@ +var Module = (function() { + var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; + return ( + function(Module) { + Module = Module || {}; + var Module = typeof Module !== "undefined" ? Module : {}; + var readyPromiseResolve, readyPromiseReject; + Module["ready"] = new Promise(function(resolve, reject) { + readyPromiseResolve = resolve; + readyPromiseReject = reject + }); + if (!Module.expectedDataFileDownloads) { + Module.expectedDataFileDownloads = 0; + Module.finishedDataFileDownloads = 0 + } + Module.expectedDataFileDownloads++; + (function() { + var loadPackage = function(metadata) { + var PACKAGE_PATH; + if (typeof window === "object") { + PACKAGE_PATH = window["encodeURIComponent"](window.location.pathname.toString().substring(0, window.location.pathname.toString().lastIndexOf("/")) + "/") + } else if (typeof location !== "undefined") { + PACKAGE_PATH = encodeURIComponent(location.pathname.toString().substring(0, location.pathname.toString().lastIndexOf("/")) + "/") + } else { + throw "using preloaded data can only be done on a web page or in a web worker" + } + var PACKAGE_NAME = "waflash.data"; + var REMOTE_PACKAGE_BASE = "waflash.data"; + if (typeof Module["locateFilePackage"] === "function" && !Module["locateFile"]) { + Module["locateFile"] = Module["locateFilePackage"]; + err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)") + } + var REMOTE_PACKAGE_NAME = Module["locateFile"] ? Module["locateFile"](REMOTE_PACKAGE_BASE, "") : REMOTE_PACKAGE_BASE; + var REMOTE_PACKAGE_SIZE = metadata["remote_package_size"]; + var PACKAGE_UUID = metadata["package_uuid"]; + + function fetchRemotePackage(packageName, packageSize, callback, errback) { + var xhr = new XMLHttpRequest; + xhr.open("GET", packageName, true); + xhr.responseType = "arraybuffer"; + xhr.onprogress = function(event) { + var url = packageName; + var size = packageSize; + if (event.total) size = event.total; + if (event.loaded) { + if (!xhr.addedTotal) { + xhr.addedTotal = true; + if (!Module.dataFileDownloads) Module.dataFileDownloads = {}; + Module.dataFileDownloads[url] = { + loaded: event.loaded, + total: size + } + } else { + Module.dataFileDownloads[url].loaded = event.loaded + } + var total = 0; + var loaded = 0; + var num = 0; + for (var download in Module.dataFileDownloads) { + var data = Module.dataFileDownloads[download]; + total += data.total; + loaded += data.loaded; + num++ + } + total = Math.ceil(total * Module.expectedDataFileDownloads / num); + if (Module["setStatus"]) Module["setStatus"]("Downloading data... (" + loaded + "/" + total + ")") + } else if (!Module.dataFileDownloads) { + if (Module["setStatus"]) Module["setStatus"]("Downloading data...") + } + }; + xhr.onerror = function(event) { + throw new Error("NetworkError for: " + packageName) + }; + xhr.onload = function(event) { + if (xhr.status == 200 || xhr.status == 304 || xhr.status == 206 || xhr.status == 0 && xhr.response) { + var packageData = xhr.response; + callback(packageData) + } else { + throw new Error(xhr.statusText + " : " + xhr.responseURL) + } + }; + xhr.send(null) + } + + function handleError(error) { + console.error("package error:", error) + } + var fetchedCallback = null; + var fetched = Module["getPreloadedPackage"] ? Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE) : null; + if (!fetched) fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE, function(data) { + if (fetchedCallback) { + fetchedCallback(data); + fetchedCallback = null + } else { + fetched = data + } + }, handleError); + + function runWithFS() { + function assert(check, msg) { + if (!check) throw msg + (new Error).stack + } + + function DataRequest(start, end, audio) { + this.start = start; + this.end = end; + this.audio = audio + } + DataRequest.prototype = { + requests: {}, + open: function(mode, name) { + this.name = name; + this.requests[name] = this; + Module["addRunDependency"]("fp " + this.name) + }, + send: function() {}, + onload: function() { + var byteArray = this.byteArray.subarray(this.start, this.end); + this.finish(byteArray) + }, + finish: function(byteArray) { + var that = this; + Module["FS_createDataFile"](this.name, null, byteArray, true, true, true); + Module["removeRunDependency"]("fp " + that.name); + this.requests[this.name] = null + } + }; + var files = metadata["files"]; + for (var i = 0; i < files.length; ++i) { + new DataRequest(files[i]["start"], files[i]["end"], files[i]["audio"]).open("GET", files[i]["filename"]) + } + + function processPackageData(arrayBuffer) { + Module.finishedDataFileDownloads++; + assert(arrayBuffer, "Loading data file failed."); + assert(arrayBuffer instanceof ArrayBuffer, "bad input to processPackageData"); + var byteArray = new Uint8Array(arrayBuffer); + DataRequest.prototype.byteArray = byteArray; + var files = metadata["files"]; + for (var i = 0; i < files.length; ++i) { + DataRequest.prototype.requests[files[i].filename].onload() + } + Module["removeRunDependency"]("datafile_waflash.data") + } + Module["addRunDependency"]("datafile_waflash.data"); + if (!Module.preloadResults) Module.preloadResults = {}; + Module.preloadResults[PACKAGE_NAME] = { + fromCache: false + }; + if (fetched) { + processPackageData(fetched); + fetched = null + } else { + fetchedCallback = processPackageData + } + } + if (Module["calledRun"]) { + runWithFS() + } else { + if (!Module["preRun"]) Module["preRun"] = []; + Module["preRun"].push(runWithFS) + } + }; + loadPackage({ + "files": [{ + "filename": "/desktop.ini", + "start": 0, + "end": 46, + "audio": 0 + }, { + "filename": "/NanumSquareRoundOTFR.otf", + "start": 46, + "end": 465950, + "audio": 0 + }], + "remote_package_size": 465950, + "package_uuid": "1302f8fa-6355-4df6-ae92-6f55ca742376" + }) + })(); + var moduleOverrides = {}; + var key; + for (key in Module) { + if (Module.hasOwnProperty(key)) { + moduleOverrides[key] = Module[key] + } + } + var arguments_ = []; + var thisProgram = "./this.program"; + var quit_ = function(status, toThrow) { + throw toThrow + }; + var ENVIRONMENT_IS_WEB = true; + var ENVIRONMENT_IS_WORKER = false; + var scriptDirectory = ""; + + function locateFile(path) { + if (Module["locateFile"]) { + return Module["locateFile"](path, scriptDirectory) + } + return scriptDirectory + path + } + var read_, readAsync, readBinary, setWindowTitle; + if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { + if (ENVIRONMENT_IS_WORKER) { + scriptDirectory = self.location.href + } else if (document.currentScript) { + scriptDirectory = document.currentScript.src + } + if (_scriptDir) { + scriptDirectory = _scriptDir + } + if (scriptDirectory.indexOf("blob:") !== 0) { + scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf("/") + 1) + } else { + scriptDirectory = "" + } { + read_ = function shell_read(url) { + var xhr = new XMLHttpRequest; + xhr.open("GET", url, false); + xhr.send(null); + return xhr.responseText + }; + if (ENVIRONMENT_IS_WORKER) { + readBinary = function readBinary(url) { + var xhr = new XMLHttpRequest; + xhr.open("GET", url, false); + xhr.responseType = "arraybuffer"; + xhr.send(null); + return new Uint8Array(xhr.response) + } + } + readAsync = function readAsync(url, onload, onerror) { + var xhr = new XMLHttpRequest; + xhr.open("GET", url, true); + xhr.responseType = "arraybuffer"; + xhr.onload = function xhr_onload() { + if (xhr.status == 200 || xhr.status == 0 && xhr.response) { + onload(xhr.response); + return + } + onerror() + }; + xhr.onerror = onerror; + xhr.send(null) + } + } + setWindowTitle = function(title) { + document.title = title + } + } else {} + var out = Module["print"] || console.log.bind(console); + var err = Module["printErr"] || console.warn.bind(console); + for (key in moduleOverrides) { + if (moduleOverrides.hasOwnProperty(key)) { + Module[key] = moduleOverrides[key] + } + } + moduleOverrides = null; + if (Module["arguments"]) arguments_ = Module["arguments"]; + if (Module["thisProgram"]) thisProgram = Module["thisProgram"]; + if (Module["quit"]) quit_ = Module["quit"]; + var STACK_ALIGN = 16; + + function dynamicAlloc(size) { + var ret = HEAP32[DYNAMICTOP_PTR >> 2]; + var end = ret + size + 15 & -16; + HEAP32[DYNAMICTOP_PTR >> 2] = end; + return ret + } + + function getNativeTypeSize(type) { + switch (type) { + case "i1": + case "i8": + return 1; + case "i16": + return 2; + case "i32": + return 4; + case "i64": + return 8; + case "float": + return 4; + case "double": + return 8; + default: { + if (type[type.length - 1] === "*") { + return 4 + } else if (type[0] === "i") { + var bits = Number(type.substr(1)); + assert(bits % 8 === 0, "getNativeTypeSize invalid bits " + bits + ", type " + type); + return bits / 8 + } else { + return 0 + } + } + } + } + + 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 < sig.length; ++i) { + type.parameters.push(typeNames[sig[i]]) + } + return new WebAssembly.Function(type, func) + } + var typeSection = [1, 0, 1, 96]; + var sigRet = sig.slice(0, 1); + var sigParam = sig.slice(1); + var typeCodes = { + "i": 127, + "j": 126, + "f": 125, + "d": 124 + }; + typeSection.push(sigParam.length); + for (var i = 0; i < sigParam.length; ++i) { + typeSection.push(typeCodes[sigParam[i]]) + } + if (sigRet == "v") { + typeSection.push(0) + } else { + typeSection = typeSection.concat([1, typeCodes[sigRet]]) + } + typeSection[1] = typeSection.length - 2; + var bytes = new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0].concat(typeSection, [2, 7, 1, 1, 101, 1, 102, 0, 0, 7, 5, 1, 1, 102, 0, 0])); + var module = new WebAssembly.Module(bytes); + var instance = new WebAssembly.Instance(module, { + "e": { + "f": func + } + }); + var wrappedFunc = instance.exports["f"]; + return wrappedFunc + } + var freeTableIndexes = []; + var functionsInTableMap; + + function addFunctionWasm(func, sig) { + var table = wasmTable; + if (!functionsInTableMap) { + functionsInTableMap = new WeakMap; + for (var i = 0; i < table.length; i++) { + var item = table.get(i); + if (item) { + functionsInTableMap.set(item, i) + } + } + } + if (functionsInTableMap.has(func)) { + return functionsInTableMap.get(func) + } + var ret; + if (freeTableIndexes.length) { + ret = freeTableIndexes.pop() + } else { + ret = table.length; + try { + table.grow(1) + } catch (err) { + if (!(err instanceof RangeError)) { + throw err + } + throw "Unable to grow wasm table. Set ALLOW_TABLE_GROWTH." + } + } + try { + table.set(ret, func) + } catch (err) { + if (!(err instanceof TypeError)) { + throw err + } + var wrapped = convertJsFunctionToWasm(func, sig); + table.set(ret, wrapped) + } + functionsInTableMap.set(func, ret); + return ret + } + + function removeFunctionWasm(index) { + functionsInTableMap.delete(wasmTable.get(index)); + freeTableIndexes.push(index) + } + var funcWrappers = {}; + + function dynCall(sig, ptr, args) { + if (args && args.length) { + return Module["dynCall_" + sig].apply(null, [ptr].concat(args)) + } else { + return Module["dynCall_" + sig].call(null, ptr) + } + } + var tempRet0 = 0; + var setTempRet0 = function(value) { + tempRet0 = value + }; + var getTempRet0 = function() { + return tempRet0 + }; + var wasmBinary; + if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"]; + var noExitRuntime; + if (Module["noExitRuntime"]) noExitRuntime = Module["noExitRuntime"]; + if (typeof WebAssembly !== "object") { + err("no native wasm support detected") + } + + function setValue(ptr, value, type, noSafe) { + type = type || "i8"; + 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 wasmTable = new WebAssembly.Table({ + "initial": 12014, + "maximum": 12014 + 0, + "element": "anyfunc" + }); + var ABORT = false; + var EXITSTATUS = 0; + + function assert(condition, text) { + if (!condition) { + abort("Assertion failed: " + text) + } + } + + function getCFunc(ident) { + var func = Module["_" + ident]; + assert(func, "Cannot call unknown function " + ident + ", make sure it is exported"); + 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 < args.length; i++) { + var converter = toC[argTypes[i]]; + if (converter) { + if (stack === 0) stack = stackSave(); + cArgs[i] = converter(args[i]) + } else { + cArgs[i] = args[i] + } + } + } + var ret = func.apply(null, cArgs); + ret = convertReturnValue(ret); + if (stack !== 0) stackRestore(stack); + return ret + } + + function cwrap(ident, returnType, argTypes, opts) { + argTypes = argTypes || []; + var numericArgs = argTypes.every(function(type) { + return type === "number" + }); + var numericRet = returnType !== "string"; + if (numericRet && numericArgs && !opts) { + return getCFunc(ident) + } + return function() { + return ccall(ident, returnType, argTypes, arguments, opts) + } + } + var ALLOC_NORMAL = 0; + var ALLOC_NONE = 3; + + function allocate(slab, types, allocator, ptr) { + var zeroinit, size; + if (typeof slab === "number") { + zeroinit = true; + size = slab + } else { + zeroinit = false; + size = slab.length + } + var singleType = typeof types === "string" ? types : null; + var ret; + if (allocator == ALLOC_NONE) { + ret = ptr + } else { + ret = [_malloc, stackAlloc, dynamicAlloc][allocator](Math.max(size, singleType ? 1 : types.length)) + } + if (zeroinit) { + var stop; + ptr = ret; + assert((ret & 3) == 0); + stop = ret + (size & ~3); + for (; ptr < stop; ptr += 4) { + HEAP32[ptr >> 2] = 0 + } + stop = ret + size; + while (ptr < stop) { + HEAP8[ptr++ >> 0] = 0 + } + return ret + } + if (singleType === "i8") { + if (slab.subarray || slab.slice) { + HEAPU8.set(slab, ret) + } else { + HEAPU8.set(new Uint8Array(slab), ret) + } + return ret + } + var i = 0, + type, typeSize, previousType; + while (i < size) { + var curr = slab[i]; + type = singleType || types[i]; + if (type === 0) { + i++; + continue + } + if (type == "i64") type = "i32"; + setValue(ret + i, curr, type); + if (previousType !== type) { + typeSize = getNativeTypeSize(type); + previousType = type + } + i += typeSize + } + return ret + } + + function getMemory(size) { + if (!runtimeInitialized) return dynamicAlloc(size); + return _malloc(size) + } + var UTF8Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf8") : undefined; + + function UTF8ArrayToString(heap, idx, maxBytesToRead) { + var endIdx = idx + maxBytesToRead; + var endPtr = idx; + while (heap[endPtr] && !(endPtr >= endIdx)) ++endPtr; + if (endPtr - idx > 16 && heap.subarray && UTF8Decoder) { + return UTF8Decoder.decode(heap.subarray(idx, endPtr)) + } else { + var str = ""; + while (idx < endPtr) { + var u0 = heap[idx++]; + if (!(u0 & 128)) { + str += String.fromCharCode(u0); + continue + } + var u1 = heap[idx++] & 63; + if ((u0 & 224) == 192) { + str += String.fromCharCode((u0 & 31) << 6 | u1); + continue + } + var u2 = heap[idx++] & 63; + if ((u0 & 240) == 224) { + u0 = (u0 & 15) << 12 | u1 << 6 | u2 + } else { + u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heap[idx++] & 63 + } + if (u0 < 65536) { + str += String.fromCharCode(u0) + } else { + var ch = u0 - 65536; + str += String.fromCharCode(55296 | ch >> 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 < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 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 < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 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 allocateUTF8OnStack(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = stackAlloc(size); + 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 < str.length; ++i) { + HEAP8[buffer++ >> 0] = str.charCodeAt(i) + } + if (!dontAddNull) HEAP8[buffer >> 0] = 0 + } + var WASM_PAGE_SIZE = 65536; + + function alignUp(x, multiple) { + if (x % multiple > 0) { + x += multiple - x % multiple + } + return x + } + var buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; + + function updateGlobalBufferAndViews(buf) { + buffer = buf; + Module["HEAP8"] = HEAP8 = new Int8Array(buf); + Module["HEAP16"] = HEAP16 = new Int16Array(buf); + Module["HEAP32"] = HEAP32 = new Int32Array(buf); + Module["HEAPU8"] = HEAPU8 = new Uint8Array(buf); + Module["HEAPU16"] = HEAPU16 = new Uint16Array(buf); + Module["HEAPU32"] = HEAPU32 = new Uint32Array(buf); + Module["HEAPF32"] = HEAPF32 = new Float32Array(buf); + Module["HEAPF64"] = HEAPF64 = new Float64Array(buf) + } + var STACK_BASE = 6130032, + DYNAMIC_BASE = 6130032, + DYNAMICTOP_PTR = 886976; + var INITIAL_INITIAL_MEMORY = Module["INITIAL_MEMORY"] || 16777216; + if (Module["wasmMemory"]) { + wasmMemory = Module["wasmMemory"] + } else { + wasmMemory = new WebAssembly.Memory({ + "initial": INITIAL_INITIAL_MEMORY / WASM_PAGE_SIZE, + "maximum": 2147483648 / WASM_PAGE_SIZE + }) + } + if (wasmMemory) { + buffer = wasmMemory.buffer + } + INITIAL_INITIAL_MEMORY = buffer.byteLength; + updateGlobalBufferAndViews(buffer); + HEAP32[DYNAMICTOP_PTR >> 2] = DYNAMIC_BASE; + + function callRuntimeCallbacks(callbacks) { + while (callbacks.length > 0) { + var callback = callbacks.shift(); + if (typeof callback == "function") { + callback(Module); + continue + } + var func = callback.func; + if (typeof func === "number") { + if (callback.arg === undefined) { + Module["dynCall_v"](func) + } else { + Module["dynCall_vi"](func, callback.arg) + } + } else { + func(callback.arg === undefined ? null : callback.arg) + } + } + } + var __ATPRERUN__ = []; + var __ATINIT__ = []; + var __ATMAIN__ = []; + var __ATEXIT__ = []; + var __ATPOSTRUN__ = []; + var runtimeInitialized = false; + var runtimeExited = false; + + function preRun() { + if (Module["preRun"]) { + if (typeof Module["preRun"] == "function") Module["preRun"] = [Module["preRun"]]; + while (Module["preRun"].length) { + addOnPreRun(Module["preRun"].shift()) + } + } + callRuntimeCallbacks(__ATPRERUN__) + } + + function initRuntime() { + runtimeInitialized = true; + if (!Module["noFSInit"] && !FS.init.initialized) FS.init(); + TTY.init(); + callRuntimeCallbacks(__ATINIT__) + } + + function preMain() { + FS.ignorePermissions = false; + 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 addOnPostRun(cb) { + __ATPOSTRUN__.unshift(cb) + } + + function unSign(value, bits, ignore) { + if (value >= 0) { + return value + } + return bits <= 32 ? 2 * Math.abs(1 << bits - 1) + value : Math.pow(2, bits) + value + } + + function reSign(value, bits, ignore) { + if (value <= 0) { + return value + } + var half = bits <= 32 ? Math.abs(1 << bits - 1) : Math.pow(2, bits - 1); + if (value >= half && (bits <= 32 || value > half)) { + value = -2 * half + value + } + return value + } + var Math_abs = Math.abs; + var Math_ceil = Math.ceil; + var Math_floor = Math.floor; + var Math_min = Math.min; + 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 += ""; + out(what); + err(what); + ABORT = true; + EXITSTATUS = 1; + what = "abort(" + what + "). Build with -s ASSERTIONS=1 for more info."; + throw new WebAssembly.RuntimeError(what) + } + + function hasPrefix(str, prefix) { + return String.prototype.startsWith ? str.startsWith(prefix) : str.indexOf(prefix) === 0 + } + var dataURIPrefix = "data:application/octet-stream;base64,"; + + function isDataURI(filename) { + return hasPrefix(filename, dataURIPrefix) + } + var fileURIPrefix = "file://"; + var wasmBinaryFile = "waflash.wasm"; + if (!isDataURI(wasmBinaryFile)) { + wasmBinaryFile = locateFile(wasmBinaryFile) + } + + function getBinary() { + try { + if (wasmBinary) { + return new Uint8Array(wasmBinary) + } + if (readBinary) { + return readBinary(wasmBinaryFile) + } else { + throw "both async and sync fetching of the wasm failed" + } + } catch (err) { + abort(err) + } + } + + function getBinaryPromise() { + if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && typeof fetch === "function") { + return fetch(wasmBinaryFile, { + credentials: "same-origin" + }).then(function(response) { + if (!response["ok"]) { + throw "failed to load wasm binary file at '" + wasmBinaryFile + "'" + } + return response["arrayBuffer"]() + }).catch(function() { + return getBinary() + }) + } + return new Promise(function(resolve, reject) { + resolve(getBinary()) + }) + } + + function createWasm() { + var info = { + "env": asmLibraryArg, + "wasi_snapshot_preview1": asmLibraryArg + }; + + function receiveInstance(instance, module) { + var exports = instance.exports; + Module["asm"] = exports; + removeRunDependency("wasm-instantiate") + } + addRunDependency("wasm-instantiate"); + + function receiveInstantiatedSource(output) { + receiveInstance(output["instance"]) + } + + function instantiateArrayBuffer(receiver) { + return getBinaryPromise().then(function(binary) { + return WebAssembly.instantiate(binary, info) + }).then(receiver, function(reason) { + err("failed to asynchronously prepare wasm: " + reason); + abort(reason) + }) + } + + function instantiateAsync() { + if (!wasmBinary && typeof WebAssembly.instantiateStreaming === "function" && !isDataURI(wasmBinaryFile) && typeof fetch === "function") { + fetch(wasmBinaryFile, { + credentials: "same-origin" + }).then(function(response) { + var result = WebAssembly.instantiateStreaming(response, info); + return result.then(receiveInstantiatedSource, function(reason) { + err("wasm streaming compile failed: " + reason); + err("falling back to ArrayBuffer instantiation"); + instantiateArrayBuffer(receiveInstantiatedSource) + }) + }) + } else { + return instantiateArrayBuffer(receiveInstantiatedSource) + } + } + if (Module["instantiateWasm"]) { + try { + var exports = Module["instantiateWasm"](info, receiveInstance); + return exports + } catch (e) { + err("Module.instantiateWasm callback failed with error: " + e); + return false + } + } + instantiateAsync(); + return {} + } + var tempDouble; + var tempI64; + var ASM_CONSTS = { + 1401: function($0) { + const sodir = UTF8ToString($0); + FS.mkdir(sodir); + FS.mount(IDBFS, {}, sodir); + FS.syncfs(true, err => {}) + }, + 1523: function() { + FS.syncfs(err => { + console.log("IDBFS synced.") + }) + }, + 2028: function() { + const urlParams = new URLSearchParams(window.location.search); + const mode = urlParams.get("v"); + return mode == "1" + }, + 2163: function($0) { + const page_path = "/user/swf/" + UTF8ToString($0); + window.gtag && window.gtag("config", "UA-168755014-1", { + page_path: page_path + }) + }, + 2412: function() { + const urlParams = new URLSearchParams(window.location.search); + const src = urlParams.get("src"); + if (src) { + let url; + if (src.startsWith("http")) { + url = src + } else if (src[0] == "/") { + url = window.location.origin + src + } else { + url = window.location.origin + window.location.pathname.substr(0, window.location.pathname.lastIndexOf("/") + 1) + src + } + const lengthBytes = lengthBytesUTF8(url) + 1; + const stringOnWasmHeap = _malloc(lengthBytes); + stringToUTF8(url, stringOnWasmHeap, lengthBytes); + return stringOnWasmHeap + } + return 0 + }, + 2947: function() { + const urlParams = new URLSearchParams(window.location.search); + const mode = urlParams.get("m"); + return mode == "gpu" + }, + 749754: function($0) { + var str = UTF8ToString($0) + "\n\n" + "Abort/Retry/Ignore/AlwaysIgnore? [ariA] :"; + var reply = window.prompt(str, "i"); + if (reply === null) { + reply = "i" + } + return allocate(intArrayFromString(reply), "i8", ALLOC_NORMAL) + }, + 785644: function($0, $1, $2) { + var w = $0; + var h = $1; + var pixels = $2; + if (!Module["SDL2"]) Module["SDL2"] = {}; + var SDL2 = Module["SDL2"]; + if (SDL2.ctxCanvas !== Module["canvas"]) { + SDL2.ctx = Module["createContext"](Module["canvas"], false, true); + SDL2.ctxCanvas = Module["canvas"] + } + if (SDL2.w !== w || SDL2.h !== h || SDL2.imageCtx !== SDL2.ctx) { + SDL2.image = SDL2.ctx.createImageData(w, h); + SDL2.w = w; + SDL2.h = h; + SDL2.imageCtx = SDL2.ctx + } + var data = SDL2.image.data; + var src = pixels >> 2; + var dst = 0; + var num; + if (typeof CanvasPixelArray !== "undefined" && data instanceof CanvasPixelArray) { + num = data.length; + while (dst < num) { + var val = HEAP32[src]; + data[dst] = val & 255; + data[dst + 1] = val >> 8 & 255; + data[dst + 2] = val >> 16 & 255; + data[dst + 3] = 255; + src++; + dst += 4 + } + } else { + if (SDL2.data32Data !== data) { + SDL2.data32 = new Int32Array(data.buffer); + SDL2.data8 = new Uint8Array(data.buffer) + } + var data32 = SDL2.data32; + num = data32.length; + data32.set(HEAP32.subarray(src, src + num)); + var data8 = SDL2.data8; + var i = 3; + var j = i + 4 * num; + if (num % 8 == 0) { + while (i < j) { + data8[i] = 255; + i = i + 4 | 0; + data8[i] = 255; + i = i + 4 | 0; + data8[i] = 255; + i = i + 4 | 0; + data8[i] = 255; + i = i + 4 | 0; + data8[i] = 255; + i = i + 4 | 0; + data8[i] = 255; + i = i + 4 | 0; + data8[i] = 255; + i = i + 4 | 0; + data8[i] = 255; + i = i + 4 | 0 + } + } else { + while (i < j) { + data8[i] = 255; + i = i + 4 | 0 + } + } + } + SDL2.ctx.putImageData(SDL2.image, 0, 0); + return 0 + }, + 787123: function($0, $1, $2, $3, $4) { + var w = $0; + var h = $1; + var hot_x = $2; + var hot_y = $3; + var pixels = $4; + var canvas = document.createElement("canvas"); + canvas.width = w; + canvas.height = h; + var ctx = canvas.getContext("2d"); + var image = ctx.createImageData(w, h); + var data = image.data; + var src = pixels >> 2; + var dst = 0; + var num; + if (typeof CanvasPixelArray !== "undefined" && data instanceof CanvasPixelArray) { + num = data.length; + while (dst < num) { + var val = HEAP32[src]; + data[dst] = val & 255; + data[dst + 1] = val >> 8 & 255; + data[dst + 2] = val >> 16 & 255; + data[dst + 3] = val >> 24 & 255; + src++; + dst += 4 + } + } else { + var data32 = new Int32Array(data.buffer); + num = data32.length; + data32.set(HEAP32.subarray(src, src + num)) + } + ctx.putImageData(image, 0, 0); + var url = hot_x === 0 && hot_y === 0 ? "url(" + canvas.toDataURL() + "), auto" : "url(" + canvas.toDataURL() + ") " + hot_x + " " + hot_y + ", auto"; + var urlBuf = _malloc(url.length + 1); + stringToUTF8(url, urlBuf, url.length + 1); + return urlBuf + }, + 788112: function($0) { + if (Module["canvas"]) { + Module["canvas"].style["cursor"] = UTF8ToString($0) + } + return 0 + }, + 788205: function() { + if (Module["canvas"]) { + Module["canvas"].style["cursor"] = "none" + } + }, + 789430: function() { + return screen.width + }, + 789457: function() { + return screen.height + }, + 789485: function() { + return window.innerWidth + }, + 789517: function() { + return window.innerHeight + }, + 789595: function($0) { + if (typeof setWindowTitle !== "undefined") { + setWindowTitle(UTF8ToString($0)) + } + return 0 + }, + 789729: function() { + if (typeof AudioContext !== "undefined") { + return 1 + } else if (typeof webkitAudioContext !== "undefined") { + return 1 + } + return 0 + }, + 789895: function() { + if (typeof navigator.mediaDevices !== "undefined" && typeof navigator.mediaDevices.getUserMedia !== "undefined") { + return 1 + } else if (typeof navigator.webkitGetUserMedia !== "undefined") { + return 1 + } + return 0 + }, + 790121: function($0) { + if (typeof Module["SDL2"] === "undefined") { + Module["SDL2"] = {} + } + var SDL2 = Module["SDL2"]; + if (!$0) { + SDL2.audio = {} + } else { + SDL2.capture = {} + } + if (!SDL2.audioContext) { + if (typeof AudioContext !== "undefined") { + SDL2.audioContext = new AudioContext + } else if (typeof webkitAudioContext !== "undefined") { + SDL2.audioContext = new webkitAudioContext + } + } + return SDL2.audioContext === undefined ? -1 : 0 + }, + 790604: function() { + var SDL2 = Module["SDL2"]; + return SDL2.audioContext.sampleRate + }, + 790674: function($0, $1, $2, $3) { + var SDL2 = Module["SDL2"]; + var have_microphone = function(stream) { + if (SDL2.capture.silenceTimer !== undefined) { + clearTimeout(SDL2.capture.silenceTimer); + SDL2.capture.silenceTimer = undefined + } + SDL2.capture.mediaStreamNode = SDL2.audioContext.createMediaStreamSource(stream); + SDL2.capture.scriptProcessorNode = SDL2.audioContext.createScriptProcessor($1, $0, 1); + SDL2.capture.scriptProcessorNode.onaudioprocess = function(audioProcessingEvent) { + if (SDL2 === undefined || SDL2.capture === undefined) { + return + } + audioProcessingEvent.outputBuffer.getChannelData(0).fill(0); + SDL2.capture.currentCaptureBuffer = audioProcessingEvent.inputBuffer; + dynCall("vi", $2, [$3]) + }; + SDL2.capture.mediaStreamNode.connect(SDL2.capture.scriptProcessorNode); + SDL2.capture.scriptProcessorNode.connect(SDL2.audioContext.destination); + SDL2.capture.stream = stream + }; + var no_microphone = function(error) {}; + SDL2.capture.silenceBuffer = SDL2.audioContext.createBuffer($0, $1, SDL2.audioContext.sampleRate); + SDL2.capture.silenceBuffer.getChannelData(0).fill(0); + var silence_callback = function() { + SDL2.capture.currentCaptureBuffer = SDL2.capture.silenceBuffer; + dynCall("vi", $2, [$3]) + }; + SDL2.capture.silenceTimer = setTimeout(silence_callback, $1 / SDL2.audioContext.sampleRate * 1e3); + if (navigator.mediaDevices !== undefined && navigator.mediaDevices.getUserMedia !== undefined) { + navigator.mediaDevices.getUserMedia({ + audio: true, + video: false + }).then(have_microphone).catch(no_microphone) + } else if (navigator.webkitGetUserMedia !== undefined) { + navigator.webkitGetUserMedia({ + audio: true, + video: false + }, have_microphone, no_microphone) + } + }, + 792326: function($0, $1, $2, $3) { + var SDL2 = Module["SDL2"]; + SDL2.audio.scriptProcessorNode = SDL2.audioContext["createScriptProcessor"]($1, 0, $0); + SDL2.audio.scriptProcessorNode["onaudioprocess"] = function(e) { + if (SDL2 === undefined || SDL2.audio === undefined) { + return + } + SDL2.audio.currentOutputBuffer = e["outputBuffer"]; + dynCall("vi", $2, [$3]) + }; + SDL2.audio.scriptProcessorNode["connect"](SDL2.audioContext["destination"]) + }, + 792736: function($0, $1) { + var SDL2 = Module["SDL2"]; + var numChannels = SDL2.capture.currentCaptureBuffer.numberOfChannels; + for (var c = 0; c < numChannels; ++c) { + var channelData = SDL2.capture.currentCaptureBuffer.getChannelData(c); + if (channelData.length != $1) { + throw "Web Audio capture buffer length mismatch! Destination size: " + channelData.length + " samples vs expected " + $1 + " samples!" + } + if (numChannels == 1) { + for (var j = 0; j < $1; ++j) { + setValue($0 + j * 4, channelData[j], "float") + } + } else { + for (var j = 0; j < $1; ++j) { + setValue($0 + (j * numChannels + c) * 4, channelData[j], "float") + } + } + } + }, + 793341: function($0, $1) { + var SDL2 = Module["SDL2"]; + var numChannels = SDL2.audio.currentOutputBuffer["numberOfChannels"]; + for (var c = 0; c < numChannels; ++c) { + var channelData = SDL2.audio.currentOutputBuffer["getChannelData"](c); + if (channelData.length != $1) { + throw "Web Audio output buffer length mismatch! Destination size: " + channelData.length + " samples vs expected " + $1 + " samples!" + } + for (var j = 0; j < $1; ++j) { + channelData[j] = HEAPF32[$0 + (j * numChannels + c << 2) >> 2] + } + } + }, + 793821: function($0) { + var SDL2 = Module["SDL2"]; + if ($0) { + if (SDL2.capture.silenceTimer !== undefined) { + clearTimeout(SDL2.capture.silenceTimer) + } + if (SDL2.capture.stream !== undefined) { + var tracks = SDL2.capture.stream.getAudioTracks(); + for (var i = 0; i < tracks.length; i++) { + SDL2.capture.stream.removeTrack(tracks[i]) + } + SDL2.capture.stream = undefined + } + if (SDL2.capture.scriptProcessorNode !== undefined) { + SDL2.capture.scriptProcessorNode.onaudioprocess = function(audioProcessingEvent) {}; + SDL2.capture.scriptProcessorNode.disconnect(); + SDL2.capture.scriptProcessorNode = undefined + } + if (SDL2.capture.mediaStreamNode !== undefined) { + SDL2.capture.mediaStreamNode.disconnect(); + SDL2.capture.mediaStreamNode = undefined + } + if (SDL2.capture.silenceBuffer !== undefined) { + SDL2.capture.silenceBuffer = undefined + } + SDL2.capture = undefined + } else { + if (SDL2.audio.scriptProcessorNode != undefined) { + SDL2.audio.scriptProcessorNode.disconnect(); + SDL2.audio.scriptProcessorNode = undefined + } + SDL2.audio = undefined + } + if (SDL2.audioContext !== undefined && SDL2.audio === undefined && SDL2.capture === undefined) { + SDL2.audioContext.close(); + SDL2.audioContext = undefined + } + } + }; + + function _emscripten_asm_const_iii(code, sigPtr, argbuf) { + var args = readAsmConstArgs(sigPtr, argbuf); + return ASM_CONSTS[code].apply(null, args) + } + + function changeCursor(type) { + const c = Module["canvas"]; + if (c) c.style.cursor = UTF8ToString(type) + } + + function getCanvasPaddingLeft() { + return Module["canvas"].style.paddingLeft + } + + function getCanvasPaddingTop() { + return Module["canvas"].style.paddingTop + } + + function wafjs_hidestatus() { + typeof Module.hideStatus == "function" && Module.hideStatus() + } + + function wafjs_setcontentinfo(w, h, fps) { + Module["canvas"].setAttribute("waf-content-width", w); + Module["canvas"].setAttribute("waf-content-height", h); + Module["canvas"].setAttribute("waf-content-fps", fps) + } + + function wafjs_setstatus(msg) { + typeof Module.setStatus == "function" && Module.setStatus(UTF8ToString(msg)) + } + + function wafjs_url_transformRequestUrl(purl) { + const url = UTF8ToString(purl); + const waf = Module["WAFLASH"]; + const ret = !waf ? url : waf.hal && waf.hal.url_transformRequestUrl(url); + if (ret) { + const len = lengthBytesUTF8(ret) + 1; + const buf = _malloc(len); + stringToUTF8(ret, buf, len); + return buf + } + return 0 + } + __ATINIT__.push({ + func: function() { + ___wasm_call_ctors() + } + }); + + 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 + "]" + }) + } + + function jsStackTrace() { + var err = new Error; + if (!err.stack) { + try { + throw new Error + } catch (e) { + err = e + } + if (!err.stack) { + return "(no stack trace available)" + } + } + return err.stack.toString() + } + + function stackTrace() { + var js = jsStackTrace(); + if (Module["extraStackTrace"]) js += "\n" + Module["extraStackTrace"](); + return demangleAll(js) + } + + function _atexit(func, arg) { + __ATEXIT__.unshift({ + func: func, + arg: arg + }) + } + + function ___cxa_atexit(a0, a1) { + return _atexit(a0, a1) + } + + 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 "/"; + var lastSlash = path.lastIndexOf("/"); + if (lastSlash === -1) return path; + return path.substr(lastSlash + 1) + }, + extname: function(path) { + return PATH.splitPath(path)[3] + }, + join: function() { + var paths = Array.prototype.slice.call(arguments, 0); + return PATH.normalize(paths.join("/")) + }, + join2: function(l, r) { + return PATH.normalize(l + "/" + r) + } + }; + var 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 < arr.length; start++) { + if (arr[start] !== "") break + } + var end = arr.length - 1; + for (; end >= 0; end--) { + if (arr[end] !== "") break + } + if (start > end) return []; + return arr.slice(start, end - start + 1) + } + var fromParts = trim(from.split("/")); + var toParts = trim(to.split("/")); + var length = Math.min(fromParts.length, toParts.length); + var samePartsLength = length; + for (var i = 0; i < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break + } + } + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push("..") + } + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + return outputParts.join("/") + } + }; + var TTY = { + ttys: [], + init: function() {}, + shutdown: function() {}, + register: function(dev, ops) { + TTY.ttys[dev] = { + input: [], + output: [], + ops: ops + }; + FS.registerDevice(dev, TTY.stream_ops) + }, + stream_ops: { + open: function(stream) { + var tty = TTY.ttys[stream.node.rdev]; + if (!tty) { + throw new FS.ErrnoError(43) + } + stream.tty = tty; + stream.seekable = false + }, + close: function(stream) { + stream.tty.ops.flush(stream.tty) + }, + flush: function(stream) { + stream.tty.ops.flush(stream.tty) + }, + read: function(stream, buffer, offset, length, pos) { + if (!stream.tty || !stream.tty.ops.get_char) { + throw new FS.ErrnoError(60) + } + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = stream.tty.ops.get_char(stream.tty) + } catch (e) { + throw new FS.ErrnoError(29) + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(6) + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset + i] = result + } + if (bytesRead) { + stream.node.timestamp = Date.now() + } + return bytesRead + }, + write: function(stream, buffer, offset, length, pos) { + if (!stream.tty || !stream.tty.ops.put_char) { + throw new FS.ErrnoError(60) + } + try { + for (var i = 0; i < length; i++) { + stream.tty.ops.put_char(stream.tty, buffer[offset + i]) + } + } catch (e) { + throw new FS.ErrnoError(29) + } + if (length) { + stream.node.timestamp = Date.now() + } + return i + } + }, + default_tty_ops: { + get_char: function(tty) { + if (!tty.input.length) { + var result = null; + 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 = [] + } + } + } + }; + 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 + } + return node + }, + getFileDataAsRegularArray: function(node) { + if (node.contents && node.contents.subarray) { + var arr = []; + for (var i = 0; i < node.usedBytes; ++i) arr.push(node.contents[i]); + return arr + } + return node.contents + }, + 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 < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 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); + return + }, + resizeFileStorage: function(node, newSize) { + if (node.usedBytes == newSize) return; + if (newSize == 0) { + node.contents = null; + node.usedBytes = 0; + return + } + if (!node.contents || node.contents.subarray) { + 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; + return + } + if (!node.contents) node.contents = []; + if (node.contents.length > newSize) node.contents.length = newSize; + else + while (node.contents.length < newSize) node.contents.push(0); + 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.name = new_name; + new_dir.contents[new_name] = old_node; + old_node.parent = new_dir + }, + unlink: function(parent, name) { + delete parent.contents[name] + }, + 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] + }, + 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; i < size; i++) buffer[offset + i] = contents[position + i] + } + return size + }, + write: function(stream, buffer, offset, length, position, canOwn) { + if (buffer.buffer === HEAP8.buffer) { + canOwn = false + } + if (!length) return 0; + var node = stream.node; + node.timestamp = Date.now(); + if (buffer.subarray && (!node.contents || node.contents.subarray)) { + if (canOwn) { + node.contents = buffer.subarray(offset, offset + length); + node.usedBytes = length; + return length + } else if (node.usedBytes === 0 && position === 0) { + node.contents = buffer.slice(offset, offset + length); + node.usedBytes = length; + return length + } else if (position + length <= node.usedBytes) { + node.contents.set(buffer.subarray(offset, offset + length), position); + return length + } + } + MEMFS.expandFileStorage(node, position + length); + if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position); + else { + for (var i = 0; i < length; i++) { + node.contents[position + i] = buffer[offset + i] + } + } + node.usedBytes = Math.max(node.usedBytes, position + length); + return length + }, + llseek: function(stream, offset, whence) { + var position = offset; + if (whence === 1) { + position += stream.position + } else if (whence === 2) { + if (FS.isFile(stream.node.mode)) { + position += stream.node.usedBytes + } + } + if (position < 0) { + throw new FS.ErrnoError(28) + } + return position + }, + allocate: function(stream, offset, length) { + MEMFS.expandFileStorage(stream.node, offset + length); + stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length) + }, + mmap: function(stream, buffer, offset, length, position, prot, flags) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(43) + } + var ptr; + var allocated; + var contents = stream.node.contents; + if (!(flags & 2) && contents.buffer === buffer.buffer) { + allocated = false; + ptr = contents.byteOffset + } else { + if (position > 0 || position + length < contents.length) { + if (contents.subarray) { + contents = contents.subarray(position, position + length) + } else { + contents = Array.prototype.slice.call(contents, position, position + length) + } + } + allocated = true; + var fromHeap = buffer.buffer == HEAP8.buffer; + ptr = _malloc(length); + if (!ptr) { + throw new FS.ErrnoError(48) + }(fromHeap ? HEAP8 : buffer).set(contents, ptr) + } + return { + ptr: ptr, + allocated: allocated + } + }, + msync: function(stream, buffer, offset, length, mmapFlags) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(43) + } + if (mmapFlags & 2) { + return 0 + } + var bytesWritten = MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false); + return 0 + } + } + }; + var IDBFS = { + dbs: {}, + indexedDB: function() { + if (typeof indexedDB !== "undefined") return indexedDB; + var ret = null; + if (typeof window === "object") ret = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; + assert(ret, "IDBFS used, but indexedDB not supported"); + return ret + }, + DB_VERSION: 21, + DB_STORE_NAME: "FILE_DATA", + mount: function(mount) { + return MEMFS.mount.apply(null, arguments) + }, + syncfs: function(mount, populate, callback) { + IDBFS.getLocalSet(mount, function(err, local) { + if (err) return callback(err); + IDBFS.getRemoteSet(mount, function(err, remote) { + if (err) return callback(err); + var src = populate ? remote : local; + var dst = populate ? local : remote; + IDBFS.reconcile(src, dst, callback) + }) + }) + }, + getDB: function(name, callback) { + var db = IDBFS.dbs[name]; + if (db) { + return callback(null, db) + } + var req; + try { + req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION) + } catch (e) { + return callback(e) + } + if (!req) { + return callback("Unable to connect to IndexedDB") + } + req.onupgradeneeded = function(e) { + var db = e.target.result; + var transaction = e.target.transaction; + var fileStore; + if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) { + fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME) + } else { + fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME) + } + if (!fileStore.indexNames.contains("timestamp")) { + fileStore.createIndex("timestamp", "timestamp", { + unique: false + }) + } + }; + req.onsuccess = function() { + db = req.result; + IDBFS.dbs[name] = db; + callback(null, db) + }; + req.onerror = function(e) { + callback(this.error); + e.preventDefault() + } + }, + getLocalSet: function(mount, callback) { + var entries = {}; + + function isRealDir(p) { + return p !== "." && p !== ".." + } + + function toAbsolute(root) { + return function(p) { + return PATH.join2(root, p) + } + } + var check = FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint)); + while (check.length) { + var path = check.pop(); + var stat; + try { + stat = FS.stat(path) + } catch (e) { + return callback(e) + } + if (FS.isDir(stat.mode)) { + check.push.apply(check, FS.readdir(path).filter(isRealDir).map(toAbsolute(path))) + } + entries[path] = { + "timestamp": stat.mtime + } + } + return callback(null, { + type: "local", + entries: entries + }) + }, + getRemoteSet: function(mount, callback) { + var entries = {}; + IDBFS.getDB(mount.mountpoint, function(err, db) { + if (err) return callback(err); + try { + var transaction = db.transaction([IDBFS.DB_STORE_NAME], "readonly"); + transaction.onerror = function(e) { + callback(this.error); + e.preventDefault() + }; + var store = transaction.objectStore(IDBFS.DB_STORE_NAME); + var index = store.index("timestamp"); + index.openKeyCursor().onsuccess = function(event) { + var cursor = event.target.result; + if (!cursor) { + return callback(null, { + type: "remote", + db: db, + entries: entries + }) + } + entries[cursor.primaryKey] = { + "timestamp": cursor.key + }; + cursor.continue() + } + } catch (e) { + return callback(e) + } + }) + }, + loadLocalEntry: function(path, callback) { + var stat, node; + try { + var lookup = FS.lookupPath(path); + node = lookup.node; + stat = FS.stat(path) + } catch (e) { + return callback(e) + } + if (FS.isDir(stat.mode)) { + return callback(null, { + "timestamp": stat.mtime, + "mode": stat.mode + }) + } else if (FS.isFile(stat.mode)) { + node.contents = MEMFS.getFileDataAsTypedArray(node); + return callback(null, { + "timestamp": stat.mtime, + "mode": stat.mode, + "contents": node.contents + }) + } else { + return callback(new Error("node type not supported")) + } + }, + storeLocalEntry: function(path, entry, callback) { + try { + if (FS.isDir(entry["mode"])) { + FS.mkdir(path, entry["mode"]) + } else if (FS.isFile(entry["mode"])) { + FS.writeFile(path, entry["contents"], { + canOwn: true + }) + } else { + return callback(new Error("node type not supported")) + } + FS.chmod(path, entry["mode"]); + FS.utime(path, entry["timestamp"], entry["timestamp"]) + } catch (e) { + return callback(e) + } + callback(null) + }, + removeLocalEntry: function(path, callback) { + try { + var lookup = FS.lookupPath(path); + var stat = FS.stat(path); + if (FS.isDir(stat.mode)) { + FS.rmdir(path) + } else if (FS.isFile(stat.mode)) { + FS.unlink(path) + } + } catch (e) { + return callback(e) + } + callback(null) + }, + loadRemoteEntry: function(store, path, callback) { + var req = store.get(path); + req.onsuccess = function(event) { + callback(null, event.target.result) + }; + req.onerror = function(e) { + callback(this.error); + e.preventDefault() + } + }, + storeRemoteEntry: function(store, path, entry, callback) { + var req = store.put(entry, path); + req.onsuccess = function() { + callback(null) + }; + req.onerror = function(e) { + callback(this.error); + e.preventDefault() + } + }, + removeRemoteEntry: function(store, path, callback) { + var req = store.delete(path); + req.onsuccess = function() { + callback(null) + }; + req.onerror = function(e) { + callback(this.error); + e.preventDefault() + } + }, + reconcile: function(src, dst, callback) { + var total = 0; + var create = []; + Object.keys(src.entries).forEach(function(key) { + var e = src.entries[key]; + var e2 = dst.entries[key]; + if (!e2 || e["timestamp"] > e2["timestamp"]) { + create.push(key); + total++ + } + }); + var remove = []; + Object.keys(dst.entries).forEach(function(key) { + var e = dst.entries[key]; + var e2 = src.entries[key]; + if (!e2) { + remove.push(key); + total++ + } + }); + if (!total) { + return callback(null) + } + var errored = false; + var db = src.type === "remote" ? src.db : dst.db; + var transaction = db.transaction([IDBFS.DB_STORE_NAME], "readwrite"); + var store = transaction.objectStore(IDBFS.DB_STORE_NAME); + + function done(err) { + if (err && !errored) { + errored = true; + return callback(err) + } + } + transaction.onerror = function(e) { + done(this.error); + e.preventDefault() + }; + transaction.oncomplete = function(e) { + if (!errored) { + callback(null) + } + }; + create.sort().forEach(function(path) { + if (dst.type === "local") { + IDBFS.loadRemoteEntry(store, path, function(err, entry) { + if (err) return done(err); + IDBFS.storeLocalEntry(path, entry, done) + }) + } else { + IDBFS.loadLocalEntry(path, function(err, entry) { + if (err) return done(err); + IDBFS.storeRemoteEntry(store, path, entry, done) + }) + } + }); + remove.sort().reverse().forEach(function(path) { + if (dst.type === "local") { + IDBFS.removeLocalEntry(path, done) + } else { + IDBFS.removeRemoteEntry(store, path, done) + } + }) + } + }; + var FS = { + root: null, + mounts: [], + devices: {}, + streams: [], + nextInode: 1, + nameTable: null, + currentPath: "/", + initialized: false, + ignorePermissions: true, + trackingDelegate: {}, + tracking: { + openFlags: { + READ: 1, + WRITE: 2 + } + }, + ErrnoError: null, + genericErrors: {}, + filesystems: null, + syncFSRequests: 0, + handleFSError: function(e) { + if (!(e instanceof FS.ErrnoError)) throw e + " : " + stackTrace(); + return setErrNo(e.errno) + }, + lookupPath: function(path, opts) { + path = PATH_FS.resolve(FS.cwd(), path); + opts = opts || {}; + 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(function(p) { + return !!p + }), false); + var current = FS.root; + var current_path = "/"; + for (var i = 0; i < parts.length; i++) { + var islast = i === parts.length - 1; + if (islast && opts.parent) { + break + } + current = FS.lookupNode(current, parts[i]); + current_path = PATH.join2(current_path, parts[i]); + if (FS.isMountpoint(current)) { + if (!islast || islast && opts.follow_mount) { + current = current.mounted.root + } + } + if (!islast || opts.follow) { + var count = 0; + while (FS.isLink(current.mode)) { + var link = FS.readlink(current_path); + current_path = PATH_FS.resolve(PATH.dirname(current_path), link); + var lookup = FS.lookupPath(current_path, { + recurse_count: opts.recurse_count + }); + current = lookup.node; + if (count++ > 40) { + throw new FS.ErrnoError(32) + } + } + } + } + return { + path: current_path, + node: current + } + }, + getPath: function(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: function(parentid, name) { + var hash = 0; + for (var i = 0; i < name.length; i++) { + hash = (hash << 5) - hash + name.charCodeAt(i) | 0 + } + return (parentid + hash >>> 0) % FS.nameTable.length + }, + hashAddNode: function(node) { + var hash = FS.hashName(node.parent.id, node.name); + node.name_next = FS.nameTable[hash]; + FS.nameTable[hash] = node + }, + hashRemoveNode: function(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: function(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: function(parent, name, mode, rdev) { + var node = new FS.FSNode(parent, name, mode, rdev); + FS.hashAddNode(node); + return node + }, + destroyNode: function(node) { + FS.hashRemoveNode(node) + }, + isRoot: function(node) { + return node === node.parent + }, + isMountpoint: function(node) { + return !!node.mounted + }, + isFile: function(mode) { + return (mode & 61440) === 32768 + }, + isDir: function(mode) { + return (mode & 61440) === 16384 + }, + isLink: function(mode) { + return (mode & 61440) === 40960 + }, + isChrdev: function(mode) { + return (mode & 61440) === 8192 + }, + isBlkdev: function(mode) { + return (mode & 61440) === 24576 + }, + isFIFO: function(mode) { + return (mode & 61440) === 4096 + }, + isSocket: function(mode) { + return (mode & 49152) === 49152 + }, + flagModes: { + "r": 0, + "rs": 1052672, + "r+": 2, + "w": 577, + "wx": 705, + "xw": 705, + "w+": 578, + "wx+": 706, + "xw+": 706, + "a": 1089, + "ax": 1217, + "xa": 1217, + "a+": 1090, + "ax+": 1218, + "xa+": 1218 + }, + modeStringToFlags: function(str) { + var flags = FS.flagModes[str]; + if (typeof flags === "undefined") { + throw new Error("Unknown file open mode: " + str) + } + return flags + }, + flagsToPermissionString: function(flag) { + var perms = ["r", "w", "rw"][flag & 3]; + if (flag & 512) { + perms += "w" + } + return perms + }, + nodePermissions: function(node, perms) { + if (FS.ignorePermissions) { + return 0 + } + if (perms.indexOf("r") !== -1 && !(node.mode & 292)) { + return 2 + } else if (perms.indexOf("w") !== -1 && !(node.mode & 146)) { + return 2 + } else if (perms.indexOf("x") !== -1 && !(node.mode & 73)) { + return 2 + } + return 0 + }, + mayLookup: function(dir) { + var errCode = FS.nodePermissions(dir, "x"); + if (errCode) return errCode; + if (!dir.node_ops.lookup) return 2; + return 0 + }, + mayCreate: function(dir, name) { + try { + var node = FS.lookupNode(dir, name); + return 20 + } catch (e) {} + return FS.nodePermissions(dir, "wx") + }, + mayDelete: function(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: function(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: function(fd_start, fd_end) { + fd_start = fd_start || 0; + fd_end = 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: function(fd) { + return FS.streams[fd] + }, + createStream: function(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 + } + } + } + } + var newStream = new FS.FSStream; + for (var p in stream) { + newStream[p] = stream[p] + } + stream = newStream; + var fd = FS.nextfd(fd_start, fd_end); + stream.fd = fd; + FS.streams[fd] = stream; + return stream + }, + closeStream: function(fd) { + FS.streams[fd] = null + }, + chrdev_stream_ops: { + open: function(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: function() { + throw new FS.ErrnoError(70) + } + }, + major: function(dev) { + return dev >> 8 + }, + minor: function(dev) { + return dev & 255 + }, + makedev: function(ma, mi) { + return ma << 8 | mi + }, + registerDevice: function(dev, ops) { + FS.devices[dev] = { + stream_ops: ops + } + }, + getDevice: function(dev) { + return FS.devices[dev] + }, + getMounts: function(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: function(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(function(mount) { + if (!mount.type.syncfs) { + return done(null) + } + mount.type.syncfs(mount, populate, done) + }) + }, + mount: function(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: function(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(function(hash) { + var current = FS.nameTable[hash]; + while (current) { + var next = current.name_next; + if (mounts.indexOf(current.mount) !== -1) { + FS.destroyNode(current) + } + current = next + } + }); + node.mounted = null; + var idx = node.mount.mounts.indexOf(mount); + node.mount.mounts.splice(idx, 1) + }, + lookup: function(parent, name) { + return parent.node_ops.lookup(parent, name) + }, + mknod: function(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: function(path, mode) { + mode = mode !== undefined ? mode : 438; + mode &= 4095; + mode |= 32768; + return FS.mknod(path, mode, 0) + }, + mkdir: function(path, mode) { + mode = mode !== undefined ? mode : 511; + mode &= 511 | 512; + mode |= 16384; + return FS.mknod(path, mode, 0) + }, + mkdirTree: function(path, mode) { + var dirs = path.split("/"); + var d = ""; + for (var i = 0; i < dirs.length; ++i) { + if (!dirs[i]) continue; + d += "/" + dirs[i]; + try { + FS.mkdir(d, mode) + } catch (e) { + if (e.errno != 20) throw e + } + } + }, + mkdev: function(path, mode, dev) { + if (typeof dev === "undefined") { + dev = mode; + mode = 438 + } + mode |= 8192; + return FS.mknod(path, mode, dev) + }, + symlink: function(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: function(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; + try { + lookup = FS.lookupPath(old_path, { + parent: true + }); + old_dir = lookup.node; + lookup = FS.lookupPath(new_path, { + parent: true + }); + new_dir = lookup.node + } catch (e) { + throw new FS.ErrnoError(10) + } + 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) + } + } + try { + if (FS.trackingDelegate["willMovePath"]) { + FS.trackingDelegate["willMovePath"](old_path, new_path) + } + } catch (e) { + err("FS.trackingDelegate['willMovePath']('" + old_path + "', '" + new_path + "') threw an exception: " + e.message) + } + 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) + } + try { + if (FS.trackingDelegate["onMovePath"]) FS.trackingDelegate["onMovePath"](old_path, new_path) + } catch (e) { + err("FS.trackingDelegate['onMovePath']('" + old_path + "', '" + new_path + "') threw an exception: " + e.message) + } + }, + rmdir: function(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) + } + try { + if (FS.trackingDelegate["willDeletePath"]) { + FS.trackingDelegate["willDeletePath"](path) + } + } catch (e) { + err("FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e.message) + } + parent.node_ops.rmdir(parent, name); + FS.destroyNode(node); + try { + if (FS.trackingDelegate["onDeletePath"]) FS.trackingDelegate["onDeletePath"](path) + } catch (e) { + err("FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e.message) + } + }, + readdir: function(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: function(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, 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) + } + try { + if (FS.trackingDelegate["willDeletePath"]) { + FS.trackingDelegate["willDeletePath"](path) + } + } catch (e) { + err("FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e.message) + } + parent.node_ops.unlink(parent, name); + FS.destroyNode(node); + try { + if (FS.trackingDelegate["onDeletePath"]) FS.trackingDelegate["onDeletePath"](path) + } catch (e) { + err("FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e.message) + } + }, + readlink: function(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: function(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: function(path) { + return FS.stat(path, true) + }, + chmod: function(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: function(path, mode) { + FS.chmod(path, mode, true) + }, + fchmod: function(fd, mode) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8) + } + FS.chmod(stream.node, mode) + }, + chown: function(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: function(path, uid, gid) { + FS.chown(path, uid, gid, true) + }, + fchown: function(fd, uid, gid) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8) + } + FS.chown(stream.node, uid, gid) + }, + truncate: function(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: function(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: function(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: function(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; + err("FS.trackingDelegate error on read file: " + path) + } + } + try { + if (FS.trackingDelegate["onOpenFile"]) { + var trackingFlags = 0; + if ((flags & 2097155) !== 1) { + trackingFlags |= FS.tracking.openFlags.READ + } + if ((flags & 2097155) !== 0) { + trackingFlags |= FS.tracking.openFlags.WRITE + } + FS.trackingDelegate["onOpenFile"](path, trackingFlags) + } + } catch (e) { + err("FS.trackingDelegate['onOpenFile']('" + path + "', flags) threw an exception: " + e.message) + } + return stream + }, + close: function(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: function(stream) { + return stream.fd === null + }, + llseek: function(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: function(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: function(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; + try { + if (stream.path && FS.trackingDelegate["onWriteToFile"]) FS.trackingDelegate["onWriteToFile"](stream.path) + } catch (e) { + err("FS.trackingDelegate['onWriteToFile']('" + stream.path + "') threw an exception: " + e.message) + } + return bytesWritten + }, + allocate: function(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: function(stream, buffer, offset, 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, buffer, offset, length, position, prot, flags) + }, + msync: function(stream, buffer, offset, length, mmapFlags) { + if (!stream || !stream.stream_ops.msync) { + return 0 + } + return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags) + }, + munmap: function(stream) { + return 0 + }, + ioctl: function(stream, cmd, arg) { + if (!stream.stream_ops.ioctl) { + throw new FS.ErrnoError(59) + } + return stream.stream_ops.ioctl(stream, cmd, arg) + }, + readFile: function(path, opts) { + opts = opts || {}; + opts.flags = opts.flags || "r"; + 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: function(path, data, opts) { + opts = opts || {}; + opts.flags = opts.flags || "w"; + 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: function() { + return FS.currentPath + }, + chdir: function(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: function() { + FS.mkdir("/tmp"); + FS.mkdir("/home"); + FS.mkdir("/home/web_user") + }, + createDefaultDevices: function() { + FS.mkdir("/dev"); + FS.registerDevice(FS.makedev(1, 3), { + read: function() { + return 0 + }, + write: function(stream, buffer, offset, length, pos) { + return 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; + if (typeof crypto === "object" && typeof crypto["getRandomValues"] === "function") { + var randomBuffer = new Uint8Array(1); + random_device = function() { + crypto.getRandomValues(randomBuffer); + return randomBuffer[0] + } + } else {} + if (!random_device) { + random_device = function() { + abort("random_device") + } + } + FS.createDevice("/dev", "random", random_device); + FS.createDevice("/dev", "urandom", random_device); + FS.mkdir("/dev/shm"); + FS.mkdir("/dev/shm/tmp") + }, + createSpecialDirectories: function() { + FS.mkdir("/proc"); + FS.mkdir("/proc/self"); + FS.mkdir("/proc/self/fd"); + FS.mount({ + mount: function() { + var node = FS.createNode("/proc/self", "fd", 16384 | 511, 73); + node.node_ops = { + lookup: function(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: function() { + return stream.path + } + } + }; + ret.parent = ret; + return ret + } + }; + return node + } + }, {}, "/proc/self/fd") + }, + createStandardStreams: function() { + 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", "r"); + var stdout = FS.open("/dev/stdout", "w"); + var stderr = FS.open("/dev/stderr", "w") + }, + ensureErrnoError: function() { + 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(function(code) { + FS.genericErrors[code] = new FS.ErrnoError(code); + FS.genericErrors[code].stack = "" + }) + }, + staticInit: function() { + FS.ensureErrnoError(); + FS.nameTable = new Array(4096); + FS.mount(MEMFS, {}, "/"); + FS.createDefaultDirectories(); + FS.createDefaultDevices(); + FS.createSpecialDirectories(); + FS.filesystems = { + "MEMFS": MEMFS, + "IDBFS": IDBFS + } + }, + init: function(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: function() { + FS.init.initialized = false; + var fflush = Module["_fflush"]; + if (fflush) fflush(0); + for (var i = 0; i < FS.streams.length; i++) { + var stream = FS.streams[i]; + if (!stream) { + continue + } + FS.close(stream) + } + }, + getMode: function(canRead, canWrite) { + var mode = 0; + if (canRead) mode |= 292 | 73; + if (canWrite) mode |= 146; + return mode + }, + joinPath: function(parts, forceRelative) { + var path = PATH.join.apply(null, parts); + if (forceRelative && path[0] == "/") path = path.substr(1); + return path + }, + absolutePath: function(relative, base) { + return PATH_FS.resolve(base, relative) + }, + standardizePath: function(path) { + return PATH.normalize(path) + }, + findObject: function(path, dontResolveLastLink) { + var ret = FS.analyzePath(path, dontResolveLastLink); + if (ret.exists) { + return ret.object + } else { + setErrNo(ret.error); + return null + } + }, + analyzePath: function(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 + }, + createFolder: function(parent, name, canRead, canWrite) { + var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name); + var mode = FS.getMode(canRead, canWrite); + return FS.mkdir(path, mode) + }, + createPath: function(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: function(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: function(parent, name, data, canRead, canWrite, canOwn) { + var path = name ? PATH.join2(typeof parent === "string" ? parent : FS.getPath(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 < len; ++i) arr[i] = data.charCodeAt(i); + data = arr + } + FS.chmod(node, mode | 146); + var stream = FS.open(node, "w"); + FS.write(stream, data, 0, data.length, 0, canOwn); + FS.close(stream); + FS.chmod(node, mode) + } + return node + }, + createDevice: function(parent, name, input, output) { + 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: function(stream) { + stream.seekable = false + }, + close: function(stream) { + if (output && output.buffer && output.buffer.length) { + output(10) + } + }, + read: function(stream, buffer, offset, length, pos) { + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = input() + } catch (e) { + throw new FS.ErrnoError(29) + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(6) + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset + i] = result + } + if (bytesRead) { + stream.node.timestamp = Date.now() + } + return bytesRead + }, + write: function(stream, buffer, offset, length, pos) { + for (var i = 0; i < length; i++) { + try { + output(buffer[offset + i]) + } catch (e) { + throw new FS.ErrnoError(29) + } + } + if (length) { + stream.node.timestamp = Date.now() + } + return i + } + }); + return FS.mkdev(path, mode, dev) + }, + createLink: function(parent, name, target, canRead, canWrite) { + var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name); + return FS.symlink(target, path) + }, + forceLoadFile: function(obj) { + if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; + var success = 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) { + success = false + } + } else { + throw new Error("Cannot load without read() or XMLHttpRequest.") + } + if (!success) setErrNo(29); + return success + }, + createLazyFile: function(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 = function(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); + if (typeof Uint8Array != "undefined") 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(function(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(function(key) { + var fn = node.stream_ops[key]; + stream_ops[key] = function forceLoadLazyFile() { + if (!FS.forceLoadFile(node)) { + throw new FS.ErrnoError(29) + } + return fn.apply(null, arguments) + } + }); + stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) { + if (!FS.forceLoadFile(node)) { + throw new FS.ErrnoError(29) + } + 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 < size; i++) { + buffer[offset + i] = contents[position + i] + } + } else { + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents.get(position + i) + } + } + return size + }; + node.stream_ops = stream_ops; + return node + }, + createPreloadedFile: function(parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) { + Browser.init(); + 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) + } + var handled = false; + Module["preloadPlugins"].forEach(function(plugin) { + if (handled) return; + if (plugin["canHandle"](fullname)) { + plugin["handle"](byteArray, fullname, finish, function() { + if (onerror) onerror(); + removeRunDependency(dep) + }); + handled = true + } + }); + if (!handled) finish(byteArray) + } + addRunDependency(dep); + if (typeof url == "string") { + Browser.asyncLoad(url, function(byteArray) { + processData(byteArray) + }, onerror) + } else { + processData(url) + } + }, + indexedDB: function() { + return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB + }, + DB_NAME: function() { + return "EM_FS_" + window.location.pathname + }, + DB_VERSION: 20, + DB_STORE_NAME: "FILE_DATA", + saveFilesToDB: function(paths, onload, onerror) { + onload = onload || function() {}; + onerror = onerror || function() {}; + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION) + } catch (e) { + return onerror(e) + } + openRequest.onupgradeneeded = function openRequest_onupgradeneeded() { + out("creating db"); + var db = openRequest.result; + db.createObjectStore(FS.DB_STORE_NAME) + }; + openRequest.onsuccess = function 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(function(path) { + var putRequest = files.put(FS.analyzePath(path).object.contents, path); + putRequest.onsuccess = function putRequest_onsuccess() { + ok++; + if (ok + fail == total) finish() + }; + putRequest.onerror = function putRequest_onerror() { + fail++; + if (ok + fail == total) finish() + } + }); + transaction.onerror = onerror + }; + openRequest.onerror = onerror + }, + loadFilesFromDB: function(paths, onload, onerror) { + onload = onload || function() {}; + onerror = onerror || function() {}; + 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 = function 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(function(path) { + var getRequest = files.get(path); + getRequest.onsuccess = function 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 = function getRequest_onerror() { + fail++; + if (ok + fail == total) finish() + } + }); + transaction.onerror = onerror + }; + openRequest.onerror = onerror + } + }; + var SYSCALLS = { + mappings: {}, + DEFAULT_POLLMASK: 5, + umask: 511, + calculateAt: function(dirfd, path) { + if (path[0] !== "/") { + var dir; + if (dirfd === -100) { + dir = FS.cwd() + } else { + var dirstream = FS.getStream(dirfd); + if (!dirstream) throw new FS.ErrnoError(8); + dir = dirstream.path + } + path = PATH.join2(dir, path) + } + return 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 node; + var lookup = FS.lookupPath(path, { + follow: true + }); + 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 < iovcnt; i++) { + var ptr = HEAP32[iov + i * 8 >> 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 < len) break + } + return ret + }, + doWritev: function(stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAP32[iov + i * 8 >> 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 ___sys_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 12: { + var arg = SYSCALLS.get(); + var offset = 0; + HEAP16[arg + offset >> 1] = 2; + return 0 + } + case 13: + case 14: + 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)) abort(e); + return -e.errno + } + } + + function ___sys_fstat64(fd, buf) { + try { + var stream = SYSCALLS.getStreamFromFD(fd); + return SYSCALLS.doStat(FS.stat, stream.path, buf) + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno + } + } + + function ___sys_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)) abort(e); + return -e.errno + } + } + + function ___sys_open(path, flags, varargs) { + SYSCALLS.varargs = varargs; + try { + var pathname = SYSCALLS.getStr(path); + var mode = SYSCALLS.get(); + var stream = FS.open(pathname, flags, mode); + return stream.fd + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno + } + } + + function ___sys_read(fd, buf, count) { + try { + var stream = SYSCALLS.getStreamFromFD(fd); + return FS.read(stream, HEAP8, buf, count) + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno + } + } + + function ___sys_stat64(path, buf) { + try { + path = SYSCALLS.getStr(path); + return SYSCALLS.doStat(FS.stat, path, buf) + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno + } + } + + function __emscripten_fetch_free(id) { + delete Fetch.xhrs[id - 1] + } + + function _abort() { + abort() + } + + function _emscripten_set_main_loop_timing(mode, value) { + Browser.mainLoop.timingMode = mode; + Browser.mainLoop.timingValue = value; + if (!Browser.mainLoop.func) { + return 1 + } + if (mode == 0) { + Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_setTimeout() { + var timeUntilNextTick = Math.max(0, Browser.mainLoop.tickStartTime + value - _emscripten_get_now()) | 0; + setTimeout(Browser.mainLoop.runner, timeUntilNextTick) + }; + Browser.mainLoop.method = "timeout" + } else if (mode == 1) { + Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_rAF() { + Browser.requestAnimationFrame(Browser.mainLoop.runner) + }; + Browser.mainLoop.method = "rAF" + } else if (mode == 2) { + if (typeof setImmediate === "undefined") { + var setImmediates = []; + var emscriptenMainLoopMessageId = "setimmediate"; + var Browser_setImmediate_messageHandler = function(event) { + if (event.data === emscriptenMainLoopMessageId || event.data.target === emscriptenMainLoopMessageId) { + event.stopPropagation(); + setImmediates.shift()() + } + }; + addEventListener("message", Browser_setImmediate_messageHandler, true); + setImmediate = function Browser_emulated_setImmediate(func) { + setImmediates.push(func); + if (ENVIRONMENT_IS_WORKER) { + if (Module["setImmediates"] === undefined) Module["setImmediates"] = []; + Module["setImmediates"].push(func); + postMessage({ + target: emscriptenMainLoopMessageId + }) + } else postMessage(emscriptenMainLoopMessageId, "*") + } + } + Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_setImmediate() { + setImmediate(Browser.mainLoop.runner) + }; + Browser.mainLoop.method = "immediate" + } + return 0 + } + var _emscripten_get_now; + _emscripten_get_now = function() { + return performance.now() + }; + + function _emscripten_set_main_loop(func, fps, simulateInfiniteLoop, arg, noSetTiming) { + noExitRuntime = true; + assert(!Browser.mainLoop.func, "emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters."); + Browser.mainLoop.func = func; + Browser.mainLoop.arg = arg; + var browserIterationFunc; + if (typeof arg !== "undefined") { + browserIterationFunc = function() { + Module["dynCall_vi"](func, arg) + } + } else { + browserIterationFunc = function() { + Module["dynCall_v"](func) + } + } + var thisMainLoopId = Browser.mainLoop.currentlyRunningMainloop; + Browser.mainLoop.runner = function Browser_mainLoop_runner() { + if (ABORT) return; + if (Browser.mainLoop.queue.length > 0) { + 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 + } + } + console.log('main loop blocker "' + blocker.name + '" took ' + (Date.now() - start) + " ms"); + Browser.mainLoop.updateStatus(); + if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return; + setTimeout(Browser.mainLoop.runner, 0); + return + } + if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return; + Browser.mainLoop.currentFrameNumber = Browser.mainLoop.currentFrameNumber + 1 | 0; + if (Browser.mainLoop.timingMode == 1 && Browser.mainLoop.timingValue > 1 && Browser.mainLoop.currentFrameNumber % Browser.mainLoop.timingValue != 0) { + Browser.mainLoop.scheduler(); + return + } else if (Browser.mainLoop.timingMode == 0) { + Browser.mainLoop.tickStartTime = _emscripten_get_now() + } + Browser.mainLoop.runIter(browserIterationFunc); + if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) 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" + } + } + var Browser = { + mainLoop: { + 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; + _emscripten_set_main_loop(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 < expected) { + Module["setStatus"](message + " (" + (expected - remaining) + "/" + expected + ")") + } else { + Module["setStatus"](message) + } + } else { + Module["setStatus"]("") + } + } + }, + runIter: function(func) { + if (ABORT) return; + if (Module["preMainLoop"]) { + var preRet = Module["preMainLoop"](); + if (preRet === false) { + return + } + } + try { + func() + } catch (e) { + if (e instanceof ExitStatus) { + return + } else { + if (e && typeof e === "object" && e.stack) err("exception thrown: " + [e, e.stack]); + throw e + } + } + if (Module["postMainLoop"]) Module["postMainLoop"]() + } + }, + isFullscreen: false, + pointerLock: false, + moduleContextCreatedCallbacks: [], + workers: [], + init: function() { + if (!Module["preloadPlugins"]) Module["preloadPlugins"] = []; + if (Browser.initted) return; + Browser.initted = true; + try { + new Blob; + Browser.hasBlobConstructor = true + } catch (e) { + Browser.hasBlobConstructor = false; + console.log("warning: no blob constructor, cannot create blobs with mimetypes") + } + Browser.BlobBuilder = typeof MozBlobBuilder != "undefined" ? MozBlobBuilder : typeof WebKitBlobBuilder != "undefined" ? WebKitBlobBuilder : !Browser.hasBlobConstructor ? console.log("warning: no BlobBuilder") : null; + Browser.URLObject = typeof window != "undefined" ? window.URL ? window.URL : window.webkitURL : undefined; + if (!Module.noImageDecoding && typeof Browser.URLObject === "undefined") { + console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."); + Module.noImageDecoding = true + } + var imagePlugin = {}; + imagePlugin["canHandle"] = function imagePlugin_canHandle(name) { + return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name) + }; + imagePlugin["handle"] = function imagePlugin_handle(byteArray, name, onload, onerror) { + var b = null; + if (Browser.hasBlobConstructor) { + try { + b = new Blob([byteArray], { + type: Browser.getMimetype(name) + }); + if (b.size !== byteArray.length) { + b = new Blob([new Uint8Array(byteArray).buffer], { + type: Browser.getMimetype(name) + }) + } + } catch (e) { + warnOnce("Blob constructor present but fails: " + e + "; falling back to blob builder") + } + } + if (!b) { + var bb = new Browser.BlobBuilder; + bb.append(new Uint8Array(byteArray).buffer); + b = bb.getBlob() + } + var url = Browser.URLObject.createObjectURL(b); + var img = new Image; + img.onload = function img_onload() { + 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 = function img_onerror(event) { + console.log("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; + console.log("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 < data.length; i++) { + leftchar = leftchar << 8 | data[i]; + leftbits += 8; + while (leftbits >= 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; + Browser.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) + } + } + }, + createContext: function(canvas, useWebGL, setInModule, webGLContextAttributes) { + if (useWebGL && Module.ctx && canvas == Module.canvas) return Module.ctx; + var ctx; + var contextHandle; + if (useWebGL) { + var contextAttributes = { + antialias: false, + alpha: false, + majorVersion: 2 + }; + if (webGLContextAttributes) { + for (var attribute in webGLContextAttributes) { + contextAttributes[attribute] = webGLContextAttributes[attribute] + } + } + if (typeof GL !== "undefined") { + contextHandle = GL.createContext(canvas, contextAttributes); + if (contextHandle) { + ctx = GL.getContext(contextHandle).GLctx + } + } + } else { + ctx = canvas.getContext("2d") + } + if (!ctx) return null; + if (setInModule) { + if (!useWebGL) assert(typeof GLctx === "undefined", "cannot set in module if GLctx is used, but we are a non-GL context that would replace it"); + Module.ctx = ctx; + if (useWebGL) GL.makeContextCurrent(contextHandle); + Module.useWebGL = useWebGL; + Browser.moduleContextCreatedCallbacks.forEach(function(callback) { + callback() + }); + Browser.init() + } + return ctx + }, + destroyContext: function(canvas, useWebGL, setInModule) {}, + fullscreenHandlersInstalled: false, + lockPointer: undefined, + resizeCanvas: undefined, + requestFullscreen: function(lockPointer, resizeCanvas) { + Browser.lockPointer = lockPointer; + Browser.resizeCanvas = resizeCanvas; + if (typeof Browser.lockPointer === "undefined") Browser.lockPointer = true; + if (typeof Browser.resizeCanvas === "undefined") Browser.resizeCanvas = false; + var canvas = Module["canvas"]; + + function fullscreenChange() { + Browser.isFullscreen = false; + var canvasContainer = canvas.parentNode; + if ((document["fullscreenElement"] || document["mozFullScreenElement"] || document["msFullscreenElement"] || document["webkitFullscreenElement"] || document["webkitCurrentFullScreenElement"]) === canvasContainer) { + canvas.exitFullscreen = Browser.exitFullscreen; + if (Browser.lockPointer) canvas.requestPointerLock(); + Browser.isFullscreen = true; + if (Browser.resizeCanvas) { + Browser.setFullscreenCanvasSize() + } else { + Browser.updateCanvasDimensions(canvas) + } + } else { + canvasContainer.parentNode.insertBefore(canvas, canvasContainer); + canvasContainer.parentNode.removeChild(canvasContainer); + if (Browser.resizeCanvas) { + Browser.setWindowedCanvasSize() + } else { + Browser.updateCanvasDimensions(canvas) + } + } + if (Module["onFullScreen"]) Module["onFullScreen"](Browser.isFullscreen); + if (Module["onFullscreen"]) Module["onFullscreen"](Browser.isFullscreen) + } + if (!Browser.fullscreenHandlersInstalled) { + Browser.fullscreenHandlersInstalled = true; + document.addEventListener("fullscreenchange", fullscreenChange, false); + document.addEventListener("mozfullscreenchange", fullscreenChange, false); + document.addEventListener("webkitfullscreenchange", fullscreenChange, false); + document.addEventListener("MSFullscreenChange", fullscreenChange, false) + } + var canvasContainer = document.createElement("div"); + canvas.parentNode.insertBefore(canvasContainer, canvas); + canvasContainer.appendChild(canvas); + canvasContainer.requestFullscreen = canvasContainer["requestFullscreen"] || canvasContainer["mozRequestFullScreen"] || canvasContainer["msRequestFullscreen"] || (canvasContainer["webkitRequestFullscreen"] ? 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) + }, + safeCallback: function(func) { + return function() { + if (!ABORT) return func.apply(null, arguments) + } + }, + allowAsyncCallbacks: true, + queuedAsyncCallbacks: [], + pauseAsyncCallbacks: function() { + Browser.allowAsyncCallbacks = false + }, + resumeAsyncCallbacks: function() { + Browser.allowAsyncCallbacks = true; + if (Browser.queuedAsyncCallbacks.length > 0) { + var callbacks = Browser.queuedAsyncCallbacks; + Browser.queuedAsyncCallbacks = []; + callbacks.forEach(function(func) { + func() + }) + } + }, + safeRequestAnimationFrame: function(func) { + return Browser.requestAnimationFrame(function() { + if (ABORT) return; + if (Browser.allowAsyncCallbacks) { + func() + } else { + Browser.queuedAsyncCallbacks.push(func) + } + }) + }, + safeSetTimeout: function(func, timeout) { + noExitRuntime = true; + return setTimeout(function() { + if (ABORT) return; + if (Browser.allowAsyncCallbacks) { + func() + } else { + Browser.queuedAsyncCallbacks.push(func) + } + }, timeout) + }, + safeSetInterval: function(func, timeout) { + noExitRuntime = true; + return setInterval(function() { + if (ABORT) return; + if (Browser.allowAsyncCallbacks) { + func() + } + }, timeout) + }, + 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 + } + }, + asyncLoad: function(url, onload, onerror, noRunDep) { + var dep = !noRunDep ? getUniqueRunDependency("al " + url) : ""; + readAsync(url, function(arrayBuffer) { + assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).'); + onload(new Uint8Array(arrayBuffer)); + if (dep) removeRunDependency(dep) + }, function(event) { + if (onerror) { + onerror() + } else { + throw 'Loading data file "' + url + '" failed.' + } + }); + if (dep) addRunDependency(dep) + }, + resizeListeners: [], + updateResizeListeners: function() { + var canvas = Module["canvas"]; + Browser.resizeListeners.forEach(function(listener) { + listener(canvas.width, canvas.height) + }) + }, + setCanvasSize: function(width, height, noUpdates) { + var canvas = Module["canvas"]; + Browser.updateCanvasDimensions(canvas, width, height); + if (!noUpdates) Browser.updateResizeListeners() + }, + windowedWidth: 0, + windowedHeight: 0, + setFullscreenCanvasSize: function() { + if (typeof SDL != "undefined") { + var flags = HEAPU32[SDL.screen >> 2]; + flags = flags | 8388608; + HEAP32[SDL.screen >> 2] = flags + } + Browser.updateCanvasDimensions(Module["canvas"]); + Browser.updateResizeListeners() + }, + setWindowedCanvasSize: function() { + if (typeof SDL != "undefined") { + var flags = HEAPU32[SDL.screen >> 2]; + flags = flags & ~8388608; + HEAP32[SDL.screen >> 2] = flags + } + Browser.updateCanvasDimensions(Module["canvas"]); + Browser.updateResizeListeners() + }, + updateCanvasDimensions: function(canvas, wNative, hNative) { + if (wNative && hNative) { + canvas.widthNative = wNative; + canvas.heightNative = hNative + } else { + wNative = canvas.widthNative; + hNative = canvas.heightNative + } + var w = wNative; + var h = hNative; + if (Module["forcedAspectRatio"] && Module["forcedAspectRatio"] > 0) { + if (w / h < Module["forcedAspectRatio"]) { + w = Math.round(h * Module["forcedAspectRatio"]) + } else { + h = Math.round(w / Module["forcedAspectRatio"]) + } + } + if ((document["fullscreenElement"] || document["mozFullScreenElement"] || document["msFullscreenElement"] || document["webkitFullscreenElement"] || document["webkitCurrentFullScreenElement"]) === canvas.parentNode && typeof screen != "undefined") { + var factor = Math.min(screen.width / w, screen.height / h); + w = Math.round(w * factor); + h = Math.round(h * factor) + } + if (Browser.resizeCanvas) { + if (canvas.width != w) canvas.width = w; + if (canvas.height != h) canvas.height = h; + if (typeof canvas.style != "undefined") { + canvas.style.removeProperty("width"); + canvas.style.removeProperty("height") + } + } else { + if (canvas.width != wNative) canvas.width = wNative; + if (canvas.height != hNative) canvas.height = hNative; + if (typeof canvas.style != "undefined") { + if (w != wNative || h != hNative) { + canvas.style.setProperty("width", w + "px", "important"); + canvas.style.setProperty("height", h + "px", "important") + } else { + canvas.style.removeProperty("width"); + canvas.style.removeProperty("height") + } + } + } + }, + wgetRequests: {}, + nextWgetRequestHandle: 0, + getNextWgetRequestHandle: function() { + var handle = Browser.nextWgetRequestHandle; + Browser.nextWgetRequestHandle++; + return handle + } + }; + var AL = { + QUEUE_INTERVAL: 25, + QUEUE_LOOKAHEAD: .1, + DEVICE_NAME: "Emscripten OpenAL", + CAPTURE_DEVICE_NAME: "Emscripten OpenAL capture", + ALC_EXTENSIONS: { + ALC_SOFT_pause_device: true, + ALC_SOFT_HRTF: true + }, + AL_EXTENSIONS: { + AL_EXT_float32: true, + AL_SOFT_loop_points: true, + AL_SOFT_source_length: true, + AL_EXT_source_distance_model: true, + AL_SOFT_source_spatialize: true + }, + _alcErr: 0, + alcErr: 0, + deviceRefCounts: {}, + alcStringCache: {}, + paused: false, + stringCache: {}, + contexts: {}, + currentCtx: null, + buffers: { + 0: { + id: 0, + refCount: 0, + audioBuf: null, + frequency: 0, + bytesPerSample: 2, + channels: 1, + length: 0 + } + }, + paramArray: [], + _nextId: 1, + newId: function() { + return AL.freeIds.length > 0 ? AL.freeIds.pop() : AL._nextId++ + }, + freeIds: [], + scheduleContextAudio: function(ctx) { + if (Browser.mainLoop.timingMode === 1 && document["visibilityState"] != "visible") { + return + } + for (var i in ctx.sources) { + AL.scheduleSourceAudio(ctx.sources[i]) + } + }, + scheduleSourceAudio: function(src, lookahead) { + if (Browser.mainLoop.timingMode === 1 && document["visibilityState"] != "visible") { + return + } + if (src.state !== 4114) { + return + } + var currentTime = AL.updateSourceTime(src); + var startTime = src.bufStartTime; + var startOffset = src.bufOffset; + var bufCursor = src.bufsProcessed; + for (var i = 0; i < src.audioQueue.length; i++) { + var audioSrc = src.audioQueue[i]; + startTime = audioSrc._startTime + audioSrc._duration; + startOffset = 0; + bufCursor += audioSrc._skipCount + 1 + } + if (!lookahead) { + lookahead = AL.QUEUE_LOOKAHEAD + } + var lookaheadTime = currentTime + lookahead; + var skipCount = 0; + while (startTime < lookaheadTime) { + if (bufCursor >= src.bufQueue.length) { + if (src.looping) { + bufCursor %= src.bufQueue.length + } else { + break + } + } + var buf = src.bufQueue[bufCursor % src.bufQueue.length]; + if (buf.length === 0) { + skipCount++; + if (skipCount === src.bufQueue.length) { + break + } + } else { + var audioSrc = src.context.audioCtx.createBufferSource(); + audioSrc.buffer = buf.audioBuf; + audioSrc.playbackRate.value = src.playbackRate; + if (buf.audioBuf._loopStart || buf.audioBuf._loopEnd) { + audioSrc.loopStart = buf.audioBuf._loopStart; + audioSrc.loopEnd = buf.audioBuf._loopEnd + } + var duration = 0; + if (src.type === 4136 && src.looping) { + duration = Number.POSITIVE_INFINITY; + audioSrc.loop = true; + if (buf.audioBuf._loopStart) { + audioSrc.loopStart = buf.audioBuf._loopStart + } + if (buf.audioBuf._loopEnd) { + audioSrc.loopEnd = buf.audioBuf._loopEnd + } + } else { + duration = (buf.audioBuf.duration - startOffset) / src.playbackRate + } + audioSrc._startOffset = startOffset; + audioSrc._duration = duration; + audioSrc._skipCount = skipCount; + skipCount = 0; + audioSrc.connect(src.gain); + if (typeof audioSrc.start !== "undefined") { + startTime = Math.max(startTime, src.context.audioCtx.currentTime); + audioSrc.start(startTime, startOffset) + } else if (typeof audioSrc.noteOn !== "undefined") { + startTime = Math.max(startTime, src.context.audioCtx.currentTime); + audioSrc.noteOn(startTime) + } + audioSrc._startTime = startTime; + src.audioQueue.push(audioSrc); + startTime += duration + } + startOffset = 0; + bufCursor++ + } + }, + updateSourceTime: function(src) { + var currentTime = src.context.audioCtx.currentTime; + if (src.state !== 4114) { + return currentTime + } + if (!isFinite(src.bufStartTime)) { + src.bufStartTime = currentTime - src.bufOffset / src.playbackRate; + src.bufOffset = 0 + } + var nextStartTime = 0; + while (src.audioQueue.length) { + var audioSrc = src.audioQueue[0]; + src.bufsProcessed += audioSrc._skipCount; + nextStartTime = audioSrc._startTime + audioSrc._duration; + if (currentTime < nextStartTime) { + break + } + src.audioQueue.shift(); + src.bufStartTime = nextStartTime; + src.bufOffset = 0; + src.bufsProcessed++ + } + if (src.bufsProcessed >= src.bufQueue.length && !src.looping) { + AL.setSourceState(src, 4116) + } else if (src.type === 4136 && src.looping) { + var buf = src.bufQueue[0]; + if (buf.length === 0) { + src.bufOffset = 0 + } else { + var delta = (currentTime - src.bufStartTime) * src.playbackRate; + var loopStart = buf.audioBuf._loopStart || 0; + var loopEnd = buf.audioBuf._loopEnd || buf.audioBuf.duration; + if (loopEnd <= loopStart) { + loopEnd = buf.audioBuf.duration + } + if (delta < loopEnd) { + src.bufOffset = delta + } else { + src.bufOffset = loopStart + (delta - loopStart) % (loopEnd - loopStart) + } + } + } else if (src.audioQueue[0]) { + src.bufOffset = (currentTime - src.audioQueue[0]._startTime) * src.playbackRate + } else { + if (src.type !== 4136 && src.looping) { + var srcDuration = AL.sourceDuration(src) / src.playbackRate; + if (srcDuration > 0) { + src.bufStartTime += Math.floor((currentTime - src.bufStartTime) / srcDuration) * srcDuration + } + } + for (var i = 0; i < src.bufQueue.length; i++) { + if (src.bufsProcessed >= src.bufQueue.length) { + if (src.looping) { + src.bufsProcessed %= src.bufQueue.length + } else { + AL.setSourceState(src, 4116); + break + } + } + var buf = src.bufQueue[src.bufsProcessed]; + if (buf.length > 0) { + nextStartTime = src.bufStartTime + buf.audioBuf.duration / src.playbackRate; + if (currentTime < nextStartTime) { + src.bufOffset = (currentTime - src.bufStartTime) * src.playbackRate; + break + } + src.bufStartTime = nextStartTime + } + src.bufOffset = 0; + src.bufsProcessed++ + } + } + return currentTime + }, + cancelPendingSourceAudio: function(src) { + AL.updateSourceTime(src); + for (var i = 1; i < src.audioQueue.length; i++) { + var audioSrc = src.audioQueue[i]; + audioSrc.stop() + } + if (src.audioQueue.length > 1) { + src.audioQueue.length = 1 + } + }, + stopSourceAudio: function(src) { + for (var i = 0; i < src.audioQueue.length; i++) { + src.audioQueue[i].stop() + } + src.audioQueue.length = 0 + }, + setSourceState: function(src, state) { + if (state === 4114) { + if (src.state === 4114 || src.state == 4116) { + src.bufsProcessed = 0; + src.bufOffset = 0 + } else {} + AL.stopSourceAudio(src); + src.state = 4114; + src.bufStartTime = Number.NEGATIVE_INFINITY; + AL.scheduleSourceAudio(src) + } else if (state === 4115) { + if (src.state === 4114) { + AL.updateSourceTime(src); + AL.stopSourceAudio(src); + src.state = 4115 + } + } else if (state === 4116) { + if (src.state !== 4113) { + src.state = 4116; + src.bufsProcessed = src.bufQueue.length; + src.bufStartTime = Number.NEGATIVE_INFINITY; + src.bufOffset = 0; + AL.stopSourceAudio(src) + } + } else if (state === 4113) { + if (src.state !== 4113) { + src.state = 4113; + src.bufsProcessed = 0; + src.bufStartTime = Number.NEGATIVE_INFINITY; + src.bufOffset = 0; + AL.stopSourceAudio(src) + } + } + }, + initSourcePanner: function(src) { + if (src.type === 4144) { + return + } + var templateBuf = AL.buffers[0]; + for (var i = 0; i < src.bufQueue.length; i++) { + if (src.bufQueue[i].id !== 0) { + templateBuf = src.bufQueue[i]; + break + } + } + if (src.spatialize === 1 || src.spatialize === 2 && templateBuf.channels === 1) { + if (src.panner) { + return + } + src.panner = src.context.audioCtx.createPanner(); + AL.updateSourceGlobal(src); + AL.updateSourceSpace(src); + src.panner.connect(src.context.gain); + src.gain.disconnect(); + src.gain.connect(src.panner) + } else { + if (!src.panner) { + return + } + src.panner.disconnect(); + src.gain.disconnect(); + src.gain.connect(src.context.gain); + src.panner = null + } + }, + updateContextGlobal: function(ctx) { + for (var i in ctx.sources) { + AL.updateSourceGlobal(ctx.sources[i]) + } + }, + updateSourceGlobal: function(src) { + var panner = src.panner; + if (!panner) { + return + } + panner.refDistance = src.refDistance; + panner.maxDistance = src.maxDistance; + panner.rolloffFactor = src.rolloffFactor; + panner.panningModel = src.context.hrtf ? "HRTF" : "equalpower"; + var distanceModel = src.context.sourceDistanceModel ? src.distanceModel : src.context.distanceModel; + switch (distanceModel) { + case 0: + panner.distanceModel = "inverse"; + panner.refDistance = 3.40282e38; + break; + case 53249: + case 53250: + panner.distanceModel = "inverse"; + break; + case 53251: + case 53252: + panner.distanceModel = "linear"; + break; + case 53253: + case 53254: + panner.distanceModel = "exponential"; + break + } + }, + updateListenerSpace: function(ctx) { + var listener = ctx.audioCtx.listener; + if (listener.positionX) { + listener.positionX.value = ctx.listener.position[0]; + listener.positionY.value = ctx.listener.position[1]; + listener.positionZ.value = ctx.listener.position[2] + } else { + listener.setPosition(ctx.listener.position[0], ctx.listener.position[1], ctx.listener.position[2]) + } + if (listener.forwardX) { + listener.forwardX.value = ctx.listener.direction[0]; + listener.forwardY.value = ctx.listener.direction[1]; + listener.forwardZ.value = ctx.listener.direction[2]; + listener.upX.value = ctx.listener.up[0]; + listener.upY.value = ctx.listener.up[1]; + listener.upZ.value = ctx.listener.up[2] + } else { + listener.setOrientation(ctx.listener.direction[0], ctx.listener.direction[1], ctx.listener.direction[2], ctx.listener.up[0], ctx.listener.up[1], ctx.listener.up[2]) + } + for (var i in ctx.sources) { + AL.updateSourceSpace(ctx.sources[i]) + } + }, + updateSourceSpace: function(src) { + if (!src.panner) { + return + } + var panner = src.panner; + var posX = src.position[0]; + var posY = src.position[1]; + var posZ = src.position[2]; + var dirX = src.direction[0]; + var dirY = src.direction[1]; + var dirZ = src.direction[2]; + var listener = src.context.listener; + var lPosX = listener.position[0]; + var lPosY = listener.position[1]; + var lPosZ = listener.position[2]; + if (src.relative) { + var lBackX = -listener.direction[0]; + var lBackY = -listener.direction[1]; + var lBackZ = -listener.direction[2]; + var lUpX = listener.up[0]; + var lUpY = listener.up[1]; + var lUpZ = listener.up[2]; + var inverseMagnitude = function(x, y, z) { + var length = Math.sqrt(x * x + y * y + z * z); + if (length < Number.EPSILON) { + return 0 + } + return 1 / length + }; + var invMag = inverseMagnitude(lBackX, lBackY, lBackZ); + lBackX *= invMag; + lBackY *= invMag; + lBackZ *= invMag; + invMag = inverseMagnitude(lUpX, lUpY, lUpZ); + lUpX *= invMag; + lUpY *= invMag; + lUpZ *= invMag; + var lRightX = lUpY * lBackZ - lUpZ * lBackY; + var lRightY = lUpZ * lBackX - lUpX * lBackZ; + var lRightZ = lUpX * lBackY - lUpY * lBackX; + invMag = inverseMagnitude(lRightX, lRightY, lRightZ); + lRightX *= invMag; + lRightY *= invMag; + lRightZ *= invMag; + lUpX = lBackY * lRightZ - lBackZ * lRightY; + lUpY = lBackZ * lRightX - lBackX * lRightZ; + lUpZ = lBackX * lRightY - lBackY * lRightX; + var oldX = dirX; + var oldY = dirY; + var oldZ = dirZ; + dirX = oldX * lRightX + oldY * lUpX + oldZ * lBackX; + dirY = oldX * lRightY + oldY * lUpY + oldZ * lBackY; + dirZ = oldX * lRightZ + oldY * lUpZ + oldZ * lBackZ; + oldX = posX; + oldY = posY; + oldZ = posZ; + posX = oldX * lRightX + oldY * lUpX + oldZ * lBackX; + posY = oldX * lRightY + oldY * lUpY + oldZ * lBackY; + posZ = oldX * lRightZ + oldY * lUpZ + oldZ * lBackZ; + posX += lPosX; + posY += lPosY; + posZ += lPosZ + } + if (panner.positionX) { + panner.positionX.value = posX; + panner.positionY.value = posY; + panner.positionZ.value = posZ + } else { + panner.setPosition(posX, posY, posZ) + } + if (panner.orientationX) { + panner.orientationX.value = dirX; + panner.orientationY.value = dirY; + panner.orientationZ.value = dirZ + } else { + panner.setOrientation(dirX, dirY, dirZ) + } + var oldShift = src.dopplerShift; + var velX = src.velocity[0]; + var velY = src.velocity[1]; + var velZ = src.velocity[2]; + var lVelX = listener.velocity[0]; + var lVelY = listener.velocity[1]; + var lVelZ = listener.velocity[2]; + if (posX === lPosX && posY === lPosY && posZ === lPosZ || velX === lVelX && velY === lVelY && velZ === lVelZ) { + src.dopplerShift = 1 + } else { + var speedOfSound = src.context.speedOfSound; + var dopplerFactor = src.context.dopplerFactor; + var slX = lPosX - posX; + var slY = lPosY - posY; + var slZ = lPosZ - posZ; + var magSl = Math.sqrt(slX * slX + slY * slY + slZ * slZ); + var vls = (slX * lVelX + slY * lVelY + slZ * lVelZ) / magSl; + var vss = (slX * velX + slY * velY + slZ * velZ) / magSl; + vls = Math.min(vls, speedOfSound / dopplerFactor); + vss = Math.min(vss, speedOfSound / dopplerFactor); + src.dopplerShift = (speedOfSound - dopplerFactor * vls) / (speedOfSound - dopplerFactor * vss) + } + if (src.dopplerShift !== oldShift) { + AL.updateSourceRate(src) + } + }, + updateSourceRate: function(src) { + if (src.state === 4114) { + AL.cancelPendingSourceAudio(src); + var audioSrc = src.audioQueue[0]; + if (!audioSrc) { + return + } + var duration; + if (src.type === 4136 && src.looping) { + duration = Number.POSITIVE_INFINITY + } else { + duration = (audioSrc.buffer.duration - audioSrc._startOffset) / src.playbackRate + } + audioSrc._duration = duration; + audioSrc.playbackRate.value = src.playbackRate; + AL.scheduleSourceAudio(src) + } + }, + sourceDuration: function(src) { + var length = 0; + for (var i = 0; i < src.bufQueue.length; i++) { + var audioBuf = src.bufQueue[i].audioBuf; + length += audioBuf ? audioBuf.duration : 0 + } + return length + }, + sourceTell: function(src) { + AL.updateSourceTime(src); + var offset = 0; + for (var i = 0; i < src.bufsProcessed; i++) { + offset += src.bufQueue[i].audioBuf.duration + } + offset += src.bufOffset; + return offset + }, + sourceSeek: function(src, offset) { + var playing = src.state == 4114; + if (playing) { + AL.setSourceState(src, 4113) + } + if (src.bufQueue[src.bufsProcessed].audioBuf !== null) { + src.bufsProcessed = 0; + while (offset > src.bufQueue[src.bufsProcessed].audioBuf.duration) { + offset -= src.bufQueue[src.bufsProcessed].audiobuf.duration; + src.bufsProcessed++ + } + src.bufOffset = offset + } + if (playing) { + AL.setSourceState(src, 4114) + } + }, + getGlobalParam: function(funcname, param) { + if (!AL.currentCtx) { + return null + } + switch (param) { + case 49152: + return AL.currentCtx.dopplerFactor; + case 49155: + return AL.currentCtx.speedOfSound; + case 53248: + return AL.currentCtx.distanceModel; + default: + AL.currentCtx.err = 40962; + return null + } + }, + setGlobalParam: function(funcname, param, value) { + if (!AL.currentCtx) { + return + } + switch (param) { + case 49152: + if (!Number.isFinite(value) || value < 0) { + AL.currentCtx.err = 40963; + return + } + AL.currentCtx.dopplerFactor = value; + AL.updateListenerSpace(AL.currentCtx); + break; + case 49155: + if (!Number.isFinite(value) || value <= 0) { + AL.currentCtx.err = 40963; + return + } + AL.currentCtx.speedOfSound = value; + AL.updateListenerSpace(AL.currentCtx); + break; + case 53248: + switch (value) { + case 0: + case 53249: + case 53250: + case 53251: + case 53252: + case 53253: + case 53254: + AL.currentCtx.distanceModel = value; + AL.updateContextGlobal(AL.currentCtx); + break; + default: + AL.currentCtx.err = 40963; + return + } + break; + default: + AL.currentCtx.err = 40962; + return + } + }, + getListenerParam: function(funcname, param) { + if (!AL.currentCtx) { + return null + } + switch (param) { + case 4100: + return AL.currentCtx.listener.position; + case 4102: + return AL.currentCtx.listener.velocity; + case 4111: + return AL.currentCtx.listener.direction.concat(AL.currentCtx.listener.up); + case 4106: + return AL.currentCtx.gain.gain.value; + default: + AL.currentCtx.err = 40962; + return null + } + }, + setListenerParam: function(funcname, param, value) { + if (!AL.currentCtx) { + return + } + if (value === null) { + AL.currentCtx.err = 40962; + return + } + var listener = AL.currentCtx.listener; + switch (param) { + case 4100: + if (!Number.isFinite(value[0]) || !Number.isFinite(value[1]) || !Number.isFinite(value[2])) { + AL.currentCtx.err = 40963; + return + } + listener.position[0] = value[0]; + listener.position[1] = value[1]; + listener.position[2] = value[2]; + AL.updateListenerSpace(AL.currentCtx); + break; + case 4102: + if (!Number.isFinite(value[0]) || !Number.isFinite(value[1]) || !Number.isFinite(value[2])) { + AL.currentCtx.err = 40963; + return + } + listener.velocity[0] = value[0]; + listener.velocity[1] = value[1]; + listener.velocity[2] = value[2]; + AL.updateListenerSpace(AL.currentCtx); + break; + case 4106: + if (!Number.isFinite(value) || value < 0) { + AL.currentCtx.err = 40963; + return + } + AL.currentCtx.gain.gain.value = value; + break; + case 4111: + if (!Number.isFinite(value[0]) || !Number.isFinite(value[1]) || !Number.isFinite(value[2]) || !Number.isFinite(value[3]) || !Number.isFinite(value[4]) || !Number.isFinite(value[5])) { + AL.currentCtx.err = 40963; + return + } + listener.direction[0] = value[0]; + listener.direction[1] = value[1]; + listener.direction[2] = value[2]; + listener.up[0] = value[3]; + listener.up[1] = value[4]; + listener.up[2] = value[5]; + AL.updateListenerSpace(AL.currentCtx); + break; + default: + AL.currentCtx.err = 40962; + return + } + }, + getBufferParam: function(funcname, bufferId, param) { + if (!AL.currentCtx) { + return + } + var buf = AL.buffers[bufferId]; + if (!buf || bufferId === 0) { + AL.currentCtx.err = 40961; + return + } + switch (param) { + case 8193: + return buf.frequency; + case 8194: + return buf.bytesPerSample * 8; + case 8195: + return buf.channels; + case 8196: + return buf.length * buf.bytesPerSample * buf.channels; + case 8213: + if (buf.length === 0) { + return [0, 0] + } else { + return [(buf.audioBuf._loopStart || 0) * buf.frequency, (buf.audioBuf._loopEnd || buf.length) * buf.frequency] + } + default: + AL.currentCtx.err = 40962; + return null + } + }, + setBufferParam: function(funcname, bufferId, param, value) { + if (!AL.currentCtx) { + return + } + var buf = AL.buffers[bufferId]; + if (!buf || bufferId === 0) { + AL.currentCtx.err = 40961; + return + } + if (value === null) { + AL.currentCtx.err = 40962; + return + } + switch (param) { + case 8196: + if (value !== 0) { + AL.currentCtx.err = 40963; + return + } + break; + case 8213: + if (value[0] < 0 || value[0] > buf.length || value[1] < 0 || value[1] > buf.Length || value[0] >= value[1]) { + AL.currentCtx.err = 40963; + return + } + if (buf.refCount > 0) { + AL.currentCtx.err = 40964; + return + } + if (buf.audioBuf) { + buf.audioBuf._loopStart = value[0] / buf.frequency; + buf.audioBuf._loopEnd = value[1] / buf.frequency + } + break; + default: + AL.currentCtx.err = 40962; + return + } + }, + getSourceParam: function(funcname, sourceId, param) { + if (!AL.currentCtx) { + return null + } + var src = AL.currentCtx.sources[sourceId]; + if (!src) { + AL.currentCtx.err = 40961; + return null + } + switch (param) { + case 514: + return src.relative; + case 4097: + return src.coneInnerAngle; + case 4098: + return src.coneOuterAngle; + case 4099: + return src.pitch; + case 4100: + return src.position; + case 4101: + return src.direction; + case 4102: + return src.velocity; + case 4103: + return src.looping; + case 4105: + if (src.type === 4136) { + return src.bufQueue[0].id + } else { + return 0 + } + case 4106: + return src.gain.gain.value; + case 4109: + return src.minGain; + case 4110: + return src.maxGain; + case 4112: + return src.state; + case 4117: + if (src.bufQueue.length === 1 && src.bufQueue[0].id === 0) { + return 0 + } else { + return src.bufQueue.length + } + case 4118: + if (src.bufQueue.length === 1 && src.bufQueue[0].id === 0 || src.looping) { + return 0 + } else { + return src.bufsProcessed + } + case 4128: + return src.refDistance; + case 4129: + return src.rolloffFactor; + case 4130: + return src.coneOuterGain; + case 4131: + return src.maxDistance; + case 4132: + return AL.sourceTell(src); + case 4133: + var offset = AL.sourceTell(src); + if (offset > 0) { + offset *= src.bufQueue[0].frequency + } + return offset; + case 4134: + var offset = AL.sourceTell(src); + if (offset > 0) { + offset *= src.bufQueue[0].frequency * src.bufQueue[0].bytesPerSample + } + return offset; + case 4135: + return src.type; + case 4628: + return src.spatialize; + case 8201: + var length = 0; + var bytesPerFrame = 0; + for (var i = 0; i < src.bufQueue.length; i++) { + length += src.bufQueue[i].length; + if (src.bufQueue[i].id !== 0) { + bytesPerFrame = src.bufQueue[i].bytesPerSample * src.bufQueue[i].channels + } + } + return length * bytesPerFrame; + case 8202: + var length = 0; + for (var i = 0; i < src.bufQueue.length; i++) { + length += src.bufQueue[i].length + } + return length; + case 8203: + return AL.sourceDuration(src); + case 53248: + return src.distanceModel; + default: + AL.currentCtx.err = 40962; + return null + } + }, + setSourceParam: function(funcname, sourceId, param, value) { + if (!AL.currentCtx) { + return + } + var src = AL.currentCtx.sources[sourceId]; + if (!src) { + AL.currentCtx.err = 40961; + return + } + if (value === null) { + AL.currentCtx.err = 40962; + return + } + switch (param) { + case 514: + if (value === 1) { + src.relative = true; + AL.updateSourceSpace(src) + } else if (value === 0) { + src.relative = false; + AL.updateSourceSpace(src) + } else { + AL.currentCtx.err = 40963; + return + } + break; + case 4097: + if (!Number.isFinite(value)) { + AL.currentCtx.err = 40963; + return + } + src.coneInnerAngle = value; + if (src.panner) { + src.panner.coneInnerAngle = value % 360 + } + break; + case 4098: + if (!Number.isFinite(value)) { + AL.currentCtx.err = 40963; + return + } + src.coneOuterAngle = value; + if (src.panner) { + src.panner.coneOuterAngle = value % 360 + } + break; + case 4099: + if (!Number.isFinite(value) || value <= 0) { + AL.currentCtx.err = 40963; + return + } + if (src.pitch === value) { + break + } + src.pitch = value; + AL.updateSourceRate(src); + break; + case 4100: + if (!Number.isFinite(value[0]) || !Number.isFinite(value[1]) || !Number.isFinite(value[2])) { + AL.currentCtx.err = 40963; + return + } + src.position[0] = value[0]; + src.position[1] = value[1]; + src.position[2] = value[2]; + AL.updateSourceSpace(src); + break; + case 4101: + if (!Number.isFinite(value[0]) || !Number.isFinite(value[1]) || !Number.isFinite(value[2])) { + AL.currentCtx.err = 40963; + return + } + src.direction[0] = value[0]; + src.direction[1] = value[1]; + src.direction[2] = value[2]; + AL.updateSourceSpace(src); + break; + case 4102: + if (!Number.isFinite(value[0]) || !Number.isFinite(value[1]) || !Number.isFinite(value[2])) { + AL.currentCtx.err = 40963; + return + } + src.velocity[0] = value[0]; + src.velocity[1] = value[1]; + src.velocity[2] = value[2]; + AL.updateSourceSpace(src); + break; + case 4103: + if (value === 1) { + src.looping = true; + AL.updateSourceTime(src); + if (src.type === 4136 && src.audioQueue.length > 0) { + var audioSrc = src.audioQueue[0]; + audioSrc.loop = true; + audioSrc._duration = Number.POSITIVE_INFINITY + } + } else if (value === 0) { + src.looping = false; + var currentTime = AL.updateSourceTime(src); + if (src.type === 4136 && src.audioQueue.length > 0) { + var audioSrc = src.audioQueue[0]; + audioSrc.loop = false; + audioSrc._duration = src.bufQueue[0].audioBuf.duration / src.playbackRate; + audioSrc._startTime = currentTime - src.bufOffset / src.playbackRate + } + } else { + AL.currentCtx.err = 40963; + return + } + break; + case 4105: + if (src.state === 4114 || src.state === 4115) { + AL.currentCtx.err = 40964; + return + } + if (value === 0) { + for (var i = 0; i < src.bufQueue.length; i++) { + src.bufQueue[i].refCount-- + } + src.bufQueue.length = 1; + src.bufQueue[0] = AL.buffers[0]; + src.bufsProcessed = 0; + src.type = 4144 + } else { + var buf = AL.buffers[value]; + if (!buf) { + AL.currentCtx.err = 40963; + return + } + for (var i = 0; i < src.bufQueue.length; i++) { + src.bufQueue[i].refCount-- + } + src.bufQueue.length = 0; + buf.refCount++; + src.bufQueue = [buf]; + src.bufsProcessed = 0; + src.type = 4136 + } + AL.initSourcePanner(src); + AL.scheduleSourceAudio(src); + break; + case 4106: + if (!Number.isFinite(value) || value < 0) { + AL.currentCtx.err = 40963; + return + } + src.gain.gain.value = value; + break; + case 4109: + if (!Number.isFinite(value) || value < 0 || value > Math.min(src.maxGain, 1)) { + AL.currentCtx.err = 40963; + return + } + src.minGain = value; + break; + case 4110: + if (!Number.isFinite(value) || value < Math.max(0, src.minGain) || value > 1) { + AL.currentCtx.err = 40963; + return + } + src.maxGain = value; + break; + case 4128: + if (!Number.isFinite(value) || value < 0) { + AL.currentCtx.err = 40963; + return + } + src.refDistance = value; + if (src.panner) { + src.panner.refDistance = value + } + break; + case 4129: + if (!Number.isFinite(value) || value < 0) { + AL.currentCtx.err = 40963; + return + } + src.rolloffFactor = value; + if (src.panner) { + src.panner.rolloffFactor = value + } + break; + case 4130: + if (!Number.isFinite(value) || value < 0 || value > 1) { + AL.currentCtx.err = 40963; + return + } + src.coneOuterGain = value; + if (src.panner) { + src.panner.coneOuterGain = value + } + break; + case 4131: + if (!Number.isFinite(value) || value < 0) { + AL.currentCtx.err = 40963; + return + } + src.maxDistance = value; + if (src.panner) { + src.panner.maxDistance = value + } + break; + case 4132: + if (value < 0 || value > AL.sourceDuration(src)) { + AL.currentCtx.err = 40963; + return + } + AL.sourceSeek(src, value); + break; + case 4133: + var srcLen = AL.sourceDuration(src); + if (srcLen > 0) { + var frequency; + for (var bufId in src.bufQueue) { + if (bufId) { + frequency = src.bufQueue[bufId].frequency; + break + } + } + value /= frequency + } + if (value < 0 || value > srcLen) { + AL.currentCtx.err = 40963; + return + } + AL.sourceSeek(src, value); + break; + case 4134: + var srcLen = AL.sourceDuration(src); + if (srcLen > 0) { + var bytesPerSec; + for (var bufId in src.bufQueue) { + if (bufId) { + var buf = src.bufQueue[bufId]; + bytesPerSec = buf.frequency * buf.bytesPerSample * buf.channels; + break + } + } + value /= bytesPerSec + } + if (value < 0 || value > srcLen) { + AL.currentCtx.err = 40963; + return + } + AL.sourceSeek(src, value); + break; + case 4628: + if (value !== 0 && value !== 1 && value !== 2) { + AL.currentCtx.err = 40963; + return + } + src.spatialize = value; + AL.initSourcePanner(src); + break; + case 8201: + case 8202: + case 8203: + AL.currentCtx.err = 40964; + break; + case 53248: + switch (value) { + case 0: + case 53249: + case 53250: + case 53251: + case 53252: + case 53253: + case 53254: + src.distanceModel = value; + if (AL.currentCtx.sourceDistanceModel) { + AL.updateContextGlobal(AL.currentCtx) + } + break; + default: + AL.currentCtx.err = 40963; + return + } + break; + default: + AL.currentCtx.err = 40962; + return + } + }, + captures: {}, + sharedCaptureAudioCtx: null, + requireValidCaptureDevice: function(deviceId, funcname) { + if (deviceId === 0) { + AL.alcErr = 40961; + return null + } + var c = AL.captures[deviceId]; + if (!c) { + AL.alcErr = 40961; + return null + } + var err = c.mediaStreamError; + if (err) { + AL.alcErr = 40961; + return null + } + return c + } + }; + + function _alBufferData(bufferId, format, pData, size, freq) { + if (!AL.currentCtx) { + return + } + var buf = AL.buffers[bufferId]; + if (!buf) { + AL.currentCtx.err = 40963; + return + } + if (freq <= 0) { + AL.currentCtx.err = 40963; + return + } + var audioBuf = null; + try { + switch (format) { + case 4352: + if (size > 0) { + audioBuf = AL.currentCtx.audioCtx.createBuffer(1, size, freq); + var channel0 = audioBuf.getChannelData(0); + for (var i = 0; i < size; ++i) { + channel0[i] = HEAPU8[pData++] * .0078125 - 1 + } + } + buf.bytesPerSample = 1; + buf.channels = 1; + buf.length = size; + break; + case 4353: + if (size > 0) { + audioBuf = AL.currentCtx.audioCtx.createBuffer(1, size >> 1, freq); + var channel0 = audioBuf.getChannelData(0); + pData >>= 1; + for (var i = 0; i < size >> 1; ++i) { + channel0[i] = HEAP16[pData++] * 30517578125e-15 + } + } + buf.bytesPerSample = 2; + buf.channels = 1; + buf.length = size >> 1; + break; + case 4354: + if (size > 0) { + audioBuf = AL.currentCtx.audioCtx.createBuffer(2, size >> 1, freq); + var channel0 = audioBuf.getChannelData(0); + var channel1 = audioBuf.getChannelData(1); + for (var i = 0; i < size >> 1; ++i) { + channel0[i] = HEAPU8[pData++] * .0078125 - 1; + channel1[i] = HEAPU8[pData++] * .0078125 - 1 + } + } + buf.bytesPerSample = 1; + buf.channels = 2; + buf.length = size >> 1; + break; + case 4355: + if (size > 0) { + audioBuf = AL.currentCtx.audioCtx.createBuffer(2, size >> 2, freq); + var channel0 = audioBuf.getChannelData(0); + var channel1 = audioBuf.getChannelData(1); + pData >>= 1; + for (var i = 0; i < size >> 2; ++i) { + channel0[i] = HEAP16[pData++] * 30517578125e-15; + channel1[i] = HEAP16[pData++] * 30517578125e-15 + } + } + buf.bytesPerSample = 2; + buf.channels = 2; + buf.length = size >> 2; + break; + case 65552: + if (size > 0) { + audioBuf = AL.currentCtx.audioCtx.createBuffer(1, size >> 2, freq); + var channel0 = audioBuf.getChannelData(0); + pData >>= 2; + for (var i = 0; i < size >> 2; ++i) { + channel0[i] = HEAPF32[pData++] + } + } + buf.bytesPerSample = 4; + buf.channels = 1; + buf.length = size >> 2; + break; + case 65553: + if (size > 0) { + audioBuf = AL.currentCtx.audioCtx.createBuffer(2, size >> 3, freq); + var channel0 = audioBuf.getChannelData(0); + var channel1 = audioBuf.getChannelData(1); + pData >>= 2; + for (var i = 0; i < size >> 3; ++i) { + channel0[i] = HEAPF32[pData++]; + channel1[i] = HEAPF32[pData++] + } + } + buf.bytesPerSample = 4; + buf.channels = 2; + buf.length = size >> 3; + break; + default: + AL.currentCtx.err = 40963; + return + } + buf.frequency = freq; + buf.audioBuf = audioBuf + } catch (e) { + AL.currentCtx.err = 40963; + return + } + } + + function _alDeleteBuffers(count, pBufferIds) { + if (!AL.currentCtx) { + return + } + for (var i = 0; i < count; ++i) { + var bufId = HEAP32[pBufferIds + i * 4 >> 2]; + if (bufId === 0) { + continue + } + if (!AL.buffers[bufId]) { + AL.currentCtx.err = 40961; + return + } + if (AL.buffers[bufId].refCount) { + AL.currentCtx.err = 40964; + return + } + } + for (var i = 0; i < count; ++i) { + var bufId = HEAP32[pBufferIds + i * 4 >> 2]; + if (bufId === 0) { + continue + } + AL.deviceRefCounts[AL.buffers[bufId].deviceId]--; + delete AL.buffers[bufId]; + AL.freeIds.push(bufId) + } + } + + function _alSourcei(sourceId, param, value) { + switch (param) { + case 514: + case 4097: + case 4098: + case 4103: + case 4105: + case 4128: + case 4129: + case 4131: + case 4132: + case 4133: + case 4134: + case 4628: + case 8201: + case 8202: + case 53248: + AL.setSourceParam("alSourcei", sourceId, param, value); + break; + default: + AL.setSourceParam("alSourcei", sourceId, param, null); + break + } + } + + function _alDeleteSources(count, pSourceIds) { + if (!AL.currentCtx) { + return + } + for (var i = 0; i < count; ++i) { + var srcId = HEAP32[pSourceIds + i * 4 >> 2]; + if (!AL.currentCtx.sources[srcId]) { + AL.currentCtx.err = 40961; + return + } + } + for (var i = 0; i < count; ++i) { + var srcId = HEAP32[pSourceIds + i * 4 >> 2]; + AL.setSourceState(AL.currentCtx.sources[srcId], 4116); + _alSourcei(srcId, 4105, 0); + delete AL.currentCtx.sources[srcId]; + AL.freeIds.push(srcId) + } + } + + function _alGenBuffers(count, pBufferIds) { + if (!AL.currentCtx) { + return + } + for (var i = 0; i < count; ++i) { + var buf = { + deviceId: AL.currentCtx.deviceId, + id: AL.newId(), + refCount: 0, + audioBuf: null, + frequency: 0, + bytesPerSample: 2, + channels: 1, + length: 0 + }; + AL.deviceRefCounts[buf.deviceId]++; + AL.buffers[buf.id] = buf; + HEAP32[pBufferIds + i * 4 >> 2] = buf.id + } + } + + function _alGenSources(count, pSourceIds) { + if (!AL.currentCtx) { + return + } + for (var i = 0; i < count; ++i) { + var gain = AL.currentCtx.audioCtx.createGain(); + gain.connect(AL.currentCtx.gain); + if (window.proc_gain) proc_gain(gain); + var src = { + context: AL.currentCtx, + id: AL.newId(), + type: 4144, + state: 4113, + bufQueue: [AL.buffers[0]], + audioQueue: [], + looping: false, + pitch: 1, + dopplerShift: 1, + gain: gain, + minGain: 0, + maxGain: 1, + panner: null, + bufsProcessed: 0, + bufStartTime: Number.NEGATIVE_INFINITY, + bufOffset: 0, + relative: false, + refDistance: 1, + maxDistance: 3.40282e38, + rolloffFactor: 1, + position: [0, 0, 0], + velocity: [0, 0, 0], + direction: [0, 0, 0], + coneOuterGain: 0, + coneInnerAngle: 360, + coneOuterAngle: 360, + distanceModel: 53250, + spatialize: 2, + get playbackRate() { + return this.pitch * this.dopplerShift + } + }; + AL.currentCtx.sources[src.id] = src; + HEAP32[pSourceIds + i * 4 >> 2] = src.id + } + } + + function _alGetSourcei(sourceId, param, pValue) { + var val = AL.getSourceParam("alGetSourcei", sourceId, param); + if (val === null) { + return + } + if (!pValue) { + AL.currentCtx.err = 40963; + return + } + switch (param) { + case 514: + case 4097: + case 4098: + case 4103: + case 4105: + case 4112: + case 4117: + case 4118: + case 4128: + case 4129: + case 4131: + case 4132: + case 4133: + case 4134: + case 4135: + case 4628: + case 8201: + case 8202: + case 53248: + HEAP32[pValue >> 2] = val; + break; + default: + AL.currentCtx.err = 40962; + return + } + } + + function _alSource3i(sourceId, param, value0, value1, value2) { + switch (param) { + case 4100: + case 4101: + case 4102: + AL.paramArray[0] = value0; + AL.paramArray[1] = value1; + AL.paramArray[2] = value2; + AL.setSourceParam("alSource3i", sourceId, param, AL.paramArray); + break; + default: + AL.setSourceParam("alSource3i", sourceId, param, null); + break + } + } + + function _alSourcePlay(sourceId) { + if (!AL.currentCtx) { + return + } + var src = AL.currentCtx.sources[sourceId]; + if (!src) { + AL.currentCtx.err = 40961; + return + } + AL.setSourceState(src, 4114) + } + + function _alSourceQueueBuffers(sourceId, count, pBufferIds) { + if (!AL.currentCtx) { + return + } + var src = AL.currentCtx.sources[sourceId]; + if (!src) { + AL.currentCtx.err = 40961; + return + } + if (src.type === 4136) { + AL.currentCtx.err = 40964; + return + } + if (count === 0) { + return + } + var templateBuf = AL.buffers[0]; + for (var i = 0; i < src.bufQueue.length; i++) { + if (src.bufQueue[i].id !== 0) { + templateBuf = src.bufQueue[i]; + break + } + } + for (var i = 0; i < count; ++i) { + var bufId = HEAP32[pBufferIds + i * 4 >> 2]; + var buf = AL.buffers[bufId]; + if (!buf) { + AL.currentCtx.err = 40961; + return + } + if (templateBuf.id !== 0 && (buf.frequency !== templateBuf.frequency || buf.bytesPerSample !== templateBuf.bytesPerSample || buf.channels !== templateBuf.channels)) { + AL.currentCtx.err = 40964 + } + } + if (src.bufQueue.length === 1 && src.bufQueue[0].id === 0) { + src.bufQueue.length = 0 + } + src.type = 4137; + for (var i = 0; i < count; ++i) { + var bufId = HEAP32[pBufferIds + i * 4 >> 2]; + var buf = AL.buffers[bufId]; + buf.refCount++; + src.bufQueue.push(buf) + } + if (src.looping) { + AL.cancelPendingSourceAudio(src) + } + AL.initSourcePanner(src); + AL.scheduleSourceAudio(src) + } + + function _alSourceStop(sourceId) { + if (!AL.currentCtx) { + return + } + var src = AL.currentCtx.sources[sourceId]; + if (!src) { + AL.currentCtx.err = 40961; + return + } + AL.setSourceState(src, 4116) + } + + function _alSourceUnqueueBuffers(sourceId, count, pBufferIds) { + if (!AL.currentCtx) { + return + } + var src = AL.currentCtx.sources[sourceId]; + if (!src) { + AL.currentCtx.err = 40961; + return + } + if (count > (src.bufQueue.length === 1 && src.bufQueue[0].id === 0 ? 0 : src.bufsProcessed)) { + AL.currentCtx.err = 40963; + return + } + if (count === 0) { + return + } + for (var i = 0; i < count; i++) { + var buf = src.bufQueue.shift(); + buf.refCount--; + HEAP32[pBufferIds + i * 4 >> 2] = buf.id; + src.bufsProcessed-- + } + if (src.bufQueue.length === 0) { + src.bufQueue.push(AL.buffers[0]) + } + AL.initSourcePanner(src); + AL.scheduleSourceAudio(src) + } + + function _alSourcef(sourceId, param, value) { + switch (param) { + case 4097: + case 4098: + case 4099: + case 4106: + case 4109: + case 4110: + case 4128: + case 4129: + case 4130: + case 4131: + case 4132: + case 4133: + case 4134: + case 8203: + AL.setSourceParam("alSourcef", sourceId, param, value); + break; + default: + AL.setSourceParam("alSourcef", sourceId, param, null); + break + } + } + + function _alcCloseDevice(deviceId) { + if (!(deviceId in AL.deviceRefCounts) || AL.deviceRefCounts[deviceId] > 0) { + return 0 + } + delete AL.deviceRefCounts[deviceId]; + AL.freeIds.push(deviceId); + return 1 + } + + function _alcCreateContext(deviceId, pAttrList) { + if (!(deviceId in AL.deviceRefCounts)) { + AL.alcErr = 40961; + return 0 + } + var options = null; + var attrs = []; + var hrtf = null; + pAttrList >>= 2; + if (pAttrList) { + var attr = 0; + var val = 0; + while (true) { + attr = HEAP32[pAttrList++]; + attrs.push(attr); + if (attr === 0) { + break + } + val = HEAP32[pAttrList++]; + attrs.push(val); + switch (attr) { + case 4103: + if (!options) { + options = {} + } + options.sampleRate = val; + break; + case 4112: + case 4113: + break; + case 6546: + switch (val) { + case 0: + hrtf = false; + break; + case 1: + hrtf = true; + break; + case 2: + break; + default: + AL.alcErr = 40964; + return 0 + } + break; + case 6550: + if (val !== 0) { + AL.alcErr = 40964; + return 0 + } + break; + default: + AL.alcErr = 40964; + return 0 + } + } + } + var AudioContext = window.AudioContext || window.webkitAudioContext; + var ac = null; + try { + if (options) { + ac = new AudioContext(options) + } else { + ac = new AudioContext + } + } catch (e) { + if (e.name === "NotSupportedError") { + AL.alcErr = 40964 + } else { + AL.alcErr = 40961 + } + return 0 + } + if (typeof ac.createGain === "undefined") { + ac.createGain = ac.createGainNode + } + var gain = ac.createGain(); + gain.connect(ac.destination); + var ctx = { + deviceId: deviceId, + id: AL.newId(), + attrs: attrs, + audioCtx: ac, + listener: { + position: [0, 0, 0], + velocity: [0, 0, 0], + direction: [0, 0, 0], + up: [0, 0, 0] + }, + sources: [], + interval: setInterval(function() { + AL.scheduleContextAudio(ctx) + }, AL.QUEUE_INTERVAL), + gain: gain, + distanceModel: 53250, + speedOfSound: 343.3, + dopplerFactor: 1, + sourceDistanceModel: false, + hrtf: hrtf || false, + _err: 0, + get err() { + return this._err + }, + set err(val) { + if (this._err === 0 || val === 0) { + this._err = val + } + } + }; + AL.deviceRefCounts[deviceId]++; + AL.contexts[ctx.id] = ctx; + if (hrtf !== null) { + for (var ctxId in AL.contexts) { + var c = AL.contexts[ctxId]; + if (c.deviceId === deviceId) { + c.hrtf = hrtf; + AL.updateContextGlobal(c) + } + } + } + return ctx.id + } + + function _alcDestroyContext(contextId) { + var ctx = AL.contexts[contextId]; + if (AL.currentCtx === ctx) { + AL.alcErr = 40962; + return + } + if (AL.contexts[contextId].interval) { + clearInterval(AL.contexts[contextId].interval) + } + AL.deviceRefCounts[ctx.deviceId]--; + delete AL.contexts[contextId]; + AL.freeIds.push(contextId) + } + + function _alcGetIntegerv(deviceId, param, size, pValues) { + if (size === 0 || !pValues) { + return + } + switch (param) { + case 4096: + HEAP32[pValues >> 2] = 1; + break; + case 4097: + HEAP32[pValues >> 2] = 1; + break; + case 4098: + if (!(deviceId in AL.deviceRefCounts)) { + AL.alcErr = 40961; + return + } + if (!AL.currentCtx) { + AL.alcErr = 40962; + return + } + HEAP32[pValues >> 2] = AL.currentCtx.attrs.length; + break; + case 4099: + if (!(deviceId in AL.deviceRefCounts)) { + AL.alcErr = 40961; + return + } + if (!AL.currentCtx) { + AL.alcErr = 40962; + return + } + for (var i = 0; i < AL.currentCtx.attrs.length; i++) { + HEAP32[pValues + i * 4 >> 2] = AL.currentCtx.attrs[i] + } + break; + case 4103: + if (!(deviceId in AL.deviceRefCounts)) { + AL.alcErr = 40961; + return + } + if (!AL.currentCtx) { + AL.alcErr = 40962; + return + } + HEAP32[pValues >> 2] = AL.currentCtx.audioCtx.sampleRate; + break; + case 4112: + case 4113: + if (!(deviceId in AL.deviceRefCounts)) { + AL.alcErr = 40961; + return + } + if (!AL.currentCtx) { + AL.alcErr = 40962; + return + } + HEAP32[pValues >> 2] = 2147483647; + break; + case 6546: + case 6547: + if (!(deviceId in AL.deviceRefCounts)) { + AL.alcErr = 40961; + return + } + var hrtfStatus = 0; + for (var ctxId in AL.contexts) { + var ctx = AL.contexts[ctxId]; + if (ctx.deviceId === deviceId) { + hrtfStatus = ctx.hrtf ? 1 : 0 + } + } + HEAP32[pValues >> 2] = hrtfStatus; + break; + case 6548: + if (!(deviceId in AL.deviceRefCounts)) { + AL.alcErr = 40961; + return + } + HEAP32[pValues >> 2] = 1; + break; + case 131075: + if (!(deviceId in AL.deviceRefCounts)) { + AL.alcErr = 40961; + return + } + if (!AL.currentCtx) { + AL.alcErr = 40962; + return + } + HEAP32[pValues >> 2] = 1; + case 786: + var c = AL.requireValidCaptureDevice(deviceId, "alcGetIntegerv"); + if (!c) { + return + } + var n = c.capturedFrameCount; + var dstfreq = c.requestedSampleRate; + var srcfreq = c.audioCtx.sampleRate; + var nsamples = Math.floor(n * (dstfreq / srcfreq)); + HEAP32[pValues >> 2] = nsamples; + break; + default: + AL.alcErr = 40963; + return + } + } + + function _alcMakeContextCurrent(contextId) { + if (contextId === 0) { + AL.currentCtx = null; + return 0 + } else { + AL.currentCtx = AL.contexts[contextId]; + return 1 + } + } + + function _alcOpenDevice(pDeviceName) { + if (pDeviceName) { + var name = UTF8ToString(pDeviceName); + if (name !== AL.DEVICE_NAME) { + return 0 + } + } + if (typeof AudioContext !== "undefined" || typeof webkitAudioContext !== "undefined") { + var deviceId = AL.newId(); + AL.deviceRefCounts[deviceId] = 0; + return deviceId + } else { + return 0 + } + } + var _emscripten_get_now_is_monotonic = true; + + function _clock_gettime(clk_id, tp) { + var now; + if (clk_id === 0) { + now = Date.now() + } else if ((clk_id === 1 || clk_id === 4) && _emscripten_get_now_is_monotonic) { + now = _emscripten_get_now() + } else { + setErrNo(28); + return -1 + } + HEAP32[tp >> 2] = now / 1e3 | 0; + HEAP32[tp + 4 >> 2] = now % 1e3 * 1e3 * 1e3 | 0; + return 0 + } + + function _dlclose(handle) { + abort("To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking") + } + var EGL = { + errorCode: 12288, + defaultDisplayInitialized: false, + currentContext: 0, + currentReadSurface: 0, + currentDrawSurface: 0, + contextAttributes: { + alpha: false, + depth: false, + stencil: false, + antialias: false + }, + stringCache: {}, + setErrorCode: function(code) { + EGL.errorCode = code + }, + chooseConfig: function(display, attribList, config, config_size, numConfigs) { + if (display != 62e3) { + EGL.setErrorCode(12296); + return 0 + } + if (attribList) { + for (;;) { + var param = HEAP32[attribList >> 2]; + if (param == 12321) { + var alphaSize = HEAP32[attribList + 4 >> 2]; + EGL.contextAttributes.alpha = alphaSize > 0 + } else if (param == 12325) { + var depthSize = HEAP32[attribList + 4 >> 2]; + EGL.contextAttributes.depth = depthSize > 0 + } else if (param == 12326) { + var stencilSize = HEAP32[attribList + 4 >> 2]; + EGL.contextAttributes.stencil = stencilSize > 0 + } else if (param == 12337) { + var samples = HEAP32[attribList + 4 >> 2]; + EGL.contextAttributes.antialias = samples > 0 + } else if (param == 12338) { + var samples = HEAP32[attribList + 4 >> 2]; + EGL.contextAttributes.antialias = samples == 1 + } else if (param == 12544) { + var requestedPriority = HEAP32[attribList + 4 >> 2]; + EGL.contextAttributes.lowLatency = requestedPriority != 12547 + } else if (param == 12344) { + break + } + attribList += 8 + } + } + if ((!config || !config_size) && !numConfigs) { + EGL.setErrorCode(12300); + return 0 + } + if (numConfigs) { + HEAP32[numConfigs >> 2] = 1 + } + if (config && config_size > 0) { + HEAP32[config >> 2] = 62002 + } + EGL.setErrorCode(12288); + return 1 + } + }; + + function _eglBindAPI(api) { + if (api == 12448) { + EGL.setErrorCode(12288); + return 1 + } else { + EGL.setErrorCode(12300); + return 0 + } + } + + function _eglChooseConfig(display, attrib_list, configs, config_size, numConfigs) { + return EGL.chooseConfig(display, attrib_list, configs, config_size, numConfigs) + } + + function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx) { + return !!(ctx.dibvbi = ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance")) + } + var GL = { + counter: 1, + lastError: 0, + buffers: [], + mappedBuffers: {}, + programs: [], + framebuffers: [], + renderbuffers: [], + textures: [], + uniforms: [], + shaders: [], + vaos: [], + contexts: [], + currentContext: null, + offscreenCanvases: {}, + timerQueriesEXT: [], + queries: [], + samplers: [], + transformFeedbacks: [], + syncs: [], + programInfos: {}, + stringCache: {}, + stringiCache: {}, + unpackAlignment: 4, + init: function() { + var miniTempFloatBuffer = new Float32Array(GL.MINI_TEMP_BUFFER_SIZE); + for (var i = 0; i < GL.MINI_TEMP_BUFFER_SIZE; i++) { + GL.miniTempBufferFloatViews[i] = miniTempFloatBuffer.subarray(0, i + 1) + } + var miniTempIntBuffer = new Int32Array(GL.MINI_TEMP_BUFFER_SIZE); + for (var i = 0; i < GL.MINI_TEMP_BUFFER_SIZE; i++) { + GL.miniTempBufferIntViews[i] = miniTempIntBuffer.subarray(0, i + 1) + } + }, + recordError: function recordError(errorCode) { + if (!GL.lastError) { + GL.lastError = errorCode + } + }, + getNewId: function(table) { + var ret = GL.counter++; + for (var i = table.length; i < ret; i++) { + table[i] = null + } + return ret + }, + MINI_TEMP_BUFFER_SIZE: 256, + miniTempBufferFloatViews: [0], + miniTempBufferIntViews: [0], + getSource: function(shader, count, string, length) { + var source = ""; + for (var i = 0; i < count; ++i) { + var len = length ? HEAP32[length + i * 4 >> 2] : -1; + source += UTF8ToString(HEAP32[string + i * 4 >> 2], len < 0 ? undefined : len) + } + return source + }, + createContext: function(canvas, webGLContextAttributes) { + var ctx = webGLContextAttributes.majorVersion > 1 ? canvas.getContext("webgl2", webGLContextAttributes) : canvas.getContext("webgl", webGLContextAttributes); + if (!ctx) return 0; + var handle = GL.registerContext(ctx, webGLContextAttributes); + return handle + }, + registerContext: function(ctx, webGLContextAttributes) { + var handle = GL.getNewId(GL.contexts); + var context = { + handle: handle, + attributes: webGLContextAttributes, + version: webGLContextAttributes.majorVersion, + GLctx: ctx + }; + if (ctx.canvas) ctx.canvas.GLctxObject = context; + GL.contexts[handle] = context; + if (typeof webGLContextAttributes.enableExtensionsByDefault === "undefined" || webGLContextAttributes.enableExtensionsByDefault) { + GL.initExtensions(context) + } + return handle + }, + makeContextCurrent: function(contextHandle) { + GL.currentContext = GL.contexts[contextHandle]; + Module.ctx = GLctx = GL.currentContext && GL.currentContext.GLctx; + return !(contextHandle && !GLctx) + }, + getContext: function(contextHandle) { + return GL.contexts[contextHandle] + }, + deleteContext: function(contextHandle) { + if (GL.currentContext === GL.contexts[contextHandle]) GL.currentContext = null; + if (typeof JSEvents === "object") JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas); + if (GL.contexts[contextHandle] && GL.contexts[contextHandle].GLctx.canvas) GL.contexts[contextHandle].GLctx.canvas.GLctxObject = undefined; + GL.contexts[contextHandle] = null + }, + initExtensions: function(context) { + if (!context) context = GL.currentContext; + if (context.initExtensionsDone) return; + context.initExtensionsDone = true; + var GLctx = context.GLctx; + __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx); + GLctx.disjointTimerQueryExt = GLctx.getExtension("EXT_disjoint_timer_query"); + var automaticallyEnabledExtensions = ["OES_texture_float", "OES_texture_half_float", "OES_standard_derivatives", "OES_vertex_array_object", "WEBGL_compressed_texture_s3tc", "WEBGL_depth_texture", "OES_element_index_uint", "EXT_texture_filter_anisotropic", "EXT_frag_depth", "WEBGL_draw_buffers", "ANGLE_instanced_arrays", "OES_texture_float_linear", "OES_texture_half_float_linear", "EXT_blend_minmax", "EXT_shader_texture_lod", "EXT_texture_norm16", "WEBGL_compressed_texture_pvrtc", "EXT_color_buffer_half_float", "WEBGL_color_buffer_float", "EXT_sRGB", "WEBGL_compressed_texture_etc1", "EXT_disjoint_timer_query", "WEBGL_compressed_texture_etc", "WEBGL_compressed_texture_astc", "EXT_color_buffer_float", "WEBGL_compressed_texture_s3tc_srgb", "EXT_disjoint_timer_query_webgl2", "WEBKIT_WEBGL_compressed_texture_pvrtc"]; + var exts = GLctx.getSupportedExtensions() || []; + exts.forEach(function(ext) { + if (automaticallyEnabledExtensions.indexOf(ext) != -1) { + GLctx.getExtension(ext) + } + }) + }, + populateUniformTable: function(program) { + var p = GL.programs[program]; + var ptable = GL.programInfos[program] = { + uniforms: {}, + maxUniformLength: 0, + maxAttributeLength: -1, + maxUniformBlockNameLength: -1 + }; + var utable = ptable.uniforms; + var numUniforms = GLctx.getProgramParameter(p, 35718); + for (var i = 0; i < numUniforms; ++i) { + var u = GLctx.getActiveUniform(p, i); + var name = u.name; + ptable.maxUniformLength = Math.max(ptable.maxUniformLength, name.length + 1); + if (name.slice(-1) == "]") { + name = name.slice(0, name.lastIndexOf("[")) + } + var loc = GLctx.getUniformLocation(p, name); + if (loc) { + var id = GL.getNewId(GL.uniforms); + utable[name] = [u.size, id]; + GL.uniforms[id] = loc; + for (var j = 1; j < u.size; ++j) { + var n = name + "[" + j + "]"; + loc = GLctx.getUniformLocation(p, n); + id = GL.getNewId(GL.uniforms); + GL.uniforms[id] = loc + } + } + } + } + }; + + function _eglCreateContext(display, config, hmm, contextAttribs) { + if (display != 62e3) { + EGL.setErrorCode(12296); + return 0 + } + var glesContextVersion = 1; + for (;;) { + var param = HEAP32[contextAttribs >> 2]; + if (param == 12440) { + glesContextVersion = HEAP32[contextAttribs + 4 >> 2] + } else if (param == 12344) { + break + } else { + EGL.setErrorCode(12292); + return 0 + } + contextAttribs += 8 + } + if (glesContextVersion < 2 || glesContextVersion > 3) { + EGL.setErrorCode(12293); + return 0 + } + EGL.contextAttributes.majorVersion = glesContextVersion - 1; + EGL.contextAttributes.minorVersion = 0; + EGL.context = GL.createContext(Module["canvas"], EGL.contextAttributes); + if (EGL.context != 0) { + EGL.setErrorCode(12288); + GL.makeContextCurrent(EGL.context); + Module.useWebGL = true; + Browser.moduleContextCreatedCallbacks.forEach(function(callback) { + callback() + }); + GL.makeContextCurrent(null); + return 62004 + } else { + EGL.setErrorCode(12297); + return 0 + } + } + + function _eglCreateWindowSurface(display, config, win, attrib_list) { + if (display != 62e3) { + EGL.setErrorCode(12296); + return 0 + } + if (config != 62002) { + EGL.setErrorCode(12293); + return 0 + } + EGL.setErrorCode(12288); + return 62006 + } + + function _eglDestroyContext(display, context) { + if (display != 62e3) { + EGL.setErrorCode(12296); + return 0 + } + if (context != 62004) { + EGL.setErrorCode(12294); + return 0 + } + GL.deleteContext(EGL.context); + EGL.setErrorCode(12288); + if (EGL.currentContext == context) { + EGL.currentContext = 0 + } + return 1 + } + + function _eglDestroySurface(display, surface) { + if (display != 62e3) { + EGL.setErrorCode(12296); + return 0 + } + if (surface != 62006) { + EGL.setErrorCode(12301); + return 1 + } + if (EGL.currentReadSurface == surface) { + EGL.currentReadSurface = 0 + } + if (EGL.currentDrawSurface == surface) { + EGL.currentDrawSurface = 0 + } + EGL.setErrorCode(12288); + return 1 + } + + function _eglGetConfigAttrib(display, config, attribute, value) { + if (display != 62e3) { + EGL.setErrorCode(12296); + return 0 + } + if (config != 62002) { + EGL.setErrorCode(12293); + return 0 + } + if (!value) { + EGL.setErrorCode(12300); + return 0 + } + EGL.setErrorCode(12288); + switch (attribute) { + case 12320: + HEAP32[value >> 2] = EGL.contextAttributes.alpha ? 32 : 24; + return 1; + case 12321: + HEAP32[value >> 2] = EGL.contextAttributes.alpha ? 8 : 0; + return 1; + case 12322: + HEAP32[value >> 2] = 8; + return 1; + case 12323: + HEAP32[value >> 2] = 8; + return 1; + case 12324: + HEAP32[value >> 2] = 8; + return 1; + case 12325: + HEAP32[value >> 2] = EGL.contextAttributes.depth ? 24 : 0; + return 1; + case 12326: + HEAP32[value >> 2] = EGL.contextAttributes.stencil ? 8 : 0; + return 1; + case 12327: + HEAP32[value >> 2] = 12344; + return 1; + case 12328: + HEAP32[value >> 2] = 62002; + return 1; + case 12329: + HEAP32[value >> 2] = 0; + return 1; + case 12330: + HEAP32[value >> 2] = 4096; + return 1; + case 12331: + HEAP32[value >> 2] = 16777216; + return 1; + case 12332: + HEAP32[value >> 2] = 4096; + return 1; + case 12333: + HEAP32[value >> 2] = 0; + return 1; + case 12334: + HEAP32[value >> 2] = 0; + return 1; + case 12335: + HEAP32[value >> 2] = 12344; + return 1; + case 12337: + HEAP32[value >> 2] = EGL.contextAttributes.antialias ? 4 : 0; + return 1; + case 12338: + HEAP32[value >> 2] = EGL.contextAttributes.antialias ? 1 : 0; + return 1; + case 12339: + HEAP32[value >> 2] = 4; + return 1; + case 12340: + HEAP32[value >> 2] = 12344; + return 1; + case 12341: + case 12342: + case 12343: + HEAP32[value >> 2] = -1; + return 1; + case 12345: + case 12346: + HEAP32[value >> 2] = 0; + return 1; + case 12347: + HEAP32[value >> 2] = 0; + return 1; + case 12348: + HEAP32[value >> 2] = 1; + return 1; + case 12349: + case 12350: + HEAP32[value >> 2] = 0; + return 1; + case 12351: + HEAP32[value >> 2] = 12430; + return 1; + case 12352: + HEAP32[value >> 2] = 4; + return 1; + case 12354: + HEAP32[value >> 2] = 0; + return 1; + default: + EGL.setErrorCode(12292); + return 0 + } + } + + function _eglGetDisplay(nativeDisplayType) { + EGL.setErrorCode(12288); + return 62e3 + } + + function _eglGetError() { + return EGL.errorCode + } + + function _eglGetProcAddress(name_) { + return _emscripten_GetProcAddress(name_) + } + + function _eglInitialize(display, majorVersion, minorVersion) { + if (display == 62e3) { + if (majorVersion) { + HEAP32[majorVersion >> 2] = 1 + } + if (minorVersion) { + HEAP32[minorVersion >> 2] = 4 + } + EGL.defaultDisplayInitialized = true; + EGL.setErrorCode(12288); + return 1 + } else { + EGL.setErrorCode(12296); + return 0 + } + } + + function _eglMakeCurrent(display, draw, read, context) { + if (display != 62e3) { + EGL.setErrorCode(12296); + return 0 + } + if (context != 0 && context != 62004) { + EGL.setErrorCode(12294); + return 0 + } + if (read != 0 && read != 62006 || draw != 0 && draw != 62006) { + EGL.setErrorCode(12301); + return 0 + } + GL.makeContextCurrent(context ? EGL.context : null); + EGL.currentContext = context; + EGL.currentDrawSurface = draw; + EGL.currentReadSurface = read; + EGL.setErrorCode(12288); + return 1 + } + + function _eglQueryString(display, name) { + if (display != 62e3) { + EGL.setErrorCode(12296); + return 0 + } + EGL.setErrorCode(12288); + if (EGL.stringCache[name]) return EGL.stringCache[name]; + var ret; + switch (name) { + case 12371: + ret = allocateUTF8("Emscripten"); + break; + case 12372: + ret = allocateUTF8("1.4 Emscripten EGL"); + break; + case 12373: + ret = allocateUTF8(""); + break; + case 12429: + ret = allocateUTF8("OpenGL_ES"); + break; + default: + EGL.setErrorCode(12300); + return 0 + } + EGL.stringCache[name] = ret; + return ret + } + + function _eglSwapBuffers() { + if (!EGL.defaultDisplayInitialized) { + EGL.setErrorCode(12289) + } else if (!Module.ctx) { + EGL.setErrorCode(12290) + } else if (Module.ctx.isContextLost()) { + EGL.setErrorCode(12302) + } else { + EGL.setErrorCode(12288); + return 1 + } + return 0 + } + + function _eglSwapInterval(display, interval) { + if (display != 62e3) { + EGL.setErrorCode(12296); + return 0 + } + if (interval == 0) _emscripten_set_main_loop_timing(0, 0); + else _emscripten_set_main_loop_timing(1, interval); + EGL.setErrorCode(12288); + return 1 + } + + function _eglTerminate(display) { + if (display != 62e3) { + EGL.setErrorCode(12296); + return 0 + } + EGL.currentContext = 0; + EGL.currentReadSurface = 0; + EGL.currentDrawSurface = 0; + EGL.defaultDisplayInitialized = false; + EGL.setErrorCode(12288); + return 1 + } + + function _eglWaitClient() { + EGL.setErrorCode(12288); + return 1 + } + + function _eglWaitGL() { + return _eglWaitClient() + } + + function _eglWaitNative(nativeEngineId) { + EGL.setErrorCode(12288); + return 1 + } + + function _emscripten_cancel_main_loop() { + Browser.mainLoop.pause(); + Browser.mainLoop.func = null + } + var JSEvents = { + keyEvent: 0, + mouseEvent: 0, + wheelEvent: 0, + uiEvent: 0, + focusEvent: 0, + deviceOrientationEvent: 0, + deviceMotionEvent: 0, + fullscreenChangeEvent: 0, + pointerlockChangeEvent: 0, + visibilityChangeEvent: 0, + touchEvent: 0, + previousFullscreenElement: null, + previousScreenX: null, + previousScreenY: null, + removeEventListenersRegistered: false, + removeAllEventListeners: function() { + for (var i = JSEvents.eventHandlers.length - 1; i >= 0; --i) { + JSEvents._removeHandler(i) + } + JSEvents.eventHandlers = []; + JSEvents.deferredCalls = [] + }, + registerRemoveEventListeners: function() { + if (!JSEvents.removeEventListenersRegistered) { + __ATEXIT__.push(JSEvents.removeAllEventListeners); + JSEvents.removeEventListenersRegistered = true + } + }, + deferredCalls: [], + deferCall: function(targetFunction, precedence, argsList) { + function arraysHaveEqualContent(arrA, arrB) { + if (arrA.length != arrB.length) return false; + for (var i in arrA) { + if (arrA[i] != arrB[i]) return false + } + return true + } + for (var i in JSEvents.deferredCalls) { + var call = JSEvents.deferredCalls[i]; + if (call.targetFunction == targetFunction && arraysHaveEqualContent(call.argsList, argsList)) { + return + } + } + JSEvents.deferredCalls.push({ + targetFunction: targetFunction, + precedence: precedence, + argsList: argsList + }); + JSEvents.deferredCalls.sort(function(x, y) { + return x.precedence < y.precedence + }) + }, + removeDeferredCalls: function(targetFunction) { + for (var i = 0; i < JSEvents.deferredCalls.length; ++i) { + if (JSEvents.deferredCalls[i].targetFunction == targetFunction) { + JSEvents.deferredCalls.splice(i, 1); + --i + } + } + }, + canPerformEventHandlerRequests: function() { + return JSEvents.inEventHandler && JSEvents.currentEventHandler.allowsDeferredCalls + }, + runDeferredCalls: function() { + if (!JSEvents.canPerformEventHandlerRequests()) { + return + } + for (var i = 0; i < JSEvents.deferredCalls.length; ++i) { + var call = JSEvents.deferredCalls[i]; + JSEvents.deferredCalls.splice(i, 1); + --i; + call.targetFunction.apply(null, call.argsList) + } + }, + inEventHandler: 0, + currentEventHandler: null, + eventHandlers: [], + removeAllHandlersOnTarget: function(target, eventTypeString) { + for (var i = 0; i < JSEvents.eventHandlers.length; ++i) { + if (JSEvents.eventHandlers[i].target == target && (!eventTypeString || eventTypeString == JSEvents.eventHandlers[i].eventTypeString)) { + JSEvents._removeHandler(i--) + } + } + }, + _removeHandler: function(i) { + var h = JSEvents.eventHandlers[i]; + h.target.removeEventListener(h.eventTypeString, h.eventListenerFunc, h.useCapture); + JSEvents.eventHandlers.splice(i, 1) + }, + registerOrRemoveHandler: function(eventHandler) { + var jsEventHandler = function jsEventHandler(event) { + ++JSEvents.inEventHandler; + JSEvents.currentEventHandler = eventHandler; + JSEvents.runDeferredCalls(); + eventHandler.handlerFunc(event); + JSEvents.runDeferredCalls(); + --JSEvents.inEventHandler + }; + if (eventHandler.callbackfunc) { + eventHandler.eventListenerFunc = jsEventHandler; + eventHandler.target.addEventListener(eventHandler.eventTypeString, jsEventHandler, eventHandler.useCapture); + JSEvents.eventHandlers.push(eventHandler); + JSEvents.registerRemoveEventListeners() + } else { + for (var i = 0; i < JSEvents.eventHandlers.length; ++i) { + if (JSEvents.eventHandlers[i].target == eventHandler.target && JSEvents.eventHandlers[i].eventTypeString == eventHandler.eventTypeString) { + JSEvents._removeHandler(i--) + } + } + } + }, + getNodeNameForTarget: function(target) { + if (!target) return ""; + if (target == window) return "#window"; + if (target == screen) return "#screen"; + return target && target.nodeName ? target.nodeName : "" + }, + fullscreenEnabled: function() { + return document.fullscreenEnabled || document.webkitFullscreenEnabled + } + }; + var __currentFullscreenStrategy = {}; + + function __maybeCStringToJsString(cString) { + return cString > 2 ? UTF8ToString(cString) : cString + } + var specialHTMLTargets = [0, document, window]; + + function __findEventTarget(target) { + target = __maybeCStringToJsString(target); + var domElement = specialHTMLTargets[target] || document.querySelector(target); + return domElement + } + + function __findCanvasEventTarget(target) { + return __findEventTarget(target) + } + + function _emscripten_get_canvas_element_size(target, width, height) { + var canvas = __findCanvasEventTarget(target); + if (!canvas) return -4; + HEAP32[width >> 2] = canvas.width; + HEAP32[height >> 2] = canvas.height + } + + function __get_canvas_element_size(target) { + var stackTop = stackSave(); + var w = stackAlloc(8); + var h = w + 4; + var targetInt = stackAlloc(target.id.length + 1); + stringToUTF8(target.id, targetInt, target.id.length + 1); + var ret = _emscripten_get_canvas_element_size(targetInt, w, h); + var size = [HEAP32[w >> 2], HEAP32[h >> 2]]; + stackRestore(stackTop); + return size + } + + function _emscripten_set_canvas_element_size(target, width, height) { + var canvas = __findCanvasEventTarget(target); + if (!canvas) return -4; + canvas.width = width; + canvas.height = height; + return 0 + } + + function __set_canvas_element_size(target, width, height) { + if (!target.controlTransferredOffscreen) { + target.width = width; + target.height = height + } else { + var stackTop = stackSave(); + var targetInt = stackAlloc(target.id.length + 1); + stringToUTF8(target.id, targetInt, target.id.length + 1); + _emscripten_set_canvas_element_size(targetInt, width, height); + stackRestore(stackTop) + } + } + + function __registerRestoreOldStyle(canvas) { + var canvasSize = __get_canvas_element_size(canvas); + var oldWidth = canvasSize[0]; + var oldHeight = canvasSize[1]; + var oldCssWidth = canvas.style.width; + var oldCssHeight = canvas.style.height; + var oldBackgroundColor = canvas.style.backgroundColor; + var oldDocumentBackgroundColor = document.body.style.backgroundColor; + var oldPaddingLeft = canvas.style.paddingLeft; + var oldPaddingRight = canvas.style.paddingRight; + var oldPaddingTop = canvas.style.paddingTop; + var oldPaddingBottom = canvas.style.paddingBottom; + var oldMarginLeft = canvas.style.marginLeft; + var oldMarginRight = canvas.style.marginRight; + var oldMarginTop = canvas.style.marginTop; + var oldMarginBottom = canvas.style.marginBottom; + var oldDocumentBodyMargin = document.body.style.margin; + var oldDocumentOverflow = document.documentElement.style.overflow; + var oldDocumentScroll = document.body.scroll; + var oldImageRendering = canvas.style.imageRendering; + + function restoreOldStyle() { + var fullscreenElement = document.fullscreenElement || document.webkitFullscreenElement || document.msFullscreenElement; + if (!fullscreenElement) { + document.removeEventListener("fullscreenchange", restoreOldStyle); + document.removeEventListener("webkitfullscreenchange", restoreOldStyle); + __set_canvas_element_size(canvas, oldWidth, oldHeight); + canvas.style.width = oldCssWidth; + canvas.style.height = oldCssHeight; + canvas.style.backgroundColor = oldBackgroundColor; + if (!oldDocumentBackgroundColor) document.body.style.backgroundColor = "white"; + document.body.style.backgroundColor = oldDocumentBackgroundColor; + canvas.style.paddingLeft = oldPaddingLeft; + canvas.style.paddingRight = oldPaddingRight; + canvas.style.paddingTop = oldPaddingTop; + canvas.style.paddingBottom = oldPaddingBottom; + canvas.style.marginLeft = oldMarginLeft; + canvas.style.marginRight = oldMarginRight; + canvas.style.marginTop = oldMarginTop; + canvas.style.marginBottom = oldMarginBottom; + document.body.style.margin = oldDocumentBodyMargin; + document.documentElement.style.overflow = oldDocumentOverflow; + document.body.scroll = oldDocumentScroll; + canvas.style.imageRendering = oldImageRendering; + if (canvas.GLctxObject) canvas.GLctxObject.GLctx.viewport(0, 0, oldWidth, oldHeight); + if (__currentFullscreenStrategy.canvasResizedCallback) { + dynCall_iiii(__currentFullscreenStrategy.canvasResizedCallback, 37, 0, __currentFullscreenStrategy.canvasResizedCallbackUserData) + } + } + } + document.addEventListener("fullscreenchange", restoreOldStyle); + document.addEventListener("webkitfullscreenchange", restoreOldStyle); + return restoreOldStyle + } + + function __setLetterbox(element, topBottom, leftRight) { + element.style.paddingLeft = element.style.paddingRight = leftRight + "px"; + element.style.paddingTop = element.style.paddingBottom = topBottom + "px" + } + + function __getBoundingClientRect(e) { + return specialHTMLTargets.indexOf(e) < 0 ? e.getBoundingClientRect() : { + "left": 0, + "top": 0 + } + } + + function _JSEvents_resizeCanvasForFullscreen(target, strategy) { + var restoreOldStyle = __registerRestoreOldStyle(target); + var cssWidth = strategy.softFullscreen ? innerWidth : screen.width; + var cssHeight = strategy.softFullscreen ? innerHeight : screen.height; + var rect = __getBoundingClientRect(target); + var windowedCssWidth = rect.width; + var windowedCssHeight = rect.height; + var canvasSize = __get_canvas_element_size(target); + var windowedRttWidth = canvasSize[0]; + var windowedRttHeight = canvasSize[1]; + if (strategy.scaleMode == 3) { + __setLetterbox(target, (cssHeight - windowedCssHeight) / 2, (cssWidth - windowedCssWidth) / 2); + cssWidth = windowedCssWidth; + cssHeight = windowedCssHeight + } else if (strategy.scaleMode == 2) { + if (cssWidth * windowedRttHeight < windowedRttWidth * cssHeight) { + var desiredCssHeight = windowedRttHeight * cssWidth / windowedRttWidth; + __setLetterbox(target, (cssHeight - desiredCssHeight) / 2, 0); + cssHeight = desiredCssHeight + } else { + var desiredCssWidth = windowedRttWidth * cssHeight / windowedRttHeight; + __setLetterbox(target, 0, (cssWidth - desiredCssWidth) / 2); + cssWidth = desiredCssWidth + } + } + if (!target.style.backgroundColor) target.style.backgroundColor = "black"; + if (!document.body.style.backgroundColor) document.body.style.backgroundColor = "black"; + target.style.width = cssWidth + "px"; + target.style.height = cssHeight + "px"; + if (strategy.filteringMode == 1) { + target.style.imageRendering = "optimizeSpeed"; + target.style.imageRendering = "-moz-crisp-edges"; + target.style.imageRendering = "-o-crisp-edges"; + target.style.imageRendering = "-webkit-optimize-contrast"; + target.style.imageRendering = "optimize-contrast"; + target.style.imageRendering = "crisp-edges"; + target.style.imageRendering = "pixelated" + } + var dpiScale = strategy.canvasResolutionScaleMode == 2 ? devicePixelRatio : 1; + if (strategy.canvasResolutionScaleMode != 0) { + var newWidth = cssWidth * dpiScale | 0; + var newHeight = cssHeight * dpiScale | 0; + __set_canvas_element_size(target, newWidth, newHeight); + if (target.GLctxObject) target.GLctxObject.GLctx.viewport(0, 0, newWidth, newHeight) + } + return restoreOldStyle + } + + function _JSEvents_requestFullscreen(target, strategy) { + if (strategy.scaleMode != 0 || strategy.canvasResolutionScaleMode != 0) { + _JSEvents_resizeCanvasForFullscreen(target, strategy) + } + if (target.requestFullscreen) { + target.requestFullscreen() + } else if (target.webkitRequestFullscreen) { + target.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT) + } else { + return JSEvents.fullscreenEnabled() ? -3 : -1 + } + __currentFullscreenStrategy = strategy; + if (strategy.canvasResizedCallback) { + dynCall_iiii(strategy.canvasResizedCallback, 37, 0, strategy.canvasResizedCallbackUserData) + } + return 0 + } + + function _emscripten_exit_fullscreen() { + if (!JSEvents.fullscreenEnabled()) return -1; + JSEvents.removeDeferredCalls(_JSEvents_requestFullscreen); + var d = specialHTMLTargets[1]; + if (d.exitFullscreen) { + d.fullscreenElement && d.exitFullscreen() + } else if (d.webkitExitFullscreen) { + d.webkitFullscreenElement && d.webkitExitFullscreen() + } else { + return -1 + } + return 0 + } + + function __requestPointerLock(target) { + if (target.requestPointerLock) { + target.requestPointerLock() + } else if (target.msRequestPointerLock) { + target.msRequestPointerLock() + } else { + if (document.body.requestPointerLock || document.body.msRequestPointerLock) { + return -3 + } else { + return -1 + } + } + return 0 + } + + function _emscripten_exit_pointerlock() { + JSEvents.removeDeferredCalls(__requestPointerLock); + if (document.exitPointerLock) { + document.exitPointerLock() + } else if (document.msExitPointerLock) { + document.msExitPointerLock() + } else { + return -1 + } + return 0 + } + + function _emscripten_get_device_pixel_ratio() { + return devicePixelRatio + } + + function _emscripten_get_element_css_size(target, width, height) { + target = __findEventTarget(target); + if (!target) return -4; + var rect = __getBoundingClientRect(target); + HEAPF64[width >> 3] = rect.width; + HEAPF64[height >> 3] = rect.height; + return 0 + } + + function __fillFullscreenChangeEventData(eventStruct) { + var fullscreenElement = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || document.msFullscreenElement; + var isFullscreen = !!fullscreenElement; + HEAP32[eventStruct >> 2] = isFullscreen; + HEAP32[eventStruct + 4 >> 2] = JSEvents.fullscreenEnabled(); + var reportedElement = isFullscreen ? fullscreenElement : JSEvents.previousFullscreenElement; + var nodeName = JSEvents.getNodeNameForTarget(reportedElement); + var id = reportedElement && reportedElement.id ? reportedElement.id : ""; + stringToUTF8(nodeName, eventStruct + 8, 128); + stringToUTF8(id, eventStruct + 136, 128); + HEAP32[eventStruct + 264 >> 2] = reportedElement ? reportedElement.clientWidth : 0; + HEAP32[eventStruct + 268 >> 2] = reportedElement ? reportedElement.clientHeight : 0; + HEAP32[eventStruct + 272 >> 2] = screen.width; + HEAP32[eventStruct + 276 >> 2] = screen.height; + if (isFullscreen) { + JSEvents.previousFullscreenElement = fullscreenElement + } + } + + function _emscripten_get_fullscreen_status(fullscreenStatus) { + if (!JSEvents.fullscreenEnabled()) return -1; + __fillFullscreenChangeEventData(fullscreenStatus); + return 0 + } + + function __fillGamepadEventData(eventStruct, e) { + HEAPF64[eventStruct >> 3] = e.timestamp; + for (var i = 0; i < e.axes.length; ++i) { + HEAPF64[eventStruct + i * 8 + 16 >> 3] = e.axes[i] + } + for (var i = 0; i < e.buttons.length; ++i) { + if (typeof e.buttons[i] === "object") { + HEAPF64[eventStruct + i * 8 + 528 >> 3] = e.buttons[i].value + } else { + HEAPF64[eventStruct + i * 8 + 528 >> 3] = e.buttons[i] + } + } + for (var i = 0; i < e.buttons.length; ++i) { + if (typeof e.buttons[i] === "object") { + HEAP32[eventStruct + i * 4 + 1040 >> 2] = e.buttons[i].pressed + } else { + HEAP32[eventStruct + i * 4 + 1040 >> 2] = e.buttons[i] == 1 + } + } + HEAP32[eventStruct + 1296 >> 2] = e.connected; + HEAP32[eventStruct + 1300 >> 2] = e.index; + HEAP32[eventStruct + 8 >> 2] = e.axes.length; + HEAP32[eventStruct + 12 >> 2] = e.buttons.length; + stringToUTF8(e.id, eventStruct + 1304, 64); + stringToUTF8(e.mapping, eventStruct + 1368, 64) + } + + function _emscripten_get_gamepad_status(index, gamepadState) { + if (index < 0 || index >= JSEvents.lastGamepadState.length) return -5; + if (!JSEvents.lastGamepadState[index]) return -7; + __fillGamepadEventData(gamepadState, JSEvents.lastGamepadState[index]); + return 0 + } + + function _emscripten_get_num_gamepads() { + return JSEvents.lastGamepadState.length + } + + function _emscripten_get_sbrk_ptr() { + return 886976 + } + + 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.timerQueriesEXT[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 == 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]) + } + + function _emscripten_glBindVertexArrayOES(vao) { + GLctx["bindVertexArray"](GL.vaos[vao]) + } + + 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; + 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 < n; i++) { + var id = HEAP32[buffers + i * 4 >> 2]; + var buffer = GL.buffers[id]; + if (!buffer) continue; + GLctx.deleteBuffer(buffer); + buffer.name = 0; + GL.buffers[id] = null; + if (id == GL.currArrayBuffer) GL.currArrayBuffer = 0; + if (id == GL.currElementArrayBuffer) GL.currElementArrayBuffer = 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 < n; ++i) { + var id = HEAP32[framebuffers + i * 4 >> 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; + GL.programInfos[id] = null + } + + function _emscripten_glDeleteQueries(n, ids) { + for (var i = 0; i < n; i++) { + var id = HEAP32[ids + i * 4 >> 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 < n; i++) { + var id = HEAP32[ids + i * 4 >> 2]; + var query = GL.timerQueriesEXT[id]; + if (!query) continue; + GLctx.disjointTimerQueryExt["deleteQueryEXT"](query); + GL.timerQueriesEXT[id] = null + } + } + + function _emscripten_glDeleteRenderbuffers(n, renderbuffers) { + for (var i = 0; i < n; i++) { + var id = HEAP32[renderbuffers + i * 4 >> 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 < n; i++) { + var id = HEAP32[samplers + i * 4 >> 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 < n; i++) { + var id = HEAP32[textures + i * 4 >> 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 < n; i++) { + var id = HEAP32[ids + i * 4 >> 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 < n; i++) { + var id = HEAP32[vaos + i * 4 >> 2]; + GLctx["deleteVertexArray"](GL.vaos[id]); + GL.vaos[id] = null + } + } + + function _emscripten_glDeleteVertexArraysOES(n, vaos) { + for (var i = 0; i < n; i++) { + var id = HEAP32[vaos + i * 4 >> 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) { + GLctx.disableVertexAttribArray(index) + } + + function _emscripten_glDrawArrays(mode, first, count) { + GLctx.drawArrays(mode, first, count) + } + + 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 < n; i++) { + bufArray[i] = HEAP32[bufs + i * 4 >> 2] + } + GLctx["drawBuffers"](bufArray) + } + + function _emscripten_glDrawBuffersEXT(n, bufs) { + var bufArray = __tempFixedLengthArray[n]; + for (var i = 0; i < n; i++) { + bufArray[i] = HEAP32[bufs + i * 4 >> 2] + } + GLctx["drawBuffers"](bufArray) + } + + function _emscripten_glDrawBuffersWEBGL(n, bufs) { + var bufArray = __tempFixedLengthArray[n]; + for (var i = 0; i < n; i++) { + bufArray[i] = HEAP32[bufs + i * 4 >> 2] + } + GLctx["drawBuffers"](bufArray) + } + + function _emscripten_glDrawElements(mode, count, type, indices) { + GLctx.drawElements(mode, count, type, indices) + } + + 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) { + GLctx.drawElements(mode, count, type, indices) + } + + 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) { + 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 _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 < n; i++) { + var buffer = GLctx[createFunction](); + var id = buffer && GL.getNewId(objectTable); + if (buffer) { + buffer.name = id; + objectTable[id] = buffer + } else { + GL.recordError(1282) + } + HEAP32[buffers + i * 4 >> 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 < n; i++) { + var query = GLctx.disjointTimerQueryExt["createQueryEXT"](); + if (!query) { + GL.recordError(1282); + while (i < n) HEAP32[ids + i++ * 4 >> 2] = 0; + return + } + var id = GL.getNewId(GL.timerQueriesEXT); + query.name = id; + GL.timerQueriesEXT[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 _emscripten_glGetActiveAttrib(program, index, bufSize, length, size, type, name) { + program = GL.programs[program]; + var info = GLctx.getActiveAttrib(program, index); + if (!info) return; + var numBytesWrittenExclNull = bufSize > 0 && name ? stringToUTF8(info.name, name, bufSize) : 0; + if (length) HEAP32[length >> 2] = numBytesWrittenExclNull; + if (size) HEAP32[size >> 2] = info.size; + if (type) HEAP32[type >> 2] = info.type + } + + function _emscripten_glGetActiveUniform(program, index, bufSize, length, size, type, name) { + program = GL.programs[program]; + var info = GLctx.getActiveUniform(program, index); + if (!info) return; + var numBytesWrittenExclNull = bufSize > 0 && name ? stringToUTF8(info.name, name, bufSize) : 0; + if (length) HEAP32[length >> 2] = numBytesWrittenExclNull; + if (size) HEAP32[size >> 2] = info.size; + if (type) HEAP32[type >> 2] = info.type + } + + 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]; + switch (pname) { + case 35393: + var name = GLctx["getActiveUniformBlockName"](program, uniformBlockIndex); + HEAP32[params >> 2] = name.length + 1; + return; + default: + var result = GLctx["getActiveUniformBlockParameter"](program, uniformBlockIndex, pname); + if (!result) return; + if (typeof result == "number") { + HEAP32[params >> 2] = result + } else { + for (var i = 0; i < result.length; i++) { + HEAP32[params + i * 4 >> 2] = result[i] + } + } + } + } + + 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 < uniformCount; i++) { + ids.push(HEAP32[uniformIndices + i * 4 >> 2]) + } + var result = GLctx["getActiveUniforms"](program, ids, pname); + if (!result) return; + var len = result.length; + for (var i = 0; i < len; i++) { + HEAP32[params + i * 4 >> 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 < len; ++i) { + var id = GL.shaders.indexOf(result[i]); + HEAP32[shaders + i * 4 >> 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 < result.length; ++i) { + switch (type) { + case 0: + HEAP32[p + i * 4 >> 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_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 < ret.length && i < bufSize; ++i) { + HEAP32[params + 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 + } + var ptable = GL.programInfos[program]; + if (!ptable) { + GL.recordError(1282); + return + } + if (pname == 35716) { + var log = GLctx.getProgramInfoLog(GL.programs[program]); + if (log === null) log = "(unknown error)"; + HEAP32[p >> 2] = log.length + 1 + } else if (pname == 35719) { + HEAP32[p >> 2] = ptable.maxUniformLength + } else if (pname == 35722) { + if (ptable.maxAttributeLength == -1) { + program = GL.programs[program]; + var numAttribs = GLctx.getProgramParameter(program, 35721); + ptable.maxAttributeLength = 0; + for (var i = 0; i < numAttribs; ++i) { + var activeAttrib = GLctx.getActiveAttrib(program, i); + ptable.maxAttributeLength = Math.max(ptable.maxAttributeLength, activeAttrib.name.length + 1) + } + } + HEAP32[p >> 2] = ptable.maxAttributeLength + } else if (pname == 35381) { + if (ptable.maxUniformBlockNameLength == -1) { + program = GL.programs[program]; + var numBlocks = GLctx.getProgramParameter(program, 35382); + ptable.maxUniformBlockNameLength = 0; + for (var i = 0; i < numBlocks; ++i) { + var activeBlockName = GLctx.getActiveUniformBlockName(program, i); + ptable.maxUniformBlockNameLength = Math.max(ptable.maxUniformBlockNameLength, activeBlockName.length + 1) + } + } + HEAP32[p >> 2] = ptable.maxUniformBlockNameLength + } else { + HEAP32[p >> 2] = GLctx.getProgramParameter(GL.programs[program], pname) + } + } + + function _emscripten_glGetQueryObjecti64vEXT(id, pname, params) { + if (!params) { + GL.recordError(1281); + return + } + var query = GL.timerQueriesEXT[id]; + var param = GLctx.disjointTimerQueryExt["getQueryObjectEXT"](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.timerQueriesEXT[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.timerQueriesEXT[id]; + var param = GLctx.disjointTimerQueryExt["getQueryObjectEXT"](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.timerQueriesEXT[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 + } + sampler = GL.samplers[sampler]; + HEAPF32[params >> 2] = GLctx["getSamplerParameter"](sampler, pname) + } + + function _emscripten_glGetSamplerParameteriv(sampler, pname, params) { + if (!params) { + GL.recordError(1281); + return + } + sampler = GL.samplers[sampler]; + HEAP32[params >> 2] = GLctx["getSamplerParameter"](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)"; + HEAP32[p >> 2] = log.length + 1 + } else if (pname == 35720) { + var source = GLctx.getShaderSource(GL.shaders[shader]); + var sourceLength = source === null || source.length == 0 ? 0 : source.length + 1; + 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_) { + if (GL.stringCache[name_]) return GL.stringCache[name_]; + var 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 = 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); + return 0 + } + 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); + HEAP32[length >> 2] = ret; + if (ret !== null && 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 < uniformCount; i++) names.push(UTF8ToString(HEAP32[uniformNames + i * 4 >> 2])); + var result = GLctx["getUniformIndices"](program, names); + if (!result) return; + var len = result.length; + for (var i = 0; i < len; i++) { + HEAP32[uniformIndices + i * 4 >> 2] = result[i] + } + } + + function jstoi_q(str) { + return parseInt(str) + } + + function _emscripten_glGetUniformLocation(program, name) { + name = UTF8ToString(name); + var arrayIndex = 0; + if (name[name.length - 1] == "]") { + var leftBrace = name.lastIndexOf("["); + arrayIndex = name[leftBrace + 1] != "]" ? jstoi_q(name.slice(leftBrace + 1)) : 0; + name = name.slice(0, leftBrace) + } + var uniformInfo = GL.programInfos[program] && GL.programInfos[program].uniforms[name]; + if (uniformInfo && arrayIndex >= 0 && arrayIndex < uniformInfo[0]) { + return uniformInfo[1] + arrayIndex + } else { + return -1 + } + } + + function emscriptenWebGLGetUniform(program, location, params, type) { + if (!params) { + GL.recordError(1281); + return + } + var data = GLctx.getUniform(GL.programs[program], GL.uniforms[location]); + if (typeof data == "number" || typeof data == "boolean") { + switch (type) { + case 0: + HEAP32[params >> 2] = data; + break; + case 2: + HEAPF32[params >> 2] = data; + break; + default: + throw "internal emscriptenWebGLGetUniform() error, bad type: " + type + } + } else { + for (var i = 0; i < data.length; i++) { + switch (type) { + case 0: + HEAP32[params + i * 4 >> 2] = data[i]; + break; + case 2: + HEAPF32[params + i * 4 >> 2] = data[i]; + break; + default: + throw "internal emscriptenWebGLGetUniform() error, bad type: " + type + } + } + } + } + + 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 + } + 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; + default: + throw "internal emscriptenWebGLGetVertexAttrib() error, bad type: " + type + } + } else { + for (var i = 0; i < data.length; i++) { + switch (type) { + case 0: + HEAP32[params + i * 4 >> 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; + default: + throw "internal emscriptenWebGLGetVertexAttrib() error, bad type: " + type + } + } + } + } + + 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 + } + 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 < numAttachments; i++) { + list[i] = HEAP32[attachments + i * 4 >> 2] + } + GLctx["invalidateFramebuffer"](target, list) + } + + function _emscripten_glInvalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height) { + var list = __tempFixedLengthArray[numAttachments]; + for (var i = 0; i < numAttachments; i++) { + list[i] = HEAP32[attachments + i * 4 >> 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.timerQueriesEXT[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) { + GLctx.linkProgram(GL.programs[program]); + GL.populateUniformTable(program) + } + + 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.timerQueriesEXT[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; + var sizePerPixel = __colorChannelsInGlTextureFormat(format) * byteSize; + var bytes = __computeUnpackAlignedImageSize(width, height, sizePerPixel, GL.unpackAlignment); + return heap.subarray(pixels >> 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 < count; i++) vars.push(UTF8ToString(HEAP32[varyings + i * 4 >> 2])); + GLctx["transformFeedbackVaryings"](program, vars, bufferMode) + } + + function _emscripten_glUniform1f(location, v0) { + GLctx.uniform1f(GL.uniforms[location], v0) + } + + function _emscripten_glUniform1fv(location, count, value) { + if (GL.currentContext.version >= 2) { + GLctx.uniform1fv(GL.uniforms[location], HEAPF32, value >> 2, count); + return + } + if (count <= GL.MINI_TEMP_BUFFER_SIZE) { + var view = GL.miniTempBufferFloatViews[count - 1]; + for (var i = 0; i < count; ++i) { + view[i] = HEAPF32[value + 4 * i >> 2] + } + } else { + var view = HEAPF32.subarray(value >> 2, value + count * 4 >> 2) + } + GLctx.uniform1fv(GL.uniforms[location], view) + } + + function _emscripten_glUniform1i(location, v0) { + GLctx.uniform1i(GL.uniforms[location], v0) + } + + function _emscripten_glUniform1iv(location, count, value) { + if (GL.currentContext.version >= 2) { + GLctx.uniform1iv(GL.uniforms[location], HEAP32, value >> 2, count); + return + } + if (count <= GL.MINI_TEMP_BUFFER_SIZE) { + var view = GL.miniTempBufferIntViews[count - 1]; + for (var i = 0; i < count; ++i) { + view[i] = HEAP32[value + 4 * i >> 2] + } + } else { + var view = HEAP32.subarray(value >> 2, value + count * 4 >> 2) + } + GLctx.uniform1iv(GL.uniforms[location], view) + } + + function _emscripten_glUniform1ui(location, v0) { + GLctx.uniform1ui(GL.uniforms[location], v0) + } + + function _emscripten_glUniform1uiv(location, count, value) { + GLctx.uniform1uiv(GL.uniforms[location], HEAPU32, value >> 2, count) + } + + function _emscripten_glUniform2f(location, v0, v1) { + GLctx.uniform2f(GL.uniforms[location], v0, v1) + } + + function _emscripten_glUniform2fv(location, count, value) { + if (GL.currentContext.version >= 2) { + GLctx.uniform2fv(GL.uniforms[location], HEAPF32, value >> 2, count * 2); + return + } + if (2 * count <= GL.MINI_TEMP_BUFFER_SIZE) { + var view = GL.miniTempBufferFloatViews[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(GL.uniforms[location], view) + } + + function _emscripten_glUniform2i(location, v0, v1) { + GLctx.uniform2i(GL.uniforms[location], v0, v1) + } + + function _emscripten_glUniform2iv(location, count, value) { + if (GL.currentContext.version >= 2) { + GLctx.uniform2iv(GL.uniforms[location], HEAP32, value >> 2, count * 2); + return + } + if (2 * count <= GL.MINI_TEMP_BUFFER_SIZE) { + var view = GL.miniTempBufferIntViews[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(GL.uniforms[location], view) + } + + function _emscripten_glUniform2ui(location, v0, v1) { + GLctx.uniform2ui(GL.uniforms[location], v0, v1) + } + + function _emscripten_glUniform2uiv(location, count, value) { + GLctx.uniform2uiv(GL.uniforms[location], HEAPU32, value >> 2, count * 2) + } + + function _emscripten_glUniform3f(location, v0, v1, v2) { + GLctx.uniform3f(GL.uniforms[location], v0, v1, v2) + } + + function _emscripten_glUniform3fv(location, count, value) { + if (GL.currentContext.version >= 2) { + GLctx.uniform3fv(GL.uniforms[location], HEAPF32, value >> 2, count * 3); + return + } + if (3 * count <= GL.MINI_TEMP_BUFFER_SIZE) { + var view = GL.miniTempBufferFloatViews[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(GL.uniforms[location], view) + } + + function _emscripten_glUniform3i(location, v0, v1, v2) { + GLctx.uniform3i(GL.uniforms[location], v0, v1, v2) + } + + function _emscripten_glUniform3iv(location, count, value) { + if (GL.currentContext.version >= 2) { + GLctx.uniform3iv(GL.uniforms[location], HEAP32, value >> 2, count * 3); + return + } + if (3 * count <= GL.MINI_TEMP_BUFFER_SIZE) { + var view = GL.miniTempBufferIntViews[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(GL.uniforms[location], view) + } + + function _emscripten_glUniform3ui(location, v0, v1, v2) { + GLctx.uniform3ui(GL.uniforms[location], v0, v1, v2) + } + + function _emscripten_glUniform3uiv(location, count, value) { + GLctx.uniform3uiv(GL.uniforms[location], HEAPU32, value >> 2, count * 3) + } + + function _emscripten_glUniform4f(location, v0, v1, v2, v3) { + GLctx.uniform4f(GL.uniforms[location], v0, v1, v2, v3) + } + + function _emscripten_glUniform4fv(location, count, value) { + if (GL.currentContext.version >= 2) { + GLctx.uniform4fv(GL.uniforms[location], HEAPF32, value >> 2, count * 4); + return + } + if (4 * count <= GL.MINI_TEMP_BUFFER_SIZE) { + var view = GL.miniTempBufferFloatViews[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(GL.uniforms[location], view) + } + + function _emscripten_glUniform4i(location, v0, v1, v2, v3) { + GLctx.uniform4i(GL.uniforms[location], v0, v1, v2, v3) + } + + function _emscripten_glUniform4iv(location, count, value) { + if (GL.currentContext.version >= 2) { + GLctx.uniform4iv(GL.uniforms[location], HEAP32, value >> 2, count * 4); + return + } + if (4 * count <= GL.MINI_TEMP_BUFFER_SIZE) { + var view = GL.miniTempBufferIntViews[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(GL.uniforms[location], view) + } + + function _emscripten_glUniform4ui(location, v0, v1, v2, v3) { + GLctx.uniform4ui(GL.uniforms[location], v0, v1, v2, v3) + } + + function _emscripten_glUniform4uiv(location, count, value) { + GLctx.uniform4uiv(GL.uniforms[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(GL.uniforms[location], !!transpose, HEAPF32, value >> 2, count * 4); + return + } + if (4 * count <= GL.MINI_TEMP_BUFFER_SIZE) { + var view = GL.miniTempBufferFloatViews[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(GL.uniforms[location], !!transpose, view) + } + + function _emscripten_glUniformMatrix2x3fv(location, count, transpose, value) { + GLctx.uniformMatrix2x3fv(GL.uniforms[location], !!transpose, HEAPF32, value >> 2, count * 6) + } + + function _emscripten_glUniformMatrix2x4fv(location, count, transpose, value) { + GLctx.uniformMatrix2x4fv(GL.uniforms[location], !!transpose, HEAPF32, value >> 2, count * 8) + } + + function _emscripten_glUniformMatrix3fv(location, count, transpose, value) { + if (GL.currentContext.version >= 2) { + GLctx.uniformMatrix3fv(GL.uniforms[location], !!transpose, HEAPF32, value >> 2, count * 9); + return + } + if (9 * count <= GL.MINI_TEMP_BUFFER_SIZE) { + var view = GL.miniTempBufferFloatViews[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(GL.uniforms[location], !!transpose, view) + } + + function _emscripten_glUniformMatrix3x2fv(location, count, transpose, value) { + GLctx.uniformMatrix3x2fv(GL.uniforms[location], !!transpose, HEAPF32, value >> 2, count * 6) + } + + function _emscripten_glUniformMatrix3x4fv(location, count, transpose, value) { + GLctx.uniformMatrix3x4fv(GL.uniforms[location], !!transpose, HEAPF32, value >> 2, count * 12) + } + + function _emscripten_glUniformMatrix4fv(location, count, transpose, value) { + if (GL.currentContext.version >= 2) { + GLctx.uniformMatrix4fv(GL.uniforms[location], !!transpose, HEAPF32, value >> 2, count * 16); + return + } + if (16 * count <= GL.MINI_TEMP_BUFFER_SIZE) { + var view = GL.miniTempBufferFloatViews[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(GL.uniforms[location], !!transpose, view) + } + + function _emscripten_glUniformMatrix4x2fv(location, count, transpose, value) { + GLctx.uniformMatrix4x2fv(GL.uniforms[location], !!transpose, HEAPF32, value >> 2, count * 8) + } + + function _emscripten_glUniformMatrix4x3fv(location, count, transpose, value) { + GLctx.uniformMatrix4x3fv(GL.uniforms[location], !!transpose, HEAPF32, value >> 2, count * 12) + } + + function _emscripten_glUseProgram(program) { + GLctx.useProgram(GL.programs[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) { + GLctx["vertexAttribIPointer"](index, size, type, stride, ptr) + } + + function _emscripten_glVertexAttribPointer(index, size, type, normalized, stride, ptr) { + 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_has_asyncify() { + return 0 + } + + function _emscripten_is_main_browser_thread() { + return !ENVIRONMENT_IS_WORKER + } + + function reallyNegative(x) { + return x < 0 || x === 0 && 1 / x === -Infinity + } + + function convertU32PairToI53(lo, hi) { + return (lo >>> 0) + (hi >>> 0) * 4294967296 + } + + function formatString(format, varargs) { + var textIndex = format; + var argIndex = varargs; + + function prepVararg(ptr, type) { + if (type === "double" || type === "i64") { + if (ptr & 7) { + ptr += 4 + } + } else {} + return ptr + } + + function getNextArg(type) { + var ret; + argIndex = prepVararg(argIndex, type); + if (type === "double") { + ret = HEAPF64[argIndex >> 3]; + argIndex += 8 + } else if (type == "i64") { + ret = [HEAP32[argIndex >> 2], HEAP32[argIndex + 4 >> 2]]; + argIndex += 8 + } else { + type = "i32"; + ret = HEAP32[argIndex >> 2]; + argIndex += 4 + } + return ret + } + var ret = []; + var curr, next, currArg; + while (1) { + var startTextIndex = textIndex; + curr = HEAP8[textIndex >> 0]; + if (curr === 0) break; + next = HEAP8[textIndex + 1 >> 0]; + if (curr == 37) { + var flagAlwaysSigned = false; + var flagLeftAlign = false; + var flagAlternative = false; + var flagZeroPad = false; + var flagPadSign = false; + flagsLoop: while (1) { + switch (next) { + case 43: + flagAlwaysSigned = true; + break; + case 45: + flagLeftAlign = true; + break; + case 35: + flagAlternative = true; + break; + case 48: + if (flagZeroPad) { + break flagsLoop + } else { + flagZeroPad = true; + break + } + case 32: + flagPadSign = true; + break; + default: + break flagsLoop + } + textIndex++; + next = HEAP8[textIndex + 1 >> 0] + } + var width = 0; + if (next == 42) { + width = getNextArg("i32"); + textIndex++; + next = HEAP8[textIndex + 1 >> 0] + } else { + while (next >= 48 && next <= 57) { + width = width * 10 + (next - 48); + textIndex++; + next = HEAP8[textIndex + 1 >> 0] + } + } + var precisionSet = false, + precision = -1; + if (next == 46) { + precision = 0; + precisionSet = true; + textIndex++; + next = HEAP8[textIndex + 1 >> 0]; + if (next == 42) { + precision = getNextArg("i32"); + textIndex++ + } else { + while (1) { + var precisionChr = HEAP8[textIndex + 1 >> 0]; + if (precisionChr < 48 || precisionChr > 57) break; + precision = precision * 10 + (precisionChr - 48); + textIndex++ + } + } + next = HEAP8[textIndex + 1 >> 0] + } + if (precision < 0) { + precision = 6; + precisionSet = false + } + var argSize; + switch (String.fromCharCode(next)) { + case "h": + var nextNext = HEAP8[textIndex + 2 >> 0]; + if (nextNext == 104) { + textIndex++; + argSize = 1 + } else { + argSize = 2 + } + break; + case "l": + var nextNext = HEAP8[textIndex + 2 >> 0]; + if (nextNext == 108) { + textIndex++; + argSize = 8 + } else { + argSize = 4 + } + break; + case "L": + case "q": + case "j": + argSize = 8; + break; + case "z": + case "t": + case "I": + argSize = 4; + break; + default: + argSize = null + } + if (argSize) textIndex++; + next = HEAP8[textIndex + 1 >> 0]; + switch (String.fromCharCode(next)) { + case "d": + case "i": + case "u": + case "o": + case "x": + case "X": + case "p": { + var signed = next == 100 || next == 105; + argSize = argSize || 4; + currArg = getNextArg("i" + argSize * 8); + var argText; + if (argSize == 8) { + currArg = next == 117 ? convertU32PairToI53(currArg[0], currArg[1]) : convertI32PairToI53(currArg[0], currArg[1]) + } + if (argSize <= 4) { + var limit = Math.pow(256, argSize) - 1; + currArg = (signed ? reSign : unSign)(currArg & limit, argSize * 8) + } + var currAbsArg = Math.abs(currArg); + var prefix = ""; + if (next == 100 || next == 105) { + argText = reSign(currArg, 8 * argSize, 1).toString(10) + } else if (next == 117) { + argText = unSign(currArg, 8 * argSize, 1).toString(10); + currArg = Math.abs(currArg) + } else if (next == 111) { + argText = (flagAlternative ? "0" : "") + currAbsArg.toString(8) + } else if (next == 120 || next == 88) { + prefix = flagAlternative && currArg != 0 ? "0x" : ""; + if (currArg < 0) { + currArg = -currArg; + argText = (currAbsArg - 1).toString(16); + var buffer = []; + for (var i = 0; i < argText.length; i++) { + buffer.push((15 - parseInt(argText[i], 16)).toString(16)) + } + argText = buffer.join(""); + while (argText.length < argSize * 2) argText = "f" + argText + } else { + argText = currAbsArg.toString(16) + } + if (next == 88) { + prefix = prefix.toUpperCase(); + argText = argText.toUpperCase() + } + } else if (next == 112) { + if (currAbsArg === 0) { + argText = "(nil)" + } else { + prefix = "0x"; + argText = currAbsArg.toString(16) + } + } + if (precisionSet) { + while (argText.length < precision) { + argText = "0" + argText + } + } + if (currArg >= 0) { + if (flagAlwaysSigned) { + prefix = "+" + prefix + } else if (flagPadSign) { + prefix = " " + prefix + } + } + if (argText.charAt(0) == "-") { + prefix = "-" + prefix; + argText = argText.substr(1) + } + while (prefix.length + argText.length < width) { + if (flagLeftAlign) { + argText += " " + } else { + if (flagZeroPad) { + argText = "0" + argText + } else { + prefix = " " + prefix + } + } + } + argText = prefix + argText; + argText.split("").forEach(function(chr) { + ret.push(chr.charCodeAt(0)) + }); + break + } + case "f": + case "F": + case "e": + case "E": + case "g": + case "G": { + currArg = getNextArg("double"); + var argText; + if (isNaN(currArg)) { + argText = "nan"; + flagZeroPad = false + } else if (!isFinite(currArg)) { + argText = (currArg < 0 ? "-" : "") + "inf"; + flagZeroPad = false + } else { + var isGeneral = false; + var effectivePrecision = Math.min(precision, 20); + if (next == 103 || next == 71) { + isGeneral = true; + precision = precision || 1; + var exponent = parseInt(currArg.toExponential(effectivePrecision).split("e")[1], 10); + if (precision > exponent && exponent >= -4) { + next = (next == 103 ? "f" : "F").charCodeAt(0); + precision -= exponent + 1 + } else { + next = (next == 103 ? "e" : "E").charCodeAt(0); + precision-- + } + effectivePrecision = Math.min(precision, 20) + } + if (next == 101 || next == 69) { + argText = currArg.toExponential(effectivePrecision); + if (/[eE][-+]\d$/.test(argText)) { + argText = argText.slice(0, -1) + "0" + argText.slice(-1) + } + } else if (next == 102 || next == 70) { + argText = currArg.toFixed(effectivePrecision); + if (currArg === 0 && reallyNegative(currArg)) { + argText = "-" + argText + } + } + var parts = argText.split("e"); + if (isGeneral && !flagAlternative) { + while (parts[0].length > 1 && parts[0].indexOf(".") != -1 && (parts[0].slice(-1) == "0" || parts[0].slice(-1) == ".")) { + parts[0] = parts[0].slice(0, -1) + } + } else { + if (flagAlternative && argText.indexOf(".") == -1) parts[0] += "."; + while (precision > effectivePrecision++) parts[0] += "0" + } + argText = parts[0] + (parts.length > 1 ? "e" + parts[1] : ""); + if (next == 69) argText = argText.toUpperCase(); + if (currArg >= 0) { + if (flagAlwaysSigned) { + argText = "+" + argText + } else if (flagPadSign) { + argText = " " + argText + } + } + } + while (argText.length < width) { + if (flagLeftAlign) { + argText += " " + } else { + if (flagZeroPad && (argText[0] == "-" || argText[0] == "+")) { + argText = argText[0] + "0" + argText.slice(1) + } else { + argText = (flagZeroPad ? "0" : " ") + argText + } + } + } + if (next < 97) argText = argText.toUpperCase(); + argText.split("").forEach(function(chr) { + ret.push(chr.charCodeAt(0)) + }); + break + } + case "s": { + var arg = getNextArg("i8*"); + var argLength = arg ? _strlen(arg) : "(null)".length; + if (precisionSet) argLength = Math.min(argLength, precision); + if (!flagLeftAlign) { + while (argLength < width--) { + ret.push(32) + } + } + if (arg) { + for (var i = 0; i < argLength; i++) { + ret.push(HEAPU8[arg++ >> 0]) + } + } else { + ret = ret.concat(intArrayFromString("(null)".substr(0, argLength), true)) + } + if (flagLeftAlign) { + while (argLength < width--) { + ret.push(32) + } + } + break + } + case "c": { + if (flagLeftAlign) ret.push(getNextArg("i8")); + while (--width > 0) { + ret.push(32) + } + if (!flagLeftAlign) ret.push(getNextArg("i8")); + break + } + case "n": { + var ptr = getNextArg("i32*"); + HEAP32[ptr >> 2] = ret.length; + break + } + case "%": { + ret.push(curr); + break + } + default: { + for (var i = startTextIndex; i < textIndex + 2; i++) { + ret.push(HEAP8[i >> 0]) + } + } + } + textIndex += 2 + } else { + ret.push(curr); + textIndex += 1 + } + } + return ret + } + + function __emscripten_traverse_stack(args) { + if (!args || !args.callee || !args.callee.name) { + return [null, "", ""] + } + var funstr = args.callee.toString(); + var funcname = args.callee.name; + var str = "("; + var first = true; + for (var i in args) { + var a = args[i]; + if (!first) { + str += ", " + } + first = false; + if (typeof a === "number" || typeof a === "string") { + str += a + } else { + str += "(" + typeof a + ")" + } + } + str += ")"; + var caller = args.callee.caller; + args = caller ? caller.arguments : []; + if (first) str = ""; + return [args, funcname, str] + } + + function _emscripten_get_callstack_js(flags) { + var callstack = jsStackTrace(); + var iThisFunc = callstack.lastIndexOf("_emscripten_log"); + var iThisFunc2 = callstack.lastIndexOf("_emscripten_get_callstack"); + var iNextLine = callstack.indexOf("\n", Math.max(iThisFunc, iThisFunc2)) + 1; + callstack = callstack.slice(iNextLine); + if (flags & 8 && typeof emscripten_source_map === "undefined") { + warnOnce('Source map information is not available, emscripten_log with EM_LOG_C_STACK will be ignored. Build with "--pre-js $EMSCRIPTEN/src/emscripten-source-map.min.js" linker flag to add source map loading to code.'); + flags ^= 8; + flags |= 16 + } + var stack_args = null; + if (flags & 128) { + stack_args = __emscripten_traverse_stack(arguments); + while (stack_args[1].indexOf("_emscripten_") >= 0) stack_args = __emscripten_traverse_stack(stack_args[0]) + } + var lines = callstack.split("\n"); + callstack = ""; + var newFirefoxRe = new RegExp("\\s*(.*?)@(.*?):([0-9]+):([0-9]+)"); + var firefoxRe = new RegExp("\\s*(.*?)@(.*):(.*)(:(.*))?"); + var chromeRe = new RegExp("\\s*at (.*?) \\((.*):(.*):(.*)\\)"); + for (var l in lines) { + var line = lines[l]; + var jsSymbolName = ""; + var file = ""; + var lineno = 0; + var column = 0; + var parts = chromeRe.exec(line); + if (parts && parts.length == 5) { + jsSymbolName = parts[1]; + file = parts[2]; + lineno = parts[3]; + column = parts[4] + } else { + parts = newFirefoxRe.exec(line); + if (!parts) parts = firefoxRe.exec(line); + if (parts && parts.length >= 4) { + jsSymbolName = parts[1]; + file = parts[2]; + lineno = parts[3]; + column = parts[4] | 0 + } else { + callstack += line + "\n"; + continue + } + } + var cSymbolName = flags & 32 ? demangle(jsSymbolName) : jsSymbolName; + if (!cSymbolName) { + cSymbolName = jsSymbolName + } + var haveSourceMap = false; + if (flags & 8) { + var orig = emscripten_source_map.originalPositionFor({ + line: lineno, + column: column + }); + haveSourceMap = orig && orig.source; + if (haveSourceMap) { + if (flags & 64) { + orig.source = orig.source.substring(orig.source.replace(/\\/g, "/").lastIndexOf("/") + 1) + } + callstack += " at " + cSymbolName + " (" + orig.source + ":" + orig.line + ":" + orig.column + ")\n" + } + } + if (flags & 16 || !haveSourceMap) { + if (flags & 64) { + file = file.substring(file.replace(/\\/g, "/").lastIndexOf("/") + 1) + } + callstack += (haveSourceMap ? " = " + jsSymbolName : " at " + cSymbolName) + " (" + file + ":" + lineno + ":" + column + ")\n" + } + if (flags & 128 && stack_args[0]) { + if (stack_args[1] == jsSymbolName && stack_args[2].length > 0) { + callstack = callstack.replace(/\s+$/, ""); + callstack += " with values: " + stack_args[1] + stack_args[2] + "\n" + } + stack_args = __emscripten_traverse_stack(stack_args[0]) + } + } + callstack = callstack.replace(/\s+$/, ""); + return callstack + } + + function _emscripten_log_js(flags, str) { + if (flags & 24) { + str = str.replace(/\s+$/, ""); + str += (str.length > 0 ? "\n" : "") + _emscripten_get_callstack_js(flags) + } + if (flags & 1) { + if (flags & 4) { + console.error(str) + } else if (flags & 2) { + console.warn(str) + } else if (flags & 512) { + console.info(str) + } else if (flags & 256) { + console.debug(str) + } else { + console.log(str) + } + } else if (flags & 6) { + err(str) + } else { + out(str) + } + } + + function _emscripten_log(flags, format, varargs) { + var str = ""; + var result = formatString(format, varargs); + for (var i = 0; i < result.length; ++i) { + str += String.fromCharCode(result[i]) + } + _emscripten_log_js(flags, str) + } + var setjmpId = 0; + + function _saveSetjmp(env, label, table, size) { + env = env | 0; + label = label | 0; + table = table | 0; + size = size | 0; + var i = 0; + setjmpId = setjmpId + 1 | 0; + HEAP32[env >> 2] = setjmpId; + while ((i | 0) < (size | 0)) { + if ((HEAP32[table + (i << 3) >> 2] | 0) == 0) { + HEAP32[table + (i << 3) >> 2] = setjmpId; + HEAP32[table + ((i << 3) + 4) >> 2] = label; + HEAP32[table + ((i << 3) + 8) >> 2] = 0; + setTempRet0(size | 0); + return table | 0 + } + i = i + 1 | 0 + } + size = size * 2 | 0; + table = _realloc(table | 0, 8 * (size + 1 | 0) | 0) | 0; + table = _saveSetjmp(env | 0, label | 0, table | 0, size | 0) | 0; + setTempRet0(size | 0); + return table | 0 + } + + function _testSetjmp(id, table, size) { + id = id | 0; + table = table | 0; + size = size | 0; + var i = 0, + curr = 0; + while ((i | 0) < (size | 0)) { + curr = HEAP32[table + (i << 3) >> 2] | 0; + if ((curr | 0) == 0) break; + if ((curr | 0) == (id | 0)) { + return HEAP32[table + ((i << 3) + 4) >> 2] | 0 + } + i = i + 1 | 0 + } + return 0 + } + + function _longjmp(env, value) { + _setThrew(env, value || 1); + throw "longjmp" + } + + function _emscripten_longjmp(env, value) { + _longjmp(env, value) + } + + function _emscripten_memcpy_big(dest, src, num) { + HEAPU8.copyWithin(dest, src, src + num) + } + + function __emscripten_do_request_fullscreen(target, strategy) { + if (!JSEvents.fullscreenEnabled()) return -1; + target = __findEventTarget(target); + if (!target) return -4; + if (!target.requestFullscreen && !target.webkitRequestFullscreen) { + return -3 + } + var canPerformRequests = JSEvents.canPerformEventHandlerRequests(); + if (!canPerformRequests) { + if (strategy.deferUntilInEventHandler) { + JSEvents.deferCall(_JSEvents_requestFullscreen, 1, [target, strategy]); + return 1 + } else { + return -2 + } + } + return _JSEvents_requestFullscreen(target, strategy) + } + + function _emscripten_request_fullscreen_strategy(target, deferUntilInEventHandler, fullscreenStrategy) { + var strategy = { + scaleMode: HEAP32[fullscreenStrategy >> 2], + canvasResolutionScaleMode: HEAP32[fullscreenStrategy + 4 >> 2], + filteringMode: HEAP32[fullscreenStrategy + 8 >> 2], + deferUntilInEventHandler: deferUntilInEventHandler, + canvasResizedCallback: HEAP32[fullscreenStrategy + 12 >> 2], + canvasResizedCallbackUserData: HEAP32[fullscreenStrategy + 16 >> 2] + }; + return __emscripten_do_request_fullscreen(target, strategy) + } + + function _emscripten_request_pointerlock(target, deferUntilInEventHandler) { + target = __findEventTarget(target); + if (!target) return -4; + if (!target.requestPointerLock && !target.msRequestPointerLock) { + return -1 + } + var canPerformRequests = JSEvents.canPerformEventHandlerRequests(); + if (!canPerformRequests) { + if (deferUntilInEventHandler) { + JSEvents.deferCall(__requestPointerLock, 2, [target]); + return 1 + } else { + return -2 + } + } + return __requestPointerLock(target) + } + + function _emscripten_get_heap_size() { + return HEAPU8.length + } + + 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) { + requestedSize = requestedSize >>> 0; + var oldSize = _emscripten_get_heap_size(); + var PAGE_MULTIPLE = 65536; + var maxHeapSize = 2147483648; + if (requestedSize > maxHeapSize) { + return false + } + var minHeapSize = 16777216; + 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(minHeapSize, requestedSize, overGrownHeapSize), PAGE_MULTIPLE)); + var replacement = emscripten_realloc_buffer(newSize); + if (replacement) { + return true + } + } + return false + } + + function _emscripten_sample_gamepad_data() { + return (JSEvents.lastGamepadState = navigator.getGamepads ? navigator.getGamepads() : navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : null) ? 0 : -1 + } + + function __registerBeforeUnloadEventCallback(target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString) { + var beforeUnloadEventHandlerFunc = function(ev) { + var e = ev || event; + var confirmationMessage = dynCall_iiii(callbackfunc, eventTypeId, 0, userData); + if (confirmationMessage) { + confirmationMessage = UTF8ToString(confirmationMessage) + } + if (confirmationMessage) { + e.preventDefault(); + e.returnValue = confirmationMessage; + return confirmationMessage + } + }; + var eventHandler = { + target: __findEventTarget(target), + eventTypeString: eventTypeString, + callbackfunc: callbackfunc, + handlerFunc: beforeUnloadEventHandlerFunc, + useCapture: useCapture + }; + JSEvents.registerOrRemoveHandler(eventHandler) + } + + function _emscripten_set_beforeunload_callback_on_thread(userData, callbackfunc, targetThread) { + if (typeof onbeforeunload === "undefined") return -1; + if (targetThread !== 1) return -5; + __registerBeforeUnloadEventCallback(2, userData, true, callbackfunc, 28, "beforeunload"); + return 0 + } + + function __registerFocusEventCallback(target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) { + if (!JSEvents.focusEvent) JSEvents.focusEvent = _malloc(256); + var focusEventHandlerFunc = function(ev) { + var e = ev || event; + var nodeName = JSEvents.getNodeNameForTarget(e.target); + var id = e.target.id ? e.target.id : ""; + var focusEvent = JSEvents.focusEvent; + stringToUTF8(nodeName, focusEvent + 0, 128); + stringToUTF8(id, focusEvent + 128, 128); + if (dynCall_iiii(callbackfunc, eventTypeId, focusEvent, userData)) e.preventDefault() + }; + var eventHandler = { + target: __findEventTarget(target), + eventTypeString: eventTypeString, + callbackfunc: callbackfunc, + handlerFunc: focusEventHandlerFunc, + useCapture: useCapture + }; + JSEvents.registerOrRemoveHandler(eventHandler) + } + + function _emscripten_set_blur_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) { + __registerFocusEventCallback(target, userData, useCapture, callbackfunc, 12, "blur", targetThread); + return 0 + } + + function _emscripten_set_element_css_size(target, width, height) { + target = __findEventTarget(target); + if (!target) return -4; + target.style.width = width + "px"; + target.style.height = height + "px"; + return 0 + } + + function _emscripten_set_focus_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) { + __registerFocusEventCallback(target, userData, useCapture, callbackfunc, 13, "focus", targetThread); + return 0 + } + + function __registerFullscreenChangeEventCallback(target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) { + if (!JSEvents.fullscreenChangeEvent) JSEvents.fullscreenChangeEvent = _malloc(280); + var fullscreenChangeEventhandlerFunc = function(ev) { + var e = ev || event; + var fullscreenChangeEvent = JSEvents.fullscreenChangeEvent; + __fillFullscreenChangeEventData(fullscreenChangeEvent); + if (dynCall_iiii(callbackfunc, eventTypeId, fullscreenChangeEvent, userData)) e.preventDefault() + }; + var eventHandler = { + target: target, + eventTypeString: eventTypeString, + callbackfunc: callbackfunc, + handlerFunc: fullscreenChangeEventhandlerFunc, + useCapture: useCapture + }; + JSEvents.registerOrRemoveHandler(eventHandler) + } + + function _emscripten_set_fullscreenchange_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) { + if (!JSEvents.fullscreenEnabled()) return -1; + target = __findEventTarget(target); + if (!target) return -4; + __registerFullscreenChangeEventCallback(target, userData, useCapture, callbackfunc, 19, "fullscreenchange", targetThread); + __registerFullscreenChangeEventCallback(target, userData, useCapture, callbackfunc, 19, "webkitfullscreenchange", targetThread); + return 0 + } + + function __registerGamepadEventCallback(target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) { + if (!JSEvents.gamepadEvent) JSEvents.gamepadEvent = _malloc(1432); + var gamepadEventHandlerFunc = function(ev) { + var e = ev || event; + var gamepadEvent = JSEvents.gamepadEvent; + __fillGamepadEventData(gamepadEvent, e["gamepad"]); + if (dynCall_iiii(callbackfunc, eventTypeId, gamepadEvent, userData)) e.preventDefault() + }; + var eventHandler = { + target: __findEventTarget(target), + allowsDeferredCalls: true, + eventTypeString: eventTypeString, + callbackfunc: callbackfunc, + handlerFunc: gamepadEventHandlerFunc, + useCapture: useCapture + }; + JSEvents.registerOrRemoveHandler(eventHandler) + } + + function _emscripten_set_gamepadconnected_callback_on_thread(userData, useCapture, callbackfunc, targetThread) { + if (!navigator.getGamepads && !navigator.webkitGetGamepads) return -1; + __registerGamepadEventCallback(2, userData, useCapture, callbackfunc, 26, "gamepadconnected", targetThread); + return 0 + } + + function _emscripten_set_gamepaddisconnected_callback_on_thread(userData, useCapture, callbackfunc, targetThread) { + if (!navigator.getGamepads && !navigator.webkitGetGamepads) return -1; + __registerGamepadEventCallback(2, userData, useCapture, callbackfunc, 27, "gamepaddisconnected", targetThread); + return 0 + } + + function __registerKeyEventCallback(target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) { + if (!JSEvents.keyEvent) JSEvents.keyEvent = _malloc(164); + var keyEventHandlerFunc = function(ev) { + var e = ev || event; + var keyEventData = JSEvents.keyEvent; + stringToUTF8(e.key ? e.key : "", keyEventData + 0, 32); + stringToUTF8(e.code ? e.code : "", keyEventData + 32, 32); + HEAP32[keyEventData + 64 >> 2] = e.location; + HEAP32[keyEventData + 68 >> 2] = e.ctrlKey; + HEAP32[keyEventData + 72 >> 2] = e.shiftKey; + HEAP32[keyEventData + 76 >> 2] = e.altKey; + HEAP32[keyEventData + 80 >> 2] = e.metaKey; + HEAP32[keyEventData + 84 >> 2] = e.repeat; + stringToUTF8(e.locale ? e.locale : "", keyEventData + 88, 32); + stringToUTF8(e.char ? e.char : "", keyEventData + 120, 32); + HEAP32[keyEventData + 152 >> 2] = e.charCode; + HEAP32[keyEventData + 156 >> 2] = e.keyCode; + HEAP32[keyEventData + 160 >> 2] = e.which; + if (dynCall_iiii(callbackfunc, eventTypeId, keyEventData, userData)) e.preventDefault() + }; + var eventHandler = { + target: __findEventTarget(target), + allowsDeferredCalls: true, + eventTypeString: eventTypeString, + callbackfunc: callbackfunc, + handlerFunc: keyEventHandlerFunc, + useCapture: useCapture + }; + JSEvents.registerOrRemoveHandler(eventHandler) + } + + function _emscripten_set_keydown_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) { + __registerKeyEventCallback(target, userData, useCapture, callbackfunc, 2, "keydown", targetThread); + return 0 + } + + function _emscripten_set_keypress_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) { + __registerKeyEventCallback(target, userData, useCapture, callbackfunc, 1, "keypress", targetThread); + return 0 + } + + function _emscripten_set_keyup_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) { + __registerKeyEventCallback(target, userData, useCapture, callbackfunc, 3, "keyup", targetThread); + return 0 + } + + function _emscripten_set_main_loop_arg(func, arg, fps, simulateInfiniteLoop) { + _emscripten_set_main_loop(func, fps, simulateInfiniteLoop, arg) + } + + function __fillMouseEventData(eventStruct, e, target) { + HEAP32[eventStruct >> 2] = e.screenX; + HEAP32[eventStruct + 4 >> 2] = e.screenY; + HEAP32[eventStruct + 8 >> 2] = e.clientX; + HEAP32[eventStruct + 12 >> 2] = e.clientY; + HEAP32[eventStruct + 16 >> 2] = e.ctrlKey; + HEAP32[eventStruct + 20 >> 2] = e.shiftKey; + HEAP32[eventStruct + 24 >> 2] = e.altKey; + HEAP32[eventStruct + 28 >> 2] = e.metaKey; + HEAP16[eventStruct + 32 >> 1] = e.button; + HEAP16[eventStruct + 34 >> 1] = e.buttons; + var movementX = e["movementX"] || e.screenX - JSEvents.previousScreenX; + var movementY = e["movementY"] || e.screenY - JSEvents.previousScreenY; + HEAP32[eventStruct + 36 >> 2] = movementX; + HEAP32[eventStruct + 40 >> 2] = movementY; + var rect = __getBoundingClientRect(target); + HEAP32[eventStruct + 44 >> 2] = e.clientX - rect.left; + HEAP32[eventStruct + 48 >> 2] = e.clientY - rect.top; + if (e.type !== "wheel" && e.type !== "mousewheel") { + JSEvents.previousScreenX = e.screenX; + JSEvents.previousScreenY = e.screenY + } + } + + function __registerMouseEventCallback(target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) { + if (!JSEvents.mouseEvent) JSEvents.mouseEvent = _malloc(64); + target = __findEventTarget(target); + var mouseEventHandlerFunc = function(ev) { + var e = ev || event; + __fillMouseEventData(JSEvents.mouseEvent, e, target); + if (dynCall_iiii(callbackfunc, eventTypeId, JSEvents.mouseEvent, userData)) e.preventDefault() + }; + var eventHandler = { + target: target, + allowsDeferredCalls: eventTypeString != "mousemove" && eventTypeString != "mouseenter" && eventTypeString != "mouseleave", + eventTypeString: eventTypeString, + callbackfunc: callbackfunc, + handlerFunc: mouseEventHandlerFunc, + useCapture: useCapture + }; + JSEvents.registerOrRemoveHandler(eventHandler) + } + + function _emscripten_set_mousedown_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) { + __registerMouseEventCallback(target, userData, useCapture, callbackfunc, 5, "mousedown", targetThread); + return 0 + } + + function _emscripten_set_mouseenter_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) { + __registerMouseEventCallback(target, userData, useCapture, callbackfunc, 33, "mouseenter", targetThread); + return 0 + } + + function _emscripten_set_mouseleave_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) { + __registerMouseEventCallback(target, userData, useCapture, callbackfunc, 34, "mouseleave", targetThread); + return 0 + } + + function _emscripten_set_mousemove_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) { + __registerMouseEventCallback(target, userData, useCapture, callbackfunc, 8, "mousemove", targetThread); + return 0 + } + + function _emscripten_set_mouseup_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) { + __registerMouseEventCallback(target, userData, useCapture, callbackfunc, 6, "mouseup", targetThread); + return 0 + } + + function __fillPointerlockChangeEventData(eventStruct) { + var pointerLockElement = document.pointerLockElement || document.mozPointerLockElement || document.webkitPointerLockElement || document.msPointerLockElement; + var isPointerlocked = !!pointerLockElement; + HEAP32[eventStruct >> 2] = isPointerlocked; + var nodeName = JSEvents.getNodeNameForTarget(pointerLockElement); + var id = pointerLockElement && pointerLockElement.id ? pointerLockElement.id : ""; + stringToUTF8(nodeName, eventStruct + 4, 128); + stringToUTF8(id, eventStruct + 132, 128) + } + + function __registerPointerlockChangeEventCallback(target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) { + if (!JSEvents.pointerlockChangeEvent) JSEvents.pointerlockChangeEvent = _malloc(260); + var pointerlockChangeEventHandlerFunc = function(ev) { + var e = ev || event; + var pointerlockChangeEvent = JSEvents.pointerlockChangeEvent; + __fillPointerlockChangeEventData(pointerlockChangeEvent); + if (dynCall_iiii(callbackfunc, eventTypeId, pointerlockChangeEvent, userData)) e.preventDefault() + }; + var eventHandler = { + target: target, + eventTypeString: eventTypeString, + callbackfunc: callbackfunc, + handlerFunc: pointerlockChangeEventHandlerFunc, + useCapture: useCapture + }; + JSEvents.registerOrRemoveHandler(eventHandler) + } + + function _emscripten_set_pointerlockchange_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) { + if (!document || !document.body || !document.body.requestPointerLock && !document.body.mozRequestPointerLock && !document.body.webkitRequestPointerLock && !document.body.msRequestPointerLock) { + return -1 + } + target = __findEventTarget(target); + if (!target) return -4; + __registerPointerlockChangeEventCallback(target, userData, useCapture, callbackfunc, 20, "pointerlockchange", targetThread); + __registerPointerlockChangeEventCallback(target, userData, useCapture, callbackfunc, 20, "mozpointerlockchange", targetThread); + __registerPointerlockChangeEventCallback(target, userData, useCapture, callbackfunc, 20, "webkitpointerlockchange", targetThread); + __registerPointerlockChangeEventCallback(target, userData, useCapture, callbackfunc, 20, "mspointerlockchange", targetThread); + return 0 + } + + function __registerUiEventCallback(target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) { + if (!JSEvents.uiEvent) JSEvents.uiEvent = _malloc(36); + target = __findEventTarget(target); + var uiEventHandlerFunc = function(ev) { + var e = ev || event; + if (e.target != target) { + return + } + var uiEvent = JSEvents.uiEvent; + var b = document.body; + HEAP32[uiEvent >> 2] = e.detail; + HEAP32[uiEvent + 4 >> 2] = b.clientWidth; + HEAP32[uiEvent + 8 >> 2] = b.clientHeight; + HEAP32[uiEvent + 12 >> 2] = innerWidth; + HEAP32[uiEvent + 16 >> 2] = innerHeight; + HEAP32[uiEvent + 20 >> 2] = outerWidth; + HEAP32[uiEvent + 24 >> 2] = outerHeight; + HEAP32[uiEvent + 28 >> 2] = pageXOffset; + HEAP32[uiEvent + 32 >> 2] = pageYOffset; + if (dynCall_iiii(callbackfunc, eventTypeId, uiEvent, userData)) e.preventDefault() + }; + var eventHandler = { + target: target, + eventTypeString: eventTypeString, + callbackfunc: callbackfunc, + handlerFunc: uiEventHandlerFunc, + useCapture: useCapture + }; + JSEvents.registerOrRemoveHandler(eventHandler) + } + + function _emscripten_set_resize_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) { + __registerUiEventCallback(target, userData, useCapture, callbackfunc, 10, "resize", targetThread); + return 0 + } + + function __registerTouchEventCallback(target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) { + if (!JSEvents.touchEvent) JSEvents.touchEvent = _malloc(1684); + target = __findEventTarget(target); + var touchEventHandlerFunc = function(ev) { + var e = ev || event; + var touches = {}; + for (var i = 0; i < e.touches.length; ++i) { + var touch = e.touches[i]; + touch.changed = false; + touches[touch.identifier] = touch + } + for (var i = 0; i < e.changedTouches.length; ++i) { + var touch = e.changedTouches[i]; + touches[touch.identifier] = touch; + touch.changed = true + } + for (var i = 0; i < e.targetTouches.length; ++i) { + var touch = e.targetTouches[i]; + touches[touch.identifier].onTarget = true + } + var touchEvent = JSEvents.touchEvent; + var ptr = touchEvent; + HEAP32[ptr + 4 >> 2] = e.ctrlKey; + HEAP32[ptr + 8 >> 2] = e.shiftKey; + HEAP32[ptr + 12 >> 2] = e.altKey; + HEAP32[ptr + 16 >> 2] = e.metaKey; + ptr += 20; + var targetRect = __getBoundingClientRect(target); + var numTouches = 0; + for (var i in touches) { + var t = touches[i]; + HEAP32[ptr >> 2] = t.identifier; + HEAP32[ptr + 4 >> 2] = t.screenX; + HEAP32[ptr + 8 >> 2] = t.screenY; + HEAP32[ptr + 12 >> 2] = t.clientX; + HEAP32[ptr + 16 >> 2] = t.clientY; + HEAP32[ptr + 20 >> 2] = t.pageX; + HEAP32[ptr + 24 >> 2] = t.pageY; + HEAP32[ptr + 28 >> 2] = t.changed; + HEAP32[ptr + 32 >> 2] = t.onTarget; + HEAP32[ptr + 36 >> 2] = t.clientX - targetRect.left; + HEAP32[ptr + 40 >> 2] = t.clientY - targetRect.top; + ptr += 52; + if (++numTouches >= 32) { + break + } + } + HEAP32[touchEvent >> 2] = numTouches; + if (dynCall_iiii(callbackfunc, eventTypeId, touchEvent, userData)) e.preventDefault() + }; + var eventHandler = { + target: target, + allowsDeferredCalls: eventTypeString == "touchstart" || eventTypeString == "touchend", + eventTypeString: eventTypeString, + callbackfunc: callbackfunc, + handlerFunc: touchEventHandlerFunc, + useCapture: useCapture + }; + JSEvents.registerOrRemoveHandler(eventHandler) + } + + function _emscripten_set_touchcancel_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) { + __registerTouchEventCallback(target, userData, useCapture, callbackfunc, 25, "touchcancel", targetThread); + return 0 + } + + function _emscripten_set_touchend_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) { + __registerTouchEventCallback(target, userData, useCapture, callbackfunc, 23, "touchend", targetThread); + return 0 + } + + function _emscripten_set_touchmove_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) { + __registerTouchEventCallback(target, userData, useCapture, callbackfunc, 24, "touchmove", targetThread); + return 0 + } + + function _emscripten_set_touchstart_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) { + __registerTouchEventCallback(target, userData, useCapture, callbackfunc, 22, "touchstart", targetThread); + return 0 + } + + function __fillVisibilityChangeEventData(eventStruct) { + var visibilityStates = ["hidden", "visible", "prerender", "unloaded"]; + var visibilityState = visibilityStates.indexOf(document.visibilityState); + HEAP32[eventStruct >> 2] = document.hidden; + HEAP32[eventStruct + 4 >> 2] = visibilityState + } + + function __registerVisibilityChangeEventCallback(target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) { + if (!JSEvents.visibilityChangeEvent) JSEvents.visibilityChangeEvent = _malloc(8); + var visibilityChangeEventHandlerFunc = function(ev) { + var e = ev || event; + var visibilityChangeEvent = JSEvents.visibilityChangeEvent; + __fillVisibilityChangeEventData(visibilityChangeEvent); + if (dynCall_iiii(callbackfunc, eventTypeId, visibilityChangeEvent, userData)) e.preventDefault() + }; + var eventHandler = { + target: target, + eventTypeString: eventTypeString, + callbackfunc: callbackfunc, + handlerFunc: visibilityChangeEventHandlerFunc, + useCapture: useCapture + }; + JSEvents.registerOrRemoveHandler(eventHandler) + } + + function _emscripten_set_visibilitychange_callback_on_thread(userData, useCapture, callbackfunc, targetThread) { + __registerVisibilityChangeEventCallback(specialHTMLTargets[1], userData, useCapture, callbackfunc, 21, "visibilitychange", targetThread); + return 0 + } + + function __registerWheelEventCallback(target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) { + if (!JSEvents.wheelEvent) JSEvents.wheelEvent = _malloc(96); + var wheelHandlerFunc = function(ev) { + var e = ev || event; + var wheelEvent = JSEvents.wheelEvent; + __fillMouseEventData(wheelEvent, e, target); + HEAPF64[wheelEvent + 64 >> 3] = e["deltaX"]; + HEAPF64[wheelEvent + 72 >> 3] = e["deltaY"]; + HEAPF64[wheelEvent + 80 >> 3] = e["deltaZ"]; + HEAP32[wheelEvent + 88 >> 2] = e["deltaMode"]; + if (dynCall_iiii(callbackfunc, eventTypeId, wheelEvent, userData)) e.preventDefault() + }; + var mouseWheelHandlerFunc = function(ev) { + var e = ev || event; + __fillMouseEventData(JSEvents.wheelEvent, e, target); + HEAPF64[JSEvents.wheelEvent + 64 >> 3] = e["wheelDeltaX"] || 0; + var wheelDeltaY = -(e["wheelDeltaY"] || e["wheelDelta"]); + HEAPF64[JSEvents.wheelEvent + 72 >> 3] = wheelDeltaY; + HEAPF64[JSEvents.wheelEvent + 80 >> 3] = 0; + HEAP32[JSEvents.wheelEvent + 88 >> 2] = 0; + var shouldCancel = dynCall_iiii(callbackfunc, eventTypeId, JSEvents.wheelEvent, userData); + if (shouldCancel) { + e.preventDefault() + } + }; + var eventHandler = { + target: target, + allowsDeferredCalls: true, + eventTypeString: eventTypeString, + callbackfunc: callbackfunc, + handlerFunc: eventTypeString == "wheel" ? wheelHandlerFunc : mouseWheelHandlerFunc, + useCapture: useCapture + }; + JSEvents.registerOrRemoveHandler(eventHandler) + } + + function _emscripten_set_wheel_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) { + target = __findEventTarget(target); + if (typeof target.onwheel !== "undefined") { + __registerWheelEventCallback(target, userData, useCapture, callbackfunc, 9, "wheel", targetThread); + return 0 + } else if (typeof target.onmousewheel !== "undefined") { + __registerWheelEventCallback(target, userData, useCapture, callbackfunc, 9, "mousewheel", targetThread); + return 0 + } else { + return -1 + } + } + + function _emscripten_sleep() { + throw "Please compile your program with async support in order to use asynchronous operations like emscripten_sleep" + } + var Fetch = { + xhrs: [], + setu64: function(addr, val) { + HEAPU32[addr >> 2] = val; + HEAPU32[addr + 4 >> 2] = val / 4294967296 | 0 + }, + openDatabase: function(dbname, dbversion, onsuccess, onerror) { + try { + var openRequest = indexedDB.open(dbname, dbversion) + } catch (e) { + return onerror(e) + } + openRequest.onupgradeneeded = function(event) { + var db = event.target.result; + if (db.objectStoreNames.contains("FILES")) { + db.deleteObjectStore("FILES") + } + db.createObjectStore("FILES") + }; + openRequest.onsuccess = function(event) { + onsuccess(event.target.result) + }; + openRequest.onerror = function(error) { + onerror(error) + } + }, + staticInit: function() { + var isMainThread = true; + var onsuccess = function(db) { + Fetch.dbInstance = db; + if (isMainThread) { + removeRunDependency("library_fetch_init") + } + }; + var onerror = function() { + Fetch.dbInstance = false; + if (isMainThread) { + removeRunDependency("library_fetch_init") + } + }; + Fetch.openDatabase("emscripten_filesystem", 1, onsuccess, onerror); + if (typeof ENVIRONMENT_IS_FETCH_WORKER === "undefined" || !ENVIRONMENT_IS_FETCH_WORKER) addRunDependency("library_fetch_init") + } + }; + + function __emscripten_fetch_xhr(fetch, onsuccess, onerror, onprogress, onreadystatechange) { + var url = HEAPU32[fetch + 8 >> 2]; + if (!url) { + onerror(fetch, 0, "no url specified!"); + return + } + var url_ = UTF8ToString(url); + var fetch_attr = fetch + 112; + var requestMethod = UTF8ToString(fetch_attr); + if (!requestMethod) requestMethod = "GET"; + var userData = HEAPU32[fetch_attr + 32 >> 2]; + var fetchAttributes = HEAPU32[fetch_attr + 52 >> 2]; + var timeoutMsecs = HEAPU32[fetch_attr + 56 >> 2]; + var withCredentials = !!HEAPU32[fetch_attr + 60 >> 2]; + var destinationPath = HEAPU32[fetch_attr + 64 >> 2]; + var userName = HEAPU32[fetch_attr + 68 >> 2]; + var password = HEAPU32[fetch_attr + 72 >> 2]; + var requestHeaders = HEAPU32[fetch_attr + 76 >> 2]; + var overriddenMimeType = HEAPU32[fetch_attr + 80 >> 2]; + var dataPtr = HEAPU32[fetch_attr + 84 >> 2]; + var dataLength = HEAPU32[fetch_attr + 88 >> 2]; + var fetchAttrLoadToMemory = !!(fetchAttributes & 1); + var fetchAttrStreamData = !!(fetchAttributes & 2); + var fetchAttrSynchronous = !!(fetchAttributes & 64); + var userNameStr = userName ? UTF8ToString(userName) : undefined; + var passwordStr = password ? UTF8ToString(password) : undefined; + var overriddenMimeTypeStr = overriddenMimeType ? UTF8ToString(overriddenMimeType) : undefined; + var xhr = new XMLHttpRequest; + xhr.withCredentials = withCredentials; + //console.log('url_: '+url_); + xhr.open(requestMethod, url_, !fetchAttrSynchronous, userNameStr, passwordStr); + if (!fetchAttrSynchronous) xhr.timeout = timeoutMsecs; + xhr.url_ = url_; + xhr.responseType = "arraybuffer"; + if (overriddenMimeType) { + xhr.overrideMimeType(overriddenMimeTypeStr) + } + if (requestHeaders) { + for (;;) { + var key = HEAPU32[requestHeaders >> 2]; + if (!key) break; + var value = HEAPU32[requestHeaders + 4 >> 2]; + if (!value) break; + requestHeaders += 8; + var keyStr = UTF8ToString(key); + var valueStr = UTF8ToString(value); + xhr.setRequestHeader(keyStr, valueStr) + } + } + Fetch.xhrs.push(xhr); + var id = Fetch.xhrs.length; + HEAPU32[fetch + 0 >> 2] = id; + var data = dataPtr && dataLength ? HEAPU8.slice(dataPtr, dataPtr + dataLength) : null; + xhr.onload = function(e) { + var len = xhr.response ? xhr.response.byteLength : 0; + var ptr = 0; + var ptrLen = 0; + if (fetchAttrLoadToMemory && !fetchAttrStreamData) { + ptrLen = len; + ptr = _malloc(ptrLen); + HEAPU8.set(new Uint8Array(xhr.response), ptr) + } + HEAPU32[fetch + 12 >> 2] = ptr; + Fetch.setu64(fetch + 16, ptrLen); + Fetch.setu64(fetch + 24, 0); + if (len) { + Fetch.setu64(fetch + 32, len) + } + HEAPU16[fetch + 40 >> 1] = xhr.readyState; + if (xhr.readyState === 4 && xhr.status === 0) { + if (len > 0) xhr.status = 200; + else xhr.status = 404 + } + HEAPU16[fetch + 42 >> 1] = xhr.status; + if (xhr.statusText) stringToUTF8(xhr.statusText, fetch + 44, 64); + if (xhr.status >= 200 && xhr.status < 300) { + if (onsuccess) onsuccess(fetch, xhr, e) + } else { + if (onerror) onerror(fetch, xhr, e) + } + }; + + xhr.onerror = function(e) { + var status = xhr.status; + if (xhr.readyState === 4 && status === 0) status = 404; + HEAPU32[fetch + 12 >> 2] = 0; + Fetch.setu64(fetch + 16, 0); + Fetch.setu64(fetch + 24, 0); + Fetch.setu64(fetch + 32, 0); + HEAPU16[fetch + 40 >> 1] = xhr.readyState; + HEAPU16[fetch + 42 >> 1] = status; + if (onerror) onerror(fetch, xhr, e) + }; + xhr.ontimeout = function(e) { + if (onerror) onerror(fetch, xhr, e) + }; + xhr.onprogress = function(e) { + var ptrLen = fetchAttrLoadToMemory && fetchAttrStreamData && xhr.response ? xhr.response.byteLength : 0; + var ptr = 0; + if (fetchAttrLoadToMemory && fetchAttrStreamData) { + ptr = _malloc(ptrLen); + HEAPU8.set(new Uint8Array(xhr.response), ptr) + } + HEAPU32[fetch + 12 >> 2] = ptr; + Fetch.setu64(fetch + 16, ptrLen); + Fetch.setu64(fetch + 24, e.loaded - ptrLen); + Fetch.setu64(fetch + 32, e.total); + HEAPU16[fetch + 40 >> 1] = xhr.readyState; + if (xhr.readyState >= 3 && xhr.status === 0 && e.loaded > 0) xhr.status = 200; + HEAPU16[fetch + 42 >> 1] = xhr.status; + if (xhr.statusText) stringToUTF8(xhr.statusText, fetch + 44, 64); + if (onprogress) onprogress(fetch, xhr, e) + }; + xhr.onreadystatechange = function(e) { + HEAPU16[fetch + 40 >> 1] = xhr.readyState; + if (xhr.readyState >= 2) { + HEAPU16[fetch + 42 >> 1] = xhr.status + } + if (onreadystatechange) onreadystatechange(fetch, xhr, e) + }; + try { + xhr.send(data) + } catch (e) { + if (onerror) onerror(fetch, xhr, e) + } + } + + function __emscripten_fetch_cache_data(db, fetch, data, onsuccess, onerror) { + if (!db) { + onerror(fetch, 0, "IndexedDB not available!"); + return + } + var fetch_attr = fetch + 112; + var destinationPath = HEAPU32[fetch_attr + 64 >> 2]; + if (!destinationPath) destinationPath = HEAPU32[fetch + 8 >> 2]; + var destinationPathStr = UTF8ToString(destinationPath); + try { + var transaction = db.transaction(["FILES"], "readwrite"); + var packages = transaction.objectStore("FILES"); + var putRequest = packages.put(data, destinationPathStr); + putRequest.onsuccess = function(event) { + HEAPU16[fetch + 40 >> 1] = 4; + HEAPU16[fetch + 42 >> 1] = 200; + stringToUTF8("OK", fetch + 44, 64); + onsuccess(fetch, 0, destinationPathStr) + }; + putRequest.onerror = function(error) { + HEAPU16[fetch + 40 >> 1] = 4; + HEAPU16[fetch + 42 >> 1] = 413; + stringToUTF8("Payload Too Large", fetch + 44, 64); + onerror(fetch, 0, error) + } + } catch (e) { + onerror(fetch, 0, e) + } + } + + function __emscripten_fetch_load_cached_data(db, fetch, onsuccess, onerror) { + if (!db) { + onerror(fetch, 0, "IndexedDB not available!"); + return + } + var fetch_attr = fetch + 112; + var path = HEAPU32[fetch_attr + 64 >> 2]; + if (!path) path = HEAPU32[fetch + 8 >> 2]; + var pathStr = UTF8ToString(path); + try { + var transaction = db.transaction(["FILES"], "readonly"); + var packages = transaction.objectStore("FILES"); + var getRequest = packages.get(pathStr); + getRequest.onsuccess = function(event) { + if (event.target.result) { + var value = event.target.result; + var len = value.byteLength || value.length; + var ptr = _malloc(len); + HEAPU8.set(new Uint8Array(value), ptr); + HEAPU32[fetch + 12 >> 2] = ptr; + Fetch.setu64(fetch + 16, len); + Fetch.setu64(fetch + 24, 0); + Fetch.setu64(fetch + 32, len); + HEAPU16[fetch + 40 >> 1] = 4; + HEAPU16[fetch + 42 >> 1] = 200; + stringToUTF8("OK", fetch + 44, 64); + onsuccess(fetch, 0, value) + } else { + HEAPU16[fetch + 40 >> 1] = 4; + HEAPU16[fetch + 42 >> 1] = 404; + stringToUTF8("Not Found", fetch + 44, 64); + onerror(fetch, 0, "no data") + } + }; + getRequest.onerror = function(error) { + HEAPU16[fetch + 40 >> 1] = 4; + HEAPU16[fetch + 42 >> 1] = 404; + stringToUTF8("Not Found", fetch + 44, 64); + onerror(fetch, 0, error) + } + } catch (e) { + onerror(fetch, 0, e) + } + } + + function __emscripten_fetch_delete_cached_data(db, fetch, onsuccess, onerror) { + if (!db) { + onerror(fetch, 0, "IndexedDB not available!"); + return + } + var fetch_attr = fetch + 112; + var path = HEAPU32[fetch_attr + 64 >> 2]; + if (!path) path = HEAPU32[fetch + 8 >> 2]; + var pathStr = UTF8ToString(path); + try { + var transaction = db.transaction(["FILES"], "readwrite"); + var packages = transaction.objectStore("FILES"); + var request = packages.delete(pathStr); + request.onsuccess = function(event) { + var value = event.target.result; + HEAPU32[fetch + 12 >> 2] = 0; + Fetch.setu64(fetch + 16, 0); + Fetch.setu64(fetch + 24, 0); + Fetch.setu64(fetch + 32, 0); + HEAPU16[fetch + 40 >> 1] = 4; + HEAPU16[fetch + 42 >> 1] = 200; + stringToUTF8("OK", fetch + 44, 64); + onsuccess(fetch, 0, value) + }; + request.onerror = function(error) { + HEAPU16[fetch + 40 >> 1] = 4; + HEAPU16[fetch + 42 >> 1] = 404; + stringToUTF8("Not Found", fetch + 44, 64); + onerror(fetch, 0, error) + } + } catch (e) { + onerror(fetch, 0, e) + } + } + var _fetch_work_queue = 887136; + + function _emscripten_start_fetch(fetch, successcb, errorcb, progresscb, readystatechangecb) { + if (typeof noExitRuntime !== "undefined") noExitRuntime = true; + var fetch_attr = fetch + 112; + var requestMethod = UTF8ToString(fetch_attr); + var onsuccess = HEAPU32[fetch_attr + 36 >> 2]; + var onerror = HEAPU32[fetch_attr + 40 >> 2]; + var onprogress = HEAPU32[fetch_attr + 44 >> 2]; + var onreadystatechange = HEAPU32[fetch_attr + 48 >> 2]; + var fetchAttributes = HEAPU32[fetch_attr + 52 >> 2]; + var fetchAttrPersistFile = !!(fetchAttributes & 4); + var fetchAttrNoDownload = !!(fetchAttributes & 32); + var fetchAttrReplace = !!(fetchAttributes & 16); + var reportSuccess = function(fetch, xhr, e) { + if (onsuccess) dynCall_vi(onsuccess, fetch); + else if (successcb) successcb(fetch) + }; + var reportProgress = function(fetch, xhr, e) { + if (onprogress) dynCall_vi(onprogress, fetch); + else if (progresscb) progresscb(fetch) + }; + var reportError = function(fetch, xhr, e) { + if (onerror) dynCall_vi(onerror, fetch); + else if (errorcb) errorcb(fetch) + }; + var reportReadyStateChange = function(fetch, xhr, e) { + if (onreadystatechange) dynCall_vi(onreadystatechange, fetch); + else if (readystatechangecb) readystatechangecb(fetch) + }; + var performUncachedXhr = function(fetch, xhr, e) { + __emscripten_fetch_xhr(fetch, reportSuccess, reportError, reportProgress, reportReadyStateChange) + }; + var cacheResultAndReportSuccess = function(fetch, xhr, e) { + var storeSuccess = function(fetch, xhr, e) { + if (onsuccess) dynCall_vi(onsuccess, fetch); + else if (successcb) successcb(fetch) + }; + var storeError = function(fetch, xhr, e) { + if (onsuccess) dynCall_vi(onsuccess, fetch); + else if (successcb) successcb(fetch) + }; + __emscripten_fetch_cache_data(Fetch.dbInstance, fetch, xhr.response, storeSuccess, storeError) + }; + var performCachedXhr = function(fetch, xhr, e) { + __emscripten_fetch_xhr(fetch, cacheResultAndReportSuccess, reportError, reportProgress, reportReadyStateChange) + }; + if (requestMethod === "EM_IDB_STORE") { + var ptr = HEAPU32[fetch_attr + 84 >> 2]; + __emscripten_fetch_cache_data(Fetch.dbInstance, fetch, HEAPU8.slice(ptr, ptr + HEAPU32[fetch_attr + 88 >> 2]), reportSuccess, reportError) + } else if (requestMethod === "EM_IDB_DELETE") { + __emscripten_fetch_delete_cached_data(Fetch.dbInstance, fetch, reportSuccess, reportError) + } else if (!fetchAttrReplace) { + __emscripten_fetch_load_cached_data(Fetch.dbInstance, fetch, reportSuccess, fetchAttrNoDownload ? reportError : fetchAttrPersistFile ? performCachedXhr : performUncachedXhr) + } else if (!fetchAttrNoDownload) { + __emscripten_fetch_xhr(fetch, fetchAttrPersistFile ? cacheResultAndReportSuccess : reportSuccess, reportError, reportProgress, reportReadyStateChange) + } else { + return 0 + } + return fetch + } + var ENV = {}; + + function __getExecutableName() { + return thisProgram || "./this.program" + } + + function getEnvStrings() { + if (!getEnvStrings.strings) { + var env = { + "USER": "web_user", + "LOGNAME": "web_user", + "PATH": "/", + "PWD": "/", + "HOME": "/home/web_user", + "LANG": (typeof navigator === "object" && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8", + "_": __getExecutableName() + }; + for (var x in ENV) { + env[x] = ENV[x] + } + var strings = []; + for (var x in env) { + strings.push(x + "=" + env[x]) + } + getEnvStrings.strings = strings + } + return getEnvStrings.strings + } + + function _environ_get(__environ, environ_buf) { + var bufSize = 0; + getEnvStrings().forEach(function(string, i) { + var ptr = environ_buf + bufSize; + HEAP32[__environ + i * 4 >> 2] = ptr; + writeAsciiToMemory(string, ptr); + bufSize += string.length + 1 + }); + return 0 + } + + function _environ_sizes_get(penviron_count, penviron_buf_size) { + var strings = getEnvStrings(); + HEAP32[penviron_count >> 2] = strings.length; + var bufSize = 0; + strings.forEach(function(string) { + bufSize += string.length + 1 + }); + HEAP32[penviron_buf_size >> 2] = bufSize; + return 0 + } + + function _exit(status) { + exit(status) + } + + 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)) abort(e); + return e.errno + } + } + + function _fd_fdstat_get(fd, pbuf) { + try { + var stream = SYSCALLS.getStreamFromFD(fd); + var type = stream.tty ? 2 : FS.isDir(stream.mode) ? 3 : FS.isLink(stream.mode) ? 7 : 4; + HEAP8[pbuf >> 0] = type; + return 0 + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(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)) abort(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)) abort(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)) abort(e); + return e.errno + } + } + + function _getTempRet0() { + return getTempRet0() | 0 + } + + function _gettimeofday(ptr) { + var now = Date.now(); + HEAP32[ptr >> 2] = now / 1e3 | 0; + HEAP32[ptr + 4 >> 2] = now % 1e3 * 1e3 | 0; + return 0 + } + var ___tm_timezone = (stringToUTF8("GMT", 887040, 4), 887040); + + function _gmtime_r(time, tmPtr) { + var date = new Date(HEAP32[time >> 2] * 1e3); + HEAP32[tmPtr >> 2] = date.getUTCSeconds(); + HEAP32[tmPtr + 4 >> 2] = date.getUTCMinutes(); + HEAP32[tmPtr + 8 >> 2] = date.getUTCHours(); + HEAP32[tmPtr + 12 >> 2] = date.getUTCDate(); + HEAP32[tmPtr + 16 >> 2] = date.getUTCMonth(); + HEAP32[tmPtr + 20 >> 2] = date.getUTCFullYear() - 1900; + HEAP32[tmPtr + 24 >> 2] = date.getUTCDay(); + HEAP32[tmPtr + 36 >> 2] = 0; + HEAP32[tmPtr + 32 >> 2] = 0; + var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0); + var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0; + HEAP32[tmPtr + 28 >> 2] = yday; + HEAP32[tmPtr + 40 >> 2] = ___tm_timezone; + return tmPtr + } + var ___tm_current = 886992; + + function _tzset() { + if (_tzset.called) return; + _tzset.called = true; + HEAP32[__get_timezone() >> 2] = (new Date).getTimezoneOffset() * 60; + var currentYear = (new Date).getFullYear(); + var winter = new Date(currentYear, 0, 1); + var summer = new Date(currentYear, 6, 1); + HEAP32[__get_daylight() >> 2] = Number(winter.getTimezoneOffset() != summer.getTimezoneOffset()); + + 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 (summer.getTimezoneOffset() < winter.getTimezoneOffset()) { + HEAP32[__get_tzname() >> 2] = winterNamePtr; + HEAP32[__get_tzname() + 4 >> 2] = summerNamePtr + } else { + HEAP32[__get_tzname() >> 2] = summerNamePtr; + HEAP32[__get_tzname() + 4 >> 2] = winterNamePtr + } + } + + function _localtime_r(time, tmPtr) { + _tzset(); + 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; + var zonePtr = HEAP32[__get_tzname() + (dst ? 4 : 0) >> 2]; + HEAP32[tmPtr + 40 >> 2] = zonePtr; + return tmPtr + } + + function _localtime(time) { + return _localtime_r(time, ___tm_current) + } + + function _mktime(tmPtr) { + _tzset(); + var date = new Date(HEAP32[tmPtr + 20 >> 2] + 1900, HEAP32[tmPtr + 16 >> 2], HEAP32[tmPtr + 12 >> 2], HEAP32[tmPtr + 8 >> 2], HEAP32[tmPtr + 4 >> 2], HEAP32[tmPtr >> 2], 0); + var dst = HEAP32[tmPtr + 32 >> 2]; + var guessedOffset = date.getTimezoneOffset(); + var start = new Date(date.getFullYear(), 0, 1); + var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset(); + var winterOffset = start.getTimezoneOffset(); + var dstOffset = Math.min(winterOffset, summerOffset); + if (dst < 0) { + HEAP32[tmPtr + 32 >> 2] = Number(summerOffset != winterOffset && dstOffset == guessedOffset) + } else if (dst > 0 != (dstOffset == guessedOffset)) { + var nonDstOffset = Math.max(winterOffset, summerOffset); + var trueOffset = dst > 0 ? dstOffset : nonDstOffset; + date.setTime(date.getTime() + (trueOffset - guessedOffset) * 6e4) + } + HEAP32[tmPtr + 24 >> 2] = date.getDay(); + var yday = (date.getTime() - start.getTime()) / (1e3 * 60 * 60 * 24) | 0; + HEAP32[tmPtr + 28 >> 2] = yday; + return date.getTime() / 1e3 | 0 + } + + function _usleep(useconds) { + var start = _emscripten_get_now(); + while (_emscripten_get_now() - start < useconds / 1e3) {} + } + + function _nanosleep(rqtp, rmtp) { + if (rqtp === 0) { + setErrNo(28); + return -1 + } + var seconds = HEAP32[rqtp >> 2]; + var nanoseconds = HEAP32[rqtp + 4 >> 2]; + if (nanoseconds < 0 || nanoseconds > 999999999 || seconds < 0) { + setErrNo(28); + return -1 + } + if (rmtp !== 0) { + HEAP32[rmtp >> 2] = 0; + HEAP32[rmtp + 4 >> 2] = 0 + } + return _usleep(seconds * 1e6 + nanoseconds / 1e3) + } + + function _setTempRet0($i) { + setTempRet0($i | 0) + } + + function _sigaction(signum, act, oldact) { + return 0 + } + var __sigalrm_handler = 0; + + function _signal(sig, func) { + if (sig == 14) { + __sigalrm_handler = func + } else {} + return 0 + } + + function _sysconf(name) { + switch (name) { + case 30: + return 16384; + case 85: + var maxHeapSize = 2147483648; + return maxHeapSize / 16384; + case 132: + case 133: + case 12: + case 137: + case 138: + case 15: + case 235: + case 16: + case 17: + case 18: + case 19: + case 20: + case 149: + case 13: + case 10: + case 236: + case 153: + case 9: + case 21: + case 22: + case 159: + case 154: + case 14: + case 77: + case 78: + case 139: + case 80: + case 81: + case 82: + case 68: + case 67: + case 164: + case 11: + case 29: + case 47: + case 48: + case 95: + case 52: + case 51: + case 46: + case 79: + return 200809; + case 27: + case 246: + case 127: + case 128: + case 23: + case 24: + case 160: + case 161: + case 181: + case 182: + case 242: + case 183: + case 184: + case 243: + case 244: + case 245: + case 165: + case 178: + case 179: + case 49: + case 50: + case 168: + case 169: + case 175: + case 170: + case 171: + case 172: + case 97: + case 76: + case 32: + case 173: + case 35: + return -1; + case 176: + case 177: + case 7: + case 155: + case 8: + case 157: + case 125: + case 126: + case 92: + case 93: + case 129: + case 130: + case 131: + case 94: + case 91: + return 1; + case 74: + case 60: + case 69: + case 70: + case 4: + return 1024; + case 31: + case 42: + case 72: + return 32; + case 87: + case 26: + case 33: + return 2147483647; + case 34: + case 1: + return 47839; + case 38: + case 36: + return 99; + case 43: + case 37: + return 2048; + case 0: + return 2097152; + case 3: + return 65536; + case 28: + return 32768; + case 44: + return 32767; + case 75: + return 16384; + case 39: + return 1e3; + case 89: + return 700; + case 71: + return 256; + case 40: + return 255; + case 2: + return 100; + case 180: + return 64; + case 25: + return 20; + case 5: + return 16; + case 6: + return 6; + case 73: + return 4; + case 84: { + if (typeof navigator === "object") return navigator["hardwareConcurrency"] || 1; + return 1 + } + } + setErrNo(28); + return -1 + } + + function _time(ptr) { + var ret = Date.now() / 1e3 | 0; + if (ptr) { + HEAP32[ptr >> 2] = ret + } + return ret + } + + function readAsmConstArgs(sigPtr, buf) { + if (!readAsmConstArgs.array) { + readAsmConstArgs.array = [] + } + var args = readAsmConstArgs.array; + args.length = 0; + var ch; + while (ch = HEAPU8[sigPtr++]) { + if (ch === 100 || ch === 102) { + buf = buf + 7 & ~7; + args.push(HEAPF64[buf >> 3]); + buf += 8 + } else { + buf = buf + 3 & ~3; + args.push(HEAP32[buf >> 2]); + buf += 4 + } + } + return args + } + var FSNode = function(parent, name, mode, rdev) { + if (!parent) { + parent = this + } + this.parent = parent; + this.mount = parent.mount; + this.mounted = null; + this.id = FS.nextInode++; + this.name = name; + this.mode = mode; + this.node_ops = {}; + this.stream_ops = {}; + this.rdev = rdev + }; + var readMode = 292 | 73; + var writeMode = 146; + Object.defineProperties(FSNode.prototype, { + read: { + get: function() { + return (this.mode & readMode) === readMode + }, + set: function(val) { + val ? this.mode |= readMode : this.mode &= ~readMode + } + }, + write: { + get: function() { + return (this.mode & writeMode) === writeMode + }, + set: function(val) { + val ? this.mode |= writeMode : this.mode &= ~writeMode + } + }, + isFolder: { + get: function() { + return FS.isDir(this.mode) + } + }, + isDevice: { + get: function() { + return FS.isChrdev(this.mode) + } + } + }); + FS.FSNode = FSNode; + FS.staticInit(); + Module["FS_createFolder"] = FS.createFolder; + Module["FS_createPath"] = FS.createPath; + Module["FS_createDataFile"] = FS.createDataFile; + Module["FS_createPreloadedFile"] = FS.createPreloadedFile; + Module["FS_createLazyFile"] = FS.createLazyFile; + Module["FS_createLink"] = FS.createLink; + Module["FS_createDevice"] = FS.createDevice; + Module["FS_unlink"] = FS.unlink; + 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 GLctx; + GL.init(); + for (var i = 0; i < 32; i++) __tempFixedLengthArray.push(new Array(i)); + Fetch.staticInit(); + 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 = { + "__cxa_atexit": ___cxa_atexit, + "__sys_fcntl64": ___sys_fcntl64, + "__sys_fstat64": ___sys_fstat64, + "__sys_ioctl": ___sys_ioctl, + "__sys_open": ___sys_open, + "__sys_read": ___sys_read, + "__sys_stat64": ___sys_stat64, + "_emscripten_fetch_free": __emscripten_fetch_free, + "abort": _abort, + "alBufferData": _alBufferData, + "alDeleteBuffers": _alDeleteBuffers, + "alDeleteSources": _alDeleteSources, + "alGenBuffers": _alGenBuffers, + "alGenSources": _alGenSources, + "alGetSourcei": _alGetSourcei, + "alSource3i": _alSource3i, + "alSourcePlay": _alSourcePlay, + "alSourceQueueBuffers": _alSourceQueueBuffers, + "alSourceStop": _alSourceStop, + "alSourceUnqueueBuffers": _alSourceUnqueueBuffers, + "alSourcef": _alSourcef, + "alSourcei": _alSourcei, + "alcCloseDevice": _alcCloseDevice, + "alcCreateContext": _alcCreateContext, + "alcDestroyContext": _alcDestroyContext, + "alcGetIntegerv": _alcGetIntegerv, + "alcMakeContextCurrent": _alcMakeContextCurrent, + "alcOpenDevice": _alcOpenDevice, + "changeCursor": changeCursor, + "clock_gettime": _clock_gettime, + "dlclose": _dlclose, + "eglBindAPI": _eglBindAPI, + "eglChooseConfig": _eglChooseConfig, + "eglCreateContext": _eglCreateContext, + "eglCreateWindowSurface": _eglCreateWindowSurface, + "eglDestroyContext": _eglDestroyContext, + "eglDestroySurface": _eglDestroySurface, + "eglGetConfigAttrib": _eglGetConfigAttrib, + "eglGetDisplay": _eglGetDisplay, + "eglGetError": _eglGetError, + "eglGetProcAddress": _eglGetProcAddress, + "eglInitialize": _eglInitialize, + "eglMakeCurrent": _eglMakeCurrent, + "eglQueryString": _eglQueryString, + "eglSwapBuffers": _eglSwapBuffers, + "eglSwapInterval": _eglSwapInterval, + "eglTerminate": _eglTerminate, + "eglWaitGL": _eglWaitGL, + "eglWaitNative": _eglWaitNative, + "emscripten_asm_const_iii": _emscripten_asm_const_iii, + "emscripten_cancel_main_loop": _emscripten_cancel_main_loop, + "emscripten_exit_fullscreen": _emscripten_exit_fullscreen, + "emscripten_exit_pointerlock": _emscripten_exit_pointerlock, + "emscripten_get_canvas_element_size": _emscripten_get_canvas_element_size, + "emscripten_get_device_pixel_ratio": _emscripten_get_device_pixel_ratio, + "emscripten_get_element_css_size": _emscripten_get_element_css_size, + "emscripten_get_fullscreen_status": _emscripten_get_fullscreen_status, + "emscripten_get_gamepad_status": _emscripten_get_gamepad_status, + "emscripten_get_now": _emscripten_get_now, + "emscripten_get_num_gamepads": _emscripten_get_num_gamepads, + "emscripten_get_sbrk_ptr": _emscripten_get_sbrk_ptr, + "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_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_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_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_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_has_asyncify": _emscripten_has_asyncify, + "emscripten_is_main_browser_thread": _emscripten_is_main_browser_thread, + "emscripten_log": _emscripten_log, + "emscripten_longjmp": _emscripten_longjmp, + "emscripten_memcpy_big": _emscripten_memcpy_big, + "emscripten_request_fullscreen_strategy": _emscripten_request_fullscreen_strategy, + "emscripten_request_pointerlock": _emscripten_request_pointerlock, + "emscripten_resize_heap": _emscripten_resize_heap, + "emscripten_sample_gamepad_data": _emscripten_sample_gamepad_data, + "emscripten_set_beforeunload_callback_on_thread": _emscripten_set_beforeunload_callback_on_thread, + "emscripten_set_blur_callback_on_thread": _emscripten_set_blur_callback_on_thread, + "emscripten_set_canvas_element_size": _emscripten_set_canvas_element_size, + "emscripten_set_element_css_size": _emscripten_set_element_css_size, + "emscripten_set_focus_callback_on_thread": _emscripten_set_focus_callback_on_thread, + "emscripten_set_fullscreenchange_callback_on_thread": _emscripten_set_fullscreenchange_callback_on_thread, + "emscripten_set_gamepadconnected_callback_on_thread": _emscripten_set_gamepadconnected_callback_on_thread, + "emscripten_set_gamepaddisconnected_callback_on_thread": _emscripten_set_gamepaddisconnected_callback_on_thread, + "emscripten_set_keydown_callback_on_thread": _emscripten_set_keydown_callback_on_thread, + "emscripten_set_keypress_callback_on_thread": _emscripten_set_keypress_callback_on_thread, + "emscripten_set_keyup_callback_on_thread": _emscripten_set_keyup_callback_on_thread, + "emscripten_set_main_loop_arg": _emscripten_set_main_loop_arg, + "emscripten_set_mousedown_callback_on_thread": _emscripten_set_mousedown_callback_on_thread, + "emscripten_set_mouseenter_callback_on_thread": _emscripten_set_mouseenter_callback_on_thread, + "emscripten_set_mouseleave_callback_on_thread": _emscripten_set_mouseleave_callback_on_thread, + "emscripten_set_mousemove_callback_on_thread": _emscripten_set_mousemove_callback_on_thread, + "emscripten_set_mouseup_callback_on_thread": _emscripten_set_mouseup_callback_on_thread, + "emscripten_set_pointerlockchange_callback_on_thread": _emscripten_set_pointerlockchange_callback_on_thread, + "emscripten_set_resize_callback_on_thread": _emscripten_set_resize_callback_on_thread, + "emscripten_set_touchcancel_callback_on_thread": _emscripten_set_touchcancel_callback_on_thread, + "emscripten_set_touchend_callback_on_thread": _emscripten_set_touchend_callback_on_thread, + "emscripten_set_touchmove_callback_on_thread": _emscripten_set_touchmove_callback_on_thread, + "emscripten_set_touchstart_callback_on_thread": _emscripten_set_touchstart_callback_on_thread, + "emscripten_set_visibilitychange_callback_on_thread": _emscripten_set_visibilitychange_callback_on_thread, + "emscripten_set_wheel_callback_on_thread": _emscripten_set_wheel_callback_on_thread, + "emscripten_sleep": _emscripten_sleep, + "emscripten_start_fetch": _emscripten_start_fetch, + "environ_get": _environ_get, + "environ_sizes_get": _environ_sizes_get, + "exit": _exit, + "fd_close": _fd_close, + "fd_fdstat_get": _fd_fdstat_get, + "fd_read": _fd_read, + "fd_seek": _fd_seek, + "fd_write": _fd_write, + "getCanvasPaddingLeft": getCanvasPaddingLeft, + "getCanvasPaddingTop": getCanvasPaddingTop, + "getTempRet0": _getTempRet0, + "gettimeofday": _gettimeofday, + "gmtime_r": _gmtime_r, + "invoke_di": invoke_di, + "invoke_i": invoke_i, + "invoke_ii": invoke_ii, + "invoke_iid": invoke_iid, + "invoke_iii": invoke_iii, + "invoke_iiii": invoke_iiii, + "invoke_iiiii": invoke_iiiii, + "invoke_iiiiii": invoke_iiiiii, + "invoke_iiiiiii": invoke_iiiiiii, + "invoke_iiiiiiii": invoke_iiiiiiii, + "invoke_vi": invoke_vi, + "invoke_vii": invoke_vii, + "invoke_viii": invoke_viii, + "invoke_viiii": invoke_viiii, + "invoke_viiiii": invoke_viiiii, + "invoke_viiiiii": invoke_viiiiii, + "localtime": _localtime, + "localtime_r": _localtime_r, + "memory": wasmMemory, + "mktime": _mktime, + "nanosleep": _nanosleep, + "saveSetjmp": _saveSetjmp, + "setTempRet0": _setTempRet0, + "sigaction": _sigaction, + "signal": _signal, + "sysconf": _sysconf, + "table": wasmTable, + "testSetjmp": _testSetjmp, + "time": _time, + "usleep": _usleep, + "wafjs_hidestatus": wafjs_hidestatus, + "wafjs_setcontentinfo": wafjs_setcontentinfo, + "wafjs_setstatus": wafjs_setstatus, + "wafjs_url_transformRequestUrl": wafjs_url_transformRequestUrl + }; + var asm = createWasm(); + Module["asm"] = asm; + 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 _reopenBuffer = Module["_reopenBuffer"] = function() { + return (_reopenBuffer = Module["_reopenBuffer"] = Module["asm"]["reopenBuffer"]).apply(null, arguments) + }; + var _invokeExternalCallback = Module["_invokeExternalCallback"] = function() { + return (_invokeExternalCallback = Module["_invokeExternalCallback"] = Module["asm"]["invokeExternalCallback"]).apply(null, arguments) + }; + var ___em_js__wafjs_setstatus = Module["___em_js__wafjs_setstatus"] = function() { + return (___em_js__wafjs_setstatus = Module["___em_js__wafjs_setstatus"] = Module["asm"]["__em_js__wafjs_setstatus"]).apply(null, arguments) + }; + var ___em_js__wafjs_hidestatus = Module["___em_js__wafjs_hidestatus"] = function() { + return (___em_js__wafjs_hidestatus = Module["___em_js__wafjs_hidestatus"] = Module["asm"]["__em_js__wafjs_hidestatus"]).apply(null, arguments) + }; + var ___em_js__wafjs_setcontentinfo = Module["___em_js__wafjs_setcontentinfo"] = function() { + return (___em_js__wafjs_setcontentinfo = Module["___em_js__wafjs_setcontentinfo"] = Module["asm"]["__em_js__wafjs_setcontentinfo"]).apply(null, arguments) + }; + var ___em_js__getCanvasPaddingLeft = Module["___em_js__getCanvasPaddingLeft"] = function() { + return (___em_js__getCanvasPaddingLeft = Module["___em_js__getCanvasPaddingLeft"] = Module["asm"]["__em_js__getCanvasPaddingLeft"]).apply(null, arguments) + }; + var ___em_js__getCanvasPaddingTop = Module["___em_js__getCanvasPaddingTop"] = function() { + return (___em_js__getCanvasPaddingTop = Module["___em_js__getCanvasPaddingTop"] = Module["asm"]["__em_js__getCanvasPaddingTop"]).apply(null, arguments) + }; + var _main = Module["_main"] = function() { + return (_main = Module["_main"] = Module["asm"]["main"]).apply(null, arguments) + }; + var _memset = Module["_memset"] = function() { + return (_memset = Module["_memset"] = Module["asm"]["memset"]).apply(null, arguments) + }; + var _strlen = Module["_strlen"] = function() { + return (_strlen = Module["_strlen"] = Module["asm"]["strlen"]).apply(null, arguments) + }; + var _free = Module["_free"] = function() { + return (_free = Module["_free"] = Module["asm"]["free"]).apply(null, arguments) + }; + var _fileno = Module["_fileno"] = function() { + return (_fileno = Module["_fileno"] = Module["asm"]["fileno"]).apply(null, arguments) + }; + var _malloc = Module["_malloc"] = function() { + return (_malloc = Module["_malloc"] = Module["asm"]["malloc"]).apply(null, arguments) + }; + var _memcpy = Module["_memcpy"] = function() { + return (_memcpy = Module["_memcpy"] = Module["asm"]["memcpy"]).apply(null, arguments) + }; + var ___em_js__wafjs_url_transformRequestUrl = Module["___em_js__wafjs_url_transformRequestUrl"] = function() { + return (___em_js__wafjs_url_transformRequestUrl = Module["___em_js__wafjs_url_transformRequestUrl"] = Module["asm"]["__em_js__wafjs_url_transformRequestUrl"]).apply(null, arguments) + }; + var _strstr = Module["_strstr"] = function() { + return (_strstr = Module["_strstr"] = Module["asm"]["strstr"]).apply(null, arguments) + }; + var ___em_js__changeCursor = Module["___em_js__changeCursor"] = function() { + return (___em_js__changeCursor = Module["___em_js__changeCursor"] = Module["asm"]["__em_js__changeCursor"]).apply(null, arguments) + }; + var _realloc = Module["_realloc"] = function() { + return (_realloc = Module["_realloc"] = Module["asm"]["realloc"]).apply(null, arguments) + }; + var ___errno_location = Module["___errno_location"] = function() { + return (___errno_location = Module["___errno_location"] = Module["asm"]["__errno_location"]).apply(null, arguments) + }; + var _emscripten_GetProcAddress = Module["_emscripten_GetProcAddress"] = function() { + return (_emscripten_GetProcAddress = Module["_emscripten_GetProcAddress"] = Module["asm"]["emscripten_GetProcAddress"]).apply(null, arguments) + }; + var __get_tzname = Module["__get_tzname"] = function() { + return (__get_tzname = Module["__get_tzname"] = Module["asm"]["_get_tzname"]).apply(null, arguments) + }; + var __get_daylight = Module["__get_daylight"] = function() { + return (__get_daylight = Module["__get_daylight"] = Module["asm"]["_get_daylight"]).apply(null, arguments) + }; + var __get_timezone = Module["__get_timezone"] = function() { + return (__get_timezone = Module["__get_timezone"] = Module["asm"]["_get_timezone"]).apply(null, arguments) + }; + var _setThrew = Module["_setThrew"] = function() { + return (_setThrew = Module["_setThrew"] = Module["asm"]["setThrew"]).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 dynCall_vi = Module["dynCall_vi"] = function() { + return (dynCall_vi = Module["dynCall_vi"] = Module["asm"]["dynCall_vi"]).apply(null, arguments) + }; + var dynCall_vii = Module["dynCall_vii"] = function() { + return (dynCall_vii = Module["dynCall_vii"] = Module["asm"]["dynCall_vii"]).apply(null, arguments) + }; + var dynCall_viii = Module["dynCall_viii"] = function() { + return (dynCall_viii = Module["dynCall_viii"] = Module["asm"]["dynCall_viii"]).apply(null, arguments) + }; + var dynCall_viiii = Module["dynCall_viiii"] = function() { + return (dynCall_viiii = Module["dynCall_viiii"] = Module["asm"]["dynCall_viiii"]).apply(null, arguments) + }; + var dynCall_viiiii = Module["dynCall_viiiii"] = function() { + return (dynCall_viiiii = Module["dynCall_viiiii"] = Module["asm"]["dynCall_viiiii"]).apply(null, arguments) + }; + var dynCall_viiiiii = Module["dynCall_viiiiii"] = function() { + return (dynCall_viiiiii = Module["dynCall_viiiiii"] = Module["asm"]["dynCall_viiiiii"]).apply(null, arguments) + }; + var dynCall_i = Module["dynCall_i"] = function() { + return (dynCall_i = Module["dynCall_i"] = Module["asm"]["dynCall_i"]).apply(null, arguments) + }; + var dynCall_ii = Module["dynCall_ii"] = function() { + return (dynCall_ii = Module["dynCall_ii"] = Module["asm"]["dynCall_ii"]).apply(null, arguments) + }; + var dynCall_iii = Module["dynCall_iii"] = function() { + return (dynCall_iii = Module["dynCall_iii"] = Module["asm"]["dynCall_iii"]).apply(null, arguments) + }; + var dynCall_iiii = Module["dynCall_iiii"] = function() { + return (dynCall_iiii = Module["dynCall_iiii"] = Module["asm"]["dynCall_iiii"]).apply(null, arguments) + }; + var dynCall_iiiii = Module["dynCall_iiiii"] = function() { + return (dynCall_iiiii = Module["dynCall_iiiii"] = Module["asm"]["dynCall_iiiii"]).apply(null, arguments) + }; + var dynCall_iiiiii = Module["dynCall_iiiiii"] = function() { + return (dynCall_iiiiii = Module["dynCall_iiiiii"] = Module["asm"]["dynCall_iiiiii"]).apply(null, arguments) + }; + var dynCall_iiiiiii = Module["dynCall_iiiiiii"] = function() { + return (dynCall_iiiiiii = Module["dynCall_iiiiiii"] = Module["asm"]["dynCall_iiiiiii"]).apply(null, arguments) + }; + var dynCall_iiiiiiii = Module["dynCall_iiiiiiii"] = function() { + return (dynCall_iiiiiiii = Module["dynCall_iiiiiiii"] = Module["asm"]["dynCall_iiiiiiii"]).apply(null, arguments) + }; + var dynCall_iid = Module["dynCall_iid"] = function() { + return (dynCall_iid = Module["dynCall_iid"] = Module["asm"]["dynCall_iid"]).apply(null, arguments) + }; + var dynCall_di = Module["dynCall_di"] = function() { + return (dynCall_di = Module["dynCall_di"] = Module["asm"]["dynCall_di"]).apply(null, arguments) + }; + var stackSave = Module["stackSave"] = function() { + return (stackSave = Module["stackSave"] = Module["asm"]["stackSave"]).apply(null, arguments) + }; + var stackAlloc = Module["stackAlloc"] = function() { + return (stackAlloc = Module["stackAlloc"] = Module["asm"]["stackAlloc"]).apply(null, arguments) + }; + var stackRestore = Module["stackRestore"] = function() { + return (stackRestore = Module["stackRestore"] = Module["asm"]["stackRestore"]).apply(null, arguments) + }; + var __growWasmMemory = Module["__growWasmMemory"] = function() { + return (__growWasmMemory = Module["__growWasmMemory"] = Module["asm"]["__growWasmMemory"]).apply(null, arguments) + }; + var dynCall_viiiiiii = Module["dynCall_viiiiiii"] = function() { + return (dynCall_viiiiiii = Module["dynCall_viiiiiii"] = Module["asm"]["dynCall_viiiiiii"]).apply(null, arguments) + }; + var dynCall_viiiiiiiii = Module["dynCall_viiiiiiiii"] = function() { + return (dynCall_viiiiiiiii = Module["dynCall_viiiiiiiii"] = Module["asm"]["dynCall_viiiiiiiii"]).apply(null, arguments) + }; + var dynCall_v = Module["dynCall_v"] = function() { + return (dynCall_v = Module["dynCall_v"] = Module["asm"]["dynCall_v"]).apply(null, arguments) + }; + var dynCall_diii = Module["dynCall_diii"] = function() { + return (dynCall_diii = Module["dynCall_diii"] = Module["asm"]["dynCall_diii"]).apply(null, arguments) + }; + var dynCall_viiiiiiii = Module["dynCall_viiiiiiii"] = function() { + return (dynCall_viiiiiiii = Module["dynCall_viiiiiiii"] = Module["asm"]["dynCall_viiiiiiii"]).apply(null, arguments) + }; + var dynCall_iiiiiiiiii = Module["dynCall_iiiiiiiiii"] = function() { + return (dynCall_iiiiiiiiii = Module["dynCall_iiiiiiiiii"] = Module["asm"]["dynCall_iiiiiiiiii"]).apply(null, arguments) + }; + var dynCall_jiji = Module["dynCall_jiji"] = function() { + return (dynCall_jiji = Module["dynCall_jiji"] = Module["asm"]["dynCall_jiji"]).apply(null, arguments) + }; + var dynCall_ji = Module["dynCall_ji"] = function() { + return (dynCall_ji = Module["dynCall_ji"] = Module["asm"]["dynCall_ji"]).apply(null, arguments) + }; + var dynCall_iiiiiidii = Module["dynCall_iiiiiidii"] = function() { + return (dynCall_iiiiiidii = Module["dynCall_iiiiiidii"] = Module["asm"]["dynCall_iiiiiidii"]).apply(null, arguments) + }; + var dynCall_iiiiiiiii = Module["dynCall_iiiiiiiii"] = function() { + return (dynCall_iiiiiiiii = Module["dynCall_iiiiiiiii"] = Module["asm"]["dynCall_iiiiiiiii"]).apply(null, arguments) + }; + var dynCall_viiiiiiiiiii = Module["dynCall_viiiiiiiiiii"] = function() { + return (dynCall_viiiiiiiiiii = Module["dynCall_viiiiiiiiiii"] = Module["asm"]["dynCall_viiiiiiiiiii"]).apply(null, arguments) + }; + var dynCall_iidiiii = Module["dynCall_iidiiii"] = function() { + return (dynCall_iidiiii = Module["dynCall_iidiiii"] = Module["asm"]["dynCall_iidiiii"]).apply(null, arguments) + }; + var dynCall_vffff = Module["dynCall_vffff"] = function() { + return (dynCall_vffff = Module["dynCall_vffff"] = Module["asm"]["dynCall_vffff"]).apply(null, arguments) + }; + var dynCall_vf = Module["dynCall_vf"] = function() { + return (dynCall_vf = Module["dynCall_vf"] = Module["asm"]["dynCall_vf"]).apply(null, arguments) + }; + var dynCall_vff = Module["dynCall_vff"] = function() { + return (dynCall_vff = Module["dynCall_vff"] = Module["asm"]["dynCall_vff"]).apply(null, arguments) + }; + var dynCall_vfi = Module["dynCall_vfi"] = function() { + return (dynCall_vfi = Module["dynCall_vfi"] = Module["asm"]["dynCall_vfi"]).apply(null, arguments) + }; + var dynCall_viif = Module["dynCall_viif"] = function() { + return (dynCall_viif = Module["dynCall_viif"] = Module["asm"]["dynCall_viif"]).apply(null, arguments) + }; + var dynCall_vif = Module["dynCall_vif"] = function() { + return (dynCall_vif = Module["dynCall_vif"] = Module["asm"]["dynCall_vif"]).apply(null, arguments) + }; + var dynCall_viff = Module["dynCall_viff"] = function() { + return (dynCall_viff = Module["dynCall_viff"] = Module["asm"]["dynCall_viff"]).apply(null, arguments) + }; + var dynCall_vifff = Module["dynCall_vifff"] = function() { + return (dynCall_vifff = Module["dynCall_vifff"] = Module["asm"]["dynCall_vifff"]).apply(null, arguments) + }; + var dynCall_viffff = Module["dynCall_viffff"] = function() { + return (dynCall_viffff = Module["dynCall_viffff"] = Module["asm"]["dynCall_viffff"]).apply(null, arguments) + }; + var dynCall_viiiiiiiiii = Module["dynCall_viiiiiiiiii"] = function() { + return (dynCall_viiiiiiiiii = Module["dynCall_viiiiiiiiii"] = Module["asm"]["dynCall_viiiiiiiiii"]).apply(null, arguments) + }; + var dynCall_viifi = Module["dynCall_viifi"] = function() { + return (dynCall_viifi = Module["dynCall_viifi"] = Module["asm"]["dynCall_viifi"]).apply(null, arguments) + }; + + function invoke_iiiii(index, a1, a2, a3, a4) { + var sp = stackSave(); + try { + return dynCall_iiiii(index, a1, a2, a3, a4) + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0) + } + } + + function invoke_ii(index, a1) { + var sp = stackSave(); + try { + return dynCall_ii(index, a1) + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0) + } + } + + function invoke_viii(index, a1, a2, a3) { + var sp = stackSave(); + try { + dynCall_viii(index, a1, a2, a3) + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0) + } + } + + function invoke_iiii(index, a1, a2, a3) { + var sp = stackSave(); + try { + return dynCall_iiii(index, a1, a2, a3) + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0) + } + } + + function invoke_vii(index, a1, a2) { + var sp = stackSave(); + try { + dynCall_vii(index, a1, a2) + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0) + } + } + + function invoke_iii(index, a1, a2) { + var sp = stackSave(); + try { + return dynCall_iii(index, a1, a2) + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0) + } + } + + function invoke_vi(index, a1) { + var sp = stackSave(); + try { + dynCall_vi(index, a1) + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0) + } + } + + function invoke_iiiiii(index, a1, a2, a3, a4, a5) { + var sp = stackSave(); + try { + return dynCall_iiiiii(index, a1, a2, a3, a4, a5) + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0) + } + } + + function invoke_i(index) { + var sp = stackSave(); + try { + return dynCall_i(index) + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0) + } + } + + function invoke_iid(index, a1, a2) { + var sp = stackSave(); + try { + return dynCall_iid(index, a1, a2) + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0) + } + } + + function invoke_viiii(index, a1, a2, a3, a4) { + var sp = stackSave(); + try { + dynCall_viiii(index, a1, a2, a3, a4) + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0) + } + } + + function invoke_viiiii(index, a1, a2, a3, a4, a5) { + var sp = stackSave(); + try { + dynCall_viiiii(index, a1, a2, a3, a4, a5) + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0) + } + } + + function invoke_di(index, a1) { + var sp = stackSave(); + try { + return dynCall_di(index, a1) + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0) + } + } + + function invoke_iiiiiiii(index, a1, a2, a3, a4, a5, a6, a7) { + var sp = stackSave(); + try { + return dynCall_iiiiiiii(index, a1, a2, a3, a4, a5, a6, a7) + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0) + } + } + + function invoke_viiiiii(index, a1, a2, a3, a4, a5, a6) { + var sp = stackSave(); + try { + dynCall_viiiiii(index, a1, a2, a3, a4, a5, a6) + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0) + } + } + + function invoke_iiiiiii(index, a1, a2, a3, a4, a5, a6) { + var sp = stackSave(); + try { + return dynCall_iiiiiii(index, a1, a2, a3, a4, a5, a6) + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0) + } + } + Module["asm"] = asm; + Module["ccall"] = ccall; + Module["cwrap"] = cwrap; + Module["getMemory"] = getMemory; + Module["addRunDependency"] = addRunDependency; + Module["removeRunDependency"] = removeRunDependency; + Module["FS_createFolder"] = FS.createFolder; + Module["FS_createPath"] = FS.createPath; + Module["FS_createDataFile"] = FS.createDataFile; + Module["FS_createPreloadedFile"] = FS.createPreloadedFile; + Module["FS_createLazyFile"] = FS.createLazyFile; + Module["FS_createLink"] = FS.createLink; + Module["FS_createDevice"] = FS.createDevice; + Module["FS_unlink"] = FS.unlink; + 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"]; + args = args || []; + var argc = args.length + 1; + var argv = stackAlloc((argc + 1) * 4); + HEAP32[argv >> 2] = allocateUTF8OnStack(thisProgram); + for (var i = 1; i < argc; i++) { + HEAP32[(argv >> 2) + i] = allocateUTF8OnStack(args[i - 1]) + } + HEAP32[(argv >> 2) + argc] = 0; + try { + var ret = entryFunction(argc, argv); + exit(ret, true) + } catch (e) { + if (e instanceof ExitStatus) { + return + } else if (e == "unwind") { + noExitRuntime = true; + return + } else { + var toLog = e; + if (e && typeof e === "object" && e.stack) { + toLog = [e, e.stack] + } + err("exception thrown: " + toLog); + quit_(1, 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(); + readyPromiseResolve(Module); + 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) { + if (implicit && noExitRuntime && status === 0) { + return + } + if (noExitRuntime) {} else { + ABORT = true; + EXITSTATUS = status; + exitRuntime(); + if (Module["onExit"]) Module["onExit"](status) + } + quit_(status, new ExitStatus(status)) + } + 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; + noExitRuntime = true; + run(); + + + return Module.ready + } + ); +})(); +export default Module; diff --git a/waflash/emulator2/waflash_latest/waflash.wasm b/waflash/emulator2/waflash_latest/waflash.wasm new file mode 100644 index 00000000..fc442803 Binary files /dev/null and b/waflash/emulator2/waflash_latest/waflash.wasm differ diff --git a/waflash/etc/ b/waflash/etc/ new file mode 100644 index 00000000..e69de29b diff --git a/waflash/etc/wait.gif b/waflash/etc/wait.gif new file mode 100644 index 00000000..5b33f7e5 Binary files /dev/null and b/waflash/etc/wait.gif differ diff --git a/waflash/games/ b/waflash/games/ new file mode 100644 index 00000000..e69de29b diff --git a/waflash/games/sse.swf b/waflash/games/sse.swf new file mode 100644 index 00000000..127450db Binary files /dev/null and b/waflash/games/sse.swf differ diff --git a/waflash/games/thinIce/ b/waflash/games/thinIce/ new file mode 100644 index 00000000..e69de29b diff --git a/waflash/games/thinIce/ThinIce.swf b/waflash/games/thinIce/ThinIce.swf new file mode 100644 index 00000000..624358e7 Binary files /dev/null and b/waflash/games/thinIce/ThinIce.swf differ diff --git a/waflash/games/thinIce/bootstrap.swf b/waflash/games/thinIce/bootstrap.swf new file mode 100644 index 00000000..9d86038e Binary files /dev/null and b/waflash/games/thinIce/bootstrap.swf differ diff --git a/waflash/games/thinIce/index.html b/waflash/games/thinIce/index.html new file mode 100644 index 00000000..5ac1ee2e --- /dev/null +++ b/waflash/games/thinIce/index.html @@ -0,0 +1,17 @@ + + + + + + Play | Club Penguin Advanced + + +
+ + + + + + diff --git a/waflash/games/thinIce/lang/en/ b/waflash/games/thinIce/lang/en/ new file mode 100644 index 00000000..e69de29b diff --git a/waflash/games/thinIce/lang/en/locale.swf b/waflash/games/thinIce/lang/en/locale.swf new file mode 100644 index 00000000..e981a10e Binary files /dev/null and b/waflash/games/thinIce/lang/en/locale.swf differ diff --git a/waflash/games/thinIce/lang/en/title.swf b/waflash/games/thinIce/lang/en/title.swf new file mode 100644 index 00000000..e1fcea75 Binary files /dev/null and b/waflash/games/thinIce/lang/en/title.swf differ diff --git a/waflash/games/thinIce/loader.swf b/waflash/games/thinIce/loader.swf new file mode 100644 index 00000000..5453a222 Binary files /dev/null and b/waflash/games/thinIce/loader.swf differ diff --git a/waflash/index.html b/waflash/index.html new file mode 100644 index 00000000..614bebca --- /dev/null +++ b/waflash/index.html @@ -0,0 +1,713 @@ + + + Working Demo for WAFlash + + + + + + +
+
+ +
+
+
+
+ + +
+ + + + + + + + diff --git a/waflash/js/ b/waflash/js/ new file mode 100644 index 00000000..e69de29b diff --git a/waflash/js/common2.js b/waflash/js/common2.js new file mode 100644 index 00000000..0785ed7b --- /dev/null +++ b/waflash/js/common2.js @@ -0,0 +1,203 @@ +function setCookie(name, value, expires) { + if (!expires) expires=1000*60*60*24*365*5; + path="/"; + domain=document.domain; + secure=false; + var today = new Date(); + today.setTime( today.getTime() ); + var expires_date = new Date( today.getTime() + (expires) ); + document.cookie = name + "=" +escape( value ) + + ( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + //expires.toGMTString() + ( ( path ) ? ";path=" + path : "" ) + + ( ( domain ) ? ";domain=" + domain : "" ) + + ( ( secure ) ? ";secure" : "" ); + domain=".overbits.net"; + document.cookie = name + "=" +escape( value ) + + ( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + //expires.toGMTString() + ( ( path ) ? ";path=" + path : "" ) + + ( ( domain ) ? ";domain=" + domain : "" ) + + ( ( secure ) ? ";secure" : "" ); +} + +function getCookie( name ) { + var nameOfCookie = name + "="; + var x = 0; + while ( x <= document.cookie.length ) { + var y = (x+nameOfCookie.length); + if ( document.cookie.substring( x, y ) == nameOfCookie ) { + if ( (endOfCookie=document.cookie.indexOf( ";", y )) == -1 ) + endOfCookie = document.cookie.length; + return unescape( document.cookie.substring( y, endOfCookie ) ); + } + x = document.cookie.indexOf( " ", x ) + 1; + if ( x == 0 ) break; + } + return ""; +} + +function _getid(id){ + return document.getElementById(id); +} + +function trim(str) { + if (!str || !str.replace) str=''; + return str.replace(/^\s*|\s*$/g,""); +} + +function html_entity_encode(str){ + if (!str || !str.replace) str=''; + str = str.replace(/&/gi, "&"); + str = str.replace(/>/gi, ">"); + str = str.replace(/ len) s=s.substr(0,len)+"..."; + return s; +} + +function cutstringmiddle(s,len,left,right){ + if (!s) s=''; + if (s.length <= len) return s; + var s1,s2; + s1=s.substr(0,left); + s2=s.substr(s.length-right,s.length); + return s1+'.....'+s2; +} + +function number_format(number, decimals, dec_point, thousands_sep) { + number = (number + '').replace(/[^0-9+\-Ee.]/g, ''); + var n = !isFinite(+number) ? 0 : +number, + prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), + sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep, + dec = (typeof dec_point === 'undefined') ? '.' : dec_point, + s = '', + toFixedFix = function (n, prec) { + var k = Math.pow(10, prec); + return '' + Math.round(n * k) / k; + }; + // Fix for IE parseFloat(0.55).toFixed(0) = 0; + s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.'); + if (s[0].length > 3) { + s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep); + } + if ((s[1] || '').length < prec) { + s[1] = s[1] || ''; + s[1] += new Array(prec - s[1].length + 1).join('0'); + } + return s.join(dec); +} + +function getWindowWidth(){ + var windowWidth = 0; + if (typeof(window.innerWidth) == 'number'){ + windowWidth = window.innerWidth; + }else{ + var ieStrict = document.documentElement.clientWidth; + var ieQuirks = document.body.clientWidth; + windowWidth = (ieStrict > 0) ? ieStrict : ieQuirks; + } + if(!windowWidth) windowWidth=0; + return windowWidth; +} +function getWindowHeight(){ + var windowHeight = 0; + if (typeof(window.innerHeight) == 'number'){ + windowHeight = window.innerHeight; + }else{ + var ieStrict = document.documentElement.clientHeight; + var ieQuirks = document.body.clientHeight; + windowHeight = (ieStrict > 0) ? ieStrict : ieQuirks; + } + if(!windowHeight) windowHeight=0; + return windowHeight; +} + +function getScrollLeft(){ + var scrollLeft; + if(document.body && document.body.scrollLeft){ + scrollLeft = document.body.scrollLeft; + }else if(document.documentElement && document.documentElement.scrollLeft){ + scrollLeft = document.documentElement.scrollLeft; + } + if(!scrollLeft) scrollLeft=0; + return scrollLeft; +} + +function getScrollTop(){ + var scrollTop; + if(document.body && document.body.scrollTop){ + scrollTop = document.body.scrollTop; + }else if(document.documentElement && document.documentElement.scrollTop){ + scrollTop = document.documentElement.scrollTop; + } + if(!scrollTop) scrollTop=0; + return scrollTop; +} + +var messagetimer=null; +function show_message(s,x,y,padding,timeout){ + if (!x) x=10; + if (!y) y=10; + if (!padding) padding=5; + if (!timeout) timeout=2000; + + var kind=1; + for(var i=1; i <= 4; i++){ + var s1="layer_message"; + if (i>1) s1="layer_message"+i; + var obj=document.getElementById(s1); + if (obj){ + kind=i; + break; + } + } + + obj.style.left="1px"; + obj.style.top="1px"; + obj.innerHTML=""; + obj.style.display=""; + + if (kind==1) { + x=getScrollLeft()+x; + y=getScrollTop()+y; + } else if (kind==2) { + x=getScrollLeft()+((getWindowWidth()-obj.clientWidth) / 2); + y=getScrollTop()+((getWindowHeight()-obj.clientHeight) / 2); + } else if (kind==3) { + x=document.body.offsetWidth-obj.clientWidth-5; + y=getScrollTop()+y; + } else { + x=getScrollLeft()+((getWindowWidth()-obj.clientWidth) / 2); + y=getScrollTop()+y; + } + x=parseInt(x); + y=parseInt(y); + + obj.style["border"]="1px solid #000000"; + obj.style["padding"]=padding+"px"; + obj.style.left=x+"px"; + obj.style.top=y+"px"; + + if (messagetimer) clearTimeout(messagetimer); + messagetimer=setTimeout(hide_message, timeout); +} + +function hide_message(){ + for(var i=1; i <= 4; i++){ + var s1="layer_message"; + if (i>1) s1="layer_message"+i; + var obj=document.getElementById(s1); + if (obj){ + obj.style.display="none"; + } + } +} + +function _getfrmdoc(ifrm){ + return (ifrm.contentWindow) ? ifrm.contentWindow : (ifrm.contentDocument.document) ? ifrm.contentDocument.document : ifrm.contentDocument; +} \ No newline at end of file diff --git a/xp/index.html b/xp/index.html index d43f93dd..b50b5ad1 100644 --- a/xp/index.html +++ b/xp/index.html @@ -1,6 +1,7 @@ RebornXP + diff --git a/yohoho/index.html b/yohoho/index.html index dbd15786..20fd72cd 100644 --- a/yohoho/index.html +++ b/yohoho/index.html @@ -1,4 +1,5 @@ + diff --git a/zap/cover.svg b/zap/cover.svg new file mode 100644 index 00000000..7cb90ae6 --- /dev/null +++ b/zap/cover.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/zap/index.html b/zap/index.html new file mode 100644 index 00000000..fffe0185 --- /dev/null +++ b/zap/index.html @@ -0,0 +1,28 @@ + + + + + + + + Block Zappers 3 + + + +
+ + + + diff --git a/zap/zapp.swf b/zap/zapp.swf new file mode 100644 index 00000000..6ce6f65e Binary files /dev/null and b/zap/zapp.swf differ