From ed56baa1bbc93b3de54f4dae7ddc937c2cb81af9 Mon Sep 17 00:00:00 2001 From: msqr1 Date: Mon, 7 Oct 2024 14:37:57 -0700 Subject: [PATCH] Put id in url instead of response, add getModelCache --- Documentation.md | 3 ++- Examples/Vosklet.js | 2 +- Examples/Wrapper.js | 14 ++++++++------ Vosklet.js | 2 +- src/Wrapper.js | 19 +++++++++++-------- 5 files changed, 23 insertions(+), 17 deletions(-) diff --git a/Documentation.md b/Documentation.md index 85a5fff..04109c7 100644 --- a/Documentation.md +++ b/Documentation.md @@ -12,7 +12,8 @@ | ```Promise createRecognizer(model: Model, sampleRate: float)```

```Promise createRecognizerWithSpkModel(model: Model, spkModel: spkModel, sampleRate: float)```

```Promise createRecognizerWithGrm(model: Model, grammar: string, sampleRate: float)``` | Create a ```Recognizer``` | | ```setLogLevel(lvl: int)``` | Set log level for Kaldi messages (default: ```0```: Info)
```-2```: Error
```-1```: Warning
```1```: Verbose
```2```: More verbose
```3```: Debug | | ```Promise createTransferer(ctx: AudioContext, bufferSize: int)``` | Create a node that transfer its inputs back to the main thread with custom buffer size (must be multiple of 128). Its port's ```onmessage``` handler can be set to get audio data. Has 1 input with 1 channel and no output. The the higher the size, the lesser the audio breaks up, but the higher the latency. Recomended value is around ```128 * 150```. | -| ```Promise cleanUp()``` | A convenience function that call ```delete()``` on all objects and revoke all URLs. **Put this at the end of your code!** | +| ```Promise cleanUp()``` | A convenience function that call ```delete()``` on all objects and revoke all URLs. **Run this when you're done!** | +| ```Promise getModelCache()``` | Get ```Cache``` object that stores models. This allow for more granular read and writes to the model storage. | | ```EpMode``` | Enum for endpointer modes | See Vosk's description | ## ```Model``` object diff --git a/Examples/Vosklet.js b/Examples/Vosklet.js index c4dc45e..42d93bd 100644 --- a/Examples/Vosklet.js +++ b/Examples/Vosklet.js @@ -1 +1 @@ -var loadVosklet = (() => { var _scriptName = typeof document != 'undefined' ? document.currentScript?.src : undefined; return (function(moduleArg = {}) { var moduleRtn;function m(){p.buffer!=q.buffer&&t();return q}function w(){p.buffer!=q.buffer&&t();return aa}function ba(){p.buffer!=q.buffer&&t();return ca}function da(){p.buffer!=q.buffer&&t();return ha}function y(){p.buffer!=q.buffer&&t();return ia}function z(){p.buffer!=q.buffer&&t();return ja}function ka(){p.buffer!=q.buffer&&t();return la}var A=moduleArg,ma,na,oa=new Promise((a,b)=>{ma=a;na=b}),pa="object"==typeof window,qa="function"==typeof importScripts,ra="object"==typeof process&&"object"==typeof process.Pa&&"string"==typeof process.Pa.node&&"renderer"!=process.type,sa=A.$ww;if(pa){var B=[],ta=["status","partialResult","result"];let a=URL.createObjectURL(new Blob(["(",(()=>{registerProcessor("VoskletTransferer",class extends AudioWorkletProcessor{constructor(d){super();this.sa=0;this.za=d.processorOptions[0];this.wa=new Float32Array(this.za)}process(d){d[0][0]&&(this.wa.set(d[0][0],this.sa),this.sa+=128,this.sa>=this.za&&(this.sa=0,this.port.postMessage(this.wa,[this.wa.buffer]),this.wa=new Float32Array(this.za)));return!0}})}).toString(),")()"],{type:"text/javascript"}));class b extends EventTarget{constructor(){super();B.push(this)}delete(){this.ga.delete()}static async ra(d,e,f,h){let g=new b,k=new Promise((u,r)=>{g.addEventListener("status",x=>{x.detail?r(x.detail):(h&&(g.findWord=v=>g.ga.findWord(v)),u(g))},{once:!0})}),l=await caches.open("Vosklet"),n=await l.match(e);if("undefined"==typeof n||n.headers.get("id")!=f){n=await fetch(d,{cache:"no-store"});if(!n.ok)throw"Unable to fetch model, status: "+n.status;await l.put(e,new Response(n.clone().body,{headers:{id:f}}))}d=await (new Response(n.body.pipeThrough(new DecompressionStream("gzip")))).arrayBuffer();e=C(d.byteLength);w().set(new Uint8Array(d),e);g.ga=new A.CommonModel(B.length-1,h,e,d.byteLength);return k}}class c extends EventTarget{constructor(){super();this.acceptWaveform=d=>{let e=C(4*d.length);ka().set(d,e/4);this.ga.acceptWaveform(e,d.length)};B.push(this);return new Proxy(this,{get(d,e){if(void 0!=d[e]||void 0!=d.ga[e]){var f=d[e];if(f)return f.bind?f.bind(d):f;f=d.ga[e];return f.bind?f.bind(d.ga):f}}})}async delete(d=!1){let e=new Promise(f=>this.addEventListener("status",()=>{this.ga.delete();f()},{once:!0}));this.ga.safeDelete(d);return e}static async ra(d,e,f,h,g){let k=new c,l=new Promise((n,u)=>{k.addEventListener("status",r=>{r.detail?u(r.detail):n(k)},{once:!0})});switch(f){case 1:k.ga=new A.Recognizer(B.length-1,e,d);break;case 2:k.ga=new A.Recognizer(B.length-1,e,d,g);break;default:k.ga=new A.Recognizer(B.length-1,e,d,h,0)}return l}}A={cleanUp:async()=>{for(let d of B)await d.delete();URL.revokeObjectURL(a)},createTransferer:async(d,e)=>{await d.audioWorklet.addModule(a);return new AudioWorkletNode(d,"VoskletTransferer",{channelCountMode:"explicit",numberOfInputs:1,numberOfOutputs:0,channelCount:1,processorOptions:[e]})},createModel:(d,e,f)=>b.ra(d,e,f,!0),createSpkModel:(d,e,f)=>b.ra(d,e,f,!1),createRecognizer:(d,e)=>c.ra(d.ga,e,1),createRecognizerWithGrm:(d,e,f)=>c.ra(d.ga,e,3,f,null),createRecognizerWithSpkModel:(d,e,f)=>c.ra(d.ga,e,2,null,f.ga)}}var ua=Object.assign({},A),F="",va,wa;if(pa||qa)qa?F=self.location.href:"undefined"!=typeof document&&document.currentScript&&(F=document.currentScript.src),_scriptName&&(F=_scriptName),F.startsWith("blob:")?F="":F=F.substr(0,F.replace(/[?#].*/,"").lastIndexOf("/")+1),qa&&(wa=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),va=a=>fetch(a,{credentials:"same-origin"}).then(b=>b.ok?b.arrayBuffer():Promise.reject(Error(b.status+" : "+b.url)));var xa=console.log.bind(console),G=console.error.bind(console);Object.assign(A,ua);ua=null;var p,ya,za=!1,Aa,q,aa,ca,ha,ia,ja,la,Ba,Ca,Da;function t(){var a=p.buffer;A.HEAP8=q=new Int8Array(a);A.HEAP16=ca=new Int16Array(a);A.HEAPU8=aa=new Uint8Array(a);A.HEAPU16=ha=new Uint16Array(a);A.HEAP32=ia=new Int32Array(a);A.HEAPU32=ja=new Uint32Array(a);A.HEAPF32=la=new Float32Array(a);A.HEAPF64=Da=new Float64Array(a);A.HEAP64=Ba=new BigInt64Array(a);A.HEAPU64=Ca=new BigUint64Array(a)}if(A.wasmMemory)p=A.wasmMemory;else if(p=new WebAssembly.Memory({initial:5040,maximum:32768,shared:!0}),!(p.buffer instanceof SharedArrayBuffer))throw G("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),ra&&G("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)"),Error("bad memory");t();var Ea=[],Fa=[],Ga=[];function Ha(){if(sa){let a=A;Ia(a.sb,a.sz);removeEventListener("message",Ja);Ka=Ka.forEach(La);addEventListener("message",La)}else for(;0a.startsWith("data:application/octet-stream;base64,"),Pa;function Qa(a){return va(a).then(b=>new Uint8Array(b),()=>{if(wa)var b=wa(a);else throw"both async and sync fetching of the wasm failed";return b})}function Ra(a,b,c){return Qa(a).then(d=>WebAssembly.instantiate(d,b)).then(c,d=>{G(`failed to asynchronously prepare wasm: ${d}`);Na(d)})}function Sa(a,b){var c=Pa;return"function"!=typeof WebAssembly.instantiateStreaming||Oa(c)||"function"!=typeof fetch?Ra(c,a,b):fetch(c,{credentials:"same-origin"}).then(d=>WebAssembly.instantiateStreaming(d,a).then(b,function(e){G(`wasm streaming compile failed: ${e}`);G("falling back to ArrayBuffer instantiation");return Ra(c,a,b)}))}function Ta(a,b,c){pa?B[a].dispatchEvent(new CustomEvent(ta[b],{detail:0==c?null:J(c)})):self.postMessage([a,b,c])}function Ua(a){this.name="ExitStatus";this.message=`Program terminated with exit(${a})`;this.status=a}var Ka=[],Va=[],Wa,Xa=a=>{var b=Va[a];b||(a>=Va.length&&(Va.length=a+1),Va[a]=b=Wa.get(a));return b},La=a=>{a=a.data;let b=a._wsc;b&&Xa(b)(...a.x)},Ja=a=>{Ka.push(a)},$a=new TextDecoder,J=(a,b)=>{if(!a)return"";b=a+b;for(var c=a;!(c>=b)&&w()[c];)++c;return $a.decode(w().slice(a,c))};class ab{constructor(a){this.ea=a-24}}var bb=0,cb=0,db=a=>{if(null===a)return"null";var b=typeof a;return"object"===b||"array"===b||"function"===b?a.toString():""+a},eb,K=a=>{for(var b="";w()[a];)b+=eb[w()[a++]];return b},L={},M={},fb={},N,gb=a=>{throw new N(a);},O,Q=(a,b,c)=>{function d(g){g=c(g);if(g.length!==a.length)throw new O("Mismatched type converter count");for(var k=0;kfb[g]=b);var e=Array(b.length),f=[],h=0;b.forEach((g,k)=>{M.hasOwnProperty(g)?e[k]=M[g]:(f.push(g),L.hasOwnProperty(g)||(L[g]=[]),L[g].push(()=>{e[k]=M[g];++h;h===f.length&&d(e)}))});0===f.length&&d(e)};function hb(a,b,c={}){var d=b.name;if(!a)throw new N(`type "${d}" must have a positive integer typeid pointer`);if(M.hasOwnProperty(a)){if(c.Ja)return;throw new N(`Cannot register type '${d}' twice`);}M[a]=b;delete fb[a];L.hasOwnProperty(a)&&(b=L[a],delete L[a],b.forEach(e=>e()))}function P(a,b,c={}){return hb(a,b,c)}var ib=(a,b,c)=>{switch(b){case 1:return c?d=>m()[d]:d=>w()[d];case 2:return c?d=>ba()[d>>1]:d=>da()[d>>1];case 4:return c?d=>y()[d>>2]:d=>z()[d>>2];case 8:return c?d=>Ba[d>>3]:d=>Ca[d>>3];default:throw new TypeError(`invalid integer width (${b}): ${a}`);}},jb=a=>{throw new N(a.ca.fa.da.name+" instance already deleted");},kb=!1,lb=()=>{},mb=(a,b,c)=>{if(b===c)return a;if(void 0===c.ja)return null;a=mb(a,b,c.ja);return null===a?null:c.Fa(a)},nb={},R=[],ob=()=>{for(;R.length;){var a=R.pop();a.ca.pa=!1;a["delete"]()}},S,T={},pb=(a,b)=>{if(void 0===b)throw new N("ptr should not be undefined");for(;a.ja;)b=a.ua(b),a=a.ja;return T[b]},qb=(a,b)=>{if(!b.fa||!b.ea)throw new O("makeClassHandle requires ptr and ptrType");if(!!b.la!==!!b.ha)throw new O("Both smartPtrType and smartPtr must be specified");b.count={value:1};return U(Object.create(a,{ca:{value:b,writable:!0}}))},U=a=>{if("undefined"===typeof FinalizationRegistry)return U=b=>b,a;kb=new FinalizationRegistry(b=>{b=b.ca;--b.count.value;0===b.count.value&&(b.ha?b.la.na(b.ha):b.fa.da.na(b.ea))});U=b=>{var c=b.ca;c.ha&&kb.register(b,{ca:c},b);return b};lb=b=>{kb.unregister(b)};return U(a)};function rb(){}var sb=(a,b)=>Object.defineProperty(b,"name",{value:a}),tb=(a,b,c)=>{if(void 0===a[b].ia){var d=a[b];a[b]=function(...e){if(!a[b].ia.hasOwnProperty(e.length))throw new N(`Function '${c}' called with an invalid number of arguments (${e.length}) - expects one of (${a[b].ia})!`);return a[b].ia[e.length].apply(this,e)};a[b].ia=[];a[b].ia[d.va]=d}},ub=(a,b,c)=>{if(A.hasOwnProperty(a)){if(void 0===c||void 0!==A[a].ia&&void 0!==A[a].ia[c])throw new N(`Cannot register public name '${a}' twice`);tb(A,a,a);if(A.hasOwnProperty(c))throw new N(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`);A[a].ia[c]=b}else A[a]=b,void 0!==c&&(A[a].Sa=c)},vb=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 wb(a,b,c,d,e,f,h,g){this.name=a;this.constructor=b;this.qa=c;this.na=d;this.ja=e;this.Ha=f;this.ua=h;this.Fa=g;this.La=[]}var xb=(a,b,c)=>{for(;b!==c;){if(!b.ua)throw new N(`Expected null or instance of ${c.name}, got an instance of ${b.name}`);a=b.ua(a);b=b.ja}return a};function yb(a,b){if(null===b){if(this.Aa)throw new N(`null is not a valid ${this.name}`);return 0}if(!b.ca)throw new N(`Cannot pass "${db(b)}" as a ${this.name}`);if(!b.ca.ea)throw new N(`Cannot pass deleted object as a pointer of type ${this.name}`);return xb(b.ca.ea,b.ca.fa.da,this.da)}function zb(a,b){if(null===b){if(this.Aa)throw new N(`null is not a valid ${this.name}`);if(this.ya){var c=this.Ma();null!==a&&a.push(this.na,c);return c}return 0}if(!b||!b.ca)throw new N(`Cannot pass "${db(b)}" as a ${this.name}`);if(!b.ca.ea)throw new N(`Cannot pass deleted object as a pointer of type ${this.name}`);if(!this.xa&&b.ca.fa.xa)throw new N(`Cannot convert argument of type ${b.ca.la?b.ca.la.name:b.ca.fa.name} to parameter type ${this.name}`);c=xb(b.ca.ea,b.ca.fa.da,this.da);if(this.ya){if(void 0===b.ca.ha)throw new N("Passing raw pointer to smart pointer is illegal");switch(this.Oa){case 0:if(b.ca.la===this)c=b.ca.ha;else throw new N(`Cannot convert argument of type ${b.ca.la?b.ca.la.name:b.ca.fa.name} to parameter type ${this.name}`);break;case 1:c=b.ca.ha;break;case 2:if(b.ca.la===this)c=b.ca.ha;else{var d=b.clone();c=this.Na(c,Ab(()=>d["delete"]()));null!==a&&a.push(this.na,c)}break;default:throw new N("Unsupporting sharing policy");}}return c}function Bb(a,b){if(null===b){if(this.Aa)throw new N(`null is not a valid ${this.name}`);return 0}if(!b.ca)throw new N(`Cannot pass "${db(b)}" as a ${this.name}`);if(!b.ca.ea)throw new N(`Cannot pass deleted object as a pointer of type ${this.name}`);if(b.ca.fa.xa)throw new N(`Cannot convert argument of type ${b.ca.fa.name} to parameter type ${this.name}`);return xb(b.ca.ea,b.ca.fa.da,this.da)}function Cb(a){return this.fromWireType(z()[a>>2])}function Db(a,b,c,d,e,f,h,g,k,l,n){this.name=a;this.da=b;this.Aa=c;this.xa=d;this.ya=e;this.Ka=f;this.Oa=h;this.Da=g;this.Ma=k;this.Na=l;this.na=n;e||void 0!==b.ja?this.toWireType=zb:(this.toWireType=d?yb:Bb,this.ka=null)}var Eb=(a,b,c)=>{if(!A.hasOwnProperty(a))throw new O("Replacing nonexistent public symbol");void 0!==A[a].ia&&void 0!==c?A[a].ia[c]=b:(A[a]=b,A[a].va=c)},V=(a,b)=>{a=K(a);var c=Xa(b);if("function"!=typeof c)throw new N(`unknown function pointer with signature ${a}: ${b}`);return c},Fb,Hb=a=>{a=Gb(a);var b=K(a);W(a);return b},Ib=(a,b)=>{function c(f){e[f]||M[f]||(fb[f]?fb[f].forEach(c):(d.push(f),e[f]=!0))}var d=[],e={};b.forEach(c);throw new Fb(`${a}: `+d.map(Hb).join([", "]));},Jb=(a,b)=>{for(var c=[],d=0;d>2]);return c},Kb=a=>{for(;a.length;){var b=a.pop();a.pop()(b)}};function Lb(a){for(var b=1;bh)throw new N("argTypes array size mismatch! Must at least get return value and 'this' types!");var g=null!==b[1]&&null!==c,k=Lb(b);c="void"!==b[0].name;d=[a,gb,d,e,Kb,b[0],b[1]];for(e=0;e{a=a.trim();const b=a.indexOf("(");return-1!==b?a.substr(0,b):a},Qb=[],X=[],Ab=a=>{switch(a){case void 0:return 2;case null:return 4;case !0:return 6;case !1:return 8;default:const b=Qb.pop()||X.length;X[b]=a;X[b+1]=1;return b}},Rb={name:"emscripten::val",fromWireType:a=>{if(!a)throw new N("Cannot use deleted val. handle = "+a);var b=X[a];9Ab(b),ma:8,readValueFromPointer:Cb,ka:null},Sb=(a,b,c)=>{switch(b){case 1:return c?function(d){return this.fromWireType(m()[d])}:function(d){return this.fromWireType(w()[d])};case 2:return c?function(d){return this.fromWireType(ba()[d>>1])}:function(d){return this.fromWireType(da()[d>>1])};case 4:return c?function(d){return this.fromWireType(y()[d>>2])}:function(d){return this.fromWireType(z()[d>>2])};default:throw new TypeError(`invalid integer width (${b}): ${a}`);}},Tb=a=>{var b=M[a];if(void 0===b)throw a=`${"enum"} has unknown type ${Hb(a)}`,new N(a);return b},Ub=(a,b)=>{switch(b){case 4:return function(c){return this.fromWireType(ka()[c>>2])};case 8:return function(c){var d=this.fromWireType;p.buffer!=q.buffer&&t();return d.call(this,Da[c>>3])};default:throw new TypeError(`invalid float width (${b}): ${a}`);}},Y=(a,b,c,d)=>{if(!(0=h){var g=a.charCodeAt(++f);h=65536+((h&1023)<<10)|g&1023}if(127>=h){if(c>=d)break;b[c++]=h}else{if(2047>=h){if(c+1>=d)break;b[c++]=192|h>>6}else{if(65535>=h){if(c+2>=d)break;b[c++]=224|h>>12}else{if(c+3>=d)break;b[c++]=240|h>>18;b[c++]=128|h>>12&63}b[c++]=128|h>>6&63}b[c++]=128|h&63}}b[c]=0;return c-e},Vb=(a,b)=>{Y(a,w(),b,17)},Wb=a=>{for(var b=0,c=0;c=d?b++:2047>=d?b+=2:55296<=d&&57343>=d?(b+=4,++c):b+=3}return b},Xb=new TextDecoder("utf-16le"),Yb=(a,b)=>{var c=a>>1;for(b=c+b/2;!(c>=b)&&da()[c];)++c;c<<=1;return Xb.decode(w().slice(a,c))},Zb=(a,b,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]=f;b+=2}ba()[b>>1]=0;return b-d},$b=a=>2*a.length,ac=(a,b)=>{for(var c=0,d="";!(c>=b/4);){var e=y()[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},bc=(a,b,c)=>{c??=2147483647;if(4>c)return 0;var d=b;c=d+c-4;for(var e=0;e=f){var h=a.charCodeAt(++e);f=65536+((f&1023)<<10)|h&1023}y()[b>>2]=f;b+=4;if(b+4>c)break}y()[b>>2]=0;return b-d},cc=a=>{for(var b=0,c=0;c=d&&++c;b+=4}return b},dc={},ec=1,fc=URL.createObjectURL(new Blob(["onmessage=function(d){onmessage=null;d=d.data;d[`instantiateWasm`]=(i,r)=>{var n=new WebAssembly.Instance(d[`wasm`],i);return r(n,d[`wasm`]);};importScripts(d.js);loadVosklet(d);d.wasm=d.mem=d.js=0;}"],{type:"application/javascript"})),gc={},hc=a=>{if(!(a instanceof Ua||"unwind"==a))throw a;},ic=0,jc=a=>{Aa=a;0{if(!za)try{if(a(),!(0{if(!pc){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:"./this.program"},b;for(b in oc)void 0===oc[b]?delete a[b]:a[b]=oc[b];var c=[];for(b in a)c.push(`${b}=${a[b]}`);pc=c}return pc},pc,rc=()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return a=>(a.set(crypto.getRandomValues(new Uint8Array(a.byteLength))),a);Na("initRandomDevice")},sc=a=>(sc=rc())(a),tc=Array(256),uc=0;256>uc;++uc)tc[uc]=String.fromCharCode(uc);eb=tc;N=A.BindingError=class extends Error{constructor(a){super(a);this.name="BindingError"}};O=A.InternalError=class extends Error{constructor(a){super(a);this.name="InternalError"}};Object.assign(rb.prototype,{isAliasOf:function(a){if(!(this instanceof rb&&a instanceof rb))return!1;var b=this.ca.fa.da,c=this.ca.ea;a.ca=a.ca;var d=a.ca.fa.da;for(a=a.ca.ea;b.ja;)c=b.ua(c),b=b.ja;for(;d.ja;)a=d.ua(a),d=d.ja;return b===d&&c===a},clone:function(){this.ca.ea||jb(this);if(this.ca.ta)return this.ca.count.value+=1,this;var a=U,b=Object,c=b.create,d=Object.getPrototypeOf(this),e=this.ca;a=a(c.call(b,d,{ca:{value:{count:e.count,pa:e.pa,ta:e.ta,ea:e.ea,fa:e.fa,ha:e.ha,la:e.la}}}));a.ca.count.value+=1;a.ca.pa=!1;return a},["delete"](){this.ca.ea||jb(this);if(this.ca.pa&&!this.ca.ta)throw new N("Object already scheduled for deletion");lb(this);var a=this.ca;--a.count.value;0===a.count.value&&(a.ha?a.la.na(a.ha):a.fa.da.na(a.ea));this.ca.ta||(this.ca.ha=void 0,this.ca.ea=void 0)},isDeleted:function(){return!this.ca.ea},deleteLater:function(){this.ca.ea||jb(this);if(this.ca.pa&&!this.ca.ta)throw new N("Object already scheduled for deletion");R.push(this);1===R.length&&S&&S(ob);this.ca.pa=!0;return this}});A.getInheritedInstanceCount=()=>Object.keys(T).length;A.getLiveInheritedInstances=()=>{var a=[],b;for(b in T)T.hasOwnProperty(b)&&a.push(T[b]);return a};A.flushPendingDeletes=ob;A.setDelayFunction=a=>{S=a;R.length&&S&&S(ob)};Object.assign(Db.prototype,{Ia(a){this.Da&&(a=this.Da(a));return a},Ca(a){this.na?.(a)},ma:8,readValueFromPointer:Cb,fromWireType:function(a){function b(){return this.ya?qb(this.da.qa,{fa:this.Ka,ea:c,la:this,ha:a}):qb(this.da.qa,{fa:this,ea:a})}var c=this.Ia(a);if(!c)return this.Ca(a),null;var d=pb(this.da,c);if(void 0!==d){if(0===d.ca.count.value)return d.ca.ea=c,d.ca.ha=a,d.clone();d=d.clone();this.Ca(a);return d}d=this.da.Ha(c);d=nb[d];if(!d)return b.call(this);d=this.xa?d.Ea:d.pointerType;var e=mb(c,this.da,d.da);return null===e?b.call(this):this.ya?qb(d.da.qa,{fa:d,ea:e,la:this,ha:a}):qb(d.da.qa,{fa:d,ea:e})}});Fb=A.UnboundTypeError=((a,b)=>{var c=sb(b,function(d){this.name=b;this.message=d;d=Error(d).stack;void 0!==d&&(this.stack=this.toString()+"\n"+d.replace(/^Error(:[^\n]*)?\n/,""))});c.prototype=Object.create(a.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`};return c})(Error,"UnboundTypeError");X.push(0,1,void 0,1,null,1,!0,1,!1,1);A.count_emval_handles=()=>X.length/2-5-Qb.length;sa&&(dc[0]=this,addEventListener("message",Ja));var wc={c:(a,b,c,d)=>{Na(`Assertion failed: ${J(a)}, at: `+[b?J(b):"unknown filename",c,d?J(d):"unknown function"])},s:(a,b)=>Xa(a)(b),d:(a,b,c)=>{var d=new ab(a);z()[d.ea+16>>2]=0;z()[d.ea+4>>2]=b;z()[d.ea+8>>2]=c;bb=a;cb++;throw bb;},P:()=>{Na("")},q:(a,b,c)=>{b=K(b);P(a,{name:b,fromWireType:d=>d,toWireType:function(d,e){if("bigint"!=typeof e&&"number"!=typeof e)throw new TypeError(`Cannot convert "${db(e)}" to ${this.name}`);"number"==typeof e&&(e=BigInt(e));return e},ma:8,readValueFromPointer:ib(b,c,-1==b.indexOf("u")),ka:null})},R:(a,b,c,d)=>{b=K(b);P(a,{name:b,fromWireType:function(e){return!!e},toWireType:function(e,f){return f?c:d},ma:8,readValueFromPointer:function(e){return this.fromWireType(w()[e])},ka:null})},o:(a,b,c,d,e,f,h,g,k,l,n,u,r)=>{n=K(n);f=V(e,f);g&&=V(h,g);l&&=V(k,l);r=V(u,r);var x=vb(n);ub(x,function(){Ib(`Cannot construct ${n} due to unbound types`,[d])});Q([a,b,c],d?[d]:[],v=>{v=v[0];if(d){var D=v.da;var ea=D.qa}else ea=rb.prototype;v=sb(n,function(...Ya){if(Object.getPrototypeOf(this)!==Za)throw new N("Use 'new' to construct "+n);if(void 0===E.oa)throw new N(n+" has no accessible constructor");var Pb=E.oa[Ya.length];if(void 0===Pb)throw new N(`Tried to invoke ctor of ${n} with invalid number of parameters (${Ya.length}) - expected (${Object.keys(E.oa).toString()}) parameters instead!`);return Pb.apply(this,Ya)});var Za=Object.create(ea,{constructor:{value:v}});v.prototype=Za;var E=new wb(n,v,Za,r,D,f,g,l);if(E.ja){var fa;(fa=E.ja).Ba??(fa.Ba=[]);E.ja.Ba.push(E)}D=new Db(n,E,!0,!1,!1);fa=new Db(n+"*",E,!1,!1,!1);ea=new Db(n+" const*",E,!1,!0,!1);nb[a]={pointerType:fa,Ea:ea};Eb(x,v);return[D,fa,ea]})},j:(a,b,c,d,e,f)=>{var h=Jb(b,c);e=V(d,e);Q([],[a],g=>{g=g[0];var k=`constructor ${g.name}`;void 0===g.da.oa&&(g.da.oa=[]);if(void 0!==g.da.oa[b-1])throw new N(`Cannot register multiple constructors with identical number of parameters (${b-1}) for class '${g.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);g.da.oa[b-1]=()=>{Ib(`Cannot construct ${g.name} due to unbound types`,h)};Q([],h,l=>{l.splice(1,0,null);g.da.oa[b-1]=Nb(k,l,null,e,f);return[]});return[]})},g:(a,b,c,d,e,f,h,g,k)=>{var l=Jb(c,d);b=K(b);b=Ob(b);f=V(e,f);Q([],[a],n=>{function u(){Ib(`Cannot call ${r} due to unbound types`,l)}n=n[0];var r=`${n.name}.${b}`;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);g&&n.da.La.push(b);var x=n.da.qa,v=x[b];void 0===v||void 0===v.ia&&v.className!==n.name&&v.va===c-2?(u.va=c-2,u.className=n.name,x[b]=u):(tb(x,b,r),x[b].ia[c-2]=u);Q([],l,D=>{D=Nb(r,D,n,f,h,k);void 0===x[b].ia?(D.va=c-2,x[b]=D):x[b].ia[c-2]=D;return[]});return[]})},Q:a=>P(a,Rb),A:(a,b,c,d)=>{function e(){}b=K(b);e.values={};P(a,{name:b,constructor:e,fromWireType:function(f){return this.constructor.values[f]},toWireType:(f,h)=>h.value,ma:8,readValueFromPointer:Sb(b,c,d),ka:null});ub(b,e)},k:(a,b,c)=>{var d=Tb(a);b=K(b);a=d.constructor;d=Object.create(d.constructor.prototype,{value:{value:c},constructor:{value:sb(`${d.name}_${b}`,function(){})}});a.values[c]=d;a[b]=d},p:(a,b,c)=>{b=K(b);P(a,{name:b,fromWireType:d=>d,toWireType:(d,e)=>e,ma:8,readValueFromPointer:Ub(b,c),ka:null})},K:(a,b,c,d,e,f,h)=>{var g=Jb(b,c);a=K(a);a=Ob(a);e=V(d,e);ub(a,function(){Ib(`Cannot call ${a} due to unbound types`,g)},b-1);Q([],g,k=>{Eb(a,Nb(a,[k[0],null].concat(k.slice(1)),null,e,f,h),b-1);return[]})},h:(a,b,c,d,e)=>{b=K(b);-1===e&&(e=4294967295);e=g=>g;if(0===d){var f=32-8*c;e=g=>g<>>f}var h=b.includes("unsigned")?function(g,k){return k>>>0}:function(g,k){return k};P(a,{name:b,fromWireType:e,toWireType:h,ma:8,readValueFromPointer:ib(b,c,0!==d),ka:null})},e:(a,b,c)=>{function d(f){var h=z()[f>>2];f=z()[f+4>>2];return new e(m().buffer,f,h)}var e=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][b];c=K(c);P(a,{name:c,fromWireType:d,ma:8,readValueFromPointer:d},{Ja:!0})},r:(a,b)=>{b=K(b);var c="std::string"===b;P(a,{name:b,fromWireType:function(d){var e=z()[d>>2],f=d+4;if(c)for(var h=f,g=0;g<=e;++g){var k=f+g;if(g==e||0==w()[k]){h=J(h,k-h);if(void 0===l)var l=h;else l+=String.fromCharCode(0),l+=h;h=k+1}}else{l=Array(e);for(g=0;g>2]=h;if(c&&f)h+=1,Y(e,w(),k,h);else if(f)for(f=0;f{c=K(c);if(2===b){var d=Yb;var e=Zb;var f=$b;var h=g=>da()[g>>1]}else 4===b&&(d=ac,e=bc,f=cc,h=g=>z()[g>>2]);P(a,{name:c,fromWireType:g=>{for(var k=z()[g>>2],l,n=g+4,u=0;u<=k;++u){var r=g+4+u*b;if(u==k||0==h(r))n=d(n,r-n),void 0===l?l=n:(l+=String.fromCharCode(0),l+=n),n=r+b}W(g);return l},toWireType:(g,k)=>{if("string"!=typeof k)throw new N(`Cannot pass non-string to C++ string type ${c}`);var l=f(k),n=C(4+l+b);z()[n>>2]=l/b;e(k,n+4,l+b);null!==g&&g.push(W,n);return n},ma:8,readValueFromPointer:Cb,ka(g){W(g)}})},S:(a,b)=>{b=K(b);P(a,{Ra:!0,name:b,ma:0,fromWireType:()=>{},toWireType:()=>{}})},H:(a,b)=>{let c=dc[ec]=new Worker(fc);c.postMessage({$ww:ec,wasm:ya,js:A.mainScriptUrlOrBlob||_scriptName,wasmMemory:p,sb:a,sz:b});c.onmessage=La;return ec++},O:()=>1,u:()=>{ic=0},v:(a,b)=>{gc[a]&&(clearTimeout(gc[a].id),delete gc[a]);if(!b)return 0;var c=setTimeout(()=>{delete gc[a];kc(()=>vc(a,performance.now()))},b);gc[a]={id:c,Va:b};return 0},J:(a,b,c,d)=>{var e=(new Date).getFullYear(),f=(new Date(e,0,1)).getTimezoneOffset();e=(new Date(e,6,1)).getTimezoneOffset();var h=Math.max(f,e);z()[a>>2]=60*h;y()[b>>2]=Number(f!=e);b=g=>{var k=Math.abs(g);return`UTC${0<=g?"-":"+"}${String(Math.floor(k/60)).padStart(2,"0")}${String(k%60).padStart(2,"0")}`};a=b(f);b=b(e);ew().set(mc[a].Ga,b),B:()=>lc.length,C:()=>mc.length,y:(a,b)=>{a=lc[a].Qa;var c=Wb(a)+1;Y(a,w(),b,c)},w:a=>mc[a].mode,E:a=>mc[a].Ga.length,z:(a,b)=>{a=lc[a].Ta;var c=Wb(a)+1;Y(a,w(),b,c)},x:(a,b)=>{a=mc[a].Ua;var c=Wb(a)+1;Y(a,w(),b,c)},G:()=>{a:{if(!nc.length){var a=null;"undefined"!=typeof window&&"function"==typeof window.prompt&&(a=window.prompt("Input: "),null!==a&&(a+="\n"));if(!a){var b=null;break a}b=Array(Wb(a)+1);a=Y(a,b,0,b.length);b.length=a;nc=b}b=nc.shift()}return"number"===typeof b?b:-1},T:a=>{console.error(J(a))},V:a=>{console.log(J(a))},U:a=>{console.warn(J(a))},f:()=>Date.now(),l:a=>G(J(a)),m:()=>performance.now(),F:a=>xa(J(a)),L:a=>{var b=w().length;a>>>=0;if(a<=b||2147483648=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);a:{d=(Math.min(2147483648,65536*Math.ceil(Math.max(a,d)/65536))-p.buffer.byteLength+65535)/65536;try{p.grow(d);t();var e=1;break a}catch(f){}e=void 0}if(e)return!0}return!1},M:(a,b)=>{var c=0;qc().forEach((d,e)=>{var f=b+c;e=z()[a+4*e>>2]=f;for(f=0;f{var c=qc();z()[a>>2]=c.length;var d=0;c.forEach(e=>d+=e.length+1);z()[b>>2]=d;return 0},b:a=>{Aa=a;jc(a)},i:Ta,I:(a,b)=>{sc(w().subarray(a,a+b));return 0},a:p,t:jc,W:function(a,b){for(let c of Object.values(dc))c.postMessage({_wsc:a,x:[b]}),c.onmessage=d=>Ta(...d.data)}},Z=function(){function a(c,d){Z=c.exports;Wa=Z._;Fa.unshift(Z.X);ya=d;H--;0==H&&(null!==Ma&&(clearInterval(Ma),Ma=null),I&&(c=I,I=null,c()));return Z}var b={a:wc};H++;if(A.instantiateWasm)try{return A.instantiateWasm(b,a)}catch(c){G(`Module.instantiateWasm callback failed with error: ${c}`),na(c)}Pa??=Oa("Vosklet.wasm")?"Vosklet.wasm":F+"Vosklet.wasm";Sa(b,function(c){a(c.instance,c.module)}).catch(na);return{}}(),W=a=>(W=Z.Y)(a),C=a=>(C=Z.Z)(a),Gb=a=>(Gb=Z.$)(a),vc=(a,b)=>(vc=Z.aa)(a,b),Ia=(a,b)=>(Ia=Z.ba)(a,b),xc;I=function yc(){xc||zc();xc||(I=yc)};function zc(){if(!(0 loadVosklet); \ No newline at end of file +var loadVosklet = (() => { var _scriptName = typeof document != 'undefined' ? document.currentScript?.src : undefined; return (function(moduleArg = {}) { var moduleRtn;function m(){p.buffer!=q.buffer&&u();return q}function x(){p.buffer!=q.buffer&&u();return aa}function ba(){p.buffer!=q.buffer&&u();return ca}function da(){p.buffer!=q.buffer&&u();return ha}function y(){p.buffer!=q.buffer&&u();return ia}function A(){p.buffer!=q.buffer&&u();return ja}function ka(){p.buffer!=q.buffer&&u();return la}var B=moduleArg,ma,na,oa=new Promise((a,b)=>{ma=a;na=b}),pa="object"==typeof window,qa="function"==typeof importScripts,ra="object"==typeof process&&"object"==typeof process.Pa&&"string"==typeof process.Pa.node&&"renderer"!=process.type,sa=B.$ww;if(pa){var C=[],ta=["status","partialResult","result"];let a=caches.open("Vosklet"),b=URL.createObjectURL(new Blob(["(",(()=>{registerProcessor("VoskletTransferer",class extends AudioWorkletProcessor{constructor(e){super();this.sa=0;this.za=e.processorOptions[0];this.wa=new Float32Array(this.za)}process(e){e[0][0]&&(this.wa.set(e[0][0],this.sa),this.sa+=128,this.sa>=this.za&&(this.sa=0,this.port.postMessage(this.wa,[this.wa.buffer]),this.wa=new Float32Array(this.za)));return!0}})}).toString(),")()"],{type:"text/javascript"}));class c extends EventTarget{constructor(){super();C.push(this)}delete(){this.ga.delete()}static async ra(e,f,g,h){let k=new c,l=new Promise((t,v)=>{k.addEventListener("status",w=>{w.detail?v(w.detail):(h&&(k.findWord=z=>k.ga.findWord(z)),t(k))},{once:!0})}),n=await caches.open("Vosklet"),r=(await n.keys(f,{ignoreSearch:!0}))[0];if("undefined"==typeof r||r.url.split("?")[1]!=g){e=await fetch(e,{cache:"no-store"});if(!e.ok)throw"Unable to fetch model, status: "+e.status;await n.put(f+"?"+g,e.clone())}else e=await n.match(r);f=await (new Response(e.body.pipeThrough(new DecompressionStream("gzip")))).arrayBuffer();g=D(f.byteLength);x().set(new Uint8Array(f),g);k.ga=new B.CommonModel(C.length-1,h,g,f.byteLength);return l}}class d extends EventTarget{constructor(){super();this.acceptWaveform=e=>{let f=D(4*e.length);ka().set(e,f/4);this.ga.acceptWaveform(f,e.length)};C.push(this);return new Proxy(this,{get(e,f){if(void 0!=e[f]||void 0!=e.ga[f]){var g=e[f];if(g)return g.bind?g.bind(e):g;g=e.ga[f];return g.bind?g.bind(e.ga):g}}})}async delete(e=!1){let f=new Promise(g=>this.addEventListener("status",()=>{this.ga.delete();g()},{once:!0}));this.ga.safeDelete(e);return f}static async ra(e,f,g,h,k){let l=new d,n=new Promise((r,t)=>{l.addEventListener("status",v=>{v.detail?t(v.detail):r(l)},{once:!0})});switch(g){case 1:l.ga=new B.Recognizer(C.length-1,f,e);break;case 2:l.ga=new B.Recognizer(C.length-1,f,e,k);break;default:l.ga=new B.Recognizer(C.length-1,f,e,h,0)}return n}}B={getModelCache:()=>a,cleanUp:async()=>{for(let e of C)await e.delete();URL.revokeObjectURL(b)},createTransferer:async(e,f)=>{await e.audioWorklet.addModule(b);return new AudioWorkletNode(e,"VoskletTransferer",{channelCountMode:"explicit",numberOfInputs:1,numberOfOutputs:0,channelCount:1,processorOptions:[f]})},createModel:(e,f,g)=>c.ra(e,f,g,!0),createSpkModel:(e,f,g)=>c.ra(e,f,g,!1),createRecognizer:(e,f)=>d.ra(e.ga,f,1),createRecognizerWithGrm:(e,f,g)=>d.ra(e.ga,f,3,g,null),createRecognizerWithSpkModel:(e,f,g)=>d.ra(e.ga,f,2,null,g.ga)}}var ua=Object.assign({},B),F="",va,wa;if(pa||qa)qa?F=self.location.href:"undefined"!=typeof document&&document.currentScript&&(F=document.currentScript.src),_scriptName&&(F=_scriptName),F.startsWith("blob:")?F="":F=F.substr(0,F.replace(/[?#].*/,"").lastIndexOf("/")+1),qa&&(wa=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),va=a=>fetch(a,{credentials:"same-origin"}).then(b=>b.ok?b.arrayBuffer():Promise.reject(Error(b.status+" : "+b.url)));var xa=console.log.bind(console),G=console.error.bind(console);Object.assign(B,ua);ua=null;var p,ya,za=!1,Aa,q,aa,ca,ha,ia,ja,la,Ba,Ca,Da;function u(){var a=p.buffer;B.HEAP8=q=new Int8Array(a);B.HEAP16=ca=new Int16Array(a);B.HEAPU8=aa=new Uint8Array(a);B.HEAPU16=ha=new Uint16Array(a);B.HEAP32=ia=new Int32Array(a);B.HEAPU32=ja=new Uint32Array(a);B.HEAPF32=la=new Float32Array(a);B.HEAPF64=Da=new Float64Array(a);B.HEAP64=Ba=new BigInt64Array(a);B.HEAPU64=Ca=new BigUint64Array(a)}if(B.wasmMemory)p=B.wasmMemory;else if(p=new WebAssembly.Memory({initial:5040,maximum:32768,shared:!0}),!(p.buffer instanceof SharedArrayBuffer))throw G("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),ra&&G("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)"),Error("bad memory");u();var Ea=[],Fa=[],Ga=[];function Ha(){if(sa){let a=B;Ia(a.sb,a.sz);removeEventListener("message",Ja);Ka=Ka.forEach(La);addEventListener("message",La)}else for(;0a.startsWith("data:application/octet-stream;base64,"),Pa;function Qa(a){return va(a).then(b=>new Uint8Array(b),()=>{if(wa)var b=wa(a);else throw"both async and sync fetching of the wasm failed";return b})}function Ra(a,b,c){return Qa(a).then(d=>WebAssembly.instantiate(d,b)).then(c,d=>{G(`failed to asynchronously prepare wasm: ${d}`);Na(d)})}function Sa(a,b){var c=Pa;return"function"!=typeof WebAssembly.instantiateStreaming||Oa(c)||"function"!=typeof fetch?Ra(c,a,b):fetch(c,{credentials:"same-origin"}).then(d=>WebAssembly.instantiateStreaming(d,a).then(b,function(e){G(`wasm streaming compile failed: ${e}`);G("falling back to ArrayBuffer instantiation");return Ra(c,a,b)}))}function Ta(a,b,c){pa?C[a].dispatchEvent(new CustomEvent(ta[b],{detail:0==c?null:J(c)})):self.postMessage([a,b,c])}function Ua(a){this.name="ExitStatus";this.message=`Program terminated with exit(${a})`;this.status=a}var Ka=[],Va=[],Wa,Xa=a=>{var b=Va[a];b||(a>=Va.length&&(Va.length=a+1),Va[a]=b=Wa.get(a));return b},La=a=>{a=a.data;let b=a._wsc;b&&Xa(b)(...a.x)},Ja=a=>{Ka.push(a)},$a=new TextDecoder,J=(a,b)=>{if(!a)return"";b=a+b;for(var c=a;!(c>=b)&&x()[c];)++c;return $a.decode(x().slice(a,c))};class ab{constructor(a){this.ea=a-24}}var bb=0,cb=0,db=a=>{if(null===a)return"null";var b=typeof a;return"object"===b||"array"===b||"function"===b?a.toString():""+a},eb,K=a=>{for(var b="";x()[a];)b+=eb[x()[a++]];return b},L={},M={},fb={},N,gb=a=>{throw new N(a);},O,Q=(a,b,c)=>{function d(h){h=c(h);if(h.length!==a.length)throw new O("Mismatched type converter count");for(var k=0;kfb[h]=b);var e=Array(b.length),f=[],g=0;b.forEach((h,k)=>{M.hasOwnProperty(h)?e[k]=M[h]:(f.push(h),L.hasOwnProperty(h)||(L[h]=[]),L[h].push(()=>{e[k]=M[h];++g;g===f.length&&d(e)}))});0===f.length&&d(e)};function hb(a,b,c={}){var d=b.name;if(!a)throw new N(`type "${d}" must have a positive integer typeid pointer`);if(M.hasOwnProperty(a)){if(c.Ja)return;throw new N(`Cannot register type '${d}' twice`);}M[a]=b;delete fb[a];L.hasOwnProperty(a)&&(b=L[a],delete L[a],b.forEach(e=>e()))}function P(a,b,c={}){return hb(a,b,c)}var ib=(a,b,c)=>{switch(b){case 1:return c?d=>m()[d]:d=>x()[d];case 2:return c?d=>ba()[d>>1]:d=>da()[d>>1];case 4:return c?d=>y()[d>>2]:d=>A()[d>>2];case 8:return c?d=>Ba[d>>3]:d=>Ca[d>>3];default:throw new TypeError(`invalid integer width (${b}): ${a}`);}},jb=a=>{throw new N(a.ca.fa.da.name+" instance already deleted");},kb=!1,lb=()=>{},mb=(a,b,c)=>{if(b===c)return a;if(void 0===c.ja)return null;a=mb(a,b,c.ja);return null===a?null:c.Fa(a)},nb={},R=[],ob=()=>{for(;R.length;){var a=R.pop();a.ca.pa=!1;a["delete"]()}},S,T={},pb=(a,b)=>{if(void 0===b)throw new N("ptr should not be undefined");for(;a.ja;)b=a.ua(b),a=a.ja;return T[b]},qb=(a,b)=>{if(!b.fa||!b.ea)throw new O("makeClassHandle requires ptr and ptrType");if(!!b.la!==!!b.ha)throw new O("Both smartPtrType and smartPtr must be specified");b.count={value:1};return U(Object.create(a,{ca:{value:b,writable:!0}}))},U=a=>{if("undefined"===typeof FinalizationRegistry)return U=b=>b,a;kb=new FinalizationRegistry(b=>{b=b.ca;--b.count.value;0===b.count.value&&(b.ha?b.la.na(b.ha):b.fa.da.na(b.ea))});U=b=>{var c=b.ca;c.ha&&kb.register(b,{ca:c},b);return b};lb=b=>{kb.unregister(b)};return U(a)};function rb(){}var sb=(a,b)=>Object.defineProperty(b,"name",{value:a}),tb=(a,b,c)=>{if(void 0===a[b].ia){var d=a[b];a[b]=function(...e){if(!a[b].ia.hasOwnProperty(e.length))throw new N(`Function '${c}' called with an invalid number of arguments (${e.length}) - expects one of (${a[b].ia})!`);return a[b].ia[e.length].apply(this,e)};a[b].ia=[];a[b].ia[d.va]=d}},ub=(a,b,c)=>{if(B.hasOwnProperty(a)){if(void 0===c||void 0!==B[a].ia&&void 0!==B[a].ia[c])throw new N(`Cannot register public name '${a}' twice`);tb(B,a,a);if(B.hasOwnProperty(c))throw new N(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`);B[a].ia[c]=b}else B[a]=b,void 0!==c&&(B[a].Sa=c)},vb=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 wb(a,b,c,d,e,f,g,h){this.name=a;this.constructor=b;this.qa=c;this.na=d;this.ja=e;this.Ha=f;this.ua=g;this.Fa=h;this.La=[]}var xb=(a,b,c)=>{for(;b!==c;){if(!b.ua)throw new N(`Expected null or instance of ${c.name}, got an instance of ${b.name}`);a=b.ua(a);b=b.ja}return a};function yb(a,b){if(null===b){if(this.Aa)throw new N(`null is not a valid ${this.name}`);return 0}if(!b.ca)throw new N(`Cannot pass "${db(b)}" as a ${this.name}`);if(!b.ca.ea)throw new N(`Cannot pass deleted object as a pointer of type ${this.name}`);return xb(b.ca.ea,b.ca.fa.da,this.da)}function zb(a,b){if(null===b){if(this.Aa)throw new N(`null is not a valid ${this.name}`);if(this.ya){var c=this.Ma();null!==a&&a.push(this.na,c);return c}return 0}if(!b||!b.ca)throw new N(`Cannot pass "${db(b)}" as a ${this.name}`);if(!b.ca.ea)throw new N(`Cannot pass deleted object as a pointer of type ${this.name}`);if(!this.xa&&b.ca.fa.xa)throw new N(`Cannot convert argument of type ${b.ca.la?b.ca.la.name:b.ca.fa.name} to parameter type ${this.name}`);c=xb(b.ca.ea,b.ca.fa.da,this.da);if(this.ya){if(void 0===b.ca.ha)throw new N("Passing raw pointer to smart pointer is illegal");switch(this.Oa){case 0:if(b.ca.la===this)c=b.ca.ha;else throw new N(`Cannot convert argument of type ${b.ca.la?b.ca.la.name:b.ca.fa.name} to parameter type ${this.name}`);break;case 1:c=b.ca.ha;break;case 2:if(b.ca.la===this)c=b.ca.ha;else{var d=b.clone();c=this.Na(c,Ab(()=>d["delete"]()));null!==a&&a.push(this.na,c)}break;default:throw new N("Unsupporting sharing policy");}}return c}function Bb(a,b){if(null===b){if(this.Aa)throw new N(`null is not a valid ${this.name}`);return 0}if(!b.ca)throw new N(`Cannot pass "${db(b)}" as a ${this.name}`);if(!b.ca.ea)throw new N(`Cannot pass deleted object as a pointer of type ${this.name}`);if(b.ca.fa.xa)throw new N(`Cannot convert argument of type ${b.ca.fa.name} to parameter type ${this.name}`);return xb(b.ca.ea,b.ca.fa.da,this.da)}function Cb(a){return this.fromWireType(A()[a>>2])}function Db(a,b,c,d,e,f,g,h,k,l,n){this.name=a;this.da=b;this.Aa=c;this.xa=d;this.ya=e;this.Ka=f;this.Oa=g;this.Da=h;this.Ma=k;this.Na=l;this.na=n;e||void 0!==b.ja?this.toWireType=zb:(this.toWireType=d?yb:Bb,this.ka=null)}var Eb=(a,b,c)=>{if(!B.hasOwnProperty(a))throw new O("Replacing nonexistent public symbol");void 0!==B[a].ia&&void 0!==c?B[a].ia[c]=b:(B[a]=b,B[a].va=c)},V=(a,b)=>{a=K(a);var c=Xa(b);if("function"!=typeof c)throw new N(`unknown function pointer with signature ${a}: ${b}`);return c},Fb,Hb=a=>{a=Gb(a);var b=K(a);W(a);return b},Ib=(a,b)=>{function c(f){e[f]||M[f]||(fb[f]?fb[f].forEach(c):(d.push(f),e[f]=!0))}var d=[],e={};b.forEach(c);throw new Fb(`${a}: `+d.map(Hb).join([", "]));},Jb=(a,b)=>{for(var c=[],d=0;d>2]);return c},Kb=a=>{for(;a.length;){var b=a.pop();a.pop()(b)}};function Lb(a){for(var b=1;bg)throw new N("argTypes array size mismatch! Must at least get return value and 'this' types!");var h=null!==b[1]&&null!==c,k=Lb(b);c="void"!==b[0].name;d=[a,gb,d,e,Kb,b[0],b[1]];for(e=0;e{a=a.trim();const b=a.indexOf("(");return-1!==b?a.substr(0,b):a},Qb=[],X=[],Ab=a=>{switch(a){case void 0:return 2;case null:return 4;case !0:return 6;case !1:return 8;default:const b=Qb.pop()||X.length;X[b]=a;X[b+1]=1;return b}},Rb={name:"emscripten::val",fromWireType:a=>{if(!a)throw new N("Cannot use deleted val. handle = "+a);var b=X[a];9Ab(b),ma:8,readValueFromPointer:Cb,ka:null},Sb=(a,b,c)=>{switch(b){case 1:return c?function(d){return this.fromWireType(m()[d])}:function(d){return this.fromWireType(x()[d])};case 2:return c?function(d){return this.fromWireType(ba()[d>>1])}:function(d){return this.fromWireType(da()[d>>1])};case 4:return c?function(d){return this.fromWireType(y()[d>>2])}:function(d){return this.fromWireType(A()[d>>2])};default:throw new TypeError(`invalid integer width (${b}): ${a}`);}},Tb=a=>{var b=M[a];if(void 0===b)throw a=`${"enum"} has unknown type ${Hb(a)}`,new N(a);return b},Ub=(a,b)=>{switch(b){case 4:return function(c){return this.fromWireType(ka()[c>>2])};case 8:return function(c){var d=this.fromWireType;p.buffer!=q.buffer&&u();return d.call(this,Da[c>>3])};default:throw new TypeError(`invalid float width (${b}): ${a}`);}},Y=(a,b,c,d)=>{if(!(0=g){var h=a.charCodeAt(++f);g=65536+((g&1023)<<10)|h&1023}if(127>=g){if(c>=d)break;b[c++]=g}else{if(2047>=g){if(c+1>=d)break;b[c++]=192|g>>6}else{if(65535>=g){if(c+2>=d)break;b[c++]=224|g>>12}else{if(c+3>=d)break;b[c++]=240|g>>18;b[c++]=128|g>>12&63}b[c++]=128|g>>6&63}b[c++]=128|g&63}}b[c]=0;return c-e},Vb=(a,b)=>{Y(a,x(),b,17)},Wb=a=>{for(var b=0,c=0;c=d?b++:2047>=d?b+=2:55296<=d&&57343>=d?(b+=4,++c):b+=3}return b},Xb=new TextDecoder("utf-16le"),Yb=(a,b)=>{var c=a>>1;for(b=c+b/2;!(c>=b)&&da()[c];)++c;c<<=1;return Xb.decode(x().slice(a,c))},Zb=(a,b,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]=f;b+=2}ba()[b>>1]=0;return b-d},$b=a=>2*a.length,ac=(a,b)=>{for(var c=0,d="";!(c>=b/4);){var e=y()[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},bc=(a,b,c)=>{c??=2147483647;if(4>c)return 0;var d=b;c=d+c-4;for(var e=0;e=f){var g=a.charCodeAt(++e);f=65536+((f&1023)<<10)|g&1023}y()[b>>2]=f;b+=4;if(b+4>c)break}y()[b>>2]=0;return b-d},cc=a=>{for(var b=0,c=0;c=d&&++c;b+=4}return b},dc={},ec=1,fc=URL.createObjectURL(new Blob(["onmessage=function(d){onmessage=null;d=d.data;d[`instantiateWasm`]=(i,r)=>{var n=new WebAssembly.Instance(d[`wasm`],i);return r(n,d[`wasm`]);};importScripts(d.js);loadVosklet(d);d.wasm=d.mem=d.js=0;}"],{type:"application/javascript"})),gc={},hc=a=>{if(!(a instanceof Ua||"unwind"==a))throw a;},ic=0,jc=a=>{Aa=a;0{if(!za)try{if(a(),!(0{if(!pc){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:"./this.program"},b;for(b in oc)void 0===oc[b]?delete a[b]:a[b]=oc[b];var c=[];for(b in a)c.push(`${b}=${a[b]}`);pc=c}return pc},pc,rc=()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return a=>(a.set(crypto.getRandomValues(new Uint8Array(a.byteLength))),a);Na("initRandomDevice")},sc=a=>(sc=rc())(a),tc=Array(256),uc=0;256>uc;++uc)tc[uc]=String.fromCharCode(uc);eb=tc;N=B.BindingError=class extends Error{constructor(a){super(a);this.name="BindingError"}};O=B.InternalError=class extends Error{constructor(a){super(a);this.name="InternalError"}};Object.assign(rb.prototype,{isAliasOf:function(a){if(!(this instanceof rb&&a instanceof rb))return!1;var b=this.ca.fa.da,c=this.ca.ea;a.ca=a.ca;var d=a.ca.fa.da;for(a=a.ca.ea;b.ja;)c=b.ua(c),b=b.ja;for(;d.ja;)a=d.ua(a),d=d.ja;return b===d&&c===a},clone:function(){this.ca.ea||jb(this);if(this.ca.ta)return this.ca.count.value+=1,this;var a=U,b=Object,c=b.create,d=Object.getPrototypeOf(this),e=this.ca;a=a(c.call(b,d,{ca:{value:{count:e.count,pa:e.pa,ta:e.ta,ea:e.ea,fa:e.fa,ha:e.ha,la:e.la}}}));a.ca.count.value+=1;a.ca.pa=!1;return a},["delete"](){this.ca.ea||jb(this);if(this.ca.pa&&!this.ca.ta)throw new N("Object already scheduled for deletion");lb(this);var a=this.ca;--a.count.value;0===a.count.value&&(a.ha?a.la.na(a.ha):a.fa.da.na(a.ea));this.ca.ta||(this.ca.ha=void 0,this.ca.ea=void 0)},isDeleted:function(){return!this.ca.ea},deleteLater:function(){this.ca.ea||jb(this);if(this.ca.pa&&!this.ca.ta)throw new N("Object already scheduled for deletion");R.push(this);1===R.length&&S&&S(ob);this.ca.pa=!0;return this}});B.getInheritedInstanceCount=()=>Object.keys(T).length;B.getLiveInheritedInstances=()=>{var a=[],b;for(b in T)T.hasOwnProperty(b)&&a.push(T[b]);return a};B.flushPendingDeletes=ob;B.setDelayFunction=a=>{S=a;R.length&&S&&S(ob)};Object.assign(Db.prototype,{Ia(a){this.Da&&(a=this.Da(a));return a},Ca(a){this.na?.(a)},ma:8,readValueFromPointer:Cb,fromWireType:function(a){function b(){return this.ya?qb(this.da.qa,{fa:this.Ka,ea:c,la:this,ha:a}):qb(this.da.qa,{fa:this,ea:a})}var c=this.Ia(a);if(!c)return this.Ca(a),null;var d=pb(this.da,c);if(void 0!==d){if(0===d.ca.count.value)return d.ca.ea=c,d.ca.ha=a,d.clone();d=d.clone();this.Ca(a);return d}d=this.da.Ha(c);d=nb[d];if(!d)return b.call(this);d=this.xa?d.Ea:d.pointerType;var e=mb(c,this.da,d.da);return null===e?b.call(this):this.ya?qb(d.da.qa,{fa:d,ea:e,la:this,ha:a}):qb(d.da.qa,{fa:d,ea:e})}});Fb=B.UnboundTypeError=((a,b)=>{var c=sb(b,function(d){this.name=b;this.message=d;d=Error(d).stack;void 0!==d&&(this.stack=this.toString()+"\n"+d.replace(/^Error(:[^\n]*)?\n/,""))});c.prototype=Object.create(a.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`};return c})(Error,"UnboundTypeError");X.push(0,1,void 0,1,null,1,!0,1,!1,1);B.count_emval_handles=()=>X.length/2-5-Qb.length;sa&&(dc[0]=this,addEventListener("message",Ja));var wc={c:(a,b,c,d)=>{Na(`Assertion failed: ${J(a)}, at: `+[b?J(b):"unknown filename",c,d?J(d):"unknown function"])},s:(a,b)=>Xa(a)(b),d:(a,b,c)=>{var d=new ab(a);A()[d.ea+16>>2]=0;A()[d.ea+4>>2]=b;A()[d.ea+8>>2]=c;bb=a;cb++;throw bb;},P:()=>{Na("")},q:(a,b,c)=>{b=K(b);P(a,{name:b,fromWireType:d=>d,toWireType:function(d,e){if("bigint"!=typeof e&&"number"!=typeof e)throw new TypeError(`Cannot convert "${db(e)}" to ${this.name}`);"number"==typeof e&&(e=BigInt(e));return e},ma:8,readValueFromPointer:ib(b,c,-1==b.indexOf("u")),ka:null})},R:(a,b,c,d)=>{b=K(b);P(a,{name:b,fromWireType:function(e){return!!e},toWireType:function(e,f){return f?c:d},ma:8,readValueFromPointer:function(e){return this.fromWireType(x()[e])},ka:null})},o:(a,b,c,d,e,f,g,h,k,l,n,r,t)=>{n=K(n);f=V(e,f);h&&=V(g,h);l&&=V(k,l);t=V(r,t);var v=vb(n);ub(v,function(){Ib(`Cannot construct ${n} due to unbound types`,[d])});Q([a,b,c],d?[d]:[],w=>{w=w[0];if(d){var z=w.da;var ea=z.qa}else ea=rb.prototype;w=sb(n,function(...Ya){if(Object.getPrototypeOf(this)!==Za)throw new N("Use 'new' to construct "+n);if(void 0===E.oa)throw new N(n+" has no accessible constructor");var Pb=E.oa[Ya.length];if(void 0===Pb)throw new N(`Tried to invoke ctor of ${n} with invalid number of parameters (${Ya.length}) - expected (${Object.keys(E.oa).toString()}) parameters instead!`);return Pb.apply(this,Ya)});var Za=Object.create(ea,{constructor:{value:w}});w.prototype=Za;var E=new wb(n,w,Za,t,z,f,h,l);if(E.ja){var fa;(fa=E.ja).Ba??(fa.Ba=[]);E.ja.Ba.push(E)}z=new Db(n,E,!0,!1,!1);fa=new Db(n+"*",E,!1,!1,!1);ea=new Db(n+" const*",E,!1,!0,!1);nb[a]={pointerType:fa,Ea:ea};Eb(v,w);return[z,fa,ea]})},j:(a,b,c,d,e,f)=>{var g=Jb(b,c);e=V(d,e);Q([],[a],h=>{h=h[0];var k=`constructor ${h.name}`;void 0===h.da.oa&&(h.da.oa=[]);if(void 0!==h.da.oa[b-1])throw new N(`Cannot register multiple constructors with identical number of parameters (${b-1}) for class '${h.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);h.da.oa[b-1]=()=>{Ib(`Cannot construct ${h.name} due to unbound types`,g)};Q([],g,l=>{l.splice(1,0,null);h.da.oa[b-1]=Nb(k,l,null,e,f);return[]});return[]})},g:(a,b,c,d,e,f,g,h,k)=>{var l=Jb(c,d);b=K(b);b=Ob(b);f=V(e,f);Q([],[a],n=>{function r(){Ib(`Cannot call ${t} due to unbound types`,l)}n=n[0];var t=`${n.name}.${b}`;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);h&&n.da.La.push(b);var v=n.da.qa,w=v[b];void 0===w||void 0===w.ia&&w.className!==n.name&&w.va===c-2?(r.va=c-2,r.className=n.name,v[b]=r):(tb(v,b,t),v[b].ia[c-2]=r);Q([],l,z=>{z=Nb(t,z,n,f,g,k);void 0===v[b].ia?(z.va=c-2,v[b]=z):v[b].ia[c-2]=z;return[]});return[]})},Q:a=>P(a,Rb),A:(a,b,c,d)=>{function e(){}b=K(b);e.values={};P(a,{name:b,constructor:e,fromWireType:function(f){return this.constructor.values[f]},toWireType:(f,g)=>g.value,ma:8,readValueFromPointer:Sb(b,c,d),ka:null});ub(b,e)},k:(a,b,c)=>{var d=Tb(a);b=K(b);a=d.constructor;d=Object.create(d.constructor.prototype,{value:{value:c},constructor:{value:sb(`${d.name}_${b}`,function(){})}});a.values[c]=d;a[b]=d},p:(a,b,c)=>{b=K(b);P(a,{name:b,fromWireType:d=>d,toWireType:(d,e)=>e,ma:8,readValueFromPointer:Ub(b,c),ka:null})},K:(a,b,c,d,e,f,g)=>{var h=Jb(b,c);a=K(a);a=Ob(a);e=V(d,e);ub(a,function(){Ib(`Cannot call ${a} due to unbound types`,h)},b-1);Q([],h,k=>{Eb(a,Nb(a,[k[0],null].concat(k.slice(1)),null,e,f,g),b-1);return[]})},h:(a,b,c,d,e)=>{b=K(b);-1===e&&(e=4294967295);e=h=>h;if(0===d){var f=32-8*c;e=h=>h<>>f}var g=b.includes("unsigned")?function(h,k){return k>>>0}:function(h,k){return k};P(a,{name:b,fromWireType:e,toWireType:g,ma:8,readValueFromPointer:ib(b,c,0!==d),ka:null})},e:(a,b,c)=>{function d(f){var g=A()[f>>2];f=A()[f+4>>2];return new e(m().buffer,f,g)}var e=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][b];c=K(c);P(a,{name:c,fromWireType:d,ma:8,readValueFromPointer:d},{Ja:!0})},r:(a,b)=>{b=K(b);var c="std::string"===b;P(a,{name:b,fromWireType:function(d){var e=A()[d>>2],f=d+4;if(c)for(var g=f,h=0;h<=e;++h){var k=f+h;if(h==e||0==x()[k]){g=J(g,k-g);if(void 0===l)var l=g;else l+=String.fromCharCode(0),l+=g;g=k+1}}else{l=Array(e);for(h=0;h>2]=g;if(c&&f)g+=1,Y(e,x(),k,g);else if(f)for(f=0;f{c=K(c);if(2===b){var d=Yb;var e=Zb;var f=$b;var g=h=>da()[h>>1]}else 4===b&&(d=ac,e=bc,f=cc,g=h=>A()[h>>2]);P(a,{name:c,fromWireType:h=>{for(var k=A()[h>>2],l,n=h+4,r=0;r<=k;++r){var t=h+4+r*b;if(r==k||0==g(t))n=d(n,t-n),void 0===l?l=n:(l+=String.fromCharCode(0),l+=n),n=t+b}W(h);return l},toWireType:(h,k)=>{if("string"!=typeof k)throw new N(`Cannot pass non-string to C++ string type ${c}`);var l=f(k),n=D(4+l+b);A()[n>>2]=l/b;e(k,n+4,l+b);null!==h&&h.push(W,n);return n},ma:8,readValueFromPointer:Cb,ka(h){W(h)}})},S:(a,b)=>{b=K(b);P(a,{Ra:!0,name:b,ma:0,fromWireType:()=>{},toWireType:()=>{}})},H:(a,b)=>{let c=dc[ec]=new Worker(fc);c.postMessage({$ww:ec,wasm:ya,js:B.mainScriptUrlOrBlob||_scriptName,wasmMemory:p,sb:a,sz:b});c.onmessage=La;return ec++},O:()=>1,u:()=>{ic=0},v:(a,b)=>{gc[a]&&(clearTimeout(gc[a].id),delete gc[a]);if(!b)return 0;var c=setTimeout(()=>{delete gc[a];kc(()=>vc(a,performance.now()))},b);gc[a]={id:c,Va:b};return 0},J:(a,b,c,d)=>{var e=(new Date).getFullYear(),f=(new Date(e,0,1)).getTimezoneOffset();e=(new Date(e,6,1)).getTimezoneOffset();var g=Math.max(f,e);A()[a>>2]=60*g;y()[b>>2]=Number(f!=e);b=h=>{var k=Math.abs(h);return`UTC${0<=h?"-":"+"}${String(Math.floor(k/60)).padStart(2,"0")}${String(k%60).padStart(2,"0")}`};a=b(f);b=b(e);ex().set(mc[a].Ga,b),B:()=>lc.length,C:()=>mc.length,y:(a,b)=>{a=lc[a].Qa;var c=Wb(a)+1;Y(a,x(),b,c)},w:a=>mc[a].mode,E:a=>mc[a].Ga.length,z:(a,b)=>{a=lc[a].Ta;var c=Wb(a)+1;Y(a,x(),b,c)},x:(a,b)=>{a=mc[a].Ua;var c=Wb(a)+1;Y(a,x(),b,c)},G:()=>{a:{if(!nc.length){var a=null;"undefined"!=typeof window&&"function"==typeof window.prompt&&(a=window.prompt("Input: "),null!==a&&(a+="\n"));if(!a){var b=null;break a}b=Array(Wb(a)+1);a=Y(a,b,0,b.length);b.length=a;nc=b}b=nc.shift()}return"number"===typeof b?b:-1},T:a=>{console.error(J(a))},V:a=>{console.log(J(a))},U:a=>{console.warn(J(a))},f:()=>Date.now(),l:a=>G(J(a)),m:()=>performance.now(),F:a=>xa(J(a)),L:a=>{var b=x().length;a>>>=0;if(a<=b||2147483648=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);a:{d=(Math.min(2147483648,65536*Math.ceil(Math.max(a,d)/65536))-p.buffer.byteLength+65535)/65536;try{p.grow(d);u();var e=1;break a}catch(f){}e=void 0}if(e)return!0}return!1},M:(a,b)=>{var c=0;qc().forEach((d,e)=>{var f=b+c;e=A()[a+4*e>>2]=f;for(f=0;f{var c=qc();A()[a>>2]=c.length;var d=0;c.forEach(e=>d+=e.length+1);A()[b>>2]=d;return 0},b:a=>{Aa=a;jc(a)},i:Ta,I:(a,b)=>{sc(x().subarray(a,a+b));return 0},a:p,t:jc,W:function(a,b){for(let c of Object.values(dc))c.postMessage({_wsc:a,x:[b]}),c.onmessage=d=>Ta(...d.data)}},Z=function(){function a(c,d){Z=c.exports;Wa=Z._;Fa.unshift(Z.X);ya=d;H--;0==H&&(null!==Ma&&(clearInterval(Ma),Ma=null),I&&(c=I,I=null,c()));return Z}var b={a:wc};H++;if(B.instantiateWasm)try{return B.instantiateWasm(b,a)}catch(c){G(`Module.instantiateWasm callback failed with error: ${c}`),na(c)}Pa??=Oa("Vosklet.wasm")?"Vosklet.wasm":F+"Vosklet.wasm";Sa(b,function(c){a(c.instance,c.module)}).catch(na);return{}}(),W=a=>(W=Z.Y)(a),D=a=>(D=Z.Z)(a),Gb=a=>(Gb=Z.$)(a),vc=(a,b)=>(vc=Z.aa)(a,b),Ia=(a,b)=>(Ia=Z.ba)(a,b),xc;I=function yc(){xc||zc();xc||(I=yc)};function zc(){if(!(0 loadVosklet); \ No newline at end of file diff --git a/Examples/Wrapper.js b/Examples/Wrapper.js index 96aa534..cc6041f 100644 --- a/Examples/Wrapper.js +++ b/Examples/Wrapper.js @@ -8,6 +8,7 @@ if(ENVIRONMENT_IS_WEB) { // 'var' to expose this outside the if var objs = []; var events = ['status', 'partialResult', 'result']; +let _cache = caches.open('Vosklet'); let processorURL = URL.createObjectURL(new Blob(['(', (() => { registerProcessor('VoskletTransferer', class extends AudioWorkletProcessor { constructor(opts) { @@ -50,16 +51,15 @@ class CommonModel extends EventTarget { }, { once: true }) }); let cache = await caches.open('Vosklet'); - let res = await cache.match(storepath); - let tar; - if(typeof res == 'undefined' || res.headers.get('id') != id) { + let req = (await cache.keys(storepath, { ignoreSearch: true }))[0] + let tar, res; + if (typeof req == 'undefined' || req.url.split('?')[1] != id) { // Caching already handled explicitly res = await fetch(url, { cache: 'no-store' }); if (!res.ok) throw 'Unable to fetch model, status: ' + res.status; - await cache.put(storepath, new Response( - res.clone().body, { headers: { 'id': id } } - )); + await cache.put(storepath + '?' + id, res.clone()); } + else res = await cache.match(req) tar = await new Response(res.body.pipeThrough(new DecompressionStream('gzip'))).arrayBuffer(); let tarStart = _malloc(tar.byteLength); HEAPU8.set(new Uint8Array(tar), tarStart); @@ -117,6 +117,8 @@ class Recognizer extends EventTarget { } } Module = { + 'getModelCache': () => _cache, + 'cleanUp': async () => { for(let obj of objs) await obj.delete(); URL.revokeObjectURL(processorURL); diff --git a/Vosklet.js b/Vosklet.js index ca1325f..6505eb6 100644 --- a/Vosklet.js +++ b/Vosklet.js @@ -1 +1 @@ -var loadVosklet = (() => { var _scriptName = typeof document != 'undefined' ? document.currentScript?.src : undefined; return (function(moduleArg = {}) { var moduleRtn;function m(){p.buffer!=q.buffer&&t();return q}function w(){p.buffer!=q.buffer&&t();return aa}function ba(){p.buffer!=q.buffer&&t();return ca}function da(){p.buffer!=q.buffer&&t();return ha}function y(){p.buffer!=q.buffer&&t();return ia}function z(){p.buffer!=q.buffer&&t();return ja}function ka(){p.buffer!=q.buffer&&t();return la}var A=moduleArg,ma,na,oa=new Promise((a,b)=>{ma=a;na=b}),pa="object"==typeof window,qa="function"==typeof importScripts,ra="object"==typeof process&&"object"==typeof process.Pa&&"string"==typeof process.Pa.node&&"renderer"!=process.type,sa=A.$ww;if(pa){var B=[],ta=["status","partialResult","result"];let a=URL.createObjectURL(new Blob(["(",(()=>{registerProcessor("VoskletTransferer",class extends AudioWorkletProcessor{constructor(d){super();this.sa=0;this.za=d.processorOptions[0];this.wa=new Float32Array(this.za)}process(d){d[0][0]&&(this.wa.set(d[0][0],this.sa),this.sa+=128,this.sa>=this.za&&(this.sa=0,this.port.postMessage(this.wa,[this.wa.buffer]),this.wa=new Float32Array(this.za)));return!0}})}).toString(),")()"],{type:"text/javascript"}));class b extends EventTarget{constructor(){super();B.push(this)}delete(){this.ga.delete()}static async ra(d,e,f,h){let g=new b,k=new Promise((u,r)=>{g.addEventListener("status",x=>{x.detail?r(x.detail):(h&&(g.findWord=v=>g.ga.findWord(v)),u(g))},{once:!0})}),l=await caches.open("Vosklet"),n=await l.match(e);if("undefined"==typeof n||n.headers.get("id")!=f){n=await fetch(d,{cache:"no-store"});if(!n.ok)throw"Unable to fetch model, status: "+n.status;await l.put(e,new Response(n.clone().body.pipeThrough(new CompressionStream("gzip")),{headers:{id:f}}))}d=await (new Response(n.body.pipeThrough(new DecompressionStream("gzip")))).arrayBuffer();e=C(d.byteLength);w().set(new Uint8Array(d),e);g.ga=new A.CommonModel(B.length-1,h,e,d.byteLength);return k}}class c extends EventTarget{constructor(){super();this.acceptWaveform=d=>{let e=C(4*d.length);ka().set(d,e/4);this.ga.acceptWaveform(e,d.length)};B.push(this);return new Proxy(this,{get(d,e){if(void 0!=d[e]||void 0!=d.ga[e]){var f=d[e];if(f)return f.bind?f.bind(d):f;f=d.ga[e];return f.bind?f.bind(d.ga):f}}})}async delete(d=!1){let e=new Promise(f=>this.addEventListener("status",()=>{this.ga.delete();f()},{once:!0}));this.ga.safeDelete(d);return e}static async ra(d,e,f,h,g){let k=new c,l=new Promise((n,u)=>{k.addEventListener("status",r=>{r.detail?u(r.detail):n(k)},{once:!0})});switch(f){case 1:k.ga=new A.Recognizer(B.length-1,e,d);break;case 2:k.ga=new A.Recognizer(B.length-1,e,d,g);break;default:k.ga=new A.Recognizer(B.length-1,e,d,h,0)}return l}}A={cleanUp:async()=>{for(let d of B)await d.delete();URL.revokeObjectURL(a)},createTransferer:async(d,e)=>{await d.audioWorklet.addModule(a);return new AudioWorkletNode(d,"VoskletTransferer",{channelCountMode:"explicit",numberOfInputs:1,numberOfOutputs:0,channelCount:1,processorOptions:[e]})},createModel:(d,e,f)=>b.ra(d,e,f,!0),createSpkModel:(d,e,f)=>b.ra(d,e,f,!1),createRecognizer:(d,e)=>c.ra(d.ga,e,1),createRecognizerWithGrm:(d,e,f)=>c.ra(d.ga,e,3,f,null),createRecognizerWithSpkModel:(d,e,f)=>c.ra(d.ga,e,2,null,f.ga)}}var ua=Object.assign({},A),F="",va,wa;if(pa||qa)qa?F=self.location.href:"undefined"!=typeof document&&document.currentScript&&(F=document.currentScript.src),_scriptName&&(F=_scriptName),F.startsWith("blob:")?F="":F=F.substr(0,F.replace(/[?#].*/,"").lastIndexOf("/")+1),qa&&(wa=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),va=a=>fetch(a,{credentials:"same-origin"}).then(b=>b.ok?b.arrayBuffer():Promise.reject(Error(b.status+" : "+b.url)));var xa=console.log.bind(console),G=console.error.bind(console);Object.assign(A,ua);ua=null;var p,ya,za=!1,Aa,q,aa,ca,ha,ia,ja,la,Ba,Ca,Da;function t(){var a=p.buffer;A.HEAP8=q=new Int8Array(a);A.HEAP16=ca=new Int16Array(a);A.HEAPU8=aa=new Uint8Array(a);A.HEAPU16=ha=new Uint16Array(a);A.HEAP32=ia=new Int32Array(a);A.HEAPU32=ja=new Uint32Array(a);A.HEAPF32=la=new Float32Array(a);A.HEAPF64=Da=new Float64Array(a);A.HEAP64=Ba=new BigInt64Array(a);A.HEAPU64=Ca=new BigUint64Array(a)}if(A.wasmMemory)p=A.wasmMemory;else if(p=new WebAssembly.Memory({initial:5040,maximum:32768,shared:!0}),!(p.buffer instanceof SharedArrayBuffer))throw G("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),ra&&G("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)"),Error("bad memory");t();var Ea=[],Fa=[],Ga=[];function Ha(){if(sa){let a=A;Ia(a.sb,a.sz);removeEventListener("message",Ja);Ka=Ka.forEach(La);addEventListener("message",La)}else for(;0a.startsWith("data:application/octet-stream;base64,"),Pa;function Qa(a){return va(a).then(b=>new Uint8Array(b),()=>{if(wa)var b=wa(a);else throw"both async and sync fetching of the wasm failed";return b})}function Ra(a,b,c){return Qa(a).then(d=>WebAssembly.instantiate(d,b)).then(c,d=>{G(`failed to asynchronously prepare wasm: ${d}`);Na(d)})}function Sa(a,b){var c=Pa;return"function"!=typeof WebAssembly.instantiateStreaming||Oa(c)||"function"!=typeof fetch?Ra(c,a,b):fetch(c,{credentials:"same-origin"}).then(d=>WebAssembly.instantiateStreaming(d,a).then(b,function(e){G(`wasm streaming compile failed: ${e}`);G("falling back to ArrayBuffer instantiation");return Ra(c,a,b)}))}function Ta(a,b,c){pa?B[a].dispatchEvent(new CustomEvent(ta[b],{detail:0==c?null:J(c)})):self.postMessage([a,b,c])}function Ua(a){this.name="ExitStatus";this.message=`Program terminated with exit(${a})`;this.status=a}var Ka=[],Va=[],Wa,Xa=a=>{var b=Va[a];b||(a>=Va.length&&(Va.length=a+1),Va[a]=b=Wa.get(a));return b},La=a=>{a=a.data;let b=a._wsc;b&&Xa(b)(...a.x)},Ja=a=>{Ka.push(a)},$a=new TextDecoder,J=(a,b)=>{if(!a)return"";b=a+b;for(var c=a;!(c>=b)&&w()[c];)++c;return $a.decode(w().slice(a,c))};class ab{constructor(a){this.ea=a-24}}var bb=0,cb=0,db=a=>{if(null===a)return"null";var b=typeof a;return"object"===b||"array"===b||"function"===b?a.toString():""+a},eb,K=a=>{for(var b="";w()[a];)b+=eb[w()[a++]];return b},L={},M={},fb={},N,gb=a=>{throw new N(a);},O,Q=(a,b,c)=>{function d(g){g=c(g);if(g.length!==a.length)throw new O("Mismatched type converter count");for(var k=0;kfb[g]=b);var e=Array(b.length),f=[],h=0;b.forEach((g,k)=>{M.hasOwnProperty(g)?e[k]=M[g]:(f.push(g),L.hasOwnProperty(g)||(L[g]=[]),L[g].push(()=>{e[k]=M[g];++h;h===f.length&&d(e)}))});0===f.length&&d(e)};function hb(a,b,c={}){var d=b.name;if(!a)throw new N(`type "${d}" must have a positive integer typeid pointer`);if(M.hasOwnProperty(a)){if(c.Ja)return;throw new N(`Cannot register type '${d}' twice`);}M[a]=b;delete fb[a];L.hasOwnProperty(a)&&(b=L[a],delete L[a],b.forEach(e=>e()))}function P(a,b,c={}){return hb(a,b,c)}var ib=(a,b,c)=>{switch(b){case 1:return c?d=>m()[d]:d=>w()[d];case 2:return c?d=>ba()[d>>1]:d=>da()[d>>1];case 4:return c?d=>y()[d>>2]:d=>z()[d>>2];case 8:return c?d=>Ba[d>>3]:d=>Ca[d>>3];default:throw new TypeError(`invalid integer width (${b}): ${a}`);}},jb=a=>{throw new N(a.ca.fa.da.name+" instance already deleted");},kb=!1,lb=()=>{},mb=(a,b,c)=>{if(b===c)return a;if(void 0===c.ja)return null;a=mb(a,b,c.ja);return null===a?null:c.Fa(a)},nb={},R=[],ob=()=>{for(;R.length;){var a=R.pop();a.ca.pa=!1;a["delete"]()}},S,T={},pb=(a,b)=>{if(void 0===b)throw new N("ptr should not be undefined");for(;a.ja;)b=a.ua(b),a=a.ja;return T[b]},qb=(a,b)=>{if(!b.fa||!b.ea)throw new O("makeClassHandle requires ptr and ptrType");if(!!b.la!==!!b.ha)throw new O("Both smartPtrType and smartPtr must be specified");b.count={value:1};return U(Object.create(a,{ca:{value:b,writable:!0}}))},U=a=>{if("undefined"===typeof FinalizationRegistry)return U=b=>b,a;kb=new FinalizationRegistry(b=>{b=b.ca;--b.count.value;0===b.count.value&&(b.ha?b.la.na(b.ha):b.fa.da.na(b.ea))});U=b=>{var c=b.ca;c.ha&&kb.register(b,{ca:c},b);return b};lb=b=>{kb.unregister(b)};return U(a)};function rb(){}var sb=(a,b)=>Object.defineProperty(b,"name",{value:a}),tb=(a,b,c)=>{if(void 0===a[b].ia){var d=a[b];a[b]=function(...e){if(!a[b].ia.hasOwnProperty(e.length))throw new N(`Function '${c}' called with an invalid number of arguments (${e.length}) - expects one of (${a[b].ia})!`);return a[b].ia[e.length].apply(this,e)};a[b].ia=[];a[b].ia[d.va]=d}},ub=(a,b,c)=>{if(A.hasOwnProperty(a)){if(void 0===c||void 0!==A[a].ia&&void 0!==A[a].ia[c])throw new N(`Cannot register public name '${a}' twice`);tb(A,a,a);if(A.hasOwnProperty(c))throw new N(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`);A[a].ia[c]=b}else A[a]=b,void 0!==c&&(A[a].Sa=c)},vb=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 wb(a,b,c,d,e,f,h,g){this.name=a;this.constructor=b;this.qa=c;this.na=d;this.ja=e;this.Ha=f;this.ua=h;this.Fa=g;this.La=[]}var xb=(a,b,c)=>{for(;b!==c;){if(!b.ua)throw new N(`Expected null or instance of ${c.name}, got an instance of ${b.name}`);a=b.ua(a);b=b.ja}return a};function yb(a,b){if(null===b){if(this.Aa)throw new N(`null is not a valid ${this.name}`);return 0}if(!b.ca)throw new N(`Cannot pass "${db(b)}" as a ${this.name}`);if(!b.ca.ea)throw new N(`Cannot pass deleted object as a pointer of type ${this.name}`);return xb(b.ca.ea,b.ca.fa.da,this.da)}function zb(a,b){if(null===b){if(this.Aa)throw new N(`null is not a valid ${this.name}`);if(this.ya){var c=this.Ma();null!==a&&a.push(this.na,c);return c}return 0}if(!b||!b.ca)throw new N(`Cannot pass "${db(b)}" as a ${this.name}`);if(!b.ca.ea)throw new N(`Cannot pass deleted object as a pointer of type ${this.name}`);if(!this.xa&&b.ca.fa.xa)throw new N(`Cannot convert argument of type ${b.ca.la?b.ca.la.name:b.ca.fa.name} to parameter type ${this.name}`);c=xb(b.ca.ea,b.ca.fa.da,this.da);if(this.ya){if(void 0===b.ca.ha)throw new N("Passing raw pointer to smart pointer is illegal");switch(this.Oa){case 0:if(b.ca.la===this)c=b.ca.ha;else throw new N(`Cannot convert argument of type ${b.ca.la?b.ca.la.name:b.ca.fa.name} to parameter type ${this.name}`);break;case 1:c=b.ca.ha;break;case 2:if(b.ca.la===this)c=b.ca.ha;else{var d=b.clone();c=this.Na(c,Ab(()=>d["delete"]()));null!==a&&a.push(this.na,c)}break;default:throw new N("Unsupporting sharing policy");}}return c}function Bb(a,b){if(null===b){if(this.Aa)throw new N(`null is not a valid ${this.name}`);return 0}if(!b.ca)throw new N(`Cannot pass "${db(b)}" as a ${this.name}`);if(!b.ca.ea)throw new N(`Cannot pass deleted object as a pointer of type ${this.name}`);if(b.ca.fa.xa)throw new N(`Cannot convert argument of type ${b.ca.fa.name} to parameter type ${this.name}`);return xb(b.ca.ea,b.ca.fa.da,this.da)}function Cb(a){return this.fromWireType(z()[a>>2])}function Db(a,b,c,d,e,f,h,g,k,l,n){this.name=a;this.da=b;this.Aa=c;this.xa=d;this.ya=e;this.Ka=f;this.Oa=h;this.Da=g;this.Ma=k;this.Na=l;this.na=n;e||void 0!==b.ja?this.toWireType=zb:(this.toWireType=d?yb:Bb,this.ka=null)}var Eb=(a,b,c)=>{if(!A.hasOwnProperty(a))throw new O("Replacing nonexistent public symbol");void 0!==A[a].ia&&void 0!==c?A[a].ia[c]=b:(A[a]=b,A[a].va=c)},V=(a,b)=>{a=K(a);var c=Xa(b);if("function"!=typeof c)throw new N(`unknown function pointer with signature ${a}: ${b}`);return c},Fb,Hb=a=>{a=Gb(a);var b=K(a);W(a);return b},Ib=(a,b)=>{function c(f){e[f]||M[f]||(fb[f]?fb[f].forEach(c):(d.push(f),e[f]=!0))}var d=[],e={};b.forEach(c);throw new Fb(`${a}: `+d.map(Hb).join([", "]));},Jb=(a,b)=>{for(var c=[],d=0;d>2]);return c},Kb=a=>{for(;a.length;){var b=a.pop();a.pop()(b)}};function Lb(a){for(var b=1;bh)throw new N("argTypes array size mismatch! Must at least get return value and 'this' types!");var g=null!==b[1]&&null!==c,k=Lb(b);c="void"!==b[0].name;d=[a,gb,d,e,Kb,b[0],b[1]];for(e=0;e{a=a.trim();const b=a.indexOf("(");return-1!==b?a.substr(0,b):a},Qb=[],X=[],Ab=a=>{switch(a){case void 0:return 2;case null:return 4;case !0:return 6;case !1:return 8;default:const b=Qb.pop()||X.length;X[b]=a;X[b+1]=1;return b}},Rb={name:"emscripten::val",fromWireType:a=>{if(!a)throw new N("Cannot use deleted val. handle = "+a);var b=X[a];9Ab(b),ma:8,readValueFromPointer:Cb,ka:null},Sb=(a,b,c)=>{switch(b){case 1:return c?function(d){return this.fromWireType(m()[d])}:function(d){return this.fromWireType(w()[d])};case 2:return c?function(d){return this.fromWireType(ba()[d>>1])}:function(d){return this.fromWireType(da()[d>>1])};case 4:return c?function(d){return this.fromWireType(y()[d>>2])}:function(d){return this.fromWireType(z()[d>>2])};default:throw new TypeError(`invalid integer width (${b}): ${a}`);}},Tb=a=>{var b=M[a];if(void 0===b)throw a=`${"enum"} has unknown type ${Hb(a)}`,new N(a);return b},Ub=(a,b)=>{switch(b){case 4:return function(c){return this.fromWireType(ka()[c>>2])};case 8:return function(c){var d=this.fromWireType;p.buffer!=q.buffer&&t();return d.call(this,Da[c>>3])};default:throw new TypeError(`invalid float width (${b}): ${a}`);}},Y=(a,b,c,d)=>{if(!(0=h){var g=a.charCodeAt(++f);h=65536+((h&1023)<<10)|g&1023}if(127>=h){if(c>=d)break;b[c++]=h}else{if(2047>=h){if(c+1>=d)break;b[c++]=192|h>>6}else{if(65535>=h){if(c+2>=d)break;b[c++]=224|h>>12}else{if(c+3>=d)break;b[c++]=240|h>>18;b[c++]=128|h>>12&63}b[c++]=128|h>>6&63}b[c++]=128|h&63}}b[c]=0;return c-e},Vb=(a,b)=>{Y(a,w(),b,17)},Wb=a=>{for(var b=0,c=0;c=d?b++:2047>=d?b+=2:55296<=d&&57343>=d?(b+=4,++c):b+=3}return b},Xb=new TextDecoder("utf-16le"),Yb=(a,b)=>{var c=a>>1;for(b=c+b/2;!(c>=b)&&da()[c];)++c;c<<=1;return Xb.decode(w().slice(a,c))},Zb=(a,b,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]=f;b+=2}ba()[b>>1]=0;return b-d},$b=a=>2*a.length,ac=(a,b)=>{for(var c=0,d="";!(c>=b/4);){var e=y()[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},bc=(a,b,c)=>{c??=2147483647;if(4>c)return 0;var d=b;c=d+c-4;for(var e=0;e=f){var h=a.charCodeAt(++e);f=65536+((f&1023)<<10)|h&1023}y()[b>>2]=f;b+=4;if(b+4>c)break}y()[b>>2]=0;return b-d},cc=a=>{for(var b=0,c=0;c=d&&++c;b+=4}return b},dc={},ec=1,fc=URL.createObjectURL(new Blob(["onmessage=function(d){onmessage=null;d=d.data;d[`instantiateWasm`]=(i,r)=>{var n=new WebAssembly.Instance(d[`wasm`],i);return r(n,d[`wasm`]);};importScripts(d.js);loadVosklet(d);d.wasm=d.mem=d.js=0;}"],{type:"application/javascript"})),gc={},hc=a=>{if(!(a instanceof Ua||"unwind"==a))throw a;},ic=0,jc=a=>{Aa=a;0{if(!za)try{if(a(),!(0{if(!pc){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:"./this.program"},b;for(b in oc)void 0===oc[b]?delete a[b]:a[b]=oc[b];var c=[];for(b in a)c.push(`${b}=${a[b]}`);pc=c}return pc},pc,rc=()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return a=>(a.set(crypto.getRandomValues(new Uint8Array(a.byteLength))),a);Na("initRandomDevice")},sc=a=>(sc=rc())(a),tc=Array(256),uc=0;256>uc;++uc)tc[uc]=String.fromCharCode(uc);eb=tc;N=A.BindingError=class extends Error{constructor(a){super(a);this.name="BindingError"}};O=A.InternalError=class extends Error{constructor(a){super(a);this.name="InternalError"}};Object.assign(rb.prototype,{isAliasOf:function(a){if(!(this instanceof rb&&a instanceof rb))return!1;var b=this.ca.fa.da,c=this.ca.ea;a.ca=a.ca;var d=a.ca.fa.da;for(a=a.ca.ea;b.ja;)c=b.ua(c),b=b.ja;for(;d.ja;)a=d.ua(a),d=d.ja;return b===d&&c===a},clone:function(){this.ca.ea||jb(this);if(this.ca.ta)return this.ca.count.value+=1,this;var a=U,b=Object,c=b.create,d=Object.getPrototypeOf(this),e=this.ca;a=a(c.call(b,d,{ca:{value:{count:e.count,pa:e.pa,ta:e.ta,ea:e.ea,fa:e.fa,ha:e.ha,la:e.la}}}));a.ca.count.value+=1;a.ca.pa=!1;return a},["delete"](){this.ca.ea||jb(this);if(this.ca.pa&&!this.ca.ta)throw new N("Object already scheduled for deletion");lb(this);var a=this.ca;--a.count.value;0===a.count.value&&(a.ha?a.la.na(a.ha):a.fa.da.na(a.ea));this.ca.ta||(this.ca.ha=void 0,this.ca.ea=void 0)},isDeleted:function(){return!this.ca.ea},deleteLater:function(){this.ca.ea||jb(this);if(this.ca.pa&&!this.ca.ta)throw new N("Object already scheduled for deletion");R.push(this);1===R.length&&S&&S(ob);this.ca.pa=!0;return this}});A.getInheritedInstanceCount=()=>Object.keys(T).length;A.getLiveInheritedInstances=()=>{var a=[],b;for(b in T)T.hasOwnProperty(b)&&a.push(T[b]);return a};A.flushPendingDeletes=ob;A.setDelayFunction=a=>{S=a;R.length&&S&&S(ob)};Object.assign(Db.prototype,{Ia(a){this.Da&&(a=this.Da(a));return a},Ca(a){this.na?.(a)},ma:8,readValueFromPointer:Cb,fromWireType:function(a){function b(){return this.ya?qb(this.da.qa,{fa:this.Ka,ea:c,la:this,ha:a}):qb(this.da.qa,{fa:this,ea:a})}var c=this.Ia(a);if(!c)return this.Ca(a),null;var d=pb(this.da,c);if(void 0!==d){if(0===d.ca.count.value)return d.ca.ea=c,d.ca.ha=a,d.clone();d=d.clone();this.Ca(a);return d}d=this.da.Ha(c);d=nb[d];if(!d)return b.call(this);d=this.xa?d.Ea:d.pointerType;var e=mb(c,this.da,d.da);return null===e?b.call(this):this.ya?qb(d.da.qa,{fa:d,ea:e,la:this,ha:a}):qb(d.da.qa,{fa:d,ea:e})}});Fb=A.UnboundTypeError=((a,b)=>{var c=sb(b,function(d){this.name=b;this.message=d;d=Error(d).stack;void 0!==d&&(this.stack=this.toString()+"\n"+d.replace(/^Error(:[^\n]*)?\n/,""))});c.prototype=Object.create(a.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`};return c})(Error,"UnboundTypeError");X.push(0,1,void 0,1,null,1,!0,1,!1,1);A.count_emval_handles=()=>X.length/2-5-Qb.length;sa&&(dc[0]=this,addEventListener("message",Ja));var wc={c:(a,b,c,d)=>{Na(`Assertion failed: ${J(a)}, at: `+[b?J(b):"unknown filename",c,d?J(d):"unknown function"])},s:(a,b)=>Xa(a)(b),d:(a,b,c)=>{var d=new ab(a);z()[d.ea+16>>2]=0;z()[d.ea+4>>2]=b;z()[d.ea+8>>2]=c;bb=a;cb++;throw bb;},P:()=>{Na("")},q:(a,b,c)=>{b=K(b);P(a,{name:b,fromWireType:d=>d,toWireType:function(d,e){if("bigint"!=typeof e&&"number"!=typeof e)throw new TypeError(`Cannot convert "${db(e)}" to ${this.name}`);"number"==typeof e&&(e=BigInt(e));return e},ma:8,readValueFromPointer:ib(b,c,-1==b.indexOf("u")),ka:null})},R:(a,b,c,d)=>{b=K(b);P(a,{name:b,fromWireType:function(e){return!!e},toWireType:function(e,f){return f?c:d},ma:8,readValueFromPointer:function(e){return this.fromWireType(w()[e])},ka:null})},o:(a,b,c,d,e,f,h,g,k,l,n,u,r)=>{n=K(n);f=V(e,f);g&&=V(h,g);l&&=V(k,l);r=V(u,r);var x=vb(n);ub(x,function(){Ib(`Cannot construct ${n} due to unbound types`,[d])});Q([a,b,c],d?[d]:[],v=>{v=v[0];if(d){var D=v.da;var ea=D.qa}else ea=rb.prototype;v=sb(n,function(...Ya){if(Object.getPrototypeOf(this)!==Za)throw new N("Use 'new' to construct "+n);if(void 0===E.oa)throw new N(n+" has no accessible constructor");var Pb=E.oa[Ya.length];if(void 0===Pb)throw new N(`Tried to invoke ctor of ${n} with invalid number of parameters (${Ya.length}) - expected (${Object.keys(E.oa).toString()}) parameters instead!`);return Pb.apply(this,Ya)});var Za=Object.create(ea,{constructor:{value:v}});v.prototype=Za;var E=new wb(n,v,Za,r,D,f,g,l);if(E.ja){var fa;(fa=E.ja).Ba??(fa.Ba=[]);E.ja.Ba.push(E)}D=new Db(n,E,!0,!1,!1);fa=new Db(n+"*",E,!1,!1,!1);ea=new Db(n+" const*",E,!1,!0,!1);nb[a]={pointerType:fa,Ea:ea};Eb(x,v);return[D,fa,ea]})},j:(a,b,c,d,e,f)=>{var h=Jb(b,c);e=V(d,e);Q([],[a],g=>{g=g[0];var k=`constructor ${g.name}`;void 0===g.da.oa&&(g.da.oa=[]);if(void 0!==g.da.oa[b-1])throw new N(`Cannot register multiple constructors with identical number of parameters (${b-1}) for class '${g.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);g.da.oa[b-1]=()=>{Ib(`Cannot construct ${g.name} due to unbound types`,h)};Q([],h,l=>{l.splice(1,0,null);g.da.oa[b-1]=Nb(k,l,null,e,f);return[]});return[]})},g:(a,b,c,d,e,f,h,g,k)=>{var l=Jb(c,d);b=K(b);b=Ob(b);f=V(e,f);Q([],[a],n=>{function u(){Ib(`Cannot call ${r} due to unbound types`,l)}n=n[0];var r=`${n.name}.${b}`;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);g&&n.da.La.push(b);var x=n.da.qa,v=x[b];void 0===v||void 0===v.ia&&v.className!==n.name&&v.va===c-2?(u.va=c-2,u.className=n.name,x[b]=u):(tb(x,b,r),x[b].ia[c-2]=u);Q([],l,D=>{D=Nb(r,D,n,f,h,k);void 0===x[b].ia?(D.va=c-2,x[b]=D):x[b].ia[c-2]=D;return[]});return[]})},Q:a=>P(a,Rb),A:(a,b,c,d)=>{function e(){}b=K(b);e.values={};P(a,{name:b,constructor:e,fromWireType:function(f){return this.constructor.values[f]},toWireType:(f,h)=>h.value,ma:8,readValueFromPointer:Sb(b,c,d),ka:null});ub(b,e)},k:(a,b,c)=>{var d=Tb(a);b=K(b);a=d.constructor;d=Object.create(d.constructor.prototype,{value:{value:c},constructor:{value:sb(`${d.name}_${b}`,function(){})}});a.values[c]=d;a[b]=d},p:(a,b,c)=>{b=K(b);P(a,{name:b,fromWireType:d=>d,toWireType:(d,e)=>e,ma:8,readValueFromPointer:Ub(b,c),ka:null})},K:(a,b,c,d,e,f,h)=>{var g=Jb(b,c);a=K(a);a=Ob(a);e=V(d,e);ub(a,function(){Ib(`Cannot call ${a} due to unbound types`,g)},b-1);Q([],g,k=>{Eb(a,Nb(a,[k[0],null].concat(k.slice(1)),null,e,f,h),b-1);return[]})},h:(a,b,c,d,e)=>{b=K(b);-1===e&&(e=4294967295);e=g=>g;if(0===d){var f=32-8*c;e=g=>g<>>f}var h=b.includes("unsigned")?function(g,k){return k>>>0}:function(g,k){return k};P(a,{name:b,fromWireType:e,toWireType:h,ma:8,readValueFromPointer:ib(b,c,0!==d),ka:null})},e:(a,b,c)=>{function d(f){var h=z()[f>>2];f=z()[f+4>>2];return new e(m().buffer,f,h)}var e=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][b];c=K(c);P(a,{name:c,fromWireType:d,ma:8,readValueFromPointer:d},{Ja:!0})},r:(a,b)=>{b=K(b);var c="std::string"===b;P(a,{name:b,fromWireType:function(d){var e=z()[d>>2],f=d+4;if(c)for(var h=f,g=0;g<=e;++g){var k=f+g;if(g==e||0==w()[k]){h=J(h,k-h);if(void 0===l)var l=h;else l+=String.fromCharCode(0),l+=h;h=k+1}}else{l=Array(e);for(g=0;g>2]=h;if(c&&f)h+=1,Y(e,w(),k,h);else if(f)for(f=0;f{c=K(c);if(2===b){var d=Yb;var e=Zb;var f=$b;var h=g=>da()[g>>1]}else 4===b&&(d=ac,e=bc,f=cc,h=g=>z()[g>>2]);P(a,{name:c,fromWireType:g=>{for(var k=z()[g>>2],l,n=g+4,u=0;u<=k;++u){var r=g+4+u*b;if(u==k||0==h(r))n=d(n,r-n),void 0===l?l=n:(l+=String.fromCharCode(0),l+=n),n=r+b}W(g);return l},toWireType:(g,k)=>{if("string"!=typeof k)throw new N(`Cannot pass non-string to C++ string type ${c}`);var l=f(k),n=C(4+l+b);z()[n>>2]=l/b;e(k,n+4,l+b);null!==g&&g.push(W,n);return n},ma:8,readValueFromPointer:Cb,ka(g){W(g)}})},S:(a,b)=>{b=K(b);P(a,{Ra:!0,name:b,ma:0,fromWireType:()=>{},toWireType:()=>{}})},H:(a,b)=>{let c=dc[ec]=new Worker(fc);c.postMessage({$ww:ec,wasm:ya,js:A.mainScriptUrlOrBlob||_scriptName,wasmMemory:p,sb:a,sz:b});c.onmessage=La;return ec++},O:()=>1,u:()=>{ic=0},v:(a,b)=>{gc[a]&&(clearTimeout(gc[a].id),delete gc[a]);if(!b)return 0;var c=setTimeout(()=>{delete gc[a];kc(()=>vc(a,performance.now()))},b);gc[a]={id:c,Va:b};return 0},J:(a,b,c,d)=>{var e=(new Date).getFullYear(),f=(new Date(e,0,1)).getTimezoneOffset();e=(new Date(e,6,1)).getTimezoneOffset();var h=Math.max(f,e);z()[a>>2]=60*h;y()[b>>2]=Number(f!=e);b=g=>{var k=Math.abs(g);return`UTC${0<=g?"-":"+"}${String(Math.floor(k/60)).padStart(2,"0")}${String(k%60).padStart(2,"0")}`};a=b(f);b=b(e);ew().set(mc[a].Ga,b),B:()=>lc.length,C:()=>mc.length,y:(a,b)=>{a=lc[a].Qa;var c=Wb(a)+1;Y(a,w(),b,c)},w:a=>mc[a].mode,E:a=>mc[a].Ga.length,z:(a,b)=>{a=lc[a].Ta;var c=Wb(a)+1;Y(a,w(),b,c)},x:(a,b)=>{a=mc[a].Ua;var c=Wb(a)+1;Y(a,w(),b,c)},G:()=>{a:{if(!nc.length){var a=null;"undefined"!=typeof window&&"function"==typeof window.prompt&&(a=window.prompt("Input: "),null!==a&&(a+="\n"));if(!a){var b=null;break a}b=Array(Wb(a)+1);a=Y(a,b,0,b.length);b.length=a;nc=b}b=nc.shift()}return"number"===typeof b?b:-1},T:a=>{console.error(J(a))},V:a=>{console.log(J(a))},U:a=>{console.warn(J(a))},f:()=>Date.now(),l:a=>G(J(a)),m:()=>performance.now(),F:a=>xa(J(a)),L:a=>{var b=w().length;a>>>=0;if(a<=b||2147483648=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);a:{d=(Math.min(2147483648,65536*Math.ceil(Math.max(a,d)/65536))-p.buffer.byteLength+65535)/65536;try{p.grow(d);t();var e=1;break a}catch(f){}e=void 0}if(e)return!0}return!1},M:(a,b)=>{var c=0;qc().forEach((d,e)=>{var f=b+c;e=z()[a+4*e>>2]=f;for(f=0;f{var c=qc();z()[a>>2]=c.length;var d=0;c.forEach(e=>d+=e.length+1);z()[b>>2]=d;return 0},b:a=>{Aa=a;jc(a)},i:Ta,I:(a,b)=>{sc(w().subarray(a,a+b));return 0},a:p,t:jc,W:function(a,b){for(let c of Object.values(dc))c.postMessage({_wsc:a,x:[b]}),c.onmessage=d=>Ta(...d.data)}},Z=function(){function a(c,d){Z=c.exports;Wa=Z._;Fa.unshift(Z.X);ya=d;H--;0==H&&(null!==Ma&&(clearInterval(Ma),Ma=null),I&&(c=I,I=null,c()));return Z}var b={a:wc};H++;if(A.instantiateWasm)try{return A.instantiateWasm(b,a)}catch(c){G(`Module.instantiateWasm callback failed with error: ${c}`),na(c)}Pa??=Oa("Vosklet.wasm")?"Vosklet.wasm":F+"Vosklet.wasm";Sa(b,function(c){a(c.instance,c.module)}).catch(na);return{}}(),W=a=>(W=Z.Y)(a),C=a=>(C=Z.Z)(a),Gb=a=>(Gb=Z.$)(a),vc=(a,b)=>(vc=Z.aa)(a,b),Ia=(a,b)=>(Ia=Z.ba)(a,b),xc;I=function yc(){xc||zc();xc||(I=yc)};function zc(){if(!(0 loadVosklet); \ No newline at end of file +var loadVosklet = (() => { var _scriptName = typeof document != 'undefined' ? document.currentScript?.src : undefined; return (function(moduleArg = {}) { var moduleRtn;function m(){p.buffer!=q.buffer&&u();return q}function x(){p.buffer!=q.buffer&&u();return aa}function ba(){p.buffer!=q.buffer&&u();return ca}function da(){p.buffer!=q.buffer&&u();return ha}function y(){p.buffer!=q.buffer&&u();return ia}function A(){p.buffer!=q.buffer&&u();return ja}function ka(){p.buffer!=q.buffer&&u();return la}var B=moduleArg,ma,na,oa=new Promise((a,b)=>{ma=a;na=b}),pa="object"==typeof window,qa="function"==typeof importScripts,ra="object"==typeof process&&"object"==typeof process.Pa&&"string"==typeof process.Pa.node&&"renderer"!=process.type,sa=B.$ww;if(pa){var C=[],ta=["status","partialResult","result"];let a=caches.open("Vosklet"),b=URL.createObjectURL(new Blob(["(",(()=>{registerProcessor("VoskletTransferer",class extends AudioWorkletProcessor{constructor(e){super();this.sa=0;this.za=e.processorOptions[0];this.wa=new Float32Array(this.za)}process(e){e[0][0]&&(this.wa.set(e[0][0],this.sa),this.sa+=128,this.sa>=this.za&&(this.sa=0,this.port.postMessage(this.wa,[this.wa.buffer]),this.wa=new Float32Array(this.za)));return!0}})}).toString(),")()"],{type:"text/javascript"}));class c extends EventTarget{constructor(){super();C.push(this)}delete(){this.ga.delete()}static async ra(e,f,g,h){let k=new c,l=new Promise((t,v)=>{k.addEventListener("status",w=>{w.detail?v(w.detail):(h&&(k.findWord=z=>k.ga.findWord(z)),t(k))},{once:!0})}),n=await caches.open("Vosklet"),r=(await n.keys(f,{ignoreSearch:!0}))[0];if("undefined"==typeof r||r.url.split("?")[1]!=g){e=await fetch(e,{cache:"no-store"});if(!e.ok)throw"Unable to fetch model, status: "+e.status;await n.put(f+"?"+g,new Response(e.clone().body.pipeThrough(new CompressionStream("gzip"))))}else e=await n.match(r);f=await (new Response(e.body.pipeThrough(new DecompressionStream("gzip")))).arrayBuffer();g=D(f.byteLength);x().set(new Uint8Array(f),g);k.ga=new B.CommonModel(C.length-1,h,g,f.byteLength);return l}}class d extends EventTarget{constructor(){super();this.acceptWaveform=e=>{let f=D(4*e.length);ka().set(e,f/4);this.ga.acceptWaveform(f,e.length)};C.push(this);return new Proxy(this,{get(e,f){if(void 0!=e[f]||void 0!=e.ga[f]){var g=e[f];if(g)return g.bind?g.bind(e):g;g=e.ga[f];return g.bind?g.bind(e.ga):g}}})}async delete(e=!1){let f=new Promise(g=>this.addEventListener("status",()=>{this.ga.delete();g()},{once:!0}));this.ga.safeDelete(e);return f}static async ra(e,f,g,h,k){let l=new d,n=new Promise((r,t)=>{l.addEventListener("status",v=>{v.detail?t(v.detail):r(l)},{once:!0})});switch(g){case 1:l.ga=new B.Recognizer(C.length-1,f,e);break;case 2:l.ga=new B.Recognizer(C.length-1,f,e,k);break;default:l.ga=new B.Recognizer(C.length-1,f,e,h,0)}return n}}B={getModelCache:()=>a,cleanUp:async()=>{for(let e of C)await e.delete();URL.revokeObjectURL(b)},createTransferer:async(e,f)=>{await e.audioWorklet.addModule(b);return new AudioWorkletNode(e,"VoskletTransferer",{channelCountMode:"explicit",numberOfInputs:1,numberOfOutputs:0,channelCount:1,processorOptions:[f]})},createModel:(e,f,g)=>c.ra(e,f,g,!0),createSpkModel:(e,f,g)=>c.ra(e,f,g,!1),createRecognizer:(e,f)=>d.ra(e.ga,f,1),createRecognizerWithGrm:(e,f,g)=>d.ra(e.ga,f,3,g,null),createRecognizerWithSpkModel:(e,f,g)=>d.ra(e.ga,f,2,null,g.ga)}}var ua=Object.assign({},B),F="",va,wa;if(pa||qa)qa?F=self.location.href:"undefined"!=typeof document&&document.currentScript&&(F=document.currentScript.src),_scriptName&&(F=_scriptName),F.startsWith("blob:")?F="":F=F.substr(0,F.replace(/[?#].*/,"").lastIndexOf("/")+1),qa&&(wa=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),va=a=>fetch(a,{credentials:"same-origin"}).then(b=>b.ok?b.arrayBuffer():Promise.reject(Error(b.status+" : "+b.url)));var xa=console.log.bind(console),G=console.error.bind(console);Object.assign(B,ua);ua=null;var p,ya,za=!1,Aa,q,aa,ca,ha,ia,ja,la,Ba,Ca,Da;function u(){var a=p.buffer;B.HEAP8=q=new Int8Array(a);B.HEAP16=ca=new Int16Array(a);B.HEAPU8=aa=new Uint8Array(a);B.HEAPU16=ha=new Uint16Array(a);B.HEAP32=ia=new Int32Array(a);B.HEAPU32=ja=new Uint32Array(a);B.HEAPF32=la=new Float32Array(a);B.HEAPF64=Da=new Float64Array(a);B.HEAP64=Ba=new BigInt64Array(a);B.HEAPU64=Ca=new BigUint64Array(a)}if(B.wasmMemory)p=B.wasmMemory;else if(p=new WebAssembly.Memory({initial:5040,maximum:32768,shared:!0}),!(p.buffer instanceof SharedArrayBuffer))throw G("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),ra&&G("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)"),Error("bad memory");u();var Ea=[],Fa=[],Ga=[];function Ha(){if(sa){let a=B;Ia(a.sb,a.sz);removeEventListener("message",Ja);Ka=Ka.forEach(La);addEventListener("message",La)}else for(;0a.startsWith("data:application/octet-stream;base64,"),Pa;function Qa(a){return va(a).then(b=>new Uint8Array(b),()=>{if(wa)var b=wa(a);else throw"both async and sync fetching of the wasm failed";return b})}function Ra(a,b,c){return Qa(a).then(d=>WebAssembly.instantiate(d,b)).then(c,d=>{G(`failed to asynchronously prepare wasm: ${d}`);Na(d)})}function Sa(a,b){var c=Pa;return"function"!=typeof WebAssembly.instantiateStreaming||Oa(c)||"function"!=typeof fetch?Ra(c,a,b):fetch(c,{credentials:"same-origin"}).then(d=>WebAssembly.instantiateStreaming(d,a).then(b,function(e){G(`wasm streaming compile failed: ${e}`);G("falling back to ArrayBuffer instantiation");return Ra(c,a,b)}))}function Ta(a,b,c){pa?C[a].dispatchEvent(new CustomEvent(ta[b],{detail:0==c?null:J(c)})):self.postMessage([a,b,c])}function Ua(a){this.name="ExitStatus";this.message=`Program terminated with exit(${a})`;this.status=a}var Ka=[],Va=[],Wa,Xa=a=>{var b=Va[a];b||(a>=Va.length&&(Va.length=a+1),Va[a]=b=Wa.get(a));return b},La=a=>{a=a.data;let b=a._wsc;b&&Xa(b)(...a.x)},Ja=a=>{Ka.push(a)},$a=new TextDecoder,J=(a,b)=>{if(!a)return"";b=a+b;for(var c=a;!(c>=b)&&x()[c];)++c;return $a.decode(x().slice(a,c))};class ab{constructor(a){this.ea=a-24}}var bb=0,cb=0,db=a=>{if(null===a)return"null";var b=typeof a;return"object"===b||"array"===b||"function"===b?a.toString():""+a},eb,K=a=>{for(var b="";x()[a];)b+=eb[x()[a++]];return b},L={},M={},fb={},N,gb=a=>{throw new N(a);},O,Q=(a,b,c)=>{function d(h){h=c(h);if(h.length!==a.length)throw new O("Mismatched type converter count");for(var k=0;kfb[h]=b);var e=Array(b.length),f=[],g=0;b.forEach((h,k)=>{M.hasOwnProperty(h)?e[k]=M[h]:(f.push(h),L.hasOwnProperty(h)||(L[h]=[]),L[h].push(()=>{e[k]=M[h];++g;g===f.length&&d(e)}))});0===f.length&&d(e)};function hb(a,b,c={}){var d=b.name;if(!a)throw new N(`type "${d}" must have a positive integer typeid pointer`);if(M.hasOwnProperty(a)){if(c.Ja)return;throw new N(`Cannot register type '${d}' twice`);}M[a]=b;delete fb[a];L.hasOwnProperty(a)&&(b=L[a],delete L[a],b.forEach(e=>e()))}function P(a,b,c={}){return hb(a,b,c)}var ib=(a,b,c)=>{switch(b){case 1:return c?d=>m()[d]:d=>x()[d];case 2:return c?d=>ba()[d>>1]:d=>da()[d>>1];case 4:return c?d=>y()[d>>2]:d=>A()[d>>2];case 8:return c?d=>Ba[d>>3]:d=>Ca[d>>3];default:throw new TypeError(`invalid integer width (${b}): ${a}`);}},jb=a=>{throw new N(a.ca.fa.da.name+" instance already deleted");},kb=!1,lb=()=>{},mb=(a,b,c)=>{if(b===c)return a;if(void 0===c.ja)return null;a=mb(a,b,c.ja);return null===a?null:c.Fa(a)},nb={},R=[],ob=()=>{for(;R.length;){var a=R.pop();a.ca.pa=!1;a["delete"]()}},S,T={},pb=(a,b)=>{if(void 0===b)throw new N("ptr should not be undefined");for(;a.ja;)b=a.ua(b),a=a.ja;return T[b]},qb=(a,b)=>{if(!b.fa||!b.ea)throw new O("makeClassHandle requires ptr and ptrType");if(!!b.la!==!!b.ha)throw new O("Both smartPtrType and smartPtr must be specified");b.count={value:1};return U(Object.create(a,{ca:{value:b,writable:!0}}))},U=a=>{if("undefined"===typeof FinalizationRegistry)return U=b=>b,a;kb=new FinalizationRegistry(b=>{b=b.ca;--b.count.value;0===b.count.value&&(b.ha?b.la.na(b.ha):b.fa.da.na(b.ea))});U=b=>{var c=b.ca;c.ha&&kb.register(b,{ca:c},b);return b};lb=b=>{kb.unregister(b)};return U(a)};function rb(){}var sb=(a,b)=>Object.defineProperty(b,"name",{value:a}),tb=(a,b,c)=>{if(void 0===a[b].ia){var d=a[b];a[b]=function(...e){if(!a[b].ia.hasOwnProperty(e.length))throw new N(`Function '${c}' called with an invalid number of arguments (${e.length}) - expects one of (${a[b].ia})!`);return a[b].ia[e.length].apply(this,e)};a[b].ia=[];a[b].ia[d.va]=d}},ub=(a,b,c)=>{if(B.hasOwnProperty(a)){if(void 0===c||void 0!==B[a].ia&&void 0!==B[a].ia[c])throw new N(`Cannot register public name '${a}' twice`);tb(B,a,a);if(B.hasOwnProperty(c))throw new N(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`);B[a].ia[c]=b}else B[a]=b,void 0!==c&&(B[a].Sa=c)},vb=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 wb(a,b,c,d,e,f,g,h){this.name=a;this.constructor=b;this.qa=c;this.na=d;this.ja=e;this.Ha=f;this.ua=g;this.Fa=h;this.La=[]}var xb=(a,b,c)=>{for(;b!==c;){if(!b.ua)throw new N(`Expected null or instance of ${c.name}, got an instance of ${b.name}`);a=b.ua(a);b=b.ja}return a};function yb(a,b){if(null===b){if(this.Aa)throw new N(`null is not a valid ${this.name}`);return 0}if(!b.ca)throw new N(`Cannot pass "${db(b)}" as a ${this.name}`);if(!b.ca.ea)throw new N(`Cannot pass deleted object as a pointer of type ${this.name}`);return xb(b.ca.ea,b.ca.fa.da,this.da)}function zb(a,b){if(null===b){if(this.Aa)throw new N(`null is not a valid ${this.name}`);if(this.ya){var c=this.Ma();null!==a&&a.push(this.na,c);return c}return 0}if(!b||!b.ca)throw new N(`Cannot pass "${db(b)}" as a ${this.name}`);if(!b.ca.ea)throw new N(`Cannot pass deleted object as a pointer of type ${this.name}`);if(!this.xa&&b.ca.fa.xa)throw new N(`Cannot convert argument of type ${b.ca.la?b.ca.la.name:b.ca.fa.name} to parameter type ${this.name}`);c=xb(b.ca.ea,b.ca.fa.da,this.da);if(this.ya){if(void 0===b.ca.ha)throw new N("Passing raw pointer to smart pointer is illegal");switch(this.Oa){case 0:if(b.ca.la===this)c=b.ca.ha;else throw new N(`Cannot convert argument of type ${b.ca.la?b.ca.la.name:b.ca.fa.name} to parameter type ${this.name}`);break;case 1:c=b.ca.ha;break;case 2:if(b.ca.la===this)c=b.ca.ha;else{var d=b.clone();c=this.Na(c,Ab(()=>d["delete"]()));null!==a&&a.push(this.na,c)}break;default:throw new N("Unsupporting sharing policy");}}return c}function Bb(a,b){if(null===b){if(this.Aa)throw new N(`null is not a valid ${this.name}`);return 0}if(!b.ca)throw new N(`Cannot pass "${db(b)}" as a ${this.name}`);if(!b.ca.ea)throw new N(`Cannot pass deleted object as a pointer of type ${this.name}`);if(b.ca.fa.xa)throw new N(`Cannot convert argument of type ${b.ca.fa.name} to parameter type ${this.name}`);return xb(b.ca.ea,b.ca.fa.da,this.da)}function Cb(a){return this.fromWireType(A()[a>>2])}function Db(a,b,c,d,e,f,g,h,k,l,n){this.name=a;this.da=b;this.Aa=c;this.xa=d;this.ya=e;this.Ka=f;this.Oa=g;this.Da=h;this.Ma=k;this.Na=l;this.na=n;e||void 0!==b.ja?this.toWireType=zb:(this.toWireType=d?yb:Bb,this.ka=null)}var Eb=(a,b,c)=>{if(!B.hasOwnProperty(a))throw new O("Replacing nonexistent public symbol");void 0!==B[a].ia&&void 0!==c?B[a].ia[c]=b:(B[a]=b,B[a].va=c)},V=(a,b)=>{a=K(a);var c=Xa(b);if("function"!=typeof c)throw new N(`unknown function pointer with signature ${a}: ${b}`);return c},Fb,Hb=a=>{a=Gb(a);var b=K(a);W(a);return b},Ib=(a,b)=>{function c(f){e[f]||M[f]||(fb[f]?fb[f].forEach(c):(d.push(f),e[f]=!0))}var d=[],e={};b.forEach(c);throw new Fb(`${a}: `+d.map(Hb).join([", "]));},Jb=(a,b)=>{for(var c=[],d=0;d>2]);return c},Kb=a=>{for(;a.length;){var b=a.pop();a.pop()(b)}};function Lb(a){for(var b=1;bg)throw new N("argTypes array size mismatch! Must at least get return value and 'this' types!");var h=null!==b[1]&&null!==c,k=Lb(b);c="void"!==b[0].name;d=[a,gb,d,e,Kb,b[0],b[1]];for(e=0;e{a=a.trim();const b=a.indexOf("(");return-1!==b?a.substr(0,b):a},Qb=[],X=[],Ab=a=>{switch(a){case void 0:return 2;case null:return 4;case !0:return 6;case !1:return 8;default:const b=Qb.pop()||X.length;X[b]=a;X[b+1]=1;return b}},Rb={name:"emscripten::val",fromWireType:a=>{if(!a)throw new N("Cannot use deleted val. handle = "+a);var b=X[a];9Ab(b),ma:8,readValueFromPointer:Cb,ka:null},Sb=(a,b,c)=>{switch(b){case 1:return c?function(d){return this.fromWireType(m()[d])}:function(d){return this.fromWireType(x()[d])};case 2:return c?function(d){return this.fromWireType(ba()[d>>1])}:function(d){return this.fromWireType(da()[d>>1])};case 4:return c?function(d){return this.fromWireType(y()[d>>2])}:function(d){return this.fromWireType(A()[d>>2])};default:throw new TypeError(`invalid integer width (${b}): ${a}`);}},Tb=a=>{var b=M[a];if(void 0===b)throw a=`${"enum"} has unknown type ${Hb(a)}`,new N(a);return b},Ub=(a,b)=>{switch(b){case 4:return function(c){return this.fromWireType(ka()[c>>2])};case 8:return function(c){var d=this.fromWireType;p.buffer!=q.buffer&&u();return d.call(this,Da[c>>3])};default:throw new TypeError(`invalid float width (${b}): ${a}`);}},Y=(a,b,c,d)=>{if(!(0=g){var h=a.charCodeAt(++f);g=65536+((g&1023)<<10)|h&1023}if(127>=g){if(c>=d)break;b[c++]=g}else{if(2047>=g){if(c+1>=d)break;b[c++]=192|g>>6}else{if(65535>=g){if(c+2>=d)break;b[c++]=224|g>>12}else{if(c+3>=d)break;b[c++]=240|g>>18;b[c++]=128|g>>12&63}b[c++]=128|g>>6&63}b[c++]=128|g&63}}b[c]=0;return c-e},Vb=(a,b)=>{Y(a,x(),b,17)},Wb=a=>{for(var b=0,c=0;c=d?b++:2047>=d?b+=2:55296<=d&&57343>=d?(b+=4,++c):b+=3}return b},Xb=new TextDecoder("utf-16le"),Yb=(a,b)=>{var c=a>>1;for(b=c+b/2;!(c>=b)&&da()[c];)++c;c<<=1;return Xb.decode(x().slice(a,c))},Zb=(a,b,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]=f;b+=2}ba()[b>>1]=0;return b-d},$b=a=>2*a.length,ac=(a,b)=>{for(var c=0,d="";!(c>=b/4);){var e=y()[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},bc=(a,b,c)=>{c??=2147483647;if(4>c)return 0;var d=b;c=d+c-4;for(var e=0;e=f){var g=a.charCodeAt(++e);f=65536+((f&1023)<<10)|g&1023}y()[b>>2]=f;b+=4;if(b+4>c)break}y()[b>>2]=0;return b-d},cc=a=>{for(var b=0,c=0;c=d&&++c;b+=4}return b},dc={},ec=1,fc=URL.createObjectURL(new Blob(["onmessage=function(d){onmessage=null;d=d.data;d[`instantiateWasm`]=(i,r)=>{var n=new WebAssembly.Instance(d[`wasm`],i);return r(n,d[`wasm`]);};importScripts(d.js);loadVosklet(d);d.wasm=d.mem=d.js=0;}"],{type:"application/javascript"})),gc={},hc=a=>{if(!(a instanceof Ua||"unwind"==a))throw a;},ic=0,jc=a=>{Aa=a;0{if(!za)try{if(a(),!(0{if(!pc){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:"./this.program"},b;for(b in oc)void 0===oc[b]?delete a[b]:a[b]=oc[b];var c=[];for(b in a)c.push(`${b}=${a[b]}`);pc=c}return pc},pc,rc=()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return a=>(a.set(crypto.getRandomValues(new Uint8Array(a.byteLength))),a);Na("initRandomDevice")},sc=a=>(sc=rc())(a),tc=Array(256),uc=0;256>uc;++uc)tc[uc]=String.fromCharCode(uc);eb=tc;N=B.BindingError=class extends Error{constructor(a){super(a);this.name="BindingError"}};O=B.InternalError=class extends Error{constructor(a){super(a);this.name="InternalError"}};Object.assign(rb.prototype,{isAliasOf:function(a){if(!(this instanceof rb&&a instanceof rb))return!1;var b=this.ca.fa.da,c=this.ca.ea;a.ca=a.ca;var d=a.ca.fa.da;for(a=a.ca.ea;b.ja;)c=b.ua(c),b=b.ja;for(;d.ja;)a=d.ua(a),d=d.ja;return b===d&&c===a},clone:function(){this.ca.ea||jb(this);if(this.ca.ta)return this.ca.count.value+=1,this;var a=U,b=Object,c=b.create,d=Object.getPrototypeOf(this),e=this.ca;a=a(c.call(b,d,{ca:{value:{count:e.count,pa:e.pa,ta:e.ta,ea:e.ea,fa:e.fa,ha:e.ha,la:e.la}}}));a.ca.count.value+=1;a.ca.pa=!1;return a},["delete"](){this.ca.ea||jb(this);if(this.ca.pa&&!this.ca.ta)throw new N("Object already scheduled for deletion");lb(this);var a=this.ca;--a.count.value;0===a.count.value&&(a.ha?a.la.na(a.ha):a.fa.da.na(a.ea));this.ca.ta||(this.ca.ha=void 0,this.ca.ea=void 0)},isDeleted:function(){return!this.ca.ea},deleteLater:function(){this.ca.ea||jb(this);if(this.ca.pa&&!this.ca.ta)throw new N("Object already scheduled for deletion");R.push(this);1===R.length&&S&&S(ob);this.ca.pa=!0;return this}});B.getInheritedInstanceCount=()=>Object.keys(T).length;B.getLiveInheritedInstances=()=>{var a=[],b;for(b in T)T.hasOwnProperty(b)&&a.push(T[b]);return a};B.flushPendingDeletes=ob;B.setDelayFunction=a=>{S=a;R.length&&S&&S(ob)};Object.assign(Db.prototype,{Ia(a){this.Da&&(a=this.Da(a));return a},Ca(a){this.na?.(a)},ma:8,readValueFromPointer:Cb,fromWireType:function(a){function b(){return this.ya?qb(this.da.qa,{fa:this.Ka,ea:c,la:this,ha:a}):qb(this.da.qa,{fa:this,ea:a})}var c=this.Ia(a);if(!c)return this.Ca(a),null;var d=pb(this.da,c);if(void 0!==d){if(0===d.ca.count.value)return d.ca.ea=c,d.ca.ha=a,d.clone();d=d.clone();this.Ca(a);return d}d=this.da.Ha(c);d=nb[d];if(!d)return b.call(this);d=this.xa?d.Ea:d.pointerType;var e=mb(c,this.da,d.da);return null===e?b.call(this):this.ya?qb(d.da.qa,{fa:d,ea:e,la:this,ha:a}):qb(d.da.qa,{fa:d,ea:e})}});Fb=B.UnboundTypeError=((a,b)=>{var c=sb(b,function(d){this.name=b;this.message=d;d=Error(d).stack;void 0!==d&&(this.stack=this.toString()+"\n"+d.replace(/^Error(:[^\n]*)?\n/,""))});c.prototype=Object.create(a.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`};return c})(Error,"UnboundTypeError");X.push(0,1,void 0,1,null,1,!0,1,!1,1);B.count_emval_handles=()=>X.length/2-5-Qb.length;sa&&(dc[0]=this,addEventListener("message",Ja));var wc={c:(a,b,c,d)=>{Na(`Assertion failed: ${J(a)}, at: `+[b?J(b):"unknown filename",c,d?J(d):"unknown function"])},s:(a,b)=>Xa(a)(b),d:(a,b,c)=>{var d=new ab(a);A()[d.ea+16>>2]=0;A()[d.ea+4>>2]=b;A()[d.ea+8>>2]=c;bb=a;cb++;throw bb;},P:()=>{Na("")},q:(a,b,c)=>{b=K(b);P(a,{name:b,fromWireType:d=>d,toWireType:function(d,e){if("bigint"!=typeof e&&"number"!=typeof e)throw new TypeError(`Cannot convert "${db(e)}" to ${this.name}`);"number"==typeof e&&(e=BigInt(e));return e},ma:8,readValueFromPointer:ib(b,c,-1==b.indexOf("u")),ka:null})},R:(a,b,c,d)=>{b=K(b);P(a,{name:b,fromWireType:function(e){return!!e},toWireType:function(e,f){return f?c:d},ma:8,readValueFromPointer:function(e){return this.fromWireType(x()[e])},ka:null})},o:(a,b,c,d,e,f,g,h,k,l,n,r,t)=>{n=K(n);f=V(e,f);h&&=V(g,h);l&&=V(k,l);t=V(r,t);var v=vb(n);ub(v,function(){Ib(`Cannot construct ${n} due to unbound types`,[d])});Q([a,b,c],d?[d]:[],w=>{w=w[0];if(d){var z=w.da;var ea=z.qa}else ea=rb.prototype;w=sb(n,function(...Ya){if(Object.getPrototypeOf(this)!==Za)throw new N("Use 'new' to construct "+n);if(void 0===E.oa)throw new N(n+" has no accessible constructor");var Pb=E.oa[Ya.length];if(void 0===Pb)throw new N(`Tried to invoke ctor of ${n} with invalid number of parameters (${Ya.length}) - expected (${Object.keys(E.oa).toString()}) parameters instead!`);return Pb.apply(this,Ya)});var Za=Object.create(ea,{constructor:{value:w}});w.prototype=Za;var E=new wb(n,w,Za,t,z,f,h,l);if(E.ja){var fa;(fa=E.ja).Ba??(fa.Ba=[]);E.ja.Ba.push(E)}z=new Db(n,E,!0,!1,!1);fa=new Db(n+"*",E,!1,!1,!1);ea=new Db(n+" const*",E,!1,!0,!1);nb[a]={pointerType:fa,Ea:ea};Eb(v,w);return[z,fa,ea]})},j:(a,b,c,d,e,f)=>{var g=Jb(b,c);e=V(d,e);Q([],[a],h=>{h=h[0];var k=`constructor ${h.name}`;void 0===h.da.oa&&(h.da.oa=[]);if(void 0!==h.da.oa[b-1])throw new N(`Cannot register multiple constructors with identical number of parameters (${b-1}) for class '${h.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);h.da.oa[b-1]=()=>{Ib(`Cannot construct ${h.name} due to unbound types`,g)};Q([],g,l=>{l.splice(1,0,null);h.da.oa[b-1]=Nb(k,l,null,e,f);return[]});return[]})},g:(a,b,c,d,e,f,g,h,k)=>{var l=Jb(c,d);b=K(b);b=Ob(b);f=V(e,f);Q([],[a],n=>{function r(){Ib(`Cannot call ${t} due to unbound types`,l)}n=n[0];var t=`${n.name}.${b}`;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);h&&n.da.La.push(b);var v=n.da.qa,w=v[b];void 0===w||void 0===w.ia&&w.className!==n.name&&w.va===c-2?(r.va=c-2,r.className=n.name,v[b]=r):(tb(v,b,t),v[b].ia[c-2]=r);Q([],l,z=>{z=Nb(t,z,n,f,g,k);void 0===v[b].ia?(z.va=c-2,v[b]=z):v[b].ia[c-2]=z;return[]});return[]})},Q:a=>P(a,Rb),A:(a,b,c,d)=>{function e(){}b=K(b);e.values={};P(a,{name:b,constructor:e,fromWireType:function(f){return this.constructor.values[f]},toWireType:(f,g)=>g.value,ma:8,readValueFromPointer:Sb(b,c,d),ka:null});ub(b,e)},k:(a,b,c)=>{var d=Tb(a);b=K(b);a=d.constructor;d=Object.create(d.constructor.prototype,{value:{value:c},constructor:{value:sb(`${d.name}_${b}`,function(){})}});a.values[c]=d;a[b]=d},p:(a,b,c)=>{b=K(b);P(a,{name:b,fromWireType:d=>d,toWireType:(d,e)=>e,ma:8,readValueFromPointer:Ub(b,c),ka:null})},K:(a,b,c,d,e,f,g)=>{var h=Jb(b,c);a=K(a);a=Ob(a);e=V(d,e);ub(a,function(){Ib(`Cannot call ${a} due to unbound types`,h)},b-1);Q([],h,k=>{Eb(a,Nb(a,[k[0],null].concat(k.slice(1)),null,e,f,g),b-1);return[]})},h:(a,b,c,d,e)=>{b=K(b);-1===e&&(e=4294967295);e=h=>h;if(0===d){var f=32-8*c;e=h=>h<>>f}var g=b.includes("unsigned")?function(h,k){return k>>>0}:function(h,k){return k};P(a,{name:b,fromWireType:e,toWireType:g,ma:8,readValueFromPointer:ib(b,c,0!==d),ka:null})},e:(a,b,c)=>{function d(f){var g=A()[f>>2];f=A()[f+4>>2];return new e(m().buffer,f,g)}var e=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][b];c=K(c);P(a,{name:c,fromWireType:d,ma:8,readValueFromPointer:d},{Ja:!0})},r:(a,b)=>{b=K(b);var c="std::string"===b;P(a,{name:b,fromWireType:function(d){var e=A()[d>>2],f=d+4;if(c)for(var g=f,h=0;h<=e;++h){var k=f+h;if(h==e||0==x()[k]){g=J(g,k-g);if(void 0===l)var l=g;else l+=String.fromCharCode(0),l+=g;g=k+1}}else{l=Array(e);for(h=0;h>2]=g;if(c&&f)g+=1,Y(e,x(),k,g);else if(f)for(f=0;f{c=K(c);if(2===b){var d=Yb;var e=Zb;var f=$b;var g=h=>da()[h>>1]}else 4===b&&(d=ac,e=bc,f=cc,g=h=>A()[h>>2]);P(a,{name:c,fromWireType:h=>{for(var k=A()[h>>2],l,n=h+4,r=0;r<=k;++r){var t=h+4+r*b;if(r==k||0==g(t))n=d(n,t-n),void 0===l?l=n:(l+=String.fromCharCode(0),l+=n),n=t+b}W(h);return l},toWireType:(h,k)=>{if("string"!=typeof k)throw new N(`Cannot pass non-string to C++ string type ${c}`);var l=f(k),n=D(4+l+b);A()[n>>2]=l/b;e(k,n+4,l+b);null!==h&&h.push(W,n);return n},ma:8,readValueFromPointer:Cb,ka(h){W(h)}})},S:(a,b)=>{b=K(b);P(a,{Ra:!0,name:b,ma:0,fromWireType:()=>{},toWireType:()=>{}})},H:(a,b)=>{let c=dc[ec]=new Worker(fc);c.postMessage({$ww:ec,wasm:ya,js:B.mainScriptUrlOrBlob||_scriptName,wasmMemory:p,sb:a,sz:b});c.onmessage=La;return ec++},O:()=>1,u:()=>{ic=0},v:(a,b)=>{gc[a]&&(clearTimeout(gc[a].id),delete gc[a]);if(!b)return 0;var c=setTimeout(()=>{delete gc[a];kc(()=>vc(a,performance.now()))},b);gc[a]={id:c,Va:b};return 0},J:(a,b,c,d)=>{var e=(new Date).getFullYear(),f=(new Date(e,0,1)).getTimezoneOffset();e=(new Date(e,6,1)).getTimezoneOffset();var g=Math.max(f,e);A()[a>>2]=60*g;y()[b>>2]=Number(f!=e);b=h=>{var k=Math.abs(h);return`UTC${0<=h?"-":"+"}${String(Math.floor(k/60)).padStart(2,"0")}${String(k%60).padStart(2,"0")}`};a=b(f);b=b(e);ex().set(mc[a].Ga,b),B:()=>lc.length,C:()=>mc.length,y:(a,b)=>{a=lc[a].Qa;var c=Wb(a)+1;Y(a,x(),b,c)},w:a=>mc[a].mode,E:a=>mc[a].Ga.length,z:(a,b)=>{a=lc[a].Ta;var c=Wb(a)+1;Y(a,x(),b,c)},x:(a,b)=>{a=mc[a].Ua;var c=Wb(a)+1;Y(a,x(),b,c)},G:()=>{a:{if(!nc.length){var a=null;"undefined"!=typeof window&&"function"==typeof window.prompt&&(a=window.prompt("Input: "),null!==a&&(a+="\n"));if(!a){var b=null;break a}b=Array(Wb(a)+1);a=Y(a,b,0,b.length);b.length=a;nc=b}b=nc.shift()}return"number"===typeof b?b:-1},T:a=>{console.error(J(a))},V:a=>{console.log(J(a))},U:a=>{console.warn(J(a))},f:()=>Date.now(),l:a=>G(J(a)),m:()=>performance.now(),F:a=>xa(J(a)),L:a=>{var b=x().length;a>>>=0;if(a<=b||2147483648=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);a:{d=(Math.min(2147483648,65536*Math.ceil(Math.max(a,d)/65536))-p.buffer.byteLength+65535)/65536;try{p.grow(d);u();var e=1;break a}catch(f){}e=void 0}if(e)return!0}return!1},M:(a,b)=>{var c=0;qc().forEach((d,e)=>{var f=b+c;e=A()[a+4*e>>2]=f;for(f=0;f{var c=qc();A()[a>>2]=c.length;var d=0;c.forEach(e=>d+=e.length+1);A()[b>>2]=d;return 0},b:a=>{Aa=a;jc(a)},i:Ta,I:(a,b)=>{sc(x().subarray(a,a+b));return 0},a:p,t:jc,W:function(a,b){for(let c of Object.values(dc))c.postMessage({_wsc:a,x:[b]}),c.onmessage=d=>Ta(...d.data)}},Z=function(){function a(c,d){Z=c.exports;Wa=Z._;Fa.unshift(Z.X);ya=d;H--;0==H&&(null!==Ma&&(clearInterval(Ma),Ma=null),I&&(c=I,I=null,c()));return Z}var b={a:wc};H++;if(B.instantiateWasm)try{return B.instantiateWasm(b,a)}catch(c){G(`Module.instantiateWasm callback failed with error: ${c}`),na(c)}Pa??=Oa("Vosklet.wasm")?"Vosklet.wasm":F+"Vosklet.wasm";Sa(b,function(c){a(c.instance,c.module)}).catch(na);return{}}(),W=a=>(W=Z.Y)(a),D=a=>(D=Z.Z)(a),Gb=a=>(Gb=Z.$)(a),vc=(a,b)=>(vc=Z.aa)(a,b),Ia=(a,b)=>(Ia=Z.ba)(a,b),xc;I=function yc(){xc||zc();xc||(I=yc)};function zc(){if(!(0 loadVosklet); \ No newline at end of file diff --git a/src/Wrapper.js b/src/Wrapper.js index 43c0c50..f4b8fec 100644 --- a/src/Wrapper.js +++ b/src/Wrapper.js @@ -8,6 +8,7 @@ if(ENVIRONMENT_IS_WEB) { // 'var' to expose this outside the if var objs = []; var events = ['status', 'partialResult', 'result']; +let _cache = caches.open('Vosklet'); let processorURL = URL.createObjectURL(new Blob(['(', (() => { registerProcessor('VoskletTransferer', class extends AudioWorkletProcessor { constructor(opts) { @@ -50,18 +51,18 @@ class CommonModel extends EventTarget { }, { once: true }) }); let cache = await caches.open('Vosklet'); - let res = await cache.match(storepath); - let tar; - if(typeof res == 'undefined' || res.headers.get('id') != id) { + let req = (await cache.keys(storepath, { ignoreSearch: true }))[0] + let tar, res; + if (typeof req == 'undefined' || req.url.split('?')[1] != id) { // Caching already handled explicitly res = await fetch(url, { cache: 'no-store' }); if (!res.ok) throw 'Unable to fetch model, status: ' + res.status; - await cache.put(storepath, new Response( - res.clone().body.pipeThrough(new CompressionStream('gzip')), - { headers: { 'id': id } } - )); - + await cache.put( + storepath + '?' + id, + new Response(res.clone().body.pipeThrough(new CompressionStream('gzip'))) + ); } + else res = await cache.match(req); tar = await new Response(res.body.pipeThrough(new DecompressionStream('gzip'))).arrayBuffer(); let tarStart = _malloc(tar.byteLength); HEAPU8.set(new Uint8Array(tar), tarStart); @@ -119,6 +120,8 @@ class Recognizer extends EventTarget { } } Module = { + 'getModelCache': () => _cache, + 'cleanUp': async () => { for(let obj of objs) await obj.delete(); URL.revokeObjectURL(processorURL);