"use strict";var VirtualBackground=(()=>{var Tn=Object.defineProperty,uc=Object.defineProperties,dc=Object.getOwnPropertyDescriptor,Ec=Object.getOwnPropertyDescriptors,fc=Object.getOwnPropertyNames,ti=Object.getOwnPropertySymbols;var ri=Object.prototype.hasOwnProperty,Ic=Object.prototype.propertyIsEnumerable;var TA=(X,R,n)=>R in X?Tn(X,R,{enumerable:!0,configurable:!0,writable:!0,value:n}):X[R]=n,ni=(X,R)=>{for(var n in R||(R={}))ri.call(R,n)&&TA(X,n,R[n]);if(ti)for(var n of ti(R))Ic.call(R,n)&&TA(X,n,R[n]);return X},Ai=(X,R)=>uc(X,Ec(R));var Cc=(X=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(X,{get:(R,n)=>(typeof require!="undefined"?require:R)[n]}):X)(function(X){if(typeof require!="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+X+'" is not supported')});var pc=(X,R)=>{for(var n in R)Tn(X,n,{get:R[n],enumerable:!0})},Bc=(X,R,n,T)=>{if(R&&typeof R=="object"||typeof R=="function")for(let se of fc(R))!ri.call(X,se)&&se!==n&&Tn(X,se,{get:()=>R[se],enumerable:!(T=dc(R,se))||T.enumerable});return X};var hc=X=>Bc(Tn({},"__esModule",{value:!0}),X);var Ce=(X,R,n)=>(TA(X,typeof R!="symbol"?R+"":R,n),n);var wc={};pc(wc,{VirtualBackground:()=>Sn,default:()=>Dc});async function ii({sdkAppId:X,userId:R,userSig:n,core:T}){var be;let se=T.utils.getAbilityConfigUrl(X),ce=Math.round(new Date().getTime()/1e3),ge=`${se}?sdkAppId=${X}&userId=${R}&userSig=${n}×tamp=${ce}`;try{let Re=await(await fetch(ge)).json();T.log.info(`virtual background send ${ge}, response: ${JSON.stringify(Re)}`);let{data:Se}=Re;return(be=Se==null?void 0:Se.trtcAutoConf)!=null&&be.web_ar?{auth:!0,timestamp:ce}:{auth:!1}}catch(Te){return T.log.error("beauty fetch error",Te),{auth:!1}}}var mc={sdkAppId:{required:!0,type:"number"},userId:{required:!0,type:"string"},userSig:{required:!0,type:"string"}};function oi(X){return{name:"VirtualBackgroundOptions",type:"object",required:!0,allowEmpty:!1,properties:Ai(ni({},mc),{type:{required:!1,type:"string",values:["image","blur"]},src:{required:!1,type:"string"},blurLevel:{required:!1,type:"number",min:1,max:10},onError:{required:!1}}),validate(R,n,T,se){var Je;let{RtcError:ce,ErrorCode:ge,ErrorCodeDictionary:be}=X.errorModule;if(!R)return;let{type:Te,src:Re,onError:Se}=R;if(Te==="image"&&!Re)throw new ce({code:ge.INVALID_PARAMETER,extraCode:be.INVALID_PARAMETER_REQUIRED,fnName:T,messageParams:{key:"src"}});if(Se&&!X.utils.isFunction(Se))throw new ce({code:ge.INVALID_PARAMETER,extraCode:be.INVALID_PARAMETER_TYPE,fnName:T,messageParams:{key:"onError",value:typeof Se,rule:{type:"Function"}}});if(!((Je=X.room.videoManager.cameraTrack)!=null&&Je.mediaTrack))throw new ce({code:ge.INVALID_OPERATION,extraCode:be.INVALID_OPERATION_NEED_VIDEO,fnName:T});if(X.environment.CHROME_MAJOR_VERSION<90)throw new ce({code:ge.ENV_NOT_SUPPORTED,extraCode:be.NOT_SUPPORTED_CHROME_VERSION,fnName:T})}}}function si(X){return{name:"UpdateVirtualBackgroundOptions",type:"object",required:!0,allowEmpty:!1,properties:{type:{required:!0,type:"string",values:["image","blur"]},src:{required:!1,type:"string"},blurLevel:{required:!1,type:"number",min:1,max:10}},validate(R,n,T,se){if(!R)return;let{RtcError:ce,ErrorCode:ge,ErrorCodeDictionary:be}=X.errorModule,{type:Te,src:Re}=R;if(Te==="image"&&!Re)throw new ce({code:ge.INVALID_PARAMETER,extraCode:be.INVALID_PARAMETER_REQUIRED,fnName:T,messageParams:{key:"src"}})}}}function ai(X){return{name:"StopVirtualBackgroundOptions",required:!1}}var Qc=function(){let X=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(X=X||__filename),function(R){R=R||{};let n=typeof R!="undefined"?R:{},T,se;n.ready=new Promise((e,t)=>{T=e,se=t}),Object.getOwnPropertyDescriptor(n.ready,"_main")||(Object.defineProperty(n.ready,"_main",{configurable:!0,get(){u("You are getting _main on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_main",{configurable:!0,set(){u("You are setting _main on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_emscripten_stack_get_end")||(Object.defineProperty(n.ready,"_emscripten_stack_get_end",{configurable:!0,get(){u("You are getting _emscripten_stack_get_end on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_emscripten_stack_get_end",{configurable:!0,set(){u("You are setting _emscripten_stack_get_end on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_emscripten_stack_get_free")||(Object.defineProperty(n.ready,"_emscripten_stack_get_free",{configurable:!0,get(){u("You are getting _emscripten_stack_get_free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_emscripten_stack_get_free",{configurable:!0,set(){u("You are setting _emscripten_stack_get_free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_emscripten_stack_init")||(Object.defineProperty(n.ready,"_emscripten_stack_init",{configurable:!0,get(){u("You are getting _emscripten_stack_init on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_emscripten_stack_init",{configurable:!0,set(){u("You are setting _emscripten_stack_init on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_stackSave")||(Object.defineProperty(n.ready,"_stackSave",{configurable:!0,get(){u("You are getting _stackSave on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_stackSave",{configurable:!0,set(){u("You are setting _stackSave on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_stackRestore")||(Object.defineProperty(n.ready,"_stackRestore",{configurable:!0,get(){u("You are getting _stackRestore on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_stackRestore",{configurable:!0,set(){u("You are setting _stackRestore on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_stackAlloc")||(Object.defineProperty(n.ready,"_stackAlloc",{configurable:!0,get(){u("You are getting _stackAlloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_stackAlloc",{configurable:!0,set(){u("You are setting _stackAlloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"___wasm_call_ctors")||(Object.defineProperty(n.ready,"___wasm_call_ctors",{configurable:!0,get(){u("You are getting ___wasm_call_ctors on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"___wasm_call_ctors",{configurable:!0,set(){u("You are setting ___wasm_call_ctors on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_fflush")||(Object.defineProperty(n.ready,"_fflush",{configurable:!0,get(){u("You are getting _fflush on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_fflush",{configurable:!0,set(){u("You are setting _fflush on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"___errno_location")||(Object.defineProperty(n.ready,"___errno_location",{configurable:!0,get(){u("You are getting ___errno_location on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"___errno_location",{configurable:!0,set(){u("You are setting ___errno_location on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_malloc")||(Object.defineProperty(n.ready,"_malloc",{configurable:!0,get(){u("You are getting _malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_malloc",{configurable:!0,set(){u("You are setting _malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_free")||(Object.defineProperty(n.ready,"_free",{configurable:!0,get(){u("You are getting _free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_free",{configurable:!0,set(){u("You are setting _free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_setThrew")||(Object.defineProperty(n.ready,"_setThrew",{configurable:!0,get(){u("You are getting _setThrew on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_setThrew",{configurable:!0,set(){u("You are setting _setThrew on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"___cxa_is_pointer_type")||(Object.defineProperty(n.ready,"___cxa_is_pointer_type",{configurable:!0,get(){u("You are getting ___cxa_is_pointer_type on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"___cxa_is_pointer_type",{configurable:!0,set(){u("You are setting ___cxa_is_pointer_type on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"___cxa_can_catch")||(Object.defineProperty(n.ready,"___cxa_can_catch",{configurable:!0,get(){u("You are getting ___cxa_can_catch on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"___cxa_can_catch",{configurable:!0,set(){u("You are setting ___cxa_can_catch on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_saveSetjmp")||(Object.defineProperty(n.ready,"_saveSetjmp",{configurable:!0,get(){u("You are getting _saveSetjmp on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_saveSetjmp",{configurable:!0,set(){u("You are setting _saveSetjmp on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_memalign")||(Object.defineProperty(n.ready,"_memalign",{configurable:!0,get(){u("You are getting _memalign on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_memalign",{configurable:!0,set(){u("You are setting _memalign on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_emscripten_main_thread_process_queued_calls")||(Object.defineProperty(n.ready,"_emscripten_main_thread_process_queued_calls",{configurable:!0,get(){u("You are getting _emscripten_main_thread_process_queued_calls on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_emscripten_main_thread_process_queued_calls",{configurable:!0,set(){u("You are setting _emscripten_main_thread_process_queued_calls on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_emscripten_webgl_make_context_current")||(Object.defineProperty(n.ready,"_emscripten_webgl_make_context_current",{configurable:!0,get(){u("You are getting _emscripten_webgl_make_context_current on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_emscripten_webgl_make_context_current",{configurable:!0,set(){u("You are setting _emscripten_webgl_make_context_current on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_emscripten_webgl_get_current_context")||(Object.defineProperty(n.ready,"_emscripten_webgl_get_current_context",{configurable:!0,get(){u("You are getting _emscripten_webgl_get_current_context on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_emscripten_webgl_get_current_context",{configurable:!0,set(){u("You are setting _emscripten_webgl_get_current_context on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"__get_tzname")||(Object.defineProperty(n.ready,"__get_tzname",{configurable:!0,get(){u("You are getting __get_tzname on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"__get_tzname",{configurable:!0,set(){u("You are setting __get_tzname on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"__get_daylight")||(Object.defineProperty(n.ready,"__get_daylight",{configurable:!0,get(){u("You are getting __get_daylight on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"__get_daylight",{configurable:!0,set(){u("You are setting __get_daylight on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"__get_timezone")||(Object.defineProperty(n.ready,"__get_timezone",{configurable:!0,get(){u("You are getting __get_timezone on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"__get_timezone",{configurable:!0,set(){u("You are setting __get_timezone on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_emscripten_builtin_malloc")||(Object.defineProperty(n.ready,"_emscripten_builtin_malloc",{configurable:!0,get(){u("You are getting _emscripten_builtin_malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_emscripten_builtin_malloc",{configurable:!0,set(){u("You are setting _emscripten_builtin_malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_emscripten_builtin_free")||(Object.defineProperty(n.ready,"_emscripten_builtin_free",{configurable:!0,get(){u("You are getting _emscripten_builtin_free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_emscripten_builtin_free",{configurable:!0,set(){u("You are setting _emscripten_builtin_free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_emscripten_builtin_memalign")||(Object.defineProperty(n.ready,"_emscripten_builtin_memalign",{configurable:!0,get(){u("You are getting _emscripten_builtin_memalign on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_emscripten_builtin_memalign",{configurable:!0,set(){u("You are setting _emscripten_builtin_memalign on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"___getTypeName")||(Object.defineProperty(n.ready,"___getTypeName",{configurable:!0,get(){u("You are getting ___getTypeName on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"___getTypeName",{configurable:!0,set(){u("You are setting ___getTypeName on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"___embind_register_native_and_builtin_types")||(Object.defineProperty(n.ready,"___embind_register_native_and_builtin_types",{configurable:!0,get(){u("You are getting ___embind_register_native_and_builtin_types on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"___embind_register_native_and_builtin_types",{configurable:!0,set(){u("You are setting ___embind_register_native_and_builtin_types on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"onRuntimeInitialized")||(Object.defineProperty(n.ready,"onRuntimeInitialized",{configurable:!0,get(){u("You are getting onRuntimeInitialized on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"onRuntimeInitialized",{configurable:!0,set(){u("You are setting onRuntimeInitialized on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}));let ce={},ge;for(ge in n)n.hasOwnProperty(ge)&&(ce[ge]=n[ge]);let be=[],Te="./this.program",Re=function(e,t){throw t},Se=typeof window=="object",Je=typeof importScripts=="function",ht=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",At=!Se&&!ht&&!Je;if(n.ENVIRONMENT)throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)");let je="";function Mn(e){return n.locateFile?n.locateFile(e,je):je+e}let St,Fn,Pt,Kt,vn,OA;if(Se||Je){if(Je?je=self.location.href:typeof document!="undefined"&&document.currentScript&&(je=document.currentScript.src),X&&(je=X),je.indexOf("blob:")!==0?je=je.substr(0,je.lastIndexOf("/")+1):je="",!(typeof window=="object"||typeof importScripts=="function"))throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");St=function(e){let t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},Je&&(Pt=function(e){let t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),Fn=function(e,t,r){let A=new XMLHttpRequest;A.open("GET",e,!0),A.responseType="arraybuffer",A.onload=function(){if(A.status==200||A.status==0&&A.response){t(A.response);return}r()},A.onerror=r,A.send(null)},Kt=function(e){document.title=e}}else throw new Error("environment detection error");let ye=n.print||console.log.bind(console),Z=n.printErr||console.warn.bind(console);for(ge in ce)ce.hasOwnProperty(ge)&&(n[ge]=ce[ge]);ce=null,n.arguments&&(be=n.arguments),Object.getOwnPropertyDescriptor(n,"arguments")||Object.defineProperty(n,"arguments",{configurable:!0,get(){u("Module.arguments has been replaced with plain arguments_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),n.thisProgram&&(Te=n.thisProgram),Object.getOwnPropertyDescriptor(n,"thisProgram")||Object.defineProperty(n,"thisProgram",{configurable:!0,get(){u("Module.thisProgram has been replaced with plain thisProgram (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),n.quit&&(Re=n.quit),Object.getOwnPropertyDescriptor(n,"quit")||Object.defineProperty(n,"quit",{configurable:!0,get(){u("Module.quit has been replaced with plain quit_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),M(typeof n.memoryInitializerPrefixURL=="undefined","Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),M(typeof n.pthreadMainPrefixURL=="undefined","Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),M(typeof n.cdInitializerPrefixURL=="undefined","Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),M(typeof n.filePackagePrefixURL=="undefined","Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),M(typeof n.read=="undefined","Module.read option was removed (modify read_ in JS)"),M(typeof n.readAsync=="undefined","Module.readAsync option was removed (modify readAsync in JS)"),M(typeof n.readBinary=="undefined","Module.readBinary option was removed (modify readBinary in JS)"),M(typeof n.setWindowTitle=="undefined","Module.setWindowTitle option was removed (modify setWindowTitle in JS)"),M(typeof n.TOTAL_MEMORY=="undefined","Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"),Object.getOwnPropertyDescriptor(n,"read")||Object.defineProperty(n,"read",{configurable:!0,get(){u("Module.read has been replaced with plain read_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),Object.getOwnPropertyDescriptor(n,"readAsync")||Object.defineProperty(n,"readAsync",{configurable:!0,get(){u("Module.readAsync has been replaced with plain readAsync (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),Object.getOwnPropertyDescriptor(n,"readBinary")||Object.defineProperty(n,"readBinary",{configurable:!0,get(){u("Module.readBinary has been replaced with plain readBinary (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),Object.getOwnPropertyDescriptor(n,"setWindowTitle")||Object.defineProperty(n,"setWindowTitle",{configurable:!0,get(){u("Module.setWindowTitle has been replaced with plain setWindowTitle (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),M(!At,"shell environment detected but not enabled at build time. Add 'shell' to `-s ENVIRONMENT` to enable.");function Pe(e){Pe.shown||(Pe.shown={}),Pe.shown[e]||(Pe.shown[e]=1,Z(e))}function dt(e,t){if(typeof WebAssembly.Function=="function"){let B={i:"i32",j:"i64",f:"f32",d:"f64"},h={parameters:[],results:t[0]=="v"?[]:[B[t[0]]]};for(var r=1;r=A);)++i;if(i-t>16&&e.subarray&&Nr)return Nr.decode(e.subarray(t,i));let o="";for(;t>10,56320|E&1023)}}return o}function de(e,t){return e?Qt(le,e,t):""}function _t(e,t,r,A){if(!(A>0))return 0;let i=r,o=r+A-1;for(let s=0;s=55296&&c<=57343){let d=e.charCodeAt(++s);c=65536+((c&1023)<<10)|d&1023}if(c<=127){if(r>=o)break;t[r++]=c}else if(c<=2047){if(r+1>=o)break;t[r++]=192|c>>6,t[r++]=128|c&63}else if(c<=65535){if(r+2>=o)break;t[r++]=224|c>>12,t[r++]=128|c>>6&63,t[r++]=128|c&63}else{if(r+3>=o)break;c>=2097152&&Pe(`Invalid Unicode code point 0x${c.toString(16)} encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x1FFFFF).`),t[r++]=240|c>>18,t[r++]=128|c>>12&63,t[r++]=128|c>>6&63,t[r++]=128|c&63}}return t[r]=0,r-i}function it(e,t,r){return M(typeof r=="number","stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),_t(e,le,t,r)}function yt(e){let t=0;for(let r=0;r=55296&&A<=57343&&(A=65536+((A&1023)<<10)|e.charCodeAt(++r)&1023),A<=127?++t:A<=2047?t+=2:A<=65535?t+=3:t+=4}return t}let kr=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):void 0;function lr(e,t){M(e%2==0,"Pointer passed to UTF16ToString must be aligned to two bytes!");let r=e,A=r>>1,i=A+t/2;for(;!(A>=i)&&Dt[A];)++A;if(r=A<<1,r-e>32&&kr)return kr.decode(le.subarray(e,r));let o="";for(let s=0;!(s>=t/2);++s){let c=ot[e+s*2>>1];if(c==0)break;o+=String.fromCharCode(c)}return o}function Ur(e,t,r){if(M(t%2==0,"Pointer passed to stringToUTF16 must be aligned to two bytes!"),M(typeof r=="number","stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),r===void 0&&(r=2147483647),r<2)return 0;r-=2;let A=t,i=r>1]=s,t+=2}return ot[t>>1]=0,t-A}function kn(e){return e.length*2}function Un(e,t){M(e%4==0,"Pointer passed to UTF32ToString must be aligned to four bytes!");let r=0,A="";for(;!(r>=t/4);){let i=m[e+r*4>>2];if(i==0)break;if(++r,i>=65536){let o=i-65536;A+=String.fromCharCode(55296|o>>10,56320|o&1023)}else A+=String.fromCharCode(i)}return A}function Zt(e,t,r){if(M(t%4==0,"Pointer passed to stringToUTF32 must be aligned to four bytes!"),M(typeof r=="number","stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),r===void 0&&(r=2147483647),r<4)return 0;let A=t,i=A+r-4;for(let o=0;o=55296&&s<=57343){let c=e.charCodeAt(++o);s=65536+((s&1023)<<10)|c&1023}if(m[t>>2]=s,t+=4,t+4>i)break}return m[t>>2]=0,t-A}function xn(e){let t=0;for(let r=0;r=55296&&A<=57343&&++r,t+=4}return t}function ur(e){let t=yt(e)+1,r=Jt(t);return r&&_t(e,oe,r,t),r}function xr(e,t){M(e.length>=0,"writeArrayToMemory array must have a length (should be an array or typed array)"),oe.set(e,t)}function Ln(e,t,r){for(let A=0;A>0]=e.charCodeAt(A);r||(oe[t>>0]=0)}function Gn(e,t){return e%t>0&&(e+=t-e%t),e}let Mt,oe,le,ot,Dt,m,Ae,pe,dr;function Lr(e){Mt=e,n.HEAP8=oe=new Int8Array(e),n.HEAP16=ot=new Int16Array(e),n.HEAP32=m=new Int32Array(e),n.HEAPU8=le=new Uint8Array(e),n.HEAPU16=Dt=new Uint16Array(e),n.HEAPU32=Ae=new Uint32Array(e),n.HEAPF32=pe=new Float32Array(e),n.HEAPF64=dr=new Float64Array(e)}let qt=5242880;n.TOTAL_STACK&&M(qt===n.TOTAL_STACK,"the stack size can no longer be determined at runtime");let me=n.INITIAL_MEMORY||16777216;Object.getOwnPropertyDescriptor(n,"INITIAL_MEMORY")||Object.defineProperty(n,"INITIAL_MEMORY",{configurable:!0,get(){u("Module.INITIAL_MEMORY has been replaced with plain INITIAL_MEMORY (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),M(me>=qt,`INITIAL_MEMORY should be larger than TOTAL_STACK, was ${me}! (TOTAL_STACK=${qt})`),M(typeof Int32Array!="undefined"&&typeof Float64Array!="undefined"&&Int32Array.prototype.subarray!==void 0&&Int32Array.prototype.set!==void 0,"JS engine does not provide full typed array support"),M(!n.wasmMemory,"Use of `wasmMemory` detected. Use -s IMPORTED_MEMORY to define wasmMemory externally"),M(me==16777216,"Detected runtime INITIAL_MEMORY setting. Use -s IMPORTED_MEMORY to define wasmMemory dynamically");let v;function st(){let e=DA();M((e&3)==0),Ae[(e>>2)+1]=34821223,Ae[(e>>2)+2]=2310721022,m[0]=1668509029}function Ve(){if(Ke)return;let e=DA(),t=Ae[(e>>2)+1],r=Ae[(e>>2)+2];(t!=34821223||r!=2310721022)&&u(`Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x${r.toString(16)} ${t.toString(16)}`),m[0]!==1668509029&&u("Runtime error: The application has corrupted its heap memory area (address zero)!")}(function(){let e=new Int16Array(1),t=new Int8Array(e.buffer);if(e[0]=25459,t[0]!==115||t[1]!==99)throw"Runtime error: expected the system to be little-endian! (Run with -s SUPPORT_BIG_ENDIAN=1 to bypass)"})();let Et=[],$=[],Gr=[],Ft=[],$e=!1,jr=!1,ze=0;function Xe(){return vr||ze>0}function jn(){if(n.preRun)for(typeof n.preRun=="function"&&(n.preRun=[n.preRun]);n.preRun.length;)Hr(n.preRun.shift());Ot(Et)}function Hn(){Ve(),M(!$e),$e=!0,!n.noFSInit&&!a.init.initialized&&a.init(),a.ignorePermissions=!1,et.init(),Ot($)}function Er(){Ve(),jr=!0}function fr(){if(Ve(),n.postRun)for(typeof n.postRun=="function"&&(n.postRun=[n.postRun]);n.postRun.length;)Yr(n.postRun.shift());Ot(Ft)}function Hr(e){Et.unshift(e)}function Yn(e){$.unshift(e)}function Yr(e){Ft.unshift(e)}M(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),M(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),M(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),M(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");let at=0,ct=null,vt=null,wt={};function bt(e){let t=e;for(;;){if(!wt[e])return e;e=t+Math.random()}}function Tt(e){at++,n.monitorRunDependencies&&n.monitorRunDependencies(at),e?(M(!wt[e]),wt[e]=1,ct===null&&typeof setInterval!="undefined"&&(ct=setInterval(()=>{if(Ke){clearInterval(ct),ct=null;return}let t=!1;for(let r in wt)t||(t=!0,Z("still waiting on run dependencies:")),Z(`dependency: ${r}`);t&&Z("(end of list)")},1e4))):Z("warning: run dependency added without ID")}function Ze(e){if(at--,n.monitorRunDependencies&&n.monitorRunDependencies(at),e?(M(wt[e]),delete wt[e]):Z("warning: run dependency removed without ID"),at==0&&(ct!==null&&(clearInterval(ct),ct=null),vt)){let t=vt;vt=null,t()}}n.preloadedImages={},n.preloadedAudios={};function u(e){n.onAbort&&n.onAbort(e),e+="",Z(e),Ke=!0,zt=1,e=`abort(${e}) at ${Vn()}`;let r=new WebAssembly.RuntimeError(e);throw se(r),r}let Xn="data:application/octet-stream;base64,";function Nt(e){return e.startsWith(Xn)}function PA(e){return e.startsWith("file://")}function V(e,t){return function(){let r=e,A=t;return t||(A=n.asm),M($e,`native function \`${r}\` called before runtime initialization`),M(!jr,`native function \`${r}\` called after runtime exit (use NO_EXIT_RUNTIME to keep it alive after main() exits)`),A[e]||M(A[e],`exported native function \`${r}\` not found`),A[e].apply(null,arguments)}}let qe;qe="selfie_segmentation_solution_simd_wasm_bin.wasm",Nt(qe)||(qe=Mn(qe));function MA(e){try{if(e==qe&&gr)return new Uint8Array(gr);if(Pt)return Pt(e);throw"both async and sync fetching of the wasm failed"}catch(t){u(t)}}function kt(){let e={env:$A,wasi_snapshot_preview1:$A};function t(i,o){let{exports:s}=i;n.asm=s,mt=n.asm.memory,M(mt,"memory not found in wasm exports"),Lr(mt.buffer),v=n.asm.__indirect_function_table,M(v,"table not found in wasm exports"),Yn(n.asm.__wasm_call_ctors),Ze("wasm-instantiate")}Tt("wasm-instantiate");let r=n;function A(i){M(n===r,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),r=null,t(i)}if(n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(i){return Z(`Module.instantiateWasm callback failed with error: ${i}`),!1}return n.loadWasm(qe,e).then(A).catch(se),{}}let Ee,Me,Ut={460656(){let e=!0;if(e){let t=mA;if(typeof t!="function"){typeof console!="undefined"&&console.error('Expected Emscripten global function "findCanvasEventTarget" not found. WebGL context creation may fail.');return}mA=function(r){if(r==0){if(n&&n.canvas)return n.canvas;if(n&&n.canvasCssSelector)return t(n.canvasCssSelector);typeof console!="undefined"&&console.warn("Module properties canvas and canvasCssSelector not found during WebGL context creation.")}return t(r)},e=!1}},461441(){return typeof wasmOffsetConverter!="undefined"}};function Xr(){return typeof wasmOffsetConverter!="undefined"}function Ir(e,t){if(Q.mainLoop.timingMode=e,Q.mainLoop.timingValue=t,!Q.mainLoop.func)return Z("emscripten_set_main_loop_timing: Cannot set timing mode for main loop since a main loop does not exist! Call emscripten_set_main_loop first to set one up."),1;if(Q.mainLoop.running||(Q.mainLoop.running=!0),e==0)Q.mainLoop.scheduler=function(){let A=Math.max(0,Q.mainLoop.tickStartTime+t-ft())|0;setTimeout(Q.mainLoop.runner,A)},Q.mainLoop.method="timeout";else if(e==1)Q.mainLoop.scheduler=function(){Q.requestAnimationFrame(Q.mainLoop.runner)},Q.mainLoop.method="rAF";else if(e==2){if(typeof setImmediate=="undefined"){let r=[],A="setimmediate",i=function(o){(o.data===A||o.data.target===A)&&(o.stopPropagation(),r.shift()())};addEventListener("message",i,!0),setImmediate=function(s){r.push(s),Je?(n.setImmediates===void 0&&(n.setImmediates=[]),n.setImmediates.push(s),postMessage({target:A})):postMessage(A,"*")}}Q.mainLoop.scheduler=function(){setImmediate(Q.mainLoop.runner)},Q.mainLoop.method="immediate"}return 0}let ft;ht?ft=function(){let e=process.hrtime();return e[0]*1e3+e[1]/1e6}:ft=function(){return performance.now()};function FA(){return!C.currentContext||!C.currentContext.GLctx?-3:C.currentContext.defaultFbo?(C.blitOffscreenFramebuffer(C.currentContext),0):C.currentContext.attributes.explicitSwapControl?0:-3}function Wr(e){gc(e)}function Wn(){if(!Xe())try{Wr(zt)}catch(e){if(e instanceof wA)return;throw e}}function er(e,t,r,A,i){M(!Q.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."),Q.mainLoop.func=e,Q.mainLoop.arg=A;let o=Q.mainLoop.currentlyRunningMainloop;function s(){return o0){let d=Date.now(),E=Q.mainLoop.queue.shift();if(E.func(E.arg),Q.mainLoop.remainingBlockers){let I=Q.mainLoop.remainingBlockers,B=I%1==0?I-1:Math.floor(I);E.counted?Q.mainLoop.remainingBlockers=B:(B=B+.5,Q.mainLoop.remainingBlockers=(8*I+B)/9)}if(ye(`main loop blocker "${E.name}" took ${Date.now()-d} ms`),Q.mainLoop.updateStatus(),!s())return;setTimeout(Q.mainLoop.runner,0);return}if(s()){if(Q.mainLoop.currentFrameNumber=Q.mainLoop.currentFrameNumber+1|0,Q.mainLoop.timingMode==1&&Q.mainLoop.timingValue>1&&Q.mainLoop.currentFrameNumber%Q.mainLoop.timingValue!=0){Q.mainLoop.scheduler();return}Q.mainLoop.timingMode==0&&(Q.mainLoop.tickStartTime=ft()),C.newRenderingFrameStarted(),typeof C!="undefined"&&C.currentContext&&!C.currentContextIsProxied&&!C.currentContext.attributes.explicitSwapControl&&C.currentContext.GLctx.commit&&C.currentContext.GLctx.commit(),Q.mainLoop.method==="timeout"&&n.ctx&&(Pe("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!"),Q.mainLoop.method=""),Q.mainLoop.runIter(e),Ve(),s()&&(typeof SDL=="object"&&SDL.audio&&SDL.audio.queueNewAudioData&&SDL.audio.queueNewAudioData(),Q.mainLoop.scheduler())}}},i||(t&&t>0?Ir(0,1e3/t):Ir(1,1),Q.mainLoop.scheduler()),r)throw"unwind"}function Cr(e,t){if(Ke){Z("user callback triggered after application aborted. Ignoring.");return}if(t){e();return}try{e()}catch(r){if(r instanceof wA)return;if(r!=="unwind")throw r&&typeof r=="object"&&r.stack&&Z(`exception thrown: ${[r,r.stack]}`),r}}function Jr(e,t){return setTimeout(()=>{Cr(e)},t)}var Q={mainLoop:{running:!1,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause(){Q.mainLoop.scheduler=null,Q.mainLoop.currentlyRunningMainloop++},resume(){Q.mainLoop.currentlyRunningMainloop++;let{timingMode:e}=Q.mainLoop,{timingValue:t}=Q.mainLoop,{func:r}=Q.mainLoop;Q.mainLoop.func=null,er(r,0,!1,Q.mainLoop.arg,!0),Ir(e,t),Q.mainLoop.scheduler()},updateStatus(){if(n.setStatus){let e=n.statusMessage||"Please wait...",t=Q.mainLoop.remainingBlockers,r=Q.mainLoop.expectedBlockers;t?t{I(O)},!1),O.onerror=function(Y){if(E)return;ye(`warning: browser could not fully decode audio ${s}, trying slower base64 approach`);function q(D){let F="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",te="=",x="",Ie=0,we=0;for(let nt=0;nt=6;){let lc=Ie>>we-6&63;we-=6,x+=F[lc]}return we==2?(x+=F[(Ie&3)<<4],x+=te+te):we==4&&(x+=F[(Ie&15)<<2],x+=te),x}O.src=`data:audio/x-${s.substr(-3)};base64,${q(o)}`,I(O)},O.src=_,Jr(()=>{I(O)},1e4)}else return B()},n.preloadPlugins.push(t);function r(){Q.pointerLock=document.pointerLockElement===n.canvas||document.mozPointerLockElement===n.canvas||document.webkitPointerLockElement===n.canvas||document.msPointerLockElement===n.canvas}let{canvas:A}=n},createContext(e,t,r,A){if(t&&n.ctx&&e==n.canvas)return n.ctx;let i,o;if(t){let s={antialias:!1,alpha:!1,majorVersion:typeof WebGL2RenderingContext!="undefined"?2:1};if(A)for(let c in A)s[c]=A[c];typeof C!="undefined"&&(o=C.createContext(e,s),o&&(i=C.getContext(o).GLctx))}else i=e.getContext("2d");return i?(r&&(t||M(typeof y=="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it"),n.ctx=i,t&&C.makeContextCurrent(o),n.useWebGL=t,Q.moduleContextCreatedCallbacks.forEach(s=>{s()}),Q.init()),i):null},destroyContext(e,t,r){},fullscreenHandlersInstalled:!1,lockPointer:void 0,resizeCanvas:void 0,requestFullscreen(e,t){Q.lockPointer=e,Q.resizeCanvas=t,typeof Q.lockPointer=="undefined"&&(Q.lockPointer=!0),typeof Q.resizeCanvas=="undefined"&&(Q.resizeCanvas=!1);let{canvas:r}=n;function A(){Q.isFullscreen=!1;let o=r.parentNode;(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===o?(r.exitFullscreen=Q.exitFullscreen,Q.lockPointer&&r.requestPointerLock(),Q.isFullscreen=!0,Q.resizeCanvas?Q.setFullscreenCanvasSize():Q.updateCanvasDimensions(r)):(o.parentNode.insertBefore(r,o),o.parentNode.removeChild(o),Q.resizeCanvas?Q.setWindowedCanvasSize():Q.updateCanvasDimensions(r)),n.onFullScreen&&n.onFullScreen(Q.isFullscreen),n.onFullscreen&&n.onFullscreen(Q.isFullscreen)}Q.fullscreenHandlersInstalled||(Q.fullscreenHandlersInstalled=!0);let i=document.createElement("div");r.parentNode.insertBefore(i,r),i.appendChild(r),i.requestFullscreen=i.requestFullscreen||i.mozRequestFullScreen||i.msRequestFullscreen||(i.webkitRequestFullscreen?function(){i.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}:null)||(i.webkitRequestFullScreen?function(){i.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null),i.requestFullscreen()},requestFullScreen(){u("Module.requestFullScreen has been replaced by Module.requestFullscreen (without a capital S)")},exitFullscreen(){return Q.isFullscreen?((document.exitFullscreen||document.cancelFullScreen||document.mozCancelFullScreen||document.msExitFullscreen||document.webkitCancelFullScreen||function(){}).apply(document,[]),!0):!1},nextRAF:0,fakeRequestAnimationFrame(e){let t=Date.now();if(Q.nextRAF===0)Q.nextRAF=t+1e3/60;else for(;t+2>=Q.nextRAF;)Q.nextRAF+=1e3/60;let r=Math.max(Q.nextRAF-t,0);setTimeout(e,r)},requestAnimationFrame(e){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(e);return}let t=Q.fakeRequestAnimationFrame;t(e)},safeSetTimeout(e){return Jr(e)},safeRequestAnimationFrame(e){return Q.requestAnimationFrame(()=>{Cr(e)})},getMimetype(e){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[e.substr(e.lastIndexOf(".")+1)]},getUserMedia(e){window.getUserMedia||(window.getUserMedia=navigator.getUserMedia||navigator.mozGetUserMedia),window.getUserMedia(e)},getMovementX(e){return e.movementX||e.mozMovementX||e.webkitMovementX||0},getMovementY(e){return e.movementY||e.mozMovementY||e.webkitMovementY||0},getMouseWheelDelta(e){let t=0;switch(e.type){case"DOMMouseScroll":t=e.detail/3;break;case"mousewheel":t=e.wheelDelta/120;break;case"wheel":switch(t=e.deltaY,e.deltaMode){case 0:t/=100;break;case 1:t/=3;break;case 2:t*=80;break;default:throw`unrecognized mouse wheel delta mode: ${e.deltaMode}`}break;default:throw`unrecognized mouse wheel event: ${e.type}`}return t},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent(e){if(Q.pointerLock)e.type!="mousemove"&&"mozMovementX"in e?Q.mouseMovementX=Q.mouseMovementY=0:(Q.mouseMovementX=Q.getMovementX(e),Q.mouseMovementY=Q.getMovementY(e)),typeof SDL!="undefined"?(Q.mouseX=SDL.mouseX+Q.mouseMovementX,Q.mouseY=SDL.mouseY+Q.mouseMovementY):(Q.mouseX+=Q.mouseMovementX,Q.mouseY+=Q.mouseMovementY);else{let t=n.canvas.getBoundingClientRect(),r=n.canvas.width,A=n.canvas.height,i=typeof window.scrollX!="undefined"?window.scrollX:window.pageXOffset,o=typeof window.scrollY!="undefined"?window.scrollY:window.pageYOffset;if(M(typeof i!="undefined"&&typeof o!="undefined","Unable to retrieve scroll position, mouse positions likely broken."),e.type==="touchstart"||e.type==="touchend"||e.type==="touchmove"){let{touch:d}=e;if(d===void 0)return;let E=d.pageX-(i+t.left),I=d.pageY-(o+t.top);E=E*(r/t.width),I=I*(A/t.height);let B={x:E,y:I};if(e.type==="touchstart")Q.lastTouches[d.identifier]=B,Q.touches[d.identifier]=B;else if(e.type==="touchend"||e.type==="touchmove"){let h=Q.touches[d.identifier];h||(h=B),Q.lastTouches[d.identifier]=h,Q.touches[d.identifier]=B}return}let s=e.pageX-(i+t.left),c=e.pageY-(o+t.top);s=s*(r/t.width),c=c*(A/t.height),Q.mouseMovementX=s-Q.mouseX,Q.mouseMovementY=c-Q.mouseY,Q.mouseX=s,Q.mouseY=c}},resizeListeners:[],updateResizeListeners(){let{canvas:e}=n;Q.resizeListeners.forEach(t=>{t(e.width,e.height)})},setCanvasSize(e,t,r){let{canvas:A}=n;Q.updateCanvasDimensions(A,e,t),r||Q.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize(){if(typeof SDL!="undefined"){let e=Ae[SDL.screen>>2];e=e|8388608,m[SDL.screen>>2]=e}Q.updateCanvasDimensions(n.canvas),Q.updateResizeListeners()},setWindowedCanvasSize(){if(typeof SDL!="undefined"){let e=Ae[SDL.screen>>2];e=e&-8388609,m[SDL.screen>>2]=e}Q.updateCanvasDimensions(n.canvas),Q.updateResizeListeners()},updateCanvasDimensions(e,t,r){t&&r?(e.widthNative=t,e.heightNative=r):(t=e.widthNative,r=e.heightNative);let A=t,i=r;if(n.forcedAspectRatio&&n.forcedAspectRatio>0&&(A/i0;){let t=e.shift();if(typeof t=="function"){t(n);continue}let{func:r}=t;typeof r=="number"?t.arg===void 0?v.get(r)():v.get(r)(t.arg):r(t.arg===void 0?null:t.arg)}}function Jn(e){return Pe("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"),e}function xt(e){let t=/\b_Z[\w\d_]+/g;return e.replace(t,r=>{let A=Jn(r);return r===A?r:`${A} [${r}]`})}function Kn(){let e=new Error;if(!e.stack){try{throw new Error}catch(t){e=t}if(!e.stack)return"(no stack trace available)"}return e.stack.toString()}function Vn(){let e=Kn();return n.extraStackTrace&&(e+=` ${n.extraStackTrace()}`),xt(e)}function tr(e){return Jt(e+16)+16}function $n(e,t){}function Kr(e,t){return void 0}function Lt(e){this.excPtr=e,this.ptr=e-16,this.set_type=function(t){m[this.ptr+4>>2]=t},this.get_type=function(){return m[this.ptr+4>>2]},this.set_destructor=function(t){m[this.ptr+8>>2]=t},this.get_destructor=function(){return m[this.ptr+8>>2]},this.set_refcount=function(t){m[this.ptr>>2]=t},this.set_caught=function(t){t=t?1:0,oe[this.ptr+12>>0]=t},this.get_caught=function(){return oe[this.ptr+12>>0]!=0},this.set_rethrown=function(t){t=t?1:0,oe[this.ptr+13>>0]=t},this.get_rethrown=function(){return oe[this.ptr+13>>0]!=0},this.init=function(t,r){this.set_type(t),this.set_destructor(r),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){let t=m[this.ptr>>2];m[this.ptr>>2]=t+1},this.release_ref=function(){let t=m[this.ptr>>2];return m[this.ptr>>2]=t-1,M(t>0),t===1}}function rr(e){this.free=function(){ut(this.ptr),this.ptr=0},this.set_base_ptr=function(t){m[this.ptr>>2]=t},this.get_base_ptr=function(){return m[this.ptr>>2]},this.set_adjusted_ptr=function(t){m[this.ptr+4>>2]=t},this.get_adjusted_ptr_addr=function(){return this.ptr+4},this.get_adjusted_ptr=function(){return m[this.ptr+4>>2]},this.get_exception_ptr=function(){if(aa(this.get_exception_info().get_type()))return m[this.get_base_ptr()>>2];let r=this.get_adjusted_ptr();return r!==0?r:this.get_base_ptr()},this.get_exception_info=function(){return new Lt(this.get_base_ptr())},e===void 0?(this.ptr=Jt(8),this.set_adjusted_ptr(0)):this.ptr=e}let Fe=[];function zn(e){e.add_ref()}let nr=0;function Vr(e){let t=new rr(e),r=t.get_exception_info();return r.get_caught()||(r.set_caught(!0),nr--),r.set_rethrown(!1),Fe.push(t),zn(r),t.get_exception_ptr()}let ke=0;function $r(e){try{return ut(new Lt(e).ptr)}catch(t){Z(`exception during cxa_free_exception: ${t}`)}}function zr(e){if(e.release_ref()&&!e.get_rethrown()){let t=e.get_destructor();t&&v.get(t)(e.excPtr),$r(e.excPtr)}}function pr(){H(0),M(Fe.length>0);let e=Fe.pop();zr(e.get_exception_info()),e.free(),ke=0}function Zn(e){let t=new rr(e),r=t.get_base_ptr();throw ke||(ke=r),t.free(),`${r} - Exception catching is disabled, this exception cannot be caught. Compile with -s NO_DISABLE_EXCEPTION_CATCHING or -s EXCEPTION_CATCHING_ALLOWED=[..] to catch.`}function Zr(){let e=ke;if(!e)return Ye(0),0;let r=new Lt(e).get_type(),A=new rr;if(A.set_base_ptr(e),A.set_adjusted_ptr(e),!r)return Ye(0),A.ptr|0;let i=Array.prototype.slice.call(arguments);for(let o=0;o>2]=e,e}var ee={splitPath(e){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)},normalizeArray(e,t){let r=0;for(let A=e.length-1;A>=0;A--){let i=e[A];i==="."?e.splice(A,1):i===".."?(e.splice(A,1),r++):r&&(e.splice(A,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize(e){let t=e.charAt(0)==="/",r=e.substr(-1)==="/";return e=ee.normalizeArray(e.split("/").filter(A=>!!A),!t).join("/"),!e&&!t&&(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname(e){let t=ee.splitPath(e),r=t[0],A=t[1];return!r&&!A?".":(A&&(A=A.substr(0,A.length-1)),r+A)},basename(e){if(e==="/")return"/";e=ee.normalize(e),e=e.replace(/\/$/,"");let t=e.lastIndexOf("/");return t===-1?e:e.substr(t+1)},extname(e){return ee.splitPath(e)[3]},join(){let e=Array.prototype.slice.call(arguments,0);return ee.normalize(e.join("/"))},join2(e,t){return ee.normalize(`${e}/${t}`)}};function We(){if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function"){let e=new Uint8Array(1);return function(){return crypto.getRandomValues(e),e[0]}}if(ht)try{let e=Cc("crypto");return function(){return e.randomBytes(1)[0]}}catch(e){}return function(){u("no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };")}}var Ue={resolve(){let e="",t=!1;for(let r=arguments.length-1;r>=-1&&!t;r--){let A=r>=0?arguments[r]:a.cwd();if(typeof A!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!A)return"";e=`${A}/${e}`,t=A.charAt(0)==="/"}return e=ee.normalizeArray(e.split("/").filter(r=>!!r),!t).join("/"),(t?"/":"")+e||"."},relative(e,t){e=Ue.resolve(e).substr(1),t=Ue.resolve(t).substr(1);function r(E){let I=0;for(;I=0&&E[B]==="";B--);return I>B?[]:E.slice(I,B-I+1)}let A=r(e.split("/")),i=r(t.split("/")),o=Math.min(A.length,i.length),s=o;for(var c=0;c0?t=A.slice(0,i).toString("utf-8"):t=null}else typeof window!="undefined"&&typeof window.prompt=="function"?(t=window.prompt("Input: "),t!==null&&(t+=` `)):typeof readline=="function"&&(t=readline(),t!==null&&(t+=` `));if(!t)return null;e.input=wn(t,!0)}return e.input.shift()},put_char(e,t){t===null||t===10?(ye(Qt(e.output,0)),e.output=[]):t!=0&&e.output.push(t)},flush(e){e.output&&e.output.length>0&&(ye(Qt(e.output,0)),e.output=[])}},default_tty1_ops:{put_char(e,t){t===null||t===10?(Z(Qt(e.output,0)),e.output=[]):t!=0&&e.output.push(t)},flush(e){e.output&&e.output.length>0&&(Z(Qt(e.output,0)),e.output=[])}}};function rA(e,t){le.fill(0,e,e+t)}function gt(e,t){return M(t,"alignment argument is required"),Math.ceil(e/t)*t}function tn(e){e=gt(e,65536);let t=ca(65536,e);return t?(rA(t,e),t):0}var W={ops_table:null,mount(e){return W.createNode(null,"/",16895,0)},createNode(e,t,r,A){if(a.isBlkdev(r)||a.isFIFO(r))throw new a.ErrnoError(63);W.ops_table||(W.ops_table={dir:{node:{getattr:W.node_ops.getattr,setattr:W.node_ops.setattr,lookup:W.node_ops.lookup,mknod:W.node_ops.mknod,rename:W.node_ops.rename,unlink:W.node_ops.unlink,rmdir:W.node_ops.rmdir,readdir:W.node_ops.readdir,symlink:W.node_ops.symlink},stream:{llseek:W.stream_ops.llseek}},file:{node:{getattr:W.node_ops.getattr,setattr:W.node_ops.setattr},stream:{llseek:W.stream_ops.llseek,read:W.stream_ops.read,write:W.stream_ops.write,allocate:W.stream_ops.allocate,mmap:W.stream_ops.mmap,msync:W.stream_ops.msync}},link:{node:{getattr:W.node_ops.getattr,setattr:W.node_ops.setattr,readlink:W.node_ops.readlink},stream:{}},chrdev:{node:{getattr:W.node_ops.getattr,setattr:W.node_ops.setattr},stream:a.chrdev_stream_ops}});let i=a.createNode(e,t,r,A);return a.isDir(i.mode)?(i.node_ops=W.ops_table.dir.node,i.stream_ops=W.ops_table.dir.stream,i.contents={}):a.isFile(i.mode)?(i.node_ops=W.ops_table.file.node,i.stream_ops=W.ops_table.file.stream,i.usedBytes=0,i.contents=null):a.isLink(i.mode)?(i.node_ops=W.ops_table.link.node,i.stream_ops=W.ops_table.link.stream):a.isChrdev(i.mode)&&(i.node_ops=W.ops_table.chrdev.node,i.stream_ops=W.ops_table.chrdev.stream),i.timestamp=Date.now(),e&&(e.contents[t]=i,e.timestamp=i.timestamp),i},getFileDataAsTypedArray(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage(e,t){let r=e.contents?e.contents.length:0;if(r>=t)return;let A=1024*1024;t=Math.max(t,r*(r>>0),r!=0&&(t=Math.max(t,256));let i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)},resizeFileStorage(e,t){if(e.usedBytes!=t)if(t==0)e.contents=null,e.usedBytes=0;else{let r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr(e){let t={};return t.dev=a.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,a.isDir(e.mode)?t.size=4096:a.isFile(e.mode)?t.size=e.usedBytes:a.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr(e,t){t.mode!==void 0&&(e.mode=t.mode),t.timestamp!==void 0&&(e.timestamp=t.timestamp),t.size!==void 0&&W.resizeFileStorage(e,t.size)},lookup(e,t){throw a.genericErrors[44]},mknod(e,t,r,A){return W.createNode(e,t,r,A)},rename(e,t,r){if(a.isDir(e.mode)){let A;try{A=a.lookupNode(t,r)}catch(i){}if(A)for(let i in A.contents)throw new a.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir(e,t){let r=a.lookupNode(e,t);for(let A in r.contents)throw new a.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir(e){let t=[".",".."];for(let r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink(e,t,r){let A=W.createNode(e,t,41471,0);return A.link=r,A},readlink(e){if(!a.isLink(e.mode))throw new a.ErrnoError(28);return e.link}},stream_ops:{read(e,t,r,A,i){let{contents:o}=e.node;if(i>=e.node.usedBytes)return 0;let s=Math.min(e.node.usedBytes-i,A);if(M(s>=0),s>8&&o.subarray)t.set(o.subarray(i,i+s),r);else for(let c=0;c0||A+r{M(o,`Loading data file "${e}" failed (no arrayBuffer).`),t(new Uint8Array(o)),i&&Ze(i)},o=>{if(r)r();else throw`Loading data file "${e}" failed.`}),i&&Tt(i)}let nA={0:"Success",1:"Arg list too long",2:"Permission denied",3:"Address already in use",4:"Address not available",5:"Address family not supported by protocol family",6:"No more processes",7:"Socket already connected",8:"Bad file number",9:"Trying to read unreadable message",10:"Mount device busy",11:"Operation canceled",12:"No children",13:"Connection aborted",14:"Connection refused",15:"Connection reset by peer",16:"File locking deadlock error",17:"Destination address required",18:"Math arg out of domain of func",19:"Quota exceeded",20:"File exists",21:"Bad address",22:"File too large",23:"Host is unreachable",24:"Identifier removed",25:"Illegal byte sequence",26:"Connection already in progress",27:"Interrupted system call",28:"Invalid argument",29:"I/O error",30:"Socket is already connected",31:"Is a directory",32:"Too many symbolic links",33:"Too many open files",34:"Too many links",35:"Message too long",36:"Multihop attempted",37:"File or path name too long",38:"Network interface is not configured",39:"Connection reset by network",40:"Network is unreachable",41:"Too many open files in system",42:"No buffer space available",43:"No such device",44:"No such file or directory",45:"Exec format error",46:"No record locks available",47:"The link has been severed",48:"Not enough core",49:"No message of desired type",50:"Protocol not available",51:"No space left on device",52:"Function not implemented",53:"Socket is not connected",54:"Not a directory",55:"Directory not empty",56:"State not recoverable",57:"Socket operation on non-socket",59:"Not a typewriter",60:"No such device or address",61:"Value too large for defined data type",62:"Previous owner died",63:"Not super-user",64:"Broken pipe",65:"Protocol error",66:"Unknown protocol",67:"Protocol wrong type for socket",68:"Math result not representable",69:"Read only file system",70:"Illegal seek",71:"No such process",72:"Stale file handle",73:"Connection timed out",74:"Text file busy",75:"Cross-device link",100:"Device not a stream",101:"Bad font file fmt",102:"Invalid slot",103:"Invalid request code",104:"No anode",105:"Block device required",106:"Channel number out of range",107:"Level 3 halted",108:"Level 3 reset",109:"Link number out of range",110:"Protocol driver not attached",111:"No CSI structure available",112:"Level 2 halted",113:"Invalid exchange",114:"Invalid request descriptor",115:"Exchange full",116:"No data (for no delay io)",117:"Timer expired",118:"Out of streams resources",119:"Machine is not on the network",120:"Package not installed",121:"The object is remote",122:"Advertise error",123:"Srmount error",124:"Communication error on send",125:"Cross mount point (not really error)",126:"Given log. name not unique",127:"f.d. invalid for this operation",128:"Remote address changed",129:"Can access a needed shared lib",130:"Accessing a corrupted shared lib",131:".lib section in a.out corrupted",132:"Attempting to link in too many libs",133:"Attempting to exec a shared library",135:"Streams pipe error",136:"Too many users",137:"Socket type not supported",138:"Not supported",139:"Protocol family not supported",140:"Can't send after socket shutdown",141:"Too many references",142:"Host is down",148:"No medium (in tape drive)",156:"Level 2 not synchronized"},rn={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 a={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(e,t){if(e=Ue.resolve(a.cwd(),e),t=t||{},!e)return{path:"",node:null};let r={follow_mount:!0,recurse_count:0};for(let s in r)t[s]===void 0&&(t[s]=r[s]);if(t.recurse_count>8)throw new a.ErrnoError(32);let A=ee.normalizeArray(e.split("/").filter(s=>!!s),!1),i=a.root,o="/";for(let s=0;s40)throw new a.ErrnoError(32)}}}return{path:o,node:i}},getPath(e){let t;for(;;){if(a.isRoot(e)){let r=e.mount.mountpoint;return t?r[r.length-1]!=="/"?`${r}/${t}`:r+t:r}t=t?`${e.name}/${t}`:e.name,e=e.parent}},hashName(e,t){let r=0;for(let A=0;A>>0)%a.nameTable.length},hashAddNode(e){let t=a.hashName(e.parent.id,e.name);e.name_next=a.nameTable[t],a.nameTable[t]=e},hashRemoveNode(e){let t=a.hashName(e.parent.id,e.name);if(a.nameTable[t]===e)a.nameTable[t]=e.name_next;else{let r=a.nameTable[t];for(;r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}}},lookupNode(e,t){let r=a.mayLookup(e);if(r)throw new a.ErrnoError(r,e);let A=a.hashName(e.id,t);for(let i=a.nameTable[A];i;i=i.name_next){let o=i.name;if(i.parent.id===e.id&&o===t)return i}return a.lookup(e,t)},createNode(e,t,r,A){M(typeof e=="object");let i=new a.FSNode(e,t,r,A);return a.hashAddNode(i),i},destroyNode(e){a.hashRemoveNode(e)},isRoot(e){return e===e.parent},isMountpoint(e){return!!e.mounted},isFile(e){return(e&61440)===32768},isDir(e){return(e&61440)===16384},isLink(e){return(e&61440)===40960},isChrdev(e){return(e&61440)===8192},isBlkdev(e){return(e&61440)===24576},isFIFO(e){return(e&61440)===4096},isSocket(e){return(e&49152)===49152},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags(e){let t=a.flagModes[e];if(typeof t=="undefined")throw new Error(`Unknown file open mode: ${e}`);return t},flagsToPermissionString(e){let t=["r","w","rw"][e&3];return e&512&&(t+="w"),t},nodePermissions(e,t){return a.ignorePermissions?0:t.includes("r")&&!(e.mode&292)||t.includes("w")&&!(e.mode&146)||t.includes("x")&&!(e.mode&73)?2:0},mayLookup(e){let t=a.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){try{let r=a.lookupNode(e,t);return 20}catch(r){}return a.nodePermissions(e,"wx")},mayDelete(e,t,r){let A;try{A=a.lookupNode(e,t)}catch(o){return o.errno}let i=a.nodePermissions(e,"wx");if(i)return i;if(r){if(!a.isDir(A.mode))return 54;if(a.isRoot(A)||a.getPath(A)===a.cwd())return 10}else if(a.isDir(A.mode))return 31;return 0},mayOpen(e,t){return e?a.isLink(e.mode)?32:a.isDir(e.mode)&&(a.flagsToPermissionString(t)!=="r"||t&512)?31:a.nodePermissions(e,a.flagsToPermissionString(t)):44},MAX_OPEN_FDS:4096,nextfd(e,t){e=e||0,t=t||a.MAX_OPEN_FDS;for(let r=e;r<=t;r++)if(!a.streams[r])return r;throw new a.ErrnoError(33)},getStream(e){return a.streams[e]},createStream(e,t,r){a.FSStream||(a.FSStream=function(){},a.FSStream.prototype={object:{get(){return this.node},set(o){this.node=o}},isRead:{get(){return(this.flags&2097155)!==1}},isWrite:{get(){return(this.flags&2097155)!==0}},isAppend:{get(){return this.flags&1024}}});let A=new a.FSStream;for(let o in e)A[o]=e[o];e=A;let i=a.nextfd(t,r);return e.fd=i,a.streams[i]=e,e},closeStream(e){a.streams[e]=null},chrdev_stream_ops:{open(e){let t=a.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek(){throw new a.ErrnoError(70)}},major(e){return e>>8},minor(e){return e&255},makedev(e,t){return e<<8|t},registerDevice(e,t){a.devices[e]={stream_ops:t}},getDevice(e){return a.devices[e]},getMounts(e){let t=[],r=[e];for(;r.length;){let A=r.pop();t.push(A),r.push.apply(r,A.mounts)}return t},syncfs(e,t){typeof e=="function"&&(t=e,e=!1),a.syncFSRequests++,a.syncFSRequests>1&&Z(`warning: ${a.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);let r=a.getMounts(a.root.mount),A=0;function i(s){return M(a.syncFSRequests>0),a.syncFSRequests--,t(s)}function o(s){if(s)return o.errored?void 0:(o.errored=!0,i(s));++A>=r.length&&i(null)}r.forEach(s=>{if(!s.type.syncfs)return o(null);s.type.syncfs(s,e,o)})},mount(e,t,r){if(typeof e=="string")throw e;let A=r==="/",i=!r,o;if(A&&a.root)throw new a.ErrnoError(10);if(!A&&!i){let d=a.lookupPath(r,{follow_mount:!1});if(r=d.path,o=d.node,a.isMountpoint(o))throw new a.ErrnoError(10);if(!a.isDir(o.mode))throw new a.ErrnoError(54)}let s={type:e,opts:t,mountpoint:r,mounts:[]},c=e.mount(s);return c.mount=s,s.root=c,A?a.root=c:o&&(o.mounted=s,o.mount&&o.mount.mounts.push(s)),c},unmount(e){let t=a.lookupPath(e,{follow_mount:!1});if(!a.isMountpoint(t.node))throw new a.ErrnoError(28);let{node:r}=t,A=r.mounted,i=a.getMounts(A);Object.keys(a.nameTable).forEach(s=>{let c=a.nameTable[s];for(;c;){let d=c.name_next;i.includes(c.mount)&&a.destroyNode(c),c=d}}),r.mounted=null;let o=r.mount.mounts.indexOf(A);M(o!==-1),r.mount.mounts.splice(o,1)},lookup(e,t){return e.node_ops.lookup(e,t)},mknod(e,t,r){let i=a.lookupPath(e,{parent:!0}).node,o=ee.basename(e);if(!o||o==="."||o==="..")throw new a.ErrnoError(28);let s=a.mayCreate(i,o);if(s)throw new a.ErrnoError(s);if(!i.node_ops.mknod)throw new a.ErrnoError(63);return i.node_ops.mknod(i,o,t,r)},create(e,t){return t=t!==void 0?t:438,t&=4095,t|=32768,a.mknod(e,t,0)},mkdir(e,t){return t=t!==void 0?t:511,t&=1023,t|=16384,a.mknod(e,t,0)},mkdirTree(e,t){let r=e.split("/"),A="";for(let i=0;i{a.genericErrors[e]=new a.ErrnoError(e),a.genericErrors[e].stack=""}))},staticInit(){a.ensureErrnoError(),a.nameTable=new Array(4096),a.mount(W,{},"/"),a.createDefaultDirectories(),a.createDefaultDevices(),a.createSpecialDirectories(),a.filesystems={MEMFS:W}},init(e,t,r){M(!a.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)"),a.init.initialized=!0,a.ensureErrnoError(),n.stdin=e||n.stdin,n.stdout=t||n.stdout,n.stderr=r||n.stderr,a.createStandardStreams()},quit(){a.init.initialized=!1;let e=n._fflush;e&&e(0);for(let t=0;tthis.length-1||B<0)return;let h=B%this.chunkSize,_=B/this.chunkSize|0;return this.getter(_)[h]},o.prototype.setDataGetter=function(B){this.getter=B},o.prototype.cacheLength=function(){let B=new XMLHttpRequest;if(B.open("HEAD",r,!1),B.send(null),!(B.status>=200&&B.status<300||B.status===304))throw new Error(`Couldn't load ${r}. Status: ${B.status}`);let h=Number(B.getResponseHeader("Content-length")),_,O=(_=B.getResponseHeader("Accept-Ranges"))&&_==="bytes",U=(_=B.getResponseHeader("Content-Encoding"))&&_==="gzip",Y=1024*1024;O||(Y=h);let q=function(F,te){if(F>te)throw new Error(`invalid range (${F}, ${te}) or no bytes requested!`);if(te>h-1)throw new Error(`only ${h} bytes available! programmer error!`);let x=new XMLHttpRequest;if(x.open("GET",r,!1),h!==Y&&x.setRequestHeader("Range",`bytes=${F}-${te}`),typeof Uint8Array!="undefined"&&(x.responseType="arraybuffer"),x.overrideMimeType&&x.overrideMimeType("text/plain; charset=x-user-defined"),x.send(null),!(x.status>=200&&x.status<300||x.status===304))throw new Error(`Couldn't load ${r}. Status: ${x.status}`);return x.response!==void 0?new Uint8Array(x.response||[]):wn(x.responseText||"",!0)},D=this;D.setDataGetter(F=>{let te=F*Y,x=(F+1)*Y-1;if(x=Math.min(x,h-1),typeof D.chunks[F]=="undefined"&&(D.chunks[F]=q(te,x)),typeof D.chunks[F]=="undefined")throw new Error("doXHR failed!");return D.chunks[F]}),(U||!h)&&(Y=h=1,h=this.getter(0).length,Y=h,ye("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=h,this._chunkSize=Y,this.lengthKnown=!0},typeof XMLHttpRequest!="undefined"){if(!Je)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";let I=new o;Object.defineProperties(I,{length:{get(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var s={isDevice:!1,contents:I}}else var s={isDevice:!1,url:r};let c=a.createFile(e,t,s,A,i);s.contents?c.contents=s.contents:s.url&&(c.contents=null,c.url=s.url),Object.defineProperties(c,{usedBytes:{get(){return this.contents.length}}});let d={};return Object.keys(c.stream_ops).forEach(I=>{let B=c.stream_ops[I];d[I]=function(){return a.forceLoadFile(c),B.apply(null,arguments)}}),d.read=function(B,h,_,O,U){a.forceLoadFile(c);let{contents:Y}=B.node;if(U>=Y.length)return 0;let q=Math.min(Y.length-U,O);if(M(q>=0),Y.slice)for(var D=0;D{U||Y.canHandle(I)&&(Y.handle(_,I,O,()=>{s&&s(),Ze(B)}),U=!0)}),U||O(_)}Tt(B),typeof r=="string"?Br(r,_=>{h(_)},s):h(r)},indexedDB(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME(){return`EM_FS_${window.location.pathname}`},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB(e,t,r){t=t||function(){},r=r||function(){};let A=a.indexedDB();try{var i=A.open(a.DB_NAME(),a.DB_VERSION)}catch(o){return r(o)}i.onupgradeneeded=function(){ye("creating db"),i.result.createObjectStore(a.DB_STORE_NAME)},i.onsuccess=function(){let c=i.result.transaction([a.DB_STORE_NAME],"readwrite"),d=c.objectStore(a.DB_STORE_NAME),E=0,I=0,B=e.length;function h(){I==0?t():r()}e.forEach(_=>{let O=d.put(a.analyzePath(_).object.contents,_);O.onsuccess=function(){E++,E+I==B&&h()},O.onerror=function(){I++,E+I==B&&h()}}),c.onerror=r},i.onerror=r},loadFilesFromDB(e,t,r){t=t||function(){},r=r||function(){};let A=a.indexedDB();try{var i=A.open(a.DB_NAME(),a.DB_VERSION)}catch(o){return r(o)}i.onupgradeneeded=r,i.onsuccess=function(){let s=i.result;try{var c=s.transaction([a.DB_STORE_NAME],"readonly")}catch(_){r(_);return}let d=c.objectStore(a.DB_STORE_NAME),E=0,I=0,B=e.length;function h(){I==0?t():r()}e.forEach(_=>{let O=d.get(_);O.onsuccess=function(){a.analyzePath(_).exists&&a.unlink(_),a.createDataFile(ee.dirname(_),ee.basename(_),O.result,!0,!0,!0),E++,E+I==B&&h()},O.onerror=function(){I++,E+I==B&&h()}}),c.onerror=r},i.onerror=r},absolutePath(){u("FS.absolutePath has been removed; use PATH_FS.resolve instead")},createFolder(){u("FS.createFolder has been removed; use FS.mkdir instead")},createLink(){u("FS.createLink has been removed; use FS.symlink instead")},joinPath(){u("FS.joinPath has been removed; use PATH.join instead")},mmapAlloc(){u("FS.mmapAlloc has been replaced by the top level function mmapAlloc")},standardizePath(){u("FS.standardizePath has been removed; use PATH.normalize instead")}},ie={mappings:{},DEFAULT_POLLMASK:5,umask:511,calculateAt(e,t,r){if(t[0]==="/")return t;let A;if(e===-100)A=a.cwd();else{let i=a.getStream(e);if(!i)throw new a.ErrnoError(8);A=i.path}if(t.length==0){if(!r)throw new a.ErrnoError(44);return A}return ee.join2(A,t)},doStat(e,t,r){try{var A=e(t)}catch(i){if(i&&i.node&&ee.normalize(t)!==ee.normalize(a.getPath(i.node)))return-54;throw i}return m[r>>2]=A.dev,m[r+4>>2]=0,m[r+8>>2]=A.ino,m[r+12>>2]=A.mode,m[r+16>>2]=A.nlink,m[r+20>>2]=A.uid,m[r+24>>2]=A.gid,m[r+28>>2]=A.rdev,m[r+32>>2]=0,Me=[A.size>>>0,(Ee=A.size,+Math.abs(Ee)>=1?Ee>0?(Math.min(+Math.floor(Ee/4294967296),4294967295)|0)>>>0:~~+Math.ceil((Ee-+(~~Ee>>>0))/4294967296)>>>0:0)],m[r+40>>2]=Me[0],m[r+44>>2]=Me[1],m[r+48>>2]=4096,m[r+52>>2]=A.blocks,m[r+56>>2]=A.atime.getTime()/1e3|0,m[r+60>>2]=0,m[r+64>>2]=A.mtime.getTime()/1e3|0,m[r+68>>2]=0,m[r+72>>2]=A.ctime.getTime()/1e3|0,m[r+76>>2]=0,Me=[A.ino>>>0,(Ee=A.ino,+Math.abs(Ee)>=1?Ee>0?(Math.min(+Math.floor(Ee/4294967296),4294967295)|0)>>>0:~~+Math.ceil((Ee-+(~~Ee>>>0))/4294967296)>>>0:0)],m[r+80>>2]=Me[0],m[r+84>>2]=Me[1],0},doMsync(e,t,r,A,i){let o=le.slice(e,e+r);a.msync(t,o,i,r,A)},doMkdir(e,t){return e=ee.normalize(e),e[e.length-1]==="/"&&(e=e.substr(0,e.length-1)),a.mkdir(e,t,0),0},doMknod(e,t,r){switch(t&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return a.mknod(e,t,r),0},doReadlink(e,t,r){if(r<=0)return-28;let A=a.readlink(e),i=Math.min(r,yt(A)),o=oe[t+i];return it(A,t,r+1),oe[t+i]=o,i},doAccess(e,t){if(t&-8)return-28;let r;if(r=a.lookupPath(e,{follow:!0}).node,!r)return-44;let i="";return t&4&&(i+="r"),t&2&&(i+="w"),t&1&&(i+="x"),i&&a.nodePermissions(r,i)?-2:0},doDup(e,t,r){let A=a.getStream(r);return A&&a.close(A),a.open(e,t,0,r,r).fd},doReadv(e,t,r,A){let i=0;for(let o=0;o>2],c=m[t+(o*8+4)>>2],d=a.read(e,oe,s,c,A);if(d<0)return-1;if(i+=d,d>2],c=m[t+(o*8+4)>>2],d=a.write(e,oe,s,c,A);if(d<0)return-1;i+=d}return i},varargs:void 0,get(){return M(ie.varargs!=null),ie.varargs+=4,m[ie.varargs-4>>2]},getStr(e){return de(e)},getStreamFromFD(e){let t=a.getStream(e);if(!t)throw new a.ErrnoError(8);return t},get64(e,t){return e>=0?M(t===0):M(t===-1),e}};function AA(e,t,r){ie.varargs=r;try{let i=ie.getStreamFromFD(e);switch(t){case 0:{var A=ie.get();if(A<0)return-28;let o;return o=a.open(i.path,i.flags,0,A),o.fd}case 1:case 2:return 0;case 3:return i.flags;case 4:{var A=ie.get();return i.flags|=A,0}case 12:{var A=ie.get();let s=0;return ot[A+s>>1]=2,0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:return en(28),-1;default:return-28}}catch(i){return(typeof a=="undefined"||!(i instanceof a.ErrnoError))&&u(i),-i.errno}}function iA(e,t,r){ie.varargs=r;try{let i=ie.getStreamFromFD(e);switch(t){case 21509:case 21505:return i.tty?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return i.tty?0:-59;case 21519:{if(!i.tty)return-59;var A=ie.get();return m[A>>2]=0,0}case 21520:return i.tty?-28:-59;case 21531:{var A=ie.get();return a.ioctl(i,t,A)}case 21523:return i.tty?0:-59;case 21524:return i.tty?0:-59;default:u(`bad ioctl syscall ${t}`)}}catch(i){return(typeof a=="undefined"||!(i instanceof a.ErrnoError))&&u(i),-i.errno}}function oA(e,t,r,A,i,o){o<<=12;let s,c=!1;if(A&16&&e%65536!==0)return-28;if(A&32){if(s=tn(t),!s)return-48;c=!0}else{let d=a.getStream(i);if(!d)return-8;let E=a.mmap(d,e,t,o,r,A);s=E.ptr,c=E.allocated}return ie.mappings[s]={malloc:s,len:t,allocated:c,fd:i,prot:r,flags:A,offset:o},s}function sA(e,t,r,A,i,o){try{return oA(e,t,r,A,i,o)}catch(s){return(typeof a=="undefined"||!(s instanceof a.ErrnoError))&&u(s),-s.errno}}function nn(e,t,r){ie.varargs=r;try{let A=ie.getStr(e),i=r?ie.get():0;return a.open(A,t,i).fd}catch(A){return(typeof a=="undefined"||!(A instanceof a.ErrnoError))&&u(A),-A.errno}}function aA(e,t){try{return e=ie.getStr(e),ie.doStat(a.stat,e,t)}catch(r){return(typeof a=="undefined"||!(r instanceof a.ErrnoError))&&u(r),-r.errno}}let cA=48,gA=57;function Gt(e){if(e===void 0)return"_unknown";e=e.replace(/[^a-zA-Z0-9_]/g,"$");let t=e.charCodeAt(0);return t>=cA&&t<=gA?`_${e}`:e}function Ar(e,t){return e=Gt(e),new Function("body",`return function ${e}() { "use strict"; return body.apply(this, arguments); }; `)(t)}let hr=[],ve=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function lA(){let e=0;for(let t=5;t{for(let r=t.next();!r.done;r=t.next()){let A=r.value;A.ptr?BA(A):console.warn(`object already deleted: ${A.ptr}`)}}),rt=function(t){return Le.register(t,t.$$,t.$$),t},Ht=function(t){Le.unregister(t.$$)},rt(e))}function an(e,t,r){e=ue(e),t=Dr(t,"wrapper"),r=on(r);let A=[].slice,{registeredClass:i}=t,o=i.instancePrototype,{baseClass:s}=i,c=s.instancePrototype,d=i.baseClass.constructor,E=Ar(e,function(){i.baseClass.pureVirtualFunctions.forEach(I=>{if(this[I]===c[I])throw new An(`Pure virtual function ${I} must be implemented in JavaScript`)}),Object.defineProperty(this,"__parent",{value:o}),this.__construct.apply(this,A.call(arguments))});o.__construct=function(){this===o&&J("Pass correct 'this' to __construct");let B=d.implement.apply(void 0,[this].concat(A.call(arguments)));Ht(B);let{$$:h}=B;B.notifyOnDestruction(),h.preservePointerOnDelete=!0,Object.defineProperties(this,{$$:{value:h}}),rt(this),pA(i,h.ptr,this)},o.__destruct=function(){this===o&&J("Pass correct 'this' to __destruct"),Ht(this),wr(i,this.$$.ptr)},E.prototype=Object.create(o);for(let I in r)E.prototype[I]=r[I];return ir(E)}let l={};function g(e){for(;e.length;){let t=e.pop();e.pop()(t)}}function f(e){return this.fromWireType(Ae[e>>2])}let p={},w={},S;function P(e){throw new S(e)}function b(e,t,r){e.forEach(c=>{w[c]=t});function A(c){let d=r(c);d.length!==e.length&&P("Mismatched type converter count");for(let E=0;E{Ct.hasOwnProperty(c)?i[d]=Ct[c]:(o.push(c),p.hasOwnProperty(c)||(p[c]=[]),p[c].push(()=>{i[d]=Ct[c],++s,s===o.length&&A(i)}))}),o.length===0&&A(i)}function N(e){let t=l[e];delete l[e];let{rawConstructor:r}=t,{rawDestructor:A}=t,i=t.fields,o=i.map(s=>s.getterReturnType).concat(i.map(s=>s.setterArgumentType));b([e],o,s=>{let c={};return i.forEach((d,E)=>{let{fieldName:I}=d,B=s[E],{getter:h}=d,{getterContext:_}=d,O=s[E+i.length],{setter:U}=d,{setterContext:Y}=d;c[I]={read(q){return B.fromWireType(h(_,q))},write(q,D){let F=[];U(Y,q,O.toWireType(F,D)),g(F)}}}),[{name:t.name,fromWireType(d){let E={};for(let I in c)E[I]=c[I].read(d);return A(d),E},toWireType(d,E){for(var I in c)if(!(I in E))throw new TypeError(`Missing field: "${I}"`);let B=r();for(I in c)c[I].write(B,E[I]);return d!==null&&d.push(A,B),B},argPackAdvance:8,readValueFromPointer:f,destructorFunction:A}]})}function L(e,t,r,A,i){}function k(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(`Unknown type size: ${e}`)}}function K(e,t,r){if(r=r||{},!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");let{name:A}=t;if(e||J(`type "${A}" must have a positive integer typeid pointer`),Ct.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;J(`Cannot register type '${A}' twice`)}if(Ct[e]=t,delete w[e],p.hasOwnProperty(e)){let i=p[e];delete p[e],i.forEach(o=>{o()})}}function re(e,t,r,A,i){let o=k(r);t=ue(t),K(e,{name:t,fromWireType(s){return!!s},toWireType(s,c){return c?A:i},argPackAdvance:8,readValueFromPointer(s){let c;if(r===1)c=oe;else if(r===2)c=ot;else if(r===4)c=m;else throw new TypeError(`Unknown boolean type size: ${t}`);return this.fromWireType(c[s>>o])},destructorFunction:null})}function ne(e){if(!(this instanceof Be)||!(e instanceof Be))return!1;let t=this.$$.ptrType.registeredClass,r=this.$$.ptr,A=e.$$.ptrType.registeredClass,i=e.$$.ptr;for(;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;A.baseClass;)i=A.upcast(i),A=A.baseClass;return t===A&&r===i}function fe(e){return{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}}function De(e){function t(r){return r.$$.ptrType.registeredClass.name}J(`${t(e)} instance already deleted`)}function Oe(){if(this.$$.ptr||De(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;let e=rt(Object.create(Object.getPrototypeOf(this),{$$:{value:fe(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e}function Qe(){this.$$.ptr||De(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&J("Object already scheduled for deletion"),Ht(this),BA(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function pt(){return!this.$$.ptr}function _e(){return this.$$.ptr||De(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&J("Object already scheduled for deletion"),It.push(this),It.length===1&&jt&&jt(_r),this.$$.deleteScheduled=!0,this}function br(){Be.prototype.isAliasOf=ne,Be.prototype.clone=Oe,Be.prototype.delete=Qe,Be.prototype.isDeleted=pt,Be.prototype.deleteLater=_e}function Be(){}let Yt={};function sr(e,t,r){if(e[t].overloadTable===void 0){let A=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||J(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[t].overloadTable})!`),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[A.argCount]=A}}function Tr(e,t,r){n.hasOwnProperty(e)?((r===void 0||n[e].overloadTable!==void 0&&n[e].overloadTable[r]!==void 0)&&J(`Cannot register public name '${e}' twice`),sr(n,e,e),n.hasOwnProperty(r)&&J(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),n[e].overloadTable[r]=t):(n[e]=t,r!==void 0&&(n[e].numArguments=r))}function Or(e,t,r,A,i,o,s,c){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=A,this.baseClass=i,this.getActualType=o,this.upcast=s,this.downcast=c,this.pureVirtualFunctions=[]}function Xt(e,t,r){for(;t!==r;)t.upcast||J(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e}function li(e,t){if(t===null)return this.isReference&&J(`null is not a valid ${this.name}`),0;t.$$||J(`Cannot pass "${ar(t)}" as a ${this.name}`),t.$$.ptr||J(`Cannot pass deleted object as a pointer of type ${this.name}`);let r=t.$$.ptrType.registeredClass;return Xt(t.$$.ptr,r,this.registeredClass)}function ui(e,t){let r;if(t===null)return this.isReference&&J(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),e!==null&&e.push(this.rawDestructor,r),r):0;t.$$||J(`Cannot pass "${ar(t)}" as a ${this.name}`),t.$$.ptr||J(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&J(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);let A=t.$$.ptrType.registeredClass;if(r=Xt(t.$$.ptr,A,this.registeredClass),this.isSmartPointer)switch(t.$$.smartPtr===void 0&&J("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:J(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{let i=t.clone();r=this.rawShare(r,ir(()=>{i.delete()})),e!==null&&e.push(this.rawDestructor,r)}break;default:J("Unsupporting sharing policy")}return r}function di(e,t){if(t===null)return this.isReference&&J(`null is not a valid ${this.name}`),0;t.$$||J(`Cannot pass "${ar(t)}" as a ${this.name}`),t.$$.ptr||J(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&J(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);let r=t.$$.ptrType.registeredClass;return Xt(t.$$.ptr,r,this.registeredClass)}function Ei(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function fi(e){this.rawDestructor&&this.rawDestructor(e)}function Ii(e){e!==null&&e.delete()}function vA(e,t,r){if(t===r)return e;if(r.baseClass===void 0)return null;let A=vA(e,t,r.baseClass);return A===null?null:r.downcast(A)}function Ci(e,t){return t=yr(e,t),tt[t]}function cn(e,t){(!t.ptrType||!t.ptr)&&P("makeClassHandle requires ptr and ptrType");let r=!!t.smartPtrType,A=!!t.smartPtr;return r!==A&&P("Both smartPtrType and smartPtr must be specified"),t.count={value:1},rt(Object.create(e,{$$:{value:t}}))}function pi(e){let t=this.getPointee(e);if(!t)return this.destructor(e),null;let r=Ci(this.registeredClass,t);if(r!==void 0){if(r.$$.count.value===0)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();let d=r.clone();return this.destructor(e),d}function A(){return this.isSmartPointer?cn(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):cn(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}let i=this.registeredClass.getActualType(t),o=Yt[i];if(!o)return A.call(this);let s;this.isConst?s=o.constPointerType:s=o.pointerType;let c=vA(t,this.registeredClass,s.registeredClass);return c===null?A.call(this):this.isSmartPointer?cn(s.registeredClass.instancePrototype,{ptrType:s,ptr:c,smartPtrType:this,smartPtr:e}):cn(s.registeredClass.instancePrototype,{ptrType:s,ptr:c})}function Bi(){Bt.prototype.getPointee=Ei,Bt.prototype.destructor=fi,Bt.prototype.argPackAdvance=8,Bt.prototype.readValueFromPointer=f,Bt.prototype.deleteObject=Ii,Bt.prototype.fromWireType=pi}function Bt(e,t,r,A,i,o,s,c,d,E,I){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=A,this.isSmartPointer=i,this.pointeeType=o,this.sharingPolicy=s,this.rawGetPointee=c,this.rawConstructor=d,this.rawShare=E,this.rawDestructor=I,!i&&t.baseClass===void 0?A?(this.toWireType=li,this.destructorFunction=null):(this.toWireType=di,this.destructorFunction=null):this.toWireType=ui}function NA(e,t,r){n.hasOwnProperty(e)||P("Replacing nonexistant public symbol"),n[e].overloadTable!==void 0&&r!==void 0?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)}function hi(e,t,r){M(`dynCall_${e}`in n,`bad function pointer type - no table for sig '${e}'`),r&&r.length?M(r.length===e.substring(1).replace(/j/g,"--").length):M(e.length==1);let A=n[`dynCall_${e}`];return r&&r.length?A.apply(null,[t].concat(r)):A.call(null,t)}function mi(e,t,r){return e.includes("j")?hi(e,t,r):(M(v.get(t),`missing table entry in dynCall: ${t}`),v.get(t).apply(null,r))}function Qi(e,t){M(e.includes("j"),"getDynCaller should only be called with i64 sigs");let r=[];return function(){r.length=arguments.length;for(let A=0;A{Wt(`Cannot construct ${I} due to unbound types`,[A])}),b([e,t,r],A?[A]:[],O=>{O=O[0];let U,Y;A?(U=O.registeredClass,Y=U.instancePrototype):Y=Be.prototype;let q=Ar(_,function(){if(Object.getPrototypeOf(this)!==D)throw new Rt(`Use 'new' to construct ${I}`);if(F.constructor_body===void 0)throw new Rt(`${I} has no accessible constructor`);let we=F.constructor_body[arguments.length];if(we===void 0)throw new Rt(`Tried to invoke ctor of ${I} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(F.constructor_body).toString()}) parameters instead!`);return we.apply(this,arguments)});var D=Object.create(Y,{constructor:{value:q}});q.prototype=D;var F=new Or(I,q,D,h,U,o,c,E);let te=new Bt(I,F,!0,!1,!1),x=new Bt(`${I}*`,F,!1,!1,!1),Ie=new Bt(`${I} const*`,F,!1,!0,!1);return Yt[e]={pointerType:x,constPointerType:Ie},NA(_,q),[te,x,Ie]})}function UA(e,t){if(!(e instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof e} which is not a function`);let r=Ar(e.name||"unknownFunctionName",()=>{});r.prototype=e.prototype;let A=new r,i=e.apply(A,t);return i instanceof Object?i:A}function gn(e,t,r,A,i){let o=t.length;o<2&&J("argTypes array size mismatch! Must at least get return value and 'this' types!");let s=t[1]!==null&&r!==null,c=!1;for(var d=1;d0?", ":""}${B}`),h+=`${E?"var rv = ":""}invoker(fn${B.length>0?", ":""}${B}); `,c)h+=`runDestructors(destructors); `;else for(var d=s?1:2;d>2)+A]);return r}function yi(e,t,r,A,i,o,s){let c=ln(r,A);t=ue(t),o=Ne(i,o),b([],[e],d=>{d=d[0];let E=`${d.name}.${t}`;function I(){Wt(`Cannot call ${E} due to unbound types`,c)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]);let B=d.registeredClass.constructor;return B[t]===void 0?(I.argCount=r-1,B[t]=I):(sr(B,t,E),B[t].overloadTable[r-1]=I),b([],c,h=>{let _=[h[0],null].concat(h.slice(1)),O=gn(E,_,null,o,s);return B[t].overloadTable===void 0?(O.argCount=r-1,B[t]=O):B[t].overloadTable[r-1]=O,[]}),[]})}function Di(e,t,r,A,i,o){M(t>0);let s=ln(t,r);i=Ne(A,i),b([],[e],c=>{c=c[0];let d=`constructor ${c.name}`;if(c.registeredClass.constructor_body===void 0&&(c.registeredClass.constructor_body=[]),c.registeredClass.constructor_body[t-1]!==void 0)throw new Rt(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${c.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return c.registeredClass.constructor_body[t-1]=function(){Wt(`Cannot construct ${c.name} due to unbound types`,s)},b([],s,E=>(E.splice(1,0,null),c.registeredClass.constructor_body[t-1]=gn(d,E,null,i,o),[])),[]})}function wi(e,t,r,A,i,o,s,c){let d=ln(r,A);t=ue(t),o=Ne(i,o),b([],[e],E=>{E=E[0];let I=`${E.name}.${t}`;t.startsWith("@@")&&(t=Symbol[t.substring(2)]),c&&E.registeredClass.pureVirtualFunctions.push(t);function B(){Wt(`Cannot call ${I} due to unbound types`,d)}let h=E.registeredClass.instancePrototype,_=h[t];return _===void 0||_.overloadTable===void 0&&_.className!==E.name&&_.argCount===r-2?(B.argCount=r-2,B.className=E.name,h[t]=B):(sr(h,t,I),h[t].overloadTable[r-2]=B),b([],d,O=>{let U=gn(I,O,E,o,s);return h[t].overloadTable===void 0?(U.argCount=r-2,h[t]=U):h[t].overloadTable[r-2]=U,[]}),[]})}function xA(e,t,r){return e instanceof Object||J(`${r} with invalid "this": ${e}`),e instanceof t.registeredClass.constructor||J(`${r} incompatible with "this" of type ${e.constructor.name}`),e.$$.ptr||J(`cannot call emscripten binding method ${r} on deleted object`),Xt(e.$$.ptr,e.$$.ptrType.registeredClass,t.registeredClass)}function bi(e,t,r,A,i,o,s,c,d,E){t=ue(t),i=Ne(A,i),b([],[e],I=>{I=I[0];let B=`${I.name}.${t}`,h={get(){Wt(`Cannot access ${B} due to unbound types`,[r,s])},enumerable:!0,configurable:!0};return d?h.set=function(){Wt(`Cannot access ${B} due to unbound types`,[r,s])}:h.set=function(_){J(`${B} is a read-only property`)},Object.defineProperty(I.registeredClass.instancePrototype,t,h),b([],d?[r,s]:[r],_=>{let O=_[0],U={get(){let Y=xA(this,I,`${B} getter`);return O.fromWireType(i(o,Y))},enumerable:!0};if(d){d=Ne(c,d);let Y=_[1];U.set=function(q){let D=xA(this,I,`${B} setter`),F=[];d(E,D,Y.toWireType(F,q)),g(F)}}return Object.defineProperty(I.registeredClass.instancePrototype,t,U),[]}),[]})}function LA(e){e>4&&--ve[e].refcount===0&&(ve[e]=void 0,hr.push(e))}function Ti(e,t){t=ue(t),K(e,{name:t,fromWireType(r){let A=ve[r].value;return LA(r),A},toWireType(r,A){return ir(A)},argPackAdvance:8,readValueFromPointer:f,destructorFunction:null})}function ar(e){if(e===null)return"null";let t=typeof e;return t==="object"||t==="array"||t==="function"?e.toString():`${e}`}function Oi(e,t){switch(t){case 2:return function(r){return this.fromWireType(pe[r>>2])};case 3:return function(r){return this.fromWireType(dr[r>>3])};default:throw new TypeError(`Unknown float type: ${e}`)}}function Ri(e,t,r){let A=k(r);t=ue(t),K(e,{name:t,fromWireType(i){return i},toWireType(i,o){if(typeof o!="number"&&typeof o!="boolean")throw new TypeError(`Cannot convert "${ar(o)}" to ${this.name}`);return o},argPackAdvance:8,readValueFromPointer:Oi(t,A),destructorFunction:null})}function Si(e,t,r,A,i,o){let s=ln(t,r);e=ue(e),i=Ne(A,i),Tr(e,()=>{Wt(`Cannot call ${e} due to unbound types`,s)},t-1),b([],s,c=>{let d=[c[0],null].concat(c.slice(1));return NA(e,gn(e,d,null,i,o),t-1),[]})}function Pi(e,t,r){switch(t){case 0:return r?function(i){return oe[i]}:function(i){return le[i]};case 1:return r?function(i){return ot[i>>1]}:function(i){return Dt[i>>1]};case 2:return r?function(i){return m[i>>2]}:function(i){return Ae[i>>2]};default:throw new TypeError(`Unknown integer type: ${e}`)}}function Mi(e,t,r,A,i){t=ue(t),i===-1&&(i=4294967295);let o=k(r),s=function(d){return d};if(A===0){let d=32-8*r;s=function(E){return E<>>d}}let c=t.includes("unsigned");K(e,{name:t,fromWireType:s,toWireType(d,E){if(typeof E!="number"&&typeof E!="boolean")throw new TypeError(`Cannot convert "${ar(E)}" to ${this.name}`);if(Ei)throw new TypeError(`Passing a number "${ar(E)}" from JS side to C/C++ side to an argument of type "${t}", which is outside the valid range [${A}, ${i}]!`);return c?E>>>0:E|0},argPackAdvance:8,readValueFromPointer:Pi(t,o,A!==0),destructorFunction:null})}function Fi(e,t,r){let i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function o(s){s=s>>2;let c=Ae,d=c[s],E=c[s+1];return new i(Mt,E,d)}r=ue(r),K(e,{name:r,fromWireType:o,argPackAdvance:8,readValueFromPointer:o},{ignoreDuplicateRegistrations:!0})}function vi(e,t){t=ue(t);let r=t==="std::string";K(e,{name:t,fromWireType(A){let i=Ae[A>>2],o;if(r){let c=A+4;for(var s=0;s<=i;++s){let d=A+4+s;if(s==i||le[d]==0){let E=d-c,I=de(c,E);o===void 0?o=I:(o+=String.fromCharCode(0),o+=I),c=d+1}}}else{let c=new Array(i);for(var s=0;s>2]=c,r&&s)it(i,d+4,c+1);else if(s)for(var E=0;E255&&(ut(d),J("String has UTF-16 code units that do not fit in 8 bits")),le[d+4+E]=I}else for(var E=0;E>2],I=o(),B,h=d+4;for(let _=0;_<=E;++_){let O=d+4+_*t;if(_==E||I[O>>c]==0){let U=O-h,Y=A(h,U);B===void 0?B=Y:(B+=String.fromCharCode(0),B+=Y),h=O+t}}return ut(d),B},toWireType(d,E){typeof E!="string"&&J(`Cannot pass non-string to C++ string type ${r}`);let I=s(E),B=Jt(4+I+t);return Ae[B>>2]=I>>c,i(E,B+4,I+t),d!==null&&d.push(ut,B),B},argPackAdvance:8,readValueFromPointer:f,destructorFunction(d){ut(d)}})}function ki(e,t,r,A,i,o){l[e]={name:ue(t),rawConstructor:Ne(r,A),rawDestructor:Ne(i,o),fields:[]}}function Ui(e,t,r,A,i,o,s,c,d,E){l[e].fields.push({fieldName:ue(t),getterReturnType:r,getter:Ne(A,i),getterContext:o,setterArgumentType:s,setter:Ne(c,d),setterContext:E})}function xi(e,t){t=ue(t),K(e,{isVoid:!0,name:t,argPackAdvance:0,fromWireType(){},toWireType(r,A){}})}let Li={};function Gi(e){let t=Li[e];return t===void 0?ue(e):t}let hA=[];function ji(e,t,r,A){e=hA[e],t=on(t),r=Gi(r),e(t,r,null,A)}function Hi(e){let t=hA.length;return hA.push(e),t}function Yi(e,t){let r=new Array(e);for(let A=0;A>2)+A],`parameter ${A}`);return r}function Xi(e,t){let r=Yi(e,t),A=r[0],i=`${A.name}_$${r.slice(1).map(_=>_.name).join("_")}$`,o=["retType"],s=[A],c="";for(var d=0;d4&&(ve[e].refcount+=1)}function Ji(e,t){e=Dr(e,"_emval_take_value");let r=e.readValueFromPointer(t);return ir(r)}function Ki(){u()}let Vi=!0;function $i(e,t){let r;if(e===0)r=Date.now();else if((e===1||e===4)&&Vi)r=ft();else return en(28),-1;return m[t>>2]=r/1e3|0,m[t+4>>2]=r%1e3*1e3*1e3|0,0}function zi(e,t){u("To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking")}function Zi(e,t){u("To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking")}let un=[];function qi(e,t){M(Array.isArray(un)),M(t%16==0),un.length=0;let r;for(t>>=2;r=le[e++];){M(r===100||r===102||r===105);let A=r<105;A&&t&1&&t++,un.push(A?dr[t++>>1]:m[t]),++t}return un}function eo(e,t,r){let A=qi(t,r);return Ut.hasOwnProperty(e)||u(`No EM_ASM constant found at address ${e}`),Ut[e].apply(null,A)}function to(){return 2147483648}function ro(e,t,r){le.copyWithin(e,t,t+r)}function no(e){u("Cannot use emscripten_pc_get_function without -s USE_OFFSET_CONVERTER")}function Ao(e){try{return mt.grow(e-Mt.byteLength+65535>>>16),Lr(mt.buffer),1}catch(t){Z(`emscripten_realloc_buffer: Attempted to grow heap from ${Mt.byteLength} bytes to ${e} bytes, but got error: ${t}`)}}function io(e){let t=le.length;e=e>>>0,M(e>t);let r=2147483648;if(e>r)return Z(`Cannot enlarge memory, asked to go up to ${e} bytes, but the limit is ${r} bytes!`),!1;for(let i=1;i<=4;i*=2){let o=t*(1+.2/i);o=Math.min(o,e+100663296);var A=Math.min(r,Gn(Math.max(e,o),65536));if(Ao(A))return!0}return Z(`Failed to grow the heap from ${t} bytes to ${A} bytes, not enough memory!`),!1}function dn(e){u("Cannot use emscripten_generate_pc (needed by __builtin_return_address) without -s USE_OFFSET_CONVERTER")}let cr={};function GA(e){e.forEach(t=>{let r=dn(t);r&&(cr[r]=t)})}function oo(){let e=new Error().stack.split(` `);return e[0]=="Error"&&e.shift(),GA(e),cr.last_addr=dn(e[2]),cr.last_stack=e,cr.last_addr}function so(e,t,r){let A;cr.last_addr==e?A=cr.last_stack:(A=new Error().stack.split(` `),A[0]=="Error"&&A.shift(),GA(A));let i=2;for(;A[i]&&dn(A[i])!=e;)++i;for(var o=0;o>2]=dn(A[o+i]);return o}function ao(e){let t=ft();for(;ft()-t>1,o=new Uint16Array(i);var A=0;let c=0;for(;o[A++]=c,!(A>=i||(o[A++]=c+1,A>=i)||(o[A++]=c+2,A>=i)||(o[A++]=c,A>=i)||(o[A++]=c+2,A>=i)||(o[A++]=c+3,A>=i));)c+=4;t.GLctx.bufferData(34963,o,35044),t.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function(t){let r=C.log2ceilLookup(t),A=C.currentContext.tempVertexBuffers1[r],i=C.currentContext.tempVertexBufferCounters1[r];C.currentContext.tempVertexBufferCounters1[r]=C.currentContext.tempVertexBufferCounters1[r]+1&C.numTempVertexBuffersPerSize-1;let o=A[i];if(o)return o;let s=y.getParameter(34964);return A[i]=y.createBuffer(),y.bindBuffer(34962,A[i]),y.bufferData(34962,1<>2]:-1;i+=de(m[r+o*4>>2],s<0?void 0:s)}return i},calcBufLength:function(t,r,A,i){if(A>0)return i*A;let o=C.byteSizeByType[r-C.byteSizeByTypeRoot];return t*o*i},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function(t){C.resetBufferBinding=!1;for(let r=0;r1?e.getContext("webgl2",t):e.getContext("webgl",t);return r?C.registerContext(r,t):0},enableOffscreenFramebufferAttributes(e){e.renderViaOffscreenBackBuffer=!0,e.preserveDrawingBuffer=!0},createOffscreenFramebuffer(e){let t=e.GLctx,r=t.createFramebuffer();if(t.bindFramebuffer(36160,r),e.defaultFbo=r,e.defaultFboForbidBlitFramebuffer=!1,t.getContextAttributes().antialias)e.defaultFboForbidBlitFramebuffer=!0;else{let B=navigator.userAgent.toLowerCase().match(/firefox\/(\d\d)/);if(B!=null){let h=B[1];e.defaultFboForbidBlitFramebuffer=h<67}}e.defaultColorTarget=t.createTexture(),e.defaultDepthTarget=t.createRenderbuffer(),C.resizeOffscreenFramebuffer(e),t.bindTexture(3553,e.defaultColorTarget),t.texParameteri(3553,10241,9728),t.texParameteri(3553,10240,9728),t.texParameteri(3553,10242,33071),t.texParameteri(3553,10243,33071),t.texImage2D(3553,0,6408,t.canvas.width,t.canvas.height,0,6408,5121,null),t.framebufferTexture2D(36160,36064,3553,e.defaultColorTarget,0),t.bindTexture(3553,null);let A=t.createRenderbuffer();t.bindRenderbuffer(36161,e.defaultDepthTarget),t.renderbufferStorage(36161,33189,t.canvas.width,t.canvas.height),t.framebufferRenderbuffer(36160,36096,36161,e.defaultDepthTarget),t.bindRenderbuffer(36161,null);let i=[-1,-1,-1,1,1,-1,1,1],o=t.createBuffer();t.bindBuffer(34962,o),t.bufferData(34962,new Float32Array(i),35044),t.bindBuffer(34962,null),e.blitVB=o;let s="attribute vec2 pos;varying lowp vec2 tex;void main() { tex = pos * 0.5 + vec2(0.5,0.5); gl_Position = vec4(pos, 0.0, 1.0); }",c=t.createShader(35633);t.shaderSource(c,s),t.compileShader(c);let d="varying lowp vec2 tex;uniform sampler2D sampler;void main() { gl_FragColor = texture2D(sampler, tex); }",E=t.createShader(35632);t.shaderSource(E,d),t.compileShader(E);let I=t.createProgram();t.attachShader(I,c),t.attachShader(I,E),t.linkProgram(I),e.blitProgram=I,e.blitPosLoc=t.getAttribLocation(I,"pos"),t.useProgram(I),t.uniform1i(t.getUniformLocation(I,"sampler"),0),t.useProgram(null),e.defaultVao=void 0,t.createVertexArray&&(e.defaultVao=t.createVertexArray(),t.bindVertexArray(e.defaultVao),t.enableVertexAttribArray(e.blitPosLoc),t.bindVertexArray(null))},resizeOffscreenFramebuffer(e){let t=e.GLctx;if(e.defaultColorTarget){let r=t.getParameter(32873);t.bindTexture(3553,e.defaultColorTarget),t.texImage2D(3553,0,6408,t.drawingBufferWidth,t.drawingBufferHeight,0,6408,5121,null),t.bindTexture(3553,r)}if(e.defaultDepthTarget){let r=t.getParameter(36007);t.bindRenderbuffer(36161,e.defaultDepthTarget),t.renderbufferStorage(36161,33189,t.drawingBufferWidth,t.drawingBufferHeight),t.bindRenderbuffer(36161,r)}},blitOffscreenFramebuffer(e){let t=e.GLctx,r=t.getParameter(3089);r&&t.disable(3089);let A=t.getParameter(36006);if(t.blitFramebuffer&&!e.defaultFboForbidBlitFramebuffer)t.bindFramebuffer(36008,e.defaultFbo),t.bindFramebuffer(36009,null),t.blitFramebuffer(0,0,t.canvas.width,t.canvas.height,0,0,t.canvas.width,t.canvas.height,16384,9728);else{let U=function(){t.vertexAttribPointer(e.blitPosLoc,2,5126,!1,0,0),t.drawArrays(5,0,4)};var s=U;t.bindFramebuffer(36160,null);let c=t.getParameter(35725);t.useProgram(e.blitProgram);let d=t.getParameter(34964);t.bindBuffer(34962,e.blitVB);let E=t.getParameter(34016);t.activeTexture(33984);let I=t.getParameter(32873);t.bindTexture(3553,e.defaultColorTarget);let B=t.getParameter(3042);B&&t.disable(3042);let h=t.getParameter(2884);h&&t.disable(2884);let _=t.getParameter(2929);_&&t.disable(2929);let O=t.getParameter(2960);if(O&&t.disable(2960),e.defaultVao){let Y=t.getParameter(34229);t.bindVertexArray(e.defaultVao),U(),t.bindVertexArray(Y)}else{let Y={buffer:t.getVertexAttrib(e.blitPosLoc,34975),size:t.getVertexAttrib(e.blitPosLoc,34339),stride:t.getVertexAttrib(e.blitPosLoc,34340),type:t.getVertexAttrib(e.blitPosLoc,34341),normalized:t.getVertexAttrib(e.blitPosLoc,34922),pointer:t.getVertexAttribOffset(e.blitPosLoc,34373)},q=t.getParameter(34921),D=[];for(var i=0;i=2&&(t.disjointTimerQueryExt=t.getExtension("EXT_disjoint_timer_query_webgl2")),(e.version<2||!t.disjointTimerQueryExt)&&(t.disjointTimerQueryExt=t.getExtension("EXT_disjoint_timer_query")),fo(t),(t.getSupportedExtensions()||[]).forEach(A=>{!A.includes("lose_context")&&!A.includes("debug")&&t.getExtension(A)})}},z={inEventHandler:0,removeAllEventListeners(){for(let e=z.eventHandlers.length-1;e>=0;--e)z._removeHandler(e);z.eventHandlers=[],z.deferredCalls=[]},registerRemoveEventListeners(){z.removeEventListenersRegistered||(Gr.push(z.removeAllEventListeners),z.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall(e,t,r){function A(i,o){if(i.length!=o.length)return!1;for(let s in i)if(i[s]!=o[s])return!1;return!0}for(let i in z.deferredCalls){let o=z.deferredCalls[i];if(o.targetFunction==e&&A(o.argsList,r))return}z.deferredCalls.push({targetFunction:e,precedence:t,argsList:r}),z.deferredCalls.sort((i,o)=>i.precedence>2,A=m[r+6],i={alpha:!!m[r+0],depth:!!m[r+1],stencil:!!m[r+2],antialias:!!m[r+3],premultipliedAlpha:!!m[r+4],preserveDrawingBuffer:!!m[r+5],powerPreference:jA[A],failIfMajorPerformanceCaveat:!!m[r+7],majorVersion:m[r+8],minorVersion:m[r+9],enableExtensionsByDefault:m[r+10],explicitSwapControl:m[r+11],proxyContextToMainThread:m[r+12],renderViaOffscreenBackBuffer:m[r+13]},o=mA(e);if(!o)return 0;if(o.offscreenCanvas&&(o=o.offscreenCanvas),i.explicitSwapControl&&(o.transferControlToOffscreen||typeof OffscreenCanvas!="undefined"&&o instanceof OffscreenCanvas||i.renderViaOffscreenBackBuffer||(i.renderViaOffscreenBackBuffer=!0),o.transferControlToOffscreen)){if(!o.controlTransferredOffscreen)C.offscreenCanvases[o.id]={canvas:o.transferControlToOffscreen(),canvasSharedPtr:Jt(12),id:o.id},o.controlTransferredOffscreen=!0;else if(!C.offscreenCanvases[o.id])return 0;o=C.offscreenCanvases[o.id]}return C.createContext(o,i)}function Bo(e,t){return po(e,t)}function ho(){return C.currentContext?C.currentContext.handle:0}function HA(){return ho()}n._emscripten_webgl_get_current_context=HA;function YA(e){return C.makeContextCurrent(e)?0:-5}n._emscripten_webgl_make_context_current=YA;function mo(e){C.currentContext==e&&(C.currentContext=0),C.deleteContext(e)}function Qo(e,t){if(!t)return-5;if(e=C.contexts[e],!e)return-3;let r=e.GLctx;if(!r)return-3;r=r.getContextAttributes(),m[t>>2]=r.alpha,m[t+4>>2]=r.depth,m[t+8>>2]=r.stencil,m[t+12>>2]=r.antialias,m[t+16>>2]=r.premultipliedAlpha,m[t+20>>2]=r.preserveDrawingBuffer;let A=r.powerPreference&&jA.indexOf(r.powerPreference);return m[t+24>>2]=A,m[t+28>>2]=r.failIfMajorPerformanceCaveat,m[t+32>>2]=e.version,m[t+36>>2]=0,m[t+40>>2]=e.attributes.enableExtensionsByDefault,0}function _o(e){M(e);let t=e>>2;for(let r=0;r<14;++r)m[t+r]=0;m[t+0]=m[t+1]=m[t+3]=m[t+4]=m[t+8]=m[t+10]=1}let QA={};function yo(){return Te||"./this.program"}function Rr(){if(!Rr.strings){let r={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:`${(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")}.UTF-8`,_:yo()};for(var e in QA)QA[e]===void 0?delete r[e]:r[e]=QA[e];let A=[];for(var e in r)A.push(`${e}=${r[e]}`);Rr.strings=A}return Rr.strings}function Do(e,t){let r=0;return Rr().forEach((A,i)=>{let o=t+r;m[e+i*4>>2]=o,Ln(A,o),r+=A.length+1}),0}function wo(e,t){let r=Rr();m[e>>2]=r.length;let A=0;return r.forEach(i=>{A+=i.length+1}),m[t>>2]=A,0}function bo(e){try{let t=ie.getStreamFromFD(e);return a.close(t),0}catch(t){return(typeof a=="undefined"||!(t instanceof a.ErrnoError))&&u(t),t.errno}}function To(e,t,r,A){try{let i=ie.getStreamFromFD(e),o=ie.doReadv(i,t,r);return m[A>>2]=o,0}catch(i){return(typeof a=="undefined"||!(i instanceof a.ErrnoError))&&u(i),i.errno}}function Oo(e,t,r,A,i){try{let o=ie.getStreamFromFD(e),c=r*4294967296+(t>>>0),d=9007199254740992;return c<=-d||c>=d?-61:(a.llseek(o,c,A),Me=[o.position>>>0,(Ee=o.position,+Math.abs(Ee)>=1?Ee>0?(Math.min(+Math.floor(Ee/4294967296),4294967295)|0)>>>0:~~+Math.ceil((Ee-+(~~Ee>>>0))/4294967296)>>>0:0)],m[i>>2]=Me[0],m[i+4>>2]=Me[1],o.getdents&&c===0&&A===0&&(o.getdents=null),0)}catch(o){return(typeof a=="undefined"||!(o instanceof a.ErrnoError))&&u(o),o.errno}}function Ro(e,t,r,A){try{let i=ie.getStreamFromFD(e),o=ie.doWritev(i,t,r);return m[A>>2]=o,0}catch(i){return(typeof a=="undefined"||!(i instanceof a.ErrnoError))&&u(i),i.errno}}function So(){return Fr()}function En(e,t){En.randomDevice||(En.randomDevice=We());for(let r=0;r>0]=En.randomDevice();return 0}function Po(e){y.activeTexture(e)}function Mo(e,t){y.attachShader(C.programs[e],C.shaders[t])}function Fo(e,t,r){y.bindAttribLocation(C.programs[e],t,de(r))}function vo(e,t){e==34962?y.currentArrayBufferBinding=t:e==34963&&(y.currentElementArrayBufferBinding=t),e==35051?y.currentPixelPackBufferBinding=t:e==35052&&(y.currentPixelUnpackBufferBinding=t),y.bindBuffer(e,C.buffers[t])}function No(e,t,r){y.bindBufferBase(e,t,C.buffers[r])}function ko(e,t){y.bindFramebuffer(e,t?C.framebuffers[t]:C.currentContext.defaultFbo)}function Uo(e,t){y.bindTexture(e,C.textures[t])}function xo(e){y.bindVertexArray(C.vaos[e]);let t=y.getParameter(34965);y.currentElementArrayBufferBinding=t?t.name|0:0}function Lo(e,t,r,A){C.currentContext.version>=2?r?y.bufferData(e,le,A,r,t):y.bufferData(e,t,A):y.bufferData(e,r?le.subarray(r,r+t):t,A)}function Go(e,t){return M(t===(t|0)),(e>>>0)+t*4294967296}function jo(e,t,r,A){return y.clientWaitSync(C.syncs[e],t,Go(r,A))}function Ho(e){y.compileShader(C.shaders[e])}function Yo(){let e=C.getNewId(C.programs),t=y.createProgram();return t.name=e,t.maxUniformLength=t.maxAttributeLength=t.maxUniformBlockNameLength=0,t.uniformIdCounter=1,C.programs[e]=t,e}function Xo(e){let t=C.getNewId(C.shaders);return C.shaders[t]=y.createShader(e),t}function Wo(e,t){for(let r=0;r>2],i=C.buffers[A];i&&(y.deleteBuffer(i),i.name=0,C.buffers[A]=null,A==y.currentArrayBufferBinding&&(y.currentArrayBufferBinding=0),A==y.currentElementArrayBufferBinding&&(y.currentElementArrayBufferBinding=0),A==y.currentPixelPackBufferBinding&&(y.currentPixelPackBufferBinding=0),A==y.currentPixelUnpackBufferBinding&&(y.currentPixelUnpackBufferBinding=0))}}function Jo(e,t){for(let r=0;r>2],i=C.framebuffers[A];i&&(y.deleteFramebuffer(i),i.name=0,C.framebuffers[A]=null)}}function Ko(e){if(!e)return;let t=C.programs[e];if(!t){C.recordError(1281);return}y.deleteProgram(t),t.name=0,C.programs[e]=null}function Vo(e){if(!e)return;let t=C.shaders[e];if(!t){C.recordError(1281);return}y.deleteShader(t),C.shaders[e]=null}function $o(e){if(!e)return;let t=C.syncs[e];if(!t){C.recordError(1281);return}y.deleteSync(t),t.name=0,C.syncs[e]=null}function zo(e,t){for(let r=0;r>2],i=C.textures[A];i&&(y.deleteTexture(i),i.name=0,C.textures[A]=null)}}function Zo(e,t){for(let r=0;r>2];y.deleteVertexArray(C.vaos[A]),C.vaos[A]=null}}function qo(e){y.disable(e)}function es(e){let t=C.currentContext.clientBuffers[e];t.enabled=!1,y.disableVertexAttribArray(e)}function ts(e,t,r){C.preDrawHandleClientVertexAttribBindings(t+r),y.drawArrays(e,t,r),C.postDrawHandleClientVertexAttribBindings()}let XA=[];function rs(e,t){let r=XA[e];for(let A=0;A>2];y.drawBuffers(r)}function ns(e){let t=C.currentContext.clientBuffers[e];t.enabled=!0,y.enableVertexAttribArray(e)}function As(e,t){let r=y.fenceSync(e,t);if(r){let A=C.getNewId(C.syncs);return r.name=A,C.syncs[A]=r,A}return 0}function is(){y.finish()}function os(){y.flush()}function ss(e,t,r,A,i){y.framebufferTexture2D(e,t,r,C.textures[A],i)}function as(e,t,r,A,i){y.framebufferTextureLayer(e,t,C.textures[r],A,i)}function fn(e,t,r,A){for(let i=0;i>2]=s}}function cs(e,t){fn(e,t,"createBuffer",C.buffers)}function gs(e,t){fn(e,t,"createFramebuffer",C.framebuffers)}function ls(e,t){fn(e,t,"createTexture",C.textures)}function us(e,t){fn(e,t,"createVertexArray",C.vaos)}function ds(e,t){return y.getAttribLocation(C.programs[e],de(t))}function Es(){let e=y.getError()||C.lastError;return C.lastError=0,e}function fs(e){return Ae[e>>2]+m[e+4>>2]*4294967296}function Is(e){return Ae[e>>2]+Ae[e+4>>2]*4294967296}function Cs(e,t){Ae[e>>2]=t,Ae[e+4>>2]=(t-Ae[e>>2])/4294967296;let r=t>=0?Is(e):fs(e);r!=t&&Pe(`writeI53ToI64() out of range: serialized JS Number ${t} to Wasm heap as bytes lo=0x${Ae[e>>2].toString(16)}, hi=0x${Ae[e+4>>2].toString(16)}, which deserializes back to ${r} instead!`)}function ps(e,t,r){if(!t){C.recordError(1281);return}let A;switch(e){case 36346:A=1;break;case 36344:r!=0&&r!=1&&C.recordError(1280);return;case 34814:case 36345:A=0;break;case 34466:var i=y.getParameter(34467);A=i?i.length:0;break;case 33309:if(C.currentContext.version<2){C.recordError(1282);return}var o=y.getSupportedExtensions()||[];A=2*o.length;break;case 33307:case 33308:if(C.currentContext.version<2){C.recordError(1280);return}A=e==33307?3:0;break}if(A===void 0){let s=y.getParameter(e);switch(typeof s){case"number":A=s;break;case"boolean":A=s?1:0;break;case"string":C.recordError(1280);return;case"object":if(s===null)switch(e){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:{A=0;break}default:{C.recordError(1280);return}}else if(s instanceof Float32Array||s instanceof Uint32Array||s instanceof Int32Array||s instanceof Array){for(let c=0;c>2]=s[c];break;case 2:pe[t+c*4>>2]=s[c];break;case 4:oe[t+c>>0]=s[c]?1:0;break}return}else try{A=s.name|0}catch(c){C.recordError(1280),Z(`GL_INVALID_ENUM in glGet${r}v: Unknown object returned from WebGL getParameter(${e})! (error: ${c})`);return}break;default:C.recordError(1280),Z(`GL_INVALID_ENUM in glGet${r}v: Native code calling glGet${r}v(${e}) and it returns ${s} of type ${typeof s}!`);return}}switch(r){case 1:Cs(t,A);break;case 0:m[t>>2]=A;break;case 2:pe[t>>2]=A;break;case 4:oe[t>>0]=A?1:0;break}}function Bs(e,t){ps(e,t,0)}function In(e){let t=yt(e)+1,r=Jt(t);return it(e,r,t),r}function hs(e){let t=C.stringCache[e];if(!t){switch(e){case 7939:var r=y.getSupportedExtensions()||[];r=r.concat(r.map(d=>`GL_${d}`)),t=In(r.join(" "));break;case 7936:case 7937:case 37445:case 37446:var A=y.getParameter(e);A||C.recordError(1280),t=A&&In(A);break;case 7938:var i=y.getParameter(7938);C.currentContext.version>=2?i=`OpenGL ES 3.0 (${i})`:i=`OpenGL ES 2.0 (${i})`,t=In(i);break;case 35724:var o=y.getParameter(35724),s=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/,c=o.match(s);c!==null&&(c[1].length==3&&(c[1]=`${c[1]}0`),o=`OpenGL ES GLSL ES ${c[1]} (${o})`),t=In(o);break;default:C.recordError(1280)}C.stringCache[e]=t}return t}function ms(e,t){return y.getUniformBlockIndex(C.programs[e],de(t))}function Qs(e){return parseInt(e)}function WA(e){return e.slice(-1)=="]"&&e.lastIndexOf("[")}function _s(e){let{uniformLocsById:t}=e,{uniformSizeAndIdsByName:r}=e,A,i;if(!t)for(e.uniformLocsById=t={},e.uniformArrayNamesById={},A=0;A0?s.slice(0,d):s,I=e.uniformIdCounter;for(e.uniformIdCounter+=c,r[E]=[c,I],i=0;i0&&(A=Qs(t.slice(o+1))>>>0,i=t.slice(0,o));let s=e.uniformSizeAndIdsByName[i];if(s&&A>c,i+I>>c)}function Os(e,t,r,A,i,o,s){if(C.currentContext.version>=2){if(y.currentPixelPackBufferBinding)y.readPixels(e,t,r,A,i,o,s);else{let d=Sr(o);y.readPixels(e,t,r,A,i,o,d,s>>Pr(d))}return}let c=_A(o,i,r,A,s,i);if(!c){C.recordError(1280);return}y.readPixels(e,t,r,A,i,o,c)}function Rs(e,t,r,A){let i=C.getSource(e,t,r,A);y.shaderSource(C.shaders[e],i)}function Ss(e,t,r,A,i,o,s,c,d){if(C.currentContext.version>=2){if(y.currentPixelUnpackBufferBinding)y.texImage2D(e,t,r,A,i,o,s,c,d);else if(d){let E=Sr(c);y.texImage2D(e,t,r,A,i,o,s,c,E,d>>Pr(E))}else y.texImage2D(e,t,r,A,i,o,s,c,null);return}y.texImage2D(e,t,r,A,i,o,s,c,d?_A(c,s,A,i,d,r):null)}function Ps(e,t,r){let A=pe[r>>2];y.texParameterf(e,t,A)}function Ms(e,t,r){y.texParameteri(e,t,r)}function Fs(e,t,r,A,i){y.texStorage2D(e,t,r,A,i)}function vs(e,t,r,A,i,o){y.texStorage3D(e,t,r,A,i,o)}function Ns(e,t,r,A,i,o,s,c,d){if(C.currentContext.version>=2){if(y.currentPixelUnpackBufferBinding)y.texSubImage2D(e,t,r,A,i,o,s,c,d);else if(d){let I=Sr(c);y.texSubImage2D(e,t,r,A,i,o,s,c,I,d>>Pr(I))}else y.texSubImage2D(e,t,r,A,i,o,s,c,null);return}let E=null;d&&(E=_A(c,s,i,o,d,0)),y.texSubImage2D(e,t,r,A,i,o,s,c,E)}function ks(e,t,r,A,i,o,s,c,d,E,I){if(y.currentPixelUnpackBufferBinding)y.texSubImage3D(e,t,r,A,i,o,s,c,d,E,I);else if(I){let B=Sr(E);y.texSubImage3D(e,t,r,A,i,o,s,c,d,E,B,I>>Pr(B))}else y.texSubImage3D(e,t,r,A,i,o,s,c,d,E,null)}function lt(e){let t=y.currentProgram;if(t){let r=t.uniformLocsById[e];return typeof r=="number"&&(t.uniformLocsById[e]=r=y.getUniformLocation(t,t.uniformArrayNamesById[e]+(r>0?`[${r}]`:""))),r}C.recordError(1282)}function Us(e,t){y.uniform1f(lt(e),t)}function xs(e,t){y.uniform1i(lt(e),t)}let Cn=[];function Ls(e,t,r){if(C.currentContext.version>=2){y.uniform2fv(lt(e),pe,r>>2,t*2);return}if(t<=144){var A=Cn[2*t-1];for(let i=0;i<2*t;i+=2)A[i]=pe[r+4*i>>2],A[i+1]=pe[r+(4*i+4)>>2]}else var A=pe.subarray(r>>2,r+t*8>>2);y.uniform2fv(lt(e),A)}function Gs(e,t,r){if(C.currentContext.version>=2){y.uniform4fv(lt(e),pe,r>>2,t*4);return}if(t<=72){var A=Cn[4*t-1];let i=pe;r>>=2;for(let o=0;o<4*t;o+=4){let s=r+o;A[o]=i[s],A[o+1]=i[s+1],A[o+2]=i[s+2],A[o+3]=i[s+3]}}else var A=pe.subarray(r>>2,r+t*16>>2);y.uniform4fv(lt(e),A)}let JA=[];function js(e,t,r){if(C.currentContext.version>=2){y.uniform4iv(lt(e),m,r>>2,t*4);return}if(t<=72){var A=JA[4*t-1];for(let i=0;i<4*t;i+=4)A[i]=m[r+4*i>>2],A[i+1]=m[r+(4*i+4)>>2],A[i+2]=m[r+(4*i+8)>>2],A[i+3]=m[r+(4*i+12)>>2]}else var A=m.subarray(r>>2,r+t*16>>2);y.uniform4iv(lt(e),A)}function Hs(e,t,r){e=C.programs[e],y.uniformBlockBinding(e,t,r)}function Ys(e,t,r,A){if(C.currentContext.version>=2){y.uniformMatrix4fv(lt(e),!!r,pe,A>>2,t*16);return}if(t<=18){var i=Cn[16*t-1];let o=pe;A>>=2;for(let s=0;s<16*t;s+=16){let c=A+s;i[s]=o[c],i[s+1]=o[c+1],i[s+2]=o[c+2],i[s+3]=o[c+3],i[s+4]=o[c+4],i[s+5]=o[c+5],i[s+6]=o[c+6],i[s+7]=o[c+7],i[s+8]=o[c+8],i[s+9]=o[c+9],i[s+10]=o[c+10],i[s+11]=o[c+11],i[s+12]=o[c+12],i[s+13]=o[c+13],i[s+14]=o[c+14],i[s+15]=o[c+15]}}else var i=pe.subarray(A>>2,A+t*64>>2);y.uniformMatrix4fv(lt(e),!!r,i)}function Xs(e){e=C.programs[e],y.useProgram(e),y.currentProgram=e}function Ws(e,t,r,A,i,o){let s=C.currentContext.clientBuffers[e];if(!y.currentArrayBufferBinding){s.size=t,s.type=r,s.normalized=A,s.stride=i,s.ptr=o,s.clientside=!0,s.vertexAttribPointerAdaptor=function(c,d,E,I,B,h){this.vertexAttribPointer(c,d,E,I,B,h)};return}s.clientside=!1,y.vertexAttribPointer(e,t,r,!!A,i,o)}function Js(e,t,r,A){y.viewport(e,t,r,A)}function pn(e,t){let r=new Date(m[e>>2]*1e3);m[t>>2]=r.getUTCSeconds(),m[t+4>>2]=r.getUTCMinutes(),m[t+8>>2]=r.getUTCHours(),m[t+12>>2]=r.getUTCDate(),m[t+16>>2]=r.getUTCMonth(),m[t+20>>2]=r.getUTCFullYear()-1900,m[t+24>>2]=r.getUTCDay(),m[t+36>>2]=0,m[t+32>>2]=0;let A=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),i=(r.getTime()-A)/(1e3*60*60*24)|0;return m[t+28>>2]=i,pn.GMTString||(pn.GMTString=ur("GMT")),m[t+40>>2]=pn.GMTString,t}function Ks(e){return e}function Bn(){if(Bn.called)return;Bn.called=!0;let e=new Date().getFullYear(),t=new Date(e,0,1),r=new Date(e,6,1),A=t.getTimezoneOffset(),i=r.getTimezoneOffset(),o=Math.max(A,i);m[oa()>>2]=o*60,m[ia()>>2]=+(A!=i);function s(B){let h=B.toTimeString().match(/\(([A-Za-z ]+)\)$/);return h?h[1]:"GMT"}let c=s(t),d=s(r),E=ur(c),I=ur(d);i>2]=E,m[Mr()+4>>2]=I):(m[Mr()>>2]=I,m[Mr()+4>>2]=E)}function Vs(e,t){Bn();let r=new Date(m[e>>2]*1e3);m[t>>2]=r.getSeconds(),m[t+4>>2]=r.getMinutes(),m[t+8>>2]=r.getHours(),m[t+12>>2]=r.getDate(),m[t+16>>2]=r.getMonth(),m[t+20>>2]=r.getFullYear()-1900,m[t+24>>2]=r.getDay();let A=new Date(r.getFullYear(),0,1),i=(r.getTime()-A.getTime())/(1e3*60*60*24)|0;m[t+28>>2]=i,m[t+36>>2]=-(r.getTimezoneOffset()*60);let o=new Date(r.getFullYear(),6,1).getTimezoneOffset(),s=A.getTimezoneOffset(),c=(o!=s&&r.getTimezoneOffset()==Math.min(s,o))|0;m[t+32>>2]=c;let d=m[Mr()+(c?4:0)>>2];return m[t+40>>2]=d,t}function $s(e){Bn();let t=new Date(m[e+20>>2]+1900,m[e+16>>2],m[e+12>>2],m[e+8>>2],m[e+4>>2],m[e>>2],0),r=m[e+32>>2],A=t.getTimezoneOffset(),i=new Date(t.getFullYear(),0,1),o=new Date(t.getFullYear(),6,1).getTimezoneOffset(),s=i.getTimezoneOffset(),c=Math.min(s,o);if(r<0)m[e+32>>2]=+(o!=s&&c==A);else if(r>0!=(c==A)){let E=Math.max(s,o),I=r>0?c:E;t.setTime(t.getTime()+(I-A)*6e4)}m[e+24>>2]=t.getDay();let d=(t.getTime()-i.getTime())/(1e3*60*60*24)|0;return m[e+28>>2]=d,m[e>>2]=t.getSeconds(),m[e+4>>2]=t.getMinutes(),m[e+8>>2]=t.getHours(),m[e+12>>2]=t.getDate(),m[e+16>>2]=t.getMonth(),t.getTime()/1e3|0}function zs(e){ei(e)}function Zs(e){Ye(e)}function hn(e){return e%4===0&&(e%100!==0||e%400===0)}function yA(e,t){let r=0;for(let A=0;A<=t;r+=e[A++]);return r}let mn=[31,29,31,30,31,30,31,31,30,31,30,31],Qn=[31,28,31,30,31,30,31,31,30,31,30,31];function _n(e,t){let r=new Date(e.getTime());for(;t>0;){let A=hn(r.getFullYear()),i=r.getMonth(),o=(A?mn:Qn)[i];if(t>o-r.getDate())t-=o-r.getDate()+1,r.setDate(1),i<11?r.setMonth(i+1):(r.setMonth(0),r.setFullYear(r.getFullYear()+1));else return r.setDate(r.getDate()+t),r}return r}function KA(e,t,r,A){let i=m[A+40>>2],o={tm_sec:m[A>>2],tm_min:m[A+4>>2],tm_hour:m[A+8>>2],tm_mday:m[A+12>>2],tm_mon:m[A+16>>2],tm_year:m[A+20>>2],tm_wday:m[A+24>>2],tm_yday:m[A+28>>2],tm_isdst:m[A+32>>2],tm_gmtoff:m[A+36>>2],tm_zone:i?de(i):""},s=de(r),c={"%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 d in c)s=s.replace(new RegExp(d,"g"),c[d]);let E=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],I=["January","February","March","April","May","June","July","August","September","October","November","December"];function B(D,F,te){let x=typeof D=="number"?D.toString():D||"";for(;x.length0?1:0}let x;return(x=te(D.getFullYear()-F.getFullYear()))===0&&(x=te(D.getMonth()-F.getMonth()))===0&&(x=te(D.getDate()-F.getDate())),x}function O(D){switch(D.getDay()){case 0:return new Date(D.getFullYear()-1,11,29);case 1:return D;case 2:return new Date(D.getFullYear(),0,3);case 3:return new Date(D.getFullYear(),0,2);case 4:return new Date(D.getFullYear(),0,1);case 5:return new Date(D.getFullYear()-1,11,31);case 6:return new Date(D.getFullYear()-1,11,30)}}function U(D){let F=_n(new Date(D.tm_year+1900,0,1),D.tm_yday),te=new Date(F.getFullYear(),0,4),x=new Date(F.getFullYear()+1,0,4),Ie=O(te),we=O(x);return _(Ie,F)<=0?_(we,F)<=0?F.getFullYear()+1:F.getFullYear():F.getFullYear()-1}let Y={"%a"(D){return E[D.tm_wday].substring(0,3)},"%A"(D){return E[D.tm_wday]},"%b"(D){return I[D.tm_mon].substring(0,3)},"%B"(D){return I[D.tm_mon]},"%C"(D){let F=D.tm_year+1900;return h(F/100|0,2)},"%d"(D){return h(D.tm_mday,2)},"%e"(D){return B(D.tm_mday,2," ")},"%g"(D){return U(D).toString().substring(2)},"%G"(D){return U(D)},"%H"(D){return h(D.tm_hour,2)},"%I"(D){let F=D.tm_hour;return F==0?F=12:F>12&&(F-=12),h(F,2)},"%j"(D){return h(D.tm_mday+yA(hn(D.tm_year+1900)?mn:Qn,D.tm_mon-1),3)},"%m"(D){return h(D.tm_mon+1,2)},"%M"(D){return h(D.tm_min,2)},"%n"(){return` `},"%p"(D){return D.tm_hour>=0&&D.tm_hour<12?"AM":"PM"},"%S"(D){return h(D.tm_sec,2)},"%t"(){return" "},"%u"(D){return D.tm_wday||7},"%U"(D){let F=new Date(D.tm_year+1900,0,1),te=F.getDay()===0?F:_n(F,7-F.getDay()),x=new Date(D.tm_year+1900,D.tm_mon,D.tm_mday);if(_(te,x)<0){let Ie=yA(hn(x.getFullYear())?mn:Qn,x.getMonth()-1)-31,nt=31-te.getDate()+Ie+x.getDate();return h(Math.ceil(nt/7),2)}return _(te,F)===0?"01":"00"},"%V"(D){let F=new Date(D.tm_year+1900,0,4),te=new Date(D.tm_year+1901,0,4),x=O(F),Ie=O(te),we=_n(new Date(D.tm_year+1900,0,1),D.tm_yday);if(_(we,x)<0)return"53";if(_(Ie,we)<=0)return"01";let nt;return x.getFullYear()=0;return F=Math.abs(F)/60,F=F/60*100+F%60,(te?"+":"-")+`0000${F}`.slice(-4)},"%Z"(D){return D.tm_zone},"%%"(){return"%"}};for(var d in Y)s.includes(d)&&(s=s.replace(new RegExp(d,"g"),Y[d](o)));let q=wn(s,!1);return q.length>t?0:(xr(q,e),q.length-1)}function qs(e,t,r,A){return KA(e,t,r,A)}n.requestFullscreen=function(t,r){Q.requestFullscreen(t,r)},n.requestFullScreen=function(){Q.requestFullScreen()},n.requestAnimationFrame=function(t){Q.requestAnimationFrame(t)},n.setCanvasSize=function(t,r,A){Q.setCanvasSize(t,r,A)},n.pauseMainLoop=function(){Q.mainLoop.pause()},n.resumeMainLoop=function(){Q.mainLoop.resume()},n.getUserMedia=function(){Q.getUserMedia()},n.createContext=function(t,r,A,i){return Q.createContext(t,r,A,i)};let VA=function(e,t,r,A){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=a.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=A},yn=365,Dn=146;Object.defineProperties(VA.prototype,{read:{get(){return(this.mode&yn)===yn},set(e){e?this.mode|=yn:this.mode&=~yn}},write:{get(){return(this.mode&Dn)===Dn},set(e){e?this.mode|=Dn:this.mode&=~Dn}},isFolder:{get(){return a.isDir(this.mode)}},isDevice:{get(){return a.isChrdev(this.mode)}}}),a.FSNode=VA,a.staticInit(),n.FS_createPath=a.createPath,n.FS_createDataFile=a.createDataFile,n.FS_createPreloadedFile=a.createPreloadedFile,n.FS_createLazyFile=a.createLazyFile,n.FS_createDevice=a.createDevice,n.FS_unlink=a.unlink,dA(),An=n.PureVirtualError=or(Error,"PureVirtualError"),mr(),CA(),Rt=n.BindingError=or(Error,"BindingError"),S=n.InternalError=or(Error,"InternalError"),br(),Bi(),kA=n.UnboundTypeError=or(Error,"UnboundTypeError");let y;for(var Ge=0;Ge<32;++Ge)XA.push(new Array(Ge));let ea=new Float32Array(288);for(var Ge=0;Ge<288;++Ge)Cn[Ge]=ea.subarray(0,Ge+1);let ta=new Int32Array(288);for(var Ge=0;Ge<288;++Ge)JA[Ge]=ta.subarray(0,Ge+1);let bc=!0;function wn(e,t,r){let A=r>0?r:yt(e)+1,i=new Array(A),o=_t(e,i,0,i.length);return t&&(i.length=o),i}let ra=typeof atob=="function"?atob:function(e){let t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",r="",A,i,o,s,c,d,E,I=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");do s=t.indexOf(e.charAt(I++)),c=t.indexOf(e.charAt(I++)),d=t.indexOf(e.charAt(I++)),E=t.indexOf(e.charAt(I++)),A=s<<2|c>>4,i=(c&15)<<4|d>>2,o=(d&3)<<6|E,r=r+String.fromCharCode(A),d!==64&&(r=r+String.fromCharCode(i)),E!==64&&(r=r+String.fromCharCode(o));while(I0||(ac(),jn(),at>0))return;function t(){bn||(bn=!0,n.calledRun=!0,!Ke&&(Hn(),T(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),M(!n._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),fr()))}n.setStatus?(n.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>{n.setStatus("")},1),t()},1)):t(),Ve()}n.run=bA;function cc(){let e=ye,t=Z,r=!1;ye=Z=function(A){r=!0};try{let A=n._fflush;A&&A(0),["stdout","stderr"].forEach(i=>{let o=a.analyzePath(`/dev/${i}`);if(!o)return;let s=o.object,{rdev:c}=s,d=et.ttys[c];d&&d.output&&d.output.length&&(r=!0)})}catch(A){}ye=e,Z=t,r&&Pe("stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc.")}function gc(e,t){if(zt=e,cc(),Xe()){if(!t){let r=`program exited (with status: ${e}), but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)`;se(r),Z(r)}}else Er();ei(e)}function ei(e){zt=e,Xe()||(n.onExit&&n.onExit(e),Ke=!0),Re(e,new wA(e))}if(n.preInit)for(typeof n.preInit=="function"&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return bA(),R.ready}}(),ci=Qc;var yc={},_c=(()=>{var X=yc.url;return function(R={}){var n,T=Object.assign({},R),se,ce,ge=new Promise((l,g)=>{se=l,ce=g}),be=!0,Te=!1,Re=Object.assign({},T),Se=[],Je="./this.program",ht=(l,g)=>{throw g},At="",je,Mn,St;(be||Te)&&(Te?At=self.location.href:typeof document!="undefined"&&document.currentScript&&(At=document.currentScript.src),X&&(At=X),At.startsWith("blob:")?At="":At=At.substr(0,At.replace(/[?#].*/,"").lastIndexOf("/")+1),je=l=>{var g=new XMLHttpRequest;return g.open("GET",l,!1),g.send(null),g.responseText},Te&&(St=l=>{var g=new XMLHttpRequest;return g.open("GET",l,!1),g.responseType="arraybuffer",g.send(null),new Uint8Array(g.response)}),Mn=(l,g,f)=>{var p=new XMLHttpRequest;p.open("GET",l,!0),p.responseType="arraybuffer",p.onload=()=>{if(p.status==200||p.status==0&&p.response){g(p.response);return}f()},p.onerror=f,p.send(null)});var Fn=T.print||console.log.bind(console),Pt=T.printErr||console.error.bind(console);Object.assign(T,Re),Re=null,T.arguments&&(Se=T.arguments),T.thisProgram&&(Je=T.thisProgram),T.quit&&(ht=T.quit);var Kt;T.wasmBinary&&(Kt=T.wasmBinary);function vn(l){for(var g=atob(l),f=new Uint8Array(g.length),p=0;pl.startsWith(Ur);function Un(){var l="data:application/octet-stream;base64,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BSQAAkAgAiADTA0AIARBgMAEcQ0AIAUgASACIANrIgNBgAIgA0GAAkkiARsQIxogAUUEQANAIAAgBUGAAhAcIANBgAJrIgNB/wFLDQALCyAAIAUgAxAcCyAFQYACaiQAC+UDAQV/IwBBEGsiAyQAIAMgACgCACIEQQhrKAIAIgI2AgwgAyAAIAJqNgIEIAMgBEEEaygCADYCCCADKAIIIgQgAUEAEB0hAiADKAIEIQUCQCACBEAgAygCDCEAIwBBQGoiASQAIAFBQGskAEEAIAUgABshAgwBCyMAQUBqIgIkACAAIAVOBEAgAkIANwIcIAJCADcCJCACQgA3AiwgAkIANwIUIAJBADYCECACIAE2AgwgAiAENgIEIAJBADYCPCACQoGAgICAgICAATcCNCACIAA2AgggBCACQQRqIAUgBUEBQQAgBCgCACgCFBEJACAAQQAgAigCHBshBgsgAkFAayQAIAYiAg0AIwBBQGoiAiQAIAJBADYCECACQezIADYCDCACIAA2AgggAiABNgIEQQAhACACQRRqQQBBJxAjGiACQQA2AjwgAkEBOgA7IAQgAkEEaiAFQQFBACAEKAIAKAIYEQgAAkACQAJAIAIoAigOAgABAgsgAigCGEEAIAIoAiRBAUYbQQAgAigCIEEBRhtBACACKAIsQQFGGyEADAELIAIoAhxBAUcEQCACKAIsDQEgAigCIEEBRw0BIAIoAiRBAUcNAQsgAigCFCEACyACQUBrJAAgACECCyADQRBqJAAgAgu0AQEFfyMAQRBrIgYkACAGQQRqIgIQQSMAQRBrIgUkAAJ/IAItAAtBB3YEQCACKAIEDAELIAItAAtB/wBxCyEEA0ACQAJ/IAItAAtBB3YEQCACKAIADAELIAILIQMgBSABOQMAIAICfyADIARBAWogBRBHIgNBAE4EQCADIARNDQIgAwwBCyAEQQF0QQFyCyIEECwMAQsLIAIgAxAsIAAgAhBAIAVBEGokACACEEQgBkEQaiQAC4AEAQN/IAJBgARPBEAgACABIAIQESAADwsgACACaiEDAkAgACABc0EDcUUEQAJAIABBA3FFBEAgACECDAELIAJFBEAgACECDAELIAAhAgNAIAIgAS0AADoAACABQQFqIQEgAkEBaiICQQNxRQ0BIAIgA0kNAAsLAkAgA0F8cSIEQcAASQ0AIAIgBEFAaiIFSw0AA0AgAiABKAIANgIAIAIgASgCBDYCBCACIAEoAgg2AgggAiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBU0NAAsLIAIgBE8NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIARJDQALDAELIANBBEkEQCAAIQIMAQsgACADQQRrIgRLBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsgAAsLACABIAIgABBFGgvyAgICfwF+AkAgAkUNACAAIAE6AAAgACACaiIDQQFrIAE6AAAgAkEDSQ0AIAAgAToAAiAAIAE6AAEgA0EDayABOgAAIANBAmsgAToAACACQQdJDQAgACABOgADIANBBGsgAToAACACQQlJDQAgAEEAIABrQQNxIgRqIgMgAUH/AXFBgYKECGwiATYCACADIAIgBGtBfHEiBGoiAkEEayABNgIAIARBCUkNACADIAE2AgggAyABNgIEIAJBCGsgATYCACACQQxrIAE2AgAgBEEZSQ0AIAMgATYCGCADIAE2AhQgAyABNgIQIAMgATYCDCACQRBrIAE2AgAgAkEUayABNgIAIAJBGGsgATYCACACQRxrIAE2AgAgBCADQQRxQRhyIgRrIgJBIEkNACABrUKBgICAEH4hBSADIARqIQEDQCABIAU3AxggASAFNwMQIAEgBTcDCCABIAU3AwAgAUEgaiEBIAJBIGsiAkEfSw0ACwsgAAsSACABQQF0QYDHAGpBAiAAEEULBQAQaQALiAECAX4FfwJAIABCgICAgBBUBEAgACECDAELA0AgAUEBayIBIAAgAEIKgCICQgp+fadBMHI6AAAgAEL/////nwFWIQYgAiEAIAYNAAsLIAJCAFIEQCACpyEDA0AgAUEBayIBIAMgA0EKbiIEQQps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IAAoAghBgICAgHhyNgIIIARBEGokAAwBCxAlAAsgACABNgIECyABAn8gAC0AC0EHdgRAIAAoAgAMAQsgAAsiAmogBRBDIAAgASAFaiIAEDAgBkEAOgAPIAAgAmogBi0ADzoAAAsgBkEQaiQADwsCfyAALQALQQd2BEAgACgCAAwBCyAACyEEIwBBEGsiAiQAAn8gAC0AC0EHdgRAIAAoAgQMAQsgAC0ACwsaIAAgARAwIAJBADoADyABIARqIAItAA86AAAgAkEQaiQACz0BAX8jAEEQayICJAAgAkEAOgAPA0AgAQRAIAAgAi0ADzoAACABQQFrIQEgAEEBaiEADAELCyACQRBqJAALGgAgAC0AC0EHdgRAIAAoAggaIAAoAgAQGAsL5gEBBX8jAEEQayIFJAAjAEEgayIDJAAjAEEQayIEJAAgBCAANgIMIAQgACABajYCCCADIAQoAgw2AhggAyAEKAIINgIcIARBEGokACADKAIYIQQgAygCHCEGIwBBEGsiASQAIAEgBjYCDCACIAQgBiAEayIEEDUgASACIARqNgIIIAMgASgCDDYCECADIAEoAgg2AhQgAUEQaiQAIAMgACADKAIQIABrajYCDCADIAIgAygCFCACa2o2AgggBSADKAIMNgIIIAUgAygCCDYCDCADQSBqJAAgBSgCDCEHIAVBEGokACAHC/MCAQV/IwBBEGsiByQAIAIgAUF/c0H3////B2pNBEACfyAALQALQQd2BEAgACgCAAwBCyAACyEIIAdBBGoiCSABQfP///8DSQR/IAcgAUEBdDYCDCAHIAEgAmo2AgQjAEEQayICJAAgCSgCACAHQQxqIgooAgBJIQsgAkEQaiQAIAogCSALGygCACICQQtPBH8gAkEIakF4cSICIAJBAWsiAiACQQtGGwVBCgtBAWoFQff///8HCxAvIAcoAgQhAiAHKAIIGiAEBEAgAiAIIAQQIgsgBQRAIAIgBGogBiAFECILIAMgBGshBiADIARHBEAgAiAEaiAFaiAEIAhqIAYQIgsgAUEKRwRAIAgQGAsgACACNgIAIAAgACgCCEGAgICAeHEgBygCCEH/////B3FyNgIIIAAgACgCCEGAgICAeHI2AgggACAEIAVqIAZqIgA2AgQgB0EAOgAMIAAgAmogBy0ADDoAACAHQRBqJAAPCxAlAAvHAwEFfyMAQRBrIgUkACAFIAI2AgwjAEGgAWsiAyQAIAMgACADQZ4BaiABGyIENgKUASADIAFBAWsiAEEAIAAgAU0bNgKYASADQQBBkAEQIyIAQX82AkwgAEEbNgIkIABBfzYCUCAAIABBnwFqNgIsIAAgAEGUAWo2AlQgBEEAOgAAQQAhAyMAQdABayIBJAAgASACNgLMASABQaABaiICQQBBKBAjGiABIAEoAswBNgLIAQJAQQAgAUHIAWogAUHQAGogAhBMQQBIBEBBfyECDAELIAAoAkxBAEghByAAIAAoAgAiBkFfcTYCAAJ/AkACQCAAKAIwRQRAIABB0AA2AjAgAEEANgIcIABCADcDECAAKAIsIQMgACABNgIsDAELIAAoAhANAQtBfyAAEE8NARoLIAAgAUHIAWogAUHQAGogAUGgAWoQTAshAiADBEAgAEEAQQAgACgCJBEDABogAEEANgIwIAAgAzYCLCAAQQA2AhwgACgCFCEDIABCADcDECACQX8gAxshAgsgACAAKAIAIgMgBkEgcXI2AgBBfyACIANBIHEbIQIgBw0ACyABQdABaiQAIABBoAFqJAAgBUEQaiQAIAILngUCBn4EfyABIAEoAgBBB2pBeHEiAUEQajYCACAAIQsgASkDACEDIAEpAwghByMAQSBrIggkACAHQv///////z+DIQQCfiAHQjCIQv//AYMiBaciCkGB+ABrQf0PTQRAIARCBIYgA0I8iIQhAiAKQYD4AGutIQUCQCADQv//////////D4MiA0KBgICAgICAgAhaBEAgAkIBfCECDAELIANCgICAgICAgIAIUg0AIAJCAYMgAnwhAgtCACACIAJC/////////wdWIgAbIQIgAK0gBXwMAQsCQCADIASEUA0AIAVC//8BUg0AIARCBIYgA0I8iIRCgICAgICAgASEIQJC/w8MAQtC/w8gCkH+hwFLDQAaQgBBgPgAQYH4ACAFUCIBGyIAIAprIglB8ABKDQAaIAMhAiAEIARCgICAgICAwACEIAEbIgYhBAJAQYABIAlrIgFBwABxBEAgAyABQUBqrYYhBEIAIQIMAQsgAUUNACAEIAGtIgWGIAJBwAAgAWutiIQhBCACIAWGIQILIAggAjcDECAIIAQ3AxgCQCAJQcAAcQRAIAYgCUFAaq2IIQNCACEGDAELIAlF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AgQgAEHM0AA2AgAgAkEQaiQAC2ACAX8BfCMAQRBrIgIkACACQQA2AgwgASgCBEGszAAgAkEMahAJIQMgAigCDCIBBEAgARABCyAAAn8gA5lEAAAAAAAA4EFjBEAgA6oMAQtBgICAgHgLNgI8IAJBEGokAAs3AQF/IwBBEGsiAiQAIAIgASgCPDYCCCAAQazMACACQQhqEAg2AgQgAEHM0AA2AgAgAkEQaiQACwvGRhAAQYAIC5Qic2V0QmVhdXR5AC0rICAgMFgweAAtMFgrMFggMFgtMHgrMHggMHgAdW5zaWduZWQgc2hvcnQAdW5zaWduZWQgaW50AGluaXQAZmxvYXQAdWludDY0X3QAYmx1clJhZGl1cwB2ZWN0b3IAbWlycm9yAGF0dGFjaFNoYWRlcgBkZWxldGVTaGFkZXIAY3JlYXRlU2hhZGVyAGNvbXBpbGVTaGFkZXIAdW5zaWduZWQgY2hhcgBzdGQ6OmV4Y2VwdGlvbgBuYW4AbGlua1Byb2dyYW0AZGVsZXRlUHJvZ3JhbQBjcmVhdGVQcm9ncmFtAGJvb2wAc2V0V2F0ZXJNYXJrAHN0b3BXYXRlck1hcmsAdW5zaWduZWQgbG9uZwBzdGQ6OndzdHJpbmcAYmFzaWNfc3RyaW5nAHN0ZDo6c3RyaW5nAHN0ZDo6dTE2c3RyaW5nAHN0ZDo6dTMyc3RyaW5nAGluZgAlZgBjbG9zZQBkb3VibGUAdmJNb2RlAHNoYWRlclNvdXJjZQB2b2lkAHNhbXBsZUNvbG9yICs9IHRleHR1cmUoZnJhbWUsIGJsdXJDb29yZGluYXRlc1sATkFOAElORgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgc2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgaW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxmbG9hdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDhfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDY0X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDY0X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBjaGFyPgBzdGQ6OmJhc2ljX3N0cmluZzx1bnNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8bG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgbG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZG91YmxlPgB2ZWMyIGMgPSB2X3RleENvb3JkOwB2ZWMyIGMgPSB2ZWMyKDEuMCAtIHZfdGV4Q29vcmQueCwgdl90ZXhDb29yZC55KTsAQWxsSW4xAC4ALjAsAC4wKSpvKSoAKG51bGwpACkqby55KTsgICAgdmVjMiBjb29yZDIgPSB2ZWMyKGZsb2F0KAAgICAgYyA9IHZlYzIodl90ZXhDb29yZC54LCAxLjAgLSB2X3RleENvb3JkLnkpOyAgICB2ZWMyIGNvb3JkMSA9IHZlYzIoZmxvYXQoACksIChjLnkgLWNvb3JkMS55KSAvIG8ueSAvIGZsb2F0KAApKm8ueSk7ICAgIGlmIChjLnggPiBjb29yZDEueCAmJiBjLnggPCBjb29yZDIueCAmJiBjLnkgPiBjb29yZDEueSAmJiBjLnkgPCBjb29yZDIueSkgeyAgICAgIHZlYzQgd2F0ZXJDb2xvciA9IHRleHR1cmUod2F0ZXJNYXJrLCB2ZWMyKChjLnggLSBjb29yZDEueCkgIC8gby54IC8gZmxvYXQoACkgKiBvLngsIGZsb2F0KAApOyAgICAgdmVjMyBzbW9vdGhDb2xvciA9IG91dENvbG9yLnJnYiArIChvdXRDb2xvci5yZ2ItdmVjMyhoaWdoUGFzcykpKmFscGhhKjAuMTsgICAgIHNtb290aENvbG9yID0gY2xhbXAocG93KHNtb290aENvbG9yLCB2ZWMzKAApOyAgICBuZXdDb2xvci5yZ2IgPSB2ZWMzKG5ld0NvbG9yLnJnYiArIHZlYzMoAGcrPUcoYyx2ZWMyKAAgICAgdmVjMiBvZmZzZXQgPSB2ZWMyKABdID0gdl90ZXhDb29yZC54eSArIG9mZnNldCAqIHZlYzIoADsgACkpLCB2ZWMzKDAuMCksIHZlYzMoMS4wKSk7ICAgIHZlYzMgc2NyZWVuID0gdmVjMygxLjApIC0gKHZlYzMoMS4wKS1zbW9vdGhDb2xvcikgKiAodmVjMygxLjApLW91dENvbG9yLnJnYik7ICAgICB2ZWMzIGxpZ2h0ZW4gPSBtYXgoc21vb3RoQ29sb3IsIG91dENvbG9yLnJnYik7ICAgICB2ZWMzIHNvZnRMaWdodCA9IDIuMCAqIG91dENvbG9yLnJnYipzbW9vdGhDb2xvciArIG91dENvbG9yLnJnYipvdXRDb2xvci5yZ2IgLSAyLjAgKiBvdXRDb2xvci5yZ2Iqb3V0Q29sb3IucmdiICogc21vb3RoQ29sb3I7ICAgICB2ZWM0IG5ld0NvbG9yID0gb3V0Q29sb3I7ICAgICBuZXdDb2xvci5yZ2IgPSBtaXgobWl4KG1peChuZXdDb2xvci5yZ2IsIHNjcmVlbiwgYWxwaGEpLCBsaWdodGVuLCBhbHBoYSksIHNvZnRMaWdodCwgACk7ICAgIGNvbnN0IG1hdDMgc2F0dXJhdGVNYXRyaXggPSBtYXQzKDEuMTEwMiwtMC4wNTk4LC0wLjA2MSwtMC4wNzc0LDEuMDgyNiwtMC4xMTg2LC0wLjAyMjgsLTAuMDIyOCwxLjE3NzIpOyAgICB2ZWMzIHNhdENvbG9yID0gbmV3Q29sb3IucmdiICogc2F0dXJhdGVNYXRyaXg7ICAgIG5ld0NvbG9yLnJnYiA9IG1peChuZXdDb2xvci5yZ2IsIHNhdENvbG9yLCAAICAgIHNhbXBsZUNvbG9yID0gc2FtcGxlQ29sb3IgLyA2Mi4wOyAgICAgZmxvYXQgaGlnaFBhc3MgPSBvdXRDb2xvci5nIC0gc2FtcGxlQ29sb3IgKyAwLjU7ICAgICBmb3IoaW50IGkgPSAwOyBpIDwgNTsgaSsrKSB7ICAgICAgIGlmIChoaWdoUGFzcyA8PSAwLjUpIHsgICAgICAgICBoaWdoUGFzcyA9IGhpZ2hQYXNzICogaGlnaFBhc3MgKiAyLjA7ICAgICAgIH0gZWxzZSB7ICAgICAgICAgaGlnaFBhc3MgPSAxLjAgLSAoKDEuMCAtIGhpZ2hQYXNzKSooMS4wIC0gaGlnaFBhc3MpICogMi4wKTsgICAgICAgfSAgICAgfSAgICAgY29uc3QgaGlnaHAgdmVjMyBXID0gdmVjMygwLjI5OSwwLjU4NywwLjExNCk7ICAgIGZsb2F0IGx1bWluYW5jZSA9IGRvdChvdXRDb2xvci5yZ2IsIFcpOyAgICAgZmxvYXQgYWxwaGEgPSBwb3cobHVtaW5hbmNlLCAAXSkuZyAqIAApKTsgICAgb3V0Q29sb3IgPSBtaXgob3V0Q29sb3IsIG5ld0NvbG9yLCAxLjApOyAgIAApKSk7ICAgICAgb3V0Q29sb3IgPSBtaXgob3V0Q29sb3Isd2F0ZXJDb2xvciwgIHdhdGVyQ29sb3IuYSk7ICAgIH0gICAgACk7ICAgIHZlYzIgYmx1ckNvb3JkaW5hdGVzWzI0XTsgICAgACAgICBmbG9hdCBzYW1wbGVDb2xvciA9IG91dENvbG9yLmcgKiAyMi4wOyAgICAgACN2ZXJzaW9uIDMwMCBlcwogICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwogICAgdW5pZm9ybSBzYW1wbGVyMkQgZnJhbWU7CiAgICB1bmlmb3JtIHNhbXBsZXIyRCBtYXNrOwogICAgdW5pZm9ybSBzYW1wbGVyMkQgYmc7CiAgICB1bmlmb3JtIHNhbXBsZXIyRCB3YXRlck1hcms7CiAgICB1bmlmb3JtIHNhbXBsZXIyRCBsYXN0TWFzazsKICAgIGluIHZlYzIgdl90ZXhDb29yZDsKICAgIG91dCB2ZWM0IG91dENvbG9yOwogICAgdmVjNCBHKHZlYzIgYyx2ZWMyIHMpewogICAgICByZXR1cm4gdGV4dHVyZShmcmFtZSx0ZXh0dXJlKG1hc2ssYytzKS5hPjAuMz9jOmMrcyk7CiAgICB9CiAgICB2b2lkIG1haW4oKSB7CiAgICAgIAAKICAgIHZlYzQgZyA9IHZlYzQoMC4wKTsKICAgIAAKICAgICAgYy55ID0gMS4wIC0gYy55OwogICAgICB2ZWM0IHNyY19jb2xvciA9IHRleHR1cmUoZnJhbWUsIGMpOwogICAgICBmbG9hdCBhID0gdGV4dHVyZShtYXNrLCBjKS5hOwogICAgICBhID0gYTwwLjU/Mi4wKmEqYToxLjAtMi4wKigxLjAtYSkqKDEuMC1hKTsKICAgICAgLy8gZmxvYXQgYTIgPSB0ZXh0dXJlKGxhc3RNYXNrLCBjKS5hOwogICAgICAvLyBhMiA9IGEyPDAuNT8yLjAqYTIqYTI6MS4wLTIuMCooMS4wLWEyKSooMS4wLWEyKTsKICAgICAgLy8gZmxvYXQgZGVsdGEgPSBhIC0gYTI7CiAgICAgIC8vIGlmIChkZWx0YSA8IDAuMjUgJiYgZGVsdGEgPiAtMC4yNSkKICAgICAgLy8gewogICAgICAvLyAgICAgYSA9IGEgKyAwLjUqZGVsdGE7CiAgICAgIC8vIH0KICAgICAgCiAgICAgIHZlYzIgbyA9IDEuMCAvIHZlYzIodGV4dHVyZVNpemUoZnJhbWUsIDApKTsKICAgIAAKICAgICAgb3V0Q29sb3IgPSBnOwogIAAjdmVyc2lvbiAzMDAgZXMKaW4gdmVjMiBhX3Bvc2l0aW9uOwppbiB2ZWMyIGFfdGV4Q29vcmQ7Cm91dCB2ZWMyIHZfdGV4Q29vcmQ7CnZvaWQgbWFpbigpIHsKICBnbF9Qb3NpdGlvbiA9IHZlYzQoYV9wb3NpdGlvbi54LCBhX3Bvc2l0aW9uLnksIDAsIDEpOwogIHZfdGV4Q29vcmQgPSBhX3RleENvb3JkOwp9CgBvdXRDb2xvciA9IHNyY19jb2xvcjsKAG91dENvbG9yID0gbWl4KHRleHR1cmUoYmcsIGMpLHNyY19jb2xvcixhKTsKAG91dENvbG9yID0gbWl4KHZlYzQoMC4wLDEuMCwwLjAsMS4wKSxzcmNfY29sb3IsYSk7CgA2QWxsSW4xAJAmAABwFAAAUDZBbGxJbjEAAAAAFCcAAIAUAAAAAAAAeBQAAFBLNkFsbEluMQAAABQnAACcFAAAAQAAAHgUAABwcAB2AHZwAIwUAADcFAAATjEwZW1zY3JpcHRlbjN2YWxFAACQJgAAyBQAAHBwcAB2cHBwAAAAAMwlAACMFAAAgCYAAIAmAACAJgAAgCYAAIAmAAB2cHBkZGRkZABBoCoLyAjMJQAAjBQAAIAmAACAJgAAgCYAAIAmAAB2cHBkZGRkAMwlAACMFAAAdnBwAMwlAADcFAAA3BQAAIwUAADcFAAALCYAAMwlAADcFAAAsBUAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFAACQJgAAcBUAANwUAADMJQAA3BQAANwUAABOU3QzX18yMTJiYXNpY19zdHJpbmdJaE5TXzExY2hhcl90cmFpdHNJaEVFTlNfOWFsbG9jYXRvckloRUVFRQAAkCYAAMgVAABOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFRQAAkCYAABAWAABOU3QzX18yMTJiYXNpY19zdHJpbmdJRHNOU18xMWNoYXJfdHJhaXRzSURzRUVOU185YWxsb2NhdG9ySURzRUVFRQAAAJAmAABYFgAATlN0M19fMjEyYmFzaWNfc3RyaW5nSURpTlNfMTFjaGFyX3RyYWl0c0lEaUVFTlNfOWFsbG9jYXRvcklEaUVFRUUAAACQJgAApBYAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWNFRQAAkCYAAPAWAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lhRUUAAJAmAAAYFwAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaEVFAACQJgAAQBcAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXNFRQAAkCYAAGgXAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l0RUUAAJAmAACQFwAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaUVFAACQJgAAuBcAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWpFRQAAkCYAAOAXAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lsRUUAAJAmAAAIGAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJbUVFAACQJgAAMBgAAE4xMGVtc2NyaXB0ZW4x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";return l}var Zt;function xn(l){if(l==Zt&&Kt)return new Uint8Array(Kt);var g=OA(l);if(g)return g;if(St)return St(l);throw"both async and sync fetching of the wasm failed"}function ur(l){return Promise.resolve().then(()=>xn(l))}function xr(l,g,f){return ur(l).then(p=>WebAssembly.instantiate(p,g)).then(f,p=>{Pt(`failed to asynchronously prepare wasm: ${p}`),lr(p)})}function Ln(l,g,f,p){return xr(g,f,p)}function Gn(){return{a:Ct}}function Mt(){var l=Gn();function g(p,w){return xe=p.exports,ye=xe.y,gr(),$n=xe.B,Nr(xe.z),kr("wasm-instantiate"),xe}yt("wasm-instantiate");function f(p){g(p.instance)}if(T.instantiateWasm)try{return T.instantiateWasm(l,g)}catch(p){Pt(`Module.instantiateWasm callback failed with error: ${p}`),ce(p)}return Zt||(Zt=Un()),Ln(Kt,Zt,l,f).catch(ce),{}}var oe=l=>{for(;l.length>0;)l.shift()(T)},le=T.noExitRuntime||!0;class ot{constructor(g){this.excPtr=g,this.ptr=g-24}set_type(g){ae[this.ptr+4>>2]=g}get_type(){return ae[this.ptr+4>>2]}set_destructor(g){ae[this.ptr+8>>2]=g}get_destructor(){return ae[this.ptr+8>>2]}set_caught(g){g=g?1:0,dt[this.ptr+12]=g}get_caught(){return dt[this.ptr+12]!=0}set_rethrown(g){g=g?1:0,dt[this.ptr+13]=g}get_rethrown(){return dt[this.ptr+13]!=0}init(g,f){this.set_adjusted_ptr(0),this.set_type(g),this.set_destructor(f)}set_adjusted_ptr(g){ae[this.ptr+16>>2]=g}get_adjusted_ptr(){return ae[this.ptr+16>>2]}get_exception_ptr(){var g=sn(this.get_type());if(g)return ae[this.excPtr>>2];var f=this.get_adjusted_ptr();return f!==0?f:this.excPtr}}var Dt=0,m=0,Ae=(l,g,f)=>{var p=new ot(l);throw p.init(g,f),Dt=l,m++,Dt},pe=()=>{lr("")},dr=(l,g,f,p,w)=>{},Lr=()=>{for(var l=new Array(256),g=0;g<256;++g)l[g]=String.fromCharCode(g);qt=l},qt,me=l=>{for(var g="",f=l;he[f];)g+=qt[he[f++]];return g},v={},st={},Ve={},Et,$=l=>{throw new Et(l)},Gr,Ft=l=>{throw new Gr(l)},$e=(l,g,f)=>{l.forEach(function(b){Ve[b]=g});function p(b){var N=f(b);N.length!==l.length&&Ft("Mismatched type converter count");for(var L=0;L{st.hasOwnProperty(b)?w[N]=st[b]:(S.push(b),v.hasOwnProperty(b)||(v[b]=[]),v[b].push(()=>{w[N]=st[b],++P,P===S.length&&p(w)}))}),S.length===0&&p(w)};function jr(l,g,f={}){var p=g.name;if(l||$(`type "${p}" must have a positive integer typeid pointer`),st.hasOwnProperty(l)){if(f.ignoreDuplicateRegistrations)return;$(`Cannot register type '${p}' twice`)}if(st[l]=g,delete Ve[l],v.hasOwnProperty(l)){var w=v[l];delete v[l],w.forEach(S=>S())}}function ze(l,g,f={}){if(!("argPackAdvance"in g))throw new TypeError("registerType registeredInstance requires argPackAdvance");return jr(l,g,f)}var Xe=8,jn=(l,g,f,p)=>{g=me(g),ze(l,{name:g,fromWireType:function(w){return!!w},toWireType:function(w,S){return S?f:p},argPackAdvance:Xe,readValueFromPointer:function(w){return this.fromWireType(he[w])},destructorFunction:null})},Hn=l=>({count:l.count,deleteScheduled:l.deleteScheduled,preservePointerOnDelete:l.preservePointerOnDelete,ptr:l.ptr,ptrType:l.ptrType,smartPtr:l.smartPtr,smartPtrType:l.smartPtrType}),Er=l=>{function g(f){return f.$$.ptrType.registeredClass.name}$(g(l)+" instance already deleted")},fr=!1,Hr=l=>{},Yn=l=>{l.smartPtr?l.smartPtrType.rawDestructor(l.smartPtr):l.ptrType.registeredClass.rawDestructor(l.ptr)},Yr=l=>{l.count.value-=1;var g=l.count.value===0;g&&Yn(l)},at=(l,g,f)=>{if(g===f)return l;if(f.baseClass===void 0)return null;var p=at(l,g,f.baseClass);return p===null?null:f.downcast(p)},ct={},vt=()=>Object.keys(Nt).length,wt=()=>{var l=[];for(var g in Nt)Nt.hasOwnProperty(g)&&l.push(Nt[g]);return l},bt=[],Tt=()=>{for(;bt.length;){var l=bt.pop();l.$$.deleteScheduled=!1,l.delete()}},Ze,u=l=>{Ze=l,bt.length&&Ze&&Ze(Tt)},Xn=()=>{T.getInheritedInstanceCount=vt,T.getLiveInheritedInstances=wt,T.flushPendingDeletes=Tt,T.setDelayFunction=u},Nt={},PA=(l,g)=>{for(g===void 0&&$("ptr should not be undefined");l.baseClass;)g=l.upcast(g),l=l.baseClass;return g},V=(l,g)=>(g=PA(l,g),Nt[g]),qe=(l,g)=>{(!g.ptrType||!g.ptr)&&Ft("makeClassHandle requires ptr and ptrType");var f=!!g.smartPtrType,p=!!g.smartPtr;return f!==p&&Ft("Both smartPtrType and smartPtr must be specified"),g.count={value:1},kt(Object.create(l,{$$:{value:g,writable:!0}}))};function MA(l){var g=this.getPointee(l);if(!g)return this.destructor(l),null;var f=V(this.registeredClass,g);if(f!==void 0){if(f.$$.count.value===0)return f.$$.ptr=g,f.$$.smartPtr=l,f.clone();var p=f.clone();return this.destructor(l),p}function w(){return this.isSmartPointer?qe(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:g,smartPtrType:this,smartPtr:l}):qe(this.registeredClass.instancePrototype,{ptrType:this,ptr:l})}var S=this.registeredClass.getActualType(g),P=ct[S];if(!P)return w.call(this);var b;this.isConst?b=P.constPointerType:b=P.pointerType;var N=at(g,this.registeredClass,b.registeredClass);return N===null?w.call(this):this.isSmartPointer?qe(b.registeredClass.instancePrototype,{ptrType:b,ptr:N,smartPtrType:this,smartPtr:l}):qe(b.registeredClass.instancePrototype,{ptrType:b,ptr:N})}var kt=l=>typeof FinalizationRegistry=="undefined"?(kt=g=>g,l):(fr=new FinalizationRegistry(g=>{Yr(g.$$)}),kt=g=>{var f=g.$$,p=!!f.smartPtr;if(p){var w={$$:f};fr.register(g,w,g)}return g},Hr=g=>fr.unregister(g),kt(l)),Ee=()=>{Object.assign(Me.prototype,{isAliasOf(l){if(!(this instanceof Me)||!(l instanceof Me))return!1;var g=this.$$.ptrType.registeredClass,f=this.$$.ptr;l.$$=l.$$;for(var p=l.$$.ptrType.registeredClass,w=l.$$.ptr;g.baseClass;)f=g.upcast(f),g=g.baseClass;for(;p.baseClass;)w=p.upcast(w),p=p.baseClass;return g===p&&f===w},clone(){if(this.$$.ptr||Er(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var l=kt(Object.create(Object.getPrototypeOf(this),{$$:{value:Hn(this.$$)}}));return l.$$.count.value+=1,l.$$.deleteScheduled=!1,l},delete(){this.$$.ptr||Er(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&$("Object already scheduled for deletion"),Hr(this),Yr(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Er(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&$("Object already scheduled for deletion"),bt.push(this),bt.length===1&&Ze&&Ze(Tt),this.$$.deleteScheduled=!0,this}})};function Me(){}var Ut=(l,g)=>Object.defineProperty(g,"name",{value:l}),Xr=(l,g,f)=>{if(l[g].overloadTable===void 0){var p=l[g];l[g]=function(...w){return l[g].overloadTable.hasOwnProperty(w.length)||$(`Function '${f}' called with an invalid number of arguments (${w.length}) - expects one of (${l[g].overloadTable})!`),l[g].overloadTable[w.length].apply(this,w)},l[g].overloadTable=[],l[g].overloadTable[p.argCount]=p}},Ir=(l,g,f)=>{T.hasOwnProperty(l)?((f===void 0||T[l].overloadTable!==void 0&&T[l].overloadTable[f]!==void 0)&&$(`Cannot register public name '${l}' twice`),Xr(T,l,l),T.hasOwnProperty(f)&&$(`Cannot register multiple overloads of a function with the same number of arguments (${f})!`),T[l].overloadTable[f]=g):(T[l]=g,f!==void 0&&(T[l].numArguments=f))},ft=48,FA=57,Wr=l=>{if(l===void 0)return"_unknown";l=l.replace(/[^a-zA-Z0-9_]/g,"$");var g=l.charCodeAt(0);return g>=ft&&g<=FA?`_${l}`:l};function Wn(l,g,f,p,w,S,P,b){this.name=l,this.constructor=g,this.instancePrototype=f,this.rawDestructor=p,this.baseClass=w,this.getActualType=S,this.upcast=P,this.downcast=b,this.pureVirtualFunctions=[]}var er=(l,g,f)=>{for(;g!==f;)g.upcast||$(`Expected null or instance of ${f.name}, got an instance of ${g.name}`),l=g.upcast(l),g=g.baseClass;return l};function Cr(l,g){if(g===null)return this.isReference&&$(`null is not a valid ${this.name}`),0;g.$$||$(`Cannot pass "${Br(g)}" as a ${this.name}`),g.$$.ptr||$(`Cannot pass deleted object as a pointer of type ${this.name}`);var f=g.$$.ptrType.registeredClass,p=er(g.$$.ptr,f,this.registeredClass);return p}function Jr(l,g){var f;if(g===null)return this.isReference&&$(`null is not a valid ${this.name}`),this.isSmartPointer?(f=this.rawConstructor(),l!==null&&l.push(this.rawDestructor,f),f):0;(!g||!g.$$)&&$(`Cannot pass "${Br(g)}" as a ${this.name}`),g.$$.ptr||$(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&g.$$.ptrType.isConst&&$(`Cannot convert argument of type ${g.$$.smartPtrType?g.$$.smartPtrType.name:g.$$.ptrType.name} to parameter type ${this.name}`);var p=g.$$.ptrType.registeredClass;if(f=er(g.$$.ptr,p,this.registeredClass),this.isSmartPointer)switch(g.$$.smartPtr===void 0&&$("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:g.$$.smartPtrType===this?f=g.$$.smartPtr:$(`Cannot convert argument of type ${g.$$.smartPtrType?g.$$.smartPtrType.name:g.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:f=g.$$.smartPtr;break;case 2:if(g.$$.smartPtrType===this)f=g.$$.smartPtr;else{var w=g.clone();f=this.rawShare(f,gt.toHandle(()=>w.delete())),l!==null&&l.push(this.rawDestructor,f)}break;default:$("Unsupporting sharing policy")}return f}function Q(l,g){if(g===null)return this.isReference&&$(`null is not a valid ${this.name}`),0;g.$$||$(`Cannot pass "${Br(g)}" as a ${this.name}`),g.$$.ptr||$(`Cannot pass deleted object as a pointer of type ${this.name}`),g.$$.ptrType.isConst&&$(`Cannot convert argument of type ${g.$$.ptrType.name} to parameter type ${this.name}`);var f=g.$$.ptrType.registeredClass,p=er(g.$$.ptr,f,this.registeredClass);return p}function Ot(l){return this.fromWireType(ae[l>>2])}var Jn=()=>{Object.assign(xt.prototype,{getPointee(l){return this.rawGetPointee&&(l=this.rawGetPointee(l)),l},destructor(l){var g;(g=this.rawDestructor)==null||g.call(this,l)},argPackAdvance:Xe,readValueFromPointer:Ot,fromWireType:MA})};function xt(l,g,f,p,w,S,P,b,N,L,k){this.name=l,this.registeredClass=g,this.isReference=f,this.isConst=p,this.isSmartPointer=w,this.pointeeType=S,this.sharingPolicy=P,this.rawGetPointee=b,this.rawConstructor=N,this.rawShare=L,this.rawDestructor=k,!w&&g.baseClass===void 0?p?(this.toWireType=Cr,this.destructorFunction=null):(this.toWireType=Q,this.destructorFunction=null):this.toWireType=Jr}var Kn=(l,g,f)=>{T.hasOwnProperty(l)||Ft("Replacing nonexistent public symbol"),T[l].overloadTable!==void 0&&f!==void 0?T[l].overloadTable[f]=g:(T[l]=g,T[l].argCount=f)},Vn=(l,g,f)=>{l=l.replace(/p/g,"i");var p=T["dynCall_"+l];return p(g,...f)},tr=[],$n,Kr=l=>{var g=tr[l];return g||(l>=tr.length&&(tr.length=l+1),tr[l]=g=$n.get(l)),g},Lt=(l,g,f=[])=>{if(l.includes("j"))return Vn(l,g,f);var p=Kr(g)(...f);return p},rr=(l,g)=>(...f)=>Lt(l,g,f),Fe=(l,g)=>{l=me(l);function f(){return l.includes("j")?rr(l,g):Kr(g)}var p=f();return typeof p!="function"&&$(`unknown function pointer with signature ${l}: ${g}`),p},zn=(l,g)=>{var f=Ut(g,function(p){this.name=g,this.message=p;var w=new Error(p).stack;w!==void 0&&(this.stack=this.toString()+` `+w.replace(/^Error(:[^\n]*)?\n/,""))});return f.prototype=Object.create(l.prototype),f.prototype.constructor=f,f.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},f},nr,Vr=l=>{var g=Ht(l),f=me(g);return Le(g),f},ke=(l,g)=>{var f=[],p={};function w(S){if(!p[S]&&!st[S]){if(Ve[S]){Ve[S].forEach(w);return}f.push(S),p[S]=!0}}throw g.forEach(w),new nr(`${l}: `+f.map(Vr).join([", "]))},$r=(l,g,f,p,w,S,P,b,N,L,k,K,re)=>{k=me(k),S=Fe(w,S),b&&(b=Fe(P,b)),L&&(L=Fe(N,L)),re=Fe(K,re);var ne=Wr(k);Ir(ne,function(){ke(`Cannot construct ${k} due to unbound types`,[p])}),$e([l,g,f],p?[p]:[],fe=>{var sr,Tr;fe=fe[0];var De,Oe;p?(De=fe.registeredClass,Oe=De.instancePrototype):Oe=Me.prototype;var Qe=Ut(k,function(...Or){if(Object.getPrototypeOf(this)!==pt)throw new Et("Use 'new' to construct "+k);if(_e.constructor_body===void 0)throw new Et(k+" has no accessible constructor");var Xt=_e.constructor_body[Or.length];if(Xt===void 0)throw new Et(`Tried to invoke ctor of ${k} with invalid number of parameters (${Or.length}) - expected (${Object.keys(_e.constructor_body).toString()}) parameters instead!`);return Xt.apply(this,Or)}),pt=Object.create(Oe,{constructor:{value:Qe}});Qe.prototype=pt;var _e=new Wn(k,Qe,pt,re,De,S,b,L);_e.baseClass&&((Tr=(sr=_e.baseClass).__derivedClasses)!=null||(sr.__derivedClasses=[]),_e.baseClass.__derivedClasses.push(_e));var br=new xt(k,_e,!0,!1,!1),Be=new xt(k+"*",_e,!1,!1,!1),Yt=new xt(k+" const*",_e,!1,!0,!1);return ct[l]={pointerType:Be,constPointerType:Yt},Kn(ne,Qe),[br,Be,Yt]})},zr=(l,g)=>{for(var f=[],p=0;p>2]);return f},pr=l=>{for(;l.length;){var g=l.pop(),f=l.pop();f(g)}};function Zn(l){for(var g=1;g{var P=zr(g,f);w=Fe(p,w),$e([],[l],b=>{b=b[0];var N=`constructor ${b.name}`;if(b.registeredClass.constructor_body===void 0&&(b.registeredClass.constructor_body=[]),b.registeredClass.constructor_body[g-1]!==void 0)throw new Et(`Cannot register multiple constructors with identical number of parameters (${g-1}) for class '${b.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return b.registeredClass.constructor_body[g-1]=()=>{ke(`Cannot construct ${b.name} due to unbound types`,P)},$e([],P,L=>(L.splice(1,0,null),b.registeredClass.constructor_body[g-1]=Zr(N,L,null,w,S),[])),[]})},eA=l=>{l=l.trim();let g=l.indexOf("(");return g!==-1?l.substr(0,g):l},tA=(l,g,f,p,w,S,P,b,N)=>{var L=zr(f,p);g=me(g),g=eA(g),S=Fe(w,S),$e([],[l],k=>{k=k[0];var K=`${k.name}.${g}`;g.startsWith("@@")&&(g=Symbol[g.substring(2)]),b&&k.registeredClass.pureVirtualFunctions.push(g);function re(){ke(`Cannot call ${K} due to unbound types`,L)}var ne=k.registeredClass.instancePrototype,fe=ne[g];return fe===void 0||fe.overloadTable===void 0&&fe.className!==k.name&&fe.argCount===f-2?(re.argCount=f-2,re.className=k.name,ne[g]=re):(Xr(ne,g,K),ne[g].overloadTable[f-2]=re),$e([],L,De=>{var Oe=Zr(K,De,k,S,P,N);return ne[g].overloadTable===void 0?(Oe.argCount=f-2,ne[g]=Oe):ne[g].overloadTable[f-2]=Oe,[]}),[]})},qr=(l,g,f)=>(l instanceof Object||$(`${f} with invalid "this": ${l}`),l instanceof g.registeredClass.constructor||$(`${f} incompatible with "this" of type ${l.constructor.name}`),l.$$.ptr||$(`cannot call emscripten binding method ${f} on deleted object`),er(l.$$.ptr,l.$$.ptrType.registeredClass,g.registeredClass)),en=(l,g,f,p,w,S,P,b,N,L)=>{g=me(g),w=Fe(p,w),$e([],[l],k=>{k=k[0];var K=`${k.name}.${g}`,re={get(){ke(`Cannot access ${K} due to unbound types`,[f,P])},enumerable:!0,configurable:!0};return N?re.set=()=>ke(`Cannot access ${K} due to unbound types`,[f,P]):re.set=ne=>$(K+" is a read-only property"),Object.defineProperty(k.registeredClass.instancePrototype,g,re),$e([],N?[f,P]:[f],ne=>{var fe=ne[0],De={get(){var Qe=qr(this,k,K+" getter");return fe.fromWireType(w(S,Qe))},enumerable:!0};if(N){N=Fe(b,N);var Oe=ne[1];De.set=function(Qe){var pt=qr(this,k,K+" setter"),_e=[];N(L,pt,Oe.toWireType(_e,Qe)),pr(_e)}}return Object.defineProperty(k.registeredClass.instancePrototype,g,De),[]}),[]})},ee=[],We=[],Ue=l=>{l>9&&--We[l+1]===0&&(We[l]=void 0,ee.push(l))},et=()=>We.length/2-5-ee.length,rA=()=>{We.push(0,1,void 0,1,null,1,!0,1,!1,1),T.count_emval_handles=et},gt={toValue:l=>(l||$("Cannot use deleted val. handle = "+l),We[l]),toHandle:l=>{switch(l){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:{let g=ee.pop()||We.length;return We[g]=l,We[g+1]=1,g}}}},tn={name:"emscripten::val",fromWireType:l=>{var g=gt.toValue(l);return Ue(l),g},toWireType:(l,g)=>gt.toHandle(g),argPackAdvance:Xe,readValueFromPointer:Ot,destructorFunction:null},W=l=>ze(l,tn),Br=l=>{if(l===null)return"null";var g=typeof l;return g==="object"||g==="array"||g==="function"?l.toString():""+l},nA=(l,g)=>{switch(g){case 4:return function(f){return this.fromWireType(Ye[f>>2])};case 8:return function(f){return this.fromWireType(Fr[f>>3])};default:throw new TypeError(`invalid float width (${g}): ${l}`)}},rn=(l,g,f)=>{g=me(g),ze(l,{name:g,fromWireType:p=>p,toWireType:(p,w)=>w,argPackAdvance:Xe,readValueFromPointer:nA(g,f),destructorFunction:null})},a=(l,g,f)=>{switch(g){case 1:return f?p=>dt[p]:p=>he[p];case 2:return f?p=>He[p>>1]:p=>Vt[p>>1];case 4:return f?p=>$t[p>>2]:p=>ae[p>>2];default:throw new TypeError(`invalid integer width (${g}): ${l}`)}},ie=(l,g,f,p,w)=>{g=me(g),w===-1&&(w=4294967295);var S=k=>k;if(p===0){var P=32-8*f;S=k=>k<

>>P}var b=g.includes("unsigned"),N=(k,K)=>{},L;b?L=function(k,K){return N(K,this.name),K>>>0}:L=function(k,K){return N(K,this.name),K},ze(l,{name:g,fromWireType:S,toWireType:L,argPackAdvance:Xe,readValueFromPointer:a(g,f,p!==0),destructorFunction:null})},AA=(l,g,f)=>{var p=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],w=p[g];function S(P){var b=ae[P>>2],N=ae[P+4>>2];return new w(dt.buffer,N,b)}f=me(f),ze(l,{name:f,fromWireType:S,argPackAdvance:Xe,readValueFromPointer:S},{ignoreDuplicateRegistrations:!0})},iA=(l,g,f,p)=>{if(!(p>0))return 0;for(var w=f,S=f+p-1,P=0;P=55296&&b<=57343){var N=l.charCodeAt(++P);b=65536+((b&1023)<<10)|N&1023}if(b<=127){if(f>=S)break;g[f++]=b}else if(b<=2047){if(f+1>=S)break;g[f++]=192|b>>6,g[f++]=128|b&63}else if(b<=65535){if(f+2>=S)break;g[f++]=224|b>>12,g[f++]=128|b>>6&63,g[f++]=128|b&63}else{if(f+3>=S)break;g[f++]=240|b>>18,g[f++]=128|b>>12&63,g[f++]=128|b>>6&63,g[f++]=128|b&63}}return g[f]=0,f-w},oA=(l,g,f)=>iA(l,he,g,f),sA=l=>{for(var g=0,f=0;f=55296&&p<=57343?(g+=4,++f):g+=3}return g},nn=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):void 0,aA=(l,g,f)=>{for(var p=g+f,w=g;l[w]&&!(w>=p);)++w;if(w-g>16&&l.buffer&&nn)return nn.decode(l.subarray(g,w));for(var S="";g>10,56320|L&1023)}}return S},cA=(l,g)=>l?aA(he,l,g):"",gA=(l,g)=>{g=me(g);var f=g==="std::string";ze(l,{name:g,fromWireType(p){var w=ae[p>>2],S=p+4,P;if(f)for(var b=S,N=0;N<=w;++N){var L=S+N;if(N==w||he[L]==0){var k=L-b,K=cA(b,k);P===void 0?P=K:(P+=String.fromCharCode(0),P+=K),b=L+1}}else{for(var re=new Array(w),N=0;N>2]=S,f&&P)oA(w,N,S+1);else if(P)for(var L=0;L255&&(Le(N),$("String has UTF-16 code units that do not fit in 8 bits")),he[N+L]=k}else for(var L=0;L{for(var f=l,p=f>>1,w=p+g/2;!(p>=w)&&Vt[p];)++p;if(f=p<<1,f-l>32&&Gt)return Gt.decode(he.subarray(l,f));for(var S="",P=0;!(P>=g/2);++P){var b=He[l+P*2>>1];if(b==0)break;S+=String.fromCharCode(b)}return S},hr=(l,g,f)=>{if(f!=null||(f=2147483647),f<2)return 0;f-=2;for(var p=g,w=f>1]=P,g+=2}return He[g>>1]=0,g-p},ve=l=>l.length*2,lA=(l,g)=>{for(var f=0,p="";!(f>=g/4);){var w=$t[l+f*4>>2];if(w==0)break;if(++f,w>=65536){var S=w-65536;p+=String.fromCharCode(55296|S>>10,56320|S&1023)}else p+=String.fromCharCode(w)}return p},uA=(l,g,f)=>{if(f!=null||(f=2147483647),f<4)return 0;for(var p=g,w=p+f-4,S=0;S=55296&&P<=57343){var b=l.charCodeAt(++S);P=65536+((P&1023)<<10)|b&1023}if($t[g>>2]=P,g+=4,g+4>w)break}return $t[g>>2]=0,g-p},dA=l=>{for(var g=0,f=0;f=55296&&p<=57343&&++f,g+=4}return g},ir=(l,g,f)=>{f=me(f);var p,w,S,P;g===2?(p=Ar,w=hr,P=ve,S=b=>Vt[b>>1]):g===4&&(p=lA,w=uA,P=dA,S=b=>ae[b>>2]),ze(l,{name:f,fromWireType:b=>{for(var N=ae[b>>2],L,k=b+4,K=0;K<=N;++K){var re=b+4+K*g;if(K==N||S(re)==0){var ne=re-k,fe=p(k,ne);L===void 0?L=fe:(L+=String.fromCharCode(0),L+=fe),k=re+g}}return Le(b),L},toWireType:(b,N)=>{typeof N!="string"&&$(`Cannot pass non-string to C++ string type ${f}`);var L=P(N),k=wr(4+L+g);return ae[k>>2]=L/g,w(N,k+4,L+g),b!==null&&b.push(Le,k),k},argPackAdvance:Xe,readValueFromPointer:Ot,destructorFunction(b){Le(b)}})},or=(l,g)=>{g=me(g),ze(l,{isVoid:!0,name:g,argPackAdvance:0,fromWireType:()=>{},toWireType:(f,p)=>{}})},An=(l,g,f)=>he.copyWithin(l,g,g+f),mr=(l,g)=>{var f=st[l];return f===void 0&&$(`${g} has unknown type ${Vr(l)}`),f},Qr=(l,g,f)=>{var p=[],w=l.toWireType(p,f);return p.length&&(ae[g>>2]=gt.toHandle(p)),w},ue=(l,g,f)=>(l=gt.toValue(l),g=mr(g,"emval::as"),Qr(g,f,l)),EA={},fA=l=>{var g=EA[l];return g===void 0?me(l):g},It=[],_r=(l,g,f,p,w)=>(l=It[l],g=gt.toValue(g),f=fA(f),l(g,g[f],p,w)),jt=l=>{var g=It.length;return It.push(l),g},IA=(l,g)=>{for(var f=new Array(l),p=0;p>2],"parameter "+p);return f},CA=Reflect.construct,tt=(l,g,f)=>{var p=IA(l,g),w=p.shift();l--;var S=new Array(l),P=(N,L,k,K)=>{for(var re=0,ne=0;neN.name).join(", ")}) => ${w.name}>`;return jt(Ut(b,P))},Rt=l=>{l>9&&(We[l+1]+=1)},J=l=>{var g=gt.toValue(l);pr(g),Ue(l)},yr=(l,g)=>{l=mr(l,"_emval_take_value");var f=l.readValueFromPointer(g);return gt.toHandle(f)},pA=l=>{lr("OOM")},on=l=>{var g=he.length;l>>>=0,pA(l)};Lr(),Et=T.BindingError=class extends Error{constructor(g){super(g),this.name="BindingError"}},Gr=T.InternalError=class extends Error{constructor(g){super(g),this.name="InternalError"}},Ee(),Xn(),Jn(),nr=T.UnboundTypeError=zn(Error,"UnboundTypeError"),rA();var Ct={v:Ae,p:pe,o:dr,t:jn,x:$r,w:qn,h:tA,k:en,s:W,n:rn,g:ie,a:AA,m:gA,l:ir,u:or,r:An,j:ue,e:_r,c:Ue,f:tt,d:Rt,b:J,i:yr,q:on},xe=Mt(),Dr=()=>(Dr=xe.z)(),wr=l=>(wr=xe.A)(l),Ht=l=>(Ht=xe.C)(l),Le=l=>(Le=xe.D)(l),sn=l=>(sn=xe.E)(l),BA=T._vertexShaderSource=10192,rt;it=function l(){rt||an(),rt||(it=l)};function an(){if(de>0||(M(),de>0))return;function l(){rt||(rt=!0,T.calledRun=!0,!Z&&(Nn(),se(T),T.onRuntimeInitialized&&T.onRuntimeInitialized(),RA()))}T.setStatus?(T.setStatus("Running..."),setTimeout(function(){setTimeout(function(){T.setStatus("")},1),l()},1)):l()}if(T.preInit)for(typeof T.preInit=="function"&&(T.preInit=[T.preInit]);T.preInit.length>0;)T.preInit.pop()();return an(),n=ge,n}})(),gi=_c;var On=class{constructor(R,n){Ce(this,"canvas");Ce(this,"locateFile");Ce(this,"_glName");Ce(this,"_solutionWasm");Ce(this,"ctx");Ce(this,"fileDownloader");Ce(this,"pl",{onResults:R=>this.onResults(R.get(0).glName)});this.locateFile=T=>`${R}/${T}`,this.fileDownloader=n}bindTexture(){var R;(R=this.ctx)==null||R.activeTexture(this.ctx.TEXTURE0),this.bindTexture2d(this._glName)}async initialize(){this._solutionWasm=new this.SolutionWasm;let R=new this.StringList;R.push_back("segmentation_mask");let n=this.PacketListener.implement(this.pl);return this._solutionWasm.attachMultiListener(R,n),R.delete(),this._solutionWasm.loadGraph(await this.fileDownloader.download(this.locateFile("selfie_segmentation.binarypb"),{type:"arraybuffer"})),this}setCanvas(R){this.canvas=R,this.createContext(R,!0,!0,{}),this._glName=this.createTexture()}fetchResponse(R){return this.fileDownloader.downloadWithFetch(R,"fetch-response")}loadWasm(R,n){return this.fileDownloader.loadWasm(R,n)}async changeModel(R="selfie_segmentation_landscape.tflite"){R=typeof R=="string"?await this.fileDownloader.download(this.locateFile(R),{type:"arraybuffer"}):R,this._solutionWasm.overrideFile("third_party/mediapipe/modules/selfie_segmentation/selfie_segmentation_landscape.tflite",R);let n=new this.GraphOptionChangeRequestList;n.push_back({calculatorIndex:1,calculatorName:"",calculatorType:"GlScalerCalculator",fieldName:"flip_horizontal",valueBoolean:!1,valueNumber:0,valueString:""}),n.push_back({calculatorIndex:0,calculatorType:"ConstantSidePacketCalculator",calculatorName:"ConstantSidePacketCalculatorModelSelection",fieldName:"int_value",valueBoolean:!1,valueNumber:1,valueString:""}),n.push_back({calculatorIndex:0,calculatorType:"InferenceCalculator",calculatorName:"",fieldName:"use_cpu_inference",valueBoolean:!1,valueNumber:0,valueString:""}),this._solutionWasm.changeOptions(n)}send(R,n){let T=new this.PacketDataList;T.pushTexture2d({stream:"input_frames_gpu",timestamp:performance.now()*1e3,glName:this._glName,width:R,height:n}),this._solutionWasm.send(T),T.delete()}close(){var R,n,T;(R=this.canvas)==null||delete R.getContext,delete this.readyPromiseResolve,delete this.readyPromiseReject,this.pl.onResults=null,delete this.onResults,(n=this.deleteTexture)==null||n.call(this,this._glName),(T=this._solutionWasm)==null||T.delete();for(let se of Object.keys(this))delete this[se]}};var Rn=0,Pn=class Pn{constructor(R){this.core=R;Ce(this,"seq");Ce(this,"_core");Ce(this,"log");Ce(this,"preLoadPromise");Ce(this,"startResolve");Ce(this,"startReject");Ce(this,"mediaPipeSolutions");Ce(this,"assetsPath");Rn=Rn+1,this.seq=Rn,this._core=R,this.log=R.log.createChild({id:`${this.getAlias()}${Rn}`}),this.log.info("created"),R.assetsPath&&(this.preLoadPromise=this.preload(R.assetsPath))}async preload(R="https://web.sdk.qcloud.com/trtc/webrtc/v5/assets/"){try{this._core.room.videoManager.Wasm||(this._core.room.videoManager.Wasm=await gi()),this.assetsPath=`${R}/selfie_segmentation/`;let n=new On(this.assetsPath,this._core.fileDownloader);this.mediaPipeSolutions=await ci(n),await this.mediaPipeSolutions.initialize(),await this._core.room.videoManager.initVirtualBackground(this.mediaPipeSolutions)}catch(n){let{RtcError:T,ErrorCode:se}=this._core.errorModule;throw new T({code:se.INVALID_OPERATION,message:`VirtualBackground preload error, please check your assetsPath. detail: ${n}`})}}getName(){return Pn.Name}getAlias(){return"vb"}getValidateRule(R){switch(R){case"start":return oi(this._core);case"update":return si(this._core);case"stop":return ai(this._core)}}getGroup(){return"vb"}async start(R){let{type:n="blur",src:T,blurLevel:se=3}=R,{auth:ce,sign:ge,timestamp:be}=await ii({sdkAppId:R.sdkAppId,userId:R.userId,userSig:R.userSig,core:this._core});if(!ce){let{RtcError:Te,ErrorCode:Re,ErrorCodeDictionary:Se}=this._core.errorModule;throw new Te({code:Re.SERVER_ERROR,extraCode:Se.NEED_TO_BUY,messageParams:{value:"Virtual Background",url:"https://cloud.tencent.com/document/product/647/85386"}})}return this.preLoadPromise||(this.preLoadPromise=this.preload(this._core.assetsPath)),await this.preLoadPromise,this.core.room.videoManager.setVirtualBackground({type:n,imageUrl:T,blurLevel:se})}async update(R){let{type:n,src:T}=R;return this.core.room.videoManager.setVirtualBackground({type:n,imageUrl:T,blurLevel:R.blurLevel})}async stop(){return this.core.room.videoManager.setVirtualBackground()}};Ce(Pn,"Name","VirtualBackground");var Sn=Pn;var Dc=Sn;return hc(wc);})().default;