From 5012990dd95558194942cc6c0bdfba1cdea62684 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Geyelin?= Date: Mon, 15 Feb 2021 21:35:43 +0100 Subject: [PATCH] New APIs to enable massive amounts of entities. --- content/levels/sample_enemy/level.lua | 4 +- .../background_graphic.lua | 7 ++ .../sample_optimized_entities/baf_graphic.lua | 7 ++ .../sample_optimized_entities/level.lua | 70 ++++++++++++++++++ .../sample_optimized_entities/manifest.json | 5 ++ content/levels/sample_simple_level/level.lua | 34 --------- .../levels/sample_simple_level/manifest.json | 5 -- .../square500x500_graphic.lua | 7 -- .../levels/sample_tutorial/box_template.lua | 6 +- .../helpers/boxes/box_template.lua | 2 +- content/pewpewlive-wasm.js | 2 +- content/pewpewlive-wasm.wasm | Bin 2233687 -> 2306457 bytes docs/raw_documentation.js | 20 ++++- server.go | 1 + 14 files changed, 115 insertions(+), 55 deletions(-) create mode 100755 content/levels/sample_optimized_entities/background_graphic.lua create mode 100644 content/levels/sample_optimized_entities/baf_graphic.lua create mode 100755 content/levels/sample_optimized_entities/level.lua create mode 100755 content/levels/sample_optimized_entities/manifest.json delete mode 100755 content/levels/sample_simple_level/level.lua delete mode 100755 content/levels/sample_simple_level/manifest.json delete mode 100755 content/levels/sample_simple_level/square500x500_graphic.lua diff --git a/content/levels/sample_enemy/level.lua b/content/levels/sample_enemy/level.lua index a29c035..d3bc563 100755 --- a/content/levels/sample_enemy/level.lua +++ b/content/levels/sample_enemy/level.lua @@ -41,9 +41,9 @@ function new_enemy_bullet(x, y, angle) pewpew.customizable_entity_start_exploding(id, 10) end) -- Make the bullet collide with player ships: add 3 damage to the ship, and destroy the bullet. - pewpew.customizable_entity_set_player_collision_callback(id, function(player_id, ship_id) + pewpew.customizable_entity_set_player_collision_callback(id, function(entity_id, player_id, ship_id) pewpew.add_damage_to_player_ship(ship_id, 3) - pewpew.customizable_entity_start_exploding(id, 10) + pewpew.customizable_entity_start_exploding(entity_id, 10) end) end diff --git a/content/levels/sample_optimized_entities/background_graphic.lua b/content/levels/sample_optimized_entities/background_graphic.lua new file mode 100755 index 0000000..f4de76b --- /dev/null +++ b/content/levels/sample_optimized_entities/background_graphic.lua @@ -0,0 +1,7 @@ +meshes = { + { + vertexes = {{0,0}, {1000,0}, {1000,1000}, {0,1000}}, + colors = {0x0000ffff, 0x0000ffff, 0x0000ffff, 0x0000ffff}, + segments = {{0,1,2,3,0}} + } +} diff --git a/content/levels/sample_optimized_entities/baf_graphic.lua b/content/levels/sample_optimized_entities/baf_graphic.lua new file mode 100644 index 0000000..0bcb3ad --- /dev/null +++ b/content/levels/sample_optimized_entities/baf_graphic.lua @@ -0,0 +1,7 @@ +meshes = { + { + vertexes = {{-20,-20}, {20,-20}, {20,20}, {-20,20}}, + colors = {0xffff00ff, 0xffff00ff, 0xffff00ff, 0xffff00ff}, + segments = {{0,1,2,3,0}} + } +} diff --git a/content/levels/sample_optimized_entities/level.lua b/content/levels/sample_optimized_entities/level.lua new file mode 100755 index 0000000..48612e2 --- /dev/null +++ b/content/levels/sample_optimized_entities/level.lua @@ -0,0 +1,70 @@ +-- Set how large the level will be. +pewpew.set_level_size(1000fx, 1000fx) + +local bafs = {} + +function baf_update(entity_id) + local data = bafs[entity_id] + local x, y = pewpew.entity_get_position(entity_id) + x = x + data[1] + pewpew.customizable_entity_set_mesh_angle(entity_id, data[3], 1fx, 0fx, 0fx) + data[3] = data[3] + 0.1000fx + + pewpew.entity_set_position(entity_id, x, y) + if pewpew.entity_get_is_started_to_be_destroyed(entity_id) == true then + bafs[entity_id] = nil + pewpew.customizable_entity_set_player_collision_callback(entity_id, nil) + pewpew.customizable_entity_set_weapon_collision_callback(entity_id, nil) + pewpew.entity_set_update_callback(entity_id, nil) + pewpew.customizable_entity_configure_wall_collision(entity_id, true, nil) + end +end + +function baf_collide_with_ship(entity_id, player_index, ship_entity_id) + pewpew.customizable_entity_start_exploding(entity_id, 20) +end + +function baf_collide_with_wall(entity_id) + local data = bafs[entity_id] + data[1] = -data[1] +end + +function baf_weapon_collision(entity_id, weapon_description) + local data = bafs[entity_id] + if data[2] == 0 then + pewpew.customizable_entity_start_exploding(entity_id, 10) + else + data[2] = data[2] - 1 + end + return true +end + +for i=0,1200 do + local id = pewpew.new_customizable_entity(fmath.random_fixedpoint(100fx, 900fx), fmath.random_fixedpoint(100fx, 900fx)) + -- Format: {dx, life, angle} + bafs[id] = {5fx, 3, fmath.random_fixedpoint(0fx, fmath.tau())} + + pewpew.customizable_entity_set_mesh(id, "/dynamic/baf_graphic.lua", 0) + pewpew.customizable_entity_set_position_interpolation(id, true) + pewpew.entity_set_radius(id, 20fx) + + -- Makes sure the entity won't be drawn when not visible. + pewpew.customizable_entity_set_visibility_radius(id, 20fx) + + pewpew.customizable_entity_set_weapon_collision_callback(id, baf_weapon_collision) + pewpew.entity_set_update_callback(id, baf_update) + pewpew.customizable_entity_set_player_collision_callback(id, baf_collide_with_ship) + pewpew.customizable_entity_configure_wall_collision(id, true, baf_collide_with_wall) +end + +-- Create an entity at position (0,0) that will hold the background mesh. +local background = pewpew.new_customizable_entity(0fx, 0fx) +pewpew.customizable_entity_set_mesh(background, "/dynamic/background_graphic.lua", 0) + +-- Create and configure the player's ship. +local player_x = 250fx +local player_y = 100fx +local player_index = 0 -- there is only one player +local ship_id = pewpew.new_player_ship(player_x, player_y, player_index) +local weapon_config = {frequency = pewpew.CannonFrequency.FREQ_10, cannon = pewpew.CannonType.DOUBLE} +pewpew.configure_player_ship_weapon(ship_id, weapon_config) diff --git a/content/levels/sample_optimized_entities/manifest.json b/content/levels/sample_optimized_entities/manifest.json new file mode 100755 index 0000000..37a22c9 --- /dev/null +++ b/content/levels/sample_optimized_entities/manifest.json @@ -0,0 +1,5 @@ +{ + "name":"Sample: Optimized entities", + "descriptions":["An optimized way of creating entities."], + "entry_point":"level.lua" +} \ No newline at end of file diff --git a/content/levels/sample_simple_level/level.lua b/content/levels/sample_simple_level/level.lua deleted file mode 100755 index 62067f5..0000000 --- a/content/levels/sample_simple_level/level.lua +++ /dev/null @@ -1,34 +0,0 @@ --- Set how large the level will be. -pewpew.set_level_size(500fx, 500fx) - --- Create an entity at position (0,0) that will hold the background mesh. -local background = pewpew.new_customizable_entity(0fx, 0fx) -pewpew.customizable_entity_set_mesh(background, "/dynamic/square500x500_graphic.lua", 0) - --- Create the player's ship. -local player_x = 250fx -local player_y = 100fx -local player_index = 0 -- there is only one player -pewpew.new_player_ship(player_x, player_y, player_index) - --- Create a "baf" enemy. -local baf_x = 250fx -local baf_y = 400fx -local baf_angle = 0fx -local baf_speed = 10fx -local lifetime = -1 -- Use a negative number to indicate that the lifetime is infinite -pewpew.new_baf(baf_x, baf_y, baf_angle, baf_speed, lifetime) - -local time = 0 - --- A function that will get called every game tick, which is 30 times per seconds. -function level_tick() - -- Stop the game if the player is dead. - local conf = pewpew.get_player_configuration(player_index) - if conf["has_lost"] == true then - pewpew.stop_game() - end -end - --- Register the `level_tick` function to be called at every game tick. -pewpew.add_update_callback(level_tick) \ No newline at end of file diff --git a/content/levels/sample_simple_level/manifest.json b/content/levels/sample_simple_level/manifest.json deleted file mode 100755 index e52e7a3..0000000 --- a/content/levels/sample_simple_level/manifest.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "name":"Sample: Simple level", - "descriptions":["Simple example that does next to nothing."], - "entry_point":"level.lua" -} \ No newline at end of file diff --git a/content/levels/sample_simple_level/square500x500_graphic.lua b/content/levels/sample_simple_level/square500x500_graphic.lua deleted file mode 100755 index 25c5689..0000000 --- a/content/levels/sample_simple_level/square500x500_graphic.lua +++ /dev/null @@ -1,7 +0,0 @@ -meshes = { - { - vertexes = {{0,0}, {500,0}, {500,500}, {0,500}}, - colors = {0xffffffff, 0xffff00ff, 0xff00ffff, 0x00ff0000}, - segments = {{0,1,2,3,0}} - } -} diff --git a/content/levels/sample_tutorial/box_template.lua b/content/levels/sample_tutorial/box_template.lua index 23fc33b..fbc05df 100755 --- a/content/levels/sample_tutorial/box_template.lua +++ b/content/levels/sample_tutorial/box_template.lua @@ -26,12 +26,12 @@ function box.new(x, y, outer_mesh_info, inner_mesh_info, callback) self.inner_mesh_angle = 0fx - local function collision_callback(player_id, ship_id) + local function collision_callback(entity_id, player_id, ship_id) -- Remove the update callback to stop the rotation of the inner_mesh. - pewpew.entity_set_update_callback(self.handle, nil) + pewpew.entity_set_update_callback(entity_id, nil) -- Start the explosion pewpew.customizable_entity_start_exploding(self.inner_mesh_handle, 40) - pewpew.customizable_entity_start_exploding(self.handle, 30) + pewpew.customizable_entity_start_exploding(entity_id, 30) -- Notify about the collision if callback ~= nil then callback(player_id, ship_id) diff --git a/content/levels/sample_useful_helpers/helpers/boxes/box_template.lua b/content/levels/sample_useful_helpers/helpers/boxes/box_template.lua index a1d771e..299b764 100755 --- a/content/levels/sample_useful_helpers/helpers/boxes/box_template.lua +++ b/content/levels/sample_useful_helpers/helpers/boxes/box_template.lua @@ -25,7 +25,7 @@ function box.new(x, y, outer_mesh_info, inner_mesh_info, collision_callback, exp pewpew.customizable_entity_set_mesh_z(inner_mesh_id, 10fx) local inner_mesh_angle = 0fx - local function collision_callback_wrapper(player_id, ship_id) + local function collision_callback_wrapper(entity_id, player_id, ship_id) -- Remove the update callback to stop the rotation of the inner_mesh. pewpew.entity_set_update_callback(id, nil) -- Start the explosion diff --git a/content/pewpewlive-wasm.js b/content/pewpewlive-wasm.js index 8f44955..fa2963a 100644 --- a/content/pewpewlive-wasm.js +++ b/content/pewpewlive-wasm.js @@ -1 +1 @@ -var Module=typeof Module!=="undefined"?Module:{};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=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",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(document.currentScript){scriptDirectory=document.currentScript.src}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 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)}}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"){abort("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":4729,"maximum":4729+0,"element":"anyfunc"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}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>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var i=0;var str="";while(1){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0||i==maxBytesToRead/2)return str;++i;str+=String.fromCharCode(codeUnit)}}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;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}var WASM_PAGE_SIZE=65536;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 DYNAMIC_BASE=6068576,DYNAMICTOP_PTR=825536;var INITIAL_INITIAL_MEMORY=Module["INITIAL_MEMORY"]||134217728;if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,"maximum":INITIAL_INITIAL_MEMORY/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();SOCKFS.root=FS.mount(SOCKFS,{},null);callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);FS.quit();TTY.shutdown();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)}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+="";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}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://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="pewpewlive-wasm.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"&&!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()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={"a":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)&&!isFileURI(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");return 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={7073:function(){location.reload()},710272:function($0){var url=UTF8ToString($0);window.open(url,"_blank")},710400:function(){Module.audioBuffers={};Module.audioContext=new(window.AudioContext||window.webkitAudioContext)},710506:function($0,$1,$2){var sound_id=$0;var sample_ptr=$1;var sample_count=$2;audio_buffer=Module.audioContext.createBuffer(1,sample_count,Module.audioContext.sampleRate);float_array=HEAPF32.subarray(sample_ptr/4,sample_ptr/4+sample_count);if(typeof audio_buffer.copyToChannel=="function"){audio_buffer.copyToChannel(float_array,0)}else{audio_buffer.getChannelData(0).set(float_array)}Module.audioBuffers[sound_id]=audio_buffer},710962:function($0,$1,$2){var sound_id=$0;Module.audioContext.resume().then(function(){var source=Module.audioContext.createBufferSource();var panner=Module.audioContext.createPanner();source.buffer=Module.audioBuffers[sound_id];if(panner.positionX){panner.positionX.value=$1;panner.positionY.value=$2}else{panner.setPosition($1,$2,0)}panner.rolloffFactor=.1;source.connect(panner);panner.connect(Module.audioContext.destination);source.start(0)})},711433:function($0){var sound_id=$0;Module.audioContext.resume().then(function(){var source=Module.audioContext.createBufferSource();source.buffer=Module.audioBuffers[sound_id];source.connect(Module.audioContext.destination);source.start(0)})},711677:function($0,$1){var listener=Module.audioContext.listener;if(listener.positionX){listener.positionX.value=$0;listener.positionY.value=$1}else{listener.setPosition($0,$1,0)}},711861:function(){Module.audioBuffers={}},711886:function(){return Module.audioContext.sampleRate},712679:function($0,$1,$2,$3,$4,$5){var url=UTF8ToString($0);var content_type=UTF8ToString($3);var post_string=new Uint8ClampedArray(Module.HEAPU8.buffer,$4,$5);var xhr=new XMLHttpRequest;xhr.open("POST",url,true);xhr.responseType="arraybuffer";xhr.setRequestHeader("Content-Type",content_type);xhr.timeout=1e4;var delegateId=$1;var xhrId=$2;xhr.onreadystatechange=function(){if(xhr.readyState==XMLHttpRequest.DONE){if(xhr.status==200){Module.urlRequestOnSuccess(delegateId,xhrId,xhr.response)}else{Module.urlRequestOnError(delegateId,xhrId,xhr.status)}}};xhr.send(post_string)},749388: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>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>2;var dst=0;var num;if(typeof CanvasPixelArray!=="undefined"&&data instanceof CanvasPixelArray){num=data.length;while(dst>8&255;data[dst+2]=val>>16&255;data[dst+3]=val>>24&255;src++;dst+=4}}else{var data32=new Int32Array(data.buffer);num=data32.length;data32.set(HEAP32.subarray(src,src+num))}ctx.putImageData(image,0,0);var url=hot_x===0&&hot_y===0?"url("+canvas.toDataURL()+"), auto":"url("+canvas.toDataURL()+") "+hot_x+" "+hot_y+", auto";var urlBuf=_malloc(url.length+1);stringToUTF8(url,urlBuf,url.length+1);return urlBuf},751856:function($0){if(Module["canvas"]){Module["canvas"].style["cursor"]=UTF8ToString($0)}return 0},751949:function(){if(Module["canvas"]){Module["canvas"].style["cursor"]="none"}},753174:function(){return screen.width},753201:function(){return screen.height},753229:function(){return window.innerWidth},753261:function(){return window.innerHeight},753339:function($0){if(typeof setWindowTitle!=="undefined"){setWindowTitle(UTF8ToString($0))}return 0},753473:function(){if(typeof AudioContext!=="undefined"){return 1}else if(typeof webkitAudioContext!=="undefined"){return 1}return 0},753639:function(){if(typeof navigator.mediaDevices!=="undefined"&&typeof navigator.mediaDevices.getUserMedia!=="undefined"){return 1}else if(typeof navigator.webkitGetUserMedia!=="undefined"){return 1}return 0},753865: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}if(SDL2.audioContext){autoResumeAudioContext(SDL2.audioContext)}}return SDL2.audioContext===undefined?-1:0},754418:function(){var SDL2=Module["SDL2"];return SDL2.audioContext.sampleRate},754488: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)}},756140: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"])},756550:function($0,$1){var SDL2=Module["SDL2"];var numChannels=SDL2.capture.currentCaptureBuffer.numberOfChannels;for(var c=0;c>2]}}},757635: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>2]=value;return value}function ___map_file(pathname,size){setErrNo(63);return-1}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=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=[]}}}};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=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);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=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,"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;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(){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>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_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_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 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(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=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}}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:FS.modeStringToFlags("r+"),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>>0}function jstoi_q(str){return parseInt(str)}function __inet_pton6_raw(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.indexOf("::")===0){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>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255)}function __inet_ntop6_raw(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=__inet_ntop4_raw(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=__inet_ntop4_raw(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=__inet_ntop6_raw(addr);break;default:return{errno:5}}return{family:family,addr:addr,port:port}}function __write_sockaddr(sa,family,addr,port){switch(family){case 2:addr=__inet_pton4_raw(addr);HEAP16[sa>>1]=family;HEAP32[sa+4>>2]=addr;HEAP16[sa+2>>1]=_htons(port);break;case 10:addr=__inet_pton6_raw(addr);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{errno:5}}return{}}function ___sys_socketcall(call,socketvararg){try{SYSCALLS.varargs=socketvararg;var getSocketFromFD=function(){var socket=SOCKFS.getSocket(SYSCALLS.get());if(!socket)throw new FS.ErrnoError(8);return socket};var getSocketAddress=function(allowNull){var addrp=SYSCALLS.get(),addrlen=SYSCALLS.get();if(allowNull&&addrp===0)return null;var info=__read_sockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info};switch(call){case 1:{var domain=SYSCALLS.get(),type=SYSCALLS.get(),protocol=SYSCALLS.get();var sock=SOCKFS.createSocket(domain,type,protocol);return sock.stream.fd}case 2:{var sock=getSocketFromFD(),info=getSocketAddress();sock.sock_ops.bind(sock,info.addr,info.port);return 0}case 3:{var sock=getSocketFromFD(),info=getSocketAddress();sock.sock_ops.connect(sock,info.addr,info.port);return 0}case 4:{var sock=getSocketFromFD(),backlog=SYSCALLS.get();sock.sock_ops.listen(sock,backlog);return 0}case 5:{var sock=getSocketFromFD(),addr=SYSCALLS.get(),addrlen=SYSCALLS.get();var newsock=sock.sock_ops.accept(sock);if(addr){var res=__write_sockaddr(addr,newsock.family,DNS.lookup_name(newsock.daddr),newsock.dport)}return newsock.stream.fd}case 6:{var sock=getSocketFromFD(),addr=SYSCALLS.get(),addrlen=SYSCALLS.get();var res=__write_sockaddr(addr,sock.family,DNS.lookup_name(sock.saddr||"0.0.0.0"),sock.sport);return 0}case 7:{var sock=getSocketFromFD(),addr=SYSCALLS.get(),addrlen=SYSCALLS.get();if(!sock.daddr){return-53}var res=__write_sockaddr(addr,sock.family,DNS.lookup_name(sock.daddr),sock.dport);return 0}case 11:{var sock=getSocketFromFD(),message=SYSCALLS.get(),length=SYSCALLS.get(),flags=SYSCALLS.get(),dest=getSocketAddress(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)}}case 12:{var sock=getSocketFromFD(),buf=SYSCALLS.get(),len=SYSCALLS.get(),flags=SYSCALLS.get(),addr=SYSCALLS.get(),addrlen=SYSCALLS.get();var msg=sock.sock_ops.recvmsg(sock,len);if(!msg)return 0;if(addr){var res=__write_sockaddr(addr,sock.family,DNS.lookup_name(msg.addr),msg.port)}HEAPU8.set(msg.buffer,buf);return msg.buffer.byteLength}case 14:{return-50}case 15:{var sock=getSocketFromFD(),level=SYSCALLS.get(),optname=SYSCALLS.get(),optval=SYSCALLS.get(),optlen=SYSCALLS.get();if(level===1){if(optname===4){HEAP32[optval>>2]=sock.error;HEAP32[optlen>>2]=4;sock.error=null;return 0}}return-50}case 16:{var sock=getSocketFromFD(),message=SYSCALLS.get(),flags=SYSCALLS.get();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=__read_sockaddr(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)}case 17:{var sock=getSocketFromFD(),message=SYSCALLS.get(),flags=SYSCALLS.get();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 res=__write_sockaddr(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}default:{return-52}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=emval_handle_array[handle].value;__emval_decref(handle);return rv},"toWireType":function(destructors,value){return __emval_register(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function _embind_repr(v){if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(dynCall){var args=[];for(var i=1;i>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=function(value){return value};if(minRange===0){var bitshift=32-8*size;fromWireType=function(value){return value<>>bitshift}}var isUnsignedType=name.indexOf("unsigned")!=-1;registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}if(valuemaxRange){throw new TypeError('Passing a number "'+_embind_repr(value)+'" from JS side to C/C++ side to an argument of type "'+name+'", which is outside the valid range ['+minRange+", "+maxRange+"]!")}return isUnsignedType?value>>>0:value|0},"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;i>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value==="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function requireHandle(handle){if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handle_array[handle].value}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+" has unknown type "+getTypeName(rawType))}return impl}function __emval_as(handle,returnType,destructorsRef){handle=requireHandle(handle);returnType=requireRegisteredType(returnType,"emval::as");var destructors=[];var rd=__emval_register(destructors);HEAP32[destructorsRef>>2]=rd;return returnType["toWireType"](destructors,handle)}function __emval_allocateDestructors(destructorsRef){var destructors=[];HEAP32[destructorsRef>>2]=__emval_register(destructors);return destructors}var emval_symbols={};function getStringOrSymbol(address){var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}else{return symbol}}var emval_methodCallers=[];function __emval_call_method(caller,handle,methodName,destructorsRef,args){caller=emval_methodCallers[caller];handle=requireHandle(handle);methodName=getStringOrSymbol(methodName);return caller(handle,methodName,__emval_allocateDestructors(destructorsRef),args)}function __emval_call_void_method(caller,handle,methodName,args){caller=emval_methodCallers[caller];handle=requireHandle(handle);methodName=getStringOrSymbol(methodName);caller(handle,methodName,null,args)}function emval_get_global(){if(typeof globalThis==="object"){return globalThis}return function(){return Function}()("return this")()}function __emval_get_global(name){if(name===0){return __emval_register(emval_get_global())}else{name=getStringOrSymbol(name);return __emval_register(emval_get_global()[name])}}function __emval_addMethodCaller(caller){var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id}function __emval_lookupTypes(argCount,argTypes){var a=new Array(argCount);for(var i=0;i>2)+i],"parameter "+i)}return a}function __emval_get_method_caller(argCount,argTypes){var types=__emval_lookupTypes(argCount,argTypes);var retType=types[0];var signatureName=retType.name+"_$"+types.slice(1).map(function(t){return t.name}).join("_")+"$";var params=["retType"];var args=[retType];var argsList="";for(var i=0;i>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")}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}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(thisMainLoopId1&&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(thisMainLoopId0)_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=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: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)},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>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_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=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_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(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>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){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}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!=="undefined"?document:0,typeof window!=="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!=="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function __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>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0}function __fillGamepadEventData(eventStruct,e){HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i>3]=e.axes[i]}for(var i=0;i>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)}function _emscripten_get_gamepad_status(index,gamepadState){if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;__fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function _emscripten_glActiveTexture(x0){GLctx["activeTexture"](x0)}function _emscripten_glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.timerQueriesEXT[id])}function _emscripten_glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _emscripten_glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _emscripten_glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _emscripten_glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _emscripten_glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}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_glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _emscripten_glBufferSubData(target,offset,size,data){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_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 _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){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}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_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>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _emscripten_glDeleteFramebuffers(n,framebuffers){for(var i=0;i>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _emscripten_glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _emscripten_glDeleteQueriesEXT(n,ids){for(var i=0;i>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>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[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_glDeleteTextures(n,textures){for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _emscripten_glDeleteVertexArraysOES(n,vaos){for(var i=0;i>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _emscripten_glDepthFunc(x0){GLctx["depthFunc"](x0)}function _emscripten_glDepthMask(flag){GLctx.depthMask(!!flag)}function _emscripten_glDepthRangef(x0,x1){GLctx["depthRange"](x0,x1)}function _emscripten_glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glDisable(x0){GLctx["disable"](x0)}function _emscripten_glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _emscripten_glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _emscripten_glDrawArraysInstancedANGLE(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}var tempFixedLengthArray=[];function _emscripten_glDrawBuffersWEBGL(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx["drawBuffers"](bufArray)}function _emscripten_glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _emscripten_glDrawElementsInstancedANGLE(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _emscripten_glEnable(x0){GLctx["enable"](x0)}function _emscripten_glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _emscripten_glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)}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_glFrontFace(x0){GLctx["frontFace"](x0)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i>2]=id}}function _emscripten_glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _emscripten_glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _emscripten_glGenQueriesEXT(n,ids){for(var i=0;i>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_glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _emscripten_glGenVertexArraysOES(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _emscripten_glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function __glGetActiveAttribOrUniform(funcName,program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}}function _emscripten_glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}function _emscripten_glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}function _emscripten_glGetAttachedShaders(program,maxCount,count,shaders){var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i>2]=id}}function _emscripten_glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length: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 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _emscripten_glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4)}function _emscripten_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_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 _emscripten_glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}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>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>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_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_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_glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderPrecisionFormat(shaderType,precisionType,range,precision){var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision}function _emscripten_glGetShaderSource(shader,bufSize,length,source){var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_glGetString(name_){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);{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_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_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>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}}function _emscripten_glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)}function _emscripten_glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}function _emscripten_glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)}function emscriptenWebGLGetVertexAttrib(index,pname,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}}function _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_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_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_glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)}function _emscripten_glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)}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_glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _emscripten_glPolygonOffset(x0,x1){GLctx["polygonOffset"](x0,x1)}function _emscripten_glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.timerQueriesEXT[id],target)}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};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==1)return HEAPU8;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<>shift,pixels+bytes>>shift)}function _emscripten_glReadPixels(x,y,width,height,format,type,pixels){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_glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)}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){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):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_glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){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_glUniform1f(location,v0){GLctx.uniform1f(GL.uniforms[location],v0)}var miniTempWebGLFloatBuffers=[];function _emscripten_glUniform1fv(location,count,value){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(GL.uniforms[location],view)}function _emscripten_glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}var __miniTempWebGLIntBuffers=[];function _emscripten_glUniform1iv(location,count,value){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(GL.uniforms[location],view)}function _emscripten_glUniform2f(location,v0,v1){GLctx.uniform2f(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2fv(location,count,value){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(GL.uniforms[location],view)}function _emscripten_glUniform2i(location,v0,v1){GLctx.uniform2i(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2iv(location,count,value){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(GL.uniforms[location],view)}function _emscripten_glUniform3f(location,v0,v1,v2){GLctx.uniform3f(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3fv(location,count,value){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(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(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(GL.uniforms[location],view)}function _emscripten_glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4fv(location,count,value){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(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(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(GL.uniforms[location],view)}function _emscripten_glUniformMatrix2fv(location,count,transpose,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix3fv(location,count,transpose,value){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(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix4fv(location,count,transpose,value){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(GL.uniforms[location],!!transpose,view)}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_glVertexAttribDivisorANGLE(index,divisor){GLctx["vertexAttribDivisor"](index,divisor)}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_has_asyncify(){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 abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}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 __fillFullscreenChangeEventData(eventStruct){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement&&reportedElement.id?reportedElement.id:"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}}function __registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(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(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(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 __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(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(e){var touches={};var 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(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){if(!specialHTMLTargets[1]){return-4}__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 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_sleep(){throw"Please compile your program with async support in order to use asynchronous operations like emscripten_sleep"}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator==="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){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_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}}var GAI_ERRNO_MESSAGES={};function _gai_strerror(val){var buflen=256;if(!_gai_strerror.buffer){_gai_strerror.buffer=_malloc(buflen);GAI_ERRNO_MESSAGES["0"]="Success";GAI_ERRNO_MESSAGES[""+-1]="Invalid value for 'ai_flags' field";GAI_ERRNO_MESSAGES[""+-2]="NAME or SERVICE is unknown";GAI_ERRNO_MESSAGES[""+-3]="Temporary failure in name resolution";GAI_ERRNO_MESSAGES[""+-4]="Non-recoverable failure in name res";GAI_ERRNO_MESSAGES[""+-6]="'ai_family' not supported";GAI_ERRNO_MESSAGES[""+-7]="'ai_socktype' not supported";GAI_ERRNO_MESSAGES[""+-8]="SERVICE not supported for 'ai_socktype'";GAI_ERRNO_MESSAGES[""+-10]="Memory allocation failure";GAI_ERRNO_MESSAGES[""+-11]="System error returned in 'errno'";GAI_ERRNO_MESSAGES[""+-12]="Argument buffer overflow"}var msg="Unknown error";if(val in GAI_ERRNO_MESSAGES){if(GAI_ERRNO_MESSAGES[val].length>buflen-1){msg="Message too long"}else{msg=GAI_ERRNO_MESSAGES[val]}}writeAsciiToMemory(msg,_gai_strerror.buffer);return _gai_strerror.buffer}function _getTempRet0(){return getTempRet0()|0}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 res;salen=family===10?28:16;addr=family===10?__inet_ntop6_raw(addr):__inet_ntop4_raw(addr);sa=_malloc(salen);res=__write_sockaddr(sa,family,addr,port);assert(!res.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=__inet_pton4_raw(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=__inet_pton6_raw(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=__inet_pton4_raw(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 _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){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}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}}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;GL.programInfos[id]=null}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _glDeleteTextures(n,textures){for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}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}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>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>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],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 _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 _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>=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 _glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function _inet_addr(ptr){var addr=__inet_pton4_raw(UTF8ToString(ptr));if(addr===null){return-1}return addr}var ___tm_current=825552;var ___tm_timezone=(stringToUTF8("GMT",825600,4),825600);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()>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 _usleep(useconds){var start=_emscripten_get_now();while(_emscripten_get_now()-start>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 _pthread_create(){return 6}function _pthread_join(){}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 __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.indexOf(rule)>=0){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 _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}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}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();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");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={"a":___cxa_atexit,"eb":___cxa_thread_atexit,"Le":___map_file,"ca":___sys_fcntl64,"Pe":___sys_ioctl,"Ke":___sys_munmap,"da":___sys_open,"Ie":___sys_read,"p":___sys_socketcall,"Re":__embind_register_bool,"Qe":__embind_register_emval,"fa":__embind_register_float,"N":__embind_register_function,"m":__embind_register_integer,"i":__embind_register_memory_view,"ga":__embind_register_std_string,"J":__embind_register_std_wstring,"Se":__embind_register_void,"P":__emval_as,"D":__emval_call_method,"O":__emval_call_void_method,"hb":__emval_decref,"ib":__emval_get_global,"r":__emval_get_method_caller,"gb":__emval_get_property,"db":__emval_new_cstring,"fb":__emval_run_destructors,"A":_abort,"cb":_clock,"t":_clock_gettime,"Ue":_dlclose,"Wa":_eglBindAPI,"_a":_eglChooseConfig,"Ma":_eglCreateContext,"Oa":_eglCreateWindowSurface,"Na":_eglDestroyContext,"Qa":_eglDestroySurface,"$a":_eglGetConfigAttrib,"M":_eglGetDisplay,"La":_eglGetError,"Xa":_eglGetProcAddress,"Ya":_eglInitialize,"Ra":_eglMakeCurrent,"Ka":_eglQueryString,"Sa":_eglSwapBuffers,"Ta":_eglSwapInterval,"Za":_eglTerminate,"Va":_eglWaitGL,"Ua":_eglWaitNative,"f":_emscripten_asm_const_iii,"Ve":_emscripten_exit_fullscreen,"Ja":_emscripten_exit_pointerlock,"w":_emscripten_get_device_pixel_ratio,"q":_emscripten_get_element_css_size,"ka":_emscripten_get_gamepad_status,"Te":_emscripten_get_num_gamepads,"ke":_emscripten_glActiveTexture,"je":_emscripten_glAttachShader,"Ae":_emscripten_glBeginQueryEXT,"ie":_emscripten_glBindAttribLocation,"he":_emscripten_glBindBuffer,"ge":_emscripten_glBindFramebuffer,"fe":_emscripten_glBindRenderbuffer,"ee":_emscripten_glBindTexture,"se":_emscripten_glBindVertexArrayOES,"de":_emscripten_glBlendColor,"ce":_emscripten_glBlendEquation,"be":_emscripten_glBlendEquationSeparate,"ae":_emscripten_glBlendFunc,"$d":_emscripten_glBlendFuncSeparate,"_d":_emscripten_glBufferData,"Zd":_emscripten_glBufferSubData,"Yd":_emscripten_glCheckFramebufferStatus,"Xd":_emscripten_glClear,"Wd":_emscripten_glClearColor,"Vd":_emscripten_glClearDepthf,"Ud":_emscripten_glClearStencil,"Td":_emscripten_glColorMask,"Sd":_emscripten_glCompileShader,"Rd":_emscripten_glCompressedTexImage2D,"Qd":_emscripten_glCompressedTexSubImage2D,"Pd":_emscripten_glCopyTexImage2D,"Nd":_emscripten_glCopyTexSubImage2D,"Md":_emscripten_glCreateProgram,"Ld":_emscripten_glCreateShader,"Kd":_emscripten_glCullFace,"Jd":_emscripten_glDeleteBuffers,"Id":_emscripten_glDeleteFramebuffers,"Hd":_emscripten_glDeleteProgram,"De":_emscripten_glDeleteQueriesEXT,"Gd":_emscripten_glDeleteRenderbuffers,"Fd":_emscripten_glDeleteShader,"Ed":_emscripten_glDeleteTextures,"re":_emscripten_glDeleteVertexArraysOES,"Dd":_emscripten_glDepthFunc,"Cd":_emscripten_glDepthMask,"Bd":_emscripten_glDepthRangef,"Ad":_emscripten_glDetachShader,"zd":_emscripten_glDisable,"yd":_emscripten_glDisableVertexAttribArray,"xd":_emscripten_glDrawArrays,"ne":_emscripten_glDrawArraysInstancedANGLE,"oe":_emscripten_glDrawBuffersWEBGL,"wd":_emscripten_glDrawElements,"me":_emscripten_glDrawElementsInstancedANGLE,"vd":_emscripten_glEnable,"ud":_emscripten_glEnableVertexAttribArray,"ze":_emscripten_glEndQueryEXT,"td":_emscripten_glFinish,"sd":_emscripten_glFlush,"rd":_emscripten_glFramebufferRenderbuffer,"qd":_emscripten_glFramebufferTexture2D,"pd":_emscripten_glFrontFace,"od":_emscripten_glGenBuffers,"md":_emscripten_glGenFramebuffers,"Ee":_emscripten_glGenQueriesEXT,"ld":_emscripten_glGenRenderbuffers,"kd":_emscripten_glGenTextures,"qe":_emscripten_glGenVertexArraysOES,"nd":_emscripten_glGenerateMipmap,"jd":_emscripten_glGetActiveAttrib,"id":_emscripten_glGetActiveUniform,"hd":_emscripten_glGetAttachedShaders,"gd":_emscripten_glGetAttribLocation,"fd":_emscripten_glGetBooleanv,"ed":_emscripten_glGetBufferParameteriv,"dd":_emscripten_glGetError,"cd":_emscripten_glGetFloatv,"bd":_emscripten_glGetFramebufferAttachmentParameteriv,"ad":_emscripten_glGetIntegerv,"_c":_emscripten_glGetProgramInfoLog,"$c":_emscripten_glGetProgramiv,"ue":_emscripten_glGetQueryObjecti64vEXT,"we":_emscripten_glGetQueryObjectivEXT,"te":_emscripten_glGetQueryObjectui64vEXT,"ve":_emscripten_glGetQueryObjectuivEXT,"xe":_emscripten_glGetQueryivEXT,"Zc":_emscripten_glGetRenderbufferParameteriv,"Xc":_emscripten_glGetShaderInfoLog,"Wc":_emscripten_glGetShaderPrecisionFormat,"Vc":_emscripten_glGetShaderSource,"Yc":_emscripten_glGetShaderiv,"Uc":_emscripten_glGetString,"Tc":_emscripten_glGetTexParameterfv,"Sc":_emscripten_glGetTexParameteriv,"Oc":_emscripten_glGetUniformLocation,"Qc":_emscripten_glGetUniformfv,"Pc":_emscripten_glGetUniformiv,"Lc":_emscripten_glGetVertexAttribPointerv,"Nc":_emscripten_glGetVertexAttribfv,"Mc":_emscripten_glGetVertexAttribiv,"Kc":_emscripten_glHint,"Jc":_emscripten_glIsBuffer,"Ic":_emscripten_glIsEnabled,"Hc":_emscripten_glIsFramebuffer,"Fc":_emscripten_glIsProgram,"Ce":_emscripten_glIsQueryEXT,"Ec":_emscripten_glIsRenderbuffer,"Dc":_emscripten_glIsShader,"Cc":_emscripten_glIsTexture,"pe":_emscripten_glIsVertexArrayOES,"Bc":_emscripten_glLineWidth,"Ac":_emscripten_glLinkProgram,"zc":_emscripten_glPixelStorei,"yc":_emscripten_glPolygonOffset,"ye":_emscripten_glQueryCounterEXT,"xc":_emscripten_glReadPixels,"wc":_emscripten_glReleaseShaderCompiler,"uc":_emscripten_glRenderbufferStorage,"tc":_emscripten_glSampleCoverage,"sc":_emscripten_glScissor,"rc":_emscripten_glShaderBinary,"qc":_emscripten_glShaderSource,"pc":_emscripten_glStencilFunc,"oc":_emscripten_glStencilFuncSeparate,"nc":_emscripten_glStencilMask,"mc":_emscripten_glStencilMaskSeparate,"lc":_emscripten_glStencilOp,"kc":_emscripten_glStencilOpSeparate,"jc":_emscripten_glTexImage2D,"ic":_emscripten_glTexParameterf,"hc":_emscripten_glTexParameterfv,"gc":_emscripten_glTexParameteri,"fc":_emscripten_glTexParameteriv,"ec":_emscripten_glTexSubImage2D,"dc":_emscripten_glUniform1f,"cc":_emscripten_glUniform1fv,"bc":_emscripten_glUniform1i,"$b":_emscripten_glUniform1iv,"_b":_emscripten_glUniform2f,"Zb":_emscripten_glUniform2fv,"Yb":_emscripten_glUniform2i,"Xb":_emscripten_glUniform2iv,"Wb":_emscripten_glUniform3f,"Vb":_emscripten_glUniform3fv,"Ub":_emscripten_glUniform3i,"Tb":_emscripten_glUniform3iv,"Sb":_emscripten_glUniform4f,"Rb":_emscripten_glUniform4fv,"Qb":_emscripten_glUniform4i,"Pb":_emscripten_glUniform4iv,"Ob":_emscripten_glUniformMatrix2fv,"Nb":_emscripten_glUniformMatrix3fv,"Mb":_emscripten_glUniformMatrix4fv,"Lb":_emscripten_glUseProgram,"Kb":_emscripten_glValidateProgram,"Jb":_emscripten_glVertexAttrib1f,"Ib":_emscripten_glVertexAttrib1fv,"Gb":_emscripten_glVertexAttrib2f,"Fb":_emscripten_glVertexAttrib2fv,"Eb":_emscripten_glVertexAttrib3f,"Db":_emscripten_glVertexAttrib3fv,"Cb":_emscripten_glVertexAttrib4f,"Bb":_emscripten_glVertexAttrib4fv,"le":_emscripten_glVertexAttribDivisorANGLE,"Ab":_emscripten_glVertexAttribPointer,"zb":_emscripten_glViewport,"C":_emscripten_has_asyncify,"Q":_emscripten_longjmp,"Fe":_emscripten_memcpy_big,"We":_emscripten_request_fullscreen_strategy,"L":_emscripten_request_pointerlock,"Ge":_emscripten_resize_heap,"la":_emscripten_sample_gamepad_data,"ma":_emscripten_set_beforeunload_callback_on_thread,"za":_emscripten_set_blur_callback_on_thread,"v":_emscripten_set_canvas_element_size,"K":_emscripten_set_element_css_size,"Ba":_emscripten_set_focus_callback_on_thread,"qa":_emscripten_set_fullscreenchange_callback_on_thread,"ja":_emscripten_set_gamepadconnected_callback_on_thread,"ia":_emscripten_set_gamepaddisconnected_callback_on_thread,"ta":_emscripten_set_keydown_callback_on_thread,"ra":_emscripten_set_keypress_callback_on_thread,"sa":_emscripten_set_keyup_callback_on_thread,"bb":_emscripten_set_main_loop,"Ga":_emscripten_set_mousedown_callback_on_thread,"Ea":_emscripten_set_mouseenter_callback_on_thread,"Da":_emscripten_set_mouseleave_callback_on_thread,"Ha":_emscripten_set_mousemove_callback_on_thread,"Fa":_emscripten_set_mouseup_callback_on_thread,"ua":_emscripten_set_pointerlockchange_callback_on_thread,"oa":_emscripten_set_resize_callback_on_thread,"va":_emscripten_set_touchcancel_callback_on_thread,"xa":_emscripten_set_touchend_callback_on_thread,"wa":_emscripten_set_touchmove_callback_on_thread,"ya":_emscripten_set_touchstart_callback_on_thread,"na":_emscripten_set_visibilitychange_callback_on_thread,"Ca":_emscripten_set_wheel_callback_on_thread,"B":_emscripten_sleep,"Me":_environ_get,"Ne":_environ_sizes_get,"Ia":_exit,"I":_fd_close,"Oe":_fd_read,"yb":_fd_seek,"ba":_fd_write,"Gc":_gai_strerror,"R":_getTempRet0,"Rc":_getaddrinfo,"H":_gettimeofday,"F":_glActiveTexture,"U":_glAttachShader,"lb":_glBindAttribLocation,"b":_glBindBuffer,"h":_glBindFramebuffer,"z":_glBindTexture,"l":_glBlendFunc,"g":_glBufferData,"Aa":_glCheckFramebufferStatus,"aa":_glClear,"ea":_glClearColor,"tb":_glCompileShader,"ob":_glCreateProgram,"vb":_glCreateShader,"x":_glDeleteBuffers,"wb":_glDeleteFramebuffers,"kb":_glDeleteProgram,"rb":_glDeleteShader,"G":_glDeleteTextures,"S":_glDetachShader,"Xe":_glDisable,"d":_glDisableVertexAttribArray,"o":_glDrawElements,"Pa":_glEnable,"e":_glEnableVertexAttribArray,"_":_glFramebufferTexture2D,"k":_glGenBuffers,"xb":_glGenFramebuffers,"ac":_glGenTextures,"Be":_glGetIntegerv,"mb":_glGetProgramInfoLog,"T":_glGetProgramiv,"sb":_glGetShaderInfoLog,"Y":_glGetShaderiv,"j":_glGetUniformLocation,"nb":_glLinkProgram,"pa":_glScissor,"ub":_glShaderSource,"Hb":_glTexImage2D,"$":_glTexParameteri,"W":_glUniform1f,"E":_glUniform1i,"X":_glUniform2f,"V":_glUniform4f,"qb":_glUniformMatrix4fv,"y":_glUseProgram,"c":_glVertexAttribPointer,"u":_glViewport,"vc":_inet_addr,"jb":invoke_vii,"pb":_localtime,"memory":wasmMemory,"ha":_nanosleep,"Od":_pthread_create,"He":_pthread_join,"s":_setTempRet0,"n":_sigaction,"ab":_signal,"Je":_strftime_l,"table":wasmTable,"Z":_time};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["Ye"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["Ze"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["_e"]).apply(null,arguments)};var _htons=Module["_htons"]=function(){return(_htons=Module["_htons"]=Module["asm"]["$e"]).apply(null,arguments)};var _ntohs=Module["_ntohs"]=function(){return(_ntohs=Module["_ntohs"]=Module["asm"]["af"]).apply(null,arguments)};var _htonl=Module["_htonl"]=function(){return(_htonl=Module["_htonl"]=Module["asm"]["bf"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["cf"]).apply(null,arguments)};var _fflush=Module["_fflush"]=function(){return(_fflush=Module["_fflush"]=Module["asm"]["df"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["ef"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["ff"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["gf"]).apply(null,arguments)};var _emscripten_GetProcAddress=Module["_emscripten_GetProcAddress"]=function(){return(_emscripten_GetProcAddress=Module["_emscripten_GetProcAddress"]=Module["asm"]["hf"]).apply(null,arguments)};var __get_tzname=Module["__get_tzname"]=function(){return(__get_tzname=Module["__get_tzname"]=Module["asm"]["jf"]).apply(null,arguments)};var __get_daylight=Module["__get_daylight"]=function(){return(__get_daylight=Module["__get_daylight"]=Module["asm"]["kf"]).apply(null,arguments)};var __get_timezone=Module["__get_timezone"]=function(){return(__get_timezone=Module["__get_timezone"]=Module["asm"]["lf"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["mf"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["nf"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["of"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["pf"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["qf"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["rf"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["sf"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["tf"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["uf"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["vf"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["wf"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["xf"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["yf"]).apply(null,arguments)};var dynCall_ji=Module["dynCall_ji"]=function(){return(dynCall_ji=Module["dynCall_ji"]=Module["asm"]["zf"]).apply(null,arguments)};var dynCall_viif=Module["dynCall_viif"]=function(){return(dynCall_viif=Module["dynCall_viif"]=Module["asm"]["Af"]).apply(null,arguments)};var dynCall_fiff=Module["dynCall_fiff"]=function(){return(dynCall_fiff=Module["dynCall_fiff"]=Module["asm"]["Bf"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["Cf"]).apply(null,arguments)};var dynCall_iiij=Module["dynCall_iiij"]=function(){return(dynCall_iiij=Module["dynCall_iiij"]=Module["asm"]["Df"]).apply(null,arguments)};var dynCall_viij=Module["dynCall_viij"]=function(){return(dynCall_viij=Module["dynCall_viij"]=Module["asm"]["Ef"]).apply(null,arguments)};var dynCall_iijii=Module["dynCall_iijii"]=function(){return(dynCall_iijii=Module["dynCall_iijii"]=Module["asm"]["Ff"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Gf"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["Hf"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["If"]).apply(null,arguments)};var dynCall_iiiiiiiiii=Module["dynCall_iiiiiiiiii"]=function(){return(dynCall_iiiiiiiiii=Module["dynCall_iiiiiiiiii"]=Module["asm"]["Jf"]).apply(null,arguments)};var dynCall_iiiiiidii=Module["dynCall_iiiiiidii"]=function(){return(dynCall_iiiiiidii=Module["dynCall_iiiiiidii"]=Module["asm"]["Kf"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["Lf"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Mf"]).apply(null,arguments)};var dynCall_viiiiiiiiiii=Module["dynCall_viiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiii=Module["dynCall_viiiiiiiiiii"]=Module["asm"]["Nf"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["Of"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["Pf"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["Qf"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["Rf"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["Sf"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["Tf"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["Uf"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["Vf"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Wf"]).apply(null,arguments)};var dynCall_vffff=Module["dynCall_vffff"]=function(){return(dynCall_vffff=Module["dynCall_vffff"]=Module["asm"]["Xf"]).apply(null,arguments)};var dynCall_vf=Module["dynCall_vf"]=function(){return(dynCall_vf=Module["dynCall_vf"]=Module["asm"]["Yf"]).apply(null,arguments)};var dynCall_viiiiiiii=Module["dynCall_viiiiiiii"]=function(){return(dynCall_viiiiiiii=Module["dynCall_viiiiiiii"]=Module["asm"]["Zf"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["_f"]).apply(null,arguments)};var dynCall_vff=Module["dynCall_vff"]=function(){return(dynCall_vff=Module["dynCall_vff"]=Module["asm"]["$f"]).apply(null,arguments)};var dynCall_vfi=Module["dynCall_vfi"]=function(){return(dynCall_vfi=Module["dynCall_vfi"]=Module["asm"]["ag"]).apply(null,arguments)};var dynCall_vif=Module["dynCall_vif"]=function(){return(dynCall_vif=Module["dynCall_vif"]=Module["asm"]["bg"]).apply(null,arguments)};var dynCall_viff=Module["dynCall_viff"]=function(){return(dynCall_viff=Module["dynCall_viff"]=Module["asm"]["cg"]).apply(null,arguments)};var dynCall_vifff=Module["dynCall_vifff"]=function(){return(dynCall_vifff=Module["dynCall_vifff"]=Module["asm"]["dg"]).apply(null,arguments)};var dynCall_viffff=Module["dynCall_viffff"]=function(){return(dynCall_viffff=Module["dynCall_viffff"]=Module["asm"]["eg"]).apply(null,arguments)};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)}}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"){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();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;run(); +var Module=typeof Module!=="undefined"?Module:{};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=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",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(document.currentScript){scriptDirectory=document.currentScript.src}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 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)}}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"){abort("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":4750,"maximum":4750+0,"element":"anyfunc"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}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>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var i=0;var str="";while(1){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0||i==maxBytesToRead/2)return str;++i;str+=String.fromCharCode(codeUnit)}}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;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}var WASM_PAGE_SIZE=65536;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 DYNAMIC_BASE=6130672,DYNAMICTOP_PTR=887632;var INITIAL_INITIAL_MEMORY=Module["INITIAL_MEMORY"]||196870144;if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,"maximum":INITIAL_INITIAL_MEMORY/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();SOCKFS.root=FS.mount(SOCKFS,{},null);callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);FS.quit();TTY.shutdown();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)}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+="";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}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://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="pewpewlive-wasm.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"&&!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()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={"a":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)&&!isFileURI(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");return 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={7345:function(){location.reload()},771296:function($0){var url=UTF8ToString($0);window.open(url,"_blank")},771424:function(){Module.audioBuffers={};Module.audioContext=new(window.AudioContext||window.webkitAudioContext)},771530:function($0,$1,$2){var sound_id=$0;var sample_ptr=$1;var sample_count=$2;audio_buffer=Module.audioContext.createBuffer(1,sample_count,Module.audioContext.sampleRate);float_array=HEAPF32.subarray(sample_ptr/4,sample_ptr/4+sample_count);if(typeof audio_buffer.copyToChannel=="function"){audio_buffer.copyToChannel(float_array,0)}else{audio_buffer.getChannelData(0).set(float_array)}Module.audioBuffers[sound_id]=audio_buffer},771986:function($0,$1,$2){var sound_id=$0;Module.audioContext.resume().then(function(){var source=Module.audioContext.createBufferSource();var panner=Module.audioContext.createPanner();source.buffer=Module.audioBuffers[sound_id];if(panner.positionX){panner.positionX.value=$1;panner.positionY.value=$2}else{panner.setPosition($1,$2,0)}panner.rolloffFactor=.1;source.connect(panner);panner.connect(Module.audioContext.destination);source.start(0)})},772457:function($0){var sound_id=$0;Module.audioContext.resume().then(function(){var source=Module.audioContext.createBufferSource();source.buffer=Module.audioBuffers[sound_id];source.connect(Module.audioContext.destination);source.start(0)})},772701:function($0,$1){var listener=Module.audioContext.listener;if(listener.positionX){listener.positionX.value=$0;listener.positionY.value=$1}else{listener.setPosition($0,$1,0)}},772885:function(){Module.audioBuffers={}},772910:function(){return Module.audioContext.sampleRate},773703:function($0,$1,$2,$3,$4,$5){var url=UTF8ToString($0);var content_type=UTF8ToString($3);var post_string=new Uint8ClampedArray(Module.HEAPU8.buffer,$4,$5);var xhr=new XMLHttpRequest;xhr.open("POST",url,true);xhr.responseType="arraybuffer";xhr.setRequestHeader("Content-Type",content_type);xhr.timeout=1e4;var delegateId=$1;var xhrId=$2;xhr.onreadystatechange=function(){if(xhr.readyState==XMLHttpRequest.DONE){if(xhr.status==200){Module.urlRequestOnSuccess(delegateId,xhrId,xhr.response)}else{Module.urlRequestOnError(delegateId,xhrId,xhr.status)}}};xhr.send(post_string)},810412: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>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>2;var dst=0;var num;if(typeof CanvasPixelArray!=="undefined"&&data instanceof CanvasPixelArray){num=data.length;while(dst>8&255;data[dst+2]=val>>16&255;data[dst+3]=val>>24&255;src++;dst+=4}}else{var data32=new Int32Array(data.buffer);num=data32.length;data32.set(HEAP32.subarray(src,src+num))}ctx.putImageData(image,0,0);var url=hot_x===0&&hot_y===0?"url("+canvas.toDataURL()+"), auto":"url("+canvas.toDataURL()+") "+hot_x+" "+hot_y+", auto";var urlBuf=_malloc(url.length+1);stringToUTF8(url,urlBuf,url.length+1);return urlBuf},812880:function($0){if(Module["canvas"]){Module["canvas"].style["cursor"]=UTF8ToString($0)}return 0},812973:function(){if(Module["canvas"]){Module["canvas"].style["cursor"]="none"}},814198:function(){return screen.width},814225:function(){return screen.height},814253:function(){return window.innerWidth},814285:function(){return window.innerHeight},814363:function($0){if(typeof setWindowTitle!=="undefined"){setWindowTitle(UTF8ToString($0))}return 0},814497:function(){if(typeof AudioContext!=="undefined"){return 1}else if(typeof webkitAudioContext!=="undefined"){return 1}return 0},814663:function(){if(typeof navigator.mediaDevices!=="undefined"&&typeof navigator.mediaDevices.getUserMedia!=="undefined"){return 1}else if(typeof navigator.webkitGetUserMedia!=="undefined"){return 1}return 0},814889: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}if(SDL2.audioContext){autoResumeAudioContext(SDL2.audioContext)}}return SDL2.audioContext===undefined?-1:0},815442:function(){var SDL2=Module["SDL2"];return SDL2.audioContext.sampleRate},815512: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)}},817164: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"])},817574:function($0,$1){var SDL2=Module["SDL2"];var numChannels=SDL2.capture.currentCaptureBuffer.numberOfChannels;for(var c=0;c>2]}}},818659: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>2]=value;return value}function ___map_file(pathname,size){setErrNo(63);return-1}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=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=[]}}}};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=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);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=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,"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;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(){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>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_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_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 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(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=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}}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:FS.modeStringToFlags("r+"),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>>0}function jstoi_q(str){return parseInt(str)}function __inet_pton6_raw(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.indexOf("::")===0){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>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255)}function __inet_ntop6_raw(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=__inet_ntop4_raw(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=__inet_ntop4_raw(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=__inet_ntop6_raw(addr);break;default:return{errno:5}}return{family:family,addr:addr,port:port}}function __write_sockaddr(sa,family,addr,port){switch(family){case 2:addr=__inet_pton4_raw(addr);HEAP16[sa>>1]=family;HEAP32[sa+4>>2]=addr;HEAP16[sa+2>>1]=_htons(port);break;case 10:addr=__inet_pton6_raw(addr);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{errno:5}}return{}}function ___sys_socketcall(call,socketvararg){try{SYSCALLS.varargs=socketvararg;var getSocketFromFD=function(){var socket=SOCKFS.getSocket(SYSCALLS.get());if(!socket)throw new FS.ErrnoError(8);return socket};var getSocketAddress=function(allowNull){var addrp=SYSCALLS.get(),addrlen=SYSCALLS.get();if(allowNull&&addrp===0)return null;var info=__read_sockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info};switch(call){case 1:{var domain=SYSCALLS.get(),type=SYSCALLS.get(),protocol=SYSCALLS.get();var sock=SOCKFS.createSocket(domain,type,protocol);return sock.stream.fd}case 2:{var sock=getSocketFromFD(),info=getSocketAddress();sock.sock_ops.bind(sock,info.addr,info.port);return 0}case 3:{var sock=getSocketFromFD(),info=getSocketAddress();sock.sock_ops.connect(sock,info.addr,info.port);return 0}case 4:{var sock=getSocketFromFD(),backlog=SYSCALLS.get();sock.sock_ops.listen(sock,backlog);return 0}case 5:{var sock=getSocketFromFD(),addr=SYSCALLS.get(),addrlen=SYSCALLS.get();var newsock=sock.sock_ops.accept(sock);if(addr){var res=__write_sockaddr(addr,newsock.family,DNS.lookup_name(newsock.daddr),newsock.dport)}return newsock.stream.fd}case 6:{var sock=getSocketFromFD(),addr=SYSCALLS.get(),addrlen=SYSCALLS.get();var res=__write_sockaddr(addr,sock.family,DNS.lookup_name(sock.saddr||"0.0.0.0"),sock.sport);return 0}case 7:{var sock=getSocketFromFD(),addr=SYSCALLS.get(),addrlen=SYSCALLS.get();if(!sock.daddr){return-53}var res=__write_sockaddr(addr,sock.family,DNS.lookup_name(sock.daddr),sock.dport);return 0}case 11:{var sock=getSocketFromFD(),message=SYSCALLS.get(),length=SYSCALLS.get(),flags=SYSCALLS.get(),dest=getSocketAddress(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)}}case 12:{var sock=getSocketFromFD(),buf=SYSCALLS.get(),len=SYSCALLS.get(),flags=SYSCALLS.get(),addr=SYSCALLS.get(),addrlen=SYSCALLS.get();var msg=sock.sock_ops.recvmsg(sock,len);if(!msg)return 0;if(addr){var res=__write_sockaddr(addr,sock.family,DNS.lookup_name(msg.addr),msg.port)}HEAPU8.set(msg.buffer,buf);return msg.buffer.byteLength}case 14:{return-50}case 15:{var sock=getSocketFromFD(),level=SYSCALLS.get(),optname=SYSCALLS.get(),optval=SYSCALLS.get(),optlen=SYSCALLS.get();if(level===1){if(optname===4){HEAP32[optval>>2]=sock.error;HEAP32[optlen>>2]=4;sock.error=null;return 0}}return-50}case 16:{var sock=getSocketFromFD(),message=SYSCALLS.get(),flags=SYSCALLS.get();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=__read_sockaddr(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)}case 17:{var sock=getSocketFromFD(),message=SYSCALLS.get(),flags=SYSCALLS.get();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 res=__write_sockaddr(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}default:{return-52}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=emval_handle_array[handle].value;__emval_decref(handle);return rv},"toWireType":function(destructors,value){return __emval_register(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function _embind_repr(v){if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(dynCall){var args=[];for(var i=1;i>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=function(value){return value};if(minRange===0){var bitshift=32-8*size;fromWireType=function(value){return value<>>bitshift}}var isUnsignedType=name.indexOf("unsigned")!=-1;registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}if(valuemaxRange){throw new TypeError('Passing a number "'+_embind_repr(value)+'" from JS side to C/C++ side to an argument of type "'+name+'", which is outside the valid range ['+minRange+", "+maxRange+"]!")}return isUnsignedType?value>>>0:value|0},"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;i>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value==="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function requireHandle(handle){if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handle_array[handle].value}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+" has unknown type "+getTypeName(rawType))}return impl}function __emval_as(handle,returnType,destructorsRef){handle=requireHandle(handle);returnType=requireRegisteredType(returnType,"emval::as");var destructors=[];var rd=__emval_register(destructors);HEAP32[destructorsRef>>2]=rd;return returnType["toWireType"](destructors,handle)}function __emval_allocateDestructors(destructorsRef){var destructors=[];HEAP32[destructorsRef>>2]=__emval_register(destructors);return destructors}var emval_symbols={};function getStringOrSymbol(address){var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}else{return symbol}}var emval_methodCallers=[];function __emval_call_method(caller,handle,methodName,destructorsRef,args){caller=emval_methodCallers[caller];handle=requireHandle(handle);methodName=getStringOrSymbol(methodName);return caller(handle,methodName,__emval_allocateDestructors(destructorsRef),args)}function __emval_call_void_method(caller,handle,methodName,args){caller=emval_methodCallers[caller];handle=requireHandle(handle);methodName=getStringOrSymbol(methodName);caller(handle,methodName,null,args)}function emval_get_global(){if(typeof globalThis==="object"){return globalThis}return function(){return Function}()("return this")()}function __emval_get_global(name){if(name===0){return __emval_register(emval_get_global())}else{name=getStringOrSymbol(name);return __emval_register(emval_get_global()[name])}}function __emval_addMethodCaller(caller){var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id}function __emval_lookupTypes(argCount,argTypes){var a=new Array(argCount);for(var i=0;i>2)+i],"parameter "+i)}return a}function __emval_get_method_caller(argCount,argTypes){var types=__emval_lookupTypes(argCount,argTypes);var retType=types[0];var signatureName=retType.name+"_$"+types.slice(1).map(function(t){return t.name}).join("_")+"$";var params=["retType"];var args=[retType];var argsList="";for(var i=0;i>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")}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}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(thisMainLoopId1&&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(thisMainLoopId0)_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=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: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)},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>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_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=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_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(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>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){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}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!=="undefined"?document:0,typeof window!=="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!=="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function __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>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0}function __fillGamepadEventData(eventStruct,e){HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i>3]=e.axes[i]}for(var i=0;i>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)}function _emscripten_get_gamepad_status(index,gamepadState){if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;__fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function _emscripten_glActiveTexture(x0){GLctx["activeTexture"](x0)}function _emscripten_glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.timerQueriesEXT[id])}function _emscripten_glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _emscripten_glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _emscripten_glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _emscripten_glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _emscripten_glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}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_glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _emscripten_glBufferSubData(target,offset,size,data){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_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 _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){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}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_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>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _emscripten_glDeleteFramebuffers(n,framebuffers){for(var i=0;i>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _emscripten_glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _emscripten_glDeleteQueriesEXT(n,ids){for(var i=0;i>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>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[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_glDeleteTextures(n,textures){for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _emscripten_glDeleteVertexArraysOES(n,vaos){for(var i=0;i>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _emscripten_glDepthFunc(x0){GLctx["depthFunc"](x0)}function _emscripten_glDepthMask(flag){GLctx.depthMask(!!flag)}function _emscripten_glDepthRangef(x0,x1){GLctx["depthRange"](x0,x1)}function _emscripten_glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glDisable(x0){GLctx["disable"](x0)}function _emscripten_glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _emscripten_glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _emscripten_glDrawArraysInstancedANGLE(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}var tempFixedLengthArray=[];function _emscripten_glDrawBuffersWEBGL(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx["drawBuffers"](bufArray)}function _emscripten_glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _emscripten_glDrawElementsInstancedANGLE(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _emscripten_glEnable(x0){GLctx["enable"](x0)}function _emscripten_glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _emscripten_glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)}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_glFrontFace(x0){GLctx["frontFace"](x0)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i>2]=id}}function _emscripten_glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _emscripten_glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _emscripten_glGenQueriesEXT(n,ids){for(var i=0;i>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_glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _emscripten_glGenVertexArraysOES(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _emscripten_glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function __glGetActiveAttribOrUniform(funcName,program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}}function _emscripten_glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}function _emscripten_glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}function _emscripten_glGetAttachedShaders(program,maxCount,count,shaders){var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i>2]=id}}function _emscripten_glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length: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 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _emscripten_glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4)}function _emscripten_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_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 _emscripten_glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}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>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>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_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_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_glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderPrecisionFormat(shaderType,precisionType,range,precision){var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision}function _emscripten_glGetShaderSource(shader,bufSize,length,source){var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_glGetString(name_){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);{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_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_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>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}}function _emscripten_glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)}function _emscripten_glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}function _emscripten_glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)}function emscriptenWebGLGetVertexAttrib(index,pname,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}}function _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_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_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_glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)}function _emscripten_glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)}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_glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _emscripten_glPolygonOffset(x0,x1){GLctx["polygonOffset"](x0,x1)}function _emscripten_glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.timerQueriesEXT[id],target)}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};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==1)return HEAPU8;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<>shift,pixels+bytes>>shift)}function _emscripten_glReadPixels(x,y,width,height,format,type,pixels){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_glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)}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){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):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_glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){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_glUniform1f(location,v0){GLctx.uniform1f(GL.uniforms[location],v0)}var miniTempWebGLFloatBuffers=[];function _emscripten_glUniform1fv(location,count,value){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(GL.uniforms[location],view)}function _emscripten_glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}var __miniTempWebGLIntBuffers=[];function _emscripten_glUniform1iv(location,count,value){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(GL.uniforms[location],view)}function _emscripten_glUniform2f(location,v0,v1){GLctx.uniform2f(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2fv(location,count,value){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(GL.uniforms[location],view)}function _emscripten_glUniform2i(location,v0,v1){GLctx.uniform2i(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2iv(location,count,value){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(GL.uniforms[location],view)}function _emscripten_glUniform3f(location,v0,v1,v2){GLctx.uniform3f(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3fv(location,count,value){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(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(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(GL.uniforms[location],view)}function _emscripten_glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4fv(location,count,value){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(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(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(GL.uniforms[location],view)}function _emscripten_glUniformMatrix2fv(location,count,transpose,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix3fv(location,count,transpose,value){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(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix4fv(location,count,transpose,value){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(GL.uniforms[location],!!transpose,view)}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_glVertexAttribDivisorANGLE(index,divisor){GLctx["vertexAttribDivisor"](index,divisor)}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_has_asyncify(){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 abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}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 __fillFullscreenChangeEventData(eventStruct){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement&&reportedElement.id?reportedElement.id:"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}}function __registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(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(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(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 __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(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(e){var touches={};var 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(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){if(!specialHTMLTargets[1]){return-4}__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 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_sleep(){throw"Please compile your program with async support in order to use asynchronous operations like emscripten_sleep"}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator==="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){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_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}}var GAI_ERRNO_MESSAGES={};function _gai_strerror(val){var buflen=256;if(!_gai_strerror.buffer){_gai_strerror.buffer=_malloc(buflen);GAI_ERRNO_MESSAGES["0"]="Success";GAI_ERRNO_MESSAGES[""+-1]="Invalid value for 'ai_flags' field";GAI_ERRNO_MESSAGES[""+-2]="NAME or SERVICE is unknown";GAI_ERRNO_MESSAGES[""+-3]="Temporary failure in name resolution";GAI_ERRNO_MESSAGES[""+-4]="Non-recoverable failure in name res";GAI_ERRNO_MESSAGES[""+-6]="'ai_family' not supported";GAI_ERRNO_MESSAGES[""+-7]="'ai_socktype' not supported";GAI_ERRNO_MESSAGES[""+-8]="SERVICE not supported for 'ai_socktype'";GAI_ERRNO_MESSAGES[""+-10]="Memory allocation failure";GAI_ERRNO_MESSAGES[""+-11]="System error returned in 'errno'";GAI_ERRNO_MESSAGES[""+-12]="Argument buffer overflow"}var msg="Unknown error";if(val in GAI_ERRNO_MESSAGES){if(GAI_ERRNO_MESSAGES[val].length>buflen-1){msg="Message too long"}else{msg=GAI_ERRNO_MESSAGES[val]}}writeAsciiToMemory(msg,_gai_strerror.buffer);return _gai_strerror.buffer}function _getTempRet0(){return getTempRet0()|0}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 res;salen=family===10?28:16;addr=family===10?__inet_ntop6_raw(addr):__inet_ntop4_raw(addr);sa=_malloc(salen);res=__write_sockaddr(sa,family,addr,port);assert(!res.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=__inet_pton4_raw(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=__inet_pton6_raw(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=__inet_pton4_raw(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 _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){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}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}}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;GL.programInfos[id]=null}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _glDeleteTextures(n,textures){for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}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}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>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>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],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 _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 _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>=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 _glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function _inet_addr(ptr){var addr=__inet_pton4_raw(UTF8ToString(ptr));if(addr===null){return-1}return addr}var ___tm_current=887648;var ___tm_timezone=(stringToUTF8("GMT",887696,4),887696);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()>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 _usleep(useconds){var start=_emscripten_get_now();while(_emscripten_get_now()-start>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 _pthread_create(){return 6}function _pthread_join(){}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 __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.indexOf(rule)>=0){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 _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}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}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();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");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={"a":___cxa_atexit,"db":___cxa_thread_atexit,"Je":___map_file,"fa":___sys_fcntl64,"Ne":___sys_ioctl,"Ie":___sys_munmap,"ga":___sys_open,"Ge":___sys_read,"p":___sys_socketcall,"Qe":__embind_register_bool,"Pe":__embind_register_emval,"ha":__embind_register_float,"N":__embind_register_function,"m":__embind_register_integer,"i":__embind_register_memory_view,"ia":__embind_register_std_string,"I":__embind_register_std_wstring,"Re":__embind_register_void,"T":__emval_as,"D":__emval_call_method,"S":__emval_call_void_method,"mb":__emval_decref,"nb":__emval_get_global,"s":__emval_get_method_caller,"kb":__emval_get_property,"ib":__emval_new_cstring,"jb":__emval_run_destructors,"A":_abort,"hb":_clock,"u":_clock_gettime,"Te":_dlclose,"Wa":_eglBindAPI,"$a":_eglChooseConfig,"Ma":_eglCreateContext,"Oa":_eglCreateWindowSurface,"Na":_eglDestroyContext,"Qa":_eglDestroySurface,"ab":_eglGetConfigAttrib,"M":_eglGetDisplay,"La":_eglGetError,"Xa":_eglGetProcAddress,"Ya":_eglInitialize,"Ra":_eglMakeCurrent,"Ka":_eglQueryString,"Sa":_eglSwapBuffers,"Ta":_eglSwapInterval,"_a":_eglTerminate,"Va":_eglWaitGL,"Ua":_eglWaitNative,"f":_emscripten_asm_const_iii,"Ue":_emscripten_exit_fullscreen,"Ja":_emscripten_exit_pointerlock,"w":_emscripten_get_device_pixel_ratio,"q":_emscripten_get_element_css_size,"ma":_emscripten_get_gamepad_status,"Se":_emscripten_get_num_gamepads,"ie":_emscripten_glActiveTexture,"he":_emscripten_glAttachShader,"ye":_emscripten_glBeginQueryEXT,"ge":_emscripten_glBindAttribLocation,"fe":_emscripten_glBindBuffer,"ee":_emscripten_glBindFramebuffer,"de":_emscripten_glBindRenderbuffer,"ce":_emscripten_glBindTexture,"qe":_emscripten_glBindVertexArrayOES,"be":_emscripten_glBlendColor,"ae":_emscripten_glBlendEquation,"$d":_emscripten_glBlendEquationSeparate,"_d":_emscripten_glBlendFunc,"Zd":_emscripten_glBlendFuncSeparate,"Yd":_emscripten_glBufferData,"Xd":_emscripten_glBufferSubData,"Vd":_emscripten_glCheckFramebufferStatus,"Ud":_emscripten_glClear,"Td":_emscripten_glClearColor,"Sd":_emscripten_glClearDepthf,"Rd":_emscripten_glClearStencil,"Qd":_emscripten_glColorMask,"Pd":_emscripten_glCompileShader,"Od":_emscripten_glCompressedTexImage2D,"Nd":_emscripten_glCompressedTexSubImage2D,"Md":_emscripten_glCopyTexImage2D,"Kd":_emscripten_glCopyTexSubImage2D,"Jd":_emscripten_glCreateProgram,"Id":_emscripten_glCreateShader,"Hd":_emscripten_glCullFace,"Gd":_emscripten_glDeleteBuffers,"Fd":_emscripten_glDeleteFramebuffers,"Ed":_emscripten_glDeleteProgram,"Be":_emscripten_glDeleteQueriesEXT,"Dd":_emscripten_glDeleteRenderbuffers,"Cd":_emscripten_glDeleteShader,"Bd":_emscripten_glDeleteTextures,"pe":_emscripten_glDeleteVertexArraysOES,"zd":_emscripten_glDepthFunc,"yd":_emscripten_glDepthMask,"xd":_emscripten_glDepthRangef,"wd":_emscripten_glDetachShader,"vd":_emscripten_glDisable,"ud":_emscripten_glDisableVertexAttribArray,"td":_emscripten_glDrawArrays,"le":_emscripten_glDrawArraysInstancedANGLE,"me":_emscripten_glDrawBuffersWEBGL,"sd":_emscripten_glDrawElements,"ke":_emscripten_glDrawElementsInstancedANGLE,"rd":_emscripten_glEnable,"qd":_emscripten_glEnableVertexAttribArray,"xe":_emscripten_glEndQueryEXT,"od":_emscripten_glFinish,"nd":_emscripten_glFlush,"md":_emscripten_glFramebufferRenderbuffer,"ld":_emscripten_glFramebufferTexture2D,"kd":_emscripten_glFrontFace,"jd":_emscripten_glGenBuffers,"hd":_emscripten_glGenFramebuffers,"Ce":_emscripten_glGenQueriesEXT,"gd":_emscripten_glGenRenderbuffers,"fd":_emscripten_glGenTextures,"oe":_emscripten_glGenVertexArraysOES,"id":_emscripten_glGenerateMipmap,"dd":_emscripten_glGetActiveAttrib,"cd":_emscripten_glGetActiveUniform,"bd":_emscripten_glGetAttachedShaders,"ad":_emscripten_glGetAttribLocation,"$c":_emscripten_glGetBooleanv,"_c":_emscripten_glGetBufferParameteriv,"Zc":_emscripten_glGetError,"Yc":_emscripten_glGetFloatv,"Xc":_emscripten_glGetFramebufferAttachmentParameteriv,"Wc":_emscripten_glGetIntegerv,"Uc":_emscripten_glGetProgramInfoLog,"Vc":_emscripten_glGetProgramiv,"se":_emscripten_glGetQueryObjecti64vEXT,"ue":_emscripten_glGetQueryObjectivEXT,"re":_emscripten_glGetQueryObjectui64vEXT,"te":_emscripten_glGetQueryObjectuivEXT,"ve":_emscripten_glGetQueryivEXT,"Tc":_emscripten_glGetRenderbufferParameteriv,"Rc":_emscripten_glGetShaderInfoLog,"Qc":_emscripten_glGetShaderPrecisionFormat,"Pc":_emscripten_glGetShaderSource,"Sc":_emscripten_glGetShaderiv,"Oc":_emscripten_glGetString,"Nc":_emscripten_glGetTexParameterfv,"Mc":_emscripten_glGetTexParameteriv,"Ic":_emscripten_glGetUniformLocation,"Kc":_emscripten_glGetUniformfv,"Jc":_emscripten_glGetUniformiv,"Fc":_emscripten_glGetVertexAttribPointerv,"Hc":_emscripten_glGetVertexAttribfv,"Gc":_emscripten_glGetVertexAttribiv,"Ec":_emscripten_glHint,"Dc":_emscripten_glIsBuffer,"Cc":_emscripten_glIsEnabled,"Bc":_emscripten_glIsFramebuffer,"zc":_emscripten_glIsProgram,"Ae":_emscripten_glIsQueryEXT,"yc":_emscripten_glIsRenderbuffer,"xc":_emscripten_glIsShader,"wc":_emscripten_glIsTexture,"ne":_emscripten_glIsVertexArrayOES,"vc":_emscripten_glLineWidth,"uc":_emscripten_glLinkProgram,"tc":_emscripten_glPixelStorei,"sc":_emscripten_glPolygonOffset,"we":_emscripten_glQueryCounterEXT,"rc":_emscripten_glReadPixels,"qc":_emscripten_glReleaseShaderCompiler,"pc":_emscripten_glRenderbufferStorage,"oc":_emscripten_glSampleCoverage,"nc":_emscripten_glScissor,"mc":_emscripten_glShaderBinary,"lc":_emscripten_glShaderSource,"kc":_emscripten_glStencilFunc,"jc":_emscripten_glStencilFuncSeparate,"ic":_emscripten_glStencilMask,"hc":_emscripten_glStencilMaskSeparate,"gc":_emscripten_glStencilOp,"ec":_emscripten_glStencilOpSeparate,"dc":_emscripten_glTexImage2D,"cc":_emscripten_glTexParameterf,"bc":_emscripten_glTexParameterfv,"ac":_emscripten_glTexParameteri,"$b":_emscripten_glTexParameteriv,"_b":_emscripten_glTexSubImage2D,"Zb":_emscripten_glUniform1f,"Yb":_emscripten_glUniform1fv,"Xb":_emscripten_glUniform1i,"Wb":_emscripten_glUniform1iv,"Vb":_emscripten_glUniform2f,"Ub":_emscripten_glUniform2fv,"Tb":_emscripten_glUniform2i,"Sb":_emscripten_glUniform2iv,"Rb":_emscripten_glUniform3f,"Qb":_emscripten_glUniform3fv,"Pb":_emscripten_glUniform3i,"Ob":_emscripten_glUniform3iv,"Nb":_emscripten_glUniform4f,"Mb":_emscripten_glUniform4fv,"Lb":_emscripten_glUniform4i,"Kb":_emscripten_glUniform4iv,"Jb":_emscripten_glUniformMatrix2fv,"Ib":_emscripten_glUniformMatrix3fv,"Hb":_emscripten_glUniformMatrix4fv,"Gb":_emscripten_glUseProgram,"Fb":_emscripten_glValidateProgram,"Eb":_emscripten_glVertexAttrib1f,"Db":_emscripten_glVertexAttrib1fv,"Cb":_emscripten_glVertexAttrib2f,"Bb":_emscripten_glVertexAttrib2fv,"Ab":_emscripten_glVertexAttrib3f,"zb":_emscripten_glVertexAttrib3fv,"yb":_emscripten_glVertexAttrib4f,"xb":_emscripten_glVertexAttrib4fv,"je":_emscripten_glVertexAttribDivisorANGLE,"wb":_emscripten_glVertexAttribPointer,"vb":_emscripten_glViewport,"C":_emscripten_has_asyncify,"U":_emscripten_longjmp,"De":_emscripten_memcpy_big,"Ve":_emscripten_request_fullscreen_strategy,"L":_emscripten_request_pointerlock,"Ee":_emscripten_resize_heap,"na":_emscripten_sample_gamepad_data,"oa":_emscripten_set_beforeunload_callback_on_thread,"Aa":_emscripten_set_blur_callback_on_thread,"v":_emscripten_set_canvas_element_size,"K":_emscripten_set_element_css_size,"Ba":_emscripten_set_focus_callback_on_thread,"ra":_emscripten_set_fullscreenchange_callback_on_thread,"la":_emscripten_set_gamepadconnected_callback_on_thread,"ka":_emscripten_set_gamepaddisconnected_callback_on_thread,"ua":_emscripten_set_keydown_callback_on_thread,"sa":_emscripten_set_keypress_callback_on_thread,"ta":_emscripten_set_keyup_callback_on_thread,"cb":_emscripten_set_main_loop,"Ga":_emscripten_set_mousedown_callback_on_thread,"Ea":_emscripten_set_mouseenter_callback_on_thread,"Da":_emscripten_set_mouseleave_callback_on_thread,"Ha":_emscripten_set_mousemove_callback_on_thread,"Fa":_emscripten_set_mouseup_callback_on_thread,"va":_emscripten_set_pointerlockchange_callback_on_thread,"qa":_emscripten_set_resize_callback_on_thread,"wa":_emscripten_set_touchcancel_callback_on_thread,"ya":_emscripten_set_touchend_callback_on_thread,"xa":_emscripten_set_touchmove_callback_on_thread,"za":_emscripten_set_touchstart_callback_on_thread,"pa":_emscripten_set_visibilitychange_callback_on_thread,"Ca":_emscripten_set_wheel_callback_on_thread,"B":_emscripten_sleep,"Ke":_environ_get,"Le":_environ_sizes_get,"Ia":_exit,"H":_fd_close,"Me":_fd_read,"ub":_fd_seek,"ea":_fd_write,"Pa":_gai_strerror,"V":_getTempRet0,"Za":_getaddrinfo,"J":_gettimeofday,"F":_glActiveTexture,"Z":_glAttachShader,"qb":_glBindAttribLocation,"b":_glBindBuffer,"h":_glBindFramebuffer,"z":_glBindTexture,"l":_glBlendFunc,"g":_glBufferData,"R":_glCheckFramebufferStatus,"O":_glClear,"P":_glClearColor,"ed":_glCompileShader,"tb":_glCreateProgram,"Ad":_glCreateShader,"x":_glDeleteBuffers,"Wd":_glDeleteFramebuffers,"pb":_glDeleteProgram,"Ac":_glDeleteShader,"G":_glDeleteTextures,"W":_glDetachShader,"fb":_glDisable,"d":_glDisableVertexAttribArray,"o":_glDrawElements,"gb":_glEnable,"e":_glEnableVertexAttribArray,"ca":_glFramebufferTexture2D,"j":_glGenBuffers,"ze":_glGenFramebuffers,"We":_glGenTextures,"eb":_glGetIntegerv,"rb":_glGetProgramInfoLog,"Y":_glGetProgramiv,"Lc":_glGetShaderInfoLog,"ba":_glGetShaderiv,"k":_glGetUniformLocation,"sb":_glLinkProgram,"Q":_glScissor,"pd":_glShaderSource,"Oe":_glTexImage2D,"da":_glTexParameteri,"$":_glUniform1f,"E":_glUniform1i,"aa":_glUniform2f,"_":_glUniform4f,"fc":_glUniformMatrix4fv,"y":_glUseProgram,"c":_glVertexAttribPointer,"r":_glViewport,"Xe":_inet_addr,"ob":invoke_vii,"lb":_localtime,"memory":wasmMemory,"ja":_nanosleep,"Ld":_pthread_create,"Fe":_pthread_join,"t":_setTempRet0,"n":_sigaction,"bb":_signal,"He":_strftime_l,"table":wasmTable,"X":_time};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["Ye"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["Ze"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["_e"]).apply(null,arguments)};var _htons=Module["_htons"]=function(){return(_htons=Module["_htons"]=Module["asm"]["$e"]).apply(null,arguments)};var _ntohs=Module["_ntohs"]=function(){return(_ntohs=Module["_ntohs"]=Module["asm"]["af"]).apply(null,arguments)};var _htonl=Module["_htonl"]=function(){return(_htonl=Module["_htonl"]=Module["asm"]["bf"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["cf"]).apply(null,arguments)};var _fflush=Module["_fflush"]=function(){return(_fflush=Module["_fflush"]=Module["asm"]["df"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["ef"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["ff"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["gf"]).apply(null,arguments)};var _emscripten_GetProcAddress=Module["_emscripten_GetProcAddress"]=function(){return(_emscripten_GetProcAddress=Module["_emscripten_GetProcAddress"]=Module["asm"]["hf"]).apply(null,arguments)};var __get_tzname=Module["__get_tzname"]=function(){return(__get_tzname=Module["__get_tzname"]=Module["asm"]["jf"]).apply(null,arguments)};var __get_daylight=Module["__get_daylight"]=function(){return(__get_daylight=Module["__get_daylight"]=Module["asm"]["kf"]).apply(null,arguments)};var __get_timezone=Module["__get_timezone"]=function(){return(__get_timezone=Module["__get_timezone"]=Module["asm"]["lf"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["mf"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["nf"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["of"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["pf"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["qf"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["rf"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["sf"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["tf"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["uf"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["vf"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["wf"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["xf"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["yf"]).apply(null,arguments)};var dynCall_ji=Module["dynCall_ji"]=function(){return(dynCall_ji=Module["dynCall_ji"]=Module["asm"]["zf"]).apply(null,arguments)};var dynCall_fiff=Module["dynCall_fiff"]=function(){return(dynCall_fiff=Module["dynCall_fiff"]=Module["asm"]["Af"]).apply(null,arguments)};var dynCall_viif=Module["dynCall_viif"]=function(){return(dynCall_viif=Module["dynCall_viif"]=Module["asm"]["Bf"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["Cf"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Df"]).apply(null,arguments)};var dynCall_iiij=Module["dynCall_iiij"]=function(){return(dynCall_iiij=Module["dynCall_iiij"]=Module["asm"]["Ef"]).apply(null,arguments)};var dynCall_viij=Module["dynCall_viij"]=function(){return(dynCall_viij=Module["dynCall_viij"]=Module["asm"]["Ff"]).apply(null,arguments)};var dynCall_iijii=Module["dynCall_iijii"]=function(){return(dynCall_iijii=Module["dynCall_iijii"]=Module["asm"]["Gf"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["Hf"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["If"]).apply(null,arguments)};var dynCall_iiiiiiiiii=Module["dynCall_iiiiiiiiii"]=function(){return(dynCall_iiiiiiiiii=Module["dynCall_iiiiiiiiii"]=Module["asm"]["Jf"]).apply(null,arguments)};var dynCall_iiiiiidii=Module["dynCall_iiiiiidii"]=function(){return(dynCall_iiiiiidii=Module["dynCall_iiiiiidii"]=Module["asm"]["Kf"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["Lf"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Mf"]).apply(null,arguments)};var dynCall_viiiiiiiiiii=Module["dynCall_viiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiii=Module["dynCall_viiiiiiiiiii"]=Module["asm"]["Nf"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["Of"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["Pf"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["Qf"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["Rf"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["Sf"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["Tf"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["Uf"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["Vf"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Wf"]).apply(null,arguments)};var dynCall_vffff=Module["dynCall_vffff"]=function(){return(dynCall_vffff=Module["dynCall_vffff"]=Module["asm"]["Xf"]).apply(null,arguments)};var dynCall_vf=Module["dynCall_vf"]=function(){return(dynCall_vf=Module["dynCall_vf"]=Module["asm"]["Yf"]).apply(null,arguments)};var dynCall_viiiiiiii=Module["dynCall_viiiiiiii"]=function(){return(dynCall_viiiiiiii=Module["dynCall_viiiiiiii"]=Module["asm"]["Zf"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["_f"]).apply(null,arguments)};var dynCall_vff=Module["dynCall_vff"]=function(){return(dynCall_vff=Module["dynCall_vff"]=Module["asm"]["$f"]).apply(null,arguments)};var dynCall_vfi=Module["dynCall_vfi"]=function(){return(dynCall_vfi=Module["dynCall_vfi"]=Module["asm"]["ag"]).apply(null,arguments)};var dynCall_vif=Module["dynCall_vif"]=function(){return(dynCall_vif=Module["dynCall_vif"]=Module["asm"]["bg"]).apply(null,arguments)};var dynCall_viff=Module["dynCall_viff"]=function(){return(dynCall_viff=Module["dynCall_viff"]=Module["asm"]["cg"]).apply(null,arguments)};var dynCall_vifff=Module["dynCall_vifff"]=function(){return(dynCall_vifff=Module["dynCall_vifff"]=Module["asm"]["dg"]).apply(null,arguments)};var dynCall_viffff=Module["dynCall_viffff"]=function(){return(dynCall_viffff=Module["dynCall_viffff"]=Module["asm"]["eg"]).apply(null,arguments)};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)}}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"){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();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;run(); diff --git a/content/pewpewlive-wasm.wasm b/content/pewpewlive-wasm.wasm index 1bdf6a57772ab347450af862b00d11c315ee9cc7..9f62c615ca903b08277151777d12b7dc9089b6f6 100644 GIT binary patch delta 721009 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 z zxlqBoc5b0AZgnqhprcR>w;77X!YHWlKXSpwMv2@ua0+er6zXQ@4bK$oW*9l|g?CEa zlnIc-2XPIJ?r_^%*g?Z5tCR^0!*-eb2Js9N8ZuMu6-9awj0L|@q}vCl+5<(pCj9>1 zY}}H)iuJ{Qa9lC4#+R@RFgP|EuTnWv_v0}$R^k~Xm_~>pY^O4_K!$vM^>BpEbC~5aWCErKex--zdBcs0PLZitm%m^dETM z#ZTP10)`LPjtLkE`)h2gD&51X@ImNjb#~c!tgsHSqsLnO;zS^pSyQT;#wT>l32-Id z|D1d{`^pV#6$%8|1AM=nhS`yILN%Z0ZaRvZCVc|oSfGdIk+f2I+%hW%78XTMZ;GS? za5LSnXta1%4tUc)$@U&cI!c^}$tlA$$eYQViv&pA;yvNxcOPOI9BqOfc^WiXUWWoy zz)D~fte+DFvIPXR4wve-9oLpQd=44SPTqh{dKUPnj{pO|&{$>1t9#X6Ql`(!|00Vx zW6wZucN=0PPuqEAx_4(J&>tm) z_W)-nWERpQr+%@`Y@)lJD87Fa-G$}uZKB8Xw|P@teac`+kJB6V>6kFM{RqXBeEm%} z6*es%Yj`}t2kVV;U1O04CnR!F#r;k76~TM#7fto8YTb5wZ8P07A3g)c3E$q$+2S*h zM){v=repCg^62HmjMa8c!XOB$mk7mLZaz|S<}?K#FYy)Wi0c}1W{5z=&ycu63fMCt zZ%yC^AfZ?w0FQx~$hSBX10(I+^0FQ$it4t4tBKj&(J5SyQ}Q(GjykpQ-KK-akHQ#!-ZI1C{Advh<^%! z|5D2igm$sabFV$?OkLFmaoAwQH|}l7Jt)L|4cTpkno1ES<8gGaee_KIkNAB~h7=p^ zP$&XZn+gYohXo$C{Un5#lu?(Ikxa^vr1ZL^>||25B&F3QWhIlcBq_|Kvs`02$+R3v z3)L0NOeSSYk|SzK7bD4}2sk#MoTVQuxep*yrV~1N^gV+jj4;FO{b%DnG_uOBI9nH} z%^~~Np!{g*I*2k6c!#hayy+={ihF{x)aD#G!njAQz98Ze-m-nHDb#Bum2b;~98TF`?=SyIvC0xnVD67Ua?x~wTCzky51i4WnMW?S5^!I{Xr<+^Egg)hL_Nu zH9VZ)u;XB7z*tRQp()fW*Gf;yA>vgRU8E2@@O;3}iFWS!x~SVzG#`ns1<*Bg#SFn1 z$+M)%Os|3=pu7!}y>xl8%YHmxmu5d*D)QyXawyA|U!XhpN{!)R=UtqzNV$W^3NCmj z{)6YJSj-F?j3n$0dn?=Ce}OJ)4M#l?*e`D zX^%7{tVf@*((`luD-7ZHs^pO`@$Xh)$B0c#KjWl^5kU(47uRQYM>E|FCJljYHcEPG zo%e==x=By1LGhmjJ1<;YG9$#cTaapS-W$jaWpw3z{6@C-<{P*)F%I!4th^&g8$m_8 zhu)L`ySg2ZDWQ{);j$c99^y!rt%}AmZOKSdIU%KfeD1KHyDl>t1ki)yBM(`vNsGzyQ8P`pKs^*kU`w%isXhjj*8~Zz)NS%Qg*pLnH$Xv>=@<<#za?BoP@> zLMz%%8EiClcLp&vwvKvgaJi(Rzvgu|2g^$H-^})AzL}Vh*A(WR>W$d$Ve@1b*Mna$ z*g(bhu-R5+$CT?9acHw?sI&o0f&T~0EiyV&rN`BOu!YvShZl}7Oj_YDY|3GyZBb?# z8L4>t;O|tSI7pnTQ9v3i)hd7wNN&;l3InUcni(MO^a5z#=B!E z@A{3Nnq{S4upBsc$b+mi_Y-)5>}nhw73nP`xTUjXEmf)o!SXER6$?6O@k@cAyd92(T zutk^Um`H9J`0ZN2PX0o1tFX~Oxj1M1Hqims8BD&@L{0Whbl9+IxTyfpyW)pPNoq0J zNv}7YL=k&`g>D?LzalWykysoy!3C-OrRBgOOXTN#%eD*Q=(#2MA7(p_5uIqZ_p-~N z6Z{{uT?``fFU&R>cE32+(Lc&e{ePJ2_G*NW!?`YO4$LQm`vLM5__F~5MOC~$ z(numtgN`fK&7R&;w=aU-W4_YJjdEugmt!Q-!_FI-SC~tayKbg|tc1tTn_gh;io6D6 zkG_}|*#TtCmDyoGX{lQ|W6HrgW6F3XB#bE&JRona7*kdP7ZH;%rYv?#7;9im*;zCe z1=j_zisRc+CMv`@v5^c(6!c2IWrMleUqmIuJg>;NK2xf~)d{>-v0Eyjd;2BP@keaZUQgN;*}3o_A5 z5TkKX@7wLIb>XR~jU9(;aB{?v#C_!k#W2h!h<_D7hg^BuJV)p1NW9B-Zlhzt;r8-2 zx=AtHW;en;1HRcgcEGH+BiiWl3YjN~K$Sw(c8#J+kb;=;hcvq$ImE<)1tu9yVOKnwKyk?(;53Po7@Bxg>EYIZ-g6Qi@G|G5iWG>QirV_sA8Jd9SLjd4i z2CBsOJe$X04xtPXL?UU(w>*~z)y(!sn)ErJtbL@8C#$F64n-9p#*0u&^-zA`a^Nij zlqaRSR}wDlQ5__O&3YNJaLq+-L{TZYPJb&JoFgbi7bkRkrU(&5RHEChE$G|Wdk{GGQ?RGW(Pr` zr6Ir;!oa~4P9L&A4pDv37 z67cv{anVEsa}5b8i(c~0!TKVY4>`*&MiN)AJT9@mB+6n`A(RBeP@N>o_$*8gjh;{& zmX_m8)K0F_y&=N9wMw_S;ODGJ8;}Xy`_I`T37R=&4xgrG7dY$atN$FkOu=#d9WJxR zR>qD*^7 zhbI%O_4(@CYWroizFrOQWH0Tc+eLWx*$^zc*b$v{OX!Zx?*y>_Dh;%nk4g0ez^_!j zqC8S7IIA@S33EiwOaO$$`&0)C0f~}uZG;B^>m`AdHF;%u{b`5fEA?@Sp%4;b?6W#W zoPTxP0iOUE&}urj&MID70azrDh?%%1Yw(nynK);C2AlWIh6x4yXFJ)_F8ZXbZE13Z zz3*PIAD^TzjwE1S5Yt-IS(j(7^Fifzc0gy{xn6qSE#V@&va`!UnM*GnHwiE^2PHdH2py5D}SKLMof)#l1sV=x^2@8b20ceL?1P3}}fJlIid)6P| z>StU)^m$oI@|d-0r?>zh0t8~85bpr@>wt2HvK`9Jn z6B50I!wINEi9s_FZca#2o!>)OHJt4Wf<=UR!Dp%6(?eH4GAXa8ZdA0nvl&L(hxB52 zmixUY%l7K2+s0{d1{6^O5>iH$w`D@@=hzOF9V12f zWfFEXR0q4i06HN;uw5O5wx9LXu`9=wVQN%j=lQy_BXoHXMPICt*;<|z=_a&aZ}lPH zN)Ro>qc)hlV;jU+r(&2SACD$p19kuq3j6uUaQloZ6!oH@R}MUxC}01ix?roJUp~N zLTrL-zKE15!HW<--NkcO5HAR>KWnz6mu}hqtK&vdH^f)ocJ>!AChj8hkiDRnzT}Ke zu$_+^&6~F-Agp@SO`<3`tz3FKdcw}YcU~HI=v*HKe?3HO5EFzt&qZ%uw_o(qgR-D_ z5XK0-Z$Gowoub&=u_2hEg^DO#3uq=3|WRn~vV>ho|V)@hu!Y znL1{Gw{IuQj>2FCC1TXUol;EZ&>@Wc>j0N`6p6&cB)_-#<<9K`po@y_J~xZpB~r?v zD(P5dm_1D(wvTmzFCikrr;(g0Af26+VO`cw3NW*ES7S*o~*^q9{7V zX@ja!sHTn=7kLV%tOKUu)ehI zp~Y~72!1aW1C!=-Ln_kFs?i2)#KkqhTPEA>HGnyjZP=5a zHlA*QuM6GJZJut9uZLaQ3iq?q{bcr$0v-BDmj3SNwmx_xPPP-=&rsj=S8f z>iLwl*s`kr76Z$KmiAjL@8+&baOAsT9nIGnzHKD9Jy0Ui3ZXu`rk`%xaN}$Bt9VG; z$Z5K)Cm8k_fnd7Qp>P@q2m$Yr#d5IZnKx~5#CvQp(f_#c+Hv3z&)MQ5=bF<%M;a1h zPC%bo7fZk;$|J*Op^I0l6`64QeyqHt-V;}5g{?+%ZEDgWowb@P&`69LR{ z4kEvH4Stp|s$k6}x~Kv9SyDK33+0Aw_0zyFX<4E4OJB)Ll)pBvl=);=*QeQWr|X_o zPxrv|RggA}7vm4P?mGP5|K)?qzZY?5u-F(o`3hZ9HdVac$txH`bOz~aB(%Z4bA@i# z_FG^}X&92iaYg#$&N`yEa|;7F!2o+4D0OldXP~Ek)pAS=NANg^F}j3&t6&D>3+G!pz2kXc=e&8^Ezoe6oAKGzdTd7V_uDV#EL_Hw1;?5%aIh^3!}@7Z-i; z-+Wzk$83<=;O4{yux*@qyov#4k%(zR`uT}`=GhYPqwM{cfSESDNyP5>wT{MTC5OjQ z$~4?2677V?I2)XHA2LfDL@g<2oze)N7>QPhWMSmfo8Y}knF%wk2~bdRVD+TtdbbZ; zBV;0~j9#g8AzC&1N?lmBld=_0(CRe1DAU#tf zMI6U=7c4Ozx6htS&KN^=8{*Z(K0PG}N6osIC|Nl*y*(@Zz2PH8^;ASxE~}qd@A)`x z$uA`CUUXby%9)CT<-8=>SBC2P`Xr`MHv0_iutKsQg(@LzJXpNM9wE!FoT7@u_}t`| z^YjF~p9=xodVD01DVcb)l8bbZkz`ZET@iT4(B!U43Hd+?dV_MgnC8mhIqOQ?kG6TM z;&0`EegXOKS7P#<$fBP~97N5LOy<~3kOo;0jM{bgl)R2S9(w#`so+Ye^>+qT{u#LXMY{0!CQhp||<&69mibX9P9 z^MQ`^LsyaMK7p2y*b#W;jBtaqBQQ(82(-HQ40LDi)*4RwoV<{(?52a2cE{+nrZ(eR zZSpVUtSr6DpXim?DVuEj-{~?nyn$WzZ&hU1U9Yo34@30VuFps>u?_M=Y4(xgG?M}@ zb{>UxJ?l9JT>OxZxDh|qPsEOB!n~{I`lJIMLUG+9F0g!zT#BwfbX-x{9Fo}ZyC05C zwPUW;1$IM5dXc?xd4mj_{X3m&+x%X)>rJE1;>|5c4~JsI91wZkDfsg-g%joZ?#ob( z(0Fpt>J+DrGE^H*5gDpN`muPf&}jw{?o#{&X2_U9HEzYOtF1okcUGk}k7X7Mhk$PB#`a5mgDMQ|5Ta zlH)3`16Lat|3c!3MZb_ZYyOE7<3c#u^2~`-C2`EWUr0PSw|-(`OURzzKBs=-anSYa z{NE;^;Mesa3*2Qo-ay^h$31ymWoK~Kk35ce&icCyFa|fCOgiTJKD+Anw5AvOjzsDz z+c)#L%G#kQjtN$ShXvBCDISWFk-ncI+u*n1;+!9PgSI2GiO6mDuLnB1+DTTDp4VI!Z$Q^(oZ@>Mc?&!eSf(QIgq=2!V*>zy-PXuGBdt=Of^?RL|Y+0t= z_x?iSk$a9yjB%=PDGt&0=YKaWF8@Dl*o|&hXTvUzmzEE6sN3+XYwK@-deC|I&%V^Xe<9XO9P-m~i9*nKkYmpQ zNj;9Dk0l=OrGT|DKO9#}UFRn4J1(&+cjv~vh>s#Lj{(NC^Wkab0Mm#scGi*@hSNer*wnoY_^0TcL&xparXq}cxGlI)7^a>KF8Nl zZ67%S7-sFokxKVO_5C@S-JlvpTLq|bP#ct68H;@fHpCqf5Gn<(B`P1)2g*wYP3$!T zbXMk}aw6Z<#=CidKD&*0@5S~Hx+6nbxTsj;STPPfc)IBg_%43!t^vAf)c5ua(Hc2$ z*ljo}skvGV)Ro{}oj*|5kasm^pl;q2yemE;x$DTg;?SHW5{5R|^#gUUbI8i_7Qpt1 z!y(|JkDX$X#33aw8oqZGeeVW6fHU&^BZ8}q*y2xo3XprCSsjooKNiRh+29vQY(~5A z27PKF00xd>F>xK457`T^+sI#ZbsTUdC{ldHClTDu7nGS925V|jAM|QE(-Fz@4NEi# zY@qbIsSDC-`jvMg0T?oEZH47 z8t0hqi})~cdBJ!<2rv*+0=-!H7~<-{Fa6hl(ao=@I|K9HIA++X9ItV&9G56Ns5{&l zsmOV(_TWN4%T&OC4{X^WT~$JlLOz!2EIPOW?e*-m*TO{^Z^LpQccb00KsV1jh)E(6 z334~10q@8BRrkvq^W-s2+uA|8dHf~7Z|_~sGnB0XtN0j0oNNo%igQLqrz0*FZm7I1 zvqH2kR6I*WYgf|LH3`;U?WGXKe>`LTV7+1F=z1;kG`=g>z%x>r)QFQ*kDU3lgW%r$^Rpk`dF7Sqw-| z1n@xhjy%Ey2XALW(blV-bX?9J=!>`SVLu+{*a)hPwzE-h;;^Rf+SLyo*N0<~tYh3D9G z$V{SOPBioXk@g<&RTWwM_`7%JroEI2>5aTRAkS6$sz z6N-p}bQn58u~38{U_d|vf^-N1iUJZ41r-z&6%^$EJ!kGq0rmg;eSXWDH+OnDbIzGF zXU@SD5+V+vP7`6{m2M^ZkFXWQb~cMKVC5-PyF;}*6pM!N7j=}@Yn%qal>zj@GNJRF zwXXcHXCVC&$YWSlh@kNn@LR|EuD?ZX=n)R_dzpqAN<(?Q92gadG?*-4W*@E`jyuG5 zVX|F|9`OtJaP0(62fk>5*WQ$g5ILx0s9l;I;mwOl;!Mci!epm{c&eg~r+}bQ?e=x_ z$^_|HNQ%&RJ}OdUwq-$07qRzY3V+r^9~FTj_`(&m8tzs=GZfT!`QS6QgWe3>3sc(NwWELDBamn`JozAkP-NP?V)CC7rpp;OUdWBdN9Fc?( zy4K-`Rl_bWRd2JN9Qr$nbB0`!m;tT^$d?}75Of{uip4Ia7kcWG`n&w(dD5!<4HPiv zoRQ@F5T4Mg__#>BN74#%%K3qfD-bV z4?2S*^uhm#Wba_jtSX<6s=nu}7jdf8FI97Oy=glBomb_rp|q+~zmquUWWB@(Fk0}@ z=``9Fp*hs98Rtb)Sp9Xqf~H&p37lHXwi8$giBO#Y4ln1;F*#qadBjS#hUvT~@b1@J zvE|;ZUewyqW0$l>hHc5hdA(^UtGOgs9h{xq_dAKxOF#ad)Uv(5lXzs$?<7v&^*f0} zch)7A5TrFY!yMUKmwHL!oXr;}vX9x)qwMz>6MTf9!%{hjG5sB|qP&X09B+fB0~G+N zSR7ENx+DKuY!}2L^u1Jz>7g0p_Udpemh`^J284whYYVkNE)=9!1!Vh=o->geVGBVR zYp+iHpJ)-yw}C{%z%b}*|0kN0k?a47lxQl0XGc~b0&M#D|A{}efT9gO4&=i($@l4! z0sREYdd6*FGtN@i^X+Z9itFiO=7y|M#TG zBZt~hKgH1MyFQHsQbfbBRDgclEaTVJPePO6Tm2(`l2Dgn&Ly3d&ADN>E`Cb1%0zwU z2Fa^W&{^29&7bPWpAyA+uMqRx0>!wa=nr=kY$7M%+QTrMlm}K#KSZS&zfmcKLZ9l) zr$s(IgY=umx*wwd z_FvJobi!K~&e?Z zDLI{d%$e7mwdm-e-i#xa&$piRj2pHw)1vRPQRptkQ4n;IC2Kic`OnxbBvk&y9A<)fwU4Jt~6qm9J3i#5(pmbpw1_oP5_NpU^s8HxdJn%H3 z3VJ!jaVtnu6`a#jGKvzR26w|}AsiCpAqR2t4ulJIXrW`sT4C&C(?ugX4wq8=-sW2B54HlHO z1l{4-5_}wNj~Brh*!;S0+=tulvbyi(^u3|(dzIyG_rA0kCay01E{uIl0fJ!L4*Uep zG0Oyb_qDyp$S~|qrwmWDGEC&qR6@3crGz1$hDmh%z$76F9c-9HmInZ5Nb=5=rovJv zQvwMBNFiL2(4)Gj7`-w9}%20I#>Iy#NR z@TTb>rxKc`T+|4j>k2=h&}YC7uO9*gjG?hYv}ptBsoepuUh}y;jt_3A;%B>0ZCxg< zUZv7h3cAs-ZxK;i%CZA#rxEcg&}a z&~Vw$+wj{RbOw@)HsG*P7*crP%6M>89fO6pQbDp4?Mn!qP;o>wZQ?+DZa8#ieum*c zA_D|OgM=C^*k>UsC(`%kbp(e*0HC5Oi2%Has|@u9#8-v@Fk7*Ep?48ZH#$a2bg>9` z_^L~`6TMBz^W73%r$=j~>OM8|dbTiweK}`_SL_Ul6x5esuGQ-#Tq2pPX^B04^Gg=B zHh`3KyI9N5r>mcXC7jv1<@2IL?8YdJp*>^<03_9a;)TS<8F0tR$|VilamLVD_Cvk$ zdGUDW*>Lj7T`O#=|Cz1>r{bD4uP+~UH_aKh34|ah$lDWZBnp&geZ(mv#Er3odxEp| zt_IJB>p>~8*}rl(IHV`v4fcbsJKqh4E*f46ueHZRdhkSGn7p!G+jV2>qc=m4)Uuvf zItvECc_F9iIU~hY-PW)*ES7g82)Ljvtq{aDq?uDXF#rY8J%wFD|4@q!cgsNfkjbdI zy5$RaX+Ae9h$kRrR=`IHoy}=RA=_85DaT)|=t;qByatR0a$kY{Y$WE;=?4!{my3cX zS9onM0knc#rVQ6bL6a*2xh^-ANnjUb18F1C4C$6q&}555wvgr8(7ntG{qqZ=MJbG* zV`gYtu)DbE%Q^UE4T^?`>?ui}qXx3YqLi!Lfd} zfSOjDk3x0TddfEX;3#MTe2bk=rmxP~_yv~)Eid4)_V!))!NuL}m>rOU`_z^ke*Q)$ zvk1I^dsUq!VJ|yBH~!hxW=Ea79vmAUgdb;q(WmD1C4Le4;76TPXlqyHnBZFaZG;)E z0SLMKLpgrZ&y5ClZc8T2@qRTEi-@08^?6UPE;iv$%}`};dzG!B-|~@ooChr=@)kJR z3lqe_B!_8o1LmQHy&n}*@t2wgFzEz$8>w{tmnrY0=dgKA#el!69dU_RN@6Qp6C;<= z3Lj7aostCN$S>H^IRkHhgovTE@rNE|vs>O0-~oor26zDYkikQ3%i#s04MDI{r_l(P z*uDHe!@#ZXnv;~3NoQ{?7p;O+8-Ql&ZU>fWcdY2tXk`qoCk+e8GY~caHl;?76-hDs za?q4_Q?N%b9xD<`@i+sw1BXxxA5aEh|4fPj9w&@E7Oyf;9%kEea_DMcB0P39xEe_I zp~pNsW5_F6Xm(il0IzC$)#I6}pS=Vrcf@fi3N2tYq*~RBZ-w-|`<-b0&^QqmLon~T z=X$OQ`yRGe_hR>44xnsU6TNdBWCiu{B0Bd>6D`M!ezDIssl$K^qv~V8QqqpdppNt5 zrJS5t0X*uM{{{x~Ur(YNf6T>?g6{n>;mb(V-^RBQsMi|EM?A?XL-Dl+@)3`zt&JCv zA-nd=jDh^+WP#n(Ncu)BA?1TkLtb6bND9A=WCO zKom^|WdTi~TaoY_$gG)jKozIUMNTj3x9Rb6zh^BUJA#ZalL($m6FQ}tg0-mrWQ~TN zGjn&2=YZC*bq+KIsl6_rBrZ=|m}KINxqM^hg!b}6eR7h>ZO&Dqi^OYCC#j39r5tc- zE#{*+ZM`Tm^etM%NI+-4&YB9wm{`0KL0WoS7u+JUJDdlzOcvEy_l$`01jWxtj$bJtYP2fSooFmzt06nh+xJ3YWs8`rxDQ1q);9e&O7FqGMZSQ1} zo%2Z?Fg_JSeY(m0MKsRf+&oUo`d;rKzYMZKR}bic zQ$(V*UJsih+Ct2=atbVMuGC*l5d|&YhjGPR3}T{18=wj0aX=mJBhO!Y>r`++dwbXI|MLwvAm0C^d(QYy?du&9sg|EI z@*2|e;D@vz2H*o%(PAFxjXB0T@26kPHK*6ZA`|j1#v-N#A`h#R{KqYN9!}@;8egfg z7Rp*hHW&%kFv9snP?)#`D4<>&bcoOb#7Uc$4IU9@KnP1!PA>p=!WIS6If(_hf!Z$; z;$q>@U9ww_EI87zhR+Tgb8Y>d2tXhRq{}lP)uyBzvpeCUeISGi_+fifsDK;Ai|nKz zR6Q{C0?Wn*VwBVQ%of>{L@_?Q;T{Q0k<5mDtfD!g6`4sO@WFbIZ&2n~L2=Gg_%iTl)-`s?Xnp!#ARv4dLJH$QkEB|O;Qc%TXKS*r!n=!ODL ze9jFT+QZ_mtgA+If)U``A0VXNu zUP`G;&ReLbR45Ds$6vqyuDaHtjN&)skX!P|6*3dwA8Nt#8AFJUQ|elPP4apTK-z=` zprd}wfd?!As_r;Tlr%wSJSw&+M8)W4j+h+_Mn6#N9zA20$V%Gn5wTtDz>ZF+P`A-L zW{I{%yFD@nKqF`#=%zkECKtig;BFmbs3UB&sbEZ5w=EaJ#?y`W7mu{@e#6{gjfuEz z(vOsbxKZ~!;uxWsM|r^C5UMB zevl~_9?3AYsP}_<_9PL|&(6m4>ko*4MfVTUFU$!I_yZzenR@$d;cvn9aZiYfp)VMi z=k}#O5!*yW%x%2l2JogK7L(Sz>IU8k>f<1Ibym}cC5+M+MbRBUgwc&cJw&~~7Ex0O zh#E@+vx!(sqD8oX0&eNkgff@bj(X4?OM_}Cj<+C z9oz&U2)q}-4~`_T-cC0#Vd^_NLm0cdd!2Oj)vfZer$@f-a4Xi5Kwr{fUKY1zls8K^HUo~qH6If` zg3XyRAn>}ZBrG|V*N%uheAnSDMu0{+zS9}6i0p#*a)>VB5P(51%?T2f0@;9gZ?%B) zK7{aol|onf@IUzKyZ0551+S~mqHM-lG7TXx$?6m~EU`7G>`=ZnuZZAH9|6|r_D((T zuq(lU$n#CN02{(ZCkChsknm8`oCz(h$T2yn6KZ!KPRv1PNzufeNWB`N+rKKBr%p2V zc~O>=VN`IENqzKH(IR6K2}RMHUtnMvEGs(4{KF|57Mhp8Dmo>fz-ZmFva&NEd&+dd zQYUoOYocY_jcc%&g(z{Z%B*UhZ-Vh1z&%yVz+gh(AM*P*FnrQS#LelyUK4GaY$kgx zOo#xixQDllIS(Ji>A3N0f+mOSH(wJ?ieN_(!*`PaX?!Ae)I6cKNFX2|$>7I@fyUIf zALedcqod}E^gE~+OLXS(hNa6{69U~QJ6=d7x!gw59A}kB6FSbREbSp-+GJv0SZ+W; zYKVrgN)MVV5;K0_vXJ;pu+T+d0GP8hgFUD#=E8HwuAW|})es<0;)v*W(VVM^1`;dz ze$S9_s9qjA+fX*hXE6>>;Iqyv>(UEBb;0aiGbu1`Qd@uBboQZrPFvqnKgID*_j1*1 z3Cm+vYEMs7!`Y;egh#FPI0j`+N1qdE)ZhPn-5VtdZ-($TzO=fT4^6h(XPO z!j(CIPqW;;DO>rQUbfxKOg488;A0p~E#B5T`6j(3f!cl46(}Vhm zur{2|8{4IIlh1J?1(tQxBST=E? zQKXZF1toJWkekzDpai}T&=C%52phw3BmN;e3}pWS{YaRBp_2@DA2FnKPFRF?2cwIDWy@oh<=&aJd zfR=5R&tP*w9ihIfA!Hw%dK=Jb3q@Agv!<#}3q@{SRsHdm=2b=wF9IK7UVB(e^_`2*`^EaXMWRS8jzS5h>oC0|{r}T{{W>fiL%VBW zVj^bYr$yqjG#VN&Ids_A8oCV>kFIalWl!6w=}fhCG43JySnafn(oZ zJ*Gl5iTn=6D2d+vqE{g{X&R1|44>+K5|dI{*nmD+AzG(=Y5U7;(w6}YG~dRABwa_oNikR_ zf!i8RW$g@P;b=;x49Ezpj|3Q4mvwaZqGn+00SJLj1)B)<1wjuzYvqkj81b0IZI2CT zgha20-tvaXNIb$ecnC%y;sLS;j`&jl^oGdHRv;uJs68N?3xl3i+iW$qA9ny9g7czw zOGK+4+$2gdHZom8C9Ft{kyC~0E2%`yoMCP-*$!Qjykn1kr+v z&i7N2k%j2IqEP634>3s&s#LnEF8QaEC?_>lr*+Lz(ez@`-h`%lz^S;7y3aDvzEO3* zdQuJx#edX#nP^w|9Ap&K3P~y=f>CNmKaxh!`OB}~_vb_t+JQ)o%`e?fs0n!-CKsrQo52lgzuCHDrMNb8oHBC`^jUlUwz2&%tiyU{ zrD*29Lzcs6-J!;g*mVw>^W_-&qdtZ%DBy)-*m5(L0tArnoWPLAKzU0phlT1~jMw3=^qg8H>WvVo`{|OEPNH7)mI%*4UL>J6m9)+{_eO=}4sV;Gztz-8 z(?<$*1eSu{avJL{D={V2^Ytw&abpJ)eW-P+E?X(G-3?6{x`19nSGUAyq4w1`Qtbp! zxVFVD3SZmWbZskuH!%V-h2+*O(lskZQulS}a@~b0vxxOCaRH$4|5E8)@sby3b1ESn zvbyIay89~84Q73YuM*d%%?t;ZTY5dP*zsdzea_7Uvp`|})hf}(`dO#07Q^8^VD@T} z9z|jwm<`GBFw;$DOsP8Rp@ zTaPE}4B&7-^%<@YS4ev18mL8o)D(!62*-T`)T_!9H;s+(7f|le+iSCLNH%HinC-p? z(Bg(sHssbZLd|Q2$?~(>xRpcO7ghzK+M<4lz=VL1`u!a({m5F8 zb$K=KR}Aq$BoKtHcHr8CyN>cW*J8f{QMrQ6JgD_V=*phO{g!^{SZs2e&oAD+??r`n zue^Bo>d1FR8DQ+^^`H~`^yTk~KG~!W6HQW(9mxSd?BKiSeAma|b`9b_x9oheZo3X} zxlb2u5ZCL3_2P^?bVN-CC>>aOul`P0zpG%GeTDG()WvrMnJ>I z1R%0`zZjdEFz!}=NK*s(-({z6?$A*F$)Wsbc2fR$uK@4&)e8H4{Nn9t_U0%ZyIo{v zVXQXM&8iq+bPl2SHYOS1vQAfD6P{@8(6?_FX|aj%EkRz$rZlpz9q;Z)YJM8#vZeaS z7}zBy-w?xhs1*+8`K0Ug(EHx8TQ}bOhoB8Mi*$?dkI)kvE{6S@RJ8^!*HY|cMHSkp zkT3u*Uhf^?^4G@bM|Qxd@Vokz9inY1y3FE@gATY&4x!5gwV0W8k(fNT%ZO_nDN5`T zK%`XL9BLNJSw%qp9`1_al8=I?*$WmLMW#`l$s)ci)HgSbyF}|(8ygP znZ6Qt8-cQI#ctL1VwQQT&y&$PzIZ^bPXfuppUabAK5~)6Evu$n*dL!KQwb8A=QwtW zD8b0_;s;Tct9FWe9f2x!iw{M)wYzfDhoYYp~5`%DCqcEn)iEXspFq%3C*R9{#A z`7<%f#%b@1qoQN@WH@8Qf4bE%aZRI%gsH4YfDqxi(E_w4=pn~oB`KluwPT`{6~CQs z0cgz!UBEsa0J{L6ej&;#%f1v=UAk|_Z3*o>-es92%)fwf`D(SE09tH?&DPd&PR_58@UM9Q;8v3p*3WEJf6h;wwSC#hD+WEK1p$o)JAc@bDSYKM^tH z6gX)2hVAumcshy1Je)iu(&Be+EbiaN=fjmcJ*%gZ>1Vx?_nZ|EB-fVgiNhA1HcY1D zXGOa>FO5>T7ll8Gs~V#hc)vl|QgkbQ5&{))YrxjG7)D5s{YeC^GnGq!5^e0bRp=IN zA(-NKE70^e=Wrc+S~oq9As$;_tV_=WTn}sa7tu_d!uP$uh`H8Top3>PL>)I=5M8WT zY7Z`rut42>>deHc@&-#!`~qH3wQgp~?)VvC$t&>lviUh^$vcu?$-z{(*Zq#XU6ju))>|Ff zLsZNyu1pG(BP{Is+2L{;es$+axrP$76(t|X_kW}02K;pM%c-L5o#M)ae!0^IBUq zt~+XUv6`IXF2RpZaX-e-q!jloekP{4v&R&x2`TQ|_!*y~rsb-sx$fMtoPQI3kpD~k zApeMQod0$FApds!ApewHH96Pc5|Xf|wu$C_+d-IojKmPM> zK`(;ttysfBMIGx!~rFe2!pmy)MFR4U%dn(r3}vYf%&r zZW9%{RVa%8hRvODGh-b1ol&a+)Wuk@5g(q&z?xDG!iFN?kjaDF^>Q4^Yp|mcIzJq~`@>c220DklfV{s(z0x9otgo z>8=4uLi^CPG_F4%JUP@+-K7v&p~{n2$OE9U@c?LS7=T$tURN3$51Yn@&d}H%uywnp zGO?@I2(KU&r`4eqq#7tpD;Qd3T0w6Jyn-|?4DghGqM3{lC}BqFRfDz~jxsc!hNBFv z7LStFgjSVDNllqiUY9F_VtGZ8ejry~*OP}!GCUq`3IaUbLpr$ z`ZA!#b^7be{)K)v>&$jCOYcAiUD8gbL{yoY z!#T6waTyARneh3x2s@_z^(L1zRc_POs3d=@iG-gJ#~oU=cQIVu`P?sGF9PP@Y@_dV zX#}o52>HZ)c*2pe-l>LK)r3ySpE z_OfxwdoP+=SrrmKLS1_xQJl?l>!Lw4svPwxl+;P2v}s;#3e~8;X)jabF0MNHav3PC zt=h0Mzfw6T0J9U?Ukab?K0|GApB3sXjs@-QRisl2Dg)PDkg!#e==W%hm!pLZQLu$? zNHz+6IPO^HnhdnH{M$H3fBBt=%KRV-{4G7naUX|lf>pQp*oFB#qYqv#Q=vk4=5m?S z)*A;}SxT4V+#VVZxW`^9!de9S)BGD};CSRka!{z}_wFFmTU0|n0&|b{eRW-Lfjirv z5pm%Zg7=L)U!yz7D^g55IP^dcW#gDiQ%*~Au!GDKufJNP zexZ4;&AbybroSU1DM7 znJ)4pE7YUfxuz-kOYP<%0U$l0eVkw|1>ti$iOcGNDt+pw6iTi5ye{Ts4D}M1(Y%vu zd)k6FkB{Cp`cQ0^zTK6Xk=1Zx%qyY?xiW=2HqDhSFX_-O+;v|P*}9v&I_7Ld5P$`H z9=vK#cEic1TEE#%{(&oty-GGMH8TZa#plYerlq*0IX=4tDj#^4A7ePyp&zt!E7laa zWlGJ4?TMDPsN9`CyGYGu$JHn@nb|w+Z+0&Jy~5baIVwJi_*`(gbId1rKwk_X58Oa| z`%0g?V0IA>(bxz+91iQ3!Q#{}L!Lfq9EPDqbNcvIauSc^nXBbhNoFLJ3UqihCCBXN z16RxJ%+D1JwS<5I@~s5~d>FC&;p`%v+FfRqo|#vq4ul1n6?UJWU!=;QLWeTr5u|uh zQ^uW*&|Nl9d{?BqgXt+C1$^E};(N$zc(k|m0IRVYJumAa(_mg{Y7f~xcKGZf zIy^Htraq>-UV}WR%ZqfQYh<6;n)15D2rqFf5+__E1L<>)wZoYF?xyK=lw)OpkhtD{ zja<`XCdYpSJt>R_vkMpnmd68=81r34_cw^TnJ(!&d&gh0L58?Y>;t62mb31X0Ke@A z!}Q8)WtP8QoBGphW#?|gXLyYh@r>$@jhXtG8#fR#ao6riZ~EL>^>YBN+<>hsUAQNu z#Pu_Z^xZgsBz!uf2-I~mTLQv?bT3?w>Sfo-D@tBIMlWM9nUK1UvVZx}=b2=98p5`c>f4w{{$}wrpddkThsOl*T#B#)Z+Y>$`D|NG8@-b_^p59CT z)%sHZ(o44QP&2jOuzW72QhlaS`8W0A(I2?W0+i7%K?ut}N8i_5W|zLk(Qq$Fcp)Hx z437NJ78v{34|I|;eI}ivsvo`Y7|UJtV_QEGiCEj+b3kolAaRlIaV`>&1I>bf4dn>V zh8*rXt^(-+31A>8jpgd78)S6p!D-l@IQjFW!cH4Hf;7l1_fBP?@)|=Y1!fml1ReoK zqv%U*R{&w?Kl%e-u6PVh0*~i08$9ZC3evD6{M2LG!mIG>0!rFP1Kya+sJ3wtH2Vhm zH|qlpP0_q=AI9M2$Ur!;!-l7=hRKD93~)*U9Q9L#3m~@DxfCE8G%F&w^izqmx63Oy(C!W|Fz^nbB1%HWb{zQb4q3#3=6~@5$kS0z{EJ+`(O2K; z6)n5dYpnEc*;3csDcf**++DIW2Xg)@)AhY~L9R;mBU75b|8Fu$zjaq#&TL)%H<=vD zUR;;+!M~E^3+1Bk{*~tbz)6e$hOy<}<&Evvn{z`s&ESx!VIwh>SN~m36Jj`;I{Yu$ zRE$I*@*a5$$Nc>s*_va<-6QYjm>=(vO*kg&Uik_K-n&;m#ep9E`npf_xvGV3~!B7vg>f%NRL9;Sh0 zhM)wc^AOkU zc}T(%;w~*8mg6!GjV}T_2O0chbnENTMJez8)NM}WG9I65}yp^wNvnobBB;cvAYZrTn1wRRItyDHRfGy+G_ zE-Bi0lfv!tlrYN!8y1Y<#cuW>$ei{R;5BhTO%|hTnuMpG_0S1TkGmpuU_8>6C>*&Yj?XaD6@8hy#9I7G~h~&BexkLJm$7ScJb=0R4ZusouvTc(= z4m%B{dl0EkC}Is+rKGJw3Lp;s(0!kfDXFJJ9U{RYLnlbXwZM+0Pk@}fr^}y^iD5XT zN%Z2aCuFW^sgPUx@(J0N`W^T$Fzv^cxBpiT!_Ale^hp^s*#ev`?kQP7*-D<0&FS~v zr(_Vj@3cOweCugBUjl{ybBJu#qTb{a zZSb!3V1g+q@_gNK0Yyu0Sj!pd)+0lMHXANB(L z31co*xqjg}*%=GB%HbTbo zSNw&j1l?+cjOVXYNQv~4hah}NJSY~B zPE(vX$a{EGtg}rg4@#^I1B$Xs(4lfq$U)~Lg!LUGWwFCq^n{V}hGnrVkX*a3-;syDy z=!ghf54^jp>@!vFvh^EpIa!VH$i-F%QZNO?J)sd<*=2_OqaDrq&6qQ6`4l~O7S?W7 z<%U^ucXVq^H>0#vdaRKZ%!w3@O>xPFHWf9O!c{TKm@T+7vxJI$EGFuIc zr}M&4-cRZ7aPAd0m5IP{6+${hatBeuMAxR%d5=<|9YxZ-;eIbn`SiAp@=uM*xWX9d zb}DKIQVrdHlWYz}kH2h^Eux0wBp_IASD)GhUTn(20zG#Vq+=%#_-K>N=a{I?h}ngh zj+?!h0h?u^Sb>W#Tc7D=Tjhg5+s(E?WA=OfuWjh$_j>d;(295UmTj`N zHC+F=P4)>4*;Am-DfMnkdddmf%%^WaOu*;PK2QLC=YMXOO&k*(wOw{Y)jPM#9$rl5 z4zP{gcgVst+|<#?UFa&)t(^e>V8VLT4tY!3H#l(odh&%GAOU+06zHOAaHroOaDO%K zr@zsws^yyQ=T(r-qjm}5$!?|nXwq45MAL6XNJNk=cj-}2C7M2#A8ki&Ov#LtTXnRZ zUb|C{P~XG=*H9%lqG%an?|5I{1*P=2-Q&hxr-pxI>^(2^kJG zWW+?MAH4%1J8fYaDHyOxY(k~IL2wT-{^;MX#M~RVuuod1K40aIJ@S8+n6Rcm_x@1+ zx8U0d*sY8hzcSe9#Xy`o83C1x7X{9+-Ge|5pF-pMSc$G1HlME1{r>Zu|gGh^*h?+UL$A$vAIkxjJ0ukj#En8LT-3>? zSa8f0U`4w1TB6gDdAGxD$@*=5u@9%d<7hN$ziev_(Ovh0CHy5tKd@i^m40{bm-lx% zy|JBpd}BNH9d9D^!##B5-ZugZ*eo%>gN^h0b|2 zCdr{~H&S2mnaqwxqr_Q}?$(d`zn?*#zgSQIOcv?`pUI3X;Y*x)6`%*ML7Jb1t>~%0 zP_N_n7WBv1B%zmsgXxOML{P>B`m)dAEaj&n{g=;W$`vnQ^c_%rK$FnJB^0YMIG!(*!?y%5#(8#lVZ{cIfV4>of_=TaVW!2M!efxB-4RRZ<} zFNqPT;g?%Ium#ZXRnHT2nE_zCVB%0vjnOTR%B-HF$zict5>2mL*o5Q{xc+jhzBH2= zdV?@I(hqP1=11N+tnDF6_=BDZpgo9=rc0gudRRBBxnBIEot(L$6&?xktlBJXGP=h# zSX-RremN?$bKh%)1)=4v_r3)7hJ0#MD_jH7a$$*P>8p;(R#%X#HbOG=QkdMJ8P5-O zodmm${&VcQVYQ=GQ&V;IqgEheZcpG7R?Cb-19?8OCGUg&z2ASe9&;fvsZ@PIh7kc- zml!fq2WWoQ+r%9~(qzUGiCU2LXe;A54?`FaU+tvY?|&6mjp+GvjSs5OxGi(|btzfK zXBtYT?MY7&%MGnida?-}L#r#+d3`iKNc$Blj4&xsBMAm;)TnrXrb%>ADhSyJ$B`B$ zY22?Z(66p@+C|`fI^n|a^oey&N&-*D@uS{4V(waW*_rQ1VW>#X%olOSGuVM7o= z(()Z7tK^b?pr;n)S{P2GzI(mXDlyU>KNibI5=x7MmKvwa*E@-E;{eL!cbSZbz*mWW zcfFHy{Tr!%Xq@pAaD#hM({DF5A>K6Qjx%le&;|uyZNpSo1a9w1^nvI zTb-$`Ns|{dLPNy)6qBW1Zyhpfp<#;vPCF9b#)EKUj_gl-9|7|y#x&Ey*5)zEe5u|^ z(mTuIn_Oz0h5Y5hI?I(-SDo`zY#IrRxFuE5n(0&h*43ic1WDU<+D0d{(`o_-UTt7g z3S;Z;HxOWc@x9Ocre6aMR0QgN12;OU)_(o`M(3JRSB%X*sk(06+MCg%?O zt=48aW@mMe(ccE=Vg#a`(x#}cXLCx(`zYIB{joI+zR@UzX%O{IWA2LIQdi8YuH z(>5Dg58jh6LVv4Uhu%gl0m8=|El=hCEJ*yn0pE44e+_)Y{*U0dwBg*;!SCI`v_N+? zgS^gfjD)w7)`XQKiH{;T+#sSBnFjwEYzDL>Am~8yD&+f_-pjj75h?>la$kdmgwYVU zxYP0ShyrQ`kcrQq2UyobK)qX`|M0g=9j++^)nO#b@}NXA+hDna;96jLIz0<#6B?Qgu|D^eDL@STZvP=1oSZ8ge}ZEN=m&spHH-UvNT#=Q)Yn5%y6<);x$U(0bjbUV ziIez2D&cmMX(|%wKvI_&ghVk)Pu=ch=6pi*m910=n4qI)13BSLhkykkHyI-Jn(1LF z@lV2{uKGmc;EJw-lNh2eYfKa5c8BxqUk@Y^@rQgIT$y^G=oMi> z25mgXfuaX?uu$(Y<)+XSgbI1`J5Yy##ZQ4fAfn3VTsrhuXQ9|YLna*+ReptjqS|TW zrwYjQ6e_^80VhqMly-MINkvd)BT|jKSbiUS7LRf1J<=Ycle^$(pfyU-C&{QOv`aVI z=`^$6*By2`J?~$KSLZlJ(97CNfl2j&%^^=22|jZt>~{~RsE6HC$!ef~k{yy%usvm3 zqm@@+?B!)1m|<#w`^hsid0v5*B3|9@WeW(H9#zvC9{C*dg@At8sY^`X ze(9#vT0UW7h)*DByxQme?{4#;Xk#_KQ1wt(O&#Ul0@TDg&>I+NY-4ilUGKeT1^Y1s z)p9IIEtph*3-3Zx8zGau@7860CY0G-P*oQ@jAHv5!i`7m0=x@uL)CL29sCrR?6)9D zN6)4-NZ=@Pc#PJBTGs|;)nH&)nq8sLf|2<6=UA4lOTLteSARgbAHa^k{D_^*!8mFz zgo-?^=r5sa*iL>J6HQIAuRdFy0$WUk9o0UkCx0n38&z{_hoekuQVomM?|mr?Zz!vZ zA;(q1oq@o}FpOHMwXns9QS1nEKR*Tsr(Si`_8^Ubb{Q;p+iEu|RNE*{Qkl7!?zn6o zhP)Qu?B0D`cG4@3%d739ZS;lXa+^BRhOwynv<+~nI^3pm{|R}UV@<2<@SVI|is=hu z^us^OCpmEHN0}wYASV8d?1~${erM#>qM|ZJPd+1`Pv0wYKrjL+Zg~by@sVzgO$XSr zG_|*~(^;v6n1hmi&dF<0a`HL3iEH}%d0E_O8sm=7Ow?3&1 zi*lM+_-*BP)(A9vJl5F)Vc+sNr&|(l%aI4`_Rc~OJ$*LLxkJ>!Quk?9FMGqv1|~aM5NM1}c5)!tU7YL`z!A`)WGDCPVbQqe z#3LyGpQs;h#T1C|)H&MjK2(T?qH-dmeMEtAFpIwRS2O9JDNY(*75yW{X^rZ~rZ~;< zcy2|C6O7_Mb8#J!>NF{QgKdDKx9Ve|zK?=n1o+F?QS^*wUC_|FHa)=GAbne^^Jsp} zq!`lNfmENSO3ld2A?}c0Fsjq35M@Jl#0&>kab}wSCDj>{j4~u;17dO!q89qL5?$D~j- z5Jjly2vRmeKM{vr2;flFG2Q*q(3SD2(-G0o6o7m-C7Rt1RmadBHVo}5QhV}sH+-zs zgQi-IOYwuq__|}j`&5R1At)bdjavH6EWAhDJvv4o&T=jjKO&IY*tt#oJSs*%*4W9n zp3yHic6N&66ETi#XJqqkkRYJGeLSJ`0|3UWbljB&Wu6aeX#fKYdI&cKoKCG~N)R}o zOPFi2-CyAot|n}PPSMR$^I1<|I=SZgLazuoK{YdsWNO$UE$qp*T9&833OG&erFl9& z$4OA*xhYBtSp8pD<8|8{XH4ERk-;#6C|YGgaB=`d+Y3x)Xju&4pbfI%Q=?+_sT`+e z^HH&e03Cz%L_aN|TW*u`u<(=HL_(5o8eDs7H|PZJnubqM6}mgiV|cO7lO= zhap7dP}@WY)vMu{ogMk+GdhToq|$H#gtbA(iR{o`hjmTkA#a;r6Lb>o!D;%#pi_`E zB+aXcYP*XbT%wT9XyOzB)O$C<(R!QyXA`Gm=~v(|+#xs^g<&Cy+`|qH7W9`3;p*E+ z8lIz`kMxr`2Zs`$T1e;+2HK>JloV6XpPWkn>vBgiO{3)n17=W0*ei9I zc*&oslqjJ%<({Vp6x24&&X+{%IP?WVP&lXxqmANT$pJ<^=cznkVFB5|<*di@&{I78 z0ME(nT_JHI`l;qlgk7GdpKb2s((j_?P8%KD!pSSGq8*5JBPQ8Q4JiA2@pR6N2wB)5 z3cEiKL#M&wPul_uZu9!P8!dP0voY#8;F)(Gz-VNeA)cKvD2i3jM+dRkJwV=wG81#M zF&;m5FQU~gZ2eXXCzwxDfJ79;7YU#|2o<(bqnxfUP zG+ouw>1*S+Q7fk~Ya;c*@9$yG91s>-1Wv?&4~VW+&Hf`~pvIvmYBY7nr^d$8ykQd()M1#sae0EczArF?SddT!D4t2? z%W*e=YhT*B$g13@2f9OTBC1#bu0%Zt@`1|;7=P2ZwRWu84A9$YU~x z&@XvR=ny)eXGk5DbDx7>1A;p+IbQV7d4>Y=iqLpbr1?*Iyrp^6>TI5&iZsWVZY+kO z1V85Kj(JYExR25>sMjOx62jRksMq80JpXaoO})r)9nhJ@z%3?Q-P!Hg%K>ciiETu4a1^^ zzPr%5PoFJxhNOH!Mp*#lFHNW4spbQB4&#fQ`=jT_-|_U=Mlc$~4LFOfmZ9>Fs3Dy`iB!G^akL!2&(xlf}Ht0lWqL8u{61A8zkFh;bl$M?La# zC%W^2aB$dDh#y1S`RYJ;2K53Z+)!VLL3x;x@dBCz1Yw-$Cx{kjRgKW~#xfPoA zPjz&LS+8n&rPCLy_J=E-TdbXW;gyaXJBF>&nWcsy*Yj68*N5$d%1us~{-heK{ctB| zpc;*{6lK9t9clr%j{L5Zb5&q&8nCa(0VQK*Q;m(r>43DBvGI`KuNSv=5@OEe@mYfb z$<}}D3=YNgk;Z4TGKg&m^<8+{{8m8%L*FJIZFlr_LE9BNwTp8l z^rvs`;C!Gv9}A|pyEuQf@^w*HCm}PR$%mVJO$?!OFqV)D^`ek^H(%e?6>Md` z*+59@6-ru@ujh1idfMCa^{K8-Vv8kdRFWtv*sqSh&HyN&K&-!oaRNZMi zA!r&@kYKQClnYk>`)~D9*C{A0`;I8wTqoUiz)<>CO*jBt80P7ArZsf4O&#LK-`5G< zoa;)+4i36YLb=d|I4ByVP-RUx;XP1DNV(LWJby7N!Dhl)9(MaF5iI98J+PZ|gFQ4- zujz*K<8m#paz3;_3D>hH#iz!>$qku|0slp04owj zlEBL%Af!AWPB~tPK#Ag7*oj^~j~7Y=vxS&XPzQcK%;%pE%+DV4vpZiey4uOgpBs)9 z!Z=8XifzCM$bIKqZ@MsU5t=L(@!8!0JL7ei?oI_3;G6DFYSa*q=Iz6=st3*$`}I{l zoRaWK-$uJB5c)jd16<=k0PEl1ZuY1|r0A}TXjPrt@#7rRkr5NRQxz*_))@ET`e)8TXu z1~*O1KiRvxhQCibGuX5@qupOl>PN110ypR5b&+9#)X{uC@B^js|EU8t#4UmuRRdi4 zD2n2se=wfjBatkDd@fO|7z{N3iL*F#DjLf$S0B69$?sSbkKqyjYwqVPvbnb}%YQ3F zA?ltNjx#TjDFldHmFj|FS}*9Uu5+3~!TX-;oZO7PX#h$9&Sabw31h(0KMq_Jb6C&4 z&S`t~wlp(*65*qDxOGG#Acf9m5Gb^_6a7s%2A5LA-{VNZ=QxZEK-LBaaCq*`x!&nr z@VU1))mA!8f|DY~xCvy3j2ck)=ka6|ge!|s$MlTrovycYr@?_?Mb%eaflEDrh#S`o zw9N2aV01gIJfGniZ5lGoR}{8{a3gzUkeYQ=z{AnN?Fc%n^R2f9t@{Vgt(D6)1E&s*TnIqGn@ zUi@Tanm*st$+~-A8uN~*o5Xc?53lniEf+AiQ=A@kubrWFFQ*MoXX|=7l}#p}h-O}xZgMb)ut(hdht=2d=~!s5i^ufL z-p;>}KkNo@)hj8#ZhM3CIbt&UIO(OML4|-}=M=`M|Y0(LT5*%9N|fDdj_{IhA6?Gh$(C`J-L*TKCmilS$vC(pKesmn7# zI4xwQFmjQ4Ax{UCSkf41>qbTEt`4OUp{2oQp4vl3&;8EEtfz`Jj> zIpd)!{ZL;gx6vsUQTyCy4`bib0d0bQt*?_)`aFGuYc;nZ?zqFC*UYCP*GanB^gmDn$6Nt(T$fMkfz!!@?UeHss$)pC|Q& z8=WlrYwOGAmu3 zVd_UqBLk{{%T+#G!%7m!87QN71wj|buj1i1={HUKBwB63)h#X<>8Jp-h{nNX~}jgygCHcLF_V|o1j6u`i3Puec2zK=E*g-deW2{ z4~GK)H$uQq>xcg6BwNM$*+1e`4?|b(=%zoo9 z!;YNhjv#3x-C6R8aFk_1JvB$F9@MTo;b63iqL#ex8T1W801H4S!z(63AoRV&d^Zh! zziYl*gub_!?>3?DJ?0zY7*pRN^W8S|eZqWq2z_6`cO&$u6Gn>hlYdhzq_MWt<`VmI zlM+x4)4+egtf-S|ptijDdfA_x4hdKoixy_gezUlEI6LVUoO*UWYGoy^C?L+0+9onG;&&hRpH!eFAUcY&4^9R zQNtR!FuLkmbf*X|n*_w_nMSo04b_7dJLx&Y8ZmBBA7WZ;>K*lz7(nz6J$*S^ckK|D ze%*CGTFGd2J`$?kBoo3wLAoFn$MN(fHogM5G-#?W;XnZ&^Xek@7wC3x0Bsy9(6_wd z6lYIsgy9pXY(yzjYd?u$0|uM>hLfGPgm3G5;0z-2d=RLb(+C_K>O*fhZIkDv=YZP+ zJ!2QDF1R1~li91|lU1@f@^Q5G_ZB(&A4{A@)==H`cwA#WX$ejXhxMCFoO>ZI2`t6w zxa^~7-DRnhS_1b`*zD}og@gXdw9 za={z7`lY~Q?vUa6bRDBvSw#|U$2 zAssck5v`?~Pk(?hFvxvGeqFmy3@KsSYN(Tg;qxX7K)%5B@*lda1Tp<2f-R*Ps8Ayd ze|6#pF&4wbHG)<5i)U^b^{e~?&uH{II{Fctg z%9ZH-Vk^O*s!vrAHfPUn?(jWcl?~H+c@z!X+l4_E>^RVFeg7Yv4t>b2q+7B3SBr7l zgk8U#w*38z)AX21CoSSA?o#mfW3OIZ=_Dk*SjY!wY$?D&gQUpWltli6#(%OlC6eR> z!acGldi*bIgZlF2&TRxhB)~$Jv(g_O?FSNoRT<=pB8cLoC{FU%CB@Vx#c)zoT~cIi zQY0ru)+PCCll+_nXti7cWqF;r!YTH9tpT>r>V7MnH2X}Xz7M}wo`Lb|9x;Gc*bf5e zk%S$9)y4<9rp`pt4L(JHgoDMg`*XOB&*ns3wZaL;*VgQ&KH{c6iu%7>0lsTdIH1vL z~?o^hx%o~)n`<1c0mX>?IfGy({MMFGl0Y^_E2;@d|-lN)i2k*5`3UrdLh^#TXpp{YP3ZayDc<%~=w zc%+BdI3MA#sN#Y7BHE~5~jvBf(3K+I;36nRu!i{D0QpZ>F6vZKF}XZeH%ia3A*dsPGkE_ zl)m$AC+qgz)ph%7Zgj&fer`uyTD|Sx3A2b-C!pjICIQ?q#-`v4Xi>ieo3 ze`X~e%DDvK5-qw|cPaxE3&ZtQ&dso+a;(bfQ^Zw^P}O7@0DQiwoll_QbhL*eJ;ohQ z9L8dO&l+byv&sl_6s7z@0B2q8bXUX+1hdR%*5HEWiza^ZYKEyJ=!2$ddXQX70#l+? zFccFY<8IhH-X6<93C;nx<|uQb02u}65Ny=FUfR~edTDH1yk-lnBQs_JtMp;xL=mfm z_SNEaN@`18h7oaWFgho^!Y6(3^Cr+V6u?4(*(6CPR@tA8LTa8uNnDOXD1*Z&5~~Kc zhaq!1+>qc8lrg0LM-VL3lG1d@Ac*Cvsr|DLR`PL>Dg^n*q$nuX`Jh+_vgjikeiXmg zsE-SgWi%me^4S6z<7ExI{2D0Z*hXDhcUZmsOTyQUk=f`bf|?b{!>`?)h|E-&|j^C07tz* z>+}}RL%iYD5P}#A<7hP*a018pB^@u+^ zSCmrN^oGbZM8TviB|wh6+{ihXjs{qDL>Xa3dBZ|bJP$>jpu1i49Y>`hByKQlDjj)g z$Xtbuy37Q;44i%gX3eJ#0U6RbasSDVQK&;0rzu3Of$gNp;CZ77V2%O_>N9>6<_q}n zqSh_npvT_kbhfJWj@zJwV93No=OFsP zZj3ouNHmwvUGV66YNr+OJah?o4AIp)aQ*zuolcaX@>$Q3 zjG^FdhR_WFo1pA0A%{;%Lj-$)G}d{r&*@WlI@wJRLfcS%ZM<({_HoS^OOja>1_q?P z3*Udb?OjfBSQYIbr8nH=l*BLo|5$qy_^7J04|wLz+>>QOav=!`Nr0KKg*{Gk$5zZ9d1Kb>R z5=D%u=2zLp-AJ!l))`;ry>)BIG+w`*StXB#LLU^jJFt_pud>_reW#>L6_;MKTsyeCs1x+pil^9SAw5U|K5aVohmpI1e0l%oKs zOFDLOZmD&!N;h}&3akTF`rzrg-LvGeBsiya*Hh=JBK_uXZIyk5;*s+iB7W)J3#`sM z^BUW+K0?IU-yk}B_iOCt*3l|?;j54L4pVc&JGBC%dqr9au+Ip{e+?_0{pR%Pc!|HG zPNt*R(2*fwdwVYQ?YpdQQI3tt7Z<>zAFMA& zyZ|zjH7!Uz%{7!&5HdqJ1nGCJeM#XfEu7k3qnUnU@%k^&kK~TcX zy(MxM^}?8dXN156^D@>qIg!r#rmG6_qnO%gh@Fr&K*VT;1TzUlZVTdB2~K;B9{xMK z*{yQsm69V`ynnP;_Z?+-F65)V!{5t$b(r%aj8(|0 z808$-w~VqoB(qkgWj&e9B66l>eUi+2FYoN?w5-^5c0p`5b!_0y0Przc4J=5sd4LEQ zbPmIer?0q573%A*vvU-$qkwt*{W`mEd?I`~aC!@9%QXlYBzAV<3WNwc81^?7`LH)< zST)QAY^cZ1mzhHlUJ(or|3jVx%RbgF?A$e|56KG7=RoB}c z^5=sWL-TPSM6@q7f*?J)}H1aOz?$Xy5SX7Y}J

YUJ*-e9-w=v|Ht(||t~ zC5ab5lg`=W@qs3tUjuj_s{+NZ&F{*O1>13De2tL6Y!BsO9TLQL=mO>UYT@wOZ7yE?qm0^4X>FWgz< zRSnX|dwOv#z?re+Ome2;g_N7@E>*`dbTc_gUJG*|&Z8;1h%uDYdl?o+NFiLSAPh3^ z-(**{n$ip9UT=Y#0#qsn^zryKsGYyq9U@6ygvUtw-fUMycrHT32;p4h|8BNBB@=KX zNzcC7Zr%6ZQfG#&7kc#A8-zpwJ1#U?Lf$a}yzmJ7FcBQ(j_Un4+Z~f_vGLZo*yZK- zc=_hSARvlS0wRe);Kq}_@)o;opLLjpdHEZjP3+$^E8W`!7-~jocTCjeXsi2#3Lw8F z#xgTGmiKP4yC%oNlFe_mtFmS#^GDulmvnfX%KcHffGMBHQlBTi&qxKq(EH+X7(j#l)I z|F8#J8zZ{UU+j)8=Z2XlmonsDBY!yK^^JeA+vR@6lUVX`rcKrJ{$dw*l{Cy*(!OT_ zQY%NkfLHj9OnLt6nBMyryQ0I#7UVmgeZrrZOcojgYXP&Mq=4V?YW0V@>aTX6tT%+V zfuri*|J817KVIqvZ!r#Y%X*QF0$#Mk=(@k!tuB7QB~%%#A+7;uP%A=PGR?%RXLO|A z)S?{PkF&r=$S8oy`4~6dz?txyS~3zgXVD%v3hp^Dy66*swL4uSugRI70+C;e*bQQn zc;Bx6E79NZ9-jHYU3GrYxI+4hWqFS~@CS=QA%(s1;Zj}uH@p2M3E;y7l7ce`7-1*? z7KrdwUr#KDtanA2-EV7|~u*m+(K- zx881dtulSVB^Y7iopH2+7zYT*4M1RLdZ~Fdik-mPicn7a(Cv2XyvK>Nco-BD!!9_k zTmK!7Ja_6?FQ+)Rus5(1==+To!@3DZqj1!5U-~J9?gO_r2<)xuE!`^HUY?TAu z8;rWM#`s)pe!?>f0}#&Y9C7?0ReW36G%yLZAkgbSOwVl@|AdLB-+_2?_;1y){&@Pp z7~N_Om0Fe~%DPt>mPcc!lZ%&27I+;|DuAHnljC15O(+J3dndk*_Le)?h*4KlLpuX) zuKh_(a3@FN2YH~|9*MLQt&ocfaTpK-5X*yPfzBp#RG_=Z?N;R{kOc(&w=G~YAmtD7 zlE8bea4P(MT|xKAF)XU!{_;{?AGgoTKWW;G$x4aE2yD?*7d zEyh$voduUgs3YCU(|C~A=O|stS9~LgC+5M_+4-0h5!SdqWE@!P;lQGA9Ag(C9PpiE z?2d)&X@NZ^o0#`0gvYPbtH#(R#fdClB$q4XA?{XZojyFq9$v7SH`5W%0AvfQ7%kJ_ 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∈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