diff --git a/cli/src/codecs.js b/cli/src/codecs.js index 45f4da28..880ba867 100644 --- a/cli/src/codecs.js +++ b/cli/src/codecs.js @@ -8,10 +8,10 @@ import { instantiateEmscriptenWasm, pathify } from './emscripten-utils.js'; // import mozDecWasm from 'asset-url:../../codecs/mozjpeg/dec/mozjpeg_dec.wasm'; // WebP -import webpEnc from '../../codecs/webp/enc/webp_enc.js'; -import webpEncWasm from 'asset-url:../../codecs/webp/enc/webp_enc.wasm'; -import webpDec from '../../codecs/webp/dec/webp_dec.js'; -import webpDecWasm from 'asset-url:../../codecs/webp/dec/webp_dec.wasm'; +import webpEnc from '../../codecs/webp/enc/webp_node_enc.js'; +import webpEncWasm from 'asset-url:../../codecs/webp/enc/webp_node_enc.wasm'; +import webpDec from '../../codecs/webp/dec/webp_node_dec.js'; +import webpDecWasm from 'asset-url:../../codecs/webp/dec/webp_node_dec.wasm'; // AVIF import avifEnc from '../../codecs/avif/enc/avif_node_enc.js'; @@ -225,47 +225,47 @@ export const codecs = { // max: 100 // } // }, - // webp: { - // name: "WebP", - // extension: "webp", - // detectors: [/^RIFF....WEBPVP8[LX ]/], - // dec: () => instantiateEmscriptenWasm(webpDec, webpDecWasm), - // enc: () => instantiateEmscriptenWasm(webpEnc, webpEncWasm), - // defaultEncoderOptions: { - // quality: 75, - // target_size: 0, - // target_PSNR: 0, - // method: 4, - // sns_strength: 50, - // filter_strength: 60, - // filter_sharpness: 0, - // filter_type: 1, - // partitions: 0, - // segments: 4, - // pass: 1, - // show_compressed: 0, - // preprocessing: 0, - // autofilter: 0, - // partition_limit: 0, - // alpha_compression: 1, - // alpha_filtering: 1, - // alpha_quality: 100, - // lossless: 0, - // exact: 0, - // image_hint: 0, - // emulate_jpeg_size: 0, - // thread_level: 0, - // low_memory: 0, - // near_lossless: 100, - // use_delta_palette: 0, - // use_sharp_yuv: 0 - // }, - // autoOptimize: { - // option: "quality", - // min: 0, - // max: 100 - // } - // }, + webp: { + name: 'WebP', + extension: 'webp', + detectors: [/^RIFF....WEBPVP8[LX ]/], + dec: () => instantiateEmscriptenWasm(webpDec, webpDecWasm), + enc: () => instantiateEmscriptenWasm(webpEnc, webpEncWasm), + defaultEncoderOptions: { + quality: 75, + target_size: 0, + target_PSNR: 0, + method: 4, + sns_strength: 50, + filter_strength: 60, + filter_sharpness: 0, + filter_type: 1, + partitions: 0, + segments: 4, + pass: 1, + show_compressed: 0, + preprocessing: 0, + autofilter: 0, + partition_limit: 0, + alpha_compression: 1, + alpha_filtering: 1, + alpha_quality: 100, + lossless: 0, + exact: 0, + image_hint: 0, + emulate_jpeg_size: 0, + thread_level: 0, + low_memory: 0, + near_lossless: 100, + use_delta_palette: 0, + use_sharp_yuv: 0, + }, + autoOptimize: { + option: 'quality', + min: 0, + max: 100, + }, + }, avif: { name: 'AVIF', extension: 'avif', diff --git a/codecs/webp/Makefile b/codecs/webp/Makefile index 1851641c..5af53fbe 100644 --- a/codecs/webp/Makefile +++ b/codecs/webp/Makefile @@ -3,8 +3,9 @@ CODEC_DIR = node_modules/libwebp CODEC_BUILD_ROOT := $(CODEC_DIR)/build CODEC_BASELINE_BUILD_DIR := $(CODEC_BUILD_ROOT)/baseline CODEC_SIMD_BUILD_DIR := $(CODEC_BUILD_ROOT)/simd +ENVIRONMENT = worker -OUT_JS = enc/webp_enc.js enc/webp_enc_simd.js dec/webp_dec.js +OUT_JS = enc/webp_enc.js enc/webp_enc_simd.js dec/webp_dec.js enc/webp_node_enc.js dec/webp_node_dec.js OUT_WASM := $(OUT_JS:.js=.wasm) .PHONY: all clean @@ -14,6 +15,8 @@ all: $(OUT_JS) # Define dependencies for all variations of build artifacts. $(filter enc/%,$(OUT_JS)): enc/webp_enc.o $(filter dec/%,$(OUT_JS)): dec/webp_dec.o +enc/webp_node_enc.js dec/webp_node_dec.js: ENVIRONMENT = node +enc/webp_node_enc.js dec/webp_node_dec.js: $(CODEC_BASELINE_BUILD_DIR)/libwebp.a enc/webp_enc.js dec/webp_dec.js: $(CODEC_BASELINE_BUILD_DIR)/libwebp.a enc/webp_enc_simd.js: $(CODEC_SIMD_BUILD_DIR)/libwebp.a @@ -25,7 +28,7 @@ $(OUT_JS): -s ALLOW_MEMORY_GROWTH=1 \ -s MODULARIZE=1 \ -s TEXTDECODER=2 \ - -s ENVIRONMENT='worker' \ + -s ENVIRONMENT=$(ENVIRONMENT) \ -s EXPORT_ES6=1 \ -o $@ \ $+ diff --git a/codecs/webp/dec/webp_node_dec.js b/codecs/webp/dec/webp_node_dec.js new file mode 100644 index 00000000..5211d757 --- /dev/null +++ b/codecs/webp/dec/webp_node_dec.js @@ -0,0 +1,55 @@ + +var Module = (function() { + var _scriptDir = import.meta.url; + + return ( +function(Module) { + Module = Module || {}; + + +var e;e||(e=typeof Module !== 'undefined' ? Module : {});var aa,r;e.ready=new Promise(function(a,b){aa=a;r=b});var t={},u;for(u in e)e.hasOwnProperty(u)&&(t[u]=e[u]);var v="",ba,ca,da,ea;v=__dirname+"/";ba=function(a){da||(da=require("fs"));ea||(ea=require("path"));a=ea.normalize(a);return da.readFileSync(a,null)};ca=function(a){a=ba(a);a.buffer||(a=new Uint8Array(a));a.buffer||x("Assertion failed: undefined");return a};1=g){var l=a.charCodeAt(++f);g=65536+((g&1023)<<10)|l&1023}if(127>=g){if(b>=c)break;d[b++]=g}else{if(2047>=g){if(b+1>=c)break;d[b++]=192|g>>6}else{if(65535>=g){if(b+2>=c)break;d[b++]=224|g>>12}else{if(b+3>=c)break;d[b++]=240|g>>18;d[b++]=128|g>>12&63}d[b++]=128|g>>6&63}d[b++]=128|g&63}}d[b]=0}}var ja=new TextDecoder("utf-16le"); +function ka(a,b){var c=a>>1;for(b=c+b/2;!(c>=b)&&D[c];)++c;return ja.decode(C.subarray(a,c<<1))}function la(a,b,c){void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var d=b;c=c<2*a.length?c/2:a.length;for(var f=0;f>1]=a.charCodeAt(f),b+=2;E[b>>1]=0;return b-d}function ma(a){return 2*a.length}function na(a,b){for(var c=0,d="";!(c>=b/4);){var f=F[a+4*c>>2];if(0==f)break;++c;65536<=f?(f-=65536,d+=String.fromCharCode(55296|f>>10,56320|f&1023)):d+=String.fromCharCode(f)}return d} +function oa(a,b,c){void 0===c&&(c=2147483647);if(4>c)return 0;var d=b;c=d+c-4;for(var f=0;f=g){var l=a.charCodeAt(++f);g=65536+((g&1023)<<10)|l&1023}F[b>>2]=g;b+=4;if(b+4>c)break}F[b>>2]=0;return b-d}function pa(a){for(var b=0,c=0;c=d&&++c;b+=4}return b}var G,qa,C,E,D,F,I,ra,sa; +function ta(a){G=a;e.HEAP8=qa=new Int8Array(a);e.HEAP16=E=new Int16Array(a);e.HEAP32=F=new Int32Array(a);e.HEAPU8=C=new Uint8Array(a);e.HEAPU16=D=new Uint16Array(a);e.HEAPU32=I=new Uint32Array(a);e.HEAPF32=ra=new Float32Array(a);e.HEAPF64=sa=new Float64Array(a)}var ua=e.INITIAL_MEMORY||16777216;e.wasmMemory?B=e.wasmMemory:B=new WebAssembly.Memory({initial:ua/65536,maximum:32768});B&&(G=B.buffer);ua=G.byteLength;ta(G);var J,va=[],wa=[],xa=[],ya=[]; +function za(){var a=e.preRun.shift();va.unshift(a)}var L=0,Aa=null,M=null;e.preloadedImages={};e.preloadedAudios={};function x(a){if(e.onAbort)e.onAbort(a);y(a);fa=!0;a=new WebAssembly.RuntimeError("abort("+a+"). Build with -s ASSERTIONS=1 for more info.");r(a);throw a;}function Ba(){var a=N;return String.prototype.startsWith?a.startsWith("data:application/octet-stream;base64,"):0===a.indexOf("data:application/octet-stream;base64,")}var N="webp_node_dec.wasm"; +if(!Ba()){var Ca=N;N=e.locateFile?e.locateFile(Ca,v):v+Ca}function Da(){try{if(z)return new Uint8Array(z);if(ca)return ca(N);throw"both async and sync fetching of the wasm failed";}catch(a){x(a)}}function O(a){for(;0=b?"_"+a:a} +function Ha(a,b){a=Ga(a);return(new Function("body","return function "+a+'() {\n "use strict"; return body.apply(this, arguments);\n};\n'))(b)}function Ia(a){var b=Error,c=Ha(a,function(d){this.name=a;this.message=d;d=Error(d).stack;void 0!==d&&(this.stack=this.toString()+"\n"+d.replace(/^Error(:[^\n]*)?\n/,""))});c.prototype=Object.create(b.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message};return c} +var Ja=void 0;function T(a){throw new Ja(a);}var Ka=void 0;function La(a,b){function c(h){h=b(h);if(h.length!==d.length)throw new Ka("Mismatched type converter count");for(var k=0;k>2])}function Ra(a){if(null===a)return"null";var b=typeof a;return"object"===b||"array"===b||"function"===b?a.toString():""+a} +function Sa(a,b){switch(b){case 2:return function(c){return this.fromWireType(ra[c>>2])};case 3:return function(c){return this.fromWireType(sa[c>>3])};default:throw new TypeError("Unknown float type: "+a);}}function Ta(a){var b=Function;if(!(b instanceof Function))throw new TypeError("new_ called with constructor type "+typeof b+" which is not a function");var c=Ha(b.name||"unknownFunctionName",function(){});c.prototype=b.prototype;c=new c;a=b.apply(c,a);return a instanceof Object?a:c} +function Ua(a){for(;a.length;){var b=a.pop();a.pop()(b)}}function Va(a,b){var c=e;if(void 0===c[a].A){var d=c[a];c[a]=function(){c[a].A.hasOwnProperty(arguments.length)||T("Function '"+b+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+c[a].A+")!");return c[a].A[arguments.length].apply(this,arguments)};c[a].A=[];c[a].A[d.F]=d}} +function Wa(a,b,c){e.hasOwnProperty(a)?((void 0===c||void 0!==e[a].A&&void 0!==e[a].A[c])&&T("Cannot register public name '"+a+"' twice"),Va(a,a),e.hasOwnProperty(c)&&T("Cannot register multiple overloads of a function with the same number of arguments ("+c+")!"),e[a].A[c]=b):(e[a]=b,void 0!==c&&(e[a].J=c))}function Xa(a,b){for(var c=[],d=0;d>2)+d]);return c} +function Ya(a,b){0<=a.indexOf("j")||x("Assertion failed: getDynCaller should only be called with i64 sigs");var c=[];return function(){c.length=arguments.length;for(var d=0;d>1]}:function(d){return D[d>>1]};case 2:return c?function(d){return F[d>>2]}:function(d){return I[d>>2]};default:throw new TypeError("Unknown integer type: "+a);}}var eb={};function fb(){return"object"===typeof globalThis?globalThis:Function("return this")()}function gb(a,b){var c=R[a];void 0===c&&T(b+" has unknown type "+ab(a));return c} +for(var hb={},ib=Array(256),Y=0;256>Y;++Y)ib[Y]=String.fromCharCode(Y);Fa=ib;Ja=e.BindingError=Ia("BindingError");Ka=e.InternalError=Ia("InternalError");e.count_emval_handles=function(){for(var a=0,b=5;b>g])},B:null})},r:function(a,b){b=P(b);U(a,{name:b,fromWireType:function(c){var d=V[c].value;Pa(c);return d},toWireType:function(c,d){return W(d)},argPackAdvance:8, +readValueFromPointer:Qa,B:null})},n:function(a,b,c){c=Ea(c);b=P(b);U(a,{name:b,fromWireType:function(d){return d},toWireType:function(d,f){if("number"!==typeof f&&"boolean"!==typeof f)throw new TypeError('Cannot convert "'+Ra(f)+'" to '+this.name);return f},argPackAdvance:8,readValueFromPointer:Sa(b,c),B:null})},j:function(a,b,c,d,f,g){var l=Xa(b,c);a=P(a);f=Za(d,f);Wa(a,function(){cb("Cannot call "+a+" due to unbound types",l)},b-1);La(l,function(h){var k=[h[0],null].concat(h.slice(1)),n=h=a,p=f, +q=k.length;2>q&&T("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var w=null!==k[1]&&!1,A=!1,m=1;m>>h}}var k=-1!=b.indexOf("unsigned");U(a,{name:b,fromWireType:g,toWireType:function(n,p){if("number"!==typeof p&&"boolean"!==typeof p)throw new TypeError('Cannot convert "'+Ra(p)+'" to '+this.name);if(pf)throw new TypeError('Passing a number "'+Ra(p)+'" from JS side to C/C++ side to an argument of type "'+b+'", which is outside the valid range ['+d+", "+f+"]!");return k?p>>>0:p|0},argPackAdvance:8,readValueFromPointer:db(b,l,0!==d),B:null})}, +b:function(a,b,c){function d(g){g>>=2;var l=I;return new f(G,l[g+1],l[g])}var f=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=P(c);U(a,{name:c,fromWireType:d,argPackAdvance:8,readValueFromPointer:d},{H:!0})},i:function(a,b){b=P(b);var c="std::string"===b;U(a,{name:b,fromWireType:function(d){var f=I[d>>2];if(c)for(var g=d+4,l=0;l<=f;++l){var h=d+4+l;if(l==f||0==C[h]){if(g){for(var k=g+(h-g),n=g;!(n>=k)&&C[n];)++n;g=ha.decode(C.subarray(g,n))}else g= +"";if(void 0===p)var p=g;else p+=String.fromCharCode(0),p+=g;g=h+1}}else{p=Array(f);for(l=0;l=q&&(q=65536+((q&1023)<< +10)|f.charCodeAt(++p)&1023);127>=q?++n:n=2047>=q?n+2:65535>=q?n+3:n+4}return n}:function(){return f.length})(),h=kb(4+l+1);I[h>>2]=l;if(c&&g)ia(f,h+4,l+1);else if(g)for(g=0;g>2],p=l(),q,w=k+4,A=0;A<=n;++A){var m=k+4+A*b;if(A==n||0==p[m>>h])w=d(w,m-w),void 0===q?q=w:(q+=String.fromCharCode(0),q+=w),w=m+b}X(k);return q},toWireType:function(k,n){"string"!==typeof n&&T("Cannot pass non-string to C++ string type "+c);var p=g(n),q=kb(4+p+b);I[q>>2]=p>>h;f(n,q+4,p+b);null!==k&&k.push(X,q);return q},argPackAdvance:8,readValueFromPointer:Qa,B:function(k){X(k)}})}, +p:function(a,b){b=P(b);U(a,{I:!0,name:b,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},e:Pa,f:function(a){if(0===a)return W(fb());var b=eb[a];a=void 0===b?P(a):b;return W(fb()[a])},k:function(a){4>> 2) + "+ +g+'], "parameter '+g+'");\nvar arg'+g+" = argType"+g+".readValueFromPointer(args);\nargs += argType"+g+"['argPackAdvance'];\n";f=(new Function("requireRegisteredType","Module","__emval_register",l+("var obj = new constructor("+f+");\nreturn __emval_register(obj);\n}\n")))(gb,e,W);hb[b]=f}return f(a,c,d)},m:function(){x()},q:function(a,b,c){C.copyWithin(a,b,b+c)},d:function(a){a>>>=0;var b=C.length;if(2147483648=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);d=Math.max(16777216, +a,d);0>>16);ta(B.buffer);var f=1;break a}catch(g){}f=void 0}if(f)return!0}return!1},a:B}; +(function(){function a(f){e.asm=f.exports;J=e.asm.s;L--;e.monitorRunDependencies&&e.monitorRunDependencies(L);0==L&&(null!==Aa&&(clearInterval(Aa),Aa=null),M&&(f=M,M=null,f()))}function b(f){a(f.instance)}function c(f){return Promise.resolve().then(Da).then(function(g){return WebAssembly.instantiate(g,d)}).then(f,function(g){y("failed to asynchronously prepare wasm: "+g);x(g)})}var d={a:lb};L++;e.monitorRunDependencies&&e.monitorRunDependencies(L);if(e.instantiateWasm)try{return e.instantiateWasm(d, +a)}catch(f){return y("Module.instantiateWasm callback failed with error: "+f),!1}(function(){return z||"function"!==typeof WebAssembly.instantiateStreaming||Ba()||"function"!==typeof fetch?c(b):fetch(N,{credentials:"same-origin"}).then(function(f){return WebAssembly.instantiateStreaming(f,d).then(b,function(g){y("wasm streaming compile failed: "+g);y("falling back to ArrayBuffer instantiation");return c(b)})})})().catch(r);return{}})(); +var jb=e.___wasm_call_ctors=function(){return(jb=e.___wasm_call_ctors=e.asm.t).apply(null,arguments)},kb=e._malloc=function(){return(kb=e._malloc=e.asm.u).apply(null,arguments)},X=e._free=function(){return(X=e._free=e.asm.v).apply(null,arguments)},bb=e.___getTypeName=function(){return(bb=e.___getTypeName=e.asm.w).apply(null,arguments)};e.___embind_register_native_and_builtin_types=function(){return(e.___embind_register_native_and_builtin_types=e.asm.x).apply(null,arguments)};var Z; +M=function mb(){Z||nb();Z||(M=mb)}; +function nb(){function a(){if(!Z&&(Z=!0,e.calledRun=!0,!fa)){O(wa);O(xa);aa(e);if(e.onRuntimeInitialized)e.onRuntimeInitialized();if(e.postRun)for("function"==typeof e.postRun&&(e.postRun=[e.postRun]);e.postRun.length;){var b=e.postRun.shift();ya.unshift(b)}O(ya)}}if(!(0=g){var l=a.charCodeAt(++e);g=65536+((g&1023)<<10)|l&1023}if(127>=g){if(b>=c)break;d[b++]=g}else{if(2047>=g){if(b+1>=c)break;d[b++]=192|g>>6}else{if(65535>=g){if(b+2>=c)break;d[b++]=224|g>>12}else{if(b+3>=c)break;d[b++]=240|g>>18;d[b++]=128|g>>12&63}d[b++]=128|g>>6&63}d[b++]=128|g&63}}d[b]=0}}var ma=new TextDecoder("utf-16le"); +function na(a,b){var c=a>>1;for(b=c+b/2;!(c>=b)&&C[c];)++c;return ma.decode(B.subarray(a,c<<1))}function oa(a,b,c){void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var d=b;c=c<2*a.length?c/2:a.length;for(var e=0;e>1]=a.charCodeAt(e),b+=2;D[b>>1]=0;return b-d}function pa(a){return 2*a.length}function qa(a,b){for(var c=0,d="";!(c>=b/4);){var e=F[a+4*c>>2];if(0==e)break;++c;65536<=e?(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023)):d+=String.fromCharCode(e)}return d} +function ra(a,b,c){void 0===c&&(c=2147483647);if(4>c)return 0;var d=b;c=d+c-4;for(var e=0;e=g){var l=a.charCodeAt(++e);g=65536+((g&1023)<<10)|l&1023}F[b>>2]=g;b+=4;if(b+4>c)break}F[b>>2]=0;return b-d}function sa(a){for(var b=0,c=0;c=d&&++c;b+=4}return b}var G,H,B,D,C,F,I,ta,ua; +function va(a){G=a;f.HEAP8=H=new Int8Array(a);f.HEAP16=D=new Int16Array(a);f.HEAP32=F=new Int32Array(a);f.HEAPU8=B=new Uint8Array(a);f.HEAPU16=C=new Uint16Array(a);f.HEAPU32=I=new Uint32Array(a);f.HEAPF32=ta=new Float32Array(a);f.HEAPF64=ua=new Float64Array(a)}var wa=f.INITIAL_MEMORY||16777216;f.wasmMemory?A=f.wasmMemory:A=new WebAssembly.Memory({initial:wa/65536,maximum:32768});A&&(G=A.buffer);wa=G.byteLength;va(G);var J,xa=[],ya=[],za=[],Aa=[]; +function Ba(){var a=f.preRun.shift();xa.unshift(a)}var K=0,Ca=null,L=null;f.preloadedImages={};f.preloadedAudios={};function u(a){if(f.onAbort)f.onAbort(a);v(a);ja=!0;a=new WebAssembly.RuntimeError("abort("+a+"). Build with -s ASSERTIONS=1 for more info.");ba(a);throw a;}function Da(){var a=M;return String.prototype.startsWith?a.startsWith("data:application/octet-stream;base64,"):0===a.indexOf("data:application/octet-stream;base64,")}var M="webp_node_enc.wasm"; +if(!Da()){var Ea=M;M=f.locateFile?f.locateFile(Ea,ca):ca+Ea}function Fa(){try{if(z)return new Uint8Array(z);if(fa)return fa(M);throw"both async and sync fetching of the wasm failed";}catch(a){u(a)}}function N(a){for(;0>2])} +var Q={},R={},S={};function Ha(a){if(void 0===a)return"_unknown";a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?"_"+a:a}function Ia(a,b){a=Ha(a);return(new Function("body","return function "+a+'() {\n "use strict"; return body.apply(this, arguments);\n};\n'))(b)} +function Ja(a){var b=Error,c=Ia(a,function(d){this.name=a;this.message=d;d=Error(d).stack;void 0!==d&&(this.stack=this.toString()+"\n"+d.replace(/^Error(:[^\n]*)?\n/,""))});c.prototype=Object.create(b.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message};return c}var Ka=void 0; +function La(a,b,c){function d(h){h=c(h);if(h.length!==a.length)throw new Ka("Mismatched type converter count");for(var k=0;k>1])};case 2:return function(d){return this.fromWireType((c?F:I)[d>>2])};default:throw new TypeError("Unknown integer type: "+a);}}function Va(a){a=Wa(a);var b=V(a);Y(a);return b}function Xa(a,b){var c=R[a];void 0===c&&W(b+" has unknown type "+Va(a));return c} +function Ya(a){if(null===a)return"null";var b=typeof a;return"object"===b||"array"===b||"function"===b?a.toString():""+a}function Za(a,b){switch(b){case 2:return function(c){return this.fromWireType(ta[c>>2])};case 3:return function(c){return this.fromWireType(ua[c>>3])};default:throw new TypeError("Unknown float type: "+a);}} +function $a(a){var b=Function;if(!(b instanceof Function))throw new TypeError("new_ called with constructor type "+typeof b+" which is not a function");var c=Ia(b.name||"unknownFunctionName",function(){});c.prototype=b.prototype;c=new c;a=b.apply(c,a);return a instanceof Object?a:c}function ab(a,b){for(var c=[],d=0;d>2)+d]);return c} +function bb(a,b){0<=a.indexOf("j")||u("Assertion failed: getDynCaller should only be called with i64 sigs");var c=[];return function(){c.length=arguments.length;for(var d=0;d>1]}:function(d){return C[d>>1]};case 2:return c?function(d){return F[d>>2]}:function(d){return I[d>>2]};default:throw new TypeError("Unknown integer type: "+a);}}var fb={};function gb(){return"object"===typeof globalThis?globalThis:Function("return this")()}var hb={};Ka=f.InternalError=Ja("InternalError");for(var ib=Array(256),jb=0;256>jb;++jb)ib[jb]=String.fromCharCode(jb); +Na=ib;Oa=f.BindingError=Ja("BindingError");f.count_emval_handles=function(){for(var a=0,b=5;b> +g])},D:null})},r:function(a,b){b=V(b);U(a,{name:b,fromWireType:function(c){var d=X[c].value;Qa(c);return d},toWireType:function(c,d){return Ra(d)},argPackAdvance:8,readValueFromPointer:P,D:null})},o:function(a,b,c,d){function e(){}c=Ma(c);b=V(b);e.values={};U(a,{name:b,constructor:e,fromWireType:function(g){return this.constructor.values[g]},toWireType:function(g,l){return l.value},argPackAdvance:8,readValueFromPointer:Ua(b,c,d),D:null});Ta(b,e)},f:function(a,b,c){var d=Xa(a,"enum");b=V(b);a=d.constructor; +d=Object.create(d.constructor.prototype,{value:{value:c},constructor:{value:Ia(d.name+"_"+b,function(){})}});a.values[c]=d;a[b]=d},k:function(a,b,c){c=Ma(c);b=V(b);U(a,{name:b,fromWireType:function(d){return d},toWireType:function(d,e){if("number"!==typeof e&&"boolean"!==typeof e)throw new TypeError('Cannot convert "'+Ya(e)+'" to '+this.name);return e},argPackAdvance:8,readValueFromPointer:Za(b,c),D:null})},i:function(a,b,c,d,e,g){var l=ab(b,c);a=V(a);e=Z(d,e);Ta(a,function(){db("Cannot call "+a+ +" due to unbound types",l)},b-1);La([],l,function(h){var k=[h[0],null].concat(h.slice(1)),m=h=a,n=e,q=k.length;2>q&&W("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var w=null!==k[1]&&!1,x=!1,p=1;p>>h}}var k=-1!=b.indexOf("unsigned");U(a,{name:b,fromWireType:g,toWireType:function(m,n){if("number"!==typeof n&&"boolean"!==typeof n)throw new TypeError('Cannot convert "'+Ya(n)+'" to '+this.name);if(ne)throw new TypeError('Passing a number "'+Ya(n)+'" from JS side to C/C++ side to an argument of type "'+b+'", which is outside the valid range ['+ +d+", "+e+"]!");return k?n>>>0:n|0},argPackAdvance:8,readValueFromPointer:eb(b,l,0!==d),D:null})},c:function(a,b,c){function d(g){g>>=2;var l=I;return new e(G,l[g+1],l[g])}var e=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=V(c);U(a,{name:c,fromWireType:d,argPackAdvance:8,readValueFromPointer:d},{P:!0})},l:function(a,b){b=V(b);var c="std::string"===b;U(a,{name:b,fromWireType:function(d){var e=I[d>>2];if(c)for(var g=d+4,l=0;l<=e;++l){var h=d+4+l; +if(l==e||0==B[h]){if(g){for(var k=g+(h-g),m=g;!(m>=k)&&B[m];)++m;g=ka.decode(B.subarray(g,m))}else g="";if(void 0===n)var n=g;else n+=String.fromCharCode(0),n+=g;g=h+1}}else{n=Array(e);for(l=0;l=q&&(q=65536+((q&1023)<<10)|e.charCodeAt(++n)&1023);127>=q?++m:m=2047>=q?m+2:65535>=q?m+3:m+4}return m}:function(){return e.length})(),h=lb(4+l+1);I[h>>2]=l;if(c&&g)la(e,h+4,l+1);else if(g)for(g=0;g>2],n=l(),q,w=k+4,x=0;x<=m;++x){var p=k+4+x*b;if(x==m||0==n[p>>h])w=d(w,p-w),void 0===q?q=w:(q+=String.fromCharCode(0),q+=w),w=p+b}Y(k);return q},toWireType:function(k,m){"string"!==typeof m&&W("Cannot pass non-string to C++ string type "+c);var n=g(m),q=lb(4+n+b);I[q>>2]=n>> +h;e(m,q+4,n+b);null!==k&&k.push(Y,q);return q},argPackAdvance:8,readValueFromPointer:P,D:function(k){Y(k)}})},n:function(a,b,c,d,e,g){O[a]={name:V(b),R:Z(c,d),S:Z(e,g),I:[]}},b:function(a,b,c,d,e,g,l,h,k,m){O[a].I.push({K:V(b),O:c,M:Z(d,e),N:g,U:l,T:Z(h,k),V:m})},t:function(a,b){b=V(b);U(a,{W:!0,name:b,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},g:Qa,v:function(a){if(0===a)return Ra(gb());var b=fb[a];a=void 0===b?V(a):b;return Ra(gb()[a])},u:function(a){4>> 2) + "+g+'], "parameter '+g+'");\nvar arg'+g+" = argType"+g+".readValueFromPointer(args);\nargs += argType"+g+"['argPackAdvance'];\n";e=(new Function("requireRegisteredType","Module", +"__emval_register",l+("var obj = new constructor("+e+");\nreturn __emval_register(obj);\n}\n")))(Xa,f,Ra);hb[b]=e}return e(a,c,d)},j:function(){u()},q:function(a,b,c){B.copyWithin(a,b,b+c)},e:function(a){a>>>=0;var b=B.length;if(2147483648=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);d=Math.max(16777216,a,d);0>>16);va(A.buffer);var e=1;break a}catch(g){}e=void 0}if(e)return!0}return!1}, +a:A}; +(function(){function a(e){f.asm=e.exports;J=f.asm.x;K--;f.monitorRunDependencies&&f.monitorRunDependencies(K);0==K&&(null!==Ca&&(clearInterval(Ca),Ca=null),L&&(e=L,L=null,e()))}function b(e){a(e.instance)}function c(e){return Promise.resolve().then(Fa).then(function(g){return WebAssembly.instantiate(g,d)}).then(e,function(g){v("failed to asynchronously prepare wasm: "+g);u(g)})}var d={a:mb};K++;f.monitorRunDependencies&&f.monitorRunDependencies(K);if(f.instantiateWasm)try{return f.instantiateWasm(d,a)}catch(e){return v("Module.instantiateWasm callback failed with error: "+ +e),!1}(function(){return z||"function"!==typeof WebAssembly.instantiateStreaming||Da()||"function"!==typeof fetch?c(b):fetch(M,{credentials:"same-origin"}).then(function(e){return WebAssembly.instantiateStreaming(e,d).then(b,function(g){v("wasm streaming compile failed: "+g);v("falling back to ArrayBuffer instantiation");return c(b)})})})().catch(ba);return{}})(); +var kb=f.___wasm_call_ctors=function(){return(kb=f.___wasm_call_ctors=f.asm.y).apply(null,arguments)},lb=f._malloc=function(){return(lb=f._malloc=f.asm.z).apply(null,arguments)},Y=f._free=function(){return(Y=f._free=f.asm.A).apply(null,arguments)},Wa=f.___getTypeName=function(){return(Wa=f.___getTypeName=f.asm.B).apply(null,arguments)};f.___embind_register_native_and_builtin_types=function(){return(f.___embind_register_native_and_builtin_types=f.asm.C).apply(null,arguments)};var nb; +L=function ob(){nb||pb();nb||(L=ob)}; +function pb(){function a(){if(!nb&&(nb=!0,f.calledRun=!0,!ja)){N(ya);N(za);aa(f);if(f.onRuntimeInitialized)f.onRuntimeInitialized();if(f.postRun)for("function"==typeof f.postRun&&(f.postRun=[f.postRun]);f.postRun.length;){var b=f.postRun.shift();Aa.unshift(b)}N(Aa)}}if(!(0