@microtronics/studio-cli 1.2.0-alpha.2 → 1.2.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var Po=Object.create;var rt=Object.defineProperty;var To=Object.getOwnPropertyDescriptor;var No=Object.getOwnPropertyNames;var Io=Object.getPrototypeOf,Mo=Object.prototype.hasOwnProperty;var Lo=(A,x)=>()=>(x||A((x={exports:{}}).exports,x),x.exports),Ro=(A,x)=>{for(var r in x)rt(A,r,{get:x[r],enumerable:!0})},Wn=(A,x,r,e)=>{if(x&&typeof x=="object"||typeof x=="function")for(let i of No(x))!Mo.call(A,i)&&i!==r&&rt(A,i,{get:()=>x[i],enumerable:!(e=To(x,i))||e.enumerable});return A};var dx=(A,x,r)=>(r=A!=null?Po(Io(A)):{},Wn(x||!A||!A.__esModule?rt(r,"default",{value:A,enumerable:!0}):r,A)),Oo=A=>Wn(rt({},"__esModule",{value:!0}),A);var Vi=Lo((gf,Ji)=>{"use strict";var QF=Object.create,Se=Object.defineProperty,ZF=Object.getOwnPropertyDescriptor,Gi=Object.getOwnPropertyNames,x8=Object.getPrototypeOf,A8=Object.prototype.hasOwnProperty,r8=(A,x,r)=>x in A?Se(A,x,{enumerable:!0,configurable:!0,writable:!0,value:r}):A[x]=r,Ui=(A,x)=>function(){return x||(0,A[Gi(A)[0]])((x={exports:{}}).exports,x),x.exports},e8=(A,x)=>{for(var r in x)Se(A,r,{get:x[r],enumerable:!0})},Hi=(A,x,r,e)=>{if(x&&typeof x=="object"||typeof x=="function")for(let i of Gi(x))!A8.call(A,i)&&i!==r&&Se(A,i,{get:()=>x[i],enumerable:!(e=ZF(x,i))||e.enumerable});return A},Ki=(A,x,r)=>(r=A!=null?QF(x8(A)):{},Hi(x||!A||!A.__esModule?Se(r,"default",{value:A,enumerable:!0}):r,A)),t8=A=>Hi(Se({},"__esModule",{value:!0}),A),Bx=(A,x,r)=>r8(A,typeof x!="symbol"?x+"":x,r),n8=Ui({"wasm/bin/pawncc.js"(A,x){"use strict";var r=(()=>{var e=globalThis.document?.currentScript?.src;return async function(i={}){var o,t=i,B=!!globalThis.window,l=!!globalThis.WorkerGlobalScope,D=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer",j=[],b="./this.program",k=(n,F)=>{throw F};typeof __filename<"u"?e=__filename:l&&(e=self.location.href);var $="",y,q;if(D){var P=require("fs");$=__dirname+"/",q=n=>{n=h(n)?new URL(n):n;var F=P.readFileSync(n);return F},y=async(n,F=!0)=>{n=h(n)?new URL(n):n;var f=P.readFileSync(n,F?void 0:"utf8");return f},process.argv.length>1&&(b=process.argv[1].replace(/\\/g,"/")),j=process.argv.slice(2),k=(n,F)=>{throw process.exitCode=n,F}}else if(B||l){try{$=new URL(".",e).href}catch{}l&&(q=n=>{var F=new XMLHttpRequest;return F.open("GET",n,!1),F.responseType="arraybuffer",F.send(null),new Uint8Array(F.response)}),y=async n=>{if(h(n))return new Promise((f,d)=>{var p=new XMLHttpRequest;p.open("GET",n,!0),p.responseType="arraybuffer",p.onload=()=>{if(p.status==200||p.status==0&&p.response){f(p.response);return}d(p.status)},p.onerror=d,p.send(null)});var F=await fetch(n,{credentials:"same-origin"});if(F.ok)return F.arrayBuffer();throw new Error(F.status+" : "+F.url)}}var N=console.log.bind(console),R=console.error.bind(console),O,t0=!1,M,h=n=>n.startsWith("file://");class L{}class Y extends L{}function W(n){for(var F=0,f=n.length,d=new Uint8Array(f),p;F<f;++F)p=n.charCodeAt(F),d[F]=~p>>8&p;return d}var H,K,i0=!1,r0=!1;function Z(){var n=T0.buffer;ex=new Int8Array(n),O0=new Int16Array(n),zx=new Uint8Array(n),Ee=new Uint16Array(n),L0=new Int32Array(n),E0=new Uint32Array(n),Fe=new Float32Array(n),ve=new Float64Array(n),G0=new BigInt64Array(n),Be=new BigUint64Array(n)}function n0(){if(t.preRun)for(typeof t.preRun=="function"&&(t.preRun=[t.preRun]);t.preRun.length;)Nr(t.preRun.shift());DA(Mx)}function U(){i0=!0,!t.noFSInit&&!a.initialized&&a.init(),X0.init(),jr.__wasm_call_ctors(),a.ignorePermissions=!1}function F0(){}function v0(){g(),a.quit(),X0.shutdown(),r0=!0}function C0(){if(t.postRun)for(typeof t.postRun=="function"&&(t.postRun=[t.postRun]);t.postRun.length;)Tr(t.postRun.shift());DA(dA)}function D0(n){t.onAbort?.(n),n=`Aborted(${n})`,R(n),t0=!0,n+=". Build with -sASSERTIONS for more info.";var F=new WebAssembly.RuntimeError(n);throw K?.(F),F}var q0;function I0(){return W(`\0asm\0\0\0\x897\`\x7F\x7F\`\x7F\0\`\x7F\x7F\x7F\`\0\0\`\x7F\x7F\x7F\x7F\`\x7F\x7F\0\`\x7F\x7F~~~\`\x7F\x7F\x7F\0\`\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F\x7F\x7F\0\`\0\x7F\`~\0\`\x7F~~~~\0\`\x7F\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F~\`\x7F~\x7F~\`\x7F\x7F\x7F\x7F\x7F\0\`\x7F~\`\x7F~\0\`\x7F|\`\x7F~~\x7F\0\`\x7F\x7F\x7F\x7F\x7F\x7F\0\`\x7F~\x7F\x7F\x7F\`\x7F~\x7F\x7F\`\x07\x7F\x7F\x7F~\x7F\x7F\x7F~\`\x07\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\`~\x7F\`~\x7F\x7F\0\`\x7F\x7F~\0\`\x7F|\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F~\x7F\x7F\x7F\`\x7F\x7F\x7F|\x7F\`\x7F\x7F|\x7F\`\x7F\x7F~\x7F\x7F\`\x07\x7F\x7F\x7F\x7F\x7F\x7F\x7F\0\`\x7F\x7F\x7F~\`\x7F\x7F\x7F\x7F\x7F\x7F~\`\v\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F~\`\x7F~\x7F\x7F\x7F\x7F\x7F\` \x7F~\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\`~~\x7F~\`\x7F~~\0\`~\x7F\0\`\x7F~\x7F\`\x7F||\`||\`|\x7F\`\x7F~~~\0\`|\x7F|\`~\x7F\x7F\`~~~~\x7F\`~~~\x7F\`\x7F|\0\`~~|\xD0env\binvoke_v\0env
1
+ "use strict";var Hf=Object.create;var Gt=Object.defineProperty;var Jf=Object.getOwnPropertyDescriptor;var zf=Object.getOwnPropertyNames;var Kf=Object.getPrototypeOf,Vf=Object.prototype.hasOwnProperty;var Wf=(x,A)=>()=>(A||x((A={exports:{}}).exports,A),A.exports),Xf=(x,A)=>{for(var e in A)Gt(x,e,{get:A[e],enumerable:!0})},ea=(x,A,e,r)=>{if(A&&typeof A=="object"||typeof A=="function")for(let t of zf(A))!Vf.call(x,t)&&t!==e&&Gt(x,t,{get:()=>A[t],enumerable:!(r=Jf(A,t))||r.enumerable});return x};var ax=(x,A,e)=>(e=x!=null?Hf(Kf(x)):{},ea(A||!x||!x.__esModule?Gt(e,"default",{value:x,enumerable:!0}):e,x)),Yf=x=>ea(Gt({},"__esModule",{value:!0}),x);var xo=Wf((R6,Za)=>{"use strict";var ac=Object.create,Et=Object.defineProperty,oc=Object.getOwnPropertyDescriptor,Va=Object.getOwnPropertyNames,Fc=Object.getPrototypeOf,vc=Object.prototype.hasOwnProperty,fc=(x,A,e)=>A in x?Et(x,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):x[A]=e,Wa=(x,A)=>function(){return A||(0,x[Va(x)[0]])((A={exports:{}}).exports,A),A.exports},lc=(x,A)=>{for(var e in A)Et(x,e,{get:A[e],enumerable:!0})},Xa=(x,A,e,r)=>{if(A&&typeof A=="object"||typeof A=="function")for(let t of Va(A))!vc.call(x,t)&&t!==e&&Et(x,t,{get:()=>A[t],enumerable:!(r=oc(A,t))||r.enumerable});return x},Ya=(x,A,e)=>(e=x!=null?ac(Fc(x)):{},Xa(A||!x||!x.__esModule?Et(e,"default",{value:x,enumerable:!0}):e,x)),cc=x=>Xa(Et({},"__esModule",{value:!0}),x),px=(x,A,e)=>fc(x,typeof A!="symbol"?A+"":A,e),Ec=Wa({"wasm/bin/pawncc.js"(x,A){"use strict";var e=(()=>{var r=globalThis.document?.currentScript?.src;return async function(t={}){var i,n=t,F=!!globalThis.window,v=!!globalThis.WorkerGlobalScope,E=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer",u=[],p="./this.program",j=(s,f)=>{throw f};typeof __filename<"u"?r=__filename:v&&(r=self.location.href);var w="",g,S;if(E){var T=require("fs");w=__dirname+"/",S=s=>{s=y(s)?new URL(s):s;var f=T.readFileSync(s);return f},g=async(s,f=!0)=>{s=y(s)?new URL(s):s;var B=T.readFileSync(s,f?void 0:"utf8");return B},process.argv.length>1&&(p=process.argv[1].replace(/\\/g,"/")),u=process.argv.slice(2),j=(s,f)=>{throw process.exitCode=s,f}}else if(F||v){try{w=new URL(".",r).href}catch{}v&&(S=s=>{var f=new XMLHttpRequest;return f.open("GET",s,!1),f.responseType="arraybuffer",f.send(null),new Uint8Array(f.response)}),g=async s=>{if(y(s))return new Promise((B,D)=>{var m=new XMLHttpRequest;m.open("GET",s,!0),m.responseType="arraybuffer",m.onload=()=>{if(m.status==200||m.status==0&&m.response){B(m.response);return}D(m.status)},m.onerror=D,m.send(null)});var f=await fetch(s,{credentials:"same-origin"});if(f.ok)return f.arrayBuffer();throw new Error(f.status+" : "+f.url)}}var q=console.log.bind(console),L=console.error.bind(console),R,n0=!1,M,y=s=>s.startsWith("file://");class O{}class Y extends O{}function W(s){for(var f=0,B=s.length,D=new Uint8Array(B),m;f<B;++f)m=s.charCodeAt(f),D[f]=~m>>8&m;return D}var H,J,s0=!1,r0=!1;function Z(){var s=I0.buffer;fx=new Int8Array(s),H0=new Int16Array(s),tA=new Uint8Array(s),Vr=new Uint16Array(s),R0=new Int32Array(s),l0=new Uint32Array(s),zr=new Float32Array(s),Kr=new Float64Array(s),J0=new BigInt64Array(s),Wr=new BigUint64Array(s)}function i0(){if(n.preRun)for(typeof n.preRun=="function"&&(n.preRun=[n.preRun]);n.preRun.length;)cr(n.preRun.shift());$A(Vx)}function U(){s0=!0,!n.noFSInit&&!o.initialized&&o.init(),rx.init(),ze.__wasm_call_ctors(),o.ignorePermissions=!1}function v0(){}function f0(){k(),o.quit(),rx.shutdown(),r0=!0}function B0(){if(n.postRun)for(typeof n.postRun=="function"&&(n.postRun=[n.postRun]);n.postRun.length;)lr(n.postRun.shift());$A(PA)}function d0(s){n.onAbort?.(s),s=`Aborted(${s})`,L(s),n0=!0,s+=". Build with -sASSERTIONS for more info.";var f=new WebAssembly.RuntimeError(s);throw J?.(f),f}var T0;function L0(){return W(`\0asm\0\0\0\x897\`\x7F\x7F\`\x7F\0\`\x7F\x7F\x7F\`\0\0\`\x7F\x7F\x7F\x7F\`\x7F\x7F\0\`\x7F\x7F~~~\`\x7F\x7F\x7F\0\`\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F\x7F\x7F\0\`\0\x7F\`~\0\`\x7F~~~~\0\`\x7F\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F~\`\x7F~\x7F~\`\x7F\x7F\x7F\x7F\x7F\0\`\x7F~\`\x7F~\0\`\x7F|\`\x7F~~\x7F\0\`\x7F\x7F\x7F\x7F\x7F\x7F\0\`\x7F~\x7F\x7F\x7F\`\x7F~\x7F\x7F\`\x07\x7F\x7F\x7F~\x7F\x7F\x7F~\`\x07\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\`~\x7F\`~\x7F\x7F\0\`\x7F\x7F~\0\`\x7F|\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F~\x7F\x7F\x7F\`\x7F\x7F\x7F|\x7F\`\x7F\x7F|\x7F\`\x7F\x7F~\x7F\x7F\`\x07\x7F\x7F\x7F\x7F\x7F\x7F\x7F\0\`\x7F\x7F\x7F~\`\x7F\x7F\x7F\x7F\x7F\x7F~\`\v\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F~\`\x7F~\x7F\x7F\x7F\x7F\x7F\` \x7F~\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\`~~\x7F~\`\x7F~~\0\`~\x7F\0\`\x7F~\x7F\`\x7F||\`||\`|\x7F\`\x7F~~~\0\`|\x7F|\`~\x7F\x7F\`~~~~\x7F\`~~~\x7F\`\x7F|\0\`~~|\xD0env\binvoke_v\0env
2
2
  invoke_vii\0\x07env invoke_ii\0env
3
3
  invoke_iii\0env\binvoke_i\0\0env\vinvoke_iiii\0\benv\r__assert_fail\0 env\finvoke_viiii\0env\finvoke_iiiii\0\renv\rinvoke_viiiii\0env\finvoke_iijii\0env invoke_vi\0env\vinvoke_viii\0 env\vinvoke_iiid\0 env\rinvoke_iiiiii\0env__syscall_faccessat\0\benv__syscall_openat\0\benv__syscall_fcntl64\0env__syscall_ioctl\0wasi_snapshot_preview1\bfd_write\0\bwasi_snapshot_preview1\x07fd_read\0\bwasi_snapshot_preview1\bfd_close\0\0env__syscall_getcwd\0wasi_snapshot_preview1\x07fd_seek\0env__syscall_unlinkat\0env__syscall_rmdir\0\0env__syscall_renameat\0\bwasi_snapshot_preview1clock_time_get\0env__syscall_readlinkat\0\benvemscripten_resize_heap\0\0env_emscripten_throw_longjmp\0\xAA\xA8\x07!
4
4
 
@@ -1158,8 +1158,8 @@ S\0\0\xCD\0\0Q\0\0\xCD*\0\0\x97*\0\0>S\0\0A!\0\0\f\0\0\x90\0\0\xC6\0\0l\0\
1158
1158
  \0\0\xC0\v\0\0\xC0\f\0\0\xC0\r\0\0\xC0\0\0\xC0\0\0\xC0\0\0\xC0\0\0\xC0\0\0\xC0\0\0\xC0\0\0\xC0\0\0\xC0\0\0\xC0\0\0\xC0\0\0\xC0\0\0\xC0\0\0\xC0\x1B\0\0\xC0\0\0\xC0\0\0\xC0\0\0\xC0\0\0\xC0\0\0\0\xB3\0\0\xC3\0\0\xC3\0\0\xC3\0\0\xC3\0\0\xC3\0\0\xC3\x07\0\0\xC3\b\0\0\xC3 \0\0\xC3
1159
1159
  \0\0\xC3\v\0\0\xC3\f\0\0\xC3\r\0\0\xD3\0\0\xC3\0\0\xC3\0\0\f\xBB\0\f\xC3\0\f\xC3\0\f\xC3\0\f\xDB\0A\xC0\xF9\v\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0D\0\0\xFAC\0\0 D\0\0\0D\0\0\xFDC\0\0\xF6C\0\0\xEEC\0\0\xEFC\0\0D\0\0\xEBC\0\0\xE8C\0\0z\0\0\x87Y\0\0\xF3C\0\0\fD\0\0\xF7C\0\0\xF0C\0\0D\0\0\xBCC\0\0\xBDC\0\0MO\0\0\xFDN\0\0\xBCN\0\0\xBDN\0\0,D\0\0\xE3\0\0h&\0\0d-\0\0)\0\0\xA2,\0\0d\0\01\0\0>!\0\0G-\0\0_\0\0y\0\0K0\0\0\v!\0\0*\0\0\x84,\0\0\x81\0\0+\0\02\0\0g!\0\0\xF7)\0\0; \0\0-\0\0\xF01\0\0&\0\0\xAD(\0\0\xF1)\0\0\x97.\0\0\xE2\0\0\xB9-\0\0F-\0\0*\0\0
1160
1160
  *\0\0\xDC\0\x004\0\0\xE7.\0\0*\0\x006*\0\0.*\0\0\x9D/\0\0\xB3-\0\0\x8A3\0\0\x87/\0\0'*\0\x009)\0\0!D\0\0\0O\0\0!D\0\0\xB63\0\0\xC63\0\0\x983\0\0\xA53\0\0\xD73\0\0\xAD3\0\0\xAD3\0\0\0\0\0\0/\0A\xA0\xFE\vy\0\0\0\\\\\0\0\xF4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\b\0\0\0\0\0\0\0\0\0\xA0\x97\0\0\xA0\x9C\0\0\0\0\0\0\0\0\0 \x9C\0\0 \x9D\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA0\x9D\0\0\0\0\0\0\0\0\0\x07\0\0\0\0 \0\0\0\0\0\0\0A\xA4\xFF\v\x9F\0A\xBC\xFF\v\v\x9D\0\0\0\x9C\0\0\0("\0A\xD4\xFF\v\0A\xE4\xFF\v\b\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0A\xA8\x80\v \x98\xBF\0\0\0\0\0\0\0A\xBC\x80\v\xA0\0A\xD4\x80\v\x9D\0\0\0\xA1\0\0\x008"\0\0\0A\xEC\x80\v\0A\xFC\x80\v\xFF\xFF\xFF\xFF
1161
- \0A\xC0\x81\v\v0\xC0\0\0\x80!\0\`(`)}function nx(n){return n}async function Ix(n){return n}async function lA(n,F){try{var f=await Ix(n),d=await WebAssembly.instantiate(f,F);return d}catch(p){R(`failed to asynchronously prepare wasm: ${p}`),D0(p)}}async function cA(n,F,f){return lA(F,f)}function rx(){var n={env:Y0,wasi_snapshot_preview1:Y0};return n}async function W0(){function n(_,I){return jr=_.exports,j0(jr),Z(),jr}function F(_){return n(_.instance)}var f=rx();if(t.instantiateWasm)return new Promise((_,I)=>{t.instantiateWasm(f,(J,o0)=>{_(n(J,o0))})});q0??(q0=I0());var d=await cA(O,q0,f),p=F(d);return p}class Kx{constructor(F){Bx(this,"name","ExitStatus"),this.message=`Program terminated with exit(${F})`,this.status=F}}var O0,L0,G0,ex,Fe,ve,Ee,E0,Be,zx,DA=n=>{for(;n.length>0;)n.shift()(t)},dA=[],Tr=n=>dA.push(n),Mx=[],Nr=n=>Mx.push(n),Ar=!1,xx=n=>G(n),g0=()=>a0(),Jx=globalThis.TextDecoder&&new TextDecoder,Cx=(n,F,f,d)=>{var p=F+f;if(d)return p;for(;n[F]&&!(F>=p);)++F;return F},eA=(n,F=0,f,d)=>{var p=Cx(n,F,f,d);if(p-F>16&&n.buffer&&Jx)return Jx.decode(n.subarray(F,p));for(var _="";F<p;){var I=n[F++];if(!(I&128)){_+=String.fromCharCode(I);continue}var J=n[F++]&63;if((I&224)==192){_+=String.fromCharCode((I&31)<<6|J);continue}var o0=n[F++]&63;if((I&240)==224?I=(I&15)<<12|J<<6|o0:I=(I&7)<<18|J<<12|o0<<6|n[F++]&63,I<65536)_+=String.fromCharCode(I);else{var _0=I-65536;_+=String.fromCharCode(55296|_0>>10,56320|_0&1023)}}return _},Vx=(n,F,f)=>n?eA(zx,n,F,f):"",uA=(n,F,f,d)=>D0(`Assertion failed: ${Vx(n)}, at: `+[F?Vx(F):"unknown filename",f,d?Vx(d):"unknown function"]),B0={isAbs:n=>n.charAt(0)==="/",splitPath:n=>{var F=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return F.exec(n).slice(1)},normalizeArray:(n,F)=>{for(var f=0,d=n.length-1;d>=0;d--){var p=n[d];p==="."?n.splice(d,1):p===".."?(n.splice(d,1),f++):f&&(n.splice(d,1),f--)}if(F)for(;f;f--)n.unshift("..");return n},normalize:n=>{var F=B0.isAbs(n),f=n.slice(-1)==="/";return n=B0.normalizeArray(n.split("/").filter(d=>!!d),!F).join("/"),!n&&!F&&(n="."),n&&f&&(n+="/"),(F?"/":"")+n},dirname:n=>{var F=B0.splitPath(n),f=F[0],d=F[1];return!f&&!d?".":(d&&(d=d.slice(0,-1)),f+d)},basename:n=>n&&n.match(/([^\/]+|\/)\/*$/)[1],join:(...n)=>B0.normalize(n.join("/")),join2:(n,F)=>B0.normalize(n+"/"+F)},fe=()=>{if(D){var n=require("crypto");return F=>n.randomFillSync(F)}return F=>(crypto.getRandomValues(F),0)},Cr=n=>(Cr=fe())(n),ox={resolve:(...n)=>{for(var F="",f=!1,d=n.length-1;d>=-1&&!f;d--){var p=d>=0?n[d]:a.cwd();if(typeof p!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!p)return"";F=p+"/"+F,f=B0.isAbs(p)}return F=B0.normalizeArray(F.split("/").filter(_=>!!_),!f).join("/"),(f?"/":"")+F||"."},relative:(n,F)=>{n=ox.resolve(n).slice(1),F=ox.resolve(F).slice(1);function f(_0){for(var z0=0;z0<_0.length&&_0[z0]==="";z0++);for(var M0=_0.length-1;M0>=0&&_0[M0]==="";M0--);return z0>M0?[]:_0.slice(z0,M0-z0+1)}for(var d=f(n.split("/")),p=f(F.split("/")),_=Math.min(d.length,p.length),I=_,J=0;J<_;J++)if(d[J]!==p[J]){I=J;break}for(var o0=[],J=I;J<d.length;J++)o0.push("..");return o0=o0.concat(p.slice(I)),o0.join("/")}},Px=[],TA=n=>{for(var F=0,f=0;f<n.length;++f){var d=n.charCodeAt(f);d<=127?F++:d<=2047?F+=2:d>=55296&&d<=57343?(F+=4,++f):F+=3}return F},lr=(n,F,f,d)=>{if(!(d>0))return 0;for(var p=f,_=f+d-1,I=0;I<n.length;++I){var J=n.codePointAt(I);if(J<=127){if(f>=_)break;F[f++]=J}else if(J<=2047){if(f+1>=_)break;F[f++]=192|J>>6,F[f++]=128|J&63}else if(J<=65535){if(f+2>=_)break;F[f++]=224|J>>12,F[f++]=128|J>>6&63,F[f++]=128|J&63}else{if(f+3>=_)break;F[f++]=240|J>>18,F[f++]=128|J>>12&63,F[f++]=128|J>>6&63,F[f++]=128|J&63,I++}}return F[f]=0,f-p},NA=(n,F,f)=>{var d=f>0?f:TA(n)+1,p=new Array(d),_=lr(n,p,0,p.length);return F&&(p.length=_),p},Ce=()=>{if(!Px.length){var n=null;if(D){var F=256,f=Buffer.alloc(F),d=0,p=process.stdin.fd;try{d=P.readSync(p,f,0,F)}catch(_){if(_.toString().includes("EOF"))d=0;else throw _}d>0&&(n=f.slice(0,d).toString("utf-8"))}else globalThis.window?.prompt&&(n=window.prompt("Input: "),n!==null&&(n+=`
1162
- `));if(!n)return null;Px=NA(n,!0)}return Px.shift()},X0={ttys:[],init(){},shutdown(){},register(n,F){X0.ttys[n]={input:[],output:[],ops:F},a.registerDevice(n,X0.stream_ops)},stream_ops:{open(n){var F=X0.ttys[n.node.rdev];if(!F)throw new a.ErrnoError(43);n.tty=F,n.seekable=!1},close(n){n.tty.ops.fsync(n.tty)},fsync(n){n.tty.ops.fsync(n.tty)},read(n,F,f,d,p){if(!n.tty||!n.tty.ops.get_char)throw new a.ErrnoError(60);for(var _=0,I=0;I<d;I++){var J;try{J=n.tty.ops.get_char(n.tty)}catch{throw new a.ErrnoError(29)}if(J===void 0&&_===0)throw new a.ErrnoError(6);if(J==null)break;_++,F[f+I]=J}return _&&(n.node.atime=Date.now()),_},write(n,F,f,d,p){if(!n.tty||!n.tty.ops.put_char)throw new a.ErrnoError(60);try{for(var _=0;_<d;_++)n.tty.ops.put_char(n.tty,F[f+_])}catch{throw new a.ErrnoError(29)}return d&&(n.node.mtime=n.node.ctime=Date.now()),_}},default_tty_ops:{get_char(n){return Ce()},put_char(n,F){F===null||F===10?(N(eA(n.output)),n.output=[]):F!=0&&n.output.push(F)},fsync(n){n.output?.length>0&&(N(eA(n.output)),n.output=[])},ioctl_tcgets(n){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(n,F,f){return 0},ioctl_tiocgwinsz(n){return[24,80]}},default_tty1_ops:{put_char(n,F){F===null||F===10?(R(eA(n.output)),n.output=[]):F!=0&&n.output.push(F)},fsync(n){n.output?.length>0&&(R(eA(n.output)),n.output=[])}}},bA=n=>{D0()},e0={ops_table:null,mount(n){return e0.createNode(null,"/",16895,0)},createNode(n,F,f,d){if(a.isBlkdev(f)||a.isFIFO(f))throw new a.ErrnoError(63);e0.ops_table||(e0.ops_table={dir:{node:{getattr:e0.node_ops.getattr,setattr:e0.node_ops.setattr,lookup:e0.node_ops.lookup,mknod:e0.node_ops.mknod,rename:e0.node_ops.rename,unlink:e0.node_ops.unlink,rmdir:e0.node_ops.rmdir,readdir:e0.node_ops.readdir,symlink:e0.node_ops.symlink},stream:{llseek:e0.stream_ops.llseek}},file:{node:{getattr:e0.node_ops.getattr,setattr:e0.node_ops.setattr},stream:{llseek:e0.stream_ops.llseek,read:e0.stream_ops.read,write:e0.stream_ops.write,mmap:e0.stream_ops.mmap,msync:e0.stream_ops.msync}},link:{node:{getattr:e0.node_ops.getattr,setattr:e0.node_ops.setattr,readlink:e0.node_ops.readlink},stream:{}},chrdev:{node:{getattr:e0.node_ops.getattr,setattr:e0.node_ops.setattr},stream:a.chrdev_stream_ops}});var p=a.createNode(n,F,f,d);return a.isDir(p.mode)?(p.node_ops=e0.ops_table.dir.node,p.stream_ops=e0.ops_table.dir.stream,p.contents={}):a.isFile(p.mode)?(p.node_ops=e0.ops_table.file.node,p.stream_ops=e0.ops_table.file.stream,p.usedBytes=0,p.contents=e0.emptyFileContents??(e0.emptyFileContents=new Uint8Array(0))):a.isLink(p.mode)?(p.node_ops=e0.ops_table.link.node,p.stream_ops=e0.ops_table.link.stream):a.isChrdev(p.mode)&&(p.node_ops=e0.ops_table.chrdev.node,p.stream_ops=e0.ops_table.chrdev.stream),p.atime=p.mtime=p.ctime=Date.now(),n&&(n.contents[F]=p,n.atime=n.mtime=n.ctime=p.atime),p},getFileDataAsTypedArray(n){return n.contents.subarray(0,n.usedBytes)},expandFileStorage(n,F){var f=n.contents.length;if(!(f>=F)){var d=1024*1024;F=Math.max(F,f*(f<d?2:1.125)>>>0),f&&(F=Math.max(F,256));var p=e0.getFileDataAsTypedArray(n);n.contents=new Uint8Array(F),n.contents.set(p)}},resizeFileStorage(n,F){if(n.usedBytes!=F){var f=n.contents;n.contents=new Uint8Array(F),n.contents.set(f.subarray(0,Math.min(F,n.usedBytes))),n.usedBytes=F}},node_ops:{getattr(n){var F={};return F.dev=a.isChrdev(n.mode)?n.id:1,F.ino=n.id,F.mode=n.mode,F.nlink=1,F.uid=0,F.gid=0,F.rdev=n.rdev,a.isDir(n.mode)?F.size=4096:a.isFile(n.mode)?F.size=n.usedBytes:a.isLink(n.mode)?F.size=n.link.length:F.size=0,F.atime=new Date(n.atime),F.mtime=new Date(n.mtime),F.ctime=new Date(n.ctime),F.blksize=4096,F.blocks=Math.ceil(F.size/F.blksize),F},setattr(n,F){for(let f of["mode","atime","mtime","ctime"])F[f]!=null&&(n[f]=F[f]);F.size!==void 0&&e0.resizeFileStorage(n,F.size)},lookup(n,F){throw e0.doesNotExistError||(e0.doesNotExistError=new a.ErrnoError(44),e0.doesNotExistError.stack="<generic error, no stack>"),e0.doesNotExistError},mknod(n,F,f,d){return e0.createNode(n,F,f,d)},rename(n,F,f){var d;try{d=a.lookupNode(F,f)}catch{}if(d){if(a.isDir(n.mode))for(var p in d.contents)throw new a.ErrnoError(55);a.hashRemoveNode(d)}delete n.parent.contents[n.name],F.contents[f]=n,n.name=f,F.ctime=F.mtime=n.parent.ctime=n.parent.mtime=Date.now()},unlink(n,F){delete n.contents[F],n.ctime=n.mtime=Date.now()},rmdir(n,F){var f=a.lookupNode(n,F);for(var d in f.contents)throw new a.ErrnoError(55);delete n.contents[F],n.ctime=n.mtime=Date.now()},readdir(n){return[".","..",...Object.keys(n.contents)]},symlink(n,F,f){var d=e0.createNode(n,F,41471,0);return d.link=f,d},readlink(n){if(!a.isLink(n.mode))throw new a.ErrnoError(28);return n.link}},stream_ops:{read(n,F,f,d,p){var _=n.node.contents;if(p>=n.node.usedBytes)return 0;var I=Math.min(n.node.usedBytes-p,d);return F.set(_.subarray(p,p+I),f),I},write(n,F,f,d,p,_){if(F.buffer===ex.buffer&&(_=!1),!d)return 0;var I=n.node;return I.mtime=I.ctime=Date.now(),_?(I.contents=F.subarray(f,f+d),I.usedBytes=d):I.usedBytes===0&&p===0?(I.contents=F.slice(f,f+d),I.usedBytes=d):(e0.expandFileStorage(I,p+d),I.contents.set(F.subarray(f,f+d),p),I.usedBytes=Math.max(I.usedBytes,p+d)),d},llseek(n,F,f){var d=F;if(f===1?d+=n.position:f===2&&a.isFile(n.node.mode)&&(d+=n.node.usedBytes),d<0)throw new a.ErrnoError(28);return d},mmap(n,F,f,d,p){if(!a.isFile(n.node.mode))throw new a.ErrnoError(43);var _,I,J=n.node.contents;if(!(p&2)&&J.buffer===ex.buffer)I=!1,_=J.byteOffset;else{if(I=!0,_=bA(F),!_)throw new a.ErrnoError(48);J&&((f>0||f+F<J.length)&&(J.subarray?J=J.subarray(f,f+F):J=Array.prototype.slice.call(J,f,f+F)),ex.set(J,_))}return{ptr:_,allocated:I}},msync(n,F,f,d,p){return e0.stream_ops.write(n,F,0,d,f,!1),0}}},pA=n=>{if(typeof n!="string")return n;var F={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},f=F[n];if(typeof f>"u")throw new Error(`Unknown file open mode: ${n}`);return f},Lx=n=>(typeof n=="string"&&(n=NA(n,!0)),n.subarray||(n=new Uint8Array(n)),n),Wx=(n,F)=>{var f=0;return n&&(f|=365),F&&(f|=146),f},S0={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},y0={mount(n){return y0.createNode(null,"/",n.opts.fs.lstat(n.opts.root).mode,0)},createNode(n,F,f,d){if(!a.isDir(f)&&!a.isFile(f)&&!a.isLink(f))throw new a.ErrnoError(S0.EINVAL);var p=a.createNode(n,F,f);return p.node_ops=y0.node_ops,p.stream_ops=y0.stream_ops,p},realPath(n){for(var F=[];n.parent!==n;)F.push(n.name),n=n.parent;return F.push(n.mount.opts.root),F.reverse(),B0.join(...F)},node_ops:{getattr(n){var F=y0.realPath(n),f;try{f=n.mount.opts.fs.lstat(F)}catch(d){throw d.code?new a.ErrnoError(S0[d.code]):d}return{dev:f.dev,ino:f.ino,mode:f.mode,nlink:f.nlink,uid:f.uid,gid:f.gid,rdev:f.rdev,size:f.size,atime:f.atime,mtime:f.mtime,ctime:f.ctime,blksize:f.blksize,blocks:f.blocks}},setattr(n,F){var f=y0.realPath(n);try{if(F.mode!==void 0&&(n.mount.opts.fs.chmod(f,F.mode),n.mode=F.mode),F.atime||F.mtime){var d=new Date(F.atime||F.mtime),p=new Date(F.mtime||F.atime);n.mount.opts.fs.utime(f,d,p)}F.size!==void 0&&n.mount.opts.fs.truncate(f,F.size)}catch(_){throw _.code?new a.ErrnoError(S0[_.code]):_}},lookup(n,F){try{var f=B0.join2(y0.realPath(n),F),d=n.mount.opts.fs.lstat(f).mode,p=y0.createNode(n,F,d);return p}catch(_){throw _.code?new a.ErrnoError(S0[_.code]):_}},mknod(n,F,f,d){var p=y0.createNode(n,F,f,d),_=y0.realPath(p);try{a.isDir(p.mode)?p.mount.opts.fs.mkdir(_,p.mode):p.mount.opts.fs.writeFile(_,"",{mode:p.mode})}catch(I){throw I.code?new a.ErrnoError(S0[I.code]):I}return p},rename(n,F,f){var d=y0.realPath(n),p=B0.join2(y0.realPath(F),f);try{n.mount.opts.fs.rename(d,p),n.name=f}catch(_){throw _.code?new a.ErrnoError(S0[_.code]):_}},unlink(n,F){var f=B0.join2(y0.realPath(n),F);try{n.mount.opts.fs.unlink(f)}catch(d){throw d.code?new a.ErrnoError(S0[d.code]):d}},rmdir(n,F){var f=B0.join2(y0.realPath(n),F);try{n.mount.opts.fs.rmdir(f)}catch(d){throw d.code?new a.ErrnoError(S0[d.code]):d}},readdir(n){var F=y0.realPath(n);try{return n.mount.opts.fs.readdir(F)}catch(f){throw f.code?new a.ErrnoError(S0[f.code]):f}},symlink(n,F,f){var d=B0.join2(y0.realPath(n),F);try{n.mount.opts.fs.symlink(f,d)}catch(p){throw p.code?new a.ErrnoError(S0[p.code]):p}},readlink(n){var F=y0.realPath(n);try{return n.mount.opts.fs.readlink(F)}catch(f){throw f.code?new a.ErrnoError(S0[f.code]):f}}},stream_ops:{open(n){var F=y0.realPath(n.node);try{n.nfd=n.node.mount.opts.fs.open(F,n.flags)}catch(f){throw f.code?new a.ErrnoError(S0[f.code]):f}},close(n){try{n.node.mount.opts.fs.close(n.nfd)}catch(F){throw F.code?new a.ErrnoError(S0[F.code]):F}},read(n,F,f,d,p){try{return n.node.mount.opts.fs.read(n.nfd,F,f,d,p)}catch(_){throw _.code?new a.ErrnoError(S0[_.code]):_}},write(n,F,f,d,p){try{return n.node.mount.opts.fs.write(n.nfd,F,f,d,p)}catch(_){throw _.code?new a.ErrnoError(S0[_.code]):_}},llseek(n,F,f){var d=F;if(f===1)d+=n.position;else if(f===2&&a.isFile(n.node.mode))try{var p=n.node.node_ops.getattr(n.node);d+=p.size}catch(_){throw new a.ErrnoError(S0[_.code])}if(d<0)throw new a.ErrnoError(S0.EINVAL);return d}}},tA=async n=>{var F=await y(n);return new Uint8Array(F)},cr=(...n)=>a.createDataFile(...n),Fx=n=>n,ix=0,p0=null,Dr=n=>{if(ix--,t.monitorRunDependencies?.(ix),ix==0&&p0){var F=p0;p0=null,F()}},hx=n=>{ix++,t.monitorRunDependencies?.(ix)},rr=[],nA=async(n,F)=>{typeof Browser<"u"&&Browser.init();for(var f of rr)if(f.canHandle(F))return f.handle(n,F);return n},jA=async(n,F,f,d,p,_,I,J)=>{var o0=F?ox.resolve(B0.join2(n,F)):n,_0=Fx(`cp ${o0}`);hx(_0);try{var z0=f;typeof f=="string"&&(z0=await tA(f)),z0=await nA(z0,o0),J?.(),_||cr(n,F,z0,d,p,I)}finally{Dr(_0)}},le=(n,F,f,d,p,_,I,J,o0,_0)=>{jA(n,F,f,d,p,J,o0,_0).then(_).catch(I)},a={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,filesystems:null,syncFSRequests:0,ErrnoError:class{constructor(n){Bx(this,"name","ErrnoError"),this.errno=n}},FSStream:class{constructor(){Bx(this,"shared",{})}get object(){return this.node}set object(n){this.node=n}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(n){this.shared.flags=n}get position(){return this.shared.position}set position(n){this.shared.position=n}},FSNode:class{constructor(n,F,f,d){Bx(this,"node_ops",{}),Bx(this,"stream_ops",{}),Bx(this,"readMode",365),Bx(this,"writeMode",146),Bx(this,"mounted",null),n||(n=this),this.parent=n,this.mount=n.mount,this.id=a.nextInode++,this.name=F,this.mode=f,this.rdev=d,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(n){n?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(n){n?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return a.isDir(this.mode)}get isDevice(){return a.isChrdev(this.mode)}},lookupPath(n,F={}){if(!n)throw new a.ErrnoError(44);F.follow_mount??(F.follow_mount=!0),B0.isAbs(n)||(n=a.cwd()+"/"+n);x:for(var f=0;f<40;f++){for(var d=n.split("/").filter(_0=>!!_0),p=a.root,_="/",I=0;I<d.length;I++){var J=I===d.length-1;if(J&&F.parent)break;if(d[I]!=="."){if(d[I]===".."){if(_=B0.dirname(_),a.isRoot(p)){n=_+"/"+d.slice(I+1).join("/"),f--;continue x}else p=p.parent;continue}_=B0.join2(_,d[I]);try{p=a.lookupNode(p,d[I])}catch(_0){if(_0?.errno===44&&J&&F.noent_okay)return{path:_};throw _0}if(a.isMountpoint(p)&&(!J||F.follow_mount)&&(p=p.mounted.root),a.isLink(p.mode)&&(!J||F.follow)){if(!p.node_ops.readlink)throw new a.ErrnoError(52);var o0=p.node_ops.readlink(p);B0.isAbs(o0)||(o0=B0.dirname(_)+"/"+o0),n=o0+"/"+d.slice(I+1).join("/");continue x}}}return{path:_,node:p}}throw new a.ErrnoError(32)},getPath(n){for(var F;;){if(a.isRoot(n)){var f=n.mount.mountpoint;return F?f[f.length-1]!=="/"?`${f}/${F}`:f+F:f}F=F?`${n.name}/${F}`:n.name,n=n.parent}},hashName(n,F){for(var f=0,d=0;d<F.length;d++)f=(f<<5)-f+F.charCodeAt(d)|0;return(n+f>>>0)%a.nameTable.length},hashAddNode(n){var F=a.hashName(n.parent.id,n.name);n.name_next=a.nameTable[F],a.nameTable[F]=n},hashRemoveNode(n){var F=a.hashName(n.parent.id,n.name);if(a.nameTable[F]===n)a.nameTable[F]=n.name_next;else for(var f=a.nameTable[F];f;){if(f.name_next===n){f.name_next=n.name_next;break}f=f.name_next}},lookupNode(n,F){var f=a.mayLookup(n);if(f)throw new a.ErrnoError(f);for(var d=a.hashName(n.id,F),p=a.nameTable[d];p;p=p.name_next){var _=p.name;if(p.parent.id===n.id&&_===F)return p}return a.lookup(n,F)},createNode(n,F,f,d){var p=new a.FSNode(n,F,f,d);return a.hashAddNode(p),p},destroyNode(n){a.hashRemoveNode(n)},isRoot(n){return n===n.parent},isMountpoint(n){return!!n.mounted},isFile(n){return(n&61440)===32768},isDir(n){return(n&61440)===16384},isLink(n){return(n&61440)===40960},isChrdev(n){return(n&61440)===8192},isBlkdev(n){return(n&61440)===24576},isFIFO(n){return(n&61440)===4096},isSocket(n){return(n&49152)===49152},flagsToPermissionString(n){var F=["r","w","rw"][n&3];return n&512&&(F+="w"),F},nodePermissions(n,F){return a.ignorePermissions?0:F.includes("r")&&!(n.mode&292)||F.includes("w")&&!(n.mode&146)||F.includes("x")&&!(n.mode&73)?2:0},mayLookup(n){if(!a.isDir(n.mode))return 54;var F=a.nodePermissions(n,"x");return F||(n.node_ops.lookup?0:2)},mayCreate(n,F){if(!a.isDir(n.mode))return 54;try{var f=a.lookupNode(n,F);return 20}catch{}return a.nodePermissions(n,"wx")},mayDelete(n,F,f){var d;try{d=a.lookupNode(n,F)}catch(_){return _.errno}var p=a.nodePermissions(n,"wx");if(p)return p;if(f){if(!a.isDir(d.mode))return 54;if(a.isRoot(d)||a.getPath(d)===a.cwd())return 10}else if(a.isDir(d.mode))return 31;return 0},mayOpen(n,F){if(!n)return 44;if(a.isLink(n.mode))return 32;var f=a.flagsToPermissionString(F);return a.isDir(n.mode)&&(f!=="r"||F&576)?31:a.nodePermissions(n,f)},checkOpExists(n,F){if(!n)throw new a.ErrnoError(F);return n},MAX_OPEN_FDS:4096,nextfd(){for(var n=0;n<=a.MAX_OPEN_FDS;n++)if(!a.streams[n])return n;throw new a.ErrnoError(33)},getStreamChecked(n){var F=a.getStream(n);if(!F)throw new a.ErrnoError(8);return F},getStream:n=>a.streams[n],createStream(n,F=-1){return n=Object.assign(new a.FSStream,n),F==-1&&(F=a.nextfd()),n.fd=F,a.streams[F]=n,n},closeStream(n){a.streams[n]=null},dupStream(n,F=-1){var f=a.createStream(n,F);return f.stream_ops?.dup?.(f),f},doSetAttr(n,F,f){var d=n?.stream_ops.setattr,p=d?n:F;d??(d=F.node_ops.setattr),a.checkOpExists(d,63);try{d(p,f)}catch(_){throw _ instanceof RangeError?new a.ErrnoError(22):_}},chrdev_stream_ops:{open(n){var F=a.getDevice(n.node.rdev);n.stream_ops=F.stream_ops,n.stream_ops.open?.(n)},llseek(){throw new a.ErrnoError(70)}},major:n=>n>>8,minor:n=>n&255,makedev:(n,F)=>n<<8|F,registerDevice(n,F){a.devices[n]={stream_ops:F}},getDevice:n=>a.devices[n],getMounts(n){for(var F=[],f=[n];f.length;){var d=f.pop();F.push(d),f.push(...d.mounts)}return F},syncfs(n,F){typeof n=="function"&&(F=n,n=!1),a.syncFSRequests++,a.syncFSRequests>1&&R(`warning: ${a.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var f=a.getMounts(a.root.mount),d=0;function p(J){return a.syncFSRequests--,F(J)}function _(J){if(J)return _.errored?void 0:(_.errored=!0,p(J));++d>=f.length&&p(null)}for(var I of f)I.type.syncfs?I.type.syncfs(I,n,_):_(null)},mount(n,F,f){var d=f==="/",p=!f,_;if(d&&a.root)throw new a.ErrnoError(10);if(!d&&!p){var I=a.lookupPath(f,{follow_mount:!1});if(f=I.path,_=I.node,a.isMountpoint(_))throw new a.ErrnoError(10);if(!a.isDir(_.mode))throw new a.ErrnoError(54)}var J={type:n,opts:F,mountpoint:f,mounts:[]},o0=n.mount(J);return o0.mount=J,J.root=o0,d?a.root=o0:_&&(_.mounted=J,_.mount&&_.mount.mounts.push(J)),o0},unmount(n){var F=a.lookupPath(n,{follow_mount:!1});if(!a.isMountpoint(F.node))throw new a.ErrnoError(28);var f=F.node,d=f.mounted,p=a.getMounts(d);for(var[_,I]of Object.entries(a.nameTable))for(;I;){var J=I.name_next;p.includes(I.mount)&&a.destroyNode(I),I=J}f.mounted=null;var o0=f.mount.mounts.indexOf(d);f.mount.mounts.splice(o0,1)},lookup(n,F){return n.node_ops.lookup(n,F)},mknod(n,F,f){var d=a.lookupPath(n,{parent:!0}),p=d.node,_=B0.basename(n);if(!_)throw new a.ErrnoError(28);if(_==="."||_==="..")throw new a.ErrnoError(20);var I=a.mayCreate(p,_);if(I)throw new a.ErrnoError(I);if(!p.node_ops.mknod)throw new a.ErrnoError(63);return p.node_ops.mknod(p,_,F,f)},statfs(n){return a.statfsNode(a.lookupPath(n,{follow:!0}).node)},statfsStream(n){return a.statfsNode(n.node)},statfsNode(n){var F={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:a.nextInode,ffree:a.nextInode-1,fsid:42,flags:2,namelen:255};return n.node_ops.statfs&&Object.assign(F,n.node_ops.statfs(n.mount.opts.root)),F},create(n,F=438){return F&=4095,F|=32768,a.mknod(n,F,0)},mkdir(n,F=511){return F&=1023,F|=16384,a.mknod(n,F,0)},mkdirTree(n,F){var f=n.split("/"),d="";for(var p of f)if(p){(d||B0.isAbs(n))&&(d+="/"),d+=p;try{a.mkdir(d,F)}catch(_){if(_.errno!=20)throw _}}},mkdev(n,F,f){return typeof f>"u"&&(f=F,F=438),F|=8192,a.mknod(n,F,f)},symlink(n,F){if(!ox.resolve(n))throw new a.ErrnoError(44);var f=a.lookupPath(F,{parent:!0}),d=f.node;if(!d)throw new a.ErrnoError(44);var p=B0.basename(F),_=a.mayCreate(d,p);if(_)throw new a.ErrnoError(_);if(!d.node_ops.symlink)throw new a.ErrnoError(63);return d.node_ops.symlink(d,p,n)},rename(n,F){var f=B0.dirname(n),d=B0.dirname(F),p=B0.basename(n),_=B0.basename(F),I,J,o0;if(I=a.lookupPath(n,{parent:!0}),J=I.node,I=a.lookupPath(F,{parent:!0}),o0=I.node,!J||!o0)throw new a.ErrnoError(44);if(J.mount!==o0.mount)throw new a.ErrnoError(75);var _0=a.lookupNode(J,p),z0=ox.relative(n,d);if(z0.charAt(0)!==".")throw new a.ErrnoError(28);if(z0=ox.relative(F,f),z0.charAt(0)!==".")throw new a.ErrnoError(55);var M0;try{M0=a.lookupNode(o0,_)}catch{}if(_0!==M0){var P0=a.isDir(_0.mode),m0=a.mayDelete(J,p,P0);if(m0)throw new a.ErrnoError(m0);if(m0=M0?a.mayDelete(o0,_,P0):a.mayCreate(o0,_),m0)throw new a.ErrnoError(m0);if(!J.node_ops.rename)throw new a.ErrnoError(63);if(a.isMountpoint(_0)||M0&&a.isMountpoint(M0))throw new a.ErrnoError(10);if(o0!==J&&(m0=a.nodePermissions(J,"w"),m0))throw new a.ErrnoError(m0);a.hashRemoveNode(_0);try{J.node_ops.rename(_0,o0,_),_0.parent=o0}catch(sx){throw sx}finally{a.hashAddNode(_0)}}},rmdir(n){var F=a.lookupPath(n,{parent:!0}),f=F.node,d=B0.basename(n),p=a.lookupNode(f,d),_=a.mayDelete(f,d,!0);if(_)throw new a.ErrnoError(_);if(!f.node_ops.rmdir)throw new a.ErrnoError(63);if(a.isMountpoint(p))throw new a.ErrnoError(10);f.node_ops.rmdir(f,d),a.destroyNode(p)},readdir(n){var F=a.lookupPath(n,{follow:!0}),f=F.node,d=a.checkOpExists(f.node_ops.readdir,54);return d(f)},unlink(n){var F=a.lookupPath(n,{parent:!0}),f=F.node;if(!f)throw new a.ErrnoError(44);var d=B0.basename(n),p=a.lookupNode(f,d),_=a.mayDelete(f,d,!1);if(_)throw new a.ErrnoError(_);if(!f.node_ops.unlink)throw new a.ErrnoError(63);if(a.isMountpoint(p))throw new a.ErrnoError(10);f.node_ops.unlink(f,d),a.destroyNode(p)},readlink(n){var F=a.lookupPath(n),f=F.node;if(!f)throw new a.ErrnoError(44);if(!f.node_ops.readlink)throw new a.ErrnoError(28);return f.node_ops.readlink(f)},stat(n,F){var f=a.lookupPath(n,{follow:!F}),d=f.node,p=a.checkOpExists(d.node_ops.getattr,63);return p(d)},fstat(n){var F=a.getStreamChecked(n),f=F.node,d=F.stream_ops.getattr,p=d?F:f;return d??(d=f.node_ops.getattr),a.checkOpExists(d,63),d(p)},lstat(n){return a.stat(n,!0)},doChmod(n,F,f,d){a.doSetAttr(n,F,{mode:f&4095|F.mode&-4096,ctime:Date.now(),dontFollow:d})},chmod(n,F,f){var d;if(typeof n=="string"){var p=a.lookupPath(n,{follow:!f});d=p.node}else d=n;a.doChmod(null,d,F,f)},lchmod(n,F){a.chmod(n,F,!0)},fchmod(n,F){var f=a.getStreamChecked(n);a.doChmod(f,f.node,F,!1)},doChown(n,F,f){a.doSetAttr(n,F,{timestamp:Date.now(),dontFollow:f})},chown(n,F,f,d){var p;if(typeof n=="string"){var _=a.lookupPath(n,{follow:!d});p=_.node}else p=n;a.doChown(null,p,d)},lchown(n,F,f){a.chown(n,F,f,!0)},fchown(n,F,f){var d=a.getStreamChecked(n);a.doChown(d,d.node,!1)},doTruncate(n,F,f){if(a.isDir(F.mode))throw new a.ErrnoError(31);if(!a.isFile(F.mode))throw new a.ErrnoError(28);var d=a.nodePermissions(F,"w");if(d)throw new a.ErrnoError(d);a.doSetAttr(n,F,{size:f,timestamp:Date.now()})},truncate(n,F){if(F<0)throw new a.ErrnoError(28);var f;if(typeof n=="string"){var d=a.lookupPath(n,{follow:!0});f=d.node}else f=n;a.doTruncate(null,f,F)},ftruncate(n,F){var f=a.getStreamChecked(n);if(F<0||(f.flags&2097155)===0)throw new a.ErrnoError(28);a.doTruncate(f,f.node,F)},utime(n,F,f){var d=a.lookupPath(n,{follow:!0}),p=d.node,_=a.checkOpExists(p.node_ops.setattr,63);_(p,{atime:F,mtime:f})},open(n,F,f=438){if(n==="")throw new a.ErrnoError(44);F=pA(F),F&64?f=f&4095|32768:f=0;var d,p;if(typeof n=="object")d=n;else{p=n.endsWith("/");var _=a.lookupPath(n,{follow:!(F&131072),noent_okay:!0});d=_.node,n=_.path}var I=!1;if(F&64)if(d){if(F&128)throw new a.ErrnoError(20)}else{if(p)throw new a.ErrnoError(31);d=a.mknod(n,f|511,0),I=!0}if(!d)throw new a.ErrnoError(44);if(a.isChrdev(d.mode)&&(F&=-513),F&65536&&!a.isDir(d.mode))throw new a.ErrnoError(54);if(!I){var J=a.mayOpen(d,F);if(J)throw new a.ErrnoError(J)}F&512&&!I&&a.truncate(d,0),F&=-131713;var o0=a.createStream({node:d,path:a.getPath(d),flags:F,seekable:!0,position:0,stream_ops:d.stream_ops,ungotten:[],error:!1});return o0.stream_ops.open&&o0.stream_ops.open(o0),I&&a.chmod(d,f&511),o0},close(n){if(a.isClosed(n))throw new a.ErrnoError(8);n.getdents&&(n.getdents=null);try{n.stream_ops.close&&n.stream_ops.close(n)}catch(F){throw F}finally{a.closeStream(n.fd)}n.fd=null},isClosed(n){return n.fd===null},llseek(n,F,f){if(a.isClosed(n))throw new a.ErrnoError(8);if(!n.seekable||!n.stream_ops.llseek)throw new a.ErrnoError(70);if(f!=0&&f!=1&&f!=2)throw new a.ErrnoError(28);return n.position=n.stream_ops.llseek(n,F,f),n.ungotten=[],n.position},read(n,F,f,d,p){if(d<0||p<0)throw new a.ErrnoError(28);if(a.isClosed(n))throw new a.ErrnoError(8);if((n.flags&2097155)===1)throw new a.ErrnoError(8);if(a.isDir(n.node.mode))throw new a.ErrnoError(31);if(!n.stream_ops.read)throw new a.ErrnoError(28);var _=typeof p<"u";if(!_)p=n.position;else if(!n.seekable)throw new a.ErrnoError(70);var I=n.stream_ops.read(n,F,f,d,p);return _||(n.position+=I),I},write(n,F,f,d,p,_){if(d<0||p<0)throw new a.ErrnoError(28);if(a.isClosed(n))throw new a.ErrnoError(8);if((n.flags&2097155)===0)throw new a.ErrnoError(8);if(a.isDir(n.node.mode))throw new a.ErrnoError(31);if(!n.stream_ops.write)throw new a.ErrnoError(28);n.seekable&&n.flags&1024&&a.llseek(n,0,2);var I=typeof p<"u";if(!I)p=n.position;else if(!n.seekable)throw new a.ErrnoError(70);var J=n.stream_ops.write(n,F,f,d,p,_);return I||(n.position+=J),J},mmap(n,F,f,d,p){if((d&2)!==0&&(p&2)===0&&(n.flags&2097155)!==2)throw new a.ErrnoError(2);if((n.flags&2097155)===1)throw new a.ErrnoError(2);if(!n.stream_ops.mmap)throw new a.ErrnoError(43);if(!F)throw new a.ErrnoError(28);return n.stream_ops.mmap(n,F,f,d,p)},msync(n,F,f,d,p){return n.stream_ops.msync?n.stream_ops.msync(n,F,f,d,p):0},ioctl(n,F,f){if(!n.stream_ops.ioctl)throw new a.ErrnoError(59);return n.stream_ops.ioctl(n,F,f)},readFile(n,F={}){F.flags=F.flags||0,F.encoding=F.encoding||"binary",F.encoding!=="utf8"&&F.encoding!=="binary"&&D0(`Invalid encoding type "${F.encoding}"`);var f=a.open(n,F.flags),d=a.stat(n),p=d.size,_=new Uint8Array(p);return a.read(f,_,0,p,0),F.encoding==="utf8"&&(_=eA(_)),a.close(f),_},writeFile(n,F,f={}){f.flags=f.flags||577;var d=a.open(n,f.flags,f.mode);F=Lx(F),a.write(d,F,0,F.byteLength,void 0,f.canOwn),a.close(d)},cwd:()=>a.currentPath,chdir(n){var F=a.lookupPath(n,{follow:!0});if(F.node===null)throw new a.ErrnoError(44);if(!a.isDir(F.node.mode))throw new a.ErrnoError(54);var f=a.nodePermissions(F.node,"x");if(f)throw new a.ErrnoError(f);a.currentPath=F.path},createDefaultDirectories(){a.mkdir("/tmp"),a.mkdir("/home"),a.mkdir("/home/web_user")},createDefaultDevices(){a.mkdir("/dev"),a.registerDevice(a.makedev(1,3),{read:()=>0,write:(d,p,_,I,J)=>I,llseek:()=>0}),a.mkdev("/dev/null",a.makedev(1,3)),X0.register(a.makedev(5,0),X0.default_tty_ops),X0.register(a.makedev(6,0),X0.default_tty1_ops),a.mkdev("/dev/tty",a.makedev(5,0)),a.mkdev("/dev/tty1",a.makedev(6,0));var n=new Uint8Array(1024),F=0,f=()=>(F===0&&(Cr(n),F=n.byteLength),n[--F]);a.createDevice("/dev","random",f),a.createDevice("/dev","urandom",f),a.mkdir("/dev/shm"),a.mkdir("/dev/shm/tmp")},createSpecialDirectories(){a.mkdir("/proc");var n=a.mkdir("/proc/self");a.mkdir("/proc/self/fd"),a.mount({mount(){var F=a.createNode(n,"fd",16895,73);return F.stream_ops={llseek:e0.stream_ops.llseek},F.node_ops={lookup(f,d){var p=+d,_=a.getStreamChecked(p),I={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>_.path},id:p+1};return I.parent=I,I},readdir(){return Array.from(a.streams.entries()).filter(([f,d])=>d).map(([f,d])=>f.toString())}},F}},{},"/proc/self/fd")},createStandardStreams(n,F,f){n?a.createDevice("/dev","stdin",n):a.symlink("/dev/tty","/dev/stdin"),F?a.createDevice("/dev","stdout",null,F):a.symlink("/dev/tty","/dev/stdout"),f?a.createDevice("/dev","stderr",null,f):a.symlink("/dev/tty1","/dev/stderr");var d=a.open("/dev/stdin",0),p=a.open("/dev/stdout",1),_=a.open("/dev/stderr",1)},staticInit(){a.nameTable=new Array(4096),a.mount(e0,{},"/"),a.createDefaultDirectories(),a.createDefaultDevices(),a.createSpecialDirectories(),a.filesystems={MEMFS:e0,PROXYFS:y0}},init(n,F,f){a.initialized=!0,n??(n=t.stdin),F??(F=t.stdout),f??(f=t.stderr),a.createStandardStreams(n,F,f)},quit(){a.initialized=!1,u(0);for(var n of a.streams)n&&a.close(n)},findObject(n,F){var f=a.analyzePath(n,F);return f.exists?f.object:null},analyzePath(n,F){try{var f=a.lookupPath(n,{follow:!F});n=f.path}catch{}var d={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var f=a.lookupPath(n,{parent:!0});d.parentExists=!0,d.parentPath=f.path,d.parentObject=f.node,d.name=B0.basename(n),f=a.lookupPath(n,{follow:!F}),d.exists=!0,d.path=f.path,d.object=f.node,d.name=f.node.name,d.isRoot=f.path==="/"}catch(p){d.error=p.errno}return d},createPath(n,F,f,d){n=typeof n=="string"?n:a.getPath(n);for(var p=F.split("/").reverse();p.length;){var _=p.pop();if(_){var I=B0.join2(n,_);try{a.mkdir(I)}catch(J){if(J.errno!=20)throw J}n=I}}return I},createFile(n,F,f,d,p){var _=B0.join2(typeof n=="string"?n:a.getPath(n),F),I=Wx(d,p);return a.create(_,I)},createDataFile(n,F,f,d,p,_){var I=F;n&&(n=typeof n=="string"?n:a.getPath(n),I=F?B0.join2(n,F):n);var J=Wx(d,p),o0=a.create(I,J);if(f){f=Lx(f),a.chmod(o0,J|146);var _0=a.open(o0,577);a.write(_0,f,0,f.length,0,_),a.close(_0),a.chmod(o0,J)}},createDevice(n,F,f,d){var p,_=B0.join2(typeof n=="string"?n:a.getPath(n),F),I=Wx(!!f,!!d);(p=a.createDevice).major??(p.major=64);var J=a.makedev(a.createDevice.major++,0);return a.registerDevice(J,{open(o0){o0.seekable=!1},close(o0){d?.buffer?.length&&d(10)},read(o0,_0,z0,M0,P0){for(var m0=0,sx=0;sx<M0;sx++){var bx;try{bx=f()}catch{throw new a.ErrnoError(29)}if(bx===void 0&&m0===0)throw new a.ErrnoError(6);if(bx==null)break;m0++,_0[z0+sx]=bx}return m0&&(o0.node.atime=Date.now()),m0},write(o0,_0,z0,M0,P0){for(var m0=0;m0<M0;m0++)try{d(_0[z0+m0])}catch{throw new a.ErrnoError(29)}return M0&&(o0.node.mtime=o0.node.ctime=Date.now()),m0}}),a.mkdev(_,I,J)},forceLoadFile(n){if(n.isDevice||n.isFolder||n.link||n.contents)return!0;if(globalThis.XMLHttpRequest)D0("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");else try{n.contents=q(n.url)}catch{throw new a.ErrnoError(29)}},createLazyFile(n,F,f,d,p){class _{constructor(){Bx(this,"lengthKnown",!1),Bx(this,"chunks",[])}get(P0){if(!(P0>this.length-1||P0<0)){var m0=P0%this.chunkSize,sx=P0/this.chunkSize|0;return this.getter(sx)[m0]}}setDataGetter(P0){this.getter=P0}cacheLength(){var P0=new XMLHttpRequest;P0.open("HEAD",f,!1),P0.send(null),P0.status>=200&&P0.status<300||P0.status===304||D0("Couldn't load "+f+". Status: "+P0.status);var m0=Number(P0.getResponseHeader("Content-length")),sx,bx=(sx=P0.getResponseHeader("Accept-Ranges"))&&sx==="bytes",Nx=(sx=P0.getResponseHeader("Content-Encoding"))&&sx==="gzip",Rx=1024*1024;bx||(Rx=m0);var Ox=(Xx,ar)=>{Xx>ar&&D0("invalid range ("+Xx+", "+ar+") or no bytes requested!"),ar>m0-1&&D0("only "+m0+" bytes available! programmer error!");var cx=new XMLHttpRequest;return cx.open("GET",f,!1),m0!==Rx&&cx.setRequestHeader("Range","bytes="+Xx+"-"+ar),cx.responseType="arraybuffer",cx.overrideMimeType&&cx.overrideMimeType("text/plain; charset=x-user-defined"),cx.send(null),cx.status>=200&&cx.status<300||cx.status===304||D0("Couldn't load "+f+". Status: "+cx.status),cx.response!==void 0?new Uint8Array(cx.response||[]):NA(cx.responseText||"",!0)},mr=this;mr.setDataGetter(Xx=>{var ar=Xx*Rx,cx=(Xx+1)*Rx-1;return cx=Math.min(cx,m0-1),typeof mr.chunks[Xx]>"u"&&(mr.chunks[Xx]=Ox(ar,cx)),typeof mr.chunks[Xx]>"u"&&D0("doXHR failed!"),mr.chunks[Xx]}),(Nx||!m0)&&(Rx=m0=1,m0=this.getter(0).length,Rx=m0,N("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=m0,this._chunkSize=Rx,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(globalThis.XMLHttpRequest){l||D0("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var I=new _,J={isDevice:!1,contents:I}}else var J={isDevice:!1,url:f};var o0=a.createFile(n,F,J,d,p);J.contents?o0.contents=J.contents:J.url&&(o0.contents=null,o0.url=J.url),Object.defineProperties(o0,{usedBytes:{get:function(){return this.contents.length}}});var _0={};for(let[M0,P0]of Object.entries(o0.stream_ops))_0[M0]=(...m0)=>(a.forceLoadFile(o0),P0(...m0));function z0(M0,P0,m0,sx,bx){var Nx=M0.node.contents;if(bx>=Nx.length)return 0;var Rx=Math.min(Nx.length-bx,sx);if(Nx.slice)for(var Ox=0;Ox<Rx;Ox++)P0[m0+Ox]=Nx[bx+Ox];else for(var Ox=0;Ox<Rx;Ox++)P0[m0+Ox]=Nx.get(bx+Ox);return Rx}return _0.read=(M0,P0,m0,sx,bx)=>(a.forceLoadFile(o0),z0(M0,P0,m0,sx,bx)),_0.mmap=(M0,P0,m0,sx,bx)=>{a.forceLoadFile(o0);var Nx=bA(P0);if(!Nx)throw new a.ErrnoError(48);return z0(M0,ex,Nx,P0,m0),{ptr:Nx,allocated:!0}},o0.stream_ops=_0,o0}},k0={currentUmask:18,calculateAt(n,F,f){if(B0.isAbs(F))return F;var d;if(n===-100)d=a.cwd();else{var p=k0.getStreamFromFD(n);d=p.path}if(F.length==0){if(!f)throw new a.ErrnoError(44);return d}return d+"/"+F},writeStat(n,F){E0[n>>2]=F.dev,E0[n+4>>2]=F.mode,E0[n+8>>2]=F.nlink,E0[n+12>>2]=F.uid,E0[n+16>>2]=F.gid,E0[n+20>>2]=F.rdev,G0[n+24>>3]=BigInt(F.size),L0[n+32>>2]=4096,L0[n+36>>2]=F.blocks;var f=F.atime.getTime(),d=F.mtime.getTime(),p=F.ctime.getTime();return G0[n+40>>3]=BigInt(Math.floor(f/1e3)),E0[n+48>>2]=f%1e3*1e3*1e3,G0[n+56>>3]=BigInt(Math.floor(d/1e3)),E0[n+64>>2]=d%1e3*1e3*1e3,G0[n+72>>3]=BigInt(Math.floor(p/1e3)),E0[n+80>>2]=p%1e3*1e3*1e3,G0[n+88>>3]=BigInt(F.ino),0},writeStatFs(n,F){E0[n+4>>2]=F.bsize,E0[n+60>>2]=F.bsize,G0[n+8>>3]=BigInt(F.blocks),G0[n+16>>3]=BigInt(F.bfree),G0[n+24>>3]=BigInt(F.bavail),G0[n+32>>3]=BigInt(F.files),G0[n+40>>3]=BigInt(F.ffree),E0[n+48>>2]=F.fsid,E0[n+64>>2]=F.flags,E0[n+56>>2]=F.namelen},doMsync(n,F,f,d,p){if(!a.isFile(F.node.mode))throw new a.ErrnoError(43);if(d&2)return 0;var _=zx.slice(n,n+f);a.msync(F,_,p,f,d)},getStreamFromFD(n){var F=a.getStreamChecked(n);return F},varargs:void 0,getStr(n){var F=Vx(n);return F}};function dr(n,F,f,d){try{if(F=k0.getStr(F),F=k0.calculateAt(n,F),f&-8)return-28;var p=a.lookupPath(F,{follow:!0}),_=p.node;if(!_)return-44;var I="";return f&4&&(I+="r"),f&2&&(I+="w"),f&1&&(I+="x"),I&&a.nodePermissions(_,I)?-2:0}catch(J){if(typeof a>"u"||J.name!=="ErrnoError")throw J;return-J.errno}}var mA=()=>{var n=L0[+k0.varargs>>2];return k0.varargs+=4,n},iA=mA;function ce(n,F,f){k0.varargs=f;try{var d=k0.getStreamFromFD(n);switch(F){case 0:{var p=mA();if(p<0)return-28;for(;a.streams[p];)p++;var _;return _=a.dupStream(d,p),_.fd}case 1:case 2:return 0;case 3:return d.flags;case 4:{var p=mA(),I=289792;return d.flags=d.flags&~I|p&I,0}case 12:{var p=iA(),J=0;return O0[p+J>>1]=2,0}case 13:case 14:return 0}return-28}catch(o0){if(typeof a>"u"||o0.name!=="ErrnoError")throw o0;return-o0.errno}}var er=(n,F,f)=>lr(n,zx,F,f);function Ir(n,F){try{if(F===0)return-28;var f=a.cwd(),d=TA(f)+1;return F<d?-68:(er(f,n,F),d)}catch(p){if(typeof a>"u"||p.name!=="ErrnoError")throw p;return-p.errno}}function Mr(n,F,f){k0.varargs=f;try{var d=k0.getStreamFromFD(n);switch(F){case 21509:return d.tty?0:-59;case 21505:{if(!d.tty)return-59;if(d.tty.ops.ioctl_tcgets){var p=d.tty.ops.ioctl_tcgets(d),_=iA();L0[_>>2]=p.c_iflag||0,L0[_+4>>2]=p.c_oflag||0,L0[_+8>>2]=p.c_cflag||0,L0[_+12>>2]=p.c_lflag||0;for(var I=0;I<32;I++)ex[_+I+17]=p.c_cc[I]||0;return 0}return 0}case 21510:case 21511:case 21512:return d.tty?0:-59;case 21506:case 21507:case 21508:{if(!d.tty)return-59;if(d.tty.ops.ioctl_tcsets){for(var _=iA(),J=L0[_>>2],o0=L0[_+4>>2],_0=L0[_+8>>2],z0=L0[_+12>>2],M0=[],I=0;I<32;I++)M0.push(ex[_+I+17]);return d.tty.ops.ioctl_tcsets(d.tty,F,{c_iflag:J,c_oflag:o0,c_cflag:_0,c_lflag:z0,c_cc:M0})}return 0}case 21519:{if(!d.tty)return-59;var _=iA();return L0[_>>2]=0,0}case 21520:return d.tty?-28:-59;case 21537:case 21531:{var _=iA();return a.ioctl(d,F,_)}case 21523:{if(!d.tty)return-59;if(d.tty.ops.ioctl_tiocgwinsz){var P0=d.tty.ops.ioctl_tiocgwinsz(d.tty),_=iA();O0[_>>1]=P0[0],O0[_+2>>1]=P0[1]}return 0}case 21524:return d.tty?0:-59;case 21515:return d.tty?0:-59;default:return-28}}catch(m0){if(typeof a>"u"||m0.name!=="ErrnoError")throw m0;return-m0.errno}}function De(n,F,f,d){k0.varargs=d;try{F=k0.getStr(F),F=k0.calculateAt(n,F);var p=d?mA():0;return f&64&&(p&=~k0.currentUmask),a.open(F,f,p).fd}catch(_){if(typeof a>"u"||_.name!=="ErrnoError")throw _;return-_.errno}}function de(n,F,f,d){try{if(F=k0.getStr(F),F=k0.calculateAt(n,F),d<=0)return-28;var p=a.readlink(F),_=Math.min(d,TA(p)),I=ex[f+_];return er(p,f,d+1),ex[f+_]=I,_}catch(J){if(typeof a>"u"||J.name!=="ErrnoError")throw J;return-J.errno}}function ue(n,F,f,d){try{return F=k0.getStr(F),d=k0.getStr(d),F=k0.calculateAt(n,F),d=k0.calculateAt(f,d),a.rename(F,d),0}catch(p){if(typeof a>"u"||p.name!=="ErrnoError")throw p;return-p.errno}}function tr(n){try{return n=k0.getStr(n),a.rmdir(n),0}catch(F){if(typeof a>"u"||F.name!=="ErrnoError")throw F;return-F.errno}}function Lr(n,F,f){try{if(F=k0.getStr(F),F=k0.calculateAt(n,F),!f)a.unlink(F);else if(f===512)a.rmdir(F);else return-28;return 0}catch(d){if(typeof a>"u"||d.name!=="ErrnoError")throw d;return-d.errno}}var IA=()=>{throw new Y},nr=()=>performance.now(),be=()=>Date.now(),Rr=1,pe=n=>n>=0&&n<=3,MA=9007199254740992,ur=-9007199254740992,Or=n=>n<ur||n>MA?NaN:Number(n);function Gr(n,F,f){if(F=Or(F),!pe(n))return 28;var d;if(n===0)d=be();else if(Rr)d=nr();else return 52;var p=Math.round(d*1e3*1e3);return G0[f>>3]=BigInt(p),0}var je=()=>2147483648,Ur=(n,F)=>Math.ceil(n/F)*F,me=n=>{var F=T0.buffer.byteLength,f=(n-F+65535)/65536|0;try{return T0.grow(f),Z(),1}catch{}},he=n=>{var F=zx.length;n>>>=0;var f=je();if(n>f)return!1;for(var d=1;d<=4;d*=2){var p=F*(1+.2/d);p=Math.min(p,n+100663296);var _=Math.min(f,Ur(Math.max(n,p),65536)),I=me(_);if(I)return!0}return!1};function ir(n){try{var F=k0.getStreamFromFD(n);return a.close(F),0}catch(f){if(typeof a>"u"||f.name!=="ErrnoError")throw f;return f.errno}}var ge=(n,F,f,d)=>{for(var p=0,_=0;_<f;_++){var I=E0[F>>2],J=E0[F+4>>2];F+=8;var o0=a.read(n,ex,I,J,d);if(o0<0)return-1;if(p+=o0,o0<J)break;typeof d<"u"&&(d+=o0)}return p};function ye(n,F,f,d){try{var p=k0.getStreamFromFD(n),_=ge(p,F,f);return E0[d>>2]=_,0}catch(I){if(typeof a>"u"||I.name!=="ErrnoError")throw I;return I.errno}}function Hr(n,F,f,d){F=Or(F);try{if(isNaN(F))return 22;var p=k0.getStreamFromFD(n);return a.llseek(p,F,f),G0[d>>3]=BigInt(p.position),p.getdents&&F===0&&f===0&&(p.getdents=null),0}catch(_){if(typeof a>"u"||_.name!=="ErrnoError")throw _;return _.errno}}var Kr=(n,F,f,d)=>{for(var p=0,_=0;_<f;_++){var I=E0[F>>2],J=E0[F+4>>2];F+=8;var o0=a.write(n,ex,I,J,d);if(o0<0)return-1;if(p+=o0,o0<J)break;typeof d<"u"&&(d+=o0)}return p};function LA(n,F,f,d){try{var p=k0.getStreamFromFD(n),_=Kr(p,F,f);return E0[d>>2]=_,0}catch(I){if(typeof a>"u"||I.name!=="ErrnoError")throw I;return I.errno}}var zr=0,RA=()=>Ar||zr>0,br=n=>{M=n,RA()||(t.onExit?.(n),t0=!0),k(n,new Kx(n))},gx=(n,F)=>{M=n,RA()||v0(),br(n)},ke=n=>{if(n instanceof Kx||n=="unwind")return M;k(1,n)},hA=n=>V(n),OA=n=>{var F=TA(n)+1,f=hA(F);return er(n,f,F),f},pr=[],vx=n=>{var F=pr[n];return F||(pr[n]=F=w0.get(n)),F},sr=(...n)=>a.createPath(...n),GA=(...n)=>a.unlink(...n),s=(...n)=>a.createLazyFile(...n),v=(...n)=>a.createDevice(...n);if(a.createPreloadedFile=le,a.preloadFile=jA,a.staticInit(),t.noExitRuntime&&(Ar=t.noExitRuntime),t.preloadPlugins&&(rr=t.preloadPlugins),t.print&&(N=t.print),t.printErr&&(R=t.printErr),t.wasmBinary&&(O=t.wasmBinary),t.arguments&&(j=t.arguments),t.thisProgram&&(b=t.thisProgram),t.preInit)for(typeof t.preInit=="function"&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.shift()();t.callMain=xt,t.addRunDependency=hx,t.removeRunDependency=Dr,t.FS_preloadFile=jA,t.FS_unlink=GA,t.FS_createPath=sr,t.FS_createDevice=v,t.FS=a,t.FS_createDataFile=cr,t.FS_createLazyFile=s,t.PROXYFS=y0;var c,u,g,w,G,V,a0,d0,U0,T0,w0;function j0(n){c=t._main=n.__main_argc_argv,u=n.fflush,g=n.__funcs_on_exit,w=n.setThrew,G=n._emscripten_stack_restore,V=n._emscripten_stack_alloc,a0=n.emscripten_stack_get_current,d0=T0=n.memory,U0=w0=n.__indirect_function_table}var Y0={__assert_fail:uA,__syscall_faccessat:dr,__syscall_fcntl64:ce,__syscall_getcwd:Ir,__syscall_ioctl:Mr,__syscall_openat:De,__syscall_readlinkat:de,__syscall_renameat:ue,__syscall_rmdir:tr,__syscall_unlinkat:Lr,_emscripten_throw_longjmp:IA,clock_time_get:Gr,emscripten_resize_heap:he,fd_close:ir,fd_read:ye,fd_seek:Hr,fd_write:LA,invoke_i:UA,invoke_ii:$x,invoke_iii:qx,invoke_iiid:Rt,invoke_iiii:Tx,invoke_iiiii:tx,invoke_iiiiii:Ot,invoke_iijii:Mt,invoke_v:lx,invoke_vi:Lt,invoke_vii:yx,invoke_viii:Ze,invoke_viiii:sA,invoke_viiiii:Qe};function lx(n){var F=g0();try{vx(n)()}catch(f){if(xx(F),!(f instanceof L))throw f;w(1,0)}}function yx(n,F,f){var d=g0();try{vx(n)(F,f)}catch(p){if(xx(d),!(p instanceof L))throw p;w(1,0)}}function $x(n,F){var f=g0();try{return vx(n)(F)}catch(d){if(xx(f),!(d instanceof L))throw d;w(1,0)}}function qx(n,F,f){var d=g0();try{return vx(n)(F,f)}catch(p){if(xx(d),!(p instanceof L))throw p;w(1,0)}}function UA(n){var F=g0();try{return vx(n)()}catch(f){if(xx(F),!(f instanceof L))throw f;w(1,0)}}function Tx(n,F,f,d){var p=g0();try{return vx(n)(F,f,d)}catch(_){if(xx(p),!(_ instanceof L))throw _;w(1,0)}}function sA(n,F,f,d,p){var _=g0();try{vx(n)(F,f,d,p)}catch(I){if(xx(_),!(I instanceof L))throw I;w(1,0)}}function tx(n,F,f,d,p){var _=g0();try{return vx(n)(F,f,d,p)}catch(I){if(xx(_),!(I instanceof L))throw I;w(1,0)}}function Qe(n,F,f,d,p,_){var I=g0();try{vx(n)(F,f,d,p,_)}catch(J){if(xx(I),!(J instanceof L))throw J;w(1,0)}}function Mt(n,F,f,d,p){var _=g0();try{return vx(n)(F,f,d,p)}catch(I){if(xx(_),!(I instanceof L))throw I;w(1,0)}}function Lt(n,F){var f=g0();try{vx(n)(F)}catch(d){if(xx(f),!(d instanceof L))throw d;w(1,0)}}function Ze(n,F,f,d){var p=g0();try{vx(n)(F,f,d)}catch(_){if(xx(p),!(_ instanceof L))throw _;w(1,0)}}function Rt(n,F,f,d){var p=g0();try{return vx(n)(F,f,d)}catch(_){if(xx(p),!(_ instanceof L))throw _;w(1,0)}}function Ot(n,F,f,d,p,_){var I=g0();try{return vx(n)(F,f,d,p,_)}catch(J){if(xx(I),!(J instanceof L))throw J;w(1,0)}}function xt(n=[]){var F=c;n.unshift(b);var f=n.length,d=hA((f+1)*4),p=d;for(var _ of n)E0[p>>2]=OA(_),p+=4;E0[p>>2]=0;try{var I=F(f,d);return gx(I,!0),I}catch(J){return ke(J)}}function _e(n=j){if(ix>0){p0=_e;return}if(n0(),ix>0){p0=_e;return}function F(){if(t.calledRun=!0,!t0){U(),H?.(t),t.onRuntimeInitialized?.();var f=t.noInitialRun||!0;f||xt(n),C0()}}t.setStatus?(t.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>t.setStatus(""),1),F()},1)):F()}var jr;return jr=await W0(),_e(),i0?o=t:o=new Promise((n,F)=>{H=n,K=F}),o}})();typeof A=="object"&&typeof x=="object"?(x.exports=r,x.exports.default=r):typeof define=="function"&&define.amd&&define([],()=>r)}}),i8=Ui({"wasm/bin/pawndbg.js"(A,x){"use strict";var r=(()=>{var e=globalThis.document?.currentScript?.src;return async function(i={}){var o,t=i,B=!!globalThis.window,l=!!globalThis.WorkerGlobalScope,D=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer",j=[],b="./this.program",k=(s,v)=>{throw v};typeof __filename<"u"?e=__filename:l&&(e=self.location.href);var $="",y,q;if(D){var P=require("fs");$=__dirname+"/",q=s=>{s=h(s)?new URL(s):s;var v=P.readFileSync(s);return v},y=async(s,v=!0)=>{s=h(s)?new URL(s):s;var c=P.readFileSync(s,v?void 0:"utf8");return c},process.argv.length>1&&(b=process.argv[1].replace(/\\/g,"/")),j=process.argv.slice(2),k=(s,v)=>{throw process.exitCode=s,v}}else if(B||l){try{$=new URL(".",e).href}catch{}l&&(q=s=>{var v=new XMLHttpRequest;return v.open("GET",s,!1),v.responseType="arraybuffer",v.send(null),new Uint8Array(v.response)}),y=async s=>{if(h(s))return new Promise((c,u)=>{var g=new XMLHttpRequest;g.open("GET",s,!0),g.responseType="arraybuffer",g.onload=()=>{if(g.status==200||g.status==0&&g.response){c(g.response);return}u(g.status)},g.onerror=u,g.send(null)});var v=await fetch(s,{credentials:"same-origin"});if(v.ok)return v.arrayBuffer();throw new Error(v.status+" : "+v.url)}}var N=console.log.bind(console),R=console.error.bind(console),O,t0=!1,M,h=s=>s.startsWith("file://");class L{}class Y extends L{}function W(s){for(var v=0,c=s.length,u=new Uint8Array(c),g;v<c;++v)g=s.charCodeAt(v),u[v]=~g>>8&g;return u}var H,K,i0=!1,r0=!1;function Z(){var s=hA.buffer;ex=new Int8Array(s),O0=new Int16Array(s),zx=new Uint8Array(s),Ee=new Uint16Array(s),L0=new Int32Array(s),E0=new Uint32Array(s),Fe=new Float32Array(s),ve=new Float64Array(s),G0=new BigInt64Array(s),Be=new BigUint64Array(s)}function n0(){if(t.preRun)for(typeof t.preRun=="function"&&(t.preRun=[t.preRun]);t.preRun.length;)Nr(t.preRun.shift());DA(Mx)}function U(){i0=!0,!t.noFSInit&&!a.initialized&&a.init(),X0.init(),GA.__wasm_call_ctors(),a.ignorePermissions=!1}function F0(){}function v0(){Kr(),a.quit(),X0.shutdown(),r0=!0}function C0(){if(t.postRun)for(typeof t.postRun=="function"&&(t.postRun=[t.postRun]);t.postRun.length;)Tr(t.postRun.shift());DA(dA)}function D0(s){t.onAbort?.(s),s=`Aborted(${s})`,R(s),t0=!0,s+=". Build with -sASSERTIONS for more info.";var v=new WebAssembly.RuntimeError(s);throw K?.(v),v}var q0;function I0(){return W(`\0asm\0\0\0\xB4\`\x7F\x7F\`\x7F\0\`\x7F\x7F\x7F\x7F\`\x7F\x7F\x7F\`\x7F\x7F\x7F\0\`\x7F~~~~\0\`\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F\0\`\x7F~\x7F~\`\x7F\x7F\x7F\x7F\0\`\0\0\`\0\x7F\`\x7F~~\x7F\0\`\x7F|\x7F\x7F\x7F\x7F\x7F\`\x7F~\x7F\x7F\x7F\`\x7F\x7F|\0\`\x7F~\0\`\x7F|\`\x7F~~~\0\`\x7F~\`|\x7F|\`\x7F\x7F\x7F\x7F\x7F\x7F\x7F\`~\x7F\x7F\`\x7F\x7F\x7F\x7F\x7F\0\`\x7F\x7F~\0\`~~~~\x7F\`~~~\x7F\`\x7F|\0\xFD env\r__assert_fail\0 env__syscall_openat\0env__syscall_fcntl64\0env__syscall_ioctl\0wasi_snapshot_preview1\bfd_write\0wasi_snapshot_preview1\x07fd_read\0wasi_snapshot_preview1\bfd_close\0\0wasi_snapshot_preview1\x07fd_seek\0envemscripten_resize_heap\0\0VU
1161
+ \0A\xC0\x81\v\v0\xC0\0\0\x80!\0\`(`)}function cx(s){return s}async function Kx(s){return s}async function _A(s,f){try{var B=await Kx(s),D=await WebAssembly.instantiate(B,f);return D}catch(m){L(`failed to asynchronously prepare wasm: ${m}`),d0(m)}}async function SA(s,f,B){return _A(f,B)}function vx(){var s={env:tx,wasi_snapshot_preview1:tx};return s}async function ex(){function s(_,I){return ze=_.exports,m0(ze),Z(),ze}function f(_){return s(_.instance)}var B=vx();if(n.instantiateWasm)return new Promise((_,I)=>{n.instantiateWasm(B,(K,F0)=>{_(s(K,F0))})});T0??(T0=L0());var D=await SA(R,T0,B),m=f(D);return m}class rA{constructor(f){px(this,"name","ExitStatus"),this.message=`Program terminated with exit(${f})`,this.status=f}}var H0,R0,J0,fx,zr,Kr,Vr,l0,Wr,tA,$A=s=>{for(;s.length>0;)s.shift()(n)},PA=[],lr=s=>PA.push(s),Vx=[],cr=s=>Vx.push(s),de=!1,sx=s=>G(s),g0=()=>o0(),nA=globalThis.TextDecoder&&new TextDecoder,jx=(s,f,B,D)=>{var m=f+B;if(D)return m;for(;s[f]&&!(f>=m);)++f;return f},CA=(s,f=0,B,D)=>{var m=jx(s,f,B,D);if(m-f>16&&s.buffer&&nA)return nA.decode(s.subarray(f,m));for(var _="";f<m;){var I=s[f++];if(!(I&128)){_+=String.fromCharCode(I);continue}var K=s[f++]&63;if((I&224)==192){_+=String.fromCharCode((I&31)<<6|K);continue}var F0=s[f++]&63;if((I&240)==224?I=(I&15)<<12|K<<6|F0:I=(I&7)<<18|K<<12|F0<<6|s[f++]&63,I<65536)_+=String.fromCharCode(I);else{var w0=I-65536;_+=String.fromCharCode(55296|w0>>10,56320|w0&1023)}}return _},iA=(s,f,B)=>s?CA(tA,s,f,B):"",TA=(s,f,B,D)=>d0(`Assertion failed: ${iA(s)}, at: `+[f?iA(f):"unknown filename",B,D?iA(D):"unknown function"]),c0={isAbs:s=>s.charAt(0)==="/",splitPath:s=>{var f=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return f.exec(s).slice(1)},normalizeArray:(s,f)=>{for(var B=0,D=s.length-1;D>=0;D--){var m=s[D];m==="."?s.splice(D,1):m===".."?(s.splice(D,1),B++):B&&(s.splice(D,1),B--)}if(f)for(;B;B--)s.unshift("..");return s},normalize:s=>{var f=c0.isAbs(s),B=s.slice(-1)==="/";return s=c0.normalizeArray(s.split("/").filter(D=>!!D),!f).join("/"),!s&&!f&&(s="."),s&&B&&(s+="/"),(f?"/":"")+s},dirname:s=>{var f=c0.splitPath(s),B=f[0],D=f[1];return!B&&!D?".":(D&&(D=D.slice(0,-1)),B+D)},basename:s=>s&&s.match(/([^\/]+|\/)\/*$/)[1],join:(...s)=>c0.normalize(s.join("/")),join2:(s,f)=>c0.normalize(s+"/"+f)},Xr=()=>{if(E){var s=require("crypto");return f=>s.randomFillSync(f)}return f=>(crypto.getRandomValues(f),0)},Me=s=>(Me=Xr())(s),Cx={resolve:(...s)=>{for(var f="",B=!1,D=s.length-1;D>=-1&&!B;D--){var m=D>=0?s[D]:o.cwd();if(typeof m!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!m)return"";f=m+"/"+f,B=c0.isAbs(m)}return f=c0.normalizeArray(f.split("/").filter(_=>!!_),!B).join("/"),(B?"/":"")+f||"."},relative:(s,f)=>{s=Cx.resolve(s).slice(1),f=Cx.resolve(f).slice(1);function B(w0){for(var Y0=0;Y0<w0.length&&w0[Y0]==="";Y0++);for(var O0=w0.length-1;O0>=0&&w0[O0]==="";O0--);return Y0>O0?[]:w0.slice(Y0,O0-Y0+1)}for(var D=B(s.split("/")),m=B(f.split("/")),_=Math.min(D.length,m.length),I=_,K=0;K<_;K++)if(D[K]!==m[K]){I=K;break}for(var F0=[],K=I;K<D.length;K++)F0.push("..");return F0=F0.concat(m.slice(I)),F0.join("/")}},Gx=[],WA=s=>{for(var f=0,B=0;B<s.length;++B){var D=s.charCodeAt(B);D<=127?f++:D<=2047?f+=2:D>=55296&&D<=57343?(f+=4,++B):f+=3}return f},Le=(s,f,B,D)=>{if(!(D>0))return 0;for(var m=B,_=B+D-1,I=0;I<s.length;++I){var K=s.codePointAt(I);if(K<=127){if(B>=_)break;f[B++]=K}else if(K<=2047){if(B+1>=_)break;f[B++]=192|K>>6,f[B++]=128|K&63}else if(K<=65535){if(B+2>=_)break;f[B++]=224|K>>12,f[B++]=128|K>>6&63,f[B++]=128|K&63}else{if(B+3>=_)break;f[B++]=240|K>>18,f[B++]=128|K>>12&63,f[B++]=128|K>>6&63,f[B++]=128|K&63,I++}}return f[B]=0,B-m},XA=(s,f,B)=>{var D=B>0?B:WA(s)+1,m=new Array(D),_=Le(s,m,0,m.length);return f&&(m.length=_),m},Yr=()=>{if(!Gx.length){var s=null;if(E){var f=256,B=Buffer.alloc(f),D=0,m=process.stdin.fd;try{D=T.readSync(m,B,0,f)}catch(_){if(_.toString().includes("EOF"))D=0;else throw _}D>0&&(s=B.slice(0,D).toString("utf-8"))}else globalThis.window?.prompt&&(s=window.prompt("Input: "),s!==null&&(s+=`
1162
+ `));if(!s)return null;Gx=XA(s,!0)}return Gx.shift()},rx={ttys:[],init(){},shutdown(){},register(s,f){rx.ttys[s]={input:[],output:[],ops:f},o.registerDevice(s,rx.stream_ops)},stream_ops:{open(s){var f=rx.ttys[s.node.rdev];if(!f)throw new o.ErrnoError(43);s.tty=f,s.seekable=!1},close(s){s.tty.ops.fsync(s.tty)},fsync(s){s.tty.ops.fsync(s.tty)},read(s,f,B,D,m){if(!s.tty||!s.tty.ops.get_char)throw new o.ErrnoError(60);for(var _=0,I=0;I<D;I++){var K;try{K=s.tty.ops.get_char(s.tty)}catch{throw new o.ErrnoError(29)}if(K===void 0&&_===0)throw new o.ErrnoError(6);if(K==null)break;_++,f[B+I]=K}return _&&(s.node.atime=Date.now()),_},write(s,f,B,D,m){if(!s.tty||!s.tty.ops.put_char)throw new o.ErrnoError(60);try{for(var _=0;_<D;_++)s.tty.ops.put_char(s.tty,f[B+_])}catch{throw new o.ErrnoError(29)}return D&&(s.node.mtime=s.node.ctime=Date.now()),_}},default_tty_ops:{get_char(s){return Yr()},put_char(s,f){f===null||f===10?(q(CA(s.output)),s.output=[]):f!=0&&s.output.push(f)},fsync(s){s.output?.length>0&&(q(CA(s.output)),s.output=[])},ioctl_tcgets(s){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(s,f,B){return 0},ioctl_tiocgwinsz(s){return[24,80]}},default_tty1_ops:{put_char(s,f){f===null||f===10?(L(CA(s.output)),s.output=[]):f!=0&&s.output.push(f)},fsync(s){s.output?.length>0&&(L(CA(s.output)),s.output=[])}}},qA=s=>{d0()},t0={ops_table:null,mount(s){return t0.createNode(null,"/",16895,0)},createNode(s,f,B,D){if(o.isBlkdev(B)||o.isFIFO(B))throw new o.ErrnoError(63);t0.ops_table||(t0.ops_table={dir:{node:{getattr:t0.node_ops.getattr,setattr:t0.node_ops.setattr,lookup:t0.node_ops.lookup,mknod:t0.node_ops.mknod,rename:t0.node_ops.rename,unlink:t0.node_ops.unlink,rmdir:t0.node_ops.rmdir,readdir:t0.node_ops.readdir,symlink:t0.node_ops.symlink},stream:{llseek:t0.stream_ops.llseek}},file:{node:{getattr:t0.node_ops.getattr,setattr:t0.node_ops.setattr},stream:{llseek:t0.stream_ops.llseek,read:t0.stream_ops.read,write:t0.stream_ops.write,mmap:t0.stream_ops.mmap,msync:t0.stream_ops.msync}},link:{node:{getattr:t0.node_ops.getattr,setattr:t0.node_ops.setattr,readlink:t0.node_ops.readlink},stream:{}},chrdev:{node:{getattr:t0.node_ops.getattr,setattr:t0.node_ops.setattr},stream:o.chrdev_stream_ops}});var m=o.createNode(s,f,B,D);return o.isDir(m.mode)?(m.node_ops=t0.ops_table.dir.node,m.stream_ops=t0.ops_table.dir.stream,m.contents={}):o.isFile(m.mode)?(m.node_ops=t0.ops_table.file.node,m.stream_ops=t0.ops_table.file.stream,m.usedBytes=0,m.contents=t0.emptyFileContents??(t0.emptyFileContents=new Uint8Array(0))):o.isLink(m.mode)?(m.node_ops=t0.ops_table.link.node,m.stream_ops=t0.ops_table.link.stream):o.isChrdev(m.mode)&&(m.node_ops=t0.ops_table.chrdev.node,m.stream_ops=t0.ops_table.chrdev.stream),m.atime=m.mtime=m.ctime=Date.now(),s&&(s.contents[f]=m,s.atime=s.mtime=s.ctime=m.atime),m},getFileDataAsTypedArray(s){return s.contents.subarray(0,s.usedBytes)},expandFileStorage(s,f){var B=s.contents.length;if(!(B>=f)){var D=1024*1024;f=Math.max(f,B*(B<D?2:1.125)>>>0),B&&(f=Math.max(f,256));var m=t0.getFileDataAsTypedArray(s);s.contents=new Uint8Array(f),s.contents.set(m)}},resizeFileStorage(s,f){if(s.usedBytes!=f){var B=s.contents;s.contents=new Uint8Array(f),s.contents.set(B.subarray(0,Math.min(f,s.usedBytes))),s.usedBytes=f}},node_ops:{getattr(s){var f={};return f.dev=o.isChrdev(s.mode)?s.id:1,f.ino=s.id,f.mode=s.mode,f.nlink=1,f.uid=0,f.gid=0,f.rdev=s.rdev,o.isDir(s.mode)?f.size=4096:o.isFile(s.mode)?f.size=s.usedBytes:o.isLink(s.mode)?f.size=s.link.length:f.size=0,f.atime=new Date(s.atime),f.mtime=new Date(s.mtime),f.ctime=new Date(s.ctime),f.blksize=4096,f.blocks=Math.ceil(f.size/f.blksize),f},setattr(s,f){for(let B of["mode","atime","mtime","ctime"])f[B]!=null&&(s[B]=f[B]);f.size!==void 0&&t0.resizeFileStorage(s,f.size)},lookup(s,f){throw t0.doesNotExistError||(t0.doesNotExistError=new o.ErrnoError(44),t0.doesNotExistError.stack="<generic error, no stack>"),t0.doesNotExistError},mknod(s,f,B,D){return t0.createNode(s,f,B,D)},rename(s,f,B){var D;try{D=o.lookupNode(f,B)}catch{}if(D){if(o.isDir(s.mode))for(var m in D.contents)throw new o.ErrnoError(55);o.hashRemoveNode(D)}delete s.parent.contents[s.name],f.contents[B]=s,s.name=B,f.ctime=f.mtime=s.parent.ctime=s.parent.mtime=Date.now()},unlink(s,f){delete s.contents[f],s.ctime=s.mtime=Date.now()},rmdir(s,f){var B=o.lookupNode(s,f);for(var D in B.contents)throw new o.ErrnoError(55);delete s.contents[f],s.ctime=s.mtime=Date.now()},readdir(s){return[".","..",...Object.keys(s.contents)]},symlink(s,f,B){var D=t0.createNode(s,f,41471,0);return D.link=B,D},readlink(s){if(!o.isLink(s.mode))throw new o.ErrnoError(28);return s.link}},stream_ops:{read(s,f,B,D,m){var _=s.node.contents;if(m>=s.node.usedBytes)return 0;var I=Math.min(s.node.usedBytes-m,D);return f.set(_.subarray(m,m+I),B),I},write(s,f,B,D,m,_){if(f.buffer===fx.buffer&&(_=!1),!D)return 0;var I=s.node;return I.mtime=I.ctime=Date.now(),_?(I.contents=f.subarray(B,B+D),I.usedBytes=D):I.usedBytes===0&&m===0?(I.contents=f.slice(B,B+D),I.usedBytes=D):(t0.expandFileStorage(I,m+D),I.contents.set(f.subarray(B,B+D),m),I.usedBytes=Math.max(I.usedBytes,m+D)),D},llseek(s,f,B){var D=f;if(B===1?D+=s.position:B===2&&o.isFile(s.node.mode)&&(D+=s.node.usedBytes),D<0)throw new o.ErrnoError(28);return D},mmap(s,f,B,D,m){if(!o.isFile(s.node.mode))throw new o.ErrnoError(43);var _,I,K=s.node.contents;if(!(m&2)&&K.buffer===fx.buffer)I=!1,_=K.byteOffset;else{if(I=!0,_=qA(f),!_)throw new o.ErrnoError(48);K&&((B>0||B+f<K.length)&&(K.subarray?K=K.subarray(B,B+f):K=Array.prototype.slice.call(K,B,B+f)),fx.set(K,_))}return{ptr:_,allocated:I}},msync(s,f,B,D,m){return t0.stream_ops.write(s,f,0,D,B,!1),0}}},NA=s=>{if(typeof s!="string")return s;var f={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},B=f[s];if(typeof B>"u")throw new Error(`Unknown file open mode: ${s}`);return B},Wx=s=>(typeof s=="string"&&(s=XA(s,!0)),s.subarray||(s=new Uint8Array(s)),s),sA=(s,f)=>{var B=0;return s&&(B|=365),f&&(B|=146),B},q0={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},y0={mount(s){return y0.createNode(null,"/",s.opts.fs.lstat(s.opts.root).mode,0)},createNode(s,f,B,D){if(!o.isDir(B)&&!o.isFile(B)&&!o.isLink(B))throw new o.ErrnoError(q0.EINVAL);var m=o.createNode(s,f,B);return m.node_ops=y0.node_ops,m.stream_ops=y0.stream_ops,m},realPath(s){for(var f=[];s.parent!==s;)f.push(s.name),s=s.parent;return f.push(s.mount.opts.root),f.reverse(),c0.join(...f)},node_ops:{getattr(s){var f=y0.realPath(s),B;try{B=s.mount.opts.fs.lstat(f)}catch(D){throw D.code?new o.ErrnoError(q0[D.code]):D}return{dev:B.dev,ino:B.ino,mode:B.mode,nlink:B.nlink,uid:B.uid,gid:B.gid,rdev:B.rdev,size:B.size,atime:B.atime,mtime:B.mtime,ctime:B.ctime,blksize:B.blksize,blocks:B.blocks}},setattr(s,f){var B=y0.realPath(s);try{if(f.mode!==void 0&&(s.mount.opts.fs.chmod(B,f.mode),s.mode=f.mode),f.atime||f.mtime){var D=new Date(f.atime||f.mtime),m=new Date(f.mtime||f.atime);s.mount.opts.fs.utime(B,D,m)}f.size!==void 0&&s.mount.opts.fs.truncate(B,f.size)}catch(_){throw _.code?new o.ErrnoError(q0[_.code]):_}},lookup(s,f){try{var B=c0.join2(y0.realPath(s),f),D=s.mount.opts.fs.lstat(B).mode,m=y0.createNode(s,f,D);return m}catch(_){throw _.code?new o.ErrnoError(q0[_.code]):_}},mknod(s,f,B,D){var m=y0.createNode(s,f,B,D),_=y0.realPath(m);try{o.isDir(m.mode)?m.mount.opts.fs.mkdir(_,m.mode):m.mount.opts.fs.writeFile(_,"",{mode:m.mode})}catch(I){throw I.code?new o.ErrnoError(q0[I.code]):I}return m},rename(s,f,B){var D=y0.realPath(s),m=c0.join2(y0.realPath(f),B);try{s.mount.opts.fs.rename(D,m),s.name=B}catch(_){throw _.code?new o.ErrnoError(q0[_.code]):_}},unlink(s,f){var B=c0.join2(y0.realPath(s),f);try{s.mount.opts.fs.unlink(B)}catch(D){throw D.code?new o.ErrnoError(q0[D.code]):D}},rmdir(s,f){var B=c0.join2(y0.realPath(s),f);try{s.mount.opts.fs.rmdir(B)}catch(D){throw D.code?new o.ErrnoError(q0[D.code]):D}},readdir(s){var f=y0.realPath(s);try{return s.mount.opts.fs.readdir(f)}catch(B){throw B.code?new o.ErrnoError(q0[B.code]):B}},symlink(s,f,B){var D=c0.join2(y0.realPath(s),f);try{s.mount.opts.fs.symlink(B,D)}catch(m){throw m.code?new o.ErrnoError(q0[m.code]):m}},readlink(s){var f=y0.realPath(s);try{return s.mount.opts.fs.readlink(f)}catch(B){throw B.code?new o.ErrnoError(q0[B.code]):B}}},stream_ops:{open(s){var f=y0.realPath(s.node);try{s.nfd=s.node.mount.opts.fs.open(f,s.flags)}catch(B){throw B.code?new o.ErrnoError(q0[B.code]):B}},close(s){try{s.node.mount.opts.fs.close(s.nfd)}catch(f){throw f.code?new o.ErrnoError(q0[f.code]):f}},read(s,f,B,D,m){try{return s.node.mount.opts.fs.read(s.nfd,f,B,D,m)}catch(_){throw _.code?new o.ErrnoError(q0[_.code]):_}},write(s,f,B,D,m){try{return s.node.mount.opts.fs.write(s.nfd,f,B,D,m)}catch(_){throw _.code?new o.ErrnoError(q0[_.code]):_}},llseek(s,f,B){var D=f;if(B===1)D+=s.position;else if(B===2&&o.isFile(s.node.mode))try{var m=s.node.node_ops.getattr(s.node);D+=m.size}catch(_){throw new o.ErrnoError(q0[_.code])}if(D<0)throw new o.ErrnoError(q0.EINVAL);return D}}},dA=async s=>{var f=await g(s);return new Uint8Array(f)},Oe=(...s)=>o.createDataFile(...s),dx=s=>s,Ex=0,b0=null,Re=s=>{if(Ex--,n.monitorRunDependencies?.(Ex),Ex==0&&b0){var f=b0;b0=null,f()}},Tx=s=>{Ex++,n.monitorRunDependencies?.(Ex)},ue=[],uA=async(s,f)=>{typeof Browser<"u"&&Browser.init();for(var B of ue)if(B.canHandle(f))return B.handle(s,f);return s},IA=async(s,f,B,D,m,_,I,K)=>{var F0=f?Cx.resolve(c0.join2(s,f)):s,w0=dx(`cp ${F0}`);Tx(w0);try{var Y0=B;typeof B=="string"&&(Y0=await dA(B)),Y0=await uA(Y0,F0),K?.(),_||Oe(s,f,Y0,D,m,I)}finally{Re(w0)}},Qr=(s,f,B,D,m,_,I,K,F0,w0)=>{IA(s,f,B,D,m,K,F0,w0).then(_).catch(I)},o={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,filesystems:null,syncFSRequests:0,ErrnoError:class{constructor(s){px(this,"name","ErrnoError"),this.errno=s}},FSStream:class{constructor(){px(this,"shared",{})}get object(){return this.node}set object(s){this.node=s}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(s){this.shared.flags=s}get position(){return this.shared.position}set position(s){this.shared.position=s}},FSNode:class{constructor(s,f,B,D){px(this,"node_ops",{}),px(this,"stream_ops",{}),px(this,"readMode",365),px(this,"writeMode",146),px(this,"mounted",null),s||(s=this),this.parent=s,this.mount=s.mount,this.id=o.nextInode++,this.name=f,this.mode=B,this.rdev=D,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(s){s?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(s){s?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return o.isDir(this.mode)}get isDevice(){return o.isChrdev(this.mode)}},lookupPath(s,f={}){if(!s)throw new o.ErrnoError(44);f.follow_mount??(f.follow_mount=!0),c0.isAbs(s)||(s=o.cwd()+"/"+s);x:for(var B=0;B<40;B++){for(var D=s.split("/").filter(w0=>!!w0),m=o.root,_="/",I=0;I<D.length;I++){var K=I===D.length-1;if(K&&f.parent)break;if(D[I]!=="."){if(D[I]===".."){if(_=c0.dirname(_),o.isRoot(m)){s=_+"/"+D.slice(I+1).join("/"),B--;continue x}else m=m.parent;continue}_=c0.join2(_,D[I]);try{m=o.lookupNode(m,D[I])}catch(w0){if(w0?.errno===44&&K&&f.noent_okay)return{path:_};throw w0}if(o.isMountpoint(m)&&(!K||f.follow_mount)&&(m=m.mounted.root),o.isLink(m.mode)&&(!K||f.follow)){if(!m.node_ops.readlink)throw new o.ErrnoError(52);var F0=m.node_ops.readlink(m);c0.isAbs(F0)||(F0=c0.dirname(_)+"/"+F0),s=F0+"/"+D.slice(I+1).join("/");continue x}}}return{path:_,node:m}}throw new o.ErrnoError(32)},getPath(s){for(var f;;){if(o.isRoot(s)){var B=s.mount.mountpoint;return f?B[B.length-1]!=="/"?`${B}/${f}`:B+f:B}f=f?`${s.name}/${f}`:s.name,s=s.parent}},hashName(s,f){for(var B=0,D=0;D<f.length;D++)B=(B<<5)-B+f.charCodeAt(D)|0;return(s+B>>>0)%o.nameTable.length},hashAddNode(s){var f=o.hashName(s.parent.id,s.name);s.name_next=o.nameTable[f],o.nameTable[f]=s},hashRemoveNode(s){var f=o.hashName(s.parent.id,s.name);if(o.nameTable[f]===s)o.nameTable[f]=s.name_next;else for(var B=o.nameTable[f];B;){if(B.name_next===s){B.name_next=s.name_next;break}B=B.name_next}},lookupNode(s,f){var B=o.mayLookup(s);if(B)throw new o.ErrnoError(B);for(var D=o.hashName(s.id,f),m=o.nameTable[D];m;m=m.name_next){var _=m.name;if(m.parent.id===s.id&&_===f)return m}return o.lookup(s,f)},createNode(s,f,B,D){var m=new o.FSNode(s,f,B,D);return o.hashAddNode(m),m},destroyNode(s){o.hashRemoveNode(s)},isRoot(s){return s===s.parent},isMountpoint(s){return!!s.mounted},isFile(s){return(s&61440)===32768},isDir(s){return(s&61440)===16384},isLink(s){return(s&61440)===40960},isChrdev(s){return(s&61440)===8192},isBlkdev(s){return(s&61440)===24576},isFIFO(s){return(s&61440)===4096},isSocket(s){return(s&49152)===49152},flagsToPermissionString(s){var f=["r","w","rw"][s&3];return s&512&&(f+="w"),f},nodePermissions(s,f){return o.ignorePermissions?0:f.includes("r")&&!(s.mode&292)||f.includes("w")&&!(s.mode&146)||f.includes("x")&&!(s.mode&73)?2:0},mayLookup(s){if(!o.isDir(s.mode))return 54;var f=o.nodePermissions(s,"x");return f||(s.node_ops.lookup?0:2)},mayCreate(s,f){if(!o.isDir(s.mode))return 54;try{var B=o.lookupNode(s,f);return 20}catch{}return o.nodePermissions(s,"wx")},mayDelete(s,f,B){var D;try{D=o.lookupNode(s,f)}catch(_){return _.errno}var m=o.nodePermissions(s,"wx");if(m)return m;if(B){if(!o.isDir(D.mode))return 54;if(o.isRoot(D)||o.getPath(D)===o.cwd())return 10}else if(o.isDir(D.mode))return 31;return 0},mayOpen(s,f){if(!s)return 44;if(o.isLink(s.mode))return 32;var B=o.flagsToPermissionString(f);return o.isDir(s.mode)&&(B!=="r"||f&576)?31:o.nodePermissions(s,B)},checkOpExists(s,f){if(!s)throw new o.ErrnoError(f);return s},MAX_OPEN_FDS:4096,nextfd(){for(var s=0;s<=o.MAX_OPEN_FDS;s++)if(!o.streams[s])return s;throw new o.ErrnoError(33)},getStreamChecked(s){var f=o.getStream(s);if(!f)throw new o.ErrnoError(8);return f},getStream:s=>o.streams[s],createStream(s,f=-1){return s=Object.assign(new o.FSStream,s),f==-1&&(f=o.nextfd()),s.fd=f,o.streams[f]=s,s},closeStream(s){o.streams[s]=null},dupStream(s,f=-1){var B=o.createStream(s,f);return B.stream_ops?.dup?.(B),B},doSetAttr(s,f,B){var D=s?.stream_ops.setattr,m=D?s:f;D??(D=f.node_ops.setattr),o.checkOpExists(D,63);try{D(m,B)}catch(_){throw _ instanceof RangeError?new o.ErrnoError(22):_}},chrdev_stream_ops:{open(s){var f=o.getDevice(s.node.rdev);s.stream_ops=f.stream_ops,s.stream_ops.open?.(s)},llseek(){throw new o.ErrnoError(70)}},major:s=>s>>8,minor:s=>s&255,makedev:(s,f)=>s<<8|f,registerDevice(s,f){o.devices[s]={stream_ops:f}},getDevice:s=>o.devices[s],getMounts(s){for(var f=[],B=[s];B.length;){var D=B.pop();f.push(D),B.push(...D.mounts)}return f},syncfs(s,f){typeof s=="function"&&(f=s,s=!1),o.syncFSRequests++,o.syncFSRequests>1&&L(`warning: ${o.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var B=o.getMounts(o.root.mount),D=0;function m(K){return o.syncFSRequests--,f(K)}function _(K){if(K)return _.errored?void 0:(_.errored=!0,m(K));++D>=B.length&&m(null)}for(var I of B)I.type.syncfs?I.type.syncfs(I,s,_):_(null)},mount(s,f,B){var D=B==="/",m=!B,_;if(D&&o.root)throw new o.ErrnoError(10);if(!D&&!m){var I=o.lookupPath(B,{follow_mount:!1});if(B=I.path,_=I.node,o.isMountpoint(_))throw new o.ErrnoError(10);if(!o.isDir(_.mode))throw new o.ErrnoError(54)}var K={type:s,opts:f,mountpoint:B,mounts:[]},F0=s.mount(K);return F0.mount=K,K.root=F0,D?o.root=F0:_&&(_.mounted=K,_.mount&&_.mount.mounts.push(K)),F0},unmount(s){var f=o.lookupPath(s,{follow_mount:!1});if(!o.isMountpoint(f.node))throw new o.ErrnoError(28);var B=f.node,D=B.mounted,m=o.getMounts(D);for(var[_,I]of Object.entries(o.nameTable))for(;I;){var K=I.name_next;m.includes(I.mount)&&o.destroyNode(I),I=K}B.mounted=null;var F0=B.mount.mounts.indexOf(D);B.mount.mounts.splice(F0,1)},lookup(s,f){return s.node_ops.lookup(s,f)},mknod(s,f,B){var D=o.lookupPath(s,{parent:!0}),m=D.node,_=c0.basename(s);if(!_)throw new o.ErrnoError(28);if(_==="."||_==="..")throw new o.ErrnoError(20);var I=o.mayCreate(m,_);if(I)throw new o.ErrnoError(I);if(!m.node_ops.mknod)throw new o.ErrnoError(63);return m.node_ops.mknod(m,_,f,B)},statfs(s){return o.statfsNode(o.lookupPath(s,{follow:!0}).node)},statfsStream(s){return o.statfsNode(s.node)},statfsNode(s){var f={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:o.nextInode,ffree:o.nextInode-1,fsid:42,flags:2,namelen:255};return s.node_ops.statfs&&Object.assign(f,s.node_ops.statfs(s.mount.opts.root)),f},create(s,f=438){return f&=4095,f|=32768,o.mknod(s,f,0)},mkdir(s,f=511){return f&=1023,f|=16384,o.mknod(s,f,0)},mkdirTree(s,f){var B=s.split("/"),D="";for(var m of B)if(m){(D||c0.isAbs(s))&&(D+="/"),D+=m;try{o.mkdir(D,f)}catch(_){if(_.errno!=20)throw _}}},mkdev(s,f,B){return typeof B>"u"&&(B=f,f=438),f|=8192,o.mknod(s,f,B)},symlink(s,f){if(!Cx.resolve(s))throw new o.ErrnoError(44);var B=o.lookupPath(f,{parent:!0}),D=B.node;if(!D)throw new o.ErrnoError(44);var m=c0.basename(f),_=o.mayCreate(D,m);if(_)throw new o.ErrnoError(_);if(!D.node_ops.symlink)throw new o.ErrnoError(63);return D.node_ops.symlink(D,m,s)},rename(s,f){var B=c0.dirname(s),D=c0.dirname(f),m=c0.basename(s),_=c0.basename(f),I,K,F0;if(I=o.lookupPath(s,{parent:!0}),K=I.node,I=o.lookupPath(f,{parent:!0}),F0=I.node,!K||!F0)throw new o.ErrnoError(44);if(K.mount!==F0.mount)throw new o.ErrnoError(75);var w0=o.lookupNode(K,m),Y0=Cx.relative(s,D);if(Y0.charAt(0)!==".")throw new o.ErrnoError(28);if(Y0=Cx.relative(f,B),Y0.charAt(0)!==".")throw new o.ErrnoError(55);var O0;try{O0=o.lookupNode(F0,_)}catch{}if(w0!==O0){var N0=o.isDir(w0.mode),j0=o.mayDelete(K,m,N0);if(j0)throw new o.ErrnoError(j0);if(j0=O0?o.mayDelete(F0,_,N0):o.mayCreate(F0,_),j0)throw new o.ErrnoError(j0);if(!K.node_ops.rename)throw new o.ErrnoError(63);if(o.isMountpoint(w0)||O0&&o.isMountpoint(O0))throw new o.ErrnoError(10);if(F0!==K&&(j0=o.nodePermissions(K,"w"),j0))throw new o.ErrnoError(j0);o.hashRemoveNode(w0);try{K.node_ops.rename(w0,F0,_),w0.parent=F0}catch(Bx){throw Bx}finally{o.hashAddNode(w0)}}},rmdir(s){var f=o.lookupPath(s,{parent:!0}),B=f.node,D=c0.basename(s),m=o.lookupNode(B,D),_=o.mayDelete(B,D,!0);if(_)throw new o.ErrnoError(_);if(!B.node_ops.rmdir)throw new o.ErrnoError(63);if(o.isMountpoint(m))throw new o.ErrnoError(10);B.node_ops.rmdir(B,D),o.destroyNode(m)},readdir(s){var f=o.lookupPath(s,{follow:!0}),B=f.node,D=o.checkOpExists(B.node_ops.readdir,54);return D(B)},unlink(s){var f=o.lookupPath(s,{parent:!0}),B=f.node;if(!B)throw new o.ErrnoError(44);var D=c0.basename(s),m=o.lookupNode(B,D),_=o.mayDelete(B,D,!1);if(_)throw new o.ErrnoError(_);if(!B.node_ops.unlink)throw new o.ErrnoError(63);if(o.isMountpoint(m))throw new o.ErrnoError(10);B.node_ops.unlink(B,D),o.destroyNode(m)},readlink(s){var f=o.lookupPath(s),B=f.node;if(!B)throw new o.ErrnoError(44);if(!B.node_ops.readlink)throw new o.ErrnoError(28);return B.node_ops.readlink(B)},stat(s,f){var B=o.lookupPath(s,{follow:!f}),D=B.node,m=o.checkOpExists(D.node_ops.getattr,63);return m(D)},fstat(s){var f=o.getStreamChecked(s),B=f.node,D=f.stream_ops.getattr,m=D?f:B;return D??(D=B.node_ops.getattr),o.checkOpExists(D,63),D(m)},lstat(s){return o.stat(s,!0)},doChmod(s,f,B,D){o.doSetAttr(s,f,{mode:B&4095|f.mode&-4096,ctime:Date.now(),dontFollow:D})},chmod(s,f,B){var D;if(typeof s=="string"){var m=o.lookupPath(s,{follow:!B});D=m.node}else D=s;o.doChmod(null,D,f,B)},lchmod(s,f){o.chmod(s,f,!0)},fchmod(s,f){var B=o.getStreamChecked(s);o.doChmod(B,B.node,f,!1)},doChown(s,f,B){o.doSetAttr(s,f,{timestamp:Date.now(),dontFollow:B})},chown(s,f,B,D){var m;if(typeof s=="string"){var _=o.lookupPath(s,{follow:!D});m=_.node}else m=s;o.doChown(null,m,D)},lchown(s,f,B){o.chown(s,f,B,!0)},fchown(s,f,B){var D=o.getStreamChecked(s);o.doChown(D,D.node,!1)},doTruncate(s,f,B){if(o.isDir(f.mode))throw new o.ErrnoError(31);if(!o.isFile(f.mode))throw new o.ErrnoError(28);var D=o.nodePermissions(f,"w");if(D)throw new o.ErrnoError(D);o.doSetAttr(s,f,{size:B,timestamp:Date.now()})},truncate(s,f){if(f<0)throw new o.ErrnoError(28);var B;if(typeof s=="string"){var D=o.lookupPath(s,{follow:!0});B=D.node}else B=s;o.doTruncate(null,B,f)},ftruncate(s,f){var B=o.getStreamChecked(s);if(f<0||(B.flags&2097155)===0)throw new o.ErrnoError(28);o.doTruncate(B,B.node,f)},utime(s,f,B){var D=o.lookupPath(s,{follow:!0}),m=D.node,_=o.checkOpExists(m.node_ops.setattr,63);_(m,{atime:f,mtime:B})},open(s,f,B=438){if(s==="")throw new o.ErrnoError(44);f=NA(f),f&64?B=B&4095|32768:B=0;var D,m;if(typeof s=="object")D=s;else{m=s.endsWith("/");var _=o.lookupPath(s,{follow:!(f&131072),noent_okay:!0});D=_.node,s=_.path}var I=!1;if(f&64)if(D){if(f&128)throw new o.ErrnoError(20)}else{if(m)throw new o.ErrnoError(31);D=o.mknod(s,B|511,0),I=!0}if(!D)throw new o.ErrnoError(44);if(o.isChrdev(D.mode)&&(f&=-513),f&65536&&!o.isDir(D.mode))throw new o.ErrnoError(54);if(!I){var K=o.mayOpen(D,f);if(K)throw new o.ErrnoError(K)}f&512&&!I&&o.truncate(D,0),f&=-131713;var F0=o.createStream({node:D,path:o.getPath(D),flags:f,seekable:!0,position:0,stream_ops:D.stream_ops,ungotten:[],error:!1});return F0.stream_ops.open&&F0.stream_ops.open(F0),I&&o.chmod(D,B&511),F0},close(s){if(o.isClosed(s))throw new o.ErrnoError(8);s.getdents&&(s.getdents=null);try{s.stream_ops.close&&s.stream_ops.close(s)}catch(f){throw f}finally{o.closeStream(s.fd)}s.fd=null},isClosed(s){return s.fd===null},llseek(s,f,B){if(o.isClosed(s))throw new o.ErrnoError(8);if(!s.seekable||!s.stream_ops.llseek)throw new o.ErrnoError(70);if(B!=0&&B!=1&&B!=2)throw new o.ErrnoError(28);return s.position=s.stream_ops.llseek(s,f,B),s.ungotten=[],s.position},read(s,f,B,D,m){if(D<0||m<0)throw new o.ErrnoError(28);if(o.isClosed(s))throw new o.ErrnoError(8);if((s.flags&2097155)===1)throw new o.ErrnoError(8);if(o.isDir(s.node.mode))throw new o.ErrnoError(31);if(!s.stream_ops.read)throw new o.ErrnoError(28);var _=typeof m<"u";if(!_)m=s.position;else if(!s.seekable)throw new o.ErrnoError(70);var I=s.stream_ops.read(s,f,B,D,m);return _||(s.position+=I),I},write(s,f,B,D,m,_){if(D<0||m<0)throw new o.ErrnoError(28);if(o.isClosed(s))throw new o.ErrnoError(8);if((s.flags&2097155)===0)throw new o.ErrnoError(8);if(o.isDir(s.node.mode))throw new o.ErrnoError(31);if(!s.stream_ops.write)throw new o.ErrnoError(28);s.seekable&&s.flags&1024&&o.llseek(s,0,2);var I=typeof m<"u";if(!I)m=s.position;else if(!s.seekable)throw new o.ErrnoError(70);var K=s.stream_ops.write(s,f,B,D,m,_);return I||(s.position+=K),K},mmap(s,f,B,D,m){if((D&2)!==0&&(m&2)===0&&(s.flags&2097155)!==2)throw new o.ErrnoError(2);if((s.flags&2097155)===1)throw new o.ErrnoError(2);if(!s.stream_ops.mmap)throw new o.ErrnoError(43);if(!f)throw new o.ErrnoError(28);return s.stream_ops.mmap(s,f,B,D,m)},msync(s,f,B,D,m){return s.stream_ops.msync?s.stream_ops.msync(s,f,B,D,m):0},ioctl(s,f,B){if(!s.stream_ops.ioctl)throw new o.ErrnoError(59);return s.stream_ops.ioctl(s,f,B)},readFile(s,f={}){f.flags=f.flags||0,f.encoding=f.encoding||"binary",f.encoding!=="utf8"&&f.encoding!=="binary"&&d0(`Invalid encoding type "${f.encoding}"`);var B=o.open(s,f.flags),D=o.stat(s),m=D.size,_=new Uint8Array(m);return o.read(B,_,0,m,0),f.encoding==="utf8"&&(_=CA(_)),o.close(B),_},writeFile(s,f,B={}){B.flags=B.flags||577;var D=o.open(s,B.flags,B.mode);f=Wx(f),o.write(D,f,0,f.byteLength,void 0,B.canOwn),o.close(D)},cwd:()=>o.currentPath,chdir(s){var f=o.lookupPath(s,{follow:!0});if(f.node===null)throw new o.ErrnoError(44);if(!o.isDir(f.node.mode))throw new o.ErrnoError(54);var B=o.nodePermissions(f.node,"x");if(B)throw new o.ErrnoError(B);o.currentPath=f.path},createDefaultDirectories(){o.mkdir("/tmp"),o.mkdir("/home"),o.mkdir("/home/web_user")},createDefaultDevices(){o.mkdir("/dev"),o.registerDevice(o.makedev(1,3),{read:()=>0,write:(D,m,_,I,K)=>I,llseek:()=>0}),o.mkdev("/dev/null",o.makedev(1,3)),rx.register(o.makedev(5,0),rx.default_tty_ops),rx.register(o.makedev(6,0),rx.default_tty1_ops),o.mkdev("/dev/tty",o.makedev(5,0)),o.mkdev("/dev/tty1",o.makedev(6,0));var s=new Uint8Array(1024),f=0,B=()=>(f===0&&(Me(s),f=s.byteLength),s[--f]);o.createDevice("/dev","random",B),o.createDevice("/dev","urandom",B),o.mkdir("/dev/shm"),o.mkdir("/dev/shm/tmp")},createSpecialDirectories(){o.mkdir("/proc");var s=o.mkdir("/proc/self");o.mkdir("/proc/self/fd"),o.mount({mount(){var f=o.createNode(s,"fd",16895,73);return f.stream_ops={llseek:t0.stream_ops.llseek},f.node_ops={lookup(B,D){var m=+D,_=o.getStreamChecked(m),I={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>_.path},id:m+1};return I.parent=I,I},readdir(){return Array.from(o.streams.entries()).filter(([B,D])=>D).map(([B,D])=>B.toString())}},f}},{},"/proc/self/fd")},createStandardStreams(s,f,B){s?o.createDevice("/dev","stdin",s):o.symlink("/dev/tty","/dev/stdin"),f?o.createDevice("/dev","stdout",null,f):o.symlink("/dev/tty","/dev/stdout"),B?o.createDevice("/dev","stderr",null,B):o.symlink("/dev/tty1","/dev/stderr");var D=o.open("/dev/stdin",0),m=o.open("/dev/stdout",1),_=o.open("/dev/stderr",1)},staticInit(){o.nameTable=new Array(4096),o.mount(t0,{},"/"),o.createDefaultDirectories(),o.createDefaultDevices(),o.createSpecialDirectories(),o.filesystems={MEMFS:t0,PROXYFS:y0}},init(s,f,B){o.initialized=!0,s??(s=n.stdin),f??(f=n.stdout),B??(B=n.stderr),o.createStandardStreams(s,f,B)},quit(){o.initialized=!1,b(0);for(var s of o.streams)s&&o.close(s)},findObject(s,f){var B=o.analyzePath(s,f);return B.exists?B.object:null},analyzePath(s,f){try{var B=o.lookupPath(s,{follow:!f});s=B.path}catch{}var D={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var B=o.lookupPath(s,{parent:!0});D.parentExists=!0,D.parentPath=B.path,D.parentObject=B.node,D.name=c0.basename(s),B=o.lookupPath(s,{follow:!f}),D.exists=!0,D.path=B.path,D.object=B.node,D.name=B.node.name,D.isRoot=B.path==="/"}catch(m){D.error=m.errno}return D},createPath(s,f,B,D){s=typeof s=="string"?s:o.getPath(s);for(var m=f.split("/").reverse();m.length;){var _=m.pop();if(_){var I=c0.join2(s,_);try{o.mkdir(I)}catch(K){if(K.errno!=20)throw K}s=I}}return I},createFile(s,f,B,D,m){var _=c0.join2(typeof s=="string"?s:o.getPath(s),f),I=sA(D,m);return o.create(_,I)},createDataFile(s,f,B,D,m,_){var I=f;s&&(s=typeof s=="string"?s:o.getPath(s),I=f?c0.join2(s,f):s);var K=sA(D,m),F0=o.create(I,K);if(B){B=Wx(B),o.chmod(F0,K|146);var w0=o.open(F0,577);o.write(w0,B,0,B.length,0,_),o.close(w0),o.chmod(F0,K)}},createDevice(s,f,B,D){var m,_=c0.join2(typeof s=="string"?s:o.getPath(s),f),I=sA(!!B,!!D);(m=o.createDevice).major??(m.major=64);var K=o.makedev(o.createDevice.major++,0);return o.registerDevice(K,{open(F0){F0.seekable=!1},close(F0){D?.buffer?.length&&D(10)},read(F0,w0,Y0,O0,N0){for(var j0=0,Bx=0;Bx<O0;Bx++){var wx;try{wx=B()}catch{throw new o.ErrnoError(29)}if(wx===void 0&&j0===0)throw new o.ErrnoError(6);if(wx==null)break;j0++,w0[Y0+Bx]=wx}return j0&&(F0.node.atime=Date.now()),j0},write(F0,w0,Y0,O0,N0){for(var j0=0;j0<O0;j0++)try{D(w0[Y0+j0])}catch{throw new o.ErrnoError(29)}return O0&&(F0.node.mtime=F0.node.ctime=Date.now()),j0}}),o.mkdev(_,I,K)},forceLoadFile(s){if(s.isDevice||s.isFolder||s.link||s.contents)return!0;if(globalThis.XMLHttpRequest)d0("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");else try{s.contents=S(s.url)}catch{throw new o.ErrnoError(29)}},createLazyFile(s,f,B,D,m){class _{constructor(){px(this,"lengthKnown",!1),px(this,"chunks",[])}get(N0){if(!(N0>this.length-1||N0<0)){var j0=N0%this.chunkSize,Bx=N0/this.chunkSize|0;return this.getter(Bx)[j0]}}setDataGetter(N0){this.getter=N0}cacheLength(){var N0=new XMLHttpRequest;N0.open("HEAD",B,!1),N0.send(null),N0.status>=200&&N0.status<300||N0.status===304||d0("Couldn't load "+B+". Status: "+N0.status);var j0=Number(N0.getResponseHeader("Content-length")),Bx,wx=(Bx=N0.getResponseHeader("Accept-Ranges"))&&Bx==="bytes",Hx=(Bx=N0.getResponseHeader("Content-Encoding"))&&Bx==="gzip",Xx=1024*1024;wx||(Xx=j0);var Yx=(aA,he)=>{aA>he&&d0("invalid range ("+aA+", "+he+") or no bytes requested!"),he>j0-1&&d0("only "+j0+" bytes available! programmer error!");var gx=new XMLHttpRequest;return gx.open("GET",B,!1),j0!==Xx&&gx.setRequestHeader("Range","bytes="+aA+"-"+he),gx.responseType="arraybuffer",gx.overrideMimeType&&gx.overrideMimeType("text/plain; charset=x-user-defined"),gx.send(null),gx.status>=200&&gx.status<300||gx.status===304||d0("Couldn't load "+B+". Status: "+gx.status),gx.response!==void 0?new Uint8Array(gx.response||[]):XA(gx.responseText||"",!0)},Ke=this;Ke.setDataGetter(aA=>{var he=aA*Xx,gx=(aA+1)*Xx-1;return gx=Math.min(gx,j0-1),typeof Ke.chunks[aA]>"u"&&(Ke.chunks[aA]=Yx(he,gx)),typeof Ke.chunks[aA]>"u"&&d0("doXHR failed!"),Ke.chunks[aA]}),(Hx||!j0)&&(Xx=j0=1,j0=this.getter(0).length,Xx=j0,q("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=j0,this._chunkSize=Xx,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(globalThis.XMLHttpRequest){v||d0("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var I=new _,K={isDevice:!1,contents:I}}else var K={isDevice:!1,url:B};var F0=o.createFile(s,f,K,D,m);K.contents?F0.contents=K.contents:K.url&&(F0.contents=null,F0.url=K.url),Object.defineProperties(F0,{usedBytes:{get:function(){return this.contents.length}}});var w0={};for(let[O0,N0]of Object.entries(F0.stream_ops))w0[O0]=(...j0)=>(o.forceLoadFile(F0),N0(...j0));function Y0(O0,N0,j0,Bx,wx){var Hx=O0.node.contents;if(wx>=Hx.length)return 0;var Xx=Math.min(Hx.length-wx,Bx);if(Hx.slice)for(var Yx=0;Yx<Xx;Yx++)N0[j0+Yx]=Hx[wx+Yx];else for(var Yx=0;Yx<Xx;Yx++)N0[j0+Yx]=Hx.get(wx+Yx);return Xx}return w0.read=(O0,N0,j0,Bx,wx)=>(o.forceLoadFile(F0),Y0(O0,N0,j0,Bx,wx)),w0.mmap=(O0,N0,j0,Bx,wx)=>{o.forceLoadFile(F0);var Hx=qA(N0);if(!Hx)throw new o.ErrnoError(48);return Y0(O0,fx,Hx,N0,j0),{ptr:Hx,allocated:!0}},F0.stream_ops=w0,F0}},k0={currentUmask:18,calculateAt(s,f,B){if(c0.isAbs(f))return f;var D;if(s===-100)D=o.cwd();else{var m=k0.getStreamFromFD(s);D=m.path}if(f.length==0){if(!B)throw new o.ErrnoError(44);return D}return D+"/"+f},writeStat(s,f){l0[s>>2]=f.dev,l0[s+4>>2]=f.mode,l0[s+8>>2]=f.nlink,l0[s+12>>2]=f.uid,l0[s+16>>2]=f.gid,l0[s+20>>2]=f.rdev,J0[s+24>>3]=BigInt(f.size),R0[s+32>>2]=4096,R0[s+36>>2]=f.blocks;var B=f.atime.getTime(),D=f.mtime.getTime(),m=f.ctime.getTime();return J0[s+40>>3]=BigInt(Math.floor(B/1e3)),l0[s+48>>2]=B%1e3*1e3*1e3,J0[s+56>>3]=BigInt(Math.floor(D/1e3)),l0[s+64>>2]=D%1e3*1e3*1e3,J0[s+72>>3]=BigInt(Math.floor(m/1e3)),l0[s+80>>2]=m%1e3*1e3*1e3,J0[s+88>>3]=BigInt(f.ino),0},writeStatFs(s,f){l0[s+4>>2]=f.bsize,l0[s+60>>2]=f.bsize,J0[s+8>>3]=BigInt(f.blocks),J0[s+16>>3]=BigInt(f.bfree),J0[s+24>>3]=BigInt(f.bavail),J0[s+32>>3]=BigInt(f.files),J0[s+40>>3]=BigInt(f.ffree),l0[s+48>>2]=f.fsid,l0[s+64>>2]=f.flags,l0[s+56>>2]=f.namelen},doMsync(s,f,B,D,m){if(!o.isFile(f.node.mode))throw new o.ErrnoError(43);if(D&2)return 0;var _=tA.slice(s,s+B);o.msync(f,_,m,B,D)},getStreamFromFD(s){var f=o.getStreamChecked(s);return f},varargs:void 0,getStr(s){var f=iA(s);return f}};function Ge(s,f,B,D){try{if(f=k0.getStr(f),f=k0.calculateAt(s,f),B&-8)return-28;var m=o.lookupPath(f,{follow:!0}),_=m.node;if(!_)return-44;var I="";return B&4&&(I+="r"),B&2&&(I+="w"),B&1&&(I+="x"),I&&o.nodePermissions(_,I)?-2:0}catch(K){if(typeof o>"u"||K.name!=="ErrnoError")throw K;return-K.errno}}var MA=()=>{var s=R0[+k0.varargs>>2];return k0.varargs+=4,s},DA=MA;function Zr(s,f,B){k0.varargs=B;try{var D=k0.getStreamFromFD(s);switch(f){case 0:{var m=MA();if(m<0)return-28;for(;o.streams[m];)m++;var _;return _=o.dupStream(D,m),_.fd}case 1:case 2:return 0;case 3:return D.flags;case 4:{var m=MA(),I=289792;return D.flags=D.flags&~I|m&I,0}case 12:{var m=DA(),K=0;return H0[m+K>>1]=2,0}case 13:case 14:return 0}return-28}catch(F0){if(typeof o>"u"||F0.name!=="ErrnoError")throw F0;return-F0.errno}}var De=(s,f,B)=>Le(s,tA,f,B);function Er(s,f){try{if(f===0)return-28;var B=o.cwd(),D=WA(B)+1;return f<D?-68:(De(B,s,f),D)}catch(m){if(typeof o>"u"||m.name!=="ErrnoError")throw m;return-m.errno}}function Br(s,f,B){k0.varargs=B;try{var D=k0.getStreamFromFD(s);switch(f){case 21509:return D.tty?0:-59;case 21505:{if(!D.tty)return-59;if(D.tty.ops.ioctl_tcgets){var m=D.tty.ops.ioctl_tcgets(D),_=DA();R0[_>>2]=m.c_iflag||0,R0[_+4>>2]=m.c_oflag||0,R0[_+8>>2]=m.c_cflag||0,R0[_+12>>2]=m.c_lflag||0;for(var I=0;I<32;I++)fx[_+I+17]=m.c_cc[I]||0;return 0}return 0}case 21510:case 21511:case 21512:return D.tty?0:-59;case 21506:case 21507:case 21508:{if(!D.tty)return-59;if(D.tty.ops.ioctl_tcsets){for(var _=DA(),K=R0[_>>2],F0=R0[_+4>>2],w0=R0[_+8>>2],Y0=R0[_+12>>2],O0=[],I=0;I<32;I++)O0.push(fx[_+I+17]);return D.tty.ops.ioctl_tcsets(D.tty,f,{c_iflag:K,c_oflag:F0,c_cflag:w0,c_lflag:Y0,c_cc:O0})}return 0}case 21519:{if(!D.tty)return-59;var _=DA();return R0[_>>2]=0,0}case 21520:return D.tty?-28:-59;case 21537:case 21531:{var _=DA();return o.ioctl(D,f,_)}case 21523:{if(!D.tty)return-59;if(D.tty.ops.ioctl_tiocgwinsz){var N0=D.tty.ops.ioctl_tiocgwinsz(D.tty),_=DA();H0[_>>1]=N0[0],H0[_+2>>1]=N0[1]}return 0}case 21524:return D.tty?0:-59;case 21515:return D.tty?0:-59;default:return-28}}catch(j0){if(typeof o>"u"||j0.name!=="ErrnoError")throw j0;return-j0.errno}}function xt(s,f,B,D){k0.varargs=D;try{f=k0.getStr(f),f=k0.calculateAt(s,f);var m=D?MA():0;return B&64&&(m&=~k0.currentUmask),o.open(f,B,m).fd}catch(_){if(typeof o>"u"||_.name!=="ErrnoError")throw _;return-_.errno}}function At(s,f,B,D){try{if(f=k0.getStr(f),f=k0.calculateAt(s,f),D<=0)return-28;var m=o.readlink(f),_=Math.min(D,WA(m)),I=fx[B+_];return De(m,B,D+1),fx[B+_]=I,_}catch(K){if(typeof o>"u"||K.name!=="ErrnoError")throw K;return-K.errno}}function et(s,f,B,D){try{return f=k0.getStr(f),D=k0.getStr(D),f=k0.calculateAt(s,f),D=k0.calculateAt(B,D),o.rename(f,D),0}catch(m){if(typeof o>"u"||m.name!=="ErrnoError")throw m;return-m.errno}}function pe(s){try{return s=k0.getStr(s),o.rmdir(s),0}catch(f){if(typeof o>"u"||f.name!=="ErrnoError")throw f;return-f.errno}}function Cr(s,f,B){try{if(f=k0.getStr(f),f=k0.calculateAt(s,f),!B)o.unlink(f);else if(B===512)o.rmdir(f);else return-28;return 0}catch(D){if(typeof o>"u"||D.name!=="ErrnoError")throw D;return-D.errno}}var YA=()=>{throw new Y},be=()=>performance.now(),rt=()=>Date.now(),dr=1,tt=s=>s>=0&&s<=3,QA=9007199254740992,Ue=-9007199254740992,ur=s=>s<Ue||s>QA?NaN:Number(s);function Dr(s,f,B){if(f=ur(f),!tt(s))return 28;var D;if(s===0)D=rt();else if(dr)D=be();else return 52;var m=Math.round(D*1e3*1e3);return J0[B>>3]=BigInt(m),0}var nt=()=>2147483648,pr=(s,f)=>Math.ceil(s/f)*f,it=s=>{var f=I0.buffer.byteLength,B=(s-f+65535)/65536|0;try{return I0.grow(B),Z(),1}catch{}},st=s=>{var f=tA.length;s>>>=0;var B=nt();if(s>B)return!1;for(var D=1;D<=4;D*=2){var m=f*(1+.2/D);m=Math.min(m,s+100663296);var _=Math.min(B,pr(Math.max(s,m),65536)),I=it(_);if(I)return!0}return!1};function me(s){try{var f=k0.getStreamFromFD(s);return o.close(f),0}catch(B){if(typeof o>"u"||B.name!=="ErrnoError")throw B;return B.errno}}var at=(s,f,B,D)=>{for(var m=0,_=0;_<B;_++){var I=l0[f>>2],K=l0[f+4>>2];f+=8;var F0=o.read(s,fx,I,K,D);if(F0<0)return-1;if(m+=F0,F0<K)break;typeof D<"u"&&(D+=F0)}return m};function ot(s,f,B,D){try{var m=k0.getStreamFromFD(s),_=at(m,f,B);return l0[D>>2]=_,0}catch(I){if(typeof o>"u"||I.name!=="ErrnoError")throw I;return I.errno}}function br(s,f,B,D){f=ur(f);try{if(isNaN(f))return 22;var m=k0.getStreamFromFD(s);return o.llseek(m,f,B),J0[D>>3]=BigInt(m.position),m.getdents&&f===0&&B===0&&(m.getdents=null),0}catch(_){if(typeof o>"u"||_.name!=="ErrnoError")throw _;return _.errno}}var mr=(s,f,B,D)=>{for(var m=0,_=0;_<B;_++){var I=l0[f>>2],K=l0[f+4>>2];f+=8;var F0=o.write(s,fx,I,K,D);if(F0<0)return-1;if(m+=F0,F0<K)break;typeof D<"u"&&(D+=F0)}return m};function ZA(s,f,B,D){try{var m=k0.getStreamFromFD(s),_=mr(m,f,B);return l0[D>>2]=_,0}catch(I){if(typeof o>"u"||I.name!=="ErrnoError")throw I;return I.errno}}var jr=0,xe=()=>de||jr>0,He=s=>{M=s,xe()||(n.onExit?.(s),n0=!0),j(s,new rA(s))},qx=(s,f)=>{M=s,xe()||f0(),He(s)},Ft=s=>{if(s instanceof rA||s=="unwind")return M;j(1,s)},LA=s=>V(s),Ae=s=>{var f=WA(s)+1,B=LA(f);return De(s,B,f),B},Je=[],ux=s=>{var f=Je[s];return f||(Je[s]=f=$0.get(s)),f},je=(...s)=>o.createPath(...s),ee=(...s)=>o.unlink(...s),a=(...s)=>o.createLazyFile(...s),l=(...s)=>o.createDevice(...s);if(o.createPreloadedFile=Qr,o.preloadFile=IA,o.staticInit(),n.noExitRuntime&&(de=n.noExitRuntime),n.preloadPlugins&&(ue=n.preloadPlugins),n.print&&(q=n.print),n.printErr&&(L=n.printErr),n.wasmBinary&&(R=n.wasmBinary),n.arguments&&(u=n.arguments),n.thisProgram&&(p=n.thisProgram),n.preInit)for(typeof n.preInit=="function"&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.shift()();n.callMain=Ot,n.addRunDependency=Tx,n.removeRunDependency=Re,n.FS_preloadFile=IA,n.FS_unlink=ee,n.FS_createPath=je,n.FS_createDevice=l,n.FS=o,n.FS_createDataFile=Oe,n.FS_createLazyFile=a,n.PROXYFS=y0;var d,b,k,$,G,V,o0,u0,z0,I0,$0;function m0(s){d=n._main=s.__main_argc_argv,b=s.fflush,k=s.__funcs_on_exit,$=s.setThrew,G=s._emscripten_stack_restore,V=s._emscripten_stack_alloc,o0=s.emscripten_stack_get_current,u0=I0=s.memory,z0=$0=s.__indirect_function_table}var tx={__assert_fail:TA,__syscall_faccessat:Ge,__syscall_fcntl64:Zr,__syscall_getcwd:Er,__syscall_ioctl:Br,__syscall_openat:xt,__syscall_readlinkat:At,__syscall_renameat:et,__syscall_rmdir:pe,__syscall_unlinkat:Cr,_emscripten_throw_longjmp:YA,clock_time_get:Dr,emscripten_resize_heap:st,fd_close:me,fd_read:ot,fd_seek:br,fd_write:ZA,invoke_i:re,invoke_ii:Ox,invoke_iii:Rx,invoke_iiid:Yn,invoke_iiii:Ux,invoke_iiiii:lx,invoke_iiiiii:Qn,invoke_iijii:Wn,invoke_v:hx,invoke_vi:Xn,invoke_vii:Nx,invoke_viii:Lt,invoke_viiii:pA,invoke_viiiii:Mt};function hx(s){var f=g0();try{ux(s)()}catch(B){if(sx(f),!(B instanceof O))throw B;$(1,0)}}function Nx(s,f,B){var D=g0();try{ux(s)(f,B)}catch(m){if(sx(D),!(m instanceof O))throw m;$(1,0)}}function Ox(s,f){var B=g0();try{return ux(s)(f)}catch(D){if(sx(B),!(D instanceof O))throw D;$(1,0)}}function Rx(s,f,B){var D=g0();try{return ux(s)(f,B)}catch(m){if(sx(D),!(m instanceof O))throw m;$(1,0)}}function re(s){var f=g0();try{return ux(s)()}catch(B){if(sx(f),!(B instanceof O))throw B;$(1,0)}}function Ux(s,f,B,D){var m=g0();try{return ux(s)(f,B,D)}catch(_){if(sx(m),!(_ instanceof O))throw _;$(1,0)}}function pA(s,f,B,D,m){var _=g0();try{ux(s)(f,B,D,m)}catch(I){if(sx(_),!(I instanceof O))throw I;$(1,0)}}function lx(s,f,B,D,m){var _=g0();try{return ux(s)(f,B,D,m)}catch(I){if(sx(_),!(I instanceof O))throw I;$(1,0)}}function Mt(s,f,B,D,m,_){var I=g0();try{ux(s)(f,B,D,m,_)}catch(K){if(sx(I),!(K instanceof O))throw K;$(1,0)}}function Wn(s,f,B,D,m){var _=g0();try{return ux(s)(f,B,D,m)}catch(I){if(sx(_),!(I instanceof O))throw I;$(1,0)}}function Xn(s,f){var B=g0();try{ux(s)(f)}catch(D){if(sx(B),!(D instanceof O))throw D;$(1,0)}}function Lt(s,f,B,D){var m=g0();try{ux(s)(f,B,D)}catch(_){if(sx(m),!(_ instanceof O))throw _;$(1,0)}}function Yn(s,f,B,D){var m=g0();try{return ux(s)(f,B,D)}catch(_){if(sx(m),!(_ instanceof O))throw _;$(1,0)}}function Qn(s,f,B,D,m,_){var I=g0();try{return ux(s)(f,B,D,m,_)}catch(K){if(sx(I),!(K instanceof O))throw K;$(1,0)}}function Ot(s=[]){var f=d;s.unshift(p);var B=s.length,D=LA((B+1)*4),m=D;for(var _ of s)l0[m>>2]=Ae(_),m+=4;l0[m>>2]=0;try{var I=f(B,D);return qx(I,!0),I}catch(K){return Ft(K)}}function vt(s=u){if(Ex>0){b0=vt;return}if(i0(),Ex>0){b0=vt;return}function f(){if(n.calledRun=!0,!n0){U(),H?.(n),n.onRuntimeInitialized?.();var B=n.noInitialRun||!0;B||Ot(s),B0()}}n.setStatus?(n.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>n.setStatus(""),1),f()},1)):f()}var ze;return ze=await ex(),vt(),s0?i=n:i=new Promise((s,f)=>{H=s,J=f}),i}})();typeof x=="object"&&typeof A=="object"?(A.exports=e,A.exports.default=e):typeof define=="function"&&define.amd&&define([],()=>e)}}),Bc=Wa({"wasm/bin/pawndbg.js"(x,A){"use strict";var e=(()=>{var r=globalThis.document?.currentScript?.src;return async function(t={}){var i,n=t,F=!!globalThis.window,v=!!globalThis.WorkerGlobalScope,E=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer",u=[],p="./this.program",j=(a,l)=>{throw l};typeof __filename<"u"?r=__filename:v&&(r=self.location.href);var w="",g,S;if(E){var T=require("fs");w=__dirname+"/",S=a=>{a=y(a)?new URL(a):a;var l=T.readFileSync(a);return l},g=async(a,l=!0)=>{a=y(a)?new URL(a):a;var d=T.readFileSync(a,l?void 0:"utf8");return d},process.argv.length>1&&(p=process.argv[1].replace(/\\/g,"/")),u=process.argv.slice(2),j=(a,l)=>{throw process.exitCode=a,l}}else if(F||v){try{w=new URL(".",r).href}catch{}v&&(S=a=>{var l=new XMLHttpRequest;return l.open("GET",a,!1),l.responseType="arraybuffer",l.send(null),new Uint8Array(l.response)}),g=async a=>{if(y(a))return new Promise((d,b)=>{var k=new XMLHttpRequest;k.open("GET",a,!0),k.responseType="arraybuffer",k.onload=()=>{if(k.status==200||k.status==0&&k.response){d(k.response);return}b(k.status)},k.onerror=b,k.send(null)});var l=await fetch(a,{credentials:"same-origin"});if(l.ok)return l.arrayBuffer();throw new Error(l.status+" : "+l.url)}}var q=console.log.bind(console),L=console.error.bind(console),R,n0=!1,M,y=a=>a.startsWith("file://");class O{}class Y extends O{}function W(a){for(var l=0,d=a.length,b=new Uint8Array(d),k;l<d;++l)k=a.charCodeAt(l),b[l]=~k>>8&k;return b}var H,J,s0=!1,r0=!1;function Z(){var a=LA.buffer;fx=new Int8Array(a),H0=new Int16Array(a),tA=new Uint8Array(a),Vr=new Uint16Array(a),R0=new Int32Array(a),l0=new Uint32Array(a),zr=new Float32Array(a),Kr=new Float64Array(a),J0=new BigInt64Array(a),Wr=new BigUint64Array(a)}function i0(){if(n.preRun)for(typeof n.preRun=="function"&&(n.preRun=[n.preRun]);n.preRun.length;)cr(n.preRun.shift());$A(Vx)}function U(){s0=!0,!n.noFSInit&&!o.initialized&&o.init(),rx.init(),ee.__wasm_call_ctors(),o.ignorePermissions=!1}function v0(){}function f0(){mr(),o.quit(),rx.shutdown(),r0=!0}function B0(){if(n.postRun)for(typeof n.postRun=="function"&&(n.postRun=[n.postRun]);n.postRun.length;)lr(n.postRun.shift());$A(PA)}function d0(a){n.onAbort?.(a),a=`Aborted(${a})`,L(a),n0=!0,a+=". Build with -sASSERTIONS for more info.";var l=new WebAssembly.RuntimeError(a);throw J?.(l),l}var T0;function L0(){return W(`\0asm\0\0\0\xB4\`\x7F\x7F\`\x7F\0\`\x7F\x7F\x7F\x7F\`\x7F\x7F\x7F\`\x7F\x7F\x7F\0\`\x7F~~~~\0\`\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F\0\`\x7F~\x7F~\`\x7F\x7F\x7F\x7F\0\`\0\0\`\0\x7F\`\x7F~~\x7F\0\`\x7F|\x7F\x7F\x7F\x7F\x7F\`\x7F~\x7F\x7F\x7F\`\x7F\x7F|\0\`\x7F~\0\`\x7F|\`\x7F~~~\0\`\x7F~\`|\x7F|\`\x7F\x7F\x7F\x7F\x7F\x7F\x7F\`~\x7F\x7F\`\x7F\x7F\x7F\x7F\x7F\0\`\x7F\x7F~\0\`~~~~\x7F\`~~~\x7F\`\x7F|\0\xFD env\r__assert_fail\0 env__syscall_openat\0env__syscall_fcntl64\0env__syscall_ioctl\0wasi_snapshot_preview1\bfd_write\0wasi_snapshot_preview1\x07fd_read\0wasi_snapshot_preview1\bfd_close\0\0wasi_snapshot_preview1\x07fd_seek\0envemscripten_resize_heap\0\0VU
1163
1163
  
1164
1164
  \0\x07\v\v\0\b\0\0 \x07\0 \0\b\0\0\f\0\0\r\0\0\x07\0\f\x1B\x07\x07\f\0\v
1165
1165
  p\r\r\x07\x82\x80\x80\b\x7FA\x80\xAC\v\x07\xBD memory\0__wasm_call_ctors\0 __main_argc_argv\0
@@ -1523,29 +1523,29 @@ Usage: pawndbg -f <mapfile> [options]
1523
1523
  \v\f\r\x1B !"#\xFF\xFF\xFF\xFF\xFF\xFF
1524
1524
  \v\f\r\x1B !"#\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x07\0A\xC0\x1B\v\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0A\xE4\x1B\v\x07\0A\xFC\x1B\v
1525
1525
  \0\0\0\0\0\0\xEC\0A\x94\v\0A\xA4\v\b\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0A\xE8\v \xD8\r\0\0\0\0\0\0\0A\xFC\v\b\0A\x94\v\0\0\0 \0\0\0\xF8\0\0\0\0A\xAC\v\0A\xBC\v\xFF\xFF\xFF\xFF
1526
- \0A\x80\v\vp\0\0D\0\0\0`)}function nx(s){return s}async function Ix(s){return s}async function lA(s,v){try{var c=await Ix(s),u=await WebAssembly.instantiate(c,v);return u}catch(g){R(`failed to asynchronously prepare wasm: ${g}`),D0(g)}}async function cA(s,v,c){return lA(v,c)}function rx(){var s={env:pr,wasi_snapshot_preview1:pr};return s}async function W0(){function s(w,G){return GA=w.exports,OA(GA),Z(),GA}function v(w){return s(w.instance)}var c=rx();if(t.instantiateWasm)return new Promise((w,G)=>{t.instantiateWasm(c,(V,a0)=>{w(s(V,a0))})});q0??(q0=I0());var u=await cA(O,q0,c),g=v(u);return g}class Kx{constructor(v){Bx(this,"name","ExitStatus"),this.message=`Program terminated with exit(${v})`,this.status=v}}var O0,L0,G0,ex,Fe,ve,Ee,E0,Be,zx,DA=s=>{for(;s.length>0;)s.shift()(t)},dA=[],Tr=s=>dA.push(s),Mx=[],Nr=s=>Mx.push(s),Ar=!1,xx=globalThis.TextDecoder&&new TextDecoder,g0=(s,v,c,u)=>{var g=v+c;if(u)return g;for(;s[v]&&!(v>=g);)++v;return v},Jx=(s,v=0,c,u)=>{var g=g0(s,v,c,u);if(g-v>16&&s.buffer&&xx)return xx.decode(s.subarray(v,g));for(var w="";v<g;){var G=s[v++];if(!(G&128)){w+=String.fromCharCode(G);continue}var V=s[v++]&63;if((G&224)==192){w+=String.fromCharCode((G&31)<<6|V);continue}var a0=s[v++]&63;if((G&240)==224?G=(G&15)<<12|V<<6|a0:G=(G&7)<<18|V<<12|a0<<6|s[v++]&63,G<65536)w+=String.fromCharCode(G);else{var d0=G-65536;w+=String.fromCharCode(55296|d0>>10,56320|d0&1023)}}return w},Cx=(s,v,c)=>s?Jx(zx,s,v,c):"",eA=(s,v,c,u)=>D0(`Assertion failed: ${Cx(s)}, at: `+[v?Cx(v):"unknown filename",c,u?Cx(u):"unknown function"]),Vx=()=>{var s=L0[+k0.varargs>>2];return k0.varargs+=4,s},uA=Vx,B0={isAbs:s=>s.charAt(0)==="/",splitPath:s=>{var v=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return v.exec(s).slice(1)},normalizeArray:(s,v)=>{for(var c=0,u=s.length-1;u>=0;u--){var g=s[u];g==="."?s.splice(u,1):g===".."?(s.splice(u,1),c++):c&&(s.splice(u,1),c--)}if(v)for(;c;c--)s.unshift("..");return s},normalize:s=>{var v=B0.isAbs(s),c=s.slice(-1)==="/";return s=B0.normalizeArray(s.split("/").filter(u=>!!u),!v).join("/"),!s&&!v&&(s="."),s&&c&&(s+="/"),(v?"/":"")+s},dirname:s=>{var v=B0.splitPath(s),c=v[0],u=v[1];return!c&&!u?".":(u&&(u=u.slice(0,-1)),c+u)},basename:s=>s&&s.match(/([^\/]+|\/)\/*$/)[1],join:(...s)=>B0.normalize(s.join("/")),join2:(s,v)=>B0.normalize(s+"/"+v)},fe=()=>{if(D){var s=require("crypto");return v=>s.randomFillSync(v)}return v=>(crypto.getRandomValues(v),0)},Cr=s=>(Cr=fe())(s),ox={resolve:(...s)=>{for(var v="",c=!1,u=s.length-1;u>=-1&&!c;u--){var g=u>=0?s[u]:a.cwd();if(typeof g!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!g)return"";v=g+"/"+v,c=B0.isAbs(g)}return v=B0.normalizeArray(v.split("/").filter(w=>!!w),!c).join("/"),(c?"/":"")+v||"."},relative:(s,v)=>{s=ox.resolve(s).slice(1),v=ox.resolve(v).slice(1);function c(d0){for(var U0=0;U0<d0.length&&d0[U0]==="";U0++);for(var T0=d0.length-1;T0>=0&&d0[T0]==="";T0--);return U0>T0?[]:d0.slice(U0,T0-U0+1)}for(var u=c(s.split("/")),g=c(v.split("/")),w=Math.min(u.length,g.length),G=w,V=0;V<w;V++)if(u[V]!==g[V]){G=V;break}for(var a0=[],V=G;V<u.length;V++)a0.push("..");return a0=a0.concat(g.slice(G)),a0.join("/")}},Px=[],TA=s=>{for(var v=0,c=0;c<s.length;++c){var u=s.charCodeAt(c);u<=127?v++:u<=2047?v+=2:u>=55296&&u<=57343?(v+=4,++c):v+=3}return v},lr=(s,v,c,u)=>{if(!(u>0))return 0;for(var g=c,w=c+u-1,G=0;G<s.length;++G){var V=s.codePointAt(G);if(V<=127){if(c>=w)break;v[c++]=V}else if(V<=2047){if(c+1>=w)break;v[c++]=192|V>>6,v[c++]=128|V&63}else if(V<=65535){if(c+2>=w)break;v[c++]=224|V>>12,v[c++]=128|V>>6&63,v[c++]=128|V&63}else{if(c+3>=w)break;v[c++]=240|V>>18,v[c++]=128|V>>12&63,v[c++]=128|V>>6&63,v[c++]=128|V&63,G++}}return v[c]=0,c-g},NA=(s,v,c)=>{var u=c>0?c:TA(s)+1,g=new Array(u),w=lr(s,g,0,g.length);return v&&(g.length=w),g},Ce=()=>{if(!Px.length){var s=null;if(D){var v=256,c=Buffer.alloc(v),u=0,g=process.stdin.fd;try{u=P.readSync(g,c,0,v)}catch(w){if(w.toString().includes("EOF"))u=0;else throw w}u>0&&(s=c.slice(0,u).toString("utf-8"))}else globalThis.window?.prompt&&(s=window.prompt("Input: "),s!==null&&(s+=`
1527
- `));if(!s)return null;Px=NA(s,!0)}return Px.shift()},X0={ttys:[],init(){},shutdown(){},register(s,v){X0.ttys[s]={input:[],output:[],ops:v},a.registerDevice(s,X0.stream_ops)},stream_ops:{open(s){var v=X0.ttys[s.node.rdev];if(!v)throw new a.ErrnoError(43);s.tty=v,s.seekable=!1},close(s){s.tty.ops.fsync(s.tty)},fsync(s){s.tty.ops.fsync(s.tty)},read(s,v,c,u,g){if(!s.tty||!s.tty.ops.get_char)throw new a.ErrnoError(60);for(var w=0,G=0;G<u;G++){var V;try{V=s.tty.ops.get_char(s.tty)}catch{throw new a.ErrnoError(29)}if(V===void 0&&w===0)throw new a.ErrnoError(6);if(V==null)break;w++,v[c+G]=V}return w&&(s.node.atime=Date.now()),w},write(s,v,c,u,g){if(!s.tty||!s.tty.ops.put_char)throw new a.ErrnoError(60);try{for(var w=0;w<u;w++)s.tty.ops.put_char(s.tty,v[c+w])}catch{throw new a.ErrnoError(29)}return u&&(s.node.mtime=s.node.ctime=Date.now()),w}},default_tty_ops:{get_char(s){return Ce()},put_char(s,v){v===null||v===10?(N(Jx(s.output)),s.output=[]):v!=0&&s.output.push(v)},fsync(s){s.output?.length>0&&(N(Jx(s.output)),s.output=[])},ioctl_tcgets(s){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(s,v,c){return 0},ioctl_tiocgwinsz(s){return[24,80]}},default_tty1_ops:{put_char(s,v){v===null||v===10?(R(Jx(s.output)),s.output=[]):v!=0&&s.output.push(v)},fsync(s){s.output?.length>0&&(R(Jx(s.output)),s.output=[])}}},bA=s=>{D0()},e0={ops_table:null,mount(s){return e0.createNode(null,"/",16895,0)},createNode(s,v,c,u){if(a.isBlkdev(c)||a.isFIFO(c))throw new a.ErrnoError(63);e0.ops_table||(e0.ops_table={dir:{node:{getattr:e0.node_ops.getattr,setattr:e0.node_ops.setattr,lookup:e0.node_ops.lookup,mknod:e0.node_ops.mknod,rename:e0.node_ops.rename,unlink:e0.node_ops.unlink,rmdir:e0.node_ops.rmdir,readdir:e0.node_ops.readdir,symlink:e0.node_ops.symlink},stream:{llseek:e0.stream_ops.llseek}},file:{node:{getattr:e0.node_ops.getattr,setattr:e0.node_ops.setattr},stream:{llseek:e0.stream_ops.llseek,read:e0.stream_ops.read,write:e0.stream_ops.write,mmap:e0.stream_ops.mmap,msync:e0.stream_ops.msync}},link:{node:{getattr:e0.node_ops.getattr,setattr:e0.node_ops.setattr,readlink:e0.node_ops.readlink},stream:{}},chrdev:{node:{getattr:e0.node_ops.getattr,setattr:e0.node_ops.setattr},stream:a.chrdev_stream_ops}});var g=a.createNode(s,v,c,u);return a.isDir(g.mode)?(g.node_ops=e0.ops_table.dir.node,g.stream_ops=e0.ops_table.dir.stream,g.contents={}):a.isFile(g.mode)?(g.node_ops=e0.ops_table.file.node,g.stream_ops=e0.ops_table.file.stream,g.usedBytes=0,g.contents=e0.emptyFileContents??(e0.emptyFileContents=new Uint8Array(0))):a.isLink(g.mode)?(g.node_ops=e0.ops_table.link.node,g.stream_ops=e0.ops_table.link.stream):a.isChrdev(g.mode)&&(g.node_ops=e0.ops_table.chrdev.node,g.stream_ops=e0.ops_table.chrdev.stream),g.atime=g.mtime=g.ctime=Date.now(),s&&(s.contents[v]=g,s.atime=s.mtime=s.ctime=g.atime),g},getFileDataAsTypedArray(s){return s.contents.subarray(0,s.usedBytes)},expandFileStorage(s,v){var c=s.contents.length;if(!(c>=v)){var u=1024*1024;v=Math.max(v,c*(c<u?2:1.125)>>>0),c&&(v=Math.max(v,256));var g=e0.getFileDataAsTypedArray(s);s.contents=new Uint8Array(v),s.contents.set(g)}},resizeFileStorage(s,v){if(s.usedBytes!=v){var c=s.contents;s.contents=new Uint8Array(v),s.contents.set(c.subarray(0,Math.min(v,s.usedBytes))),s.usedBytes=v}},node_ops:{getattr(s){var v={};return v.dev=a.isChrdev(s.mode)?s.id:1,v.ino=s.id,v.mode=s.mode,v.nlink=1,v.uid=0,v.gid=0,v.rdev=s.rdev,a.isDir(s.mode)?v.size=4096:a.isFile(s.mode)?v.size=s.usedBytes:a.isLink(s.mode)?v.size=s.link.length:v.size=0,v.atime=new Date(s.atime),v.mtime=new Date(s.mtime),v.ctime=new Date(s.ctime),v.blksize=4096,v.blocks=Math.ceil(v.size/v.blksize),v},setattr(s,v){for(let c of["mode","atime","mtime","ctime"])v[c]!=null&&(s[c]=v[c]);v.size!==void 0&&e0.resizeFileStorage(s,v.size)},lookup(s,v){throw e0.doesNotExistError||(e0.doesNotExistError=new a.ErrnoError(44),e0.doesNotExistError.stack="<generic error, no stack>"),e0.doesNotExistError},mknod(s,v,c,u){return e0.createNode(s,v,c,u)},rename(s,v,c){var u;try{u=a.lookupNode(v,c)}catch{}if(u){if(a.isDir(s.mode))for(var g in u.contents)throw new a.ErrnoError(55);a.hashRemoveNode(u)}delete s.parent.contents[s.name],v.contents[c]=s,s.name=c,v.ctime=v.mtime=s.parent.ctime=s.parent.mtime=Date.now()},unlink(s,v){delete s.contents[v],s.ctime=s.mtime=Date.now()},rmdir(s,v){var c=a.lookupNode(s,v);for(var u in c.contents)throw new a.ErrnoError(55);delete s.contents[v],s.ctime=s.mtime=Date.now()},readdir(s){return[".","..",...Object.keys(s.contents)]},symlink(s,v,c){var u=e0.createNode(s,v,41471,0);return u.link=c,u},readlink(s){if(!a.isLink(s.mode))throw new a.ErrnoError(28);return s.link}},stream_ops:{read(s,v,c,u,g){var w=s.node.contents;if(g>=s.node.usedBytes)return 0;var G=Math.min(s.node.usedBytes-g,u);return v.set(w.subarray(g,g+G),c),G},write(s,v,c,u,g,w){if(v.buffer===ex.buffer&&(w=!1),!u)return 0;var G=s.node;return G.mtime=G.ctime=Date.now(),w?(G.contents=v.subarray(c,c+u),G.usedBytes=u):G.usedBytes===0&&g===0?(G.contents=v.slice(c,c+u),G.usedBytes=u):(e0.expandFileStorage(G,g+u),G.contents.set(v.subarray(c,c+u),g),G.usedBytes=Math.max(G.usedBytes,g+u)),u},llseek(s,v,c){var u=v;if(c===1?u+=s.position:c===2&&a.isFile(s.node.mode)&&(u+=s.node.usedBytes),u<0)throw new a.ErrnoError(28);return u},mmap(s,v,c,u,g){if(!a.isFile(s.node.mode))throw new a.ErrnoError(43);var w,G,V=s.node.contents;if(!(g&2)&&V.buffer===ex.buffer)G=!1,w=V.byteOffset;else{if(G=!0,w=bA(v),!w)throw new a.ErrnoError(48);V&&((c>0||c+v<V.length)&&(V.subarray?V=V.subarray(c,c+v):V=Array.prototype.slice.call(V,c,c+v)),ex.set(V,w))}return{ptr:w,allocated:G}},msync(s,v,c,u,g){return e0.stream_ops.write(s,v,0,u,c,!1),0}}},pA=s=>{if(typeof s!="string")return s;var v={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},c=v[s];if(typeof c>"u")throw new Error(`Unknown file open mode: ${s}`);return c},Lx=s=>(typeof s=="string"&&(s=NA(s,!0)),s.subarray||(s=new Uint8Array(s)),s),Wx=(s,v)=>{var c=0;return s&&(c|=365),v&&(c|=146),c},S0={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},y0={mount(s){return y0.createNode(null,"/",s.opts.fs.lstat(s.opts.root).mode,0)},createNode(s,v,c,u){if(!a.isDir(c)&&!a.isFile(c)&&!a.isLink(c))throw new a.ErrnoError(S0.EINVAL);var g=a.createNode(s,v,c);return g.node_ops=y0.node_ops,g.stream_ops=y0.stream_ops,g},realPath(s){for(var v=[];s.parent!==s;)v.push(s.name),s=s.parent;return v.push(s.mount.opts.root),v.reverse(),B0.join(...v)},node_ops:{getattr(s){var v=y0.realPath(s),c;try{c=s.mount.opts.fs.lstat(v)}catch(u){throw u.code?new a.ErrnoError(S0[u.code]):u}return{dev:c.dev,ino:c.ino,mode:c.mode,nlink:c.nlink,uid:c.uid,gid:c.gid,rdev:c.rdev,size:c.size,atime:c.atime,mtime:c.mtime,ctime:c.ctime,blksize:c.blksize,blocks:c.blocks}},setattr(s,v){var c=y0.realPath(s);try{if(v.mode!==void 0&&(s.mount.opts.fs.chmod(c,v.mode),s.mode=v.mode),v.atime||v.mtime){var u=new Date(v.atime||v.mtime),g=new Date(v.mtime||v.atime);s.mount.opts.fs.utime(c,u,g)}v.size!==void 0&&s.mount.opts.fs.truncate(c,v.size)}catch(w){throw w.code?new a.ErrnoError(S0[w.code]):w}},lookup(s,v){try{var c=B0.join2(y0.realPath(s),v),u=s.mount.opts.fs.lstat(c).mode,g=y0.createNode(s,v,u);return g}catch(w){throw w.code?new a.ErrnoError(S0[w.code]):w}},mknod(s,v,c,u){var g=y0.createNode(s,v,c,u),w=y0.realPath(g);try{a.isDir(g.mode)?g.mount.opts.fs.mkdir(w,g.mode):g.mount.opts.fs.writeFile(w,"",{mode:g.mode})}catch(G){throw G.code?new a.ErrnoError(S0[G.code]):G}return g},rename(s,v,c){var u=y0.realPath(s),g=B0.join2(y0.realPath(v),c);try{s.mount.opts.fs.rename(u,g),s.name=c}catch(w){throw w.code?new a.ErrnoError(S0[w.code]):w}},unlink(s,v){var c=B0.join2(y0.realPath(s),v);try{s.mount.opts.fs.unlink(c)}catch(u){throw u.code?new a.ErrnoError(S0[u.code]):u}},rmdir(s,v){var c=B0.join2(y0.realPath(s),v);try{s.mount.opts.fs.rmdir(c)}catch(u){throw u.code?new a.ErrnoError(S0[u.code]):u}},readdir(s){var v=y0.realPath(s);try{return s.mount.opts.fs.readdir(v)}catch(c){throw c.code?new a.ErrnoError(S0[c.code]):c}},symlink(s,v,c){var u=B0.join2(y0.realPath(s),v);try{s.mount.opts.fs.symlink(c,u)}catch(g){throw g.code?new a.ErrnoError(S0[g.code]):g}},readlink(s){var v=y0.realPath(s);try{return s.mount.opts.fs.readlink(v)}catch(c){throw c.code?new a.ErrnoError(S0[c.code]):c}}},stream_ops:{open(s){var v=y0.realPath(s.node);try{s.nfd=s.node.mount.opts.fs.open(v,s.flags)}catch(c){throw c.code?new a.ErrnoError(S0[c.code]):c}},close(s){try{s.node.mount.opts.fs.close(s.nfd)}catch(v){throw v.code?new a.ErrnoError(S0[v.code]):v}},read(s,v,c,u,g){try{return s.node.mount.opts.fs.read(s.nfd,v,c,u,g)}catch(w){throw w.code?new a.ErrnoError(S0[w.code]):w}},write(s,v,c,u,g){try{return s.node.mount.opts.fs.write(s.nfd,v,c,u,g)}catch(w){throw w.code?new a.ErrnoError(S0[w.code]):w}},llseek(s,v,c){var u=v;if(c===1)u+=s.position;else if(c===2&&a.isFile(s.node.mode))try{var g=s.node.node_ops.getattr(s.node);u+=g.size}catch(w){throw new a.ErrnoError(S0[w.code])}if(u<0)throw new a.ErrnoError(S0.EINVAL);return u}}},tA=async s=>{var v=await y(s);return new Uint8Array(v)},cr=(...s)=>a.createDataFile(...s),Fx=s=>s,ix=0,p0=null,Dr=s=>{if(ix--,t.monitorRunDependencies?.(ix),ix==0&&p0){var v=p0;p0=null,v()}},hx=s=>{ix++,t.monitorRunDependencies?.(ix)},rr=[],nA=async(s,v)=>{typeof Browser<"u"&&Browser.init();for(var c of rr)if(c.canHandle(v))return c.handle(s,v);return s},jA=async(s,v,c,u,g,w,G,V)=>{var a0=v?ox.resolve(B0.join2(s,v)):s,d0=Fx(`cp ${a0}`);hx(d0);try{var U0=c;typeof c=="string"&&(U0=await tA(c)),U0=await nA(U0,a0),V?.(),w||cr(s,v,U0,u,g,G)}finally{Dr(d0)}},le=(s,v,c,u,g,w,G,V,a0,d0)=>{jA(s,v,c,u,g,V,a0,d0).then(w).catch(G)},a={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,filesystems:null,syncFSRequests:0,ErrnoError:class{constructor(s){Bx(this,"name","ErrnoError"),this.errno=s}},FSStream:class{constructor(){Bx(this,"shared",{})}get object(){return this.node}set object(s){this.node=s}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(s){this.shared.flags=s}get position(){return this.shared.position}set position(s){this.shared.position=s}},FSNode:class{constructor(s,v,c,u){Bx(this,"node_ops",{}),Bx(this,"stream_ops",{}),Bx(this,"readMode",365),Bx(this,"writeMode",146),Bx(this,"mounted",null),s||(s=this),this.parent=s,this.mount=s.mount,this.id=a.nextInode++,this.name=v,this.mode=c,this.rdev=u,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(s){s?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(s){s?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return a.isDir(this.mode)}get isDevice(){return a.isChrdev(this.mode)}},lookupPath(s,v={}){if(!s)throw new a.ErrnoError(44);v.follow_mount??(v.follow_mount=!0),B0.isAbs(s)||(s=a.cwd()+"/"+s);x:for(var c=0;c<40;c++){for(var u=s.split("/").filter(d0=>!!d0),g=a.root,w="/",G=0;G<u.length;G++){var V=G===u.length-1;if(V&&v.parent)break;if(u[G]!=="."){if(u[G]===".."){if(w=B0.dirname(w),a.isRoot(g)){s=w+"/"+u.slice(G+1).join("/"),c--;continue x}else g=g.parent;continue}w=B0.join2(w,u[G]);try{g=a.lookupNode(g,u[G])}catch(d0){if(d0?.errno===44&&V&&v.noent_okay)return{path:w};throw d0}if(a.isMountpoint(g)&&(!V||v.follow_mount)&&(g=g.mounted.root),a.isLink(g.mode)&&(!V||v.follow)){if(!g.node_ops.readlink)throw new a.ErrnoError(52);var a0=g.node_ops.readlink(g);B0.isAbs(a0)||(a0=B0.dirname(w)+"/"+a0),s=a0+"/"+u.slice(G+1).join("/");continue x}}}return{path:w,node:g}}throw new a.ErrnoError(32)},getPath(s){for(var v;;){if(a.isRoot(s)){var c=s.mount.mountpoint;return v?c[c.length-1]!=="/"?`${c}/${v}`:c+v:c}v=v?`${s.name}/${v}`:s.name,s=s.parent}},hashName(s,v){for(var c=0,u=0;u<v.length;u++)c=(c<<5)-c+v.charCodeAt(u)|0;return(s+c>>>0)%a.nameTable.length},hashAddNode(s){var v=a.hashName(s.parent.id,s.name);s.name_next=a.nameTable[v],a.nameTable[v]=s},hashRemoveNode(s){var v=a.hashName(s.parent.id,s.name);if(a.nameTable[v]===s)a.nameTable[v]=s.name_next;else for(var c=a.nameTable[v];c;){if(c.name_next===s){c.name_next=s.name_next;break}c=c.name_next}},lookupNode(s,v){var c=a.mayLookup(s);if(c)throw new a.ErrnoError(c);for(var u=a.hashName(s.id,v),g=a.nameTable[u];g;g=g.name_next){var w=g.name;if(g.parent.id===s.id&&w===v)return g}return a.lookup(s,v)},createNode(s,v,c,u){var g=new a.FSNode(s,v,c,u);return a.hashAddNode(g),g},destroyNode(s){a.hashRemoveNode(s)},isRoot(s){return s===s.parent},isMountpoint(s){return!!s.mounted},isFile(s){return(s&61440)===32768},isDir(s){return(s&61440)===16384},isLink(s){return(s&61440)===40960},isChrdev(s){return(s&61440)===8192},isBlkdev(s){return(s&61440)===24576},isFIFO(s){return(s&61440)===4096},isSocket(s){return(s&49152)===49152},flagsToPermissionString(s){var v=["r","w","rw"][s&3];return s&512&&(v+="w"),v},nodePermissions(s,v){return a.ignorePermissions?0:v.includes("r")&&!(s.mode&292)||v.includes("w")&&!(s.mode&146)||v.includes("x")&&!(s.mode&73)?2:0},mayLookup(s){if(!a.isDir(s.mode))return 54;var v=a.nodePermissions(s,"x");return v||(s.node_ops.lookup?0:2)},mayCreate(s,v){if(!a.isDir(s.mode))return 54;try{var c=a.lookupNode(s,v);return 20}catch{}return a.nodePermissions(s,"wx")},mayDelete(s,v,c){var u;try{u=a.lookupNode(s,v)}catch(w){return w.errno}var g=a.nodePermissions(s,"wx");if(g)return g;if(c){if(!a.isDir(u.mode))return 54;if(a.isRoot(u)||a.getPath(u)===a.cwd())return 10}else if(a.isDir(u.mode))return 31;return 0},mayOpen(s,v){if(!s)return 44;if(a.isLink(s.mode))return 32;var c=a.flagsToPermissionString(v);return a.isDir(s.mode)&&(c!=="r"||v&576)?31:a.nodePermissions(s,c)},checkOpExists(s,v){if(!s)throw new a.ErrnoError(v);return s},MAX_OPEN_FDS:4096,nextfd(){for(var s=0;s<=a.MAX_OPEN_FDS;s++)if(!a.streams[s])return s;throw new a.ErrnoError(33)},getStreamChecked(s){var v=a.getStream(s);if(!v)throw new a.ErrnoError(8);return v},getStream:s=>a.streams[s],createStream(s,v=-1){return s=Object.assign(new a.FSStream,s),v==-1&&(v=a.nextfd()),s.fd=v,a.streams[v]=s,s},closeStream(s){a.streams[s]=null},dupStream(s,v=-1){var c=a.createStream(s,v);return c.stream_ops?.dup?.(c),c},doSetAttr(s,v,c){var u=s?.stream_ops.setattr,g=u?s:v;u??(u=v.node_ops.setattr),a.checkOpExists(u,63);try{u(g,c)}catch(w){throw w instanceof RangeError?new a.ErrnoError(22):w}},chrdev_stream_ops:{open(s){var v=a.getDevice(s.node.rdev);s.stream_ops=v.stream_ops,s.stream_ops.open?.(s)},llseek(){throw new a.ErrnoError(70)}},major:s=>s>>8,minor:s=>s&255,makedev:(s,v)=>s<<8|v,registerDevice(s,v){a.devices[s]={stream_ops:v}},getDevice:s=>a.devices[s],getMounts(s){for(var v=[],c=[s];c.length;){var u=c.pop();v.push(u),c.push(...u.mounts)}return v},syncfs(s,v){typeof s=="function"&&(v=s,s=!1),a.syncFSRequests++,a.syncFSRequests>1&&R(`warning: ${a.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var c=a.getMounts(a.root.mount),u=0;function g(V){return a.syncFSRequests--,v(V)}function w(V){if(V)return w.errored?void 0:(w.errored=!0,g(V));++u>=c.length&&g(null)}for(var G of c)G.type.syncfs?G.type.syncfs(G,s,w):w(null)},mount(s,v,c){var u=c==="/",g=!c,w;if(u&&a.root)throw new a.ErrnoError(10);if(!u&&!g){var G=a.lookupPath(c,{follow_mount:!1});if(c=G.path,w=G.node,a.isMountpoint(w))throw new a.ErrnoError(10);if(!a.isDir(w.mode))throw new a.ErrnoError(54)}var V={type:s,opts:v,mountpoint:c,mounts:[]},a0=s.mount(V);return a0.mount=V,V.root=a0,u?a.root=a0:w&&(w.mounted=V,w.mount&&w.mount.mounts.push(V)),a0},unmount(s){var v=a.lookupPath(s,{follow_mount:!1});if(!a.isMountpoint(v.node))throw new a.ErrnoError(28);var c=v.node,u=c.mounted,g=a.getMounts(u);for(var[w,G]of Object.entries(a.nameTable))for(;G;){var V=G.name_next;g.includes(G.mount)&&a.destroyNode(G),G=V}c.mounted=null;var a0=c.mount.mounts.indexOf(u);c.mount.mounts.splice(a0,1)},lookup(s,v){return s.node_ops.lookup(s,v)},mknod(s,v,c){var u=a.lookupPath(s,{parent:!0}),g=u.node,w=B0.basename(s);if(!w)throw new a.ErrnoError(28);if(w==="."||w==="..")throw new a.ErrnoError(20);var G=a.mayCreate(g,w);if(G)throw new a.ErrnoError(G);if(!g.node_ops.mknod)throw new a.ErrnoError(63);return g.node_ops.mknod(g,w,v,c)},statfs(s){return a.statfsNode(a.lookupPath(s,{follow:!0}).node)},statfsStream(s){return a.statfsNode(s.node)},statfsNode(s){var v={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:a.nextInode,ffree:a.nextInode-1,fsid:42,flags:2,namelen:255};return s.node_ops.statfs&&Object.assign(v,s.node_ops.statfs(s.mount.opts.root)),v},create(s,v=438){return v&=4095,v|=32768,a.mknod(s,v,0)},mkdir(s,v=511){return v&=1023,v|=16384,a.mknod(s,v,0)},mkdirTree(s,v){var c=s.split("/"),u="";for(var g of c)if(g){(u||B0.isAbs(s))&&(u+="/"),u+=g;try{a.mkdir(u,v)}catch(w){if(w.errno!=20)throw w}}},mkdev(s,v,c){return typeof c>"u"&&(c=v,v=438),v|=8192,a.mknod(s,v,c)},symlink(s,v){if(!ox.resolve(s))throw new a.ErrnoError(44);var c=a.lookupPath(v,{parent:!0}),u=c.node;if(!u)throw new a.ErrnoError(44);var g=B0.basename(v),w=a.mayCreate(u,g);if(w)throw new a.ErrnoError(w);if(!u.node_ops.symlink)throw new a.ErrnoError(63);return u.node_ops.symlink(u,g,s)},rename(s,v){var c=B0.dirname(s),u=B0.dirname(v),g=B0.basename(s),w=B0.basename(v),G,V,a0;if(G=a.lookupPath(s,{parent:!0}),V=G.node,G=a.lookupPath(v,{parent:!0}),a0=G.node,!V||!a0)throw new a.ErrnoError(44);if(V.mount!==a0.mount)throw new a.ErrnoError(75);var d0=a.lookupNode(V,g),U0=ox.relative(s,u);if(U0.charAt(0)!==".")throw new a.ErrnoError(28);if(U0=ox.relative(v,c),U0.charAt(0)!==".")throw new a.ErrnoError(55);var T0;try{T0=a.lookupNode(a0,w)}catch{}if(d0!==T0){var w0=a.isDir(d0.mode),j0=a.mayDelete(V,g,w0);if(j0)throw new a.ErrnoError(j0);if(j0=T0?a.mayDelete(a0,w,w0):a.mayCreate(a0,w),j0)throw new a.ErrnoError(j0);if(!V.node_ops.rename)throw new a.ErrnoError(63);if(a.isMountpoint(d0)||T0&&a.isMountpoint(T0))throw new a.ErrnoError(10);if(a0!==V&&(j0=a.nodePermissions(V,"w"),j0))throw new a.ErrnoError(j0);a.hashRemoveNode(d0);try{V.node_ops.rename(d0,a0,w),d0.parent=a0}catch(Y0){throw Y0}finally{a.hashAddNode(d0)}}},rmdir(s){var v=a.lookupPath(s,{parent:!0}),c=v.node,u=B0.basename(s),g=a.lookupNode(c,u),w=a.mayDelete(c,u,!0);if(w)throw new a.ErrnoError(w);if(!c.node_ops.rmdir)throw new a.ErrnoError(63);if(a.isMountpoint(g))throw new a.ErrnoError(10);c.node_ops.rmdir(c,u),a.destroyNode(g)},readdir(s){var v=a.lookupPath(s,{follow:!0}),c=v.node,u=a.checkOpExists(c.node_ops.readdir,54);return u(c)},unlink(s){var v=a.lookupPath(s,{parent:!0}),c=v.node;if(!c)throw new a.ErrnoError(44);var u=B0.basename(s),g=a.lookupNode(c,u),w=a.mayDelete(c,u,!1);if(w)throw new a.ErrnoError(w);if(!c.node_ops.unlink)throw new a.ErrnoError(63);if(a.isMountpoint(g))throw new a.ErrnoError(10);c.node_ops.unlink(c,u),a.destroyNode(g)},readlink(s){var v=a.lookupPath(s),c=v.node;if(!c)throw new a.ErrnoError(44);if(!c.node_ops.readlink)throw new a.ErrnoError(28);return c.node_ops.readlink(c)},stat(s,v){var c=a.lookupPath(s,{follow:!v}),u=c.node,g=a.checkOpExists(u.node_ops.getattr,63);return g(u)},fstat(s){var v=a.getStreamChecked(s),c=v.node,u=v.stream_ops.getattr,g=u?v:c;return u??(u=c.node_ops.getattr),a.checkOpExists(u,63),u(g)},lstat(s){return a.stat(s,!0)},doChmod(s,v,c,u){a.doSetAttr(s,v,{mode:c&4095|v.mode&-4096,ctime:Date.now(),dontFollow:u})},chmod(s,v,c){var u;if(typeof s=="string"){var g=a.lookupPath(s,{follow:!c});u=g.node}else u=s;a.doChmod(null,u,v,c)},lchmod(s,v){a.chmod(s,v,!0)},fchmod(s,v){var c=a.getStreamChecked(s);a.doChmod(c,c.node,v,!1)},doChown(s,v,c){a.doSetAttr(s,v,{timestamp:Date.now(),dontFollow:c})},chown(s,v,c,u){var g;if(typeof s=="string"){var w=a.lookupPath(s,{follow:!u});g=w.node}else g=s;a.doChown(null,g,u)},lchown(s,v,c){a.chown(s,v,c,!0)},fchown(s,v,c){var u=a.getStreamChecked(s);a.doChown(u,u.node,!1)},doTruncate(s,v,c){if(a.isDir(v.mode))throw new a.ErrnoError(31);if(!a.isFile(v.mode))throw new a.ErrnoError(28);var u=a.nodePermissions(v,"w");if(u)throw new a.ErrnoError(u);a.doSetAttr(s,v,{size:c,timestamp:Date.now()})},truncate(s,v){if(v<0)throw new a.ErrnoError(28);var c;if(typeof s=="string"){var u=a.lookupPath(s,{follow:!0});c=u.node}else c=s;a.doTruncate(null,c,v)},ftruncate(s,v){var c=a.getStreamChecked(s);if(v<0||(c.flags&2097155)===0)throw new a.ErrnoError(28);a.doTruncate(c,c.node,v)},utime(s,v,c){var u=a.lookupPath(s,{follow:!0}),g=u.node,w=a.checkOpExists(g.node_ops.setattr,63);w(g,{atime:v,mtime:c})},open(s,v,c=438){if(s==="")throw new a.ErrnoError(44);v=pA(v),v&64?c=c&4095|32768:c=0;var u,g;if(typeof s=="object")u=s;else{g=s.endsWith("/");var w=a.lookupPath(s,{follow:!(v&131072),noent_okay:!0});u=w.node,s=w.path}var G=!1;if(v&64)if(u){if(v&128)throw new a.ErrnoError(20)}else{if(g)throw new a.ErrnoError(31);u=a.mknod(s,c|511,0),G=!0}if(!u)throw new a.ErrnoError(44);if(a.isChrdev(u.mode)&&(v&=-513),v&65536&&!a.isDir(u.mode))throw new a.ErrnoError(54);if(!G){var V=a.mayOpen(u,v);if(V)throw new a.ErrnoError(V)}v&512&&!G&&a.truncate(u,0),v&=-131713;var a0=a.createStream({node:u,path:a.getPath(u),flags:v,seekable:!0,position:0,stream_ops:u.stream_ops,ungotten:[],error:!1});return a0.stream_ops.open&&a0.stream_ops.open(a0),G&&a.chmod(u,c&511),a0},close(s){if(a.isClosed(s))throw new a.ErrnoError(8);s.getdents&&(s.getdents=null);try{s.stream_ops.close&&s.stream_ops.close(s)}catch(v){throw v}finally{a.closeStream(s.fd)}s.fd=null},isClosed(s){return s.fd===null},llseek(s,v,c){if(a.isClosed(s))throw new a.ErrnoError(8);if(!s.seekable||!s.stream_ops.llseek)throw new a.ErrnoError(70);if(c!=0&&c!=1&&c!=2)throw new a.ErrnoError(28);return s.position=s.stream_ops.llseek(s,v,c),s.ungotten=[],s.position},read(s,v,c,u,g){if(u<0||g<0)throw new a.ErrnoError(28);if(a.isClosed(s))throw new a.ErrnoError(8);if((s.flags&2097155)===1)throw new a.ErrnoError(8);if(a.isDir(s.node.mode))throw new a.ErrnoError(31);if(!s.stream_ops.read)throw new a.ErrnoError(28);var w=typeof g<"u";if(!w)g=s.position;else if(!s.seekable)throw new a.ErrnoError(70);var G=s.stream_ops.read(s,v,c,u,g);return w||(s.position+=G),G},write(s,v,c,u,g,w){if(u<0||g<0)throw new a.ErrnoError(28);if(a.isClosed(s))throw new a.ErrnoError(8);if((s.flags&2097155)===0)throw new a.ErrnoError(8);if(a.isDir(s.node.mode))throw new a.ErrnoError(31);if(!s.stream_ops.write)throw new a.ErrnoError(28);s.seekable&&s.flags&1024&&a.llseek(s,0,2);var G=typeof g<"u";if(!G)g=s.position;else if(!s.seekable)throw new a.ErrnoError(70);var V=s.stream_ops.write(s,v,c,u,g,w);return G||(s.position+=V),V},mmap(s,v,c,u,g){if((u&2)!==0&&(g&2)===0&&(s.flags&2097155)!==2)throw new a.ErrnoError(2);if((s.flags&2097155)===1)throw new a.ErrnoError(2);if(!s.stream_ops.mmap)throw new a.ErrnoError(43);if(!v)throw new a.ErrnoError(28);return s.stream_ops.mmap(s,v,c,u,g)},msync(s,v,c,u,g){return s.stream_ops.msync?s.stream_ops.msync(s,v,c,u,g):0},ioctl(s,v,c){if(!s.stream_ops.ioctl)throw new a.ErrnoError(59);return s.stream_ops.ioctl(s,v,c)},readFile(s,v={}){v.flags=v.flags||0,v.encoding=v.encoding||"binary",v.encoding!=="utf8"&&v.encoding!=="binary"&&D0(`Invalid encoding type "${v.encoding}"`);var c=a.open(s,v.flags),u=a.stat(s),g=u.size,w=new Uint8Array(g);return a.read(c,w,0,g,0),v.encoding==="utf8"&&(w=Jx(w)),a.close(c),w},writeFile(s,v,c={}){c.flags=c.flags||577;var u=a.open(s,c.flags,c.mode);v=Lx(v),a.write(u,v,0,v.byteLength,void 0,c.canOwn),a.close(u)},cwd:()=>a.currentPath,chdir(s){var v=a.lookupPath(s,{follow:!0});if(v.node===null)throw new a.ErrnoError(44);if(!a.isDir(v.node.mode))throw new a.ErrnoError(54);var c=a.nodePermissions(v.node,"x");if(c)throw new a.ErrnoError(c);a.currentPath=v.path},createDefaultDirectories(){a.mkdir("/tmp"),a.mkdir("/home"),a.mkdir("/home/web_user")},createDefaultDevices(){a.mkdir("/dev"),a.registerDevice(a.makedev(1,3),{read:()=>0,write:(u,g,w,G,V)=>G,llseek:()=>0}),a.mkdev("/dev/null",a.makedev(1,3)),X0.register(a.makedev(5,0),X0.default_tty_ops),X0.register(a.makedev(6,0),X0.default_tty1_ops),a.mkdev("/dev/tty",a.makedev(5,0)),a.mkdev("/dev/tty1",a.makedev(6,0));var s=new Uint8Array(1024),v=0,c=()=>(v===0&&(Cr(s),v=s.byteLength),s[--v]);a.createDevice("/dev","random",c),a.createDevice("/dev","urandom",c),a.mkdir("/dev/shm"),a.mkdir("/dev/shm/tmp")},createSpecialDirectories(){a.mkdir("/proc");var s=a.mkdir("/proc/self");a.mkdir("/proc/self/fd"),a.mount({mount(){var v=a.createNode(s,"fd",16895,73);return v.stream_ops={llseek:e0.stream_ops.llseek},v.node_ops={lookup(c,u){var g=+u,w=a.getStreamChecked(g),G={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>w.path},id:g+1};return G.parent=G,G},readdir(){return Array.from(a.streams.entries()).filter(([c,u])=>u).map(([c,u])=>c.toString())}},v}},{},"/proc/self/fd")},createStandardStreams(s,v,c){s?a.createDevice("/dev","stdin",s):a.symlink("/dev/tty","/dev/stdin"),v?a.createDevice("/dev","stdout",null,v):a.symlink("/dev/tty","/dev/stdout"),c?a.createDevice("/dev","stderr",null,c):a.symlink("/dev/tty1","/dev/stderr");var u=a.open("/dev/stdin",0),g=a.open("/dev/stdout",1),w=a.open("/dev/stderr",1)},staticInit(){a.nameTable=new Array(4096),a.mount(e0,{},"/"),a.createDefaultDirectories(),a.createDefaultDevices(),a.createSpecialDirectories(),a.filesystems={MEMFS:e0,PROXYFS:y0}},init(s,v,c){a.initialized=!0,s??(s=t.stdin),v??(v=t.stdout),c??(c=t.stderr),a.createStandardStreams(s,v,c)},quit(){a.initialized=!1,LA(0);for(var s of a.streams)s&&a.close(s)},findObject(s,v){var c=a.analyzePath(s,v);return c.exists?c.object:null},analyzePath(s,v){try{var c=a.lookupPath(s,{follow:!v});s=c.path}catch{}var u={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var c=a.lookupPath(s,{parent:!0});u.parentExists=!0,u.parentPath=c.path,u.parentObject=c.node,u.name=B0.basename(s),c=a.lookupPath(s,{follow:!v}),u.exists=!0,u.path=c.path,u.object=c.node,u.name=c.node.name,u.isRoot=c.path==="/"}catch(g){u.error=g.errno}return u},createPath(s,v,c,u){s=typeof s=="string"?s:a.getPath(s);for(var g=v.split("/").reverse();g.length;){var w=g.pop();if(w){var G=B0.join2(s,w);try{a.mkdir(G)}catch(V){if(V.errno!=20)throw V}s=G}}return G},createFile(s,v,c,u,g){var w=B0.join2(typeof s=="string"?s:a.getPath(s),v),G=Wx(u,g);return a.create(w,G)},createDataFile(s,v,c,u,g,w){var G=v;s&&(s=typeof s=="string"?s:a.getPath(s),G=v?B0.join2(s,v):s);var V=Wx(u,g),a0=a.create(G,V);if(c){c=Lx(c),a.chmod(a0,V|146);var d0=a.open(a0,577);a.write(d0,c,0,c.length,0,w),a.close(d0),a.chmod(a0,V)}},createDevice(s,v,c,u){var g,w=B0.join2(typeof s=="string"?s:a.getPath(s),v),G=Wx(!!c,!!u);(g=a.createDevice).major??(g.major=64);var V=a.makedev(a.createDevice.major++,0);return a.registerDevice(V,{open(a0){a0.seekable=!1},close(a0){u?.buffer?.length&&u(10)},read(a0,d0,U0,T0,w0){for(var j0=0,Y0=0;Y0<T0;Y0++){var lx;try{lx=c()}catch{throw new a.ErrnoError(29)}if(lx===void 0&&j0===0)throw new a.ErrnoError(6);if(lx==null)break;j0++,d0[U0+Y0]=lx}return j0&&(a0.node.atime=Date.now()),j0},write(a0,d0,U0,T0,w0){for(var j0=0;j0<T0;j0++)try{u(d0[U0+j0])}catch{throw new a.ErrnoError(29)}return T0&&(a0.node.mtime=a0.node.ctime=Date.now()),j0}}),a.mkdev(w,G,V)},forceLoadFile(s){if(s.isDevice||s.isFolder||s.link||s.contents)return!0;if(globalThis.XMLHttpRequest)D0("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");else try{s.contents=q(s.url)}catch{throw new a.ErrnoError(29)}},createLazyFile(s,v,c,u,g){class w{constructor(){Bx(this,"lengthKnown",!1),Bx(this,"chunks",[])}get(w0){if(!(w0>this.length-1||w0<0)){var j0=w0%this.chunkSize,Y0=w0/this.chunkSize|0;return this.getter(Y0)[j0]}}setDataGetter(w0){this.getter=w0}cacheLength(){var w0=new XMLHttpRequest;w0.open("HEAD",c,!1),w0.send(null),w0.status>=200&&w0.status<300||w0.status===304||D0("Couldn't load "+c+". Status: "+w0.status);var j0=Number(w0.getResponseHeader("Content-length")),Y0,lx=(Y0=w0.getResponseHeader("Accept-Ranges"))&&Y0==="bytes",yx=(Y0=w0.getResponseHeader("Content-Encoding"))&&Y0==="gzip",$x=1024*1024;lx||($x=j0);var qx=(Tx,sA)=>{Tx>sA&&D0("invalid range ("+Tx+", "+sA+") or no bytes requested!"),sA>j0-1&&D0("only "+j0+" bytes available! programmer error!");var tx=new XMLHttpRequest;return tx.open("GET",c,!1),j0!==$x&&tx.setRequestHeader("Range","bytes="+Tx+"-"+sA),tx.responseType="arraybuffer",tx.overrideMimeType&&tx.overrideMimeType("text/plain; charset=x-user-defined"),tx.send(null),tx.status>=200&&tx.status<300||tx.status===304||D0("Couldn't load "+c+". Status: "+tx.status),tx.response!==void 0?new Uint8Array(tx.response||[]):NA(tx.responseText||"",!0)},UA=this;UA.setDataGetter(Tx=>{var sA=Tx*$x,tx=(Tx+1)*$x-1;return tx=Math.min(tx,j0-1),typeof UA.chunks[Tx]>"u"&&(UA.chunks[Tx]=qx(sA,tx)),typeof UA.chunks[Tx]>"u"&&D0("doXHR failed!"),UA.chunks[Tx]}),(yx||!j0)&&($x=j0=1,j0=this.getter(0).length,$x=j0,N("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=j0,this._chunkSize=$x,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(globalThis.XMLHttpRequest){l||D0("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var G=new w,V={isDevice:!1,contents:G}}else var V={isDevice:!1,url:c};var a0=a.createFile(s,v,V,u,g);V.contents?a0.contents=V.contents:V.url&&(a0.contents=null,a0.url=V.url),Object.defineProperties(a0,{usedBytes:{get:function(){return this.contents.length}}});var d0={};for(let[T0,w0]of Object.entries(a0.stream_ops))d0[T0]=(...j0)=>(a.forceLoadFile(a0),w0(...j0));function U0(T0,w0,j0,Y0,lx){var yx=T0.node.contents;if(lx>=yx.length)return 0;var $x=Math.min(yx.length-lx,Y0);if(yx.slice)for(var qx=0;qx<$x;qx++)w0[j0+qx]=yx[lx+qx];else for(var qx=0;qx<$x;qx++)w0[j0+qx]=yx.get(lx+qx);return $x}return d0.read=(T0,w0,j0,Y0,lx)=>(a.forceLoadFile(a0),U0(T0,w0,j0,Y0,lx)),d0.mmap=(T0,w0,j0,Y0,lx)=>{a.forceLoadFile(a0);var yx=bA(w0);if(!yx)throw new a.ErrnoError(48);return U0(T0,ex,yx,w0,j0),{ptr:yx,allocated:!0}},a0.stream_ops=d0,a0}},k0={currentUmask:18,calculateAt(s,v,c){if(B0.isAbs(v))return v;var u;if(s===-100)u=a.cwd();else{var g=k0.getStreamFromFD(s);u=g.path}if(v.length==0){if(!c)throw new a.ErrnoError(44);return u}return u+"/"+v},writeStat(s,v){E0[s>>2]=v.dev,E0[s+4>>2]=v.mode,E0[s+8>>2]=v.nlink,E0[s+12>>2]=v.uid,E0[s+16>>2]=v.gid,E0[s+20>>2]=v.rdev,G0[s+24>>3]=BigInt(v.size),L0[s+32>>2]=4096,L0[s+36>>2]=v.blocks;var c=v.atime.getTime(),u=v.mtime.getTime(),g=v.ctime.getTime();return G0[s+40>>3]=BigInt(Math.floor(c/1e3)),E0[s+48>>2]=c%1e3*1e3*1e3,G0[s+56>>3]=BigInt(Math.floor(u/1e3)),E0[s+64>>2]=u%1e3*1e3*1e3,G0[s+72>>3]=BigInt(Math.floor(g/1e3)),E0[s+80>>2]=g%1e3*1e3*1e3,G0[s+88>>3]=BigInt(v.ino),0},writeStatFs(s,v){E0[s+4>>2]=v.bsize,E0[s+60>>2]=v.bsize,G0[s+8>>3]=BigInt(v.blocks),G0[s+16>>3]=BigInt(v.bfree),G0[s+24>>3]=BigInt(v.bavail),G0[s+32>>3]=BigInt(v.files),G0[s+40>>3]=BigInt(v.ffree),E0[s+48>>2]=v.fsid,E0[s+64>>2]=v.flags,E0[s+56>>2]=v.namelen},doMsync(s,v,c,u,g){if(!a.isFile(v.node.mode))throw new a.ErrnoError(43);if(u&2)return 0;var w=zx.slice(s,s+c);a.msync(v,w,g,c,u)},getStreamFromFD(s){var v=a.getStreamChecked(s);return v},varargs:void 0,getStr(s){var v=Cx(s);return v}};function dr(s,v,c){k0.varargs=c;try{var u=k0.getStreamFromFD(s);switch(v){case 0:{var g=Vx();if(g<0)return-28;for(;a.streams[g];)g++;var w;return w=a.dupStream(u,g),w.fd}case 1:case 2:return 0;case 3:return u.flags;case 4:{var g=Vx(),G=289792;return u.flags=u.flags&~G|g&G,0}case 12:{var g=uA(),V=0;return O0[g+V>>1]=2,0}case 13:case 14:return 0}return-28}catch(a0){if(typeof a>"u"||a0.name!=="ErrnoError")throw a0;return-a0.errno}}function mA(s,v,c){k0.varargs=c;try{var u=k0.getStreamFromFD(s);switch(v){case 21509:return u.tty?0:-59;case 21505:{if(!u.tty)return-59;if(u.tty.ops.ioctl_tcgets){var g=u.tty.ops.ioctl_tcgets(u),w=uA();L0[w>>2]=g.c_iflag||0,L0[w+4>>2]=g.c_oflag||0,L0[w+8>>2]=g.c_cflag||0,L0[w+12>>2]=g.c_lflag||0;for(var G=0;G<32;G++)ex[w+G+17]=g.c_cc[G]||0;return 0}return 0}case 21510:case 21511:case 21512:return u.tty?0:-59;case 21506:case 21507:case 21508:{if(!u.tty)return-59;if(u.tty.ops.ioctl_tcsets){for(var w=uA(),V=L0[w>>2],a0=L0[w+4>>2],d0=L0[w+8>>2],U0=L0[w+12>>2],T0=[],G=0;G<32;G++)T0.push(ex[w+G+17]);return u.tty.ops.ioctl_tcsets(u.tty,v,{c_iflag:V,c_oflag:a0,c_cflag:d0,c_lflag:U0,c_cc:T0})}return 0}case 21519:{if(!u.tty)return-59;var w=uA();return L0[w>>2]=0,0}case 21520:return u.tty?-28:-59;case 21537:case 21531:{var w=uA();return a.ioctl(u,v,w)}case 21523:{if(!u.tty)return-59;if(u.tty.ops.ioctl_tiocgwinsz){var w0=u.tty.ops.ioctl_tiocgwinsz(u.tty),w=uA();O0[w>>1]=w0[0],O0[w+2>>1]=w0[1]}return 0}case 21524:return u.tty?0:-59;case 21515:return u.tty?0:-59;default:return-28}}catch(j0){if(typeof a>"u"||j0.name!=="ErrnoError")throw j0;return-j0.errno}}function iA(s,v,c,u){k0.varargs=u;try{v=k0.getStr(v),v=k0.calculateAt(s,v);var g=u?Vx():0;return c&64&&(g&=~k0.currentUmask),a.open(v,c,g).fd}catch(w){if(typeof a>"u"||w.name!=="ErrnoError")throw w;return-w.errno}}var ce=()=>2147483648,er=(s,v)=>Math.ceil(s/v)*v,Ir=s=>{var v=hA.buffer.byteLength,c=(s-v+65535)/65536|0;try{return hA.grow(c),Z(),1}catch{}},Mr=s=>{var v=zx.length;s>>>=0;var c=ce();if(s>c)return!1;for(var u=1;u<=4;u*=2){var g=v*(1+.2/u);g=Math.min(g,s+100663296);var w=Math.min(c,er(Math.max(s,g),65536)),G=Ir(w);if(G)return!0}return!1};function De(s){try{var v=k0.getStreamFromFD(s);return a.close(v),0}catch(c){if(typeof a>"u"||c.name!=="ErrnoError")throw c;return c.errno}}var de=(s,v,c,u)=>{for(var g=0,w=0;w<c;w++){var G=E0[v>>2],V=E0[v+4>>2];v+=8;var a0=a.read(s,ex,G,V,u);if(a0<0)return-1;if(g+=a0,a0<V)break;typeof u<"u"&&(u+=a0)}return g};function ue(s,v,c,u){try{var g=k0.getStreamFromFD(s),w=de(g,v,c);return E0[u>>2]=w,0}catch(G){if(typeof a>"u"||G.name!=="ErrnoError")throw G;return G.errno}}var tr=9007199254740992,Lr=-9007199254740992,IA=s=>s<Lr||s>tr?NaN:Number(s);function nr(s,v,c,u){v=IA(v);try{if(isNaN(v))return 22;var g=k0.getStreamFromFD(s);return a.llseek(g,v,c),G0[u>>3]=BigInt(g.position),g.getdents&&v===0&&c===0&&(g.getdents=null),0}catch(w){if(typeof a>"u"||w.name!=="ErrnoError")throw w;return w.errno}}var be=(s,v,c,u)=>{for(var g=0,w=0;w<c;w++){var G=E0[v>>2],V=E0[v+4>>2];v+=8;var a0=a.write(s,ex,G,V,u);if(a0<0)return-1;if(g+=a0,a0<V)break;typeof u<"u"&&(u+=a0)}return g};function Rr(s,v,c,u){try{var g=k0.getStreamFromFD(s),w=be(g,v,c);return E0[u>>2]=w,0}catch(G){if(typeof a>"u"||G.name!=="ErrnoError")throw G;return G.errno}}var pe=0,MA=()=>Ar||pe>0,ur=s=>{M=s,MA()||(t.onExit?.(s),t0=!0),k(s,new Kx(s))},Or=(s,v)=>{M=s,MA()||v0(),ur(s)},Gr=s=>{if(s instanceof Kx||s=="unwind")return M;k(1,s)},je=(s,v,c)=>lr(s,zx,v,c),Ur=s=>RA(s),me=s=>{var v=TA(s)+1,c=Ur(v);return je(s,c,v),c},he=(...s)=>a.createPath(...s),ir=(...s)=>a.unlink(...s),ge=(...s)=>a.createLazyFile(...s),ye=(...s)=>a.createDevice(...s);if(a.createPreloadedFile=le,a.preloadFile=jA,a.staticInit(),t.noExitRuntime&&(Ar=t.noExitRuntime),t.preloadPlugins&&(rr=t.preloadPlugins),t.print&&(N=t.print),t.printErr&&(R=t.printErr),t.wasmBinary&&(O=t.wasmBinary),t.arguments&&(j=t.arguments),t.thisProgram&&(b=t.thisProgram),t.preInit)for(typeof t.preInit=="function"&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.shift()();t.callMain=vx,t.addRunDependency=hx,t.removeRunDependency=Dr,t.FS_preloadFile=jA,t.FS_unlink=ir,t.FS_createPath=he,t.FS_createDevice=ye,t.FS=a,t.FS_createDataFile=cr,t.FS_createLazyFile=ge,t.PROXYFS=y0;var Hr,Kr,LA,zr,RA,br,gx,ke,hA;function OA(s){Hr=t._main=s.__main_argc_argv,Kr=s.__funcs_on_exit,LA=s.fflush,zr=s._emscripten_stack_restore,RA=s._emscripten_stack_alloc,br=s.emscripten_stack_get_current,gx=hA=s.memory,ke=s.__indirect_function_table}var pr={__assert_fail:eA,__syscall_fcntl64:dr,__syscall_ioctl:mA,__syscall_openat:iA,emscripten_resize_heap:Mr,fd_close:De,fd_read:ue,fd_seek:nr,fd_write:Rr};function vx(s=[]){var v=Hr;s.unshift(b);var c=s.length,u=Ur((c+1)*4),g=u;for(var w of s)E0[g>>2]=me(w),g+=4;E0[g>>2]=0;try{var G=v(c,u);return Or(G,!0),G}catch(V){return Gr(V)}}function sr(s=j){if(ix>0){p0=sr;return}if(n0(),ix>0){p0=sr;return}function v(){if(t.calledRun=!0,!t0){U(),H?.(t),t.onRuntimeInitialized?.();var c=t.noInitialRun||!0;c||vx(s),C0()}}t.setStatus?(t.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>t.setStatus(""),1),v()},1)):v()}var GA;return GA=await W0(),sr(),i0?o=t:o=new Promise((s,v)=>{H=s,K=v}),o}})();typeof A=="object"&&typeof x=="object"?(x.exports=r,x.exports.default=r):typeof define=="function"&&define.amd&&define([],()=>r)}}),zi={};e8(zi,{createPawnCC:()=>o8,createPawnDbg:()=>F8});Ji.exports=t8(zi);var s8=Ki(n8(),1),a8=Ki(i8(),1),o8=s8.default,F8=a8.default});var uB={};Ro(uB,{default:()=>Ua});module.exports=Oo(uB);var wx=require("commander");var Wt={name:"@microtronics/studio-cli",version:"1.2.0-alpha.2",description:"Microtronics Studio CLI Tool",main:"./out/api.js",typings:"./out/studio-cli.d.ts",bin:{"studio-cli":"studio-cli"},publishConfig:{access:"public"},scripts:{compile:"npm run build:registryApiTypings && tsc","build:cli":"node build.mjs","build:exe":"node build-exe.mjs",api:"api-extractor run --local --verbose",build:"npm run compile && npm run api && npm run build:cli","watch:build":"npm run compile -- --watch",test:"cross-env STUDIO_ENV=lucky mocha","test-ci":"cross-env STUDIO_ENV=lucky mocha --reporter mocha-junit-reporter","watch:test":"npm run test -- --watch",prepublishOnly:"npm run build","build:registryApiTypings":"npx openapi-typescript https://api.registry.lucky.ci.microtronics.com/v1/openapi.yaml -o ./src/typings/registry.ts"},author:"Microtronics",license:"ISC",dependencies:{"@gera2ld/tarjs":"^0.3.1",ajv:"^8.17.1","ajv-formats":"^3.0.1","ajv-keywords":"^5.1.0",chalk:"^5.4.1",commander:"^12.1.0","cross-fetch":"^4.0.0","deepmerge-ts":"^7.1.5",dotenv:"^16.4.7","file-type-checker":"^1.1.2",glob:"^11.0.1","iconv-lite":"^0.6.3","image-dimensions":"^2.3.0",ini:"^5.0.0",minimatch:"^10.0.1","openapi-fetch":"^0.13.0",pako:"^2.1.0",semver:"^7.7.2","tinytar-fix":"^0.1.1","update-notifier":"^7.3.1",usb:"^2.14.0",uuid:"^9.0.1","vscode-uri":"^3.0.8",yaml:"^2.6.1"},engines:{node:">= 22"},devDependencies:{"@microsoft/api-extractor":"^7.47.11","@microtronics/device-master":"bitbucket:microtronics-core/device-master#v3.0.0","@types/chai":"^4.3.6","@types/chai-as-promised":"^7.1.5","@types/ini":"^4.1.1","@types/mocha":"^10.0.9","@types/node":"^22.9.1","@types/semver":"^7.5.6","@types/update-notifier":"^6.0.8","@types/vscode":"^1.86.2","@yao-pkg/pkg":"^6.22.0",chai:"^4.3.8","chai-as-promised":"^7.1.2","cross-env":"^7.0.3",esbuild:"^0.27.3","extract-zip":"^2.0.1",mocha:"^10.8.2","mocha-junit-reporter":"^2.2.1","openapi-typescript":"^7.6.0","pawncc-wasm":"bitbucket:microtronics-core/pawncc-wasm#v1.1.1",resedit:"^3.0.2",tar:"^7.5.7","ts-node":"^10.9.2",typescript:"^5.6.3"},mocha:{require:["ts-node/register"],"watch-files":"src/**",spec:"./test/**/*.spec.ts",recursive:!0},files:["out/api.js","out/studio-cli.d.ts","dist/main.js","dist/studio-cli.d.ts","studio-cli","CHANGELOG.md"]};var oA=dx(require("node:fs/promises"));var we=require("vscode-uri"),Xn=require("glob"),yr={readFile(A){return oA.default.readFile(A.fsPath)},async rm(A){if(await this.stat(A))return oA.default.rm(A.fsPath,{recursive:!0})},async stat(A){try{let x=await oA.default.stat(A.fsPath),r=(x.isDirectory()?2:0)|(x.isFile()?1:0)|(x.isSymbolicLink()?64:0);return{ctime:x.ctimeMs,mtime:x.mtimeMs,permissions:void 0,size:x.size,type:r}}catch{return null}},async writeFile(A,x){typeof x=="string"&&(x=new TextEncoder().encode(x));let r=we.Utils.dirname(A);return await oA.default.mkdir(r.fsPath,{recursive:!0}),oA.default.writeFile(A.fsPath,x,{flag:"w"})},async findFiles(A,x,r){let e={ignore:r,nodir:!0,absolute:!0,dot:!0,cwd:A.fsPath};return(await(0,Xn.glob)(x,e)).map(o=>{let t=o.replace(/\\/g,"/");return we.URI.parse(`file:///${t}`)})},async copy(A,x){let r=await oA.default.stat(A.fsPath);return await oA.default.mkdir(we.Utils.dirname(x).fsPath,{recursive:!0}),r.isDirectory()?oA.default.cp(A.fsPath,x.fsPath,{force:!0,recursive:!0}):oA.default.copyFile(A.fsPath,x.fsPath)},async mkdir(A){await oA.default.mkdir(A.fsPath,{recursive:!0})}};var Ve=require("vscode-uri");var VA=require("vscode-uri");var Yr=require("vscode-uri");var Uo=new Uint32Array([0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117]);function et(A,x=0){let r=~~x^-1;for(let e=0;e<A.length;e++)r=r>>>8^Uo[(r^A[e])&255];return(r^-1)>>>0}var qB=new Uint8Array([0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64]),SB=new Uint8Array([0,192,193,1,195,3,2,194,198,6,7,199,5,197,196,4,204,12,13,205,15,207,206,14,10,202,203,11,201,9,8,200,216,24,25,217,27,219,218,26,30,222,223,31,221,29,28,220,20,212,213,21,215,23,22,214,210,18,19,211,17,209,208,16,240,48,49,241,51,243,242,50,54,246,247,55,245,53,52,244,60,252,253,61,255,63,62,254,250,58,59,251,57,249,248,56,40,232,233,41,235,43,42,234,238,46,47,239,45,237,236,44,228,36,37,229,39,231,230,38,34,226,227,35,225,33,32,224,160,96,97,161,99,163,162,98,102,166,167,103,165,101,100,164,108,172,173,109,175,111,110,174,170,106,107,171,105,169,168,104,120,184,185,121,187,123,122,186,190,126,127,191,125,189,188,124,180,116,117,181,119,183,182,118,114,178,179,115,177,113,112,176,80,144,145,81,147,83,82,146,150,86,87,151,85,149,148,84,156,92,93,157,95,159,158,94,90,154,155,91,153,89,88,152,136,72,73,137,75,139,138,74,78,142,143,79,141,77,76,140,68,132,133,69,135,71,70,134,130,66,67,131,65,129,128,64]);var h0;($=>{function A(y,q){let[P,N]=q,{line:R,col:O}=y.linePos(P);return{line:Number(R)-1,startCharacter:O-1,endCharacter:O+(N-P)}}$.yamlRangeToLineInformation=A;let x=new TextEncoder;function r(y){return et(x.encode(y)).toString(16)}$.generateHashForLibraryName=r;function e(y){return et(x.encode(y)).toString(16)}$.generateHashForFilePath=e;function i(y){return et(y).toString(16).toUpperCase().padStart(8,"0")}$.generateCRC32ForFileContent=i;function o(y){try{let q=null;return y?.type==="Buffer"?q=Uint8Array.from(y.data):q=y,new TextDecoder("utf8").decode(q)}catch{return""}}$.convertBlobToString=o;function t(y=""){return y.replace(/\r\n|\n\r|\r/g,`
1528
- `)}$.normalizeLF=t;function B(y){try{let q=o(y);return t(q).split(`
1529
- `)}catch{return[]}}$.convertBlobToStringArray=B,$.isNumeric=y=>!Array.isArray(y)&&y-parseFloat(y)+1>=0;function D(y){let q="",P=y.byteLength;for(let N=0;N<P;N++)q+=String.fromCharCode(y[N]);return btoa(q)}$.bufferToBase64=D;function j(y,q){let P=`${y}`.match(/\{\d*(index)(\+\d*)?}/g);if(P){let N=y;return P.forEach(R=>{let O=R.replace(/\+0$/,""),t0=O.match(/index/)?.[0];if(t0){let M=O.slice(1,-1).split(t0)[1],h=parseInt(M)||0;N=N.replace(R,`${q+h}`)}}),N}else return y}$.patchValueWithArrayInfo=j;let b={};function k(y,q,P){let N=b[y];N&&clearTimeout(N.timer),b[y]={timer:setTimeout(()=>{delete b[y],P()},q),handler:P}}$.defer=k})(h0||={});var li=require("image-dimensions"),ci=require("file-type-checker");var rf=require("cross-fetch/polyfill"),Bi=dx(require("openapi-fetch"));var or=require("vscode-uri");var Ex=require("vscode-uri");var kA=dx(require("semver"));var _x="dist/",Yn="dde/",Xt="dlo/",Qn=".studio/",Zn="dfiles/",s0;(B=>{B.fileNames={projectSettings:"studio.json",mainAmx:"main.amx",mainAmxReport:"main.xml",ddeXml:"dde.xml",ddeOpenApi:"main.yaml",historyJson:"history.json",mainDDE:"main.dde",autoInc:"auto.inc",defaultInc:"default.inc",autoUplinkInc:"app-uplink.inc",autoDdeInc:"X-dde.inc",mainDdeInc:"main-dde.inc",autoLocalDataInc:"auto-local-data.inc",legacyAutoInc:"legacy-auto.inc",legacyAutoDdeInc:"legacy-auto-dde.inc",legacyAutoUplinkInc:"legacy-auto-uplink.inc",reportTemplate:"mdn_report_template.json",dloCfg:"dlo.cfg"};let x=`${Qn}auto/`,r=`${x}dlo/`,e=`${x}dde/`;B.filePaths={studio:{initFile:`${x}.init`,auto:{path:x,dlo:{path:r,autoInc:`${r}${B.fileNames.autoInc}`,defaultInc:`${r}${B.fileNames.defaultInc}`,autoUplinkInc:`${r}${B.fileNames.autoUplinkInc}`,autoLocalDataInc:`${r}${B.fileNames.autoLocalDataInc}`,autoDdeInc:`${r}${B.fileNames.autoDdeInc}`,mainDdeInc:`${r}${B.fileNames.mainDdeInc}`,legacyAutoInc:`${r}${B.fileNames.legacyAutoInc}`,legacyAutoDdeInc:`${r}${B.fileNames.legacyAutoDdeInc}`,legacyAutoUplinkInc:`${r}${B.fileNames.legacyAutoUplinkInc}`,cfg:`${r}${B.fileNames.dloCfg}`},dde:{path:e,historyJson:`${e}${B.fileNames.historyJson}`}},libdeps:`${Qn}libdeps/`},dist:{path:_x,dloPath:`${_x}dlo/`,mainAmxPath:`${_x}dlo/${B.fileNames.mainAmx}`,mainAmxReportPath:`${_x}dlo/${B.fileNames.mainAmxReport}`,ddeXmlPath:`${_x}dde/${B.fileNames.ddeXml}`,ddeApiPath:`${_x}api/`,ddeApi:`${_x}api/${B.fileNames.ddeOpenApi}`,historyJson:`${_x}dde/${B.fileNames.historyJson}`,povPath:`${_x}pov`,povDetailsPath:`${_x}pov/details`,dfilesPath:`${_x}dfiles`,dfilesProperties:`${_x}dfiles/properties.json`,bloPath:`${_x}blo`,reportTemplate:`${_x}/${B.fileNames.reportTemplate}`,definesTs:`${_x}defines.ts`,definesAppTs:`${_x}defines.app.ts`},dlo:{path:Xt,mainDLO:`${Xt}main.dlo`,mainINI:`${Xt}main.ini`},dde:{path:Yn,mainDDE:`${Yn}main.dde`},dfiles:{path:Zn,mainDFILES:`${Zn}/main.dfiles`},appIni:"app.ini",defaultsIni:"defaults.ini"},B.readme=l=>`# ${l} README
1526
+ \0A\x80\v\vp\0\0D\0\0\0`)}function cx(a){return a}async function Kx(a){return a}async function _A(a,l){try{var d=await Kx(a),b=await WebAssembly.instantiate(d,l);return b}catch(k){L(`failed to asynchronously prepare wasm: ${k}`),d0(k)}}async function SA(a,l,d){return _A(l,d)}function vx(){var a={env:Je,wasi_snapshot_preview1:Je};return a}async function ex(){function a($,G){return ee=$.exports,Ae(ee),Z(),ee}function l($){return a($.instance)}var d=vx();if(n.instantiateWasm)return new Promise(($,G)=>{n.instantiateWasm(d,(V,o0)=>{$(a(V,o0))})});T0??(T0=L0());var b=await SA(R,T0,d),k=l(b);return k}class rA{constructor(l){px(this,"name","ExitStatus"),this.message=`Program terminated with exit(${l})`,this.status=l}}var H0,R0,J0,fx,zr,Kr,Vr,l0,Wr,tA,$A=a=>{for(;a.length>0;)a.shift()(n)},PA=[],lr=a=>PA.push(a),Vx=[],cr=a=>Vx.push(a),de=!1,sx=globalThis.TextDecoder&&new TextDecoder,g0=(a,l,d,b)=>{var k=l+d;if(b)return k;for(;a[l]&&!(l>=k);)++l;return l},nA=(a,l=0,d,b)=>{var k=g0(a,l,d,b);if(k-l>16&&a.buffer&&sx)return sx.decode(a.subarray(l,k));for(var $="";l<k;){var G=a[l++];if(!(G&128)){$+=String.fromCharCode(G);continue}var V=a[l++]&63;if((G&224)==192){$+=String.fromCharCode((G&31)<<6|V);continue}var o0=a[l++]&63;if((G&240)==224?G=(G&15)<<12|V<<6|o0:G=(G&7)<<18|V<<12|o0<<6|a[l++]&63,G<65536)$+=String.fromCharCode(G);else{var u0=G-65536;$+=String.fromCharCode(55296|u0>>10,56320|u0&1023)}}return $},jx=(a,l,d)=>a?nA(tA,a,l,d):"",CA=(a,l,d,b)=>d0(`Assertion failed: ${jx(a)}, at: `+[l?jx(l):"unknown filename",d,b?jx(b):"unknown function"]),iA=()=>{var a=R0[+k0.varargs>>2];return k0.varargs+=4,a},TA=iA,c0={isAbs:a=>a.charAt(0)==="/",splitPath:a=>{var l=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return l.exec(a).slice(1)},normalizeArray:(a,l)=>{for(var d=0,b=a.length-1;b>=0;b--){var k=a[b];k==="."?a.splice(b,1):k===".."?(a.splice(b,1),d++):d&&(a.splice(b,1),d--)}if(l)for(;d;d--)a.unshift("..");return a},normalize:a=>{var l=c0.isAbs(a),d=a.slice(-1)==="/";return a=c0.normalizeArray(a.split("/").filter(b=>!!b),!l).join("/"),!a&&!l&&(a="."),a&&d&&(a+="/"),(l?"/":"")+a},dirname:a=>{var l=c0.splitPath(a),d=l[0],b=l[1];return!d&&!b?".":(b&&(b=b.slice(0,-1)),d+b)},basename:a=>a&&a.match(/([^\/]+|\/)\/*$/)[1],join:(...a)=>c0.normalize(a.join("/")),join2:(a,l)=>c0.normalize(a+"/"+l)},Xr=()=>{if(E){var a=require("crypto");return l=>a.randomFillSync(l)}return l=>(crypto.getRandomValues(l),0)},Me=a=>(Me=Xr())(a),Cx={resolve:(...a)=>{for(var l="",d=!1,b=a.length-1;b>=-1&&!d;b--){var k=b>=0?a[b]:o.cwd();if(typeof k!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!k)return"";l=k+"/"+l,d=c0.isAbs(k)}return l=c0.normalizeArray(l.split("/").filter($=>!!$),!d).join("/"),(d?"/":"")+l||"."},relative:(a,l)=>{a=Cx.resolve(a).slice(1),l=Cx.resolve(l).slice(1);function d(u0){for(var z0=0;z0<u0.length&&u0[z0]==="";z0++);for(var I0=u0.length-1;I0>=0&&u0[I0]==="";I0--);return z0>I0?[]:u0.slice(z0,I0-z0+1)}for(var b=d(a.split("/")),k=d(l.split("/")),$=Math.min(b.length,k.length),G=$,V=0;V<$;V++)if(b[V]!==k[V]){G=V;break}for(var o0=[],V=G;V<b.length;V++)o0.push("..");return o0=o0.concat(k.slice(G)),o0.join("/")}},Gx=[],WA=a=>{for(var l=0,d=0;d<a.length;++d){var b=a.charCodeAt(d);b<=127?l++:b<=2047?l+=2:b>=55296&&b<=57343?(l+=4,++d):l+=3}return l},Le=(a,l,d,b)=>{if(!(b>0))return 0;for(var k=d,$=d+b-1,G=0;G<a.length;++G){var V=a.codePointAt(G);if(V<=127){if(d>=$)break;l[d++]=V}else if(V<=2047){if(d+1>=$)break;l[d++]=192|V>>6,l[d++]=128|V&63}else if(V<=65535){if(d+2>=$)break;l[d++]=224|V>>12,l[d++]=128|V>>6&63,l[d++]=128|V&63}else{if(d+3>=$)break;l[d++]=240|V>>18,l[d++]=128|V>>12&63,l[d++]=128|V>>6&63,l[d++]=128|V&63,G++}}return l[d]=0,d-k},XA=(a,l,d)=>{var b=d>0?d:WA(a)+1,k=new Array(b),$=Le(a,k,0,k.length);return l&&(k.length=$),k},Yr=()=>{if(!Gx.length){var a=null;if(E){var l=256,d=Buffer.alloc(l),b=0,k=process.stdin.fd;try{b=T.readSync(k,d,0,l)}catch($){if($.toString().includes("EOF"))b=0;else throw $}b>0&&(a=d.slice(0,b).toString("utf-8"))}else globalThis.window?.prompt&&(a=window.prompt("Input: "),a!==null&&(a+=`
1527
+ `));if(!a)return null;Gx=XA(a,!0)}return Gx.shift()},rx={ttys:[],init(){},shutdown(){},register(a,l){rx.ttys[a]={input:[],output:[],ops:l},o.registerDevice(a,rx.stream_ops)},stream_ops:{open(a){var l=rx.ttys[a.node.rdev];if(!l)throw new o.ErrnoError(43);a.tty=l,a.seekable=!1},close(a){a.tty.ops.fsync(a.tty)},fsync(a){a.tty.ops.fsync(a.tty)},read(a,l,d,b,k){if(!a.tty||!a.tty.ops.get_char)throw new o.ErrnoError(60);for(var $=0,G=0;G<b;G++){var V;try{V=a.tty.ops.get_char(a.tty)}catch{throw new o.ErrnoError(29)}if(V===void 0&&$===0)throw new o.ErrnoError(6);if(V==null)break;$++,l[d+G]=V}return $&&(a.node.atime=Date.now()),$},write(a,l,d,b,k){if(!a.tty||!a.tty.ops.put_char)throw new o.ErrnoError(60);try{for(var $=0;$<b;$++)a.tty.ops.put_char(a.tty,l[d+$])}catch{throw new o.ErrnoError(29)}return b&&(a.node.mtime=a.node.ctime=Date.now()),$}},default_tty_ops:{get_char(a){return Yr()},put_char(a,l){l===null||l===10?(q(nA(a.output)),a.output=[]):l!=0&&a.output.push(l)},fsync(a){a.output?.length>0&&(q(nA(a.output)),a.output=[])},ioctl_tcgets(a){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(a,l,d){return 0},ioctl_tiocgwinsz(a){return[24,80]}},default_tty1_ops:{put_char(a,l){l===null||l===10?(L(nA(a.output)),a.output=[]):l!=0&&a.output.push(l)},fsync(a){a.output?.length>0&&(L(nA(a.output)),a.output=[])}}},qA=a=>{d0()},t0={ops_table:null,mount(a){return t0.createNode(null,"/",16895,0)},createNode(a,l,d,b){if(o.isBlkdev(d)||o.isFIFO(d))throw new o.ErrnoError(63);t0.ops_table||(t0.ops_table={dir:{node:{getattr:t0.node_ops.getattr,setattr:t0.node_ops.setattr,lookup:t0.node_ops.lookup,mknod:t0.node_ops.mknod,rename:t0.node_ops.rename,unlink:t0.node_ops.unlink,rmdir:t0.node_ops.rmdir,readdir:t0.node_ops.readdir,symlink:t0.node_ops.symlink},stream:{llseek:t0.stream_ops.llseek}},file:{node:{getattr:t0.node_ops.getattr,setattr:t0.node_ops.setattr},stream:{llseek:t0.stream_ops.llseek,read:t0.stream_ops.read,write:t0.stream_ops.write,mmap:t0.stream_ops.mmap,msync:t0.stream_ops.msync}},link:{node:{getattr:t0.node_ops.getattr,setattr:t0.node_ops.setattr,readlink:t0.node_ops.readlink},stream:{}},chrdev:{node:{getattr:t0.node_ops.getattr,setattr:t0.node_ops.setattr},stream:o.chrdev_stream_ops}});var k=o.createNode(a,l,d,b);return o.isDir(k.mode)?(k.node_ops=t0.ops_table.dir.node,k.stream_ops=t0.ops_table.dir.stream,k.contents={}):o.isFile(k.mode)?(k.node_ops=t0.ops_table.file.node,k.stream_ops=t0.ops_table.file.stream,k.usedBytes=0,k.contents=t0.emptyFileContents??(t0.emptyFileContents=new Uint8Array(0))):o.isLink(k.mode)?(k.node_ops=t0.ops_table.link.node,k.stream_ops=t0.ops_table.link.stream):o.isChrdev(k.mode)&&(k.node_ops=t0.ops_table.chrdev.node,k.stream_ops=t0.ops_table.chrdev.stream),k.atime=k.mtime=k.ctime=Date.now(),a&&(a.contents[l]=k,a.atime=a.mtime=a.ctime=k.atime),k},getFileDataAsTypedArray(a){return a.contents.subarray(0,a.usedBytes)},expandFileStorage(a,l){var d=a.contents.length;if(!(d>=l)){var b=1024*1024;l=Math.max(l,d*(d<b?2:1.125)>>>0),d&&(l=Math.max(l,256));var k=t0.getFileDataAsTypedArray(a);a.contents=new Uint8Array(l),a.contents.set(k)}},resizeFileStorage(a,l){if(a.usedBytes!=l){var d=a.contents;a.contents=new Uint8Array(l),a.contents.set(d.subarray(0,Math.min(l,a.usedBytes))),a.usedBytes=l}},node_ops:{getattr(a){var l={};return l.dev=o.isChrdev(a.mode)?a.id:1,l.ino=a.id,l.mode=a.mode,l.nlink=1,l.uid=0,l.gid=0,l.rdev=a.rdev,o.isDir(a.mode)?l.size=4096:o.isFile(a.mode)?l.size=a.usedBytes:o.isLink(a.mode)?l.size=a.link.length:l.size=0,l.atime=new Date(a.atime),l.mtime=new Date(a.mtime),l.ctime=new Date(a.ctime),l.blksize=4096,l.blocks=Math.ceil(l.size/l.blksize),l},setattr(a,l){for(let d of["mode","atime","mtime","ctime"])l[d]!=null&&(a[d]=l[d]);l.size!==void 0&&t0.resizeFileStorage(a,l.size)},lookup(a,l){throw t0.doesNotExistError||(t0.doesNotExistError=new o.ErrnoError(44),t0.doesNotExistError.stack="<generic error, no stack>"),t0.doesNotExistError},mknod(a,l,d,b){return t0.createNode(a,l,d,b)},rename(a,l,d){var b;try{b=o.lookupNode(l,d)}catch{}if(b){if(o.isDir(a.mode))for(var k in b.contents)throw new o.ErrnoError(55);o.hashRemoveNode(b)}delete a.parent.contents[a.name],l.contents[d]=a,a.name=d,l.ctime=l.mtime=a.parent.ctime=a.parent.mtime=Date.now()},unlink(a,l){delete a.contents[l],a.ctime=a.mtime=Date.now()},rmdir(a,l){var d=o.lookupNode(a,l);for(var b in d.contents)throw new o.ErrnoError(55);delete a.contents[l],a.ctime=a.mtime=Date.now()},readdir(a){return[".","..",...Object.keys(a.contents)]},symlink(a,l,d){var b=t0.createNode(a,l,41471,0);return b.link=d,b},readlink(a){if(!o.isLink(a.mode))throw new o.ErrnoError(28);return a.link}},stream_ops:{read(a,l,d,b,k){var $=a.node.contents;if(k>=a.node.usedBytes)return 0;var G=Math.min(a.node.usedBytes-k,b);return l.set($.subarray(k,k+G),d),G},write(a,l,d,b,k,$){if(l.buffer===fx.buffer&&($=!1),!b)return 0;var G=a.node;return G.mtime=G.ctime=Date.now(),$?(G.contents=l.subarray(d,d+b),G.usedBytes=b):G.usedBytes===0&&k===0?(G.contents=l.slice(d,d+b),G.usedBytes=b):(t0.expandFileStorage(G,k+b),G.contents.set(l.subarray(d,d+b),k),G.usedBytes=Math.max(G.usedBytes,k+b)),b},llseek(a,l,d){var b=l;if(d===1?b+=a.position:d===2&&o.isFile(a.node.mode)&&(b+=a.node.usedBytes),b<0)throw new o.ErrnoError(28);return b},mmap(a,l,d,b,k){if(!o.isFile(a.node.mode))throw new o.ErrnoError(43);var $,G,V=a.node.contents;if(!(k&2)&&V.buffer===fx.buffer)G=!1,$=V.byteOffset;else{if(G=!0,$=qA(l),!$)throw new o.ErrnoError(48);V&&((d>0||d+l<V.length)&&(V.subarray?V=V.subarray(d,d+l):V=Array.prototype.slice.call(V,d,d+l)),fx.set(V,$))}return{ptr:$,allocated:G}},msync(a,l,d,b,k){return t0.stream_ops.write(a,l,0,b,d,!1),0}}},NA=a=>{if(typeof a!="string")return a;var l={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},d=l[a];if(typeof d>"u")throw new Error(`Unknown file open mode: ${a}`);return d},Wx=a=>(typeof a=="string"&&(a=XA(a,!0)),a.subarray||(a=new Uint8Array(a)),a),sA=(a,l)=>{var d=0;return a&&(d|=365),l&&(d|=146),d},q0={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},y0={mount(a){return y0.createNode(null,"/",a.opts.fs.lstat(a.opts.root).mode,0)},createNode(a,l,d,b){if(!o.isDir(d)&&!o.isFile(d)&&!o.isLink(d))throw new o.ErrnoError(q0.EINVAL);var k=o.createNode(a,l,d);return k.node_ops=y0.node_ops,k.stream_ops=y0.stream_ops,k},realPath(a){for(var l=[];a.parent!==a;)l.push(a.name),a=a.parent;return l.push(a.mount.opts.root),l.reverse(),c0.join(...l)},node_ops:{getattr(a){var l=y0.realPath(a),d;try{d=a.mount.opts.fs.lstat(l)}catch(b){throw b.code?new o.ErrnoError(q0[b.code]):b}return{dev:d.dev,ino:d.ino,mode:d.mode,nlink:d.nlink,uid:d.uid,gid:d.gid,rdev:d.rdev,size:d.size,atime:d.atime,mtime:d.mtime,ctime:d.ctime,blksize:d.blksize,blocks:d.blocks}},setattr(a,l){var d=y0.realPath(a);try{if(l.mode!==void 0&&(a.mount.opts.fs.chmod(d,l.mode),a.mode=l.mode),l.atime||l.mtime){var b=new Date(l.atime||l.mtime),k=new Date(l.mtime||l.atime);a.mount.opts.fs.utime(d,b,k)}l.size!==void 0&&a.mount.opts.fs.truncate(d,l.size)}catch($){throw $.code?new o.ErrnoError(q0[$.code]):$}},lookup(a,l){try{var d=c0.join2(y0.realPath(a),l),b=a.mount.opts.fs.lstat(d).mode,k=y0.createNode(a,l,b);return k}catch($){throw $.code?new o.ErrnoError(q0[$.code]):$}},mknod(a,l,d,b){var k=y0.createNode(a,l,d,b),$=y0.realPath(k);try{o.isDir(k.mode)?k.mount.opts.fs.mkdir($,k.mode):k.mount.opts.fs.writeFile($,"",{mode:k.mode})}catch(G){throw G.code?new o.ErrnoError(q0[G.code]):G}return k},rename(a,l,d){var b=y0.realPath(a),k=c0.join2(y0.realPath(l),d);try{a.mount.opts.fs.rename(b,k),a.name=d}catch($){throw $.code?new o.ErrnoError(q0[$.code]):$}},unlink(a,l){var d=c0.join2(y0.realPath(a),l);try{a.mount.opts.fs.unlink(d)}catch(b){throw b.code?new o.ErrnoError(q0[b.code]):b}},rmdir(a,l){var d=c0.join2(y0.realPath(a),l);try{a.mount.opts.fs.rmdir(d)}catch(b){throw b.code?new o.ErrnoError(q0[b.code]):b}},readdir(a){var l=y0.realPath(a);try{return a.mount.opts.fs.readdir(l)}catch(d){throw d.code?new o.ErrnoError(q0[d.code]):d}},symlink(a,l,d){var b=c0.join2(y0.realPath(a),l);try{a.mount.opts.fs.symlink(d,b)}catch(k){throw k.code?new o.ErrnoError(q0[k.code]):k}},readlink(a){var l=y0.realPath(a);try{return a.mount.opts.fs.readlink(l)}catch(d){throw d.code?new o.ErrnoError(q0[d.code]):d}}},stream_ops:{open(a){var l=y0.realPath(a.node);try{a.nfd=a.node.mount.opts.fs.open(l,a.flags)}catch(d){throw d.code?new o.ErrnoError(q0[d.code]):d}},close(a){try{a.node.mount.opts.fs.close(a.nfd)}catch(l){throw l.code?new o.ErrnoError(q0[l.code]):l}},read(a,l,d,b,k){try{return a.node.mount.opts.fs.read(a.nfd,l,d,b,k)}catch($){throw $.code?new o.ErrnoError(q0[$.code]):$}},write(a,l,d,b,k){try{return a.node.mount.opts.fs.write(a.nfd,l,d,b,k)}catch($){throw $.code?new o.ErrnoError(q0[$.code]):$}},llseek(a,l,d){var b=l;if(d===1)b+=a.position;else if(d===2&&o.isFile(a.node.mode))try{var k=a.node.node_ops.getattr(a.node);b+=k.size}catch($){throw new o.ErrnoError(q0[$.code])}if(b<0)throw new o.ErrnoError(q0.EINVAL);return b}}},dA=async a=>{var l=await g(a);return new Uint8Array(l)},Oe=(...a)=>o.createDataFile(...a),dx=a=>a,Ex=0,b0=null,Re=a=>{if(Ex--,n.monitorRunDependencies?.(Ex),Ex==0&&b0){var l=b0;b0=null,l()}},Tx=a=>{Ex++,n.monitorRunDependencies?.(Ex)},ue=[],uA=async(a,l)=>{typeof Browser<"u"&&Browser.init();for(var d of ue)if(d.canHandle(l))return d.handle(a,l);return a},IA=async(a,l,d,b,k,$,G,V)=>{var o0=l?Cx.resolve(c0.join2(a,l)):a,u0=dx(`cp ${o0}`);Tx(u0);try{var z0=d;typeof d=="string"&&(z0=await dA(d)),z0=await uA(z0,o0),V?.(),$||Oe(a,l,z0,b,k,G)}finally{Re(u0)}},Qr=(a,l,d,b,k,$,G,V,o0,u0)=>{IA(a,l,d,b,k,V,o0,u0).then($).catch(G)},o={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,filesystems:null,syncFSRequests:0,ErrnoError:class{constructor(a){px(this,"name","ErrnoError"),this.errno=a}},FSStream:class{constructor(){px(this,"shared",{})}get object(){return this.node}set object(a){this.node=a}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(a){this.shared.flags=a}get position(){return this.shared.position}set position(a){this.shared.position=a}},FSNode:class{constructor(a,l,d,b){px(this,"node_ops",{}),px(this,"stream_ops",{}),px(this,"readMode",365),px(this,"writeMode",146),px(this,"mounted",null),a||(a=this),this.parent=a,this.mount=a.mount,this.id=o.nextInode++,this.name=l,this.mode=d,this.rdev=b,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(a){a?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(a){a?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return o.isDir(this.mode)}get isDevice(){return o.isChrdev(this.mode)}},lookupPath(a,l={}){if(!a)throw new o.ErrnoError(44);l.follow_mount??(l.follow_mount=!0),c0.isAbs(a)||(a=o.cwd()+"/"+a);x:for(var d=0;d<40;d++){for(var b=a.split("/").filter(u0=>!!u0),k=o.root,$="/",G=0;G<b.length;G++){var V=G===b.length-1;if(V&&l.parent)break;if(b[G]!=="."){if(b[G]===".."){if($=c0.dirname($),o.isRoot(k)){a=$+"/"+b.slice(G+1).join("/"),d--;continue x}else k=k.parent;continue}$=c0.join2($,b[G]);try{k=o.lookupNode(k,b[G])}catch(u0){if(u0?.errno===44&&V&&l.noent_okay)return{path:$};throw u0}if(o.isMountpoint(k)&&(!V||l.follow_mount)&&(k=k.mounted.root),o.isLink(k.mode)&&(!V||l.follow)){if(!k.node_ops.readlink)throw new o.ErrnoError(52);var o0=k.node_ops.readlink(k);c0.isAbs(o0)||(o0=c0.dirname($)+"/"+o0),a=o0+"/"+b.slice(G+1).join("/");continue x}}}return{path:$,node:k}}throw new o.ErrnoError(32)},getPath(a){for(var l;;){if(o.isRoot(a)){var d=a.mount.mountpoint;return l?d[d.length-1]!=="/"?`${d}/${l}`:d+l:d}l=l?`${a.name}/${l}`:a.name,a=a.parent}},hashName(a,l){for(var d=0,b=0;b<l.length;b++)d=(d<<5)-d+l.charCodeAt(b)|0;return(a+d>>>0)%o.nameTable.length},hashAddNode(a){var l=o.hashName(a.parent.id,a.name);a.name_next=o.nameTable[l],o.nameTable[l]=a},hashRemoveNode(a){var l=o.hashName(a.parent.id,a.name);if(o.nameTable[l]===a)o.nameTable[l]=a.name_next;else for(var d=o.nameTable[l];d;){if(d.name_next===a){d.name_next=a.name_next;break}d=d.name_next}},lookupNode(a,l){var d=o.mayLookup(a);if(d)throw new o.ErrnoError(d);for(var b=o.hashName(a.id,l),k=o.nameTable[b];k;k=k.name_next){var $=k.name;if(k.parent.id===a.id&&$===l)return k}return o.lookup(a,l)},createNode(a,l,d,b){var k=new o.FSNode(a,l,d,b);return o.hashAddNode(k),k},destroyNode(a){o.hashRemoveNode(a)},isRoot(a){return a===a.parent},isMountpoint(a){return!!a.mounted},isFile(a){return(a&61440)===32768},isDir(a){return(a&61440)===16384},isLink(a){return(a&61440)===40960},isChrdev(a){return(a&61440)===8192},isBlkdev(a){return(a&61440)===24576},isFIFO(a){return(a&61440)===4096},isSocket(a){return(a&49152)===49152},flagsToPermissionString(a){var l=["r","w","rw"][a&3];return a&512&&(l+="w"),l},nodePermissions(a,l){return o.ignorePermissions?0:l.includes("r")&&!(a.mode&292)||l.includes("w")&&!(a.mode&146)||l.includes("x")&&!(a.mode&73)?2:0},mayLookup(a){if(!o.isDir(a.mode))return 54;var l=o.nodePermissions(a,"x");return l||(a.node_ops.lookup?0:2)},mayCreate(a,l){if(!o.isDir(a.mode))return 54;try{var d=o.lookupNode(a,l);return 20}catch{}return o.nodePermissions(a,"wx")},mayDelete(a,l,d){var b;try{b=o.lookupNode(a,l)}catch($){return $.errno}var k=o.nodePermissions(a,"wx");if(k)return k;if(d){if(!o.isDir(b.mode))return 54;if(o.isRoot(b)||o.getPath(b)===o.cwd())return 10}else if(o.isDir(b.mode))return 31;return 0},mayOpen(a,l){if(!a)return 44;if(o.isLink(a.mode))return 32;var d=o.flagsToPermissionString(l);return o.isDir(a.mode)&&(d!=="r"||l&576)?31:o.nodePermissions(a,d)},checkOpExists(a,l){if(!a)throw new o.ErrnoError(l);return a},MAX_OPEN_FDS:4096,nextfd(){for(var a=0;a<=o.MAX_OPEN_FDS;a++)if(!o.streams[a])return a;throw new o.ErrnoError(33)},getStreamChecked(a){var l=o.getStream(a);if(!l)throw new o.ErrnoError(8);return l},getStream:a=>o.streams[a],createStream(a,l=-1){return a=Object.assign(new o.FSStream,a),l==-1&&(l=o.nextfd()),a.fd=l,o.streams[l]=a,a},closeStream(a){o.streams[a]=null},dupStream(a,l=-1){var d=o.createStream(a,l);return d.stream_ops?.dup?.(d),d},doSetAttr(a,l,d){var b=a?.stream_ops.setattr,k=b?a:l;b??(b=l.node_ops.setattr),o.checkOpExists(b,63);try{b(k,d)}catch($){throw $ instanceof RangeError?new o.ErrnoError(22):$}},chrdev_stream_ops:{open(a){var l=o.getDevice(a.node.rdev);a.stream_ops=l.stream_ops,a.stream_ops.open?.(a)},llseek(){throw new o.ErrnoError(70)}},major:a=>a>>8,minor:a=>a&255,makedev:(a,l)=>a<<8|l,registerDevice(a,l){o.devices[a]={stream_ops:l}},getDevice:a=>o.devices[a],getMounts(a){for(var l=[],d=[a];d.length;){var b=d.pop();l.push(b),d.push(...b.mounts)}return l},syncfs(a,l){typeof a=="function"&&(l=a,a=!1),o.syncFSRequests++,o.syncFSRequests>1&&L(`warning: ${o.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var d=o.getMounts(o.root.mount),b=0;function k(V){return o.syncFSRequests--,l(V)}function $(V){if(V)return $.errored?void 0:($.errored=!0,k(V));++b>=d.length&&k(null)}for(var G of d)G.type.syncfs?G.type.syncfs(G,a,$):$(null)},mount(a,l,d){var b=d==="/",k=!d,$;if(b&&o.root)throw new o.ErrnoError(10);if(!b&&!k){var G=o.lookupPath(d,{follow_mount:!1});if(d=G.path,$=G.node,o.isMountpoint($))throw new o.ErrnoError(10);if(!o.isDir($.mode))throw new o.ErrnoError(54)}var V={type:a,opts:l,mountpoint:d,mounts:[]},o0=a.mount(V);return o0.mount=V,V.root=o0,b?o.root=o0:$&&($.mounted=V,$.mount&&$.mount.mounts.push(V)),o0},unmount(a){var l=o.lookupPath(a,{follow_mount:!1});if(!o.isMountpoint(l.node))throw new o.ErrnoError(28);var d=l.node,b=d.mounted,k=o.getMounts(b);for(var[$,G]of Object.entries(o.nameTable))for(;G;){var V=G.name_next;k.includes(G.mount)&&o.destroyNode(G),G=V}d.mounted=null;var o0=d.mount.mounts.indexOf(b);d.mount.mounts.splice(o0,1)},lookup(a,l){return a.node_ops.lookup(a,l)},mknod(a,l,d){var b=o.lookupPath(a,{parent:!0}),k=b.node,$=c0.basename(a);if(!$)throw new o.ErrnoError(28);if($==="."||$==="..")throw new o.ErrnoError(20);var G=o.mayCreate(k,$);if(G)throw new o.ErrnoError(G);if(!k.node_ops.mknod)throw new o.ErrnoError(63);return k.node_ops.mknod(k,$,l,d)},statfs(a){return o.statfsNode(o.lookupPath(a,{follow:!0}).node)},statfsStream(a){return o.statfsNode(a.node)},statfsNode(a){var l={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:o.nextInode,ffree:o.nextInode-1,fsid:42,flags:2,namelen:255};return a.node_ops.statfs&&Object.assign(l,a.node_ops.statfs(a.mount.opts.root)),l},create(a,l=438){return l&=4095,l|=32768,o.mknod(a,l,0)},mkdir(a,l=511){return l&=1023,l|=16384,o.mknod(a,l,0)},mkdirTree(a,l){var d=a.split("/"),b="";for(var k of d)if(k){(b||c0.isAbs(a))&&(b+="/"),b+=k;try{o.mkdir(b,l)}catch($){if($.errno!=20)throw $}}},mkdev(a,l,d){return typeof d>"u"&&(d=l,l=438),l|=8192,o.mknod(a,l,d)},symlink(a,l){if(!Cx.resolve(a))throw new o.ErrnoError(44);var d=o.lookupPath(l,{parent:!0}),b=d.node;if(!b)throw new o.ErrnoError(44);var k=c0.basename(l),$=o.mayCreate(b,k);if($)throw new o.ErrnoError($);if(!b.node_ops.symlink)throw new o.ErrnoError(63);return b.node_ops.symlink(b,k,a)},rename(a,l){var d=c0.dirname(a),b=c0.dirname(l),k=c0.basename(a),$=c0.basename(l),G,V,o0;if(G=o.lookupPath(a,{parent:!0}),V=G.node,G=o.lookupPath(l,{parent:!0}),o0=G.node,!V||!o0)throw new o.ErrnoError(44);if(V.mount!==o0.mount)throw new o.ErrnoError(75);var u0=o.lookupNode(V,k),z0=Cx.relative(a,b);if(z0.charAt(0)!==".")throw new o.ErrnoError(28);if(z0=Cx.relative(l,d),z0.charAt(0)!==".")throw new o.ErrnoError(55);var I0;try{I0=o.lookupNode(o0,$)}catch{}if(u0!==I0){var $0=o.isDir(u0.mode),m0=o.mayDelete(V,k,$0);if(m0)throw new o.ErrnoError(m0);if(m0=I0?o.mayDelete(o0,$,$0):o.mayCreate(o0,$),m0)throw new o.ErrnoError(m0);if(!V.node_ops.rename)throw new o.ErrnoError(63);if(o.isMountpoint(u0)||I0&&o.isMountpoint(I0))throw new o.ErrnoError(10);if(o0!==V&&(m0=o.nodePermissions(V,"w"),m0))throw new o.ErrnoError(m0);o.hashRemoveNode(u0);try{V.node_ops.rename(u0,o0,$),u0.parent=o0}catch(tx){throw tx}finally{o.hashAddNode(u0)}}},rmdir(a){var l=o.lookupPath(a,{parent:!0}),d=l.node,b=c0.basename(a),k=o.lookupNode(d,b),$=o.mayDelete(d,b,!0);if($)throw new o.ErrnoError($);if(!d.node_ops.rmdir)throw new o.ErrnoError(63);if(o.isMountpoint(k))throw new o.ErrnoError(10);d.node_ops.rmdir(d,b),o.destroyNode(k)},readdir(a){var l=o.lookupPath(a,{follow:!0}),d=l.node,b=o.checkOpExists(d.node_ops.readdir,54);return b(d)},unlink(a){var l=o.lookupPath(a,{parent:!0}),d=l.node;if(!d)throw new o.ErrnoError(44);var b=c0.basename(a),k=o.lookupNode(d,b),$=o.mayDelete(d,b,!1);if($)throw new o.ErrnoError($);if(!d.node_ops.unlink)throw new o.ErrnoError(63);if(o.isMountpoint(k))throw new o.ErrnoError(10);d.node_ops.unlink(d,b),o.destroyNode(k)},readlink(a){var l=o.lookupPath(a),d=l.node;if(!d)throw new o.ErrnoError(44);if(!d.node_ops.readlink)throw new o.ErrnoError(28);return d.node_ops.readlink(d)},stat(a,l){var d=o.lookupPath(a,{follow:!l}),b=d.node,k=o.checkOpExists(b.node_ops.getattr,63);return k(b)},fstat(a){var l=o.getStreamChecked(a),d=l.node,b=l.stream_ops.getattr,k=b?l:d;return b??(b=d.node_ops.getattr),o.checkOpExists(b,63),b(k)},lstat(a){return o.stat(a,!0)},doChmod(a,l,d,b){o.doSetAttr(a,l,{mode:d&4095|l.mode&-4096,ctime:Date.now(),dontFollow:b})},chmod(a,l,d){var b;if(typeof a=="string"){var k=o.lookupPath(a,{follow:!d});b=k.node}else b=a;o.doChmod(null,b,l,d)},lchmod(a,l){o.chmod(a,l,!0)},fchmod(a,l){var d=o.getStreamChecked(a);o.doChmod(d,d.node,l,!1)},doChown(a,l,d){o.doSetAttr(a,l,{timestamp:Date.now(),dontFollow:d})},chown(a,l,d,b){var k;if(typeof a=="string"){var $=o.lookupPath(a,{follow:!b});k=$.node}else k=a;o.doChown(null,k,b)},lchown(a,l,d){o.chown(a,l,d,!0)},fchown(a,l,d){var b=o.getStreamChecked(a);o.doChown(b,b.node,!1)},doTruncate(a,l,d){if(o.isDir(l.mode))throw new o.ErrnoError(31);if(!o.isFile(l.mode))throw new o.ErrnoError(28);var b=o.nodePermissions(l,"w");if(b)throw new o.ErrnoError(b);o.doSetAttr(a,l,{size:d,timestamp:Date.now()})},truncate(a,l){if(l<0)throw new o.ErrnoError(28);var d;if(typeof a=="string"){var b=o.lookupPath(a,{follow:!0});d=b.node}else d=a;o.doTruncate(null,d,l)},ftruncate(a,l){var d=o.getStreamChecked(a);if(l<0||(d.flags&2097155)===0)throw new o.ErrnoError(28);o.doTruncate(d,d.node,l)},utime(a,l,d){var b=o.lookupPath(a,{follow:!0}),k=b.node,$=o.checkOpExists(k.node_ops.setattr,63);$(k,{atime:l,mtime:d})},open(a,l,d=438){if(a==="")throw new o.ErrnoError(44);l=NA(l),l&64?d=d&4095|32768:d=0;var b,k;if(typeof a=="object")b=a;else{k=a.endsWith("/");var $=o.lookupPath(a,{follow:!(l&131072),noent_okay:!0});b=$.node,a=$.path}var G=!1;if(l&64)if(b){if(l&128)throw new o.ErrnoError(20)}else{if(k)throw new o.ErrnoError(31);b=o.mknod(a,d|511,0),G=!0}if(!b)throw new o.ErrnoError(44);if(o.isChrdev(b.mode)&&(l&=-513),l&65536&&!o.isDir(b.mode))throw new o.ErrnoError(54);if(!G){var V=o.mayOpen(b,l);if(V)throw new o.ErrnoError(V)}l&512&&!G&&o.truncate(b,0),l&=-131713;var o0=o.createStream({node:b,path:o.getPath(b),flags:l,seekable:!0,position:0,stream_ops:b.stream_ops,ungotten:[],error:!1});return o0.stream_ops.open&&o0.stream_ops.open(o0),G&&o.chmod(b,d&511),o0},close(a){if(o.isClosed(a))throw new o.ErrnoError(8);a.getdents&&(a.getdents=null);try{a.stream_ops.close&&a.stream_ops.close(a)}catch(l){throw l}finally{o.closeStream(a.fd)}a.fd=null},isClosed(a){return a.fd===null},llseek(a,l,d){if(o.isClosed(a))throw new o.ErrnoError(8);if(!a.seekable||!a.stream_ops.llseek)throw new o.ErrnoError(70);if(d!=0&&d!=1&&d!=2)throw new o.ErrnoError(28);return a.position=a.stream_ops.llseek(a,l,d),a.ungotten=[],a.position},read(a,l,d,b,k){if(b<0||k<0)throw new o.ErrnoError(28);if(o.isClosed(a))throw new o.ErrnoError(8);if((a.flags&2097155)===1)throw new o.ErrnoError(8);if(o.isDir(a.node.mode))throw new o.ErrnoError(31);if(!a.stream_ops.read)throw new o.ErrnoError(28);var $=typeof k<"u";if(!$)k=a.position;else if(!a.seekable)throw new o.ErrnoError(70);var G=a.stream_ops.read(a,l,d,b,k);return $||(a.position+=G),G},write(a,l,d,b,k,$){if(b<0||k<0)throw new o.ErrnoError(28);if(o.isClosed(a))throw new o.ErrnoError(8);if((a.flags&2097155)===0)throw new o.ErrnoError(8);if(o.isDir(a.node.mode))throw new o.ErrnoError(31);if(!a.stream_ops.write)throw new o.ErrnoError(28);a.seekable&&a.flags&1024&&o.llseek(a,0,2);var G=typeof k<"u";if(!G)k=a.position;else if(!a.seekable)throw new o.ErrnoError(70);var V=a.stream_ops.write(a,l,d,b,k,$);return G||(a.position+=V),V},mmap(a,l,d,b,k){if((b&2)!==0&&(k&2)===0&&(a.flags&2097155)!==2)throw new o.ErrnoError(2);if((a.flags&2097155)===1)throw new o.ErrnoError(2);if(!a.stream_ops.mmap)throw new o.ErrnoError(43);if(!l)throw new o.ErrnoError(28);return a.stream_ops.mmap(a,l,d,b,k)},msync(a,l,d,b,k){return a.stream_ops.msync?a.stream_ops.msync(a,l,d,b,k):0},ioctl(a,l,d){if(!a.stream_ops.ioctl)throw new o.ErrnoError(59);return a.stream_ops.ioctl(a,l,d)},readFile(a,l={}){l.flags=l.flags||0,l.encoding=l.encoding||"binary",l.encoding!=="utf8"&&l.encoding!=="binary"&&d0(`Invalid encoding type "${l.encoding}"`);var d=o.open(a,l.flags),b=o.stat(a),k=b.size,$=new Uint8Array(k);return o.read(d,$,0,k,0),l.encoding==="utf8"&&($=nA($)),o.close(d),$},writeFile(a,l,d={}){d.flags=d.flags||577;var b=o.open(a,d.flags,d.mode);l=Wx(l),o.write(b,l,0,l.byteLength,void 0,d.canOwn),o.close(b)},cwd:()=>o.currentPath,chdir(a){var l=o.lookupPath(a,{follow:!0});if(l.node===null)throw new o.ErrnoError(44);if(!o.isDir(l.node.mode))throw new o.ErrnoError(54);var d=o.nodePermissions(l.node,"x");if(d)throw new o.ErrnoError(d);o.currentPath=l.path},createDefaultDirectories(){o.mkdir("/tmp"),o.mkdir("/home"),o.mkdir("/home/web_user")},createDefaultDevices(){o.mkdir("/dev"),o.registerDevice(o.makedev(1,3),{read:()=>0,write:(b,k,$,G,V)=>G,llseek:()=>0}),o.mkdev("/dev/null",o.makedev(1,3)),rx.register(o.makedev(5,0),rx.default_tty_ops),rx.register(o.makedev(6,0),rx.default_tty1_ops),o.mkdev("/dev/tty",o.makedev(5,0)),o.mkdev("/dev/tty1",o.makedev(6,0));var a=new Uint8Array(1024),l=0,d=()=>(l===0&&(Me(a),l=a.byteLength),a[--l]);o.createDevice("/dev","random",d),o.createDevice("/dev","urandom",d),o.mkdir("/dev/shm"),o.mkdir("/dev/shm/tmp")},createSpecialDirectories(){o.mkdir("/proc");var a=o.mkdir("/proc/self");o.mkdir("/proc/self/fd"),o.mount({mount(){var l=o.createNode(a,"fd",16895,73);return l.stream_ops={llseek:t0.stream_ops.llseek},l.node_ops={lookup(d,b){var k=+b,$=o.getStreamChecked(k),G={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>$.path},id:k+1};return G.parent=G,G},readdir(){return Array.from(o.streams.entries()).filter(([d,b])=>b).map(([d,b])=>d.toString())}},l}},{},"/proc/self/fd")},createStandardStreams(a,l,d){a?o.createDevice("/dev","stdin",a):o.symlink("/dev/tty","/dev/stdin"),l?o.createDevice("/dev","stdout",null,l):o.symlink("/dev/tty","/dev/stdout"),d?o.createDevice("/dev","stderr",null,d):o.symlink("/dev/tty1","/dev/stderr");var b=o.open("/dev/stdin",0),k=o.open("/dev/stdout",1),$=o.open("/dev/stderr",1)},staticInit(){o.nameTable=new Array(4096),o.mount(t0,{},"/"),o.createDefaultDirectories(),o.createDefaultDevices(),o.createSpecialDirectories(),o.filesystems={MEMFS:t0,PROXYFS:y0}},init(a,l,d){o.initialized=!0,a??(a=n.stdin),l??(l=n.stdout),d??(d=n.stderr),o.createStandardStreams(a,l,d)},quit(){o.initialized=!1,ZA(0);for(var a of o.streams)a&&o.close(a)},findObject(a,l){var d=o.analyzePath(a,l);return d.exists?d.object:null},analyzePath(a,l){try{var d=o.lookupPath(a,{follow:!l});a=d.path}catch{}var b={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var d=o.lookupPath(a,{parent:!0});b.parentExists=!0,b.parentPath=d.path,b.parentObject=d.node,b.name=c0.basename(a),d=o.lookupPath(a,{follow:!l}),b.exists=!0,b.path=d.path,b.object=d.node,b.name=d.node.name,b.isRoot=d.path==="/"}catch(k){b.error=k.errno}return b},createPath(a,l,d,b){a=typeof a=="string"?a:o.getPath(a);for(var k=l.split("/").reverse();k.length;){var $=k.pop();if($){var G=c0.join2(a,$);try{o.mkdir(G)}catch(V){if(V.errno!=20)throw V}a=G}}return G},createFile(a,l,d,b,k){var $=c0.join2(typeof a=="string"?a:o.getPath(a),l),G=sA(b,k);return o.create($,G)},createDataFile(a,l,d,b,k,$){var G=l;a&&(a=typeof a=="string"?a:o.getPath(a),G=l?c0.join2(a,l):a);var V=sA(b,k),o0=o.create(G,V);if(d){d=Wx(d),o.chmod(o0,V|146);var u0=o.open(o0,577);o.write(u0,d,0,d.length,0,$),o.close(u0),o.chmod(o0,V)}},createDevice(a,l,d,b){var k,$=c0.join2(typeof a=="string"?a:o.getPath(a),l),G=sA(!!d,!!b);(k=o.createDevice).major??(k.major=64);var V=o.makedev(o.createDevice.major++,0);return o.registerDevice(V,{open(o0){o0.seekable=!1},close(o0){b?.buffer?.length&&b(10)},read(o0,u0,z0,I0,$0){for(var m0=0,tx=0;tx<I0;tx++){var hx;try{hx=d()}catch{throw new o.ErrnoError(29)}if(hx===void 0&&m0===0)throw new o.ErrnoError(6);if(hx==null)break;m0++,u0[z0+tx]=hx}return m0&&(o0.node.atime=Date.now()),m0},write(o0,u0,z0,I0,$0){for(var m0=0;m0<I0;m0++)try{b(u0[z0+m0])}catch{throw new o.ErrnoError(29)}return I0&&(o0.node.mtime=o0.node.ctime=Date.now()),m0}}),o.mkdev($,G,V)},forceLoadFile(a){if(a.isDevice||a.isFolder||a.link||a.contents)return!0;if(globalThis.XMLHttpRequest)d0("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");else try{a.contents=S(a.url)}catch{throw new o.ErrnoError(29)}},createLazyFile(a,l,d,b,k){class ${constructor(){px(this,"lengthKnown",!1),px(this,"chunks",[])}get($0){if(!($0>this.length-1||$0<0)){var m0=$0%this.chunkSize,tx=$0/this.chunkSize|0;return this.getter(tx)[m0]}}setDataGetter($0){this.getter=$0}cacheLength(){var $0=new XMLHttpRequest;$0.open("HEAD",d,!1),$0.send(null),$0.status>=200&&$0.status<300||$0.status===304||d0("Couldn't load "+d+". Status: "+$0.status);var m0=Number($0.getResponseHeader("Content-length")),tx,hx=(tx=$0.getResponseHeader("Accept-Ranges"))&&tx==="bytes",Nx=(tx=$0.getResponseHeader("Content-Encoding"))&&tx==="gzip",Ox=1024*1024;hx||(Ox=m0);var Rx=(Ux,pA)=>{Ux>pA&&d0("invalid range ("+Ux+", "+pA+") or no bytes requested!"),pA>m0-1&&d0("only "+m0+" bytes available! programmer error!");var lx=new XMLHttpRequest;return lx.open("GET",d,!1),m0!==Ox&&lx.setRequestHeader("Range","bytes="+Ux+"-"+pA),lx.responseType="arraybuffer",lx.overrideMimeType&&lx.overrideMimeType("text/plain; charset=x-user-defined"),lx.send(null),lx.status>=200&&lx.status<300||lx.status===304||d0("Couldn't load "+d+". Status: "+lx.status),lx.response!==void 0?new Uint8Array(lx.response||[]):XA(lx.responseText||"",!0)},re=this;re.setDataGetter(Ux=>{var pA=Ux*Ox,lx=(Ux+1)*Ox-1;return lx=Math.min(lx,m0-1),typeof re.chunks[Ux]>"u"&&(re.chunks[Ux]=Rx(pA,lx)),typeof re.chunks[Ux]>"u"&&d0("doXHR failed!"),re.chunks[Ux]}),(Nx||!m0)&&(Ox=m0=1,m0=this.getter(0).length,Ox=m0,q("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=m0,this._chunkSize=Ox,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(globalThis.XMLHttpRequest){v||d0("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var G=new $,V={isDevice:!1,contents:G}}else var V={isDevice:!1,url:d};var o0=o.createFile(a,l,V,b,k);V.contents?o0.contents=V.contents:V.url&&(o0.contents=null,o0.url=V.url),Object.defineProperties(o0,{usedBytes:{get:function(){return this.contents.length}}});var u0={};for(let[I0,$0]of Object.entries(o0.stream_ops))u0[I0]=(...m0)=>(o.forceLoadFile(o0),$0(...m0));function z0(I0,$0,m0,tx,hx){var Nx=I0.node.contents;if(hx>=Nx.length)return 0;var Ox=Math.min(Nx.length-hx,tx);if(Nx.slice)for(var Rx=0;Rx<Ox;Rx++)$0[m0+Rx]=Nx[hx+Rx];else for(var Rx=0;Rx<Ox;Rx++)$0[m0+Rx]=Nx.get(hx+Rx);return Ox}return u0.read=(I0,$0,m0,tx,hx)=>(o.forceLoadFile(o0),z0(I0,$0,m0,tx,hx)),u0.mmap=(I0,$0,m0,tx,hx)=>{o.forceLoadFile(o0);var Nx=qA($0);if(!Nx)throw new o.ErrnoError(48);return z0(I0,fx,Nx,$0,m0),{ptr:Nx,allocated:!0}},o0.stream_ops=u0,o0}},k0={currentUmask:18,calculateAt(a,l,d){if(c0.isAbs(l))return l;var b;if(a===-100)b=o.cwd();else{var k=k0.getStreamFromFD(a);b=k.path}if(l.length==0){if(!d)throw new o.ErrnoError(44);return b}return b+"/"+l},writeStat(a,l){l0[a>>2]=l.dev,l0[a+4>>2]=l.mode,l0[a+8>>2]=l.nlink,l0[a+12>>2]=l.uid,l0[a+16>>2]=l.gid,l0[a+20>>2]=l.rdev,J0[a+24>>3]=BigInt(l.size),R0[a+32>>2]=4096,R0[a+36>>2]=l.blocks;var d=l.atime.getTime(),b=l.mtime.getTime(),k=l.ctime.getTime();return J0[a+40>>3]=BigInt(Math.floor(d/1e3)),l0[a+48>>2]=d%1e3*1e3*1e3,J0[a+56>>3]=BigInt(Math.floor(b/1e3)),l0[a+64>>2]=b%1e3*1e3*1e3,J0[a+72>>3]=BigInt(Math.floor(k/1e3)),l0[a+80>>2]=k%1e3*1e3*1e3,J0[a+88>>3]=BigInt(l.ino),0},writeStatFs(a,l){l0[a+4>>2]=l.bsize,l0[a+60>>2]=l.bsize,J0[a+8>>3]=BigInt(l.blocks),J0[a+16>>3]=BigInt(l.bfree),J0[a+24>>3]=BigInt(l.bavail),J0[a+32>>3]=BigInt(l.files),J0[a+40>>3]=BigInt(l.ffree),l0[a+48>>2]=l.fsid,l0[a+64>>2]=l.flags,l0[a+56>>2]=l.namelen},doMsync(a,l,d,b,k){if(!o.isFile(l.node.mode))throw new o.ErrnoError(43);if(b&2)return 0;var $=tA.slice(a,a+d);o.msync(l,$,k,d,b)},getStreamFromFD(a){var l=o.getStreamChecked(a);return l},varargs:void 0,getStr(a){var l=jx(a);return l}};function Ge(a,l,d){k0.varargs=d;try{var b=k0.getStreamFromFD(a);switch(l){case 0:{var k=iA();if(k<0)return-28;for(;o.streams[k];)k++;var $;return $=o.dupStream(b,k),$.fd}case 1:case 2:return 0;case 3:return b.flags;case 4:{var k=iA(),G=289792;return b.flags=b.flags&~G|k&G,0}case 12:{var k=TA(),V=0;return H0[k+V>>1]=2,0}case 13:case 14:return 0}return-28}catch(o0){if(typeof o>"u"||o0.name!=="ErrnoError")throw o0;return-o0.errno}}function MA(a,l,d){k0.varargs=d;try{var b=k0.getStreamFromFD(a);switch(l){case 21509:return b.tty?0:-59;case 21505:{if(!b.tty)return-59;if(b.tty.ops.ioctl_tcgets){var k=b.tty.ops.ioctl_tcgets(b),$=TA();R0[$>>2]=k.c_iflag||0,R0[$+4>>2]=k.c_oflag||0,R0[$+8>>2]=k.c_cflag||0,R0[$+12>>2]=k.c_lflag||0;for(var G=0;G<32;G++)fx[$+G+17]=k.c_cc[G]||0;return 0}return 0}case 21510:case 21511:case 21512:return b.tty?0:-59;case 21506:case 21507:case 21508:{if(!b.tty)return-59;if(b.tty.ops.ioctl_tcsets){for(var $=TA(),V=R0[$>>2],o0=R0[$+4>>2],u0=R0[$+8>>2],z0=R0[$+12>>2],I0=[],G=0;G<32;G++)I0.push(fx[$+G+17]);return b.tty.ops.ioctl_tcsets(b.tty,l,{c_iflag:V,c_oflag:o0,c_cflag:u0,c_lflag:z0,c_cc:I0})}return 0}case 21519:{if(!b.tty)return-59;var $=TA();return R0[$>>2]=0,0}case 21520:return b.tty?-28:-59;case 21537:case 21531:{var $=TA();return o.ioctl(b,l,$)}case 21523:{if(!b.tty)return-59;if(b.tty.ops.ioctl_tiocgwinsz){var $0=b.tty.ops.ioctl_tiocgwinsz(b.tty),$=TA();H0[$>>1]=$0[0],H0[$+2>>1]=$0[1]}return 0}case 21524:return b.tty?0:-59;case 21515:return b.tty?0:-59;default:return-28}}catch(m0){if(typeof o>"u"||m0.name!=="ErrnoError")throw m0;return-m0.errno}}function DA(a,l,d,b){k0.varargs=b;try{l=k0.getStr(l),l=k0.calculateAt(a,l);var k=b?iA():0;return d&64&&(k&=~k0.currentUmask),o.open(l,d,k).fd}catch($){if(typeof o>"u"||$.name!=="ErrnoError")throw $;return-$.errno}}var Zr=()=>2147483648,De=(a,l)=>Math.ceil(a/l)*l,Er=a=>{var l=LA.buffer.byteLength,d=(a-l+65535)/65536|0;try{return LA.grow(d),Z(),1}catch{}},Br=a=>{var l=tA.length;a>>>=0;var d=Zr();if(a>d)return!1;for(var b=1;b<=4;b*=2){var k=l*(1+.2/b);k=Math.min(k,a+100663296);var $=Math.min(d,De(Math.max(a,k),65536)),G=Er($);if(G)return!0}return!1};function xt(a){try{var l=k0.getStreamFromFD(a);return o.close(l),0}catch(d){if(typeof o>"u"||d.name!=="ErrnoError")throw d;return d.errno}}var At=(a,l,d,b)=>{for(var k=0,$=0;$<d;$++){var G=l0[l>>2],V=l0[l+4>>2];l+=8;var o0=o.read(a,fx,G,V,b);if(o0<0)return-1;if(k+=o0,o0<V)break;typeof b<"u"&&(b+=o0)}return k};function et(a,l,d,b){try{var k=k0.getStreamFromFD(a),$=At(k,l,d);return l0[b>>2]=$,0}catch(G){if(typeof o>"u"||G.name!=="ErrnoError")throw G;return G.errno}}var pe=9007199254740992,Cr=-9007199254740992,YA=a=>a<Cr||a>pe?NaN:Number(a);function be(a,l,d,b){l=YA(l);try{if(isNaN(l))return 22;var k=k0.getStreamFromFD(a);return o.llseek(k,l,d),J0[b>>3]=BigInt(k.position),k.getdents&&l===0&&d===0&&(k.getdents=null),0}catch($){if(typeof o>"u"||$.name!=="ErrnoError")throw $;return $.errno}}var rt=(a,l,d,b)=>{for(var k=0,$=0;$<d;$++){var G=l0[l>>2],V=l0[l+4>>2];l+=8;var o0=o.write(a,fx,G,V,b);if(o0<0)return-1;if(k+=o0,o0<V)break;typeof b<"u"&&(b+=o0)}return k};function dr(a,l,d,b){try{var k=k0.getStreamFromFD(a),$=rt(k,l,d);return l0[b>>2]=$,0}catch(G){if(typeof o>"u"||G.name!=="ErrnoError")throw G;return G.errno}}var tt=0,QA=()=>de||tt>0,Ue=a=>{M=a,QA()||(n.onExit?.(a),n0=!0),j(a,new rA(a))},ur=(a,l)=>{M=a,QA()||f0(),Ue(a)},Dr=a=>{if(a instanceof rA||a=="unwind")return M;j(1,a)},nt=(a,l,d)=>Le(a,tA,l,d),pr=a=>xe(a),it=a=>{var l=WA(a)+1,d=pr(l);return nt(a,d,l),d},st=(...a)=>o.createPath(...a),me=(...a)=>o.unlink(...a),at=(...a)=>o.createLazyFile(...a),ot=(...a)=>o.createDevice(...a);if(o.createPreloadedFile=Qr,o.preloadFile=IA,o.staticInit(),n.noExitRuntime&&(de=n.noExitRuntime),n.preloadPlugins&&(ue=n.preloadPlugins),n.print&&(q=n.print),n.printErr&&(L=n.printErr),n.wasmBinary&&(R=n.wasmBinary),n.arguments&&(u=n.arguments),n.thisProgram&&(p=n.thisProgram),n.preInit)for(typeof n.preInit=="function"&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.shift()();n.callMain=ux,n.addRunDependency=Tx,n.removeRunDependency=Re,n.FS_preloadFile=IA,n.FS_unlink=me,n.FS_createPath=st,n.FS_createDevice=ot,n.FS=o,n.FS_createDataFile=Oe,n.FS_createLazyFile=at,n.PROXYFS=y0;var br,mr,ZA,jr,xe,He,qx,Ft,LA;function Ae(a){br=n._main=a.__main_argc_argv,mr=a.__funcs_on_exit,ZA=a.fflush,jr=a._emscripten_stack_restore,xe=a._emscripten_stack_alloc,He=a.emscripten_stack_get_current,qx=LA=a.memory,Ft=a.__indirect_function_table}var Je={__assert_fail:CA,__syscall_fcntl64:Ge,__syscall_ioctl:MA,__syscall_openat:DA,emscripten_resize_heap:Br,fd_close:xt,fd_read:et,fd_seek:be,fd_write:dr};function ux(a=[]){var l=br;a.unshift(p);var d=a.length,b=pr((d+1)*4),k=b;for(var $ of a)l0[k>>2]=it($),k+=4;l0[k>>2]=0;try{var G=l(d,b);return ur(G,!0),G}catch(V){return Dr(V)}}function je(a=u){if(Ex>0){b0=je;return}if(i0(),Ex>0){b0=je;return}function l(){if(n.calledRun=!0,!n0){U(),H?.(n),n.onRuntimeInitialized?.();var d=n.noInitialRun||!0;d||ux(a),B0()}}n.setStatus?(n.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>n.setStatus(""),1),l()},1)):l()}var ee;return ee=await ex(),je(),s0?i=n:i=new Promise((a,l)=>{H=a,J=l}),i}})();typeof x=="object"&&typeof A=="object"?(A.exports=e,A.exports.default=e):typeof define=="function"&&define.amd&&define([],()=>e)}}),Qa={};lc(Qa,{createPawnCC:()=>uc,createPawnDbg:()=>Dc});Za.exports=cc(Qa);var Cc=Ya(Ec(),1),dc=Ya(Bc(),1),uc=Cc.default,Dc=dc.default});var N7={};Xf(N7,{default:()=>Zv,deviceExitCode:()=>Qv,program:()=>BA});module.exports=Yf(N7);var xx=require("commander"),Kn=ax(require("chalk"));var ii={name:"@microtronics/studio-cli",version:"1.2.0-alpha.3",description:"Microtronics Studio CLI Tool",main:"./out/api.js",typings:"./out/studio-cli.d.ts",bin:{"studio-cli":"studio-cli"},publishConfig:{access:"public"},scripts:{compile:"npm run build:registryApiTypings && tsc","build:cli":"node build.mjs","build:exe":"node build-exe.mjs",api:"api-extractor run --local --verbose",build:"npm run compile && npm run api && npm run build:cli","watch:build":"npm run compile -- --watch",test:"cross-env STUDIO_ENV=lucky mocha","test-ci":"cross-env STUDIO_ENV=lucky mocha --reporter mocha-junit-reporter","watch:test":"npm run test -- --watch",prepublishOnly:"npm run build","build:registryApiTypings":"npx openapi-typescript https://api.registry.lucky.ci.microtronics.com/v1/openapi.yaml -o ./src/typings/registry.ts"},author:"Microtronics",license:"ISC",dependencies:{"@gera2ld/tarjs":"^0.3.1",ajv:"^8.17.1","ajv-formats":"^3.0.1","ajv-keywords":"^5.1.0",chalk:"^5.4.1",commander:"^12.1.0","cross-fetch":"^4.0.0","deepmerge-ts":"^7.1.5",dotenv:"^16.4.7","file-type-checker":"^1.1.2",glob:"^11.0.1","iconv-lite":"^0.6.3","image-dimensions":"^2.3.0",ini:"^5.0.0",minimatch:"^10.0.1","openapi-fetch":"^0.13.0",pako:"^2.1.0",semver:"^7.7.2","tinytar-fix":"^0.1.1","update-notifier":"^7.3.1",usb:"^2.14.0",uuid:"^9.0.1","vscode-uri":"^3.0.8",yaml:"^2.6.1"},engines:{node:">= 22"},devDependencies:{"@microsoft/api-extractor":"^7.47.11","@microtronics/device-master":"bitbucket:microtronics-core/device-master#v4.1.0-alpha.1","@types/chai":"^4.3.6","@types/chai-as-promised":"^7.1.5","@types/ini":"^4.1.1","@types/mocha":"^10.0.9","@types/node":"^22.9.1","@types/semver":"^7.5.6","@types/update-notifier":"^6.0.8","@types/vscode":"^1.86.2","@yao-pkg/pkg":"^6.22.0",chai:"^4.3.8","chai-as-promised":"^7.1.2","cross-env":"^7.0.3",esbuild:"^0.27.3","extract-zip":"^2.0.1",mocha:"^10.8.2","mocha-junit-reporter":"^2.2.1","openapi-typescript":"^7.6.0","pawncc-wasm":"bitbucket:microtronics-core/pawncc-wasm#v1.1.1",resedit:"^3.0.2",tar:"^7.5.7","ts-node":"^10.9.2",typescript:"^5.6.3"},mocha:{require:["ts-node/register"],"watch-files":"src/**",spec:"./test/**/*.spec.ts",recursive:!0},files:["out/api.js","out/studio-cli.d.ts","dist/main.js","dist/studio-cli.d.ts","studio-cli","CHANGELOG.md"]};var mA=ax(require("node:fs/promises"));var ft=require("vscode-uri"),ra=require("glob"),ne={readFile(x){return mA.default.readFile(x.fsPath)},async rm(x){if(await this.stat(x))return mA.default.rm(x.fsPath,{recursive:!0})},async stat(x){try{let A=await mA.default.stat(x.fsPath),e=(A.isDirectory()?2:0)|(A.isFile()?1:0)|(A.isSymbolicLink()?64:0);return{ctime:A.ctimeMs,mtime:A.mtimeMs,permissions:void 0,size:A.size,type:e}}catch{return null}},async writeFile(x,A){typeof A=="string"&&(A=new TextEncoder().encode(A));let e=ft.Utils.dirname(x);return await mA.default.mkdir(e.fsPath,{recursive:!0}),mA.default.writeFile(x.fsPath,A,{flag:"w"})},async findFiles(x,A,e){let r={ignore:e,nodir:!0,absolute:!0,dot:!0,cwd:x.fsPath};return(await(0,ra.glob)(A,r)).map(i=>{let n=i.replace(/\\/g,"/");return ft.URI.parse(`file:///${n}`)})},async copy(x,A){let e=await mA.default.stat(x.fsPath);return await mA.default.mkdir(ft.Utils.dirname(A).fsPath,{recursive:!0}),e.isDirectory()?mA.default.cp(x.fsPath,A.fsPath,{force:!0,recursive:!0}):mA.default.copyFile(x.fsPath,A.fsPath)},async mkdir(x){await mA.default.mkdir(x.fsPath,{recursive:!0})}};var Jr=require("vscode-uri");var ve=require("vscode-uri");var wr=require("vscode-uri");var Zf=new Uint32Array([0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117]);function Ut(x,A=0){let e=~~A^-1;for(let r=0;r<x.length;r++)e=e>>>8^Zf[(e^x[r])&255];return(e^-1)>>>0}var V7=new Uint8Array([0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64]),W7=new Uint8Array([0,192,193,1,195,3,2,194,198,6,7,199,5,197,196,4,204,12,13,205,15,207,206,14,10,202,203,11,201,9,8,200,216,24,25,217,27,219,218,26,30,222,223,31,221,29,28,220,20,212,213,21,215,23,22,214,210,18,19,211,17,209,208,16,240,48,49,241,51,243,242,50,54,246,247,55,245,53,52,244,60,252,253,61,255,63,62,254,250,58,59,251,57,249,248,56,40,232,233,41,235,43,42,234,238,46,47,239,45,237,236,44,228,36,37,229,39,231,230,38,34,226,227,35,225,33,32,224,160,96,97,161,99,163,162,98,102,166,167,103,165,101,100,164,108,172,173,109,175,111,110,174,170,106,107,171,105,169,168,104,120,184,185,121,187,123,122,186,190,126,127,191,125,189,188,124,180,116,117,181,119,183,182,118,114,178,179,115,177,113,112,176,80,144,145,81,147,83,82,146,150,86,87,151,85,149,148,84,156,92,93,157,95,159,158,94,90,154,155,91,153,89,88,152,136,72,73,137,75,139,138,74,78,142,143,79,141,77,76,140,68,132,133,69,135,71,70,134,130,66,67,131,65,129,128,64]);var h0;(w=>{function x(g,S){let[T,q]=S,{line:L,col:R}=g.linePos(T);return{line:Number(L)-1,startCharacter:R-1,endCharacter:R+(q-T)}}w.yamlRangeToLineInformation=x;let A=new TextEncoder;function e(g){return Ut(A.encode(g)).toString(16)}w.generateHashForLibraryName=e;function r(g){return Ut(A.encode(g)).toString(16)}w.generateHashForFilePath=r;function t(g){return Ut(g).toString(16).toUpperCase().padStart(8,"0")}w.generateCRC32ForFileContent=t;function i(g){try{let S=null;return g?.type==="Buffer"?S=Uint8Array.from(g.data):S=g,new TextDecoder("utf8").decode(S)}catch{return""}}w.convertBlobToString=i;function n(g=""){return g.replace(/\r\n|\n\r|\r/g,`
1528
+ `)}w.normalizeLF=n;function F(g){try{let S=i(g);return n(S).split(`
1529
+ `)}catch{return[]}}w.convertBlobToStringArray=F,w.isNumeric=g=>!Array.isArray(g)&&g-parseFloat(g)+1>=0;function E(g){let S="",T=g.byteLength;for(let q=0;q<T;q++)S+=String.fromCharCode(g[q]);return btoa(S)}w.bufferToBase64=E;function u(g,S){let T=`${g}`.match(/\{\d*(index)(\+\d*)?}/g);if(T){let q=g;return T.forEach(L=>{let R=L.replace(/\+0$/,""),n0=R.match(/index/)?.[0];if(n0){let M=R.slice(1,-1).split(n0)[1],y=parseInt(M)||0;q=q.replace(L,`${S+y}`)}}),q}else return g}w.patchValueWithArrayInfo=u;let p={};function j(g,S,T){let q=p[g];q&&clearTimeout(q.timer),p[g]={timer:setTimeout(()=>{delete p[g],T()},S),handler:T}}w.defer=j})(h0||={});var ba=require("image-dimensions"),ma=require("file-type-checker");var d6=require("cross-fetch/polyfill"),ua=ax(require("openapi-fetch"));var ge=require("vscode-uri");var Dx=require("vscode-uri");var GA=ax(require("semver"));var Mx="dist/",ta="dde/",si="dlo/",ai=".studio/",na="dfiles/",e0;(v=>{v.fileNames={projectSettings:"studio.json",mainAmx:"main.amx",mainAmxReport:"main.xml",ddeXml:"dde.xml",ddeOpenApi:"main.yaml",historyJson:"history.json",mainDDE:"main.dde",autoInc:"auto.inc",defaultInc:"default.inc",autoUplinkInc:"app-uplink.inc",autoDdeInc:"X-dde.inc",mainDdeInc:"main-dde.inc",autoLocalDataInc:"auto-local-data.inc",legacyAutoInc:"legacy-auto.inc",legacyAutoDdeInc:"legacy-auto-dde.inc",legacyAutoUplinkInc:"legacy-auto-uplink.inc",reportTemplate:"mdn_report_template.json",dloCfg:"dlo.cfg",devMirror:"mirror.json",devDeviceLog:"device.jsonl"};let A=`${ai}auto/`,e=`${ai}dev/`,r=`${A}dlo/`,t=`${A}dde/`;v.filePaths={studio:{initFile:`${A}.init`,auto:{path:A,dlo:{path:r,autoInc:`${r}${v.fileNames.autoInc}`,defaultInc:`${r}${v.fileNames.defaultInc}`,autoUplinkInc:`${r}${v.fileNames.autoUplinkInc}`,autoLocalDataInc:`${r}${v.fileNames.autoLocalDataInc}`,autoDdeInc:`${r}${v.fileNames.autoDdeInc}`,mainDdeInc:`${r}${v.fileNames.mainDdeInc}`,legacyAutoInc:`${r}${v.fileNames.legacyAutoInc}`,legacyAutoDdeInc:`${r}${v.fileNames.legacyAutoDdeInc}`,legacyAutoUplinkInc:`${r}${v.fileNames.legacyAutoUplinkInc}`,cfg:`${r}${v.fileNames.dloCfg}`},dde:{path:t,historyJson:`${t}${v.fileNames.historyJson}`}},libdeps:`${ai}libdeps/`,dev:{path:e,mirror:`${e}${v.fileNames.devMirror}`,deviceLog:`${e}${v.fileNames.devDeviceLog}`}},dist:{path:Mx,dloPath:`${Mx}dlo/`,mainAmxPath:`${Mx}dlo/${v.fileNames.mainAmx}`,mainAmxReportPath:`${Mx}dlo/${v.fileNames.mainAmxReport}`,ddeXmlPath:`${Mx}dde/${v.fileNames.ddeXml}`,ddeApiPath:`${Mx}api/`,ddeApi:`${Mx}api/${v.fileNames.ddeOpenApi}`,historyJson:`${Mx}dde/${v.fileNames.historyJson}`,povPath:`${Mx}pov`,povDetailsPath:`${Mx}pov/details`,dfilesPath:`${Mx}dfiles`,dfilesProperties:`${Mx}dfiles/properties.json`,bloPath:`${Mx}blo`,reportTemplate:`${Mx}/${v.fileNames.reportTemplate}`,definesTs:`${Mx}defines.ts`,definesAppTs:`${Mx}defines.app.ts`},dlo:{path:si,mainDLO:`${si}main.dlo`,mainINI:`${si}main.ini`},dde:{path:ta,mainDDE:`${ta}main.dde`},dfiles:{path:na,mainDFILES:`${na}/main.dfiles`},appIni:"app.ini",defaultsIni:"defaults.ini"},v.readme=E=>`# ${E} README
1530
1530
 
1531
- This is the README for your project "${l}". Write a brief description what this project is about.`,B.changelog=`# Changelog
1531
+ This is the README for your project "${E}". Write a brief description what this project is about.`,v.changelog=`# Changelog
1532
1532
 
1533
1533
  All notable changes to this project will be documented in this file.
1534
1534
 
1535
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).`})(s0||={});var ti=dx(require("node:child_process")),ni=require("minimatch");var Yt=require("vscode-uri");var xi=dx(require("semver")),Ho="package.json",Ko=["peerDependencies","dependencies","optionalDependencies"],zo=" ",Wr;(e=>{e.PART_DIST_PATHS=[s0.filePaths.dist.bloPath,s0.filePaths.dist.povDetailsPath];async function x(i,o,t,B){let l=Yt.Utils.joinPath(i,Ho),D=`${t.name}/${Qo(i)}`;if(!await o.stat(l))return!1;let b=await Jo(o,l,D,B);if(!b)return!1;let k=b.pkg;if(typeof k!="object"||k===null||Array.isArray(k))return B.warn(`"${D}/package.json" does not contain a JSON object - skipped normalizing it.`),!1;if(!xi.valid(t.version))return B.warn(`Library manifest version "${t.version}" is not a valid semantic version - skipped normalizing "${D}/package.json".`),!1;Vo(k,t,D,B);let $=Wo(k,t.version);k=$.pkg;let y=$.changed;y&&B.warn(`Patched version "${$.oldVersion??"<none>"}" -> "${t.version}" in "${D}/package.json" (studio.json is the source of truth).`);let q=Yo(t);if(Xo(k,q,D,B)&&(y=!0),!y)return!1;let P=Zo(b.raw),N=b.raw.endsWith(`
1536
- `),R=JSON.stringify(k,null,P)+(N?`
1537
- `:"");try{await o.writeFile(l,R)}catch(O){return B.warn(`Could not write "${D}/package.json": ${O}`),!1}return!0}e.normalizePartPackageJson=x;async function r(i,o,t,B){for(let l of e.PART_DIST_PATHS){let D=Yt.Utils.joinPath(i,l);await x(D,o,t,B)}}e.normalizeLibraryParts=r})(Wr||={});async function Jo(A,x,r,e){try{let i=await A.readFile(x),o=h0.convertBlobToString(i),t=JSON.parse(o);return{raw:o,pkg:t}}catch(i){return e.warn(`Could not read/parse "${r}/package.json": ${i}`),null}}function Vo(A,x,r,e){A.name!==void 0&&A.name!==x.name&&e.warn(`"${r}/package.json" name "${A.name}" does not match library name "${x.name}".`)}function Wo(A,x){if(A.version===x)return{pkg:A,changed:!1,oldVersion:A.version};let r=A.version;if(A.version===void 0&&Object.hasOwn(A,"name")){let{name:e,...i}=A;A={name:e,version:x,...i}}else A.version=x;return{pkg:A,changed:!0,oldVersion:r}}function Xo(A,x,r,e){let i=!1;for(let o of Ko){let t=A[o];if(!t)continue;let B=!1;for(let l of Object.keys(t)){if(!x.has(l))continue;let D=t[l];if(typeof D!="string"||D.startsWith("npm:")||D.includes("://")){e.warn(`Left "${l}" in ${o} of ${r}/package.json untouched - its value "${D}" does not look like a Studio library reference.`);continue}delete t[l],B=!0,i=!0,e.warn(`Removed "${l}" from ${o} of ${r}/package.json - Studio libraries must be declared in studio.json "libraryDependencies" (npm ranges never match prereleases across minor versions).`)}B&&Object.keys(t).length===0&&delete A[o]}return i}function Yo(A){let x=[...Object.keys(A.libraryDependencies||{}),...Object.keys(A.libraryDevDependencies||{})];return new Set(x.map(r=>r.split("/")[1]))}function Qo(A){let x=A.path.replace(/\\/g,"/");for(let r of Wr.PART_DIST_PATHS)if(x===r||x.endsWith(`/${r}`))return r;return x}function Zo(A){let x=A.match(/^\{\r?\n([ \t]+)/);return x?x[1].startsWith(" ")?" ":x[1]:zo}var xF=require("tinytar-fix"),AF=require("pako"),KA=".studio/libdeps",$e="package.json",rF="package-lock.json";function Ai(A){return[...Object.keys(A.libraryDependencies||{}),...Object.keys(A.libraryDevDependencies||{})].map(V0.dependencyIdToName)}async function eF(A,x,r,e){let i=Ex.Utils.joinPath(A,KA,e);try{return await x.stat(Ex.Utils.joinPath(i,z.fileName))?await z.readRaw(i,x):null}catch(o){return r.warn(`Could not read manifest for library "${e}": ${o}`),null}}async function tF(A,x,r,e){let i=new Set,o=Ai(e),t=null;for(;o.length>0;){let B=o.shift();if(i.has(B))continue;i.add(B);let l=await eF(A,x,r,B);if(!l)continue;let D=l.engines?.backend;D&&(!t||z.compareBackendVersion(D,t.backend)>0)&&(t={backend:D,requiredBy:`${l.publisher}/${l.name}`}),o.push(...Ai(l))}return t}var V0;(M=>{async function A(h,L=!1){let Y=h.libraryDependencies||{};return L||Object.assign(Y,h.libraryDevDependencies||{}),Y}M.getAll=A;function x(h){return h.split("/")[1]}M.dependencyIdToName=x;function r(h,L){let Y=x(L);return Ex.Utils.joinPath(h,KA,Y)}M.dependencyToPath=r;function e(h){return isNaN(h.split("")[0])?h.substring(1):h}M.rangeToVersion=e;function i(h,L,Y){if(!kA.satisfies(L,Y,{includePrerelease:!0}))throw new Error(`${h}, version ${L} does not satisfy required constraint ${Y}`)}M.satisfiesSemverRange=i;async function o(h,L,Y={},W=!1){let H=await z.read(h,L),K=H.libraryDependencies||{};W&&Object.assign(K,H.libraryDevDependencies);let i0=Object.keys(Y);for(let r0 of i0)if(Object.hasOwn(K,r0)){let Z=Y[r0],n0=K[r0],U=e(Z),F0=e(n0),v0=kA.compare(U,F0);v0===1?(K[r0]=Z,i(r0,U,n0)):v0===-1&&(K[r0]=n0,i(r0,F0,Z))}else K[r0]=Y[r0];return K}M.validateDependencyTree=o;async function t(h,L,Y,W,H){let K=e(H),i0=Ex.Utils.joinPath(h,KA,W);try{let r0=await z.read(i0,L);return kA.gte(r0.version,K)&&r0.publisher.toLowerCase()===Y.toLowerCase()}catch{return!1}}M.isDependencyInstalled=t;async function B(h,L,Y,W){let H=Ex.Utils.joinPath(h,KA,W);await L.rm(H).catch(K=>{Y.error("removeExisting",K)})}M.removeExisting=B;async function l(h,L,Y,W,H){let K=xF.untar(AF.ungzip(H));await B(h,L,Y,W);for(let i0 of K.values())try{let r0=Ex.Utils.joinPath(h,KA,W,i0.name);await L.writeFile(r0,i0.data)}catch(r0){Y.error("Extracting lib",r0)}}M.extractLibraryContent=l;async function D(h,L,Y,W,H,K,i0,r0=!1){let[Z,n0]=K.split("/");if(i0&&await t(h,L,Z,n0,i0))return;await B(h,L,Y,n0);let U=await Ax.getLibraryProfile(H,Z,n0,W),F0=i0?U.versions?.find(W0=>kA.eq(W0.name,M.rangeToVersion(i0))):U.versions[0];if(!F0)throw new Error(`Library ${K} with version ${i0} does not exist!`);let v0=F0.files.find(W0=>W0.name==="studio.json"),D0=(await nF(H,v0.downloadUrl)).libraryDependencies||{},q0={...D0};q0[K]=`^${F0.name}`,await o(h,L,q0,r0);for(let[W0,Kx]of Object.entries(D0))await D(h,L,Y,W,H,W0,Kx,r0);let I0=F0.files.find(W0=>W0.name==="library.tar.gz");if(!I0)throw new Error(`Library ${K} has no content!`);let nx=await Ax.fetchCustomContent(H,I0.downloadUrl);await l(h,L,Y,n0,nx),await O(h,L,Y,n0,r0);let Ix=await z.read(h,L),lA=Ix.libraryDependencies||{},cA=Ix.libraryDevDependencies||{},rx=r0?cA:lA;rx[K]=`^${F0.name}`,Ix.libraryDependencies=lA,Ix.libraryDevDependencies=cA,await z.write(h,L,Ix)}M.installDependency=D;async function j(h,L,Y,W,H){let K=await z.read(h,L),i0=K.libraryDependencies||{},r0=K.libraryDevDependencies||{},Z=Object.assign(i0,r0);for(let[n0,U]of Object.entries(Z)){let F0=Object.hasOwn(r0,n0);await D(h,L,Y,W,H,n0,U,F0)}for(let[n0]of Object.entries(Z)){let U=x(n0),F0=Object.hasOwn(r0,n0);await O(h,L,Y,U,F0)}Y.done(`Installed ${Object.entries(Z).length} dependencies`)}M.installDependencies=j;async function b(h,L,Y,W,H){let K=await z.read(h,L),i0=K.libraryDependencies||{},r0=K.libraryDevDependencies||{},Z=Object.assign(i0,r0),n0=`${W}/${H}`;delete Z[n0];let U=await iF(h,L,Z);if(!Object.hasOwn(U,n0))await t0(h,L,Y,H),await B(h,L,Y,H),delete r0[n0],delete i0[n0],await z.write(h,L,K);else throw new Error(`Library '${H}' not removed. This library is a dependency of other libraries.`)}M.uninstallDependency=b;async function k(h,L){try{let W=(await ii(Ex.Utils.joinPath(h,$e),L)).workspaces;if(Array.isArray(W)&&W.every(K=>typeof K=="string")&&W.length>0)return W;let H=W?.packages;return Array.isArray(H)&&H.every(K=>typeof K=="string")&&H.length>0?H:null}catch{return null}}M.readNpmWorkspacePatterns=k;function $(h,L){let Y=H=>H.replace(/\\/g,"/").replace(/^\.\//,"").replace(/\/$/,""),W=Y(h);return L.some(H=>{let K=Y(H);return K===W||(0,ni.minimatch)(W,K)})}M.isPathInWorkspaces=$;function y(h,L){if(!L)return{rootInstall:!1,partInstalls:h.map(H=>H.workingPath)};let Y=[],W=!1;for(let H of h)$(H.workingPath,L)?W=!0:Y.push(H.workingPath);return{rootInstall:W,partInstalls:Y}}M.planNpmInstalls=y;async function q(h,L,Y){let W=await z.read(h,L),H=new Set([...Object.keys(W.libraryDependencies||{}),...Object.keys(W.libraryDevDependencies||{})].map(x)),K=new Set,i0=[...H];for(;i0.length>0;){let r0=i0.shift();if(K.has(r0))continue;K.add(r0);let Z=Ex.Utils.joinPath(h,KA,r0);try{let n0=Ex.Utils.joinPath(Z,z.fileName);if(!await L.stat(n0))continue;let U=await z.readRaw(Z,L);await Wr.normalizeLibraryParts(Z,L,U,Y),i0.push(...[...Object.keys(U.libraryDependencies||{}),...Object.keys(U.libraryDevDependencies||{})].map(x))}catch(n0){Y.warn(`Could not normalize library parts for "${r0}": ${n0}`)}}}M.normalizeInstalledLibraryParts=q;async function P(h,L,Y){let W=await z.read(h,L),H=await tF(h,L,Y,W);if(!H)return;let K=W.engines?.backend;if(!K||z.compareBackendVersion(H.backend,K)>0){let i0=K?`"${K}"`:"none",r0=z.isLibrary(W)?"library":"application",Z=z.isLibrary(W)?" Every application using this library must then satisfy that version as well.":"";throw new Error(`Library "${H.requiredBy}" requires "engines.backend" >= "${H.backend}" but the ${r0} "${W.publisher}/${W.name}" declares ${i0}. Raise "engines.backend" in studio.json to at least "${H.backend}".${Z}`)}}M.validateMinimumBackendVersion=P;async function N(h,L,Y){await q(h,L,Y);let W=await z.read(h,L),H=[];W.pov?.details?.workingPath&&H.push({name:"pov",workingPath:W.pov.details.workingPath}),W.blo?.workingPath&&H.push({name:"blo",workingPath:W.blo.workingPath});let K=[];for(let n0 of H){let U=Ex.Utils.joinPath(h,n0.workingPath),F0=Ex.Utils.joinPath(U,$e);await L.stat(F0)&&K.push(n0)}if(K.length===0)return;let i0=await k(h,L),{rootInstall:r0,partInstalls:Z}=y(K,i0);if(r0){let n0=K.filter(U=>!Z.includes(U.workingPath)).map(U=>U.workingPath).join(", ");Y.info(`npm workspaces detected in root package.json - installing dependencies once at the project root (${n0}) using 'npm install' (an in-sync package-lock.json is installed as-is and left unchanged)`),await tt(h,"npm install --no-audit --no-fund",Y)}for(let n0 of K){if(!Z.includes(n0.workingPath))continue;i0?Y.warn(`${n0.workingPath} (${n0.name}) is not covered by any workspace pattern in the root package.json - installing it separately.`):Y.info(`Installing npm dependencies for ${n0.name} (${n0.workingPath})...`);let U=Ex.Utils.joinPath(h,n0.workingPath);await oF(U,L,Y)}}M.installNpmInApmParts=N;async function R(h,L,Y){let W=await z.read(h,L),H=await A(W),K=[],i0=s0.filePaths[Y].path,r0=Y===b0.Part.dlo?"inc":"dfiles";for(let Z in H){let n0=M.dependencyToPath(h,Z),U=M.dependencyIdToName(Z),F0=Ex.Utils.joinPath(n0,i0,`${U}.${r0}`);await L.stat(F0)&&K.push({name:U,path:F0})}if(z.isLibrary(W)){let Z=Ex.Utils.joinPath(h,i0,`${W.name}.${r0}`);await L.stat(Z)&&K.push({name:W.name,path:Z})}return K}M.getApmPartDependencies=R;async function O(h,L,Y,W,H){let K=await z.read(h,L),i0=[{partName:"blo",partDistPath:"blo",workingPath:K.blo?.workingPath},{partName:"pov",partDistPath:"pov/details",workingPath:K.pov?.details?.workingPath}];for(let{partName:r0,partDistPath:Z,workingPath:n0}of i0){if(!n0)continue;let U=Ex.Utils.joinPath(h,KA,W,"dist",...Z.split("/"),$e);if(await L.stat(U))try{let v0=await ri(h,L,n0),C0=H?"devDependencies":"dependencies";v0[C0]=v0[C0]||{};let D0=n0.split("/").length,q0=Array(D0).fill("..").join("/");v0[C0][W]=`file:${q0}/${KA}/${W}/dist/${Z}`,await ei(h,L,n0,v0),Y.info(`Linked ${W} to ${r0} (${n0})`)}catch(v0){Y.warn(`Could not link ${W} to ${r0}: ${v0}`)}}}M.linkLibraryApmParts=O;async function t0(h,L,Y,W){let H=await z.read(h,L),K=[{partName:"blo",workingPath:H.blo?.workingPath},{partName:"pov",workingPath:H.pov?.details?.workingPath}];for(let{partName:i0,workingPath:r0}of K)if(r0)try{let Z=await ri(h,L,r0),n0=!1;Z.dependencies?.[W]?.startsWith("file:")&&(delete Z.dependencies[W],n0=!0),Z.devDependencies?.[W]?.startsWith("file:")&&(delete Z.devDependencies[W],n0=!0),n0&&(await ei(h,L,r0,Z),Y.info(`Unlinked ${W} from ${i0}`))}catch(Z){Y.warn(`Could not unlink ${W} from ${i0}: ${Z}`)}}M.unlinkLibraryApmParts=t0})(V0||={});async function ii(A,x){let r=await x.readFile(A);return JSON.parse(h0.convertBlobToString(r))}function ri(A,x,r){return ii(Ex.Utils.joinPath(A,r,$e),x)}async function ei(A,x,r,e){let i=Ex.Utils.joinPath(A,r,$e),o=JSON.stringify(e,null," ")+`
1538
- `;await x.writeFile(i,o)}async function nF(A,x){return await Ax.fetchCustomContent(A,x,!0)}async function iF(A,x,r){let e={};function i(D,j,b,k=!1){let $=e[D],y=V0.rangeToVersion(b),q=V0.rangeToVersion(b);(!$||kA.gt(y,q))&&(e[D]={publisherId:j,version:b,installed:k})}let o=Object.entries(r).map(([D,j])=>{let[b,k]=D.split("/");return i(k,b,j,!0),k}),t={};for(let D of o)try{let j=await sF(A,x,D);t[D]=Object.entries(j).map(([b,k])=>{let[$,y]=b.split("/");return i(y,$,k),y}),o.push(...t[D])}catch{let b=e[D];throw new Error(`Please import "${b.publisherId}/${D}" first.`)}let B=[];for(;;){let D=o.filter(j=>B.includes(j)?!1:(t[j]||[]).every(k=>B.includes(k)));if(B.push(...D),o.length===B.length||!D.length)break}let l={};return[...new Set(B)].forEach(D=>{let{version:j,publisherId:b}=e[D],k=aF(b,D,j);l[k.libraryId]=k.libraryVersion}),l}async function sF(A,x,r){let e=Ex.Utils.joinPath(A,KA,r);return(await z.read(e,x))?.libraryDependencies||{}}function aF(A,x,r){return{libraryName:x,publisherId:A,libraryVersion:r[0]==="^"?r:"^"+r,libraryId:`${A}/${x}`}}function tt(A,x,r){return new Promise((e,i)=>{ti.exec(x,{cwd:A.fsPath,env:process.env},(o,t,B)=>{if(t&&r.log(t),B&&r.error(B),o){i(new Error(`${o.message}
1539
- ${t}
1540
- ${B}`));return}e()})})}async function oF(A,x,r){let e=Ex.Utils.joinPath(A,rF);if(!await x.stat(e)){r.warn(`No package-lock.json found in ${A.fsPath} - running 'npm install' instead of 'npm ci'.`),await tt(A,"npm install",r);return}try{await tt(A,"npm ci",r)}catch{r.warn(`'npm ci' failed in ${A.fsPath} - falling back to 'npm install'. If package-lock.json changed afterwards, commit it.`),await tt(A,"npm install",r)}}var oi=dx(require("ini"));var FF=h0.convertBlobToString,vF=s0.filePaths.dlo.path,ax;(i=>{let A;(l=>(l.lucky="lucky",l.wynni="wynni",l.production="production"))(A=i.ENV||={});async function x(o,t,B){let l=await z.read(o,t),D=await V0.getAll(l),j={},b={},k={};for(let R in D){let O=V0.dependencyToPath(o,R),t0=V0.dependencyIdToName(R),M=or.Utils.joinPath(O,vF,`${t0}.ini`);await Xr(t,M,j,b,k,t0);let h=or.Utils.joinPath(O,s0.filePaths.defaultsIni);await Xr(t,h,j,b,k,t0)}if(z.isLibrary(l)){let R=or.Utils.joinPath(o,s0.filePaths.dlo.path,`${l.name}.ini`);B&&await t.stat(R)&&B.warn(`dlo/${l.name}.ini is deprecated. Please migrate your defines to defaults.ini in the project root.`),await Xr(t,R,j,b,k,l.name)}let $=l.dlo?.iniFile||s0.filePaths.dlo.mainINI,y=or.Utils.joinPath(o,$);B&&await t.stat(y)&&B.warn(`${$} is deprecated. Please migrate your defines to app.ini in the project root.`);let q=CF($);if(await Xr(t,y,j,b,k,q),z.isLibrary(l)){let R=or.Utils.joinPath(o,s0.filePaths.defaultsIni);await Xr(t,R,j,b,k,"defaults")}let P=EF(l,j,b,k),N=or.Utils.joinPath(o,s0.filePaths.appIni);return await Xr(t,N,j,b,k,"app"),{flat:j,sections:b,definesWithSource:k,defaultsOnly:P}}i.read=x;async function r(o,t,B,l){let D=Object.entries(B.flat),j=[];for(let[$,y]of D){let q=B.definesWithSource[$];if(q?.comment){let N=si(q.comment);for(let R of N.split(`
1541
- `))j.push(` ${R}`)}let P=ai(y)?"number":"string";j.push(` ${$}: ${P};`)}let b=["// Auto-generated by @microtronics/studio-cli \u2014 DO NOT EDIT","declare global {"," interface StudioDefines {",...j," }"," var STUDIO_DEFINES: StudioDefines;","}","","globalThis.STUDIO_DEFINES ??= {} as StudioDefines;",""];for(let[$,y]of D){let q=B.definesWithSource[$];if(q?.comment&&b.push(si(q.comment)),ai(y))b.push(`globalThis.STUDIO_DEFINES['${$}'] = ${Number(y)};`);else{let P=y.replace(/\\/g,"\\\\").replace(/'/g,"\\'");b.push(`globalThis.STUDIO_DEFINES['${$}'] = '${P}';`)}}b.push(""),b.push("export {};"),b.push("");let k=or.Utils.joinPath(o,l??s0.filePaths.dist.definesTs);await t.writeFile(k,b.join(`
1542
- `))}i.exportDefinesTs=r;function e(o,t){let B=[];return{result:o.replace(/\{\{([^}]+)\}\}/g,(D,j)=>{let b=j.trim();return Object.hasOwn(t,b)?t[b]:(B.push(b),D)}),unresolvedKeys:B}}i.replaceDefineTemplates=e})(ax||={});function EF(A,x,r,e){if(z.isLibrary(A))return{flat:{...x},sections:structuredClone(r),definesWithSource:{...e}}}function BF(A){if(A==="")return{kind:"empty"};if(A.startsWith("#")||A.startsWith(";"))return{kind:"comment",text:A.replace(/^[#;]\s?/,"")};if(A.startsWith("[")&&A.endsWith("]"))return{kind:"section",name:A.slice(1,-1)};let x=A.indexOf("=");return x>0?{kind:"keyValue",key:A.slice(0,x).trim()}:{kind:"other"}}function fF(A){let x={},r=A.split(/\r?\n/),e=[],i=null;for(let o of r){let t=BF(o.trim());if(t.kind==="empty"||t.kind==="other"){e=[];continue}if(t.kind==="comment"){e.push(t.text);continue}if(t.kind==="section"){i=t.name;continue}let B=i?`${i}_${t.key}`:t.key;e.length>0&&(x[B]=e.join(`
1543
- `)),e=[]}return x}function si(A){let x=A.split(`
1544
- `);return x.length===1?`/** ${x[0]} */`:`/**
1545
- ${x.map(e=>` * ${e}`).join(`
1535
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).`})(e0||={});var Fa=ax(require("node:child_process")),va=require("minimatch");var oi=require("vscode-uri");var ia=ax(require("semver")),xl="package.json",Al=["peerDependencies","dependencies","optionalDependencies"],el=" ",yr;(r=>{r.PART_DIST_PATHS=[e0.filePaths.dist.bloPath,e0.filePaths.dist.povDetailsPath];async function A(t,i,n,F){let v=oi.Utils.joinPath(t,xl),E=`${n.name}/${al(t)}`;if(!await i.stat(v))return!1;let p=await rl(i,v,E,F);if(!p)return!1;let j=p.pkg;if(typeof j!="object"||j===null||Array.isArray(j))return F.warn(`"${E}/package.json" does not contain a JSON object - skipped normalizing it.`),!1;if(!ia.valid(n.version))return F.warn(`Library manifest version "${n.version}" is not a valid semantic version - skipped normalizing "${E}/package.json".`),!1;tl(j,n,E,F);let w=nl(j,n.version);j=w.pkg;let g=w.changed;g&&F.warn(`Patched version "${w.oldVersion??"<none>"}" -> "${n.version}" in "${E}/package.json" (studio.json is the source of truth).`);let S=sl(n);if(il(j,S,E,F)&&(g=!0),!g)return!1;let T=ol(p.raw),q=p.raw.endsWith(`
1536
+ `),L=JSON.stringify(j,null,T)+(q?`
1537
+ `:"");try{await i.writeFile(v,L)}catch(R){return F.warn(`Could not write "${E}/package.json": ${R}`),!1}return!0}r.normalizePartPackageJson=A;async function e(t,i,n,F){for(let v of r.PART_DIST_PATHS){let E=oi.Utils.joinPath(t,v);await A(E,i,n,F)}}r.normalizeLibraryParts=e})(yr||={});async function rl(x,A,e,r){try{let t=await x.readFile(A),i=h0.convertBlobToString(t),n=JSON.parse(i);return{raw:i,pkg:n}}catch(t){return r.warn(`Could not read/parse "${e}/package.json": ${t}`),null}}function tl(x,A,e,r){x.name!==void 0&&x.name!==A.name&&r.warn(`"${e}/package.json" name "${x.name}" does not match library name "${A.name}".`)}function nl(x,A){if(x.version===A)return{pkg:x,changed:!1,oldVersion:x.version};let e=x.version;if(x.version===void 0&&Object.hasOwn(x,"name")){let{name:r,...t}=x;x={name:r,version:A,...t}}else x.version=A;return{pkg:x,changed:!0,oldVersion:e}}function il(x,A,e,r){let t=!1;for(let i of Al){let n=x[i];if(!n)continue;let F=!1;for(let v of Object.keys(n)){if(!A.has(v))continue;let E=n[v];if(typeof E!="string"||E.startsWith("npm:")||E.includes("://")){r.warn(`Left "${v}" in ${i} of ${e}/package.json untouched - its value "${E}" does not look like a Studio library reference.`);continue}delete n[v],F=!0,t=!0,r.warn(`Removed "${v}" from ${i} of ${e}/package.json - Studio libraries must be declared in studio.json "libraryDependencies" (npm ranges never match prereleases across minor versions).`)}F&&Object.keys(n).length===0&&delete x[i]}return t}function sl(x){let A=[...Object.keys(x.libraryDependencies||{}),...Object.keys(x.libraryDevDependencies||{})];return new Set(A.map(e=>e.split("/")[1]))}function al(x){let A=x.path.replace(/\\/g,"/");for(let e of yr.PART_DIST_PATHS)if(A===e||A.endsWith(`/${e}`))return e;return A}function ol(x){let A=x.match(/^\{\r?\n([ \t]+)/);return A?A[1].startsWith(" ")?" ":A[1]:el}var Fl=require("tinytar-fix"),vl=require("pako"),ie=".studio/libdeps",lt="package.json",fl="package-lock.json";function sa(x){return[...Object.keys(x.libraryDependencies||{}),...Object.keys(x.libraryDevDependencies||{})].map(Ax.dependencyIdToName)}async function ll(x,A,e,r){let t=Dx.Utils.joinPath(x,ie,r);try{return await A.stat(Dx.Utils.joinPath(t,z.fileName))?await z.readRaw(t,A):null}catch(i){return e.warn(`Could not read manifest for library "${r}": ${i}`),null}}async function cl(x,A,e,r){let t=new Set,i=sa(r),n=null;for(;i.length>0;){let F=i.shift();if(t.has(F))continue;t.add(F);let v=await ll(x,A,e,F);if(!v)continue;let E=v.engines?.backend;E&&(!n||z.compareBackendVersion(E,n.backend)>0)&&(n={backend:E,requiredBy:`${v.publisher}/${v.name}`}),i.push(...sa(v))}return n}var Ax;(M=>{async function x(y,O=!1){let Y=y.libraryDependencies||{};return O||Object.assign(Y,y.libraryDevDependencies||{}),Y}M.getAll=x;function A(y){return y.split("/")[1]}M.dependencyIdToName=A;function e(y,O){let Y=A(O);return Dx.Utils.joinPath(y,ie,Y)}M.dependencyToPath=e;function r(y){return isNaN(y.split("")[0])?y.substring(1):y}M.rangeToVersion=r;function t(y,O,Y){if(!GA.satisfies(O,Y,{includePrerelease:!0}))throw new Error(`${y}, version ${O} does not satisfy required constraint ${Y}`)}M.satisfiesSemverRange=t;async function i(y,O,Y={},W=!1){let H=await z.read(y,O),J=H.libraryDependencies||{};W&&Object.assign(J,H.libraryDevDependencies);let s0=Object.keys(Y);for(let r0 of s0)if(Object.hasOwn(J,r0)){let Z=Y[r0],i0=J[r0],U=r(Z),v0=r(i0),f0=GA.compare(U,v0);f0===1?(J[r0]=Z,t(r0,U,i0)):f0===-1&&(J[r0]=i0,t(r0,v0,Z))}else J[r0]=Y[r0];return J}M.validateDependencyTree=i;async function n(y,O,Y,W,H){let J=r(H),s0=Dx.Utils.joinPath(y,ie,W);try{let r0=await z.read(s0,O);return GA.gte(r0.version,J)&&r0.publisher.toLowerCase()===Y.toLowerCase()}catch{return!1}}M.isDependencyInstalled=n;async function F(y,O,Y,W){let H=Dx.Utils.joinPath(y,ie,W);await O.rm(H).catch(J=>{Y.error("removeExisting",J)})}M.removeExisting=F;async function v(y,O,Y,W,H){let J=Fl.untar(vl.ungzip(H));await F(y,O,Y,W);for(let s0 of J.values())try{let r0=Dx.Utils.joinPath(y,ie,W,s0.name);await O.writeFile(r0,s0.data)}catch(r0){Y.error("Extracting lib",r0)}}M.extractLibraryContent=v;async function E(y,O,Y,W,H,J,s0,r0=!1){let[Z,i0]=J.split("/");if(s0&&await n(y,O,Z,i0,s0))return;await F(y,O,Y,i0);let U=await ox.getLibraryProfile(H,Z,i0,W),v0=s0?U.versions?.find(ex=>GA.eq(ex.name,M.rangeToVersion(s0))):U.versions[0];if(!v0)throw new Error(`Library ${J} with version ${s0} does not exist!`);let f0=v0.files.find(ex=>ex.name==="studio.json"),d0=(await El(H,f0.downloadUrl)).libraryDependencies||{},T0={...d0};T0[J]=`^${v0.name}`,await i(y,O,T0,r0);for(let[ex,rA]of Object.entries(d0))await E(y,O,Y,W,H,ex,rA,r0);let L0=v0.files.find(ex=>ex.name==="library.tar.gz");if(!L0)throw new Error(`Library ${J} has no content!`);let cx=await ox.fetchCustomContent(H,L0.downloadUrl);await v(y,O,Y,i0,cx),await R(y,O,Y,i0,r0);let Kx=await z.read(y,O),_A=Kx.libraryDependencies||{},SA=Kx.libraryDevDependencies||{},vx=r0?SA:_A;vx[J]=`^${v0.name}`,Kx.libraryDependencies=_A,Kx.libraryDevDependencies=SA,await z.write(y,O,Kx)}M.installDependency=E;async function u(y,O,Y,W,H){let J=await z.read(y,O),s0=J.libraryDependencies||{},r0=J.libraryDevDependencies||{},Z=Object.assign(s0,r0);for(let[i0,U]of Object.entries(Z)){let v0=Object.hasOwn(r0,i0);await E(y,O,Y,W,H,i0,U,v0)}for(let[i0]of Object.entries(Z)){let U=A(i0),v0=Object.hasOwn(r0,i0);await R(y,O,Y,U,v0)}Y.done(`Installed ${Object.entries(Z).length} dependencies`)}M.installDependencies=u;async function p(y,O,Y,W,H){let J=await z.read(y,O),s0=J.libraryDependencies||{},r0=J.libraryDevDependencies||{},Z=Object.assign(s0,r0),i0=`${W}/${H}`;delete Z[i0];let U=await Bl(y,O,Z);if(!Object.hasOwn(U,i0))await n0(y,O,Y,H),await F(y,O,Y,H),delete r0[i0],delete s0[i0],await z.write(y,O,J);else throw new Error(`Library '${H}' not removed. This library is a dependency of other libraries.`)}M.uninstallDependency=p;async function j(y,O){try{let W=(await fa(Dx.Utils.joinPath(y,lt),O)).workspaces;if(Array.isArray(W)&&W.every(J=>typeof J=="string")&&W.length>0)return W;let H=W?.packages;return Array.isArray(H)&&H.every(J=>typeof J=="string")&&H.length>0?H:null}catch{return null}}M.readNpmWorkspacePatterns=j;function w(y,O){let Y=H=>H.replace(/\\/g,"/").replace(/^\.\//,"").replace(/\/$/,""),W=Y(y);return O.some(H=>{let J=Y(H);return J===W||(0,va.minimatch)(W,J)})}M.isPathInWorkspaces=w;function g(y,O){if(!O)return{rootInstall:!1,partInstalls:y.map(H=>H.workingPath)};let Y=[],W=!1;for(let H of y)w(H.workingPath,O)?W=!0:Y.push(H.workingPath);return{rootInstall:W,partInstalls:Y}}M.planNpmInstalls=g;async function S(y,O,Y){let W=await z.read(y,O),H=new Set([...Object.keys(W.libraryDependencies||{}),...Object.keys(W.libraryDevDependencies||{})].map(A)),J=new Set,s0=[...H];for(;s0.length>0;){let r0=s0.shift();if(J.has(r0))continue;J.add(r0);let Z=Dx.Utils.joinPath(y,ie,r0);try{let i0=Dx.Utils.joinPath(Z,z.fileName);if(!await O.stat(i0))continue;let U=await z.readRaw(Z,O);await yr.normalizeLibraryParts(Z,O,U,Y),s0.push(...[...Object.keys(U.libraryDependencies||{}),...Object.keys(U.libraryDevDependencies||{})].map(A))}catch(i0){Y.warn(`Could not normalize library parts for "${r0}": ${i0}`)}}}M.normalizeInstalledLibraryParts=S;async function T(y,O,Y){let W=await z.read(y,O),H=await cl(y,O,Y,W);if(!H)return;let J=W.engines?.backend;if(!J||z.compareBackendVersion(H.backend,J)>0){let s0=J?`"${J}"`:"none",r0=z.isLibrary(W)?"library":"application",Z=z.isLibrary(W)?" Every application using this library must then satisfy that version as well.":"";throw new Error(`Library "${H.requiredBy}" requires "engines.backend" >= "${H.backend}" but the ${r0} "${W.publisher}/${W.name}" declares ${s0}. Raise "engines.backend" in studio.json to at least "${H.backend}".${Z}`)}}M.validateMinimumBackendVersion=T;async function q(y,O,Y){await S(y,O,Y);let W=await z.read(y,O),H=[];W.pov?.details?.workingPath&&H.push({name:"pov",workingPath:W.pov.details.workingPath}),W.blo?.workingPath&&H.push({name:"blo",workingPath:W.blo.workingPath});let J=[];for(let i0 of H){let U=Dx.Utils.joinPath(y,i0.workingPath),v0=Dx.Utils.joinPath(U,lt);await O.stat(v0)&&J.push(i0)}if(J.length===0)return;let s0=await j(y,O),{rootInstall:r0,partInstalls:Z}=g(J,s0);if(r0){let i0=J.filter(U=>!Z.includes(U.workingPath)).map(U=>U.workingPath).join(", ");Y.info(`npm workspaces detected in root package.json - installing dependencies once at the project root (${i0}) using 'npm install' (an in-sync package-lock.json is installed as-is and left unchanged)`),await Ht(y,"npm install --no-audit --no-fund",Y)}for(let i0 of J){if(!Z.includes(i0.workingPath))continue;s0?Y.warn(`${i0.workingPath} (${i0.name}) is not covered by any workspace pattern in the root package.json - installing it separately.`):Y.info(`Installing npm dependencies for ${i0.name} (${i0.workingPath})...`);let U=Dx.Utils.joinPath(y,i0.workingPath);await ul(U,O,Y)}}M.installNpmInApmParts=q;async function L(y,O,Y){let W=await z.read(y,O),H=await x(W),J=[],s0=e0.filePaths[Y].path,r0=Y===p0.Part.dlo?"inc":"dfiles";for(let Z in H){let i0=M.dependencyToPath(y,Z),U=M.dependencyIdToName(Z),v0=Dx.Utils.joinPath(i0,s0,`${U}.${r0}`);await O.stat(v0)&&J.push({name:U,path:v0})}if(z.isLibrary(W)){let Z=Dx.Utils.joinPath(y,s0,`${W.name}.${r0}`);await O.stat(Z)&&J.push({name:W.name,path:Z})}return J}M.getApmPartDependencies=L;async function R(y,O,Y,W,H){let J=await z.read(y,O),s0=[{partName:"blo",partDistPath:"blo",workingPath:J.blo?.workingPath},{partName:"pov",partDistPath:"pov/details",workingPath:J.pov?.details?.workingPath}];for(let{partName:r0,partDistPath:Z,workingPath:i0}of s0){if(!i0)continue;let U=Dx.Utils.joinPath(y,ie,W,"dist",...Z.split("/"),lt);if(await O.stat(U))try{let f0=await aa(y,O,i0),B0=H?"devDependencies":"dependencies";f0[B0]=f0[B0]||{};let d0=i0.split("/").length,T0=Array(d0).fill("..").join("/");f0[B0][W]=`file:${T0}/${ie}/${W}/dist/${Z}`,await oa(y,O,i0,f0),Y.info(`Linked ${W} to ${r0} (${i0})`)}catch(f0){Y.warn(`Could not link ${W} to ${r0}: ${f0}`)}}}M.linkLibraryApmParts=R;async function n0(y,O,Y,W){let H=await z.read(y,O),J=[{partName:"blo",workingPath:H.blo?.workingPath},{partName:"pov",workingPath:H.pov?.details?.workingPath}];for(let{partName:s0,workingPath:r0}of J)if(r0)try{let Z=await aa(y,O,r0),i0=!1;Z.dependencies?.[W]?.startsWith("file:")&&(delete Z.dependencies[W],i0=!0),Z.devDependencies?.[W]?.startsWith("file:")&&(delete Z.devDependencies[W],i0=!0),i0&&(await oa(y,O,r0,Z),Y.info(`Unlinked ${W} from ${s0}`))}catch(Z){Y.warn(`Could not unlink ${W} from ${s0}: ${Z}`)}}M.unlinkLibraryApmParts=n0})(Ax||={});async function fa(x,A){let e=await A.readFile(x);return JSON.parse(h0.convertBlobToString(e))}function aa(x,A,e){return fa(Dx.Utils.joinPath(x,e,lt),A)}async function oa(x,A,e,r){let t=Dx.Utils.joinPath(x,e,lt),i=JSON.stringify(r,null," ")+`
1538
+ `;await A.writeFile(t,i)}async function El(x,A){return await ox.fetchCustomContent(x,A,!0)}async function Bl(x,A,e){let r={};function t(E,u,p,j=!1){let w=r[E],g=Ax.rangeToVersion(p),S=Ax.rangeToVersion(p);(!w||GA.gt(g,S))&&(r[E]={publisherId:u,version:p,installed:j})}let i=Object.entries(e).map(([E,u])=>{let[p,j]=E.split("/");return t(j,p,u,!0),j}),n={};for(let E of i)try{let u=await Cl(x,A,E);n[E]=Object.entries(u).map(([p,j])=>{let[w,g]=p.split("/");return t(g,w,j),g}),i.push(...n[E])}catch{let p=r[E];throw new Error(`Please import "${p.publisherId}/${E}" first.`)}let F=[];for(;;){let E=i.filter(u=>F.includes(u)?!1:(n[u]||[]).every(j=>F.includes(j)));if(F.push(...E),i.length===F.length||!E.length)break}let v={};return[...new Set(F)].forEach(E=>{let{version:u,publisherId:p}=r[E],j=dl(p,E,u);v[j.libraryId]=j.libraryVersion}),v}async function Cl(x,A,e){let r=Dx.Utils.joinPath(x,ie,e);return(await z.read(r,A))?.libraryDependencies||{}}function dl(x,A,e){return{libraryName:A,publisherId:x,libraryVersion:e[0]==="^"?e:"^"+e,libraryId:`${x}/${A}`}}function Ht(x,A,e){return new Promise((r,t)=>{Fa.exec(A,{cwd:x.fsPath,env:process.env},(i,n,F)=>{if(n&&e.log(n),F&&e.error(F),i){t(new Error(`${i.message}
1539
+ ${n}
1540
+ ${F}`));return}r()})})}async function ul(x,A,e){let r=Dx.Utils.joinPath(x,fl);if(!await A.stat(r)){e.warn(`No package-lock.json found in ${x.fsPath} - running 'npm install' instead of 'npm ci'.`),await Ht(x,"npm install",e);return}try{await Ht(x,"npm ci",e)}catch{e.warn(`'npm ci' failed in ${x.fsPath} - falling back to 'npm install'. If package-lock.json changed afterwards, commit it.`),await Ht(x,"npm install",e)}}var Ea=ax(require("ini"));var Dl=h0.convertBlobToString,pl=e0.filePaths.dlo.path,Fx;(t=>{let x;(v=>(v.lucky="lucky",v.wynni="wynni",v.production="production"))(x=t.ENV||={});async function A(i,n,F){let v=await z.read(i,n),E=await Ax.getAll(v),u={},p={},j={};for(let L in E){let R=Ax.dependencyToPath(i,L),n0=Ax.dependencyIdToName(L),M=ge.Utils.joinPath(R,pl,`${n0}.ini`);await kr(n,M,u,p,j,n0);let y=ge.Utils.joinPath(R,e0.filePaths.defaultsIni);await kr(n,y,u,p,j,n0)}if(z.isLibrary(v)){let L=ge.Utils.joinPath(i,e0.filePaths.dlo.path,`${v.name}.ini`);F&&await n.stat(L)&&F.warn(`dlo/${v.name}.ini is deprecated. Please migrate your defines to defaults.ini in the project root.`),await kr(n,L,u,p,j,v.name)}let w=v.dlo?.iniFile||e0.filePaths.dlo.mainINI,g=ge.Utils.joinPath(i,w);F&&await n.stat(g)&&F.warn(`${w} is deprecated. Please migrate your defines to app.ini in the project root.`);let S=hl(w);if(await kr(n,g,u,p,j,S),z.isLibrary(v)){let L=ge.Utils.joinPath(i,e0.filePaths.defaultsIni);await kr(n,L,u,p,j,"defaults")}let T=bl(v,u,p,j),q=ge.Utils.joinPath(i,e0.filePaths.appIni);return await kr(n,q,u,p,j,"app"),{flat:u,sections:p,definesWithSource:j,defaultsOnly:T}}t.read=A;async function e(i,n,F,v){let E=Object.entries(F.flat),u=[];for(let[w,g]of E){let S=F.definesWithSource[w];if(S?.comment){let q=la(S.comment);for(let L of q.split(`
1541
+ `))u.push(` ${L}`)}let T=ca(g)?"number":"string";u.push(` ${w}: ${T};`)}let p=["// Auto-generated by @microtronics/studio-cli \u2014 DO NOT EDIT","declare global {"," interface StudioDefines {",...u," }"," var STUDIO_DEFINES: StudioDefines;","}","","globalThis.STUDIO_DEFINES ??= {} as StudioDefines;",""];for(let[w,g]of E){let S=F.definesWithSource[w];if(S?.comment&&p.push(la(S.comment)),ca(g))p.push(`globalThis.STUDIO_DEFINES['${w}'] = ${Number(g)};`);else{let T=g.replace(/\\/g,"\\\\").replace(/'/g,"\\'");p.push(`globalThis.STUDIO_DEFINES['${w}'] = '${T}';`)}}p.push(""),p.push("export {};"),p.push("");let j=ge.Utils.joinPath(i,v??e0.filePaths.dist.definesTs);await n.writeFile(j,p.join(`
1542
+ `))}t.exportDefinesTs=e;function r(i,n){let F=[];return{result:i.replace(/\{\{([^}]+)\}\}/g,(E,u)=>{let p=u.trim();return Object.hasOwn(n,p)?n[p]:(F.push(p),E)}),unresolvedKeys:F}}t.replaceDefineTemplates=r})(Fx||={});function bl(x,A,e,r){if(z.isLibrary(x))return{flat:{...A},sections:structuredClone(e),definesWithSource:{...r}}}function ml(x){if(x==="")return{kind:"empty"};if(x.startsWith("#")||x.startsWith(";"))return{kind:"comment",text:x.replace(/^[#;]\s?/,"")};if(x.startsWith("[")&&x.endsWith("]"))return{kind:"section",name:x.slice(1,-1)};let A=x.indexOf("=");return A>0?{kind:"keyValue",key:x.slice(0,A).trim()}:{kind:"other"}}function jl(x){let A={},e=x.split(/\r?\n/),r=[],t=null;for(let i of e){let n=ml(i.trim());if(n.kind==="empty"||n.kind==="other"){r=[];continue}if(n.kind==="comment"){r.push(n.text);continue}if(n.kind==="section"){t=n.name;continue}let F=t?`${t}_${n.key}`:n.key;r.length>0&&(A[F]=r.join(`
1543
+ `)),r=[]}return A}function la(x){let A=x.split(`
1544
+ `);return A.length===1?`/** ${A[0]} */`:`/**
1545
+ ${A.map(r=>` * ${r}`).join(`
1546
1546
  `)}
1547
- */`}function ai(A){return A!==""&&!isNaN(Number(A))}function CF(A){return(A.split("/").pop()||A).replace(/\.ini$/i,"")}function Fi(A,x,r){let e=x?`${r}: ${x}`:void 0;return A&&e?`${A}
1548
- ${e}`:e||A}function vi(A,x,r,e,i,o,t){let B=i?`${i}_${e}`:e,l={value:A,sourceUri:x,sourceLine:cF(r,e,i)};return o[B]&&(l.comment=`${t}: ${o[B]}`),l}function lF(A,x,r,e,i,o,t,B,l){e[A]||(e[A]={});for(let[D,j]of Object.entries(x)){let b=`${A}_${D}`,k=B[b],$=`${j}`;r[b]=$,e[A][D]=$;let y=vi($,o,t,D,A,B,l);y.comment=Fi(i[b]?.comment,k,l),i[b]=y}}async function Xr(A,x,r,e,i,o){if(!await A.stat(x))return;let t=await A.readFile(x),B=FF(t),l=oi.parse(B),D=x.toString(),j=B.split(/\r?\n/),b=fF(B);for(let[k,$]of Object.entries(l))if(typeof $=="object"&&$!==null)lF(k,$,r,e,i,D,j,b,o);else{let y=b[k],q=`${$}`;r[k]=q;let P=vi(q,D,j,k,null,b,o);P.comment=Fi(i[k]?.comment,y,o),i[k]=P}}function cF(A,x,r){let e=r===null,i=r?`[${r}]`:null,o=new RegExp(`^\\s*${DF(x)}\\s*=`);for(let t=0;t<A.length;t++){let B=A[t].trim();if(i&&B===i){e=!0;continue}if(e&&B.startsWith("[")&&B.endsWith("]")&&r!==null){e=!1;continue}if(e&&o.test(A[t]))return t}return 0}function DF(A){return A.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var it=dx(require("semver/preload")),{GET:Qt,POST:nt,PUT:Ei}=(0,Bi.default)();function Qx(A){if(A)return{authorization:`Bearer ${A}`}}var Ax;($=>{$.getAPIUrl=y=>{let q="https://api.registry.microtronics.com";return y===ax.ENV.lucky?q="https://api.registry.lucky.ci.microtronics.com":y===ax.ENV.wynni&&(q="https://api.registry.wynni.ci.microtronics.com"),{baseUrl:q+"/v1"}};async function x(y,q,P,N){let{data:R,error:O}=await Qt("/publisher/{publisherId}/libraries/{libraryId}",{...(0,$.getAPIUrl)(N),headers:{...Qx(y)},params:{path:{publisherId:q,libraryId:P}}});if(O)throw new Error(O.reason);return R}$.getLibraryProfile=x;async function r(y,q,P=!1){let N=await fetch(q,{headers:{...Qx(y),...k(!0)}});if(N.status===200)return P?await N.json():await N.arrayBuffer();throw new Error("Failed to fetch the library content")}$.fetchCustomContent=r;async function e(y,q,P){try{let{data:N,error:R}=await Qt("/publisher/{publisherId}",{...(0,$.getAPIUrl)(P),headers:{...Qx(y)},params:{path:{publisherId:q}}});return R?(console.error(R),null):N}catch(N){return console.error(N),null}}$.getPublisher=e;async function i(y,q,P,N){try{let{data:R,error:O}=await nt("/packages/{publisherId}/applications",{...(0,$.getAPIUrl)(N),headers:{...Qx(y),...k(!0)},params:{path:{publisherId:q}},body:{...P}});if(O)throw new Error(O.reason);return R.id}catch{return null}}$.createNewApplication=i;async function o(y,q,P,N){let{data:R,error:O}=await Qt("/publisher/{publisherId}/applications/{applicationId}",{...(0,$.getAPIUrl)(N),headers:{...Qx(y),...k(!0)},params:{path:{publisherId:q,applicationId:P}}});if(O)throw new Error(O.reason);return R}$.getExistingApplication=o;async function t(y,q,P,N,R){try{let{error:O}=await Ei("/packages/{publisherId}/applications/{applicationId}",{...(0,$.getAPIUrl)(R),headers:{...Qx(y),...k(!0)},params:{path:{publisherId:q,applicationId:P}},body:{...N}});if(O)throw new Error(O.reason);return}catch{return null}}$.updateExistingApplication=t;async function B(y,q,P,N,R,O){let t0=!!it.default.valid(N);try{let{error:M}=await Ei("/packages/{publisherId}/applications/{applicationId}/versions/{applicationVersion}",{...(0,$.getAPIUrl)(O),headers:{...Qx(y),...k(t0)},params:{path:{publisherId:q,applicationId:P,applicationVersion:N}},body:{...R}});if(M)throw new Error(M.reason);return}catch{return null}}$.updateExistingApplicationVersion=B;async function l(y,q,P,N,R,O){let t0=!!it.default.valid(N),{data:M,error:h}=await nt("/packages/{publisherId}/applications/{applicationId}/versions/{applicationVersion}",{...(0,$.getAPIUrl)(O),headers:{...Qx(y),...k(t0)},params:{path:{publisherId:q,applicationId:P,applicationVersion:N}},body:{},bodySerializer(){return R}});if(h)throw new Error(h.reason||h.err||h);return M}$.publishApplicationVersion=l;let D={"README.md":"text/markdown","CHANGELOG.md":"text/markdown","library.tar.gz":"application/gzip","studio.json":"application/json"};async function j(y,q,P,N,R,O){try{let{error:t0}=await nt("/packages/{publisherId}/libraries/{libraryId}/versions/{libraryVersion}",{...(0,$.getAPIUrl)(O),headers:{...Qx(y),...k(!0)},params:{path:{publisherId:q,libraryId:P,libraryVersion:N}},body:{...R},bodySerializer(M){let h=new FormData;for(let[L,Y]of Object.entries(M))Y!==void 0&&h.append(L,new Blob([Y],{type:D[L]}),L);return h}});if(t0)throw new Error(t0.reason)}catch(t0){throw console.error(t0),t0}}$.publishLibraryVersion=j;async function b(y,q,P,N,R,O,t0){let M=!!it.default.valid(N),{error:h}=await nt("/packages/{publisherId}/applications/{applicationId}/versions/{applicationVersion}/files/{applicationFileName}",{...(0,$.getAPIUrl)(t0),headers:{...Qx(y),...k(M),"Content-Type":"application/octet-stream"},params:{path:{publisherId:q,applicationId:P,applicationVersion:N,applicationFileName:R}},body:{},bodySerializer(){return O}});if(h)throw new Error(h.reason)}$.updateApplicationFile=b;function k(y=!1){return y?{"X-Semver":"true"}:{}}$.injectSemverHeader=k})(Ax||={});var Di=dx(require("semver/preload"));var di=require("deepmerge-ts"),dF=h0.isNumeric,fi="52v007",Ci="53v001",uF="54v001",bF="56v001",Zx={_manifest:null,_stat:null,_overwrites:null,get manifest(){return(0,di.deepmerge)(structuredClone(this._manifest),Zx._overwrites||{})},set manifest(A){this._manifest=A},set overwrites(A){this._overwrites=A},get stat(){return this._stat},set stat(A){this._stat=A},clear(){this._stat=null,this._manifest=null}},z;(n0=>{let A=h0.convertBlobToString;n0.fileName="studio.json";let r;(I0=>(I0.m22x="m22x",I0.m23x="m23x",I0.nrf91="nrf91",I0.m2blegw="m2blegw",I0.m2easyv3="m2easyv3",I0.m2easyiot="m2easyiot"))(r=n0.DeviceProfiles||={});let e;(D0=>(D0.app="app",D0.library="library",D0.addon="addon",D0.analytics="analytics"))(e=n0.ProjectTypes||={});let i;(v0=>(v0.restricted="restricted",v0.global="global"))(i=n0.BloAccessLevel||={});let o;(v0=>(v0.embedded="$embedded",v0.pure="$pure"))(o=n0.PovLocation||={});function t(U){Zx.overwrites=U}n0.setOverwrites=t;function B(){Zx.overwrites=null}n0.clearOverwrites=B;async function l(U,F0){let v0=Yr.Utils.joinPath(U,n0.fileName),C0=await F0.stat(v0);if(Zx.manifest===null||v0?.fsPath!==Zx.stat?.path.fsPath||C0?.ctime!==Zx.stat?.ctime||C0?.mtime!==Zx.stat?.mtime||C0?.size!==Zx.stat?.size){let D0=await F0.readFile(v0),q0=A(D0);Zx.manifest=JSON.parse(q0),Zx.stat={...C0,path:v0}}return Zx.manifest}n0.read=l;async function D(U,F0){return await F0.readFile(Yr.Utils.joinPath(U,n0.fileName))}n0.readAsBlob=D;async function j(U,F0){let v0=Yr.Utils.joinPath(U,n0.fileName),C0=await F0.readFile(v0),D0=A(C0);return JSON.parse(D0)}n0.readRaw=j;async function b(U,F0,v0){return Zx.clear(),kF(v0),F0.writeFile(Yr.Utils.joinPath(U,n0.fileName),JSON.stringify(v0,null," "))}n0.write=b;function k(U){return U.library!==void 0?U.library:U.type==="library"}n0.isLibrary=k;function $(U){return U.type==="addon"}n0.isAddon=$;function y(U){return U.type===void 0&&!k(U)?!0:U.type==="app"}n0.isApp=y;function q(U){return U.type===void 0?!0:U.type==="app"}n0.isIotApp=q;function P(U){return U.type==="analytics"}n0.isAnalytics=P;async function N(U,F0,v0){v0||(v0=await l(U,F0)),yF(v0),pF(v0),jF(v0),gF(v0)}n0.validateBasicManifest=N;function R(U){let F0="Library name can only contain 'a' through 'z', '0' through '9', '_' and '-'. The Library name must start with an alphabetic or numeric character.";if(U.match(/^[a-z0-9-_]+$/)){let C0=["-","_"];if(C0.includes(U[0])||C0.includes(U[U.length-1]))return F0}else return F0;return U.length<3||U.length>20?"The library name is beyond permissible length of 20 characters.":null}n0.validateLibraryName=R;function O(U,F0){if(F0)return R(U);{let v0="Project name can only contain 'A' through 'Z', 'a' through 'z', '0' through '9', ' ', '_' and '-'. The Project name must start with an alphabetic or numeric character.";if(!U.match(/^([a-zA-Z0-9 _-]+)$/))return v0;if(U.length<3||U.length>40)return"The project name is beyond permissible length of 40 characters.";let D0=["-","_"," "];return D0.includes(U[0])||D0.includes(U[U.length-1])?v0:null}}n0.validateProjectName=O;function t0(U){return U.length<5?"The description must have at least 5 characters.":null}n0.validateDescription=t0;function M(U){if(!U)return"No publisher set yet";let F0="Publisher can only contain 'A' through 'Z', 'a' through 'z', '0' through '9' and '-'. The Publisher start with an alphabetic or numeric character.";if(U.match(/^[a-zA-Z0-9-]+$/)){let C0=["_"];if(C0.includes(U[0])||C0.includes(U[U.length-1]))return F0}else return F0;return null}n0.validatePublisherId=M;async function h(U,F0,v0){return await Ax.getPublisher(U,F0,v0)?null:`Publisher '${F0}' does not exist.`}n0.validatePublisherOnline=h;let L=/^(((?!-))(xn--)?[a-z0-9\-_]{0,61}[a-z0-9]{1,1}\.)*(xn--)?([a-z0-9-]{1,61}|[a-z0-9-]{1,30})\.[a-z]{2,}$/;async function Y(U){if(U===void 0)return"Allowed backends not specified yet";if(U===null)return null;if(Array.isArray(U)||U?.includes(";")){let F0=U?.includes(";")?U.split(";"):U;for(let v0 of F0)if(!v0.match(L))return`Domain "${v0}" is invalid`}else if(!U?.match(L)&&U!=="*")return'Invalid value for "allowedBackends"';return null}n0.validateRegistryAllowedBackends=Y;let W=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i;async function H(U){if(U===void 0)return"Allowed applications not specified yet";if(U===null)return null;if(Array.isArray(U)||U?.includes(";")){let F0=U?.includes(";")?U.split(";"):U;for(let v0 of F0)if(!v0.match(W))return`Application id "${v0}" is invalid`}else if(!U?.match(W)&&U!=="*")return'Invalid value for "allowedApplications"';return null}n0.validateRegistryAllowedApplications=H;async function K(U,F0,v0){let C0=v0.icon;if(!C0)throw new Error("App icon is required for publishing an application!");let D0=Yr.Utils.joinPath(U,C0);if(!await F0.stat(D0))throw new Error(`Could not load icon "${C0}"`);let I0=await F0.readFile(D0),nx=(0,li.imageDimensionsFromData)(I0);if(!nx)throw new Error("App icon could not be validated!");if(nx?.width!==nx?.height)throw new Error("App icon has to be a square!");if(nx.width>512||nx.width<75)throw new Error("App icon size should be between 75px and 512px!");if(!(0,ci.isPNG)(I0))throw new Error("App icon has to be of type PNG!")}n0.validateApplicationIcon=K;function i0(U){let{engines:F0}=U;if(F0?.backend&&!F0.backend.match(/(^[5-9][2-9]|[6-9]\d+|\d{3,})v(0(0[0-9]|[1-9]\d)|[1-9]\d{2}|[1-9]\d{3,})$/))throw new Error('Setting "engines.backend" is invalid');mF(U),hF(U)}n0.validateEngineSettings=i0;function r0(U,F0){let v0=q0=>{let I0=/^(\d+)v(\d+)$/.exec(q0);return I0?[Number(I0[1]),Number(I0[2])]:null},C0=v0(U),D0=v0(F0);return C0&&D0?C0[0]-D0[0]||C0[1]-D0[1]:U===F0?0:U<F0?-1:1}n0.compareBackendVersion=r0;async function Z(U,F0,v0,C0){C0||(C0=await n0.read(U,F0));let D0=n0.isAddon(C0),q0=n0.isAnalytics(C0);switch(v0){case b0.Part.dlo:return!!C0?.dlo?.mainFile&&!D0&&!q0;case b0.Part.blo:return!!(C0.blo?.buildCommand&&C0.blo?.workingPath);case b0.Part.pov:return!!(C0.pov?.details?.buildCommand&&C0.pov.details.workingPath);case b0.Part.dde:case b0.Part.dfiles:return!0;default:return!1}}n0.isApmPartEnabled=Z})(z||={});function pF(A){let{pov:x}=A;if(x&&x.details){if(!Object.hasOwn(x.details,"buildCommand"))throw new Error('Setting "pov.details.buildCommand" missing!');if(!Object.hasOwn(x.details,"workingPath"))throw new Error('Setting "pov.details.workingPath" missing!')}}function jF(A){let{blo:x}=A;if(x){if(!Object.hasOwn(x,"buildCommand"))throw new Error('Setting "blo.buildCommand" missing!');if(!Object.hasOwn(x,"workingPath"))throw new Error('Setting "blo.workingPath" missing!');if(x.accessLevel&&!["restricted","global"].includes(x.accessLevel))throw new Error('Only "restricted" or "global" are allowed as value for "blo.accessLevel"!')}}function mF(A){let{backend:x,productId:r,hwfw:e}=A.engines;if(z.isAddon(A)&&(r||e))throw new Error('For project type "addon", "engines.hwfw" or "engines.productId" is not allowed!"');if(x&&x>=fi){if(e&&r)throw new Error('Only "engines.hwfw" or "engines.productId" is allowed!"')}else if(r)throw new Error(`"engines.productId" requires "engines.backend" to be "${fi}"`)}function hF(A){if(!z.isAddon(A)&&!z.isAnalytics(A))return;let{backend:x}=A.engines,r=z.isAddon(A)?uF:bF;if(!x||x<r)throw new Error(`Project type "${A.type}" requires "engines.backend" to be ">=${r}"`);if(A.dlo)throw new Error(`For project type "${A.type}", "dlo" is not supported!"`);if(A.dpid)throw new Error(`For project type "${A.type}", "dpid" is not supported!"`)}function gF(A){let{maxInstancesPerSite:x}=A;if(x===void 0){if(z.isAddon(A))throw new Error('Property "maxInstancesPerSite" is required for addon projects!');return}if(!z.isAddon(A))throw new Error('Property "maxInstancesPerSite" is only allowed for addon projects!');if(!Number.isInteger(x))throw new Error('Property "maxInstancesPerSite" must be an integer!');if(x<1||x>100)throw new Error('Property "maxInstancesPerSite" must be between 1 and 100!')}function yF(A){if((A.engines?.backend||"00v000")>=Ci||z.isLibrary(A)){if(!Di.default.valid(A.version))throw new Error(`From "engines.backend" version >= ${Ci} onwards "version" has to be a semantic version string!"`)}else if(!dF(A.version))throw new Error('"version" has to be a number!')}function kF(A){A.registry&&(delete A.registry.allowedBackends,delete A.registry.target)}var kr=require("vscode-uri");var fx=require("vscode-uri");var Ps=dx(require("ajv")),Ts=dx(require("ajv-formats"));var ui={$schema:"http://json-schema.org/draft-07/schema#",title:"Dynamic DDE Schema",description:"Describe your data structure for Microtronics IoT devices",type:"object",additionalProperties:!1,properties:{dde:{type:"string",default:"1.0.0",readOnly:!0,description:"Version of the DDE schema. Do not modify this value.",markdownDescription:`Version of the DDE schema.
1547
+ */`}function ca(x){return x!==""&&!isNaN(Number(x))}function hl(x){return(x.split("/").pop()||x).replace(/\.ini$/i,"")}function Ba(x,A,e){let r=A?`${e}: ${A}`:void 0;return x&&r?`${x}
1548
+ ${r}`:r||x}function Ca(x,A,e,r,t,i,n){let F=t?`${t}_${r}`:r,v={value:x,sourceUri:A,sourceLine:yl(e,r,t)};return i[F]&&(v.comment=`${n}: ${i[F]}`),v}function gl(x,A,e,r,t,i,n,F,v){r[x]||(r[x]={});for(let[E,u]of Object.entries(A)){let p=`${x}_${E}`,j=F[p],w=`${u}`;e[p]=w,r[x][E]=w;let g=Ca(w,i,n,E,x,F,v);g.comment=Ba(t[p]?.comment,j,v),t[p]=g}}async function kr(x,A,e,r,t,i){if(!await x.stat(A))return;let n=await x.readFile(A),F=Dl(n),v=Ea.parse(F),E=A.toString(),u=F.split(/\r?\n/),p=jl(F);for(let[j,w]of Object.entries(v))if(typeof w=="object"&&w!==null)gl(j,w,e,r,t,E,u,p,i);else{let g=p[j],S=`${w}`;e[j]=S;let T=Ca(S,E,u,j,null,p,i);T.comment=Ba(t[j]?.comment,g,i),t[j]=T}}function yl(x,A,e){let r=e===null,t=e?`[${e}]`:null,i=new RegExp(`^\\s*${kl(A)}\\s*=`);for(let n=0;n<x.length;n++){let F=x[n].trim();if(t&&F===t){r=!0;continue}if(r&&F.startsWith("[")&&F.endsWith("]")&&e!==null){r=!1;continue}if(r&&i.test(x[n]))return n}return 0}function kl(x){return x.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var zt=ax(require("semver/preload")),{GET:Fi,POST:Jt,PUT:da}=(0,ua.default)();function FA(x){if(x)return{authorization:`Bearer ${x}`}}var ox;(w=>{w.getAPIUrl=g=>{let S="https://api.registry.microtronics.com";return g===Fx.ENV.lucky?S="https://api.registry.lucky.ci.microtronics.com":g===Fx.ENV.wynni&&(S="https://api.registry.wynni.ci.microtronics.com"),{baseUrl:S+"/v1"}};async function A(g,S,T,q){let{data:L,error:R}=await Fi("/publisher/{publisherId}/libraries/{libraryId}",{...(0,w.getAPIUrl)(q),headers:{...FA(g)},params:{path:{publisherId:S,libraryId:T}}});if(R)throw new Error(R.reason);return L}w.getLibraryProfile=A;async function e(g,S,T=!1){let q=await fetch(S,{headers:{...FA(g),...j(!0)}});if(q.status===200)return T?await q.json():await q.arrayBuffer();throw new Error("Failed to fetch the library content")}w.fetchCustomContent=e;async function r(g,S,T){try{let{data:q,error:L}=await Fi("/publisher/{publisherId}",{...(0,w.getAPIUrl)(T),headers:{...FA(g)},params:{path:{publisherId:S}}});return L?(console.error(L),null):q}catch(q){return console.error(q),null}}w.getPublisher=r;async function t(g,S,T,q){try{let{data:L,error:R}=await Jt("/packages/{publisherId}/applications",{...(0,w.getAPIUrl)(q),headers:{...FA(g),...j(!0)},params:{path:{publisherId:S}},body:{...T}});if(R)throw new Error(R.reason);return L.id}catch{return null}}w.createNewApplication=t;async function i(g,S,T,q){let{data:L,error:R}=await Fi("/publisher/{publisherId}/applications/{applicationId}",{...(0,w.getAPIUrl)(q),headers:{...FA(g),...j(!0)},params:{path:{publisherId:S,applicationId:T}}});if(R)throw new Error(R.reason);return L}w.getExistingApplication=i;async function n(g,S,T,q,L){try{let{error:R}=await da("/packages/{publisherId}/applications/{applicationId}",{...(0,w.getAPIUrl)(L),headers:{...FA(g),...j(!0)},params:{path:{publisherId:S,applicationId:T}},body:{...q}});if(R)throw new Error(R.reason);return}catch{return null}}w.updateExistingApplication=n;async function F(g,S,T,q,L,R){let n0=!!zt.default.valid(q);try{let{error:M}=await da("/packages/{publisherId}/applications/{applicationId}/versions/{applicationVersion}",{...(0,w.getAPIUrl)(R),headers:{...FA(g),...j(n0)},params:{path:{publisherId:S,applicationId:T,applicationVersion:q}},body:{...L}});if(M)throw new Error(M.reason);return}catch{return null}}w.updateExistingApplicationVersion=F;async function v(g,S,T,q,L,R){let n0=!!zt.default.valid(q),{data:M,error:y}=await Jt("/packages/{publisherId}/applications/{applicationId}/versions/{applicationVersion}",{...(0,w.getAPIUrl)(R),headers:{...FA(g),...j(n0)},params:{path:{publisherId:S,applicationId:T,applicationVersion:q}},body:{},bodySerializer(){return L}});if(y)throw new Error(y.reason||y.err||y);return M}w.publishApplicationVersion=v;let E={"README.md":"text/markdown","CHANGELOG.md":"text/markdown","library.tar.gz":"application/gzip","studio.json":"application/json"};async function u(g,S,T,q,L,R){try{let{error:n0}=await Jt("/packages/{publisherId}/libraries/{libraryId}/versions/{libraryVersion}",{...(0,w.getAPIUrl)(R),headers:{...FA(g),...j(!0)},params:{path:{publisherId:S,libraryId:T,libraryVersion:q}},body:{...L},bodySerializer(M){let y=new FormData;for(let[O,Y]of Object.entries(M))Y!==void 0&&y.append(O,new Blob([Y],{type:E[O]}),O);return y}});if(n0)throw new Error(n0.reason)}catch(n0){throw console.error(n0),n0}}w.publishLibraryVersion=u;async function p(g,S,T,q,L,R,n0){let M=!!zt.default.valid(q),{error:y}=await Jt("/packages/{publisherId}/applications/{applicationId}/versions/{applicationVersion}/files/{applicationFileName}",{...(0,w.getAPIUrl)(n0),headers:{...FA(g),...j(M),"Content-Type":"application/octet-stream"},params:{path:{publisherId:S,applicationId:T,applicationVersion:q,applicationFileName:L}},body:{},bodySerializer(){return R}});if(y)throw new Error(y.reason)}w.updateApplicationFile=p;function j(g=!1){return g?{"X-Semver":"true"}:{}}w.injectSemverHeader=j})(ox||={});var ja=ax(require("semver/preload"));var ha=require("deepmerge-ts"),wl=h0.isNumeric,Da="52v007",pa="53v001",_l="54v001",Sl="56v001",vA={_manifest:null,_stat:null,_overwrites:null,get manifest(){return(0,ha.deepmerge)(structuredClone(this._manifest),vA._overwrites||{})},set manifest(x){this._manifest=x},set overwrites(x){this._overwrites=x},get stat(){return this._stat},set stat(x){this._stat=x},clear(){this._stat=null,this._manifest=null}},z;(i0=>{let x=h0.convertBlobToString;i0.fileName="studio.json";let e;(L0=>(L0.m22x="m22x",L0.m23x="m23x",L0.nrf91="nrf91",L0.m2blegw="m2blegw",L0.m2easyv3="m2easyv3",L0.m2easyiot="m2easyiot"))(e=i0.DeviceProfiles||={});let r;(d0=>(d0.app="app",d0.library="library",d0.addon="addon",d0.analytics="analytics"))(r=i0.ProjectTypes||={});let t;(f0=>(f0.restricted="restricted",f0.global="global"))(t=i0.BloAccessLevel||={});let i;(f0=>(f0.embedded="$embedded",f0.pure="$pure"))(i=i0.PovLocation||={});function n(U){vA.overwrites=U}i0.setOverwrites=n;function F(){vA.overwrites=null}i0.clearOverwrites=F;async function v(U,v0){let f0=wr.Utils.joinPath(U,i0.fileName),B0=await v0.stat(f0);if(vA.manifest===null||f0?.fsPath!==vA.stat?.path.fsPath||B0?.ctime!==vA.stat?.ctime||B0?.mtime!==vA.stat?.mtime||B0?.size!==vA.stat?.size){let d0=await v0.readFile(f0),T0=x(d0);vA.manifest=JSON.parse(T0),vA.stat={...B0,path:f0}}return vA.manifest}i0.read=v;async function E(U,v0){return await v0.readFile(wr.Utils.joinPath(U,i0.fileName))}i0.readAsBlob=E;async function u(U,v0){let f0=wr.Utils.joinPath(U,i0.fileName),B0=await v0.readFile(f0),d0=x(B0);return JSON.parse(d0)}i0.readRaw=u;async function p(U,v0,f0){return vA.clear(),Ml(f0),v0.writeFile(wr.Utils.joinPath(U,i0.fileName),JSON.stringify(f0,null," "))}i0.write=p;function j(U){return U.library!==void 0?U.library:U.type==="library"}i0.isLibrary=j;function w(U){return U.type==="addon"}i0.isAddon=w;function g(U){return U.type===void 0&&!j(U)?!0:U.type==="app"}i0.isApp=g;function S(U){return U.type===void 0?!0:U.type==="app"}i0.isIotApp=S;function T(U){return U.type==="analytics"}i0.isAnalytics=T;async function q(U,v0,f0){f0||(f0=await v(U,v0)),Il(f0),$l(f0),Pl(f0),Nl(f0)}i0.validateBasicManifest=q;function L(U){let v0="Library name can only contain 'a' through 'z', '0' through '9', '_' and '-'. The Library name must start with an alphabetic or numeric character.";if(U.match(/^[a-z0-9-_]+$/)){let B0=["-","_"];if(B0.includes(U[0])||B0.includes(U[U.length-1]))return v0}else return v0;return U.length<3||U.length>20?"The library name is beyond permissible length of 20 characters.":null}i0.validateLibraryName=L;function R(U,v0){if(v0)return L(U);{let f0="Project name can only contain 'A' through 'Z', 'a' through 'z', '0' through '9', ' ', '_' and '-'. The Project name must start with an alphabetic or numeric character.";if(!U.match(/^([a-zA-Z0-9 _-]+)$/))return f0;if(U.length<3||U.length>40)return"The project name is beyond permissible length of 40 characters.";let d0=["-","_"," "];return d0.includes(U[0])||d0.includes(U[U.length-1])?f0:null}}i0.validateProjectName=R;function n0(U){return U.length<5?"The description must have at least 5 characters.":null}i0.validateDescription=n0;function M(U){if(!U)return"No publisher set yet";let v0="Publisher can only contain 'A' through 'Z', 'a' through 'z', '0' through '9' and '-'. The Publisher start with an alphabetic or numeric character.";if(U.match(/^[a-zA-Z0-9-]+$/)){let B0=["_"];if(B0.includes(U[0])||B0.includes(U[U.length-1]))return v0}else return v0;return null}i0.validatePublisherId=M;async function y(U,v0,f0){return await ox.getPublisher(U,v0,f0)?null:`Publisher '${v0}' does not exist.`}i0.validatePublisherOnline=y;let O=/^(((?!-))(xn--)?[a-z0-9\-_]{0,61}[a-z0-9]{1,1}\.)*(xn--)?([a-z0-9-]{1,61}|[a-z0-9-]{1,30})\.[a-z]{2,}$/;async function Y(U){if(U===void 0)return"Allowed backends not specified yet";if(U===null)return null;if(Array.isArray(U)||U?.includes(";")){let v0=U?.includes(";")?U.split(";"):U;for(let f0 of v0)if(!f0.match(O))return`Domain "${f0}" is invalid`}else if(!U?.match(O)&&U!=="*")return'Invalid value for "allowedBackends"';return null}i0.validateRegistryAllowedBackends=Y;let W=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i;async function H(U){if(U===void 0)return"Allowed applications not specified yet";if(U===null)return null;if(Array.isArray(U)||U?.includes(";")){let v0=U?.includes(";")?U.split(";"):U;for(let f0 of v0)if(!f0.match(W))return`Application id "${f0}" is invalid`}else if(!U?.match(W)&&U!=="*")return'Invalid value for "allowedApplications"';return null}i0.validateRegistryAllowedApplications=H;async function J(U,v0,f0){let B0=f0.icon;if(!B0)throw new Error("App icon is required for publishing an application!");let d0=wr.Utils.joinPath(U,B0);if(!await v0.stat(d0))throw new Error(`Could not load icon "${B0}"`);let L0=await v0.readFile(d0),cx=(0,ba.imageDimensionsFromData)(L0);if(!cx)throw new Error("App icon could not be validated!");if(cx?.width!==cx?.height)throw new Error("App icon has to be a square!");if(cx.width>512||cx.width<75)throw new Error("App icon size should be between 75px and 512px!");if(!(0,ma.isPNG)(L0))throw new Error("App icon has to be of type PNG!")}i0.validateApplicationIcon=J;function s0(U){let{engines:v0}=U;if(v0?.backend&&!v0.backend.match(/(^[5-9][2-9]|[6-9]\d+|\d{3,})v(0(0[0-9]|[1-9]\d)|[1-9]\d{2}|[1-9]\d{3,})$/))throw new Error('Setting "engines.backend" is invalid');Tl(U),ql(U)}i0.validateEngineSettings=s0;function r0(U,v0){let f0=T0=>{let L0=/^(\d+)v(\d+)$/.exec(T0);return L0?[Number(L0[1]),Number(L0[2])]:null},B0=f0(U),d0=f0(v0);return B0&&d0?B0[0]-d0[0]||B0[1]-d0[1]:U===v0?0:U<v0?-1:1}i0.compareBackendVersion=r0;async function Z(U,v0,f0,B0){B0||(B0=await i0.read(U,v0));let d0=i0.isAddon(B0),T0=i0.isAnalytics(B0);switch(f0){case p0.Part.dlo:return!!B0?.dlo?.mainFile&&!d0&&!T0;case p0.Part.blo:return!!(B0.blo?.buildCommand&&B0.blo?.workingPath);case p0.Part.pov:return!!(B0.pov?.details?.buildCommand&&B0.pov.details.workingPath);case p0.Part.dde:case p0.Part.dfiles:return!0;default:return!1}}i0.isApmPartEnabled=Z})(z||={});function $l(x){let{pov:A}=x;if(A&&A.details){if(!Object.hasOwn(A.details,"buildCommand"))throw new Error('Setting "pov.details.buildCommand" missing!');if(!Object.hasOwn(A.details,"workingPath"))throw new Error('Setting "pov.details.workingPath" missing!')}}function Pl(x){let{blo:A}=x;if(A){if(!Object.hasOwn(A,"buildCommand"))throw new Error('Setting "blo.buildCommand" missing!');if(!Object.hasOwn(A,"workingPath"))throw new Error('Setting "blo.workingPath" missing!');if(A.accessLevel&&!["restricted","global"].includes(A.accessLevel))throw new Error('Only "restricted" or "global" are allowed as value for "blo.accessLevel"!')}}function Tl(x){let{backend:A,productId:e,hwfw:r}=x.engines;if(z.isAddon(x)&&(e||r))throw new Error('For project type "addon", "engines.hwfw" or "engines.productId" is not allowed!"');if(A&&A>=Da){if(r&&e)throw new Error('Only "engines.hwfw" or "engines.productId" is allowed!"')}else if(e)throw new Error(`"engines.productId" requires "engines.backend" to be "${Da}"`)}function ql(x){if(!z.isAddon(x)&&!z.isAnalytics(x))return;let{backend:A}=x.engines,e=z.isAddon(x)?_l:Sl;if(!A||A<e)throw new Error(`Project type "${x.type}" requires "engines.backend" to be ">=${e}"`);if(x.dlo)throw new Error(`For project type "${x.type}", "dlo" is not supported!"`);if(x.dpid)throw new Error(`For project type "${x.type}", "dpid" is not supported!"`)}function Nl(x){let{maxInstancesPerSite:A}=x;if(A===void 0){if(z.isAddon(x))throw new Error('Property "maxInstancesPerSite" is required for addon projects!');return}if(!z.isAddon(x))throw new Error('Property "maxInstancesPerSite" is only allowed for addon projects!');if(!Number.isInteger(A))throw new Error('Property "maxInstancesPerSite" must be an integer!');if(A<1||A>100)throw new Error('Property "maxInstancesPerSite" must be between 1 and 100!')}function Il(x){if((x.engines?.backend||"00v000")>=pa||z.isLibrary(x)){if(!ja.default.valid(x.version))throw new Error(`From "engines.backend" version >= ${pa} onwards "version" has to be a semantic version string!"`)}else if(!wl(x.version))throw new Error('"version" has to be a number!')}function Ml(x){x.registry&&(delete x.registry.allowedBackends,delete x.registry.target)}var or=require("vscode-uri");var mx=require("vscode-uri");var hv=ax(require("ajv")),gv=ax(require("ajv-formats"));var ga={$schema:"http://json-schema.org/draft-07/schema#",title:"Dynamic DDE Schema",description:"Describe your data structure for Microtronics IoT devices",type:"object",additionalProperties:!1,properties:{dde:{type:"string",default:"1.0.0",readOnly:!0,description:"Version of the DDE schema. Do not modify this value.",markdownDescription:`Version of the DDE schema.
1549
1549
 
1550
1550
  \u26A0\uFE0F **Do not modify this value.**`},cloudProject:{type:"boolean",description:"Indicates whether this is a cloud project.",markdownDescription:"Indicates whether this is a cloud project.\n\nWhen set to `false`, certain containers and top-level custom containers are restricted."},constants:{type:"object",description:"Declare constants that can be used across the YAML file.",markdownDescription:"Declare constants that can be referenced and used across the YAML file."},state:{$ref:"#/$defs/stateContainer"},result:{$ref:"#/$defs/resultContainer"},volatile:{$ref:"#/$defs/volatileContainer"},timeseries:{type:"object",description:"Define time-series data channels for recording measurements.",markdownDescription:"Define time-series data channels for recording measurements.\n\n**Limits:** Maximum 9 fields.\n\n**Naming rules:**\n- Must start with a letter or `_`\n- May contain letters, digits, and `_`\n- Names like `field0`, `ch0`, etc. are **not allowed**\n- Reserved names (`_id`, `id`, `_stamp`, `stamp`, `tag`, `_uid`, `customer_id`, `site_id`, `_rec_flags__`, `applog`) are **not allowed**",additionalProperties:!1,maxProperties:9,errorMessage:{maxProperties:"The timeseries container supports a maximum of 9 fields."},properties:{_id:{not:{},errorMessage:"'_id' is a reserved name and cannot be used as a timeseries field."},id:{not:{},errorMessage:"'id' is a reserved name and cannot be used as a timeseries field."},_stamp:{not:{},errorMessage:"'_stamp' is a reserved name and cannot be used as a timeseries field."},stamp:{not:{},errorMessage:"'stamp' is a reserved name and cannot be used as a timeseries field."},tag:{not:{},errorMessage:"'tag' is a reserved name and cannot be used as a timeseries field."},_uid:{not:{},errorMessage:"'_uid' is a reserved name and cannot be used as a timeseries field."},customer_id:{not:{},errorMessage:"'customer_id' is a reserved name and cannot be used as a timeseries field."},site_id:{not:{},errorMessage:"'site_id' is a reserved name and cannot be used as a timeseries field."},_rec_flags__:{not:{},errorMessage:"'_rec_flags__' is a reserved name and cannot be used as a timeseries field."},applog:{not:{},errorMessage:"'applog' is a reserved name and cannot be used as a timeseries field."}},patternProperties:{"^(?!.*^field\\d+$)(?!.*^ch\\d+$)[a-zA-Z_][0-9a-zA-Z_]*$":{$ref:"#/$defs/timeseriesFields"}}},aloha:{type:"object",description:"Special container to transport live data during put-into-operation procedures.",markdownDescription:`Special container to transport **live data** during put-into-operation procedures.
1551
1551
 
@@ -1643,27 +1643,14 @@ Accepts a number (\u2265 0) or a relation link (\`@container.field\`).`,minimum:
1643
1643
 
1644
1644
  \u26A0\uFE0F **Important:** This does not activate any alarming. Alarming must be implemented in the DLO.
1645
1645
 
1646
- Accepts a number or a relation link (\`@container.field\`).`,$ref:"#/$defs/relationLinkPattern"}}};var pt=require("yaml");var vr=require("yaml");var st;(x=>x.CODE={ddeFieldLength:"field_name_length"})(st||={});var R0;(H=>{let A;(C0=>(C0.state="state",C0.result="result",C0.aloha="aloha",C0.volatile="volatile",C0.setting="setting",C0.command="command",C0.storage="storage",C0.relations="relations"))(A=H.DDEContainerName||={});let x;(E0=>(E0.configA="configA",E0.configB="configB",E0.configC="configC",E0.config0="config0",E0.config1="config1",E0.config2="config2",E0.config3="config3",E0.config4="config4",E0.config5="config5",E0.config6="config6",E0.config7="config7",E0.config8="config8",E0.config9="config9",E0.histdata0="histdata0",E0.histdata1="histdata1",E0.histdata2="histdata2",E0.histdata3="histdata3",E0.histdata4="histdata4",E0.histdata5="histdata5",E0.histdata6="histdata6",E0.histdata7="histdata7",E0.histdata8="histdata8",E0.histdata9="histdata9",E0.aloha="aloha",E0.alerts="alerts",E0.applog="applog"))(x=H.ContainerName||={});let r;(U=>(U.cx="cx",U.hx="hx",U.cb="cb",U.aloha="aloha",U.applog="applog"))(r=H.ContainerType||={});let e;(q0=>(q0.up="up",q0.down="down",q0.upPlus="up+",q0.downPlus="down+",q0.none="none",q0.backendOnly="backend-only",q0.deviceOnly="device-only",q0.both="both",q0.bothPlus="both+",q0.noneBackend="none-be"))(e=H.TransferDirection||={});function i(K,i0){return K==="cx"&&!["backend-only"].includes(i0)?"DDE_CID_CONFIG":K==="hx"?"DDE_CID_HISTDATA":K==="aloha"?"DDE_CID_ALOHA":null}H.CONTAINER_DEF_DLO_CID_BASE=i;let o=["up","up+","down","down+","both","none","both+","backend-only","device-only"],t=["up","up+","backend-only"];H.CONTAINER_DEFS={configA:{ctype:"cb",cnum:"a",alias:"",flds:"field",xmits:["backend-only"]},configB:{ctype:"cb",cnum:"b",alias:"",flds:"field",xmits:["backend-only"]},configC:{ctype:"cb",cnum:"c",alias:"",flds:"field",xmits:["backend-only"]},config0:{ctype:"cx",cnum:0,alias:"",flds:"field",xmits:o},config1:{ctype:"cx",cnum:1,alias:"",flds:"field",xmits:o},config2:{ctype:"cx",cnum:2,alias:"",flds:"field",xmits:o},config3:{ctype:"cx",cnum:3,alias:"",flds:"field",xmits:o},config4:{ctype:"cx",cnum:4,alias:"",flds:"field",xmits:o},config5:{ctype:"cx",cnum:5,alias:"",flds:"field",xmits:o},config6:{ctype:"cx",cnum:6,alias:"",flds:"field",xmits:o},config7:{ctype:"cx",cnum:7,alias:"",flds:"field",xmits:o},config8:{ctype:"cx",cnum:8,alias:"",flds:"field",xmits:o},config9:{ctype:"cx",cnum:9,alias:"",flds:"field",xmits:o},histdata0:{ctype:"hx",cnum:0,alias:"",flds:"ch",xmits:t},histdata1:{ctype:"hx",cnum:1,alias:"",flds:"ch",xmits:t},histdata2:{ctype:"hx",cnum:2,alias:"",flds:"ch",xmits:t},histdata3:{ctype:"hx",cnum:3,alias:"",flds:"ch",xmits:t},histdata4:{ctype:"hx",cnum:4,alias:"",flds:"ch",xmits:t},histdata5:{ctype:"hx",cnum:5,alias:"",flds:"ch",xmits:t},histdata6:{ctype:"hx",cnum:6,alias:"",flds:"ch",xmits:t},histdata7:{ctype:"hx",cnum:7,alias:"",flds:"ch",xmits:t},histdata8:{ctype:"hx",cnum:8,alias:"",flds:"ch",xmits:t},histdata9:{ctype:"hx",cnum:9,alias:"",flds:"ch",xmits:t},aloha:{ctype:"aloha",cnum:void 0,alias:"aloha",flds:null,xmits:["up","up+"]},alerts:{ctype:void 0,cnum:void 0,alias:"alerts",flds:null,xmits:["up"]},applog:{ctype:"applog",cnum:void 0,alias:"applog",flds:null,xmits:["up+"]}},H.HISTDATA_CONTAINER=["histdata0","histdata1","histdata2","histdata3","histdata4","histdata5","histdata6","histdata7","histdata8","histdata9"],H.CONFIG_CONTAINER=["config0","config1","config2","config3","config4","config5","config6","config7","config8","config9"],H.SERVER_CONTAINER=["configA","configB","configC"],H.regexRelation=/^(@[a-zA-Z_][a-zA-Z0-9_]*\.[a-zA-Z_][a-zA-Z0-9_]*(\[[^\]]+\])?(\.[a-zA-Z_][a-zA-Z0-9_]*)*|lib:[a-zA-Z0-9_-]+@[a-zA-Z_][a-zA-Z0-9_]*\.[a-zA-Z_][a-zA-Z0-9_]*(\[[^\]]+\])?(\.[a-zA-Z_][a-zA-Z0-9_]*)*)$/;let k=["astring","nstring","cstring","wstring","ustring"],$=["int8","int16","int32","int64","uint8","uint16","uint32","float16","float32","float64"];H.allowedRelationTypes={title:k,unit:k,chartMinimum:$,chartMaximum:$,scale:$,offset:$,decimalPlaces:["uint8","uint16","uint32","int8","int16","int32","int64"],channelMode:["uint8","uint16","uint32"],chartAlarmLow:$,chartAlarmHigh:$,chartWarningLow:$,chartWarningHigh:$,chartHysteresis:$,chartTriggerThreshold:$,chartTriggerRelation:$,chartSetPoint:$};function q(K,i0,r0){let Z=i0[K];if(Z!==void 0)if(H.regexRelation.exec(`${Z}`)){let n0=K==="chartSetPoint",[U,...F0]=Z.split("."),[,v0]=U.split("@"),C0=Object.values(r0.containers).find(nx=>nx.title===v0),D0=F0.join("."),q0=n0?";":"%",I0=(n0?"":"%")+(C0?.name||v0)+q0;if(I0=I0+`${D0}`,n0){let nx=r0.setPointList[i0.name];I0=I0+`;actual_output_value_${nx}`}return I0}else return Z}H.parseXMLValueWithRelation=q;function P(K){let{bitmask:i0}=K;if(!i0)return;let r0="$",Z=i0.replaceAll(" ","");if(i0.startsWith("0x"))r0+=Z.substring(2);else if(Z.startsWith("0b")){let n0=Z.substring(2).replaceAll(" ","");r0+=parseInt(n0,2).toString(16).toUpperCase()}return r0}H.parseXMLBitmask=P;function N(K){return K.type==="binary"?K.defaultValue.substring(2):K.defaultValue==="NaN"?"NAN":K.defaultValue}H.parseXMLDefaultValue=N,H.TDEF_NUMBER={xmlOut(K,i0,r0){K.decpl=q("decimalPlaces",i0,r0),K.decpl===void 0&&(K.decpl=0),K.vscale=q("scale",i0,r0),K.vofs=q("offset",i0,r0),K.min=q("chartMinimum",i0,r0),K.max=q("chartMaximum",i0,r0)}};let O={isBlob:1,xmlOut(K,i0){K.max=i0.byteSize}},t0={xmlOut(K){K.decpl=-1,K.param0="local",K.units="UTC"}};H.TYPE_DEFS={u8:{dde:"uint8",dim:1,len:1,...H.TDEF_NUMBER,rdef:1,xml:{type:"u8"},pwn:{rwfunc:"u8",htype:"s32",printf:"%d"},openApi:{type:"number",minimum:0}},u16:{dde:"uint16",dim:1,len:2,...H.TDEF_NUMBER,rdef:1,xml:{type:"u16"},pwn:{rwfunc:"u16",htype:"s32",printf:"%d"},openApi:{type:"number",minimum:0}},u32:{dde:"uint32",dim:1,len:4,...H.TDEF_NUMBER,rdef:1,xml:{type:"u32"},pwn:{rwfunc:"u32",htype:"s32",printf:"%d"},openApi:{type:"number",minimum:0}},s8:{dde:"int8",dim:1,len:1,...H.TDEF_NUMBER,rdef:1,xml:{type:"s8"},pwn:{rwfunc:"s8",htype:"s32",printf:"%d"},openApi:{type:"number"}},s16:{dde:"int16",dim:1,len:2,...H.TDEF_NUMBER,rdef:1,xml:{type:"s16"},pwn:{rwfunc:"s16",htype:"s32",printf:"%d"},openApi:{type:"number"}},s32:{dde:"int32",dim:1,len:4,...H.TDEF_NUMBER,rdef:1,xml:{type:"s32"},pwn:{rwfunc:"s32",printf:"%d"},openApi:{type:"number"}},s64:{dde:"int64",dim:0,len:8,...H.TDEF_NUMBER,rdef:1,xml:{type:"s64"},pwn:{rwfunc:"s64",rwp:"%n{%l}",htype:"{%l}",printf:"%d"},openApi:{type:"number"}},f16:{dde:"float16",dim:1,len:2,...H.TDEF_NUMBER,rdef:1,xml:{type:"floatm16"},pwn:{rwfunc:"f16",rwp:"Float:%n",htype:"f32",printf:"%f"},openApi:{type:"number"}},f32:{dde:"float32",dim:1,len:4,...H.TDEF_NUMBER,rdef:1,xml:{type:"f32"},pwn:{rwfunc:"f32",rwp:"Float:%n",printf:"%f"},openApi:{type:"number"}},f64:{dde:"float64",dim:0,len:8,...H.TDEF_NUMBER,rdef:0,xml:{type:"f64"},pwn:{rwfunc:"f64",rwp:"%n{%l}",htype:"{%l}",printf:"%f"},openApi:{type:"number"}},stamp32:{dde:"stamp32",dim:1,len:4,...t0,rdef:0,xml:{type:"stamp4"},pwn:{rwfunc:"stamp32",printf:"%s",printfFormat:"stampToISOString"},openApi:{type:"string",format:"YYYYMMDDhhmmssSSS",description:"UTC"}},stamp40:{dde:"stamp40",dim:0,len:5,...t0,rdef:0,xml:{type:"stamp"},pwn:{rwfunc:"stamp40",rwp:"%n{%l}",htype:"{%l}",printf:"%s",printfFormat:"stampToISOString"},openApi:{type:"string",format:"YYYYMMDDhhmmssSSS",description:"UTC"}},bin:{dde:"binary",dim:0,...O,rdef:0,lenUnits:"byte",xml:{type:"string",editmask:"%HEX%"},pwn:{rwfunc:"bin",rwlen:1,rwp:"%n{%l}",htype:"{%l}",printf:null,printfFormat:"memtostr"},openApi:{type:"string",description:"HEX string"}},astr:{dde:"astring",dim:0,...O,rdef:1,lenUnits:"char",xml:{type:"string",param1:"nocodepage"},pwn:{rwfunc:"astr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}",printf:"%s"},openApi:{type:"string"}},nstr:{dde:"nstring",dim:0,...O,rdef:1,lenUnits:"byte",xml:{type:"string"},pwn:{rwfunc:"nstr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}",printf:"%s"},openApi:{type:"string"}},wstr:{dde:"wstring",dim:0,...O,rdef:1,lenUnits:"byte",xml:{type:"string"},pwn:{rwfunc:"wstr",rwlen:1,rwp:"%n[%l+1]",htype:"[%l+1]",printf:"%s"},openApi:{type:"string"}},ustr:{dde:"ustring",dim:0,...O,rdef:0,lenUnits:"byte",xml:{type:"string"},pwn:{rwfunc:"ustr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}",printf:"%s"},openApi:{type:"string"}},cstr:{dde:"cstring",dim:0,...O,rdef:1,lenUnits:"char",xml:{type:"string",editmask:"%HEX%"},pwn:{rwfunc:"cstr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}",printf:"%s"},openApi:{type:"string"}},_siteref:{dim:0,len:80,rdef:0,xml:{type:"string",max:"80",editmask:"%QUERY%all_sites;-name;!id;class;name;%EMPTY%"},pwn:{rwfunc:"astr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}"},js:{rwfunc:"String"}}},H.fieldTypeDefinitions={uint8:H.TYPE_DEFS.u8,uint16:H.TYPE_DEFS.u16,uint32:H.TYPE_DEFS.u32,int8:H.TYPE_DEFS.s8,int16:H.TYPE_DEFS.s16,int32:H.TYPE_DEFS.s32,int64:H.TYPE_DEFS.s64,float16:H.TYPE_DEFS.f16,float32:H.TYPE_DEFS.f32,float64:H.TYPE_DEFS.f64,stamp32:H.TYPE_DEFS.stamp32,stamp40:H.TYPE_DEFS.stamp40,binary:H.TYPE_DEFS.bin,astring:H.TYPE_DEFS.astr,nstring:H.TYPE_DEFS.nstr,wstring:H.TYPE_DEFS.wstr,ustring:H.TYPE_DEFS.ustr,cstring:H.TYPE_DEFS.cstr};let L=["_id","id","_stamp","stamp","tag","_uid","customer_id","site_id","_rec_flags__","applog"];function Y(K){let i0=K.toLowerCase();return L.includes(i0)||/^field\d+$/.test(i0)||/^ch\d+$/.test(i0)}H.checkForReservedFieldName=Y;function W(K){return!!K.fields.find(i0=>i0.library===null&&i0.type!=="shadow")}H.hasContainerAppFields=W})(R0||={});var Qr={DP_registry_sz:1024,DP_config_sz:4e3,DP_histdata_sz:1024,DP_DISPLAY_CNT:0,DP_LED_CNT:0,DP_BUTTON_CNT:0,DP_GPIO_CNT:0,DP_IRQ_CNT:0,DP_DIGOUT_CNT:0,DP_UIN_CNT:0,DP_TEMP_CNT:0,DP_I2C_CNT:0,DP_SPI_CNT:0,DP_UART_CNT:0,DP_RS485_CNT:0,DP_RS232_CNT:0,DP_WIFI_CNT:0,DP_BLE_CNT:0,DP_LORA_CNT:0,DP_NBIOT_CNT:0},Zt={max_size:1e5,max_fields:1e3},_A={max_size:4e3,max_fields:1e3},FA={max_size:1024,max_fields:1e3},Zr={configA:Zt,configB:Zt,configC:Zt,config0:_A,config1:_A,config2:_A,config3:_A,config4:_A,config5:_A,config6:_A,config7:_A,config8:_A,config9:_A,histdata0:FA,histdata1:FA,histdata2:FA,histdata3:FA,histdata4:FA,histdata5:FA,histdata6:FA,histdata7:FA,histdata8:FA,histdata9:FA,aloha:{...FA,warn_fields:10},alerts:{max_size:13,max_fields:0,exact_match:!0},applog:{max_size:125,max_fields:0,exact_match:!1}},xn={m22x:{name:"M22x",dpid:"m22x",interface:{type:"usb",filter:{vendorId:9540},fileChunk:4096},usb_ids:["rapidM2M M2 HW1.0"],alt_ids:[],generation:"M2",prog_mem:256*1024,data_mem:64*1024,total_mem:256*1024,hw_reqd:!1,dde:Zr,auto_inc:{...Qr,DP_LED_CNT:1,DP_GPIO_CNT:6,DP_IRQ_CNT:2,DP_I2C_CNT:1,DP_SPI_CNT:1,DP_UART_CNT:2,DP_WIFI_CNT:1},usbcaps:{},dlo:{compileRestrictions:{"-z":0}}},m23x:{name:"M23x",dpid:"m23x",interface:{type:"usb",filter:{vendorId:1155},fileChunk:4096},usb_ids:["rapidM2M M23 HW2.0","rapidM2M M23 HW1.0"],alt_ids:[],generation:"M23",prog_mem:8*1024*1024,data_mem:8*1024*1024,total_mem:8*1024*1024,hw_reqd:!1,dde:Zr,auto_inc:{...Qr,DP_LED_CNT:1,DP_GPIO_CNT:6,DP_IRQ_CNT:2,DP_I2C_CNT:1,DP_SPI_CNT:1,DP_UART_CNT:1,DP_WIFI_CNT:1},usbcaps:{dbgItfMayHangFixed:"99v999"},dlo:{compileRestrictions:{}}},nrf91:{name:"NRF91",dpid:"nrf91",interface:{type:"usb",filter:{vendorId:9540},fileChunk:2048},usb_ids:["rapidM2M NRF91 HW1.0","ONE NRF91 HW1.0","rapidM2M Evolve HW1.0"],alt_ids:[],generation:"NRF91",prog_mem:256*1024,data_mem:64*1024,total_mem:256*1024,hw_reqd:!1,dde:Zr,auto_inc:{...Qr,DP_LED_CNT:1,DP_GPIO_CNT:32,DP_IRQ_CNT:6,DP_I2C_CNT:2,DP_SPI_CNT:2,DP_UART_CNT:2,DP_AIN_CNT:8,DP_PWM_CNT:3},usbcaps:{}},m2blegw:{name:"BLE Gateway",dpid:"m2blegw",interface:{type:"usb",filter:{vendorId:9540},fileChunk:4096},usb_ids:["rapidM2M BLEGW HW1.0"],alt_ids:[],generation:"M2",prog_mem:256*1024,data_mem:256*1024,total_mem:256*1024,hw_reqd:!1,dde:Zr,auto_inc:{...Qr,DP_DISPLAY_CNT:1,DP_DISPLAY_TYPE:"xc",DP_BUTTON_CNT:1,DP_BLE_CNT:1},usbcaps:{},dlo:{compileRestrictions:{"-z":0}}},m2easyv3:{name:"myDatalogEasy V3",dpid:"m2easyv3",interface:{type:"usb",filter:{vendorId:9540},fileChunk:4096},usb_ids:["rapidM2M Easy HW3.0"],alt_ids:["rapidM2M EasyIoT HW1.0","rapidM2M M220 HW1.0"],generation:"M2",prog_mem:256*1024,data_mem:256*1024,total_mem:256*1024,hw_reqd:!1,dde:Zr,auto_inc:{...Qr,DP_LED_CNT:1,DP_BUTTON_CNT:1,DP_DIGOUT_CNT:1,DP_UIN_CNT:4,DP_TEMP_CNT:1,DP_RS485_CNT:1,DP_RS232_CNT:1,DP_BLE_CNT:1,DP_LORA_CNT:1},usbcaps:{},dlo:{compileRestrictions:{"-z":0}}},m2easyiot:{name:"myDatalogEasy IoT",dpid:"m2easyiot",interface:{type:"usb",filter:{vendorId:9540},fileChunk:4096},usb_ids:["rapidM2M EasyIoT HW1.0"],alt_ids:[],generation:"M2",prog_mem:256*1024,data_mem:256*1024,total_mem:256*1024,hw_reqd:!1,dde:Zr,auto_inc:{...Qr,DP_LED_CNT:1,DP_BUTTON_CNT:1,DP_DIGOUT_CNT:1,DP_UIN_CNT:4,DP_TEMP_CNT:1,DP_RS485_CNT:1,DP_RS232_CNT:1,DP_BLE_CNT:1,DP_LORA_CNT:1},usbcaps:{},dlo:{compileRestrictions:{"-z":0}}}};var An=require("vscode-uri");var xe=class{dloFileMap={};rootUri=An.URI.parse("");constructor(){}set workspacePath(x){this.rootUri=x}getSequenceForFile(x){let r=x.substring(this.rootUri.path.length||0);if(this.rootUri.scheme!=="file"){let i=this.rootUri.toString();r=x.substring(i.length+1)}if(Object.hasOwn(this.dloFileMap,r))return this.dloFileMap[r];let e=h0.generateHashForFilePath(r);return this.dloFileMap[r]=e,e}getFilePathForSequence(x){let r=Object.entries(this.dloFileMap).find(([,e])=>e===x);return r?An.URI.parse(`${this.rootUri.path}${r[0]}`).path:null}};var ji=require("vscode-uri");var wF=/^(?:\s*#options\s+)(.*)(?:\s*)$/,$F=/^(?:\s*#preinclude\s+)(.*)(?:\s*)$/,qF=/^(?:\s*#ifdef\s+)(.*)$/,SF=/^(?:\s*#ifndef\s+)(.*)$/,PF=/^(?:\s*#elseifdef\s+)(.*)$/,TF=/^(?:\s*#elseifndef\s+)(.*)$/,mi=/^(\s*)(?:#callback\s+)(\w*)(?:\s*\(\s*)(.*?)(?:\s*\)\s*)(\{*){1}(?:\s*)$/,hi=/^(.*)(^|\s+)(?:assert\s*\(\s*)(.*?)(?:\s*,\s*)(.*?)(?:\s*\)\s*;*\s*)$/,gi=/^(.*)(^|\s+)(?:assert\s*\(\s*)(.*?)(?:\s*\)\s*;*\s*)$/,yi=/^(.*)(^|\s+)(?:assert\s*\(\s*\);*\s*)$/,ki=/^(.*)(^|\s+)(?:catch\s*\(\s*)(.*?)(?:\s*\)\s*;*\s*)$/,NF=/^\s*#include\s*</,IF=/^\s*#endinput\s*/,MF=/^\s*#pragma\s+dynamic\s+(\S+)\s*(\/\/.*|\/\*.*|)$/,_i=/^(.*)(^|\s+)(?:applog(|_ok|_warning|_alarm|_debug|_fatal)\s*\(\s*)(.*?)(?:\s*,\s*)(.*?)(?:\s*\)\s*;*\s*)$/,wi=/^(.*)(^|\s*)(?:applog(|_ok|_warning|_alarm|_debug|_fatal)\s*\(\s*)(.*?)(?:\s*\)\s*;*\s*)$/;function bi(A,x=""){let r=" ",e=A;return x.length?r={fatal:"\xA7",alarm:"!",warning:"?",debug:"~",ok:"$"}[x]||null:["!","?","~","$","\xA7"].includes(A.substring(1,1))&&(r=A.substring(1,1),e=`"${A.substring(2,A.length-1)}"`),{priority:`'${r}'`,code:e}}var $i=/^(.*)(^|\s+)(?:log(|_debug|_info|_warn|_error)\s*\(\s*)(.*?)(?:\s*\)\s*;*\s*)$/,qi=(i=>(i[i.debug=0]="debug",i[i.info=1]="info",i[i.warn=2]="warn",i[i.error=3]="error",i))(qi||{}),LF=/^(.*)(^|\s*)DDE_(state|result|aloha|volatile|setting|command)_/,RF=/^(.*)(^|\s*)onUplink(Restore|Apply)_(state|result|aloha|volatile|setting|command)/,OF=/^(.*)(^|\s*)onUplinkEvent/,GF=/(?:^|\s)(?:assert|catch|applog(?:_ok|_warning|_alarm|_debug|_fatal)?|log(?:_debug|_info|_warn|_error)?)\s*\(/,UF=/^\s*#callback\s+\w+\s*\(/;function pi(A){let x=0,r=!1,e="";for(let i=0;i<A.length;i++){let o=A[i];if(r){if(o==="\\"){i++;continue}o===e&&(r=!1);continue}if(o==='"'||o==="'"){r=!0,e=o;continue}o==="("?x++:o===")"&&x--}return x}function Si(A){return mi.test(A)||yi.test(A)||hi.test(A)||gi.test(A)||ki.test(A)||_i.test(A)||wi.test(A)||$i.test(A)}function HF(A,x,r){if(!(GF.test(r)||UF.test(r)))return null;let i=pi(r);if(i<=0)return null;let o=i,t=[A[x]],B=[r],l=x+1,D=100;for(;o>0&&l<A.length&&l-x<D;){let k=A[l],$=k.split("//",1)[0];t.push(k),B.push($),o+=pi($),l++}if(t.length<=1||o>0)return null;let j=t.map((k,$)=>$===0?k:k.trim()).join(" "),b=B.map((k,$)=>$===0?k:k.trim()).join(" ");return Si(b)?{joinedOriginal:j,joinedStripped:b,extraLineCount:t.length-1}:null}var Ae=class{pragmaDynamic=null;dloFileSequencer=new xe;constructor(){}get pragmaDynamicFlag(){return this.pragmaDynamic?`-S${this.pragmaDynamic}`:null}preCompileDloFile(x,r,e,i,o){this.dloFileSequencer.workspacePath=x;let t=[],B=i.path,l=!1,D=ji.Utils.basename(i);if(B.includes(s0.filePaths.studio.auto.dlo.path)){let y=D.substring(0,D.length-8);!["app","main"].includes(y)&&D.endsWith("-dde.inc")&&(l=h0.generateHashForLibraryName(y))}else if(B.includes(s0.filePaths.studio.libdeps)){let y=B.split("libdeps/")[1],[q]=y.split("/");["dlo-core"].includes(q)||(l=h0.generateHashForLibraryName(q))}else z.isLibrary(e)&&(D.endsWith(".dlo")||B.includes("/dlo/examples/")||B.includes("/dlo/test/")?r.log("Skipping dde mangling for project file",D):l=h0.generateHashForLibraryName(e.name));if(B.endsWith(".auto/default.inc"))return{data:o.join(`
1647
- `),diagnostics:t};let j=[],b=this.dloFileSequencer.getSequenceForFile(B);j.push(`stock static __file{} = "${b}";`),j.push(`stock static __refid{} = "${b}";`),j.push('stock static __applog_src_id{} = "A\\0\\0\\0\\0\\0\\0\\0";'),j.push("#line 0");let $=0;for(let y=0;y<o.length;y++){let q=o[y],P=q.split("//",1)[0],N=null,R=0;if(!Si(P)){let O=HF(o,y,P);O&&(q=O.joinedOriginal,P=O.joinedStripped,R=O.extraLineCount)}if(N=wF.exec(P))q="// "+q,t.push({file:i,level:"error",line:y,message:"#options is not supported here. Use the DLO settings instead."});else if(N=$F.exec(P))q="// "+q,t.push({file:i,level:"error",line:y,message:"#preinclude is not supported here. Use the DLO settings instead."});else if(N=MF.exec(P)){let O=Number(N[1].startsWith("(")?N[1].substring(1,N[1].length-1):N[1]);!Number.isInteger(O)||O<64?t.push({file:i,level:"error",line:y,message:"#pragma dynamic only supports integer values and must be greater than 63"}):(!this.pragmaDynamic||O>this.pragmaDynamic)&&(this.pragmaDynamic=O)}else if(N=qF.exec(P))q=q.replace("#ifdef ","#if defined ");else if(N=SF.exec(P))q=q.replace("#ifndef ","#if !defined ");else if(N=PF.exec(P))q=q.replace("#elseifdef ","#elseif defined ");else if(N=TF.exec(P))q=q.replace("#elseifndef ","#elseif !defined ");else if(N=mi.exec(P)){let[,O,t0,M,h]=N;q=`${O}#define ${t0} _catch_funcidx( "___${t0}")
1648
- forward ___${t0}( ${M});
1646
+ Accepts a number or a relation link (\`@container.field\`).`,$ref:"#/$defs/relationLinkPattern"}}};var Un=require("yaml");var Te=require("yaml");var Kt;(A=>A.CODE={ddeFieldLength:"field_name_length"})(Kt||={});var G0;(H=>{let x;(B0=>(B0.state="state",B0.result="result",B0.aloha="aloha",B0.volatile="volatile",B0.setting="setting",B0.command="command",B0.storage="storage",B0.relations="relations"))(x=H.DDEContainerName||={});let A;(l0=>(l0.configA="configA",l0.configB="configB",l0.configC="configC",l0.config0="config0",l0.config1="config1",l0.config2="config2",l0.config3="config3",l0.config4="config4",l0.config5="config5",l0.config6="config6",l0.config7="config7",l0.config8="config8",l0.config9="config9",l0.histdata0="histdata0",l0.histdata1="histdata1",l0.histdata2="histdata2",l0.histdata3="histdata3",l0.histdata4="histdata4",l0.histdata5="histdata5",l0.histdata6="histdata6",l0.histdata7="histdata7",l0.histdata8="histdata8",l0.histdata9="histdata9",l0.aloha="aloha",l0.alerts="alerts",l0.applog="applog"))(A=H.ContainerName||={});let e;(U=>(U.cx="cx",U.hx="hx",U.cb="cb",U.aloha="aloha",U.applog="applog"))(e=H.ContainerType||={});let r;(T0=>(T0.up="up",T0.down="down",T0.upPlus="up+",T0.downPlus="down+",T0.none="none",T0.backendOnly="backend-only",T0.deviceOnly="device-only",T0.both="both",T0.bothPlus="both+",T0.noneBackend="none-be"))(r=H.TransferDirection||={});function t(J,s0){return J==="cx"&&!["backend-only"].includes(s0)?"DDE_CID_CONFIG":J==="hx"?"DDE_CID_HISTDATA":J==="aloha"?"DDE_CID_ALOHA":null}H.CONTAINER_DEF_DLO_CID_BASE=t;let i=["up","up+","down","down+","both","none","both+","backend-only","device-only"],n=["up","up+","backend-only"];H.CONTAINER_DEFS={configA:{ctype:"cb",cnum:"a",alias:"",flds:"field",xmits:["backend-only"]},configB:{ctype:"cb",cnum:"b",alias:"",flds:"field",xmits:["backend-only"]},configC:{ctype:"cb",cnum:"c",alias:"",flds:"field",xmits:["backend-only"]},config0:{ctype:"cx",cnum:0,alias:"",flds:"field",xmits:i},config1:{ctype:"cx",cnum:1,alias:"",flds:"field",xmits:i},config2:{ctype:"cx",cnum:2,alias:"",flds:"field",xmits:i},config3:{ctype:"cx",cnum:3,alias:"",flds:"field",xmits:i},config4:{ctype:"cx",cnum:4,alias:"",flds:"field",xmits:i},config5:{ctype:"cx",cnum:5,alias:"",flds:"field",xmits:i},config6:{ctype:"cx",cnum:6,alias:"",flds:"field",xmits:i},config7:{ctype:"cx",cnum:7,alias:"",flds:"field",xmits:i},config8:{ctype:"cx",cnum:8,alias:"",flds:"field",xmits:i},config9:{ctype:"cx",cnum:9,alias:"",flds:"field",xmits:i},histdata0:{ctype:"hx",cnum:0,alias:"",flds:"ch",xmits:n},histdata1:{ctype:"hx",cnum:1,alias:"",flds:"ch",xmits:n},histdata2:{ctype:"hx",cnum:2,alias:"",flds:"ch",xmits:n},histdata3:{ctype:"hx",cnum:3,alias:"",flds:"ch",xmits:n},histdata4:{ctype:"hx",cnum:4,alias:"",flds:"ch",xmits:n},histdata5:{ctype:"hx",cnum:5,alias:"",flds:"ch",xmits:n},histdata6:{ctype:"hx",cnum:6,alias:"",flds:"ch",xmits:n},histdata7:{ctype:"hx",cnum:7,alias:"",flds:"ch",xmits:n},histdata8:{ctype:"hx",cnum:8,alias:"",flds:"ch",xmits:n},histdata9:{ctype:"hx",cnum:9,alias:"",flds:"ch",xmits:n},aloha:{ctype:"aloha",cnum:void 0,alias:"aloha",flds:null,xmits:["up","up+"]},alerts:{ctype:void 0,cnum:void 0,alias:"alerts",flds:null,xmits:["up"]},applog:{ctype:"applog",cnum:void 0,alias:"applog",flds:null,xmits:["up+"]}},H.HISTDATA_CONTAINER=["histdata0","histdata1","histdata2","histdata3","histdata4","histdata5","histdata6","histdata7","histdata8","histdata9"],H.CONFIG_CONTAINER=["config0","config1","config2","config3","config4","config5","config6","config7","config8","config9"],H.SERVER_CONTAINER=["configA","configB","configC"],H.regexRelation=/^(@[a-zA-Z_][a-zA-Z0-9_]*\.[a-zA-Z_][a-zA-Z0-9_]*(\[[^\]]+\])?(\.[a-zA-Z_][a-zA-Z0-9_]*)*|lib:[a-zA-Z0-9_-]+@[a-zA-Z_][a-zA-Z0-9_]*\.[a-zA-Z_][a-zA-Z0-9_]*(\[[^\]]+\])?(\.[a-zA-Z_][a-zA-Z0-9_]*)*)$/;let j=["astring","nstring","cstring","wstring","ustring"],w=["int8","int16","int32","int64","uint8","uint16","uint32","float16","float32","float64"];H.allowedRelationTypes={title:j,unit:j,chartMinimum:w,chartMaximum:w,scale:w,offset:w,decimalPlaces:["uint8","uint16","uint32","int8","int16","int32","int64"],channelMode:["uint8","uint16","uint32"],chartAlarmLow:w,chartAlarmHigh:w,chartWarningLow:w,chartWarningHigh:w,chartHysteresis:w,chartTriggerThreshold:w,chartTriggerRelation:w,chartSetPoint:w};function S(J,s0,r0){let Z=s0[J];if(Z!==void 0)if(H.regexRelation.exec(`${Z}`)){let i0=J==="chartSetPoint",[U,...v0]=Z.split("."),[,f0]=U.split("@"),B0=Object.values(r0.containers).find(cx=>cx.title===f0),d0=v0.join("."),T0=i0?";":"%",L0=(i0?"":"%")+(B0?.name||f0)+T0;if(L0=L0+`${d0}`,i0){let cx=r0.setPointList[s0.name];L0=L0+`;actual_output_value_${cx}`}return L0}else return Z}H.parseXMLValueWithRelation=S;function T(J){let{bitmask:s0}=J;if(!s0)return;let r0="$",Z=s0.replaceAll(" ","");if(s0.startsWith("0x"))r0+=Z.substring(2);else if(Z.startsWith("0b")){let i0=Z.substring(2).replaceAll(" ","");r0+=parseInt(i0,2).toString(16).toUpperCase()}return r0}H.parseXMLBitmask=T;function q(J){return J.type==="binary"?J.defaultValue.substring(2):J.defaultValue==="NaN"?"NAN":J.defaultValue}H.parseXMLDefaultValue=q,H.TDEF_NUMBER={xmlOut(J,s0,r0){J.decpl=S("decimalPlaces",s0,r0),J.decpl===void 0&&(J.decpl=0),J.vscale=S("scale",s0,r0),J.vofs=S("offset",s0,r0),J.min=S("chartMinimum",s0,r0),J.max=S("chartMaximum",s0,r0)}};let R={isBlob:1,xmlOut(J,s0){J.max=s0.byteSize}},n0={xmlOut(J){J.decpl=-1,J.param0="local",J.units="UTC"}};H.TYPE_DEFS={u8:{dde:"uint8",dim:1,len:1,...H.TDEF_NUMBER,rdef:1,xml:{type:"u8"},pwn:{rwfunc:"u8",htype:"s32",printf:"%d"},openApi:{type:"number",minimum:0}},u16:{dde:"uint16",dim:1,len:2,...H.TDEF_NUMBER,rdef:1,xml:{type:"u16"},pwn:{rwfunc:"u16",htype:"s32",printf:"%d"},openApi:{type:"number",minimum:0}},u32:{dde:"uint32",dim:1,len:4,...H.TDEF_NUMBER,rdef:1,xml:{type:"u32"},pwn:{rwfunc:"u32",htype:"s32",printf:"%d"},openApi:{type:"number",minimum:0}},s8:{dde:"int8",dim:1,len:1,...H.TDEF_NUMBER,rdef:1,xml:{type:"s8"},pwn:{rwfunc:"s8",htype:"s32",printf:"%d"},openApi:{type:"number"}},s16:{dde:"int16",dim:1,len:2,...H.TDEF_NUMBER,rdef:1,xml:{type:"s16"},pwn:{rwfunc:"s16",htype:"s32",printf:"%d"},openApi:{type:"number"}},s32:{dde:"int32",dim:1,len:4,...H.TDEF_NUMBER,rdef:1,xml:{type:"s32"},pwn:{rwfunc:"s32",printf:"%d"},openApi:{type:"number"}},s64:{dde:"int64",dim:0,len:8,...H.TDEF_NUMBER,rdef:1,xml:{type:"s64"},pwn:{rwfunc:"s64",rwp:"%n{%l}",htype:"{%l}",printf:"%d"},openApi:{type:"number"}},f16:{dde:"float16",dim:1,len:2,...H.TDEF_NUMBER,rdef:1,xml:{type:"floatm16"},pwn:{rwfunc:"f16",rwp:"Float:%n",htype:"f32",printf:"%f"},openApi:{type:"number"}},f32:{dde:"float32",dim:1,len:4,...H.TDEF_NUMBER,rdef:1,xml:{type:"f32"},pwn:{rwfunc:"f32",rwp:"Float:%n",printf:"%f"},openApi:{type:"number"}},f64:{dde:"float64",dim:0,len:8,...H.TDEF_NUMBER,rdef:0,xml:{type:"f64"},pwn:{rwfunc:"f64",rwp:"%n{%l}",htype:"{%l}",printf:"%f"},openApi:{type:"number"}},stamp32:{dde:"stamp32",dim:1,len:4,...n0,rdef:0,xml:{type:"stamp4"},pwn:{rwfunc:"stamp32",printf:"%s",printfFormat:"stampToISOString"},openApi:{type:"string",format:"YYYYMMDDhhmmssSSS",description:"UTC"}},stamp40:{dde:"stamp40",dim:0,len:5,...n0,rdef:0,xml:{type:"stamp"},pwn:{rwfunc:"stamp40",rwp:"%n{%l}",htype:"{%l}",printf:"%s",printfFormat:"stampToISOString"},openApi:{type:"string",format:"YYYYMMDDhhmmssSSS",description:"UTC"}},bin:{dde:"binary",dim:0,...R,rdef:0,lenUnits:"byte",xml:{type:"string",editmask:"%HEX%"},pwn:{rwfunc:"bin",rwlen:1,rwp:"%n{%l}",htype:"{%l}",printf:null,printfFormat:"memtostr"},openApi:{type:"string",description:"HEX string"}},astr:{dde:"astring",dim:0,...R,rdef:1,lenUnits:"char",xml:{type:"string",param1:"nocodepage"},pwn:{rwfunc:"astr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}",printf:"%s"},openApi:{type:"string"}},nstr:{dde:"nstring",dim:0,...R,rdef:1,lenUnits:"byte",xml:{type:"string"},pwn:{rwfunc:"nstr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}",printf:"%s"},openApi:{type:"string"}},wstr:{dde:"wstring",dim:0,...R,rdef:1,lenUnits:"byte",xml:{type:"string"},pwn:{rwfunc:"wstr",rwlen:1,rwp:"%n[%l+1]",htype:"[%l+1]",printf:"%s"},openApi:{type:"string"}},ustr:{dde:"ustring",dim:0,...R,rdef:0,lenUnits:"byte",xml:{type:"string"},pwn:{rwfunc:"ustr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}",printf:"%s"},openApi:{type:"string"}},cstr:{dde:"cstring",dim:0,...R,rdef:1,lenUnits:"char",xml:{type:"string",editmask:"%HEX%"},pwn:{rwfunc:"cstr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}",printf:"%s"},openApi:{type:"string"}},_siteref:{dim:0,len:80,rdef:0,xml:{type:"string",max:"80",editmask:"%QUERY%all_sites;-name;!id;class;name;%EMPTY%"},pwn:{rwfunc:"astr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}"},js:{rwfunc:"String"}}},H.fieldTypeDefinitions={uint8:H.TYPE_DEFS.u8,uint16:H.TYPE_DEFS.u16,uint32:H.TYPE_DEFS.u32,int8:H.TYPE_DEFS.s8,int16:H.TYPE_DEFS.s16,int32:H.TYPE_DEFS.s32,int64:H.TYPE_DEFS.s64,float16:H.TYPE_DEFS.f16,float32:H.TYPE_DEFS.f32,float64:H.TYPE_DEFS.f64,stamp32:H.TYPE_DEFS.stamp32,stamp40:H.TYPE_DEFS.stamp40,binary:H.TYPE_DEFS.bin,astring:H.TYPE_DEFS.astr,nstring:H.TYPE_DEFS.nstr,wstring:H.TYPE_DEFS.wstr,ustring:H.TYPE_DEFS.ustr,cstring:H.TYPE_DEFS.cstr};let O=["_id","id","_stamp","stamp","tag","_uid","customer_id","site_id","_rec_flags__","applog"];function Y(J){let s0=J.toLowerCase();return O.includes(s0)||/^field\d+$/.test(s0)||/^ch\d+$/.test(s0)}H.checkForReservedFieldName=Y;function W(J){return!!J.fields.find(s0=>s0.library===null&&s0.type!=="shadow")}H.hasContainerAppFields=W})(G0||={});var _r={DP_registry_sz:1024,DP_config_sz:4e3,DP_histdata_sz:1024,DP_DISPLAY_CNT:0,DP_LED_CNT:0,DP_BUTTON_CNT:0,DP_GPIO_CNT:0,DP_IRQ_CNT:0,DP_DIGOUT_CNT:0,DP_UIN_CNT:0,DP_TEMP_CNT:0,DP_I2C_CNT:0,DP_SPI_CNT:0,DP_UART_CNT:0,DP_RS485_CNT:0,DP_RS232_CNT:0,DP_WIFI_CNT:0,DP_BLE_CNT:0,DP_LORA_CNT:0,DP_NBIOT_CNT:0},vi={max_size:1e5,max_fields:1e3},UA={max_size:4e3,max_fields:1e3},jA={max_size:1024,max_fields:1e3},Sr={configA:vi,configB:vi,configC:vi,config0:UA,config1:UA,config2:UA,config3:UA,config4:UA,config5:UA,config6:UA,config7:UA,config8:UA,config9:UA,histdata0:jA,histdata1:jA,histdata2:jA,histdata3:jA,histdata4:jA,histdata5:jA,histdata6:jA,histdata7:jA,histdata8:jA,histdata9:jA,aloha:{...jA,warn_fields:10},alerts:{max_size:13,max_fields:0,exact_match:!0},applog:{max_size:125,max_fields:0,exact_match:!1}},fi={m22x:{name:"M22x",dpid:"m22x",interface:{type:"usb",filter:{vendorId:9540},fileChunk:4096},usb_ids:["rapidM2M M2 HW1.0"],alt_ids:[],generation:"M2",prog_mem:256*1024,data_mem:64*1024,total_mem:256*1024,hw_reqd:!1,dde:Sr,auto_inc:{..._r,DP_LED_CNT:1,DP_GPIO_CNT:6,DP_IRQ_CNT:2,DP_I2C_CNT:1,DP_SPI_CNT:1,DP_UART_CNT:2,DP_WIFI_CNT:1},usbcaps:{},dlo:{compileRestrictions:{"-z":0}}},m23x:{name:"M23x",dpid:"m23x",interface:{type:"usb",filter:{vendorId:1155},fileChunk:4096},usb_ids:["rapidM2M M23 HW2.0","rapidM2M M23 HW1.0"],alt_ids:[],generation:"M23",prog_mem:8*1024*1024,data_mem:8*1024*1024,total_mem:8*1024*1024,hw_reqd:!1,dde:Sr,auto_inc:{..._r,DP_LED_CNT:1,DP_GPIO_CNT:6,DP_IRQ_CNT:2,DP_I2C_CNT:1,DP_SPI_CNT:1,DP_UART_CNT:1,DP_WIFI_CNT:1},usbcaps:{dbgItfMayHangFixed:"99v999"},dlo:{compileRestrictions:{}}},nrf91:{name:"NRF91",dpid:"nrf91",interface:{type:"usb",filter:{vendorId:9540},fileChunk:2048},usb_ids:["rapidM2M NRF91 HW1.0","ONE NRF91 HW1.0","rapidM2M Evolve HW1.0"],alt_ids:[],generation:"NRF91",prog_mem:256*1024,data_mem:64*1024,total_mem:256*1024,hw_reqd:!1,dde:Sr,auto_inc:{..._r,DP_LED_CNT:1,DP_GPIO_CNT:32,DP_IRQ_CNT:6,DP_I2C_CNT:2,DP_SPI_CNT:2,DP_UART_CNT:2,DP_AIN_CNT:8,DP_PWM_CNT:3},usbcaps:{}},m2blegw:{name:"BLE Gateway",dpid:"m2blegw",interface:{type:"usb",filter:{vendorId:9540},fileChunk:4096},usb_ids:["rapidM2M BLEGW HW1.0"],alt_ids:[],generation:"M2",prog_mem:256*1024,data_mem:256*1024,total_mem:256*1024,hw_reqd:!1,dde:Sr,auto_inc:{..._r,DP_DISPLAY_CNT:1,DP_DISPLAY_TYPE:"xc",DP_BUTTON_CNT:1,DP_BLE_CNT:1},usbcaps:{},dlo:{compileRestrictions:{"-z":0}}},m2easyv3:{name:"myDatalogEasy V3",dpid:"m2easyv3",interface:{type:"usb",filter:{vendorId:9540},fileChunk:4096},usb_ids:["rapidM2M Easy HW3.0"],alt_ids:["rapidM2M EasyIoT HW1.0","rapidM2M M220 HW1.0"],generation:"M2",prog_mem:256*1024,data_mem:256*1024,total_mem:256*1024,hw_reqd:!1,dde:Sr,auto_inc:{..._r,DP_LED_CNT:1,DP_BUTTON_CNT:1,DP_DIGOUT_CNT:1,DP_UIN_CNT:4,DP_TEMP_CNT:1,DP_RS485_CNT:1,DP_RS232_CNT:1,DP_BLE_CNT:1,DP_LORA_CNT:1},usbcaps:{},dlo:{compileRestrictions:{"-z":0}}},m2easyiot:{name:"myDatalogEasy IoT",dpid:"m2easyiot",interface:{type:"usb",filter:{vendorId:9540},fileChunk:4096},usb_ids:["rapidM2M EasyIoT HW1.0"],alt_ids:[],generation:"M2",prog_mem:256*1024,data_mem:256*1024,total_mem:256*1024,hw_reqd:!1,dde:Sr,auto_inc:{..._r,DP_LED_CNT:1,DP_BUTTON_CNT:1,DP_DIGOUT_CNT:1,DP_UIN_CNT:4,DP_TEMP_CNT:1,DP_RS485_CNT:1,DP_RS232_CNT:1,DP_BLE_CNT:1,DP_LORA_CNT:1},usbcaps:{},dlo:{compileRestrictions:{"-z":0}}}};var li=require("vscode-uri");var $r=class{dloFileMap={};rootUri=li.URI.parse("");constructor(){}set workspacePath(A){this.rootUri=A}getSequenceForFile(A){let e=A.substring(this.rootUri.path.length||0);if(this.rootUri.scheme!=="file"){let t=this.rootUri.toString();e=A.substring(t.length+1)}if(Object.hasOwn(this.dloFileMap,e))return this.dloFileMap[e];let r=h0.generateHashForFilePath(e);return this.dloFileMap[e]=r,r}getFilePathForSequence(A){let e=Object.entries(this.dloFileMap).find(([,r])=>r===A);return e?li.URI.parse(`${this.rootUri.path}${e[0]}`).path:null}};var wa=require("vscode-uri");var Ol=/^(?:\s*#options\s+)(.*)(?:\s*)$/,Rl=/^(?:\s*#preinclude\s+)(.*)(?:\s*)$/,Gl=/^(?:\s*#ifdef\s+)(.*)$/,Ul=/^(?:\s*#ifndef\s+)(.*)$/,Hl=/^(?:\s*#elseifdef\s+)(.*)$/,Jl=/^(?:\s*#elseifndef\s+)(.*)$/,_a=/^(\s*)(?:#callback\s+)(\w*)(?:\s*\(\s*)(.*?)(?:\s*\)\s*)(\{*){1}(?:\s*)$/,Sa=/^(.*)(^|\s+)(?:assert\s*\(\s*)(.*?)(?:\s*,\s*)(.*?)(?:\s*\)\s*;*\s*)$/,$a=/^(.*)(^|\s+)(?:assert\s*\(\s*)(.*?)(?:\s*\)\s*;*\s*)$/,Pa=/^(.*)(^|\s+)(?:assert\s*\(\s*\);*\s*)$/,Ta=/^(.*)(^|\s+)(?:catch\s*\(\s*)(.*?)(?:\s*\)\s*;*\s*)$/,zl=/^\s*#include\s*</,Kl=/^\s*#endinput\s*/,Vl=/^\s*#pragma\s+dynamic\s+(\S+)\s*(\/\/.*|\/\*.*|)$/,qa=/^(.*)(^|\s+)(?:applog(|_ok|_warning|_alarm|_debug|_fatal)\s*\(\s*)(.*?)(?:\s*,\s*)(.*?)(?:\s*\)\s*;*\s*)$/,Na=/^(.*)(^|\s*)(?:applog(|_ok|_warning|_alarm|_debug|_fatal)\s*\(\s*)(.*?)(?:\s*\)\s*;*\s*)$/;function ya(x,A=""){let e=" ",r=x;return A.length?e={fatal:"\xA7",alarm:"!",warning:"?",debug:"~",ok:"$"}[A]||null:["!","?","~","$","\xA7"].includes(x.substring(1,1))&&(e=x.substring(1,1),r=`"${x.substring(2,x.length-1)}"`),{priority:`'${e}'`,code:r}}var Ia=/^(.*)(^|\s+)(?:log(|_debug|_info|_warn|_error)\s*\(\s*)(.*?)(?:\s*\)\s*;*\s*)$/,Ma=(t=>(t[t.debug=0]="debug",t[t.info=1]="info",t[t.warn=2]="warn",t[t.error=3]="error",t))(Ma||{}),Wl=/^(.*)(^|\s*)DDE_(state|result|aloha|volatile|setting|command)_/,Xl=/^(.*)(^|\s*)onUplink(Restore|Apply)_(state|result|aloha|volatile|setting|command)/,Yl=/^(.*)(^|\s*)onUplinkEvent/,Ql=/(?:^|\s)(?:assert|catch|applog(?:_ok|_warning|_alarm|_debug|_fatal)?|log(?:_debug|_info|_warn|_error)?)\s*\(/,Zl=/^\s*#callback\s+\w+\s*\(/;function ka(x){let A=0,e=!1,r="";for(let t=0;t<x.length;t++){let i=x[t];if(e){if(i==="\\"){t++;continue}i===r&&(e=!1);continue}if(i==='"'||i==="'"){e=!0,r=i;continue}i==="("?A++:i===")"&&A--}return A}function La(x){return _a.test(x)||Pa.test(x)||Sa.test(x)||$a.test(x)||Ta.test(x)||qa.test(x)||Na.test(x)||Ia.test(x)}function xc(x,A,e){if(!(Ql.test(e)||Zl.test(e)))return null;let t=ka(e);if(t<=0)return null;let i=t,n=[x[A]],F=[e],v=A+1,E=100;for(;i>0&&v<x.length&&v-A<E;){let j=x[v],w=j.split("//",1)[0];n.push(j),F.push(w),i+=ka(w),v++}if(n.length<=1||i>0)return null;let u=n.map((j,w)=>w===0?j:j.trim()).join(" "),p=F.map((j,w)=>w===0?j:j.trim()).join(" ");return La(p)?{joinedOriginal:u,joinedStripped:p,extraLineCount:n.length-1}:null}var Pr=class{pragmaDynamic=null;dloFileSequencer=new $r;constructor(){}get pragmaDynamicFlag(){return this.pragmaDynamic?`-S${this.pragmaDynamic}`:null}preCompileDloFile(A,e,r,t,i){this.dloFileSequencer.workspacePath=A;let n=[],F=t.path,v=!1,E=wa.Utils.basename(t);if(F.includes(e0.filePaths.studio.auto.dlo.path)){let g=E.substring(0,E.length-8);!["app","main"].includes(g)&&E.endsWith("-dde.inc")&&(v=h0.generateHashForLibraryName(g))}else if(F.includes(e0.filePaths.studio.libdeps)){let g=F.split("libdeps/")[1],[S]=g.split("/");["dlo-core"].includes(S)||(v=h0.generateHashForLibraryName(S))}else z.isLibrary(r)&&(E.endsWith(".dlo")||F.includes("/dlo/examples/")||F.includes("/dlo/test/")?e.log("Skipping dde mangling for project file",E):v=h0.generateHashForLibraryName(r.name));if(F.endsWith(".auto/default.inc"))return{data:i.join(`
1647
+ `),diagnostics:n};let u=[],p=this.dloFileSequencer.getSequenceForFile(F);u.push(`stock static __file{} = "${p}";`),u.push(`stock static __refid{} = "${p}";`),u.push('stock static __applog_src_id{} = "A\\0\\0\\0\\0\\0\\0\\0";'),u.push("#line 0");let w=0;for(let g=0;g<i.length;g++){let S=i[g],T=S.split("//",1)[0],q=null,L=0;if(!La(T)){let R=xc(i,g,T);R&&(S=R.joinedOriginal,T=R.joinedStripped,L=R.extraLineCount)}if(q=Ol.exec(T))S="// "+S,n.push({file:t,level:"error",line:g,message:"#options is not supported here. Use the DLO settings instead."});else if(q=Rl.exec(T))S="// "+S,n.push({file:t,level:"error",line:g,message:"#preinclude is not supported here. Use the DLO settings instead."});else if(q=Vl.exec(T)){let R=Number(q[1].startsWith("(")?q[1].substring(1,q[1].length-1):q[1]);!Number.isInteger(R)||R<64?n.push({file:t,level:"error",line:g,message:"#pragma dynamic only supports integer values and must be greater than 63"}):(!this.pragmaDynamic||R>this.pragmaDynamic)&&(this.pragmaDynamic=R)}else if(q=Gl.exec(T))S=S.replace("#ifdef ","#if defined ");else if(q=Ul.exec(T))S=S.replace("#ifndef ","#if !defined ");else if(q=Hl.exec(T))S=S.replace("#elseifdef ","#elseif defined ");else if(q=Jl.exec(T))S=S.replace("#elseifndef ","#elseif !defined ");else if(q=_a.exec(T)){let[,R,n0,M,y]=q;S=`${R}#define ${n0} _catch_funcidx( "___${n0}")
1648
+ forward ___${n0}( ${M});
1649
1649
  #line
1650
- ${$}
1651
- public ___${t0}( ${M})${h}`}else if(N=yi.exec(P)){let[,O,t0]=N;q=`${O}${t0}{_log_string="";_assert(__refid,__line);}`}else if(N=hi.exec(P)){let[,O,t0,M,h]=N;q=`${O}${t0}{ if (!(${M})) { sprintf(_log_string,_,${h.replace(/%%/g,"\xFF")});_assert(__refid,__line); }}`}else if(N=gi.exec(P)){let[,O,t0,M]=N;q=`${O}${t0}{ if (!(${M})) { _log_string="";_assert(__refid,__line); }}`}else if(N=ki.exec(P)){let[,O,t0,M]=N;q=`${O}${t0}_catch(__refid,__line,${M});`}else if(N=_i.exec(P)){let[,O,t0,M,h,L]=N,{priority:Y,code:W}=bi(h,M.substring(1));Y!==null&&(q=`${O}${t0}{new params_str{DDE_APPLOG_SIZE_PARAMS};sprintf(params_str,_,${L});DDE_applog_write(${Y}, ${W}, params_str, __applog_src_id);}`)}else if(N=wi.exec(P)){let[,O,t0,M,h]=N,{priority:L,code:Y}=bi(h,M.substring(1));L!==null&&(q=`${O}${t0}DDE_applog_write(${L}, ${Y}, "", __applog_src_id);`)}else if(N=$i.exec(P)){let[,O,t0,M,h]=N,L=M.substring(1),Y=qi[L];q=`${O}${t0}{ if(_log_level <= ${Y}){ sprintf(_log_string,_,${h.replace(/%%/g,"\xFF")}); _log${M}(__refid,__line); }}`}else(N=NF.exec(P))&&!B.includes(s0.filePaths.studio.auto.path)?(B.includes(s0.filePaths.studio.libdeps)||t.push({file:i,level:"warning",line:y,message:"Libraries are included automatically - remove this #include line"}),q="// Libraries are included automatically! - "+P):(N=IF.exec(P))&&(t.push({file:i,level:"error",line:y,message:"#endinput is not supported - use #if/#endif instead"}),q=P);l&&!e.legacyProject&&(LF.exec(P)&&(q=q.replaceAll("DDE_",`_${l}`)),RF.exec(P)&&(q=q.replace("onUplink",`_${l}`)),OF.exec(P)&&(q=q.replace("onUplink",`_${l}Uplink`))),j.push(q),$++;for(let O=0;O<R;O++)j.push(""),$++,y++}if(D!=="main.dlo"){let y=D.split(".")[0].replace(/[^a-zA-Z0-9]/g,"_"),q=`_inc_${y}`.substring(0,31),P=`_inc_${y}_inc`.substring(0,31);j.push(`#if defined ${q}`),j.push(`#undef ${q}`),j.push("#endif"),j.push(`#if defined ${P}`),j.push(`#undef ${P}`),j.push("#endif")}return{data:j.join(`
1652
- `),diagnostics:t}}};var wA=require("vscode-uri");var $0=dx(require("fs")),Q0=require("vscode-uri");var Ii=dx(require("iconv-lite")),KF=h0.convertBlobToStringArray,Mi=16384,Li=511,rn=Mi|Li,zF=32768,JF=438,Pi=zF|JF,VF=new Ae,re={};function Ri(){let A=[];for(let x of Object.keys(re))A.push(...re[x].diagnostics);return A}var at=!!process.env.DLO_PROFILE,zA={precompileCount:0,cacheHits:0,precompileMs:0};function Oi(A){at&&(A.log(`[DLO_PROFILE] precompile: ${zA.precompileCount} runs, ${zA.cacheHits} cache hits, ${zA.precompileMs.toFixed(1)}ms`),zA.precompileCount=0,zA.cacheHits=0,zA.precompileMs=0)}var en=(A,x,r,e)=>{let i={getattr(t){let B=Q0.Utils.joinPath(Q0.URI.parse(t.mount.opts.root),A.getPath(t)),l=B.fsPath;if(!$0.existsSync(l))throw new A.ErrnoError(44);let D=Ni(x,e,r,B),j=$0.statSync(l),b=D?.length||j.size;return{mode:j.isDirectory()?rn:Pi,size:b,atime:j.atime,mtime:j.mtime,ctime:j.ctime}},setattr(t,B){let l=Q0.Utils.joinPath(Q0.URI.parse(t.mount.opts.root),A.getPath(t)).fsPath;if(!$0.existsSync(l))throw new A.ErrnoError(44);if(typeof B.size=="number"&&$0.truncateSync(l,B.size),typeof B.mode=="number"&&$0.chmodSync(l,B.mode),B.atime||B.mtime){let D=$0.statSync(l);$0.utimesSync(l,B.atime??D.atime,B.mtime??D.mtime)}},lookup(t,B){let D=Q0.Utils.joinPath(Q0.URI.parse(t.mount.opts.root),A.getPath(t),B).fsPath;if(!$0.existsSync(D))throw new A.ErrnoError(44);let j=$0.statSync(D),b=A.createNode(t,B,j.isDirectory()?rn:Pi,0);return b.node_ops=t.node_ops,b.stream_ops=t.stream_ops,b},readdir(t){let B=Q0.Utils.joinPath(Q0.URI.parse(t.mount.opts.root),A.getPath(t)).fsPath;return[".","..",...$0.readdirSync(B)]},mknod(t,B,l,D){let j=Q0.Utils.joinPath(Q0.URI.parse(t.mount.opts.root),A.getPath(t),B).fsPath;$0.writeFileSync(j,"");let b=A.createNode(t,B,l,D);return b.node_ops=t.node_ops,b.stream_ops=t.stream_ops,b},unlink(t,B){let l=Q0.Utils.joinPath(Q0.URI.parse(t.mount.opts.root),A.getPath(t),B).fsPath;$0.unlinkSync(l)},mkdir(t,B,l){let D=Q0.Utils.joinPath(Q0.URI.parse(t.mount.opts.root),A.getPath(t),B).fsPath;$0.mkdirSync(D,{mode:l});let j=A.createNode(t,B,l|rn,0);return j.node_ops=t.node_ops,j.stream_ops=t.stream_ops,j},rmdir(t,B){let l=Q0.Utils.joinPath(Q0.URI.parse(t.mount.opts.root),A.getPath(t),B).fsPath;$0.rmdirSync(l)},rename(t,B,l){let D=Q0.Utils.joinPath(Q0.URI.parse(t.mount.opts.root),A.getPath(t)).fsPath,j=Q0.Utils.joinPath(Q0.URI.parse(B.mount.opts.root),A.getPath(B),l).fsPath;$0.renameSync(D,j)}},o={open(t){let B=Q0.Utils.joinPath(Q0.URI.parse(t.node.mount.opts.root),A.getPath(t.node));t.modifiedContent=Ni(x,e,r,B),t.modifiedContent||(t.nfd=$0.openSync(B.fsPath,Ti(t.flags)))},close(t){t.nfd&&$0.closeSync(t.nfd)},read(t,B,l,D,j){if(!t.modifiedContent)return $0.readSync(t.nfd,B,l,D,j);let b=t.modifiedContent;if(j>=b.length)return 0;let k=b.length-j,$=Math.min(D,k);return WF(b,B,l,j,j+$),$},write(t,B,l,D,j){return $0.writeSync(t.nfd,B,l,D,j)},flagsToMode:Ti,llseek(t,B,l){let D=B;if(l===1)D+=t.position;else if(l===2){let j=$0.fstatSync(t.nfd);D+=j.size}if(D<0)throw new A.ErrnoError(28);return t.position=D,D}};return{mount(){let t=JA(x),B=A.createNode(null,t,Mi|Li,0);return B.node_ops=i,B.stream_ops=o,B},node_ops:i,stream_ops:o}};function Ti(A){let x=A&2097155;if(x===0)return"r";if(x===1)return"r+";if(x===65)return"w";if(x===577)return"w+";if(x===1089)return"a";if(x===1217)return"a+";throw new Error(`Unknown file open flags: ${A}`)}function WF(A,x,r,e,i){if(Buffer.isBuffer(A)&&Buffer.isBuffer(x))A.copy(x,r,e,i);else{let o=A.subarray(e,i);Buffer.isBuffer(x)?Uint8Array.prototype.set.call(x,o,r):x.set(o,r)}}function Ni(A,x,r,e){let i=e.fsPath;if(!i.endsWith(".dlo")&&!i.endsWith(".inc"))return;let o=XF(i);if(!o){delete re[i];return}let t=re[i];if(t&&t.mtimeMs===o.mtimeMs&&t.size===o.size)return at&&zA.cacheHits++,t.buffer;let B=at?performance.now():0,l=YF(A,x,r,e);return at&&(zA.precompileCount++,zA.precompileMs+=performance.now()-B),re[i]={buffer:l.buffer,mtimeMs:o.mtimeMs,size:o.size,diagnostics:l.diagnostics},re[i].buffer}function XF(A){try{return $0.statSync(A)}catch{return null}}function YF(A,x,r,e){let i=$0.readFileSync(e.fsPath),o=KF(i),t=VF.preCompileDloFile(A,x,r,e,o);return{buffer:Ii.encode(t.data,"cp1252"),diagnostics:t.diagnostics}}function JA(A){return A.fsPath.replace(/\\/g,"/")}function qe(A,x){let r=JA(A);return JA(x).replace(r,"")}var Wi=Vi(),Pe=Wi.createPawnCC,Xi=Wi.createPawnDbg;var ee=class{constructor(x,r,e){this.cwd=x;this.fs=r;this.logger=e;this.dloCC=null}cwd;fs;logger;dloCC;stdout=[];stderr=[];async initDloCC(x=!1){this.stdout.length=0,this.stderr.length=0,this.dloCC=await Pe({noExitRuntime:x,print:t=>{let B=tn(this.cwd,t);this.logger.log(B?B.message:t),this.stdout.push(t)},printErr:t=>{let B=tn(this.cwd,t);t.includes(": warning")?this.logger.warn(B?B.message:t):this.logger.error(B?B.message:t),this.stderr.push(t),this.stdout.push(t)}});let r=JA(this.cwd),[e]=r.split("/"),i=this.dloCC.FS,o=await z.read(this.cwd,this.fs);i.filesystems.NODEFS_TS=en(i,this.cwd,o,this.logger),i.mkdir(e),i.mount(i.filesystems.NODEFS_TS,{root:"/"},e),i.chdir(JA(this.cwd))}async compile(x,r){let e=await z.read(x,r);if(!await z.isApmPartEnabled(x,r,b0.Part.dlo,e))return this.logger.log("DLO not enabled. Skipped."),{code:0,stdout:[],stderr:[],diagnostics:[]};await this.initDloCC(),await r.mkdir(wA.Utils.joinPath(x,"dist/dlo"));let i=wA.Utils.joinPath(x,e.dlo?.mainFile||s0.filePaths.dlo.mainDLO),o=[],t=wA.Utils.joinPath(x,s0.filePaths.studio.auto.dlo.cfg),B=qe(x,t);o.push(`-T.${B}`);let l=0;try{let D=`.${qe(x,i)}`;l=await this.dloCC.callMain([D,...o])}catch(D){this.logger.error(D)}return{code:l,stdout:this.stdout,stderr:this.stderr,diagnostics:[...Ri(),...nn(x,this.stderr,i)]}}async getDloSymbols(x,r){let e=r.map(j=>{let b=j.substring(0,2);return["-D","-e","-i","-o","-p","-r","-T"].includes(b)?`${b}.${j.substring(2)}`:j}),i=!!process.env.DLO_PROFILE,o=i?performance.now():0,{compiler:t,print:B}=await this.getSymbolCompiler(),l=i?performance.now()-o:0,D=i?performance.now():0;try{if(await t.callMain(["."+x,...e,"-R"]))return null}catch(j){if(j.stack?.startsWith("RuntimeError"))return null;throw j}finally{if(i){let j=performance.now()-D;this.logger.log(`[DLO_PROFILE] instantiate: ${l.toFixed(1)}ms, callMain: ${j.toFixed(1)}ms`),Oi(this.logger)}}return[...B.stdout,...B.stderr]}async getSymbolCompiler(){let x={stdout:[],stderr:[]},r=await Pe({noExitRuntime:!1,print:B=>{x.stdout.push(B)},printErr:B=>{x.stderr.push(B)}}),e=JA(this.cwd),[i]=e.split("/"),o=r.FS,t=await z.read(this.cwd,this.fs);return o.filesystems.NODEFS_TS=en(o,this.cwd,t,this.logger),o.mkdir(i),o.mount(o.filesystems.NODEFS_TS,{root:"/"},i),{compiler:r,print:x}}};function nn(A,x,r){let e=[],i=x.filter(o=>!!o.trim());for(let o of i){if((o.includes("Assertion failed:")||o.includes("Compilation aborted."))&&r){e.push({file:r,level:"error",line:0,message:o});continue}let t=tn(A,o);t&&e.push({file:wA.URI.parse(`file:///${t?.posixPath}`),level:t.level,line:Number(t.lineNumber)-1,message:t.msg})}return e}function tn(A,x){let r=x.indexOf(" : "),e=x.indexOf(": ",r+3),i=x.substring(0,r).trim(),o=x.substring(r+3,e).trim(),t=x.substring(e+2).trim();if(!i||!o||!t)return null;let[B,l]=i.split(/[()(-)]/),D=o.split(" "),j=D[D.length-2],k=wA.Utils.joinPath(A,B).fsPath.replace(/\\/g,"/");k.startsWith("/")&&(k=k.substring(1));let $=x.replace(B,k);return{level:j,msg:t,posixPath:k,lineNumber:l,message:$}}async function Yi(A,x,r){let e=["-M","-v2"],i=wA.Utils.joinPath(A,s0.filePaths.studio.auto.dlo.defaultInc);e.push(`-p.${qe(A,i)}`);let o=await V0.getApmPartDependencies(A,x,b0.Part.dlo);for(let B of o){let l=wA.Utils.dirname(B.path);e.push(`-i.${qe(A,l)}`)}let t=r.dlo;return t&&e.push(...t.compileOptions),e.push("-o./dist/dlo/main.amx"),{path:wA.Utils.joinPath(A,s0.filePaths.studio.auto.dlo.cfg),data:e.join(`
1653
- `)}}var ot;(l=>{l.createPawnCC=Pe,l.createPawnDbg=Xi,l.FileSequencer=xe,l.PreCompiler=Ae,l.Compiler=ee,l.uriToMemFs=JA,l.parseCompilerWarningsAndErrors=nn;async function B(D,j,b){let k=await z.read(D,j),$=await Yi(D,j,k);await j.writeFile($.path,$.data),b.log("Generated",s0.filePaths.studio.auto.dlo.cfg)}l.exportDloConfig=B})(ot||={});var Zi=require("vscode-uri");var an=require("minimatch");var xs=require("@gera2ld/tarjs"),E8=h0.convertBlobToString,B8=require("pako"),As=".studioignore",rs=[".vscodeignore","package-lock.json","npm-debug.log","yarn.lock","yarn-error.log","npm-shrinkwrap.json",".editorconfig",".npmrc",".yarnrc",".gitattributes","*.todo","tslint.yaml",".eslintrc*",".babelrc*",".prettierrc*",".cz-config.js",".commitlintrc*","webpack.config.js","ISSUE_TEMPLATE.md","CONTRIBUTING.md","PULL_REQUEST_TEMPLATE.md","CODE_OF_CONDUCT.md",".github",".travis.yml","appveyor.yml","**/.git","**/.git/**","**/*.vsix","**/.DS_Store","**/*.vsixmanifest","**/.vscode-test/**","**/.vscode-test-web/**"];rs.push("**/.studio/**","**/node_modules/**",As,"dist/defines.app.ts");var Qi={dot:!0},te;(e=>{async function A(i,o){let t=new xs.TarWriter;(await x(i,o)).forEach(D=>{t.addFile(D.name,D.data)});let l=await t.write();return B8.gzip(await l.arrayBuffer())}e.createArchive=A;async function x(i,o){let t=[],{ignore:B,negate:l}=await f8(i,o),j=(await o.findFiles(i,"**/*")).filter(({path:b})=>{let k=b.slice(i.path.length+1);return!B.some($=>(0,an.minimatch)(k,$,Qi))||l.some($=>(0,an.minimatch)(k,$.slice(1),Qi))});for(let b of j){let k=b.path.slice(i.path.length+1),[$,y]=await Promise.all([o.stat(b),o.readFile(b)]);$&&t.push({name:k,data:y,modifyTime:new Date($.mtime)})}return t}e.getFilesForArchive=x;async function r(i,o,t,B=ax.ENV.production){let{publisher:l,name:D,version:j}=o,b=await px.readFilesFromTarGz(t,["CHANGELOG.md","README.md","studio.json"]),k={"CHANGELOG.md":await sn(b["CHANGELOG.md"]),"README.md":await sn(b["README.md"]),"studio.json":await sn(b["studio.json"]),"library.tar.gz":t};return await Ax.publishLibraryVersion(i,l,D,j,k,B)}e.publishPackage=r})(te||={});async function f8(A,x){let r=["!studio.json","!README.md"],i=(await C8(A,x)).split(/[\n\r]/).map(D=>D.trim()).filter(D=>!!D).filter(D=>!/^\s*#/.test(D)),o=[...i,...i.filter(D=>!/(^|\/)[^/]*\*[^/]*$/.test(D)).map(D=>/\/$/.test(D)?`${D}**`:`${D}/**`)],t=[...rs,...o,...r],[B,l]=t.reduce((D,j)=>/^\s*!/.test(j)?[D[0],[...D[1],j]]:[[...D[0],j],D[1]],[[],[]]);return{ignore:B,negate:l}}async function C8(A,x){let r=Zi.Utils.joinPath(A,As);if(await x.stat(r)){let i=await x.readFile(r);return E8(i)}else return""}async function sn(A){return new Uint8Array(await A.arrayBuffer())}var $A=require("vscode-uri");var Fr=require("yaml");var l8=h0.convertBlobToString,Ft=h0.yamlRangeToLineInformation,vt;(t=>{let A;(j=>(j.static="static",j.dynamic="dynamic",j.appDynamic="app-dynamic"))(A=t.Type||={});let x;(b=>(b.crcStamp="crc_stamp",b.stampOnly="stamp_only",b.onlyDown="only_down",b.onlyUp="only_up"))(x=t.SyncLogic||={});let r;(j=>(j.down="down",j.up="up",j.off="off"))(r=t.Force||={});async function e(B,l,D){let{properties:j,diagnostics:b,libraryFiles:k}=await i(B,l),$=$A.Utils.joinPath(B,s0.filePaths.dist.dfilesPath);await l.stat($)&&await l.rm($);for(let[y,q]of Object.entries(j))await D8(B,l,y,q,k);return Object.keys(j).length&&(D.done(`${Object.keys(j).length} dfiles processed.`),await l.writeFile($A.Utils.joinPath(B,s0.filePaths.dist.dfilesProperties),JSON.stringify(j,null," "))),b}t.process=e;async function i(B,l){let D=[],j={},b=await V0.getApmPartDependencies(B,l,b0.Part.dfiles);for(let y of b){let{properties:q,diagnostics:P}=await o(l,y.path,y.name);Object.assign(j,q),D.push(...P)}let{properties:k,diagnostics:$}=await o(l,$A.Utils.joinPath(B,s0.filePaths.dfiles.mainDFILES),null);return Object.assign(j,k),D.push(...$),{properties:j,diagnostics:D,libraryFiles:b}}t.parseDfile=i;async function o(B,l,D){let j=[],b={};if(!await B.stat(l))return{properties:b,diagnostics:j};let k=await B.readFile(l),$=l8(k),y=new Fr.LineCounter,P=(0,Fr.parseDocument)($,{lineCounter:y}).contents||new Fr.YAMLMap;for(let N of P.items){let R=N.key.value,O=(0,Fr.isMap)(N.value)?N.value:null,t0=Ft(y,N.key.range),M=O?O.has("syncMode"):!1,h=M?O.get("syncMode"):"crc_stamp";if(M){let K=Object.values(t.SyncLogic);if(!K.includes(h)){let i0=O.items.find(Z=>Z.key.value==="syncMode"),r0=Ft(y,i0.key.range);j.push({file:l,code:"",message:`Property syncMode does not match any of "${K.join(", ")}"`,line:r0.line,startCharacter:r0.startCharacter,endCharacter:r0.endCharacter,level:"error"})}}else j.push({file:l,code:"",message:'Property "syncMode" missing',line:t0.line,startCharacter:t0.startCharacter,endCharacter:t0.endCharacter,level:"error"});let L=O?O.has("type"):!1,Y=L?O.get("type"):"static";if(L){let K=Object.values(t.Type);if(!K.includes(Y)){let i0=O.items.find(Z=>Z.key.value==="type"),r0=Ft(y,i0.key.range);j.push({file:l,code:"",message:`Property type does not match any of "${K.join(", ")}"`,line:r0.line,startCharacter:r0.startCharacter,endCharacter:r0.endCharacter,level:"error"})}}R.match(/^[a-z0-9._-]*$/)||j.push({file:l,code:"",message:'Filename does not match pattern "a-z0-9._-"',line:t0.line,startCharacter:t0.startCharacter,endCharacter:t0.endCharacter,level:"error"});let W=$A.Utils.joinPath($A.Utils.dirname(l),R),H=await c8(B,W);if(H)b[R]={crc:H.crc,force:"off",readable:!1,size:H.size,stamp:H.stamp,sync_logic:h,type:Y,library:D};else{let K=Ft(y,N.key.range);j.push({file:l,code:"",message:`Could not find file "${R}"`,line:K.line,startCharacter:K.startCharacter,endCharacter:K.endCharacter,level:"error"})}}return{properties:b,diagnostics:j}}t.parseYamlFile=o})(vt||={});async function c8(A,x){let r=await A.stat(x);if(!r)return null;let e=await A.readFile(x);return{size:r.size,stamp:Math.trunc(r.ctime),crc:h0.generateCRC32ForFileContent(e)}}async function D8(A,x,r,e,i){let t=e.library!==null?$A.Utils.dirname(i.find(D=>D.name===e.library).path):$A.Utils.joinPath(A,s0.filePaths.dfiles.path),B=$A.Utils.joinPath(A,s0.filePaths.dist.dfilesPath,r),l=$A.Utils.joinPath(t,r);await x.copy(l,B)}var es=dx(require("dotenv")),ts=require("vscode-uri");var d8=".env.local",ns;(x=>{async function A(r,e){let i=ts.Utils.joinPath(r,d8);if(await e.stat(i)){let o=await e.readFile(i);return es.default.parse(h0.convertBlobToString(o))}return{}}x.read=A})(ns||={});var Te=dx(require("chalk")),Et;(e=>{let A;(D=>(D[D.log=0]="log",D[D.done=1]="done",D[D.info=2]="info",D[D.warning=3]="warning",D[D.error=4]="error"))(A=e.LogMessageType||={}),e.LOG_PREFIX={1:Te.default.bgGreen.black(" DONE "),0:"",2:Te.default.bgBlueBright.black(" INFO "),3:Te.default.bgYellow.black(" WARNING "),4:Te.default.bgRed.black(" ERROR ")};class r{_logHandler;_silent=!1;constructor(o=console){this._logHandler=o}_log(o,t,...B){this._silent&&o!==4||(B=[e.LOG_PREFIX[o],t,...B],this._logHandler.log(...B))}set silent(o){this._silent=o}log(o,...t){this._log(0,o,...t)}debug(o,...t){this._log(0,o,...t)}error(o,...t){this._log(4,o,...t)}info(o,...t){this._log(2,o,...t)}warn(o,...t){this._log(3,o,...t)}done(o,...t){this._log(1,o,...t)}}e.Logger=r})(Et||={});var is=require("uuid"),u8="b4baec47-0ba4-4e37-b237-8f9cde42b8dd";var Ne=class{domain;auth;logger;userInfo=null;constructor(x,r,e){if(typeof x=="object"){let{serverUrl:i,apiToken:o,authHeader:t,logger:B}=x;this.domain=this.normalizeServerUrl(i),this.auth=t||(o?`Bearer ${o}`:""),this.logger=B}else this.domain=this.normalizeServerUrl(x),typeof r=="string"?(this.auth=`Bearer ${r}`,this.logger=e):(this.auth="",this.logger=r)}setAuth(x){this.auth=x}getDomain(){return this.domain}normalizeServerUrl(x){return!x.startsWith("http://")&&!x.startsWith("https://")?`https://${x}`:x}trimDomain(x){return x.replace(/(^\w+:|^)\/\//,"")}async fetchJSON(x,r,e){let i=`${this.domain}${r}`,o={Authorization:this.auth},t={method:x,headers:o};e&&(e instanceof FormData?t.body=e:(o["Content-Type"]="application/json",t.body=JSON.stringify(e)));let B=await fetch(i,t);if(!B.ok){let l=await B.text().catch(()=>"Unknown error");throw new Error(`HTTP ${B.status}: ${l}`)}return B.json()}async authenticate(){this.logger?.info(`Authenticating with ${this.trimDomain(this.domain)}...`);try{let{user:x,customers:r}=await this.fetchJSON("GET","/api/1/me");return this.userInfo={name:x.name,email:x.email,group:x.group,customers:r},this.logger?.info(`Authenticated as ${this.userInfo.name}`),this.userInfo}catch(x){throw new Error(`Authentication failed: ${x instanceof Error?x.message:String(x)}`)}}getUserInfo(){return this.userInfo}async uploadDevTag(x,r){this.logger?.info(`Uploading development tag ${x}...`);let{applid:e}=await this.fetchJSON("POST",`/api/1/app-center/__dev/${x}`,r);return this.logger?.info(`Development tag uploaded, application ID: ${e}`),e}async getCustomer(x){let{_uid:r,name:e}=await this.fetchJSON("GET",`/api/1/customers/${x}`);return{_uid:r,name:e}}async getCustomers(){return this.fetchJSON("GET","/api/1/customers")}async getDeviceSite(x){try{return await this.fetchJSON("GET",`/api/1/devices/${x}/site`)}catch{return null}}async getDevice(x){try{return await this.fetchJSON("GET",`/api/1/devices/${x}`)}catch{return null}}async getSite(x,r){try{return await this.fetchJSON("GET",`/api/1/customers/${x}/sites/${r}`)}catch{return null}}async createDevelopmentSite(x,r,e){if(this.logger?.info(`Creating development site "${r.name}"...`),r.serialNumber){let o=await this.getSite(x,r.name.toLowerCase());if(o)try{return await this.fetchJSON("POST",`/api/1/customers/${x}/sites/${o._uid}/cn-attach-device`,{device_id:r.serialNumber,allow_overwrite:!0,detach_from_old_site:!0,acquire:!0,create:!0}),this.logger?.info(`Device attached to existing site ${o._uid}`),o._uid}catch(t){if(t.message&&!t.message.includes("304"))this.logger?.warn(`Could not attach device to existing site: ${t.message}`);else return o._uid}}let{_uid:i}=await this.fetchJSON("POST",`/api/1/customers/${x}/sites`,{name:r.name,create:!0,force:!0,note:"This is a Studio development site",applid:r.applicationId,device_id:r.serialNumber,reg_code:e,servicetariff:"0000000000000000",servicetariff_indiv_cost:0});return this.logger?.info(`Development site created: ${i}`),i}async updateSiteName(x,r){try{await this.fetchJSON("PUT",`/api/1/sites/${x}`,{name:r})}catch{}}};function ss(A){return(0,is.v5)(A,u8)}async function on(A,x,r,e,i,o,t){let B=await z.read(A,x),l=i.replaceAll(" ","_").replace(/[^a-zA-Z0-9-]+/g,""),D=B.name.replaceAll(" ","_").replace(/[^a-zA-Z0-9-]+/g,""),j=await z.isApmPartEnabled(A,x,b0.Part.dlo,B),b=j&&e,k=b?e.toUpperCase():`${D}_${l}`,$=b?e:k,y=t||k;return y.length>50&&(r.warn(`Site name "${y}" is too long. Truncating to 50 characters.`),y=y.substring(0,50)),{apmId:ss($),applicationId:null,name:y,version:1,serialNumber:j?e:void 0,siteUid:null,customerUid:o}}async function as(A,x,r,e,i,o,t=!1){if(o.length>0)for(let B of o){let[l,D]=B.split("@");await V0.installDependency(A,x,r,e,i,l,D||null,t)}else await V0.installDependencies(A,x,r,e,i);await V0.installNpmInApmParts(A,x,r)}async function os(A,x,r,e,i=null,o=!0,t){return await z.validateBasicManifest(A,x,null),px.buildAll(A,x,r,e,i,o,t)}async function b8(A){let x=null;if(A){x=A==="*"?A:A.split(";");let r=await z.validateRegistryAllowedBackends(x);if(r)throw new Error(r)}return x}async function Fs(A,x,r,e,i,o,t,B){r.info("Publishing package...");let l=await b8(o);if(B)await px.publishArchive(A,x,r,i,e,B,t,l);else return await px.validatePublishSettings(A,x,i,e),px.release(A,x,r,e,i,t,l)}async function vs(A,x,r,e,i,o){return px.pack(A,x,r,e,i,o)}var Er=R0.DDEContainerName,Es=R0.allowedRelationTypes,p8=R0.regexRelation,j8=R0.ContainerType,m8=R0.checkForReservedFieldName,Bt=R0.ContainerName,Bs=R0.CONTAINER_DEFS,h8=R0.SERVER_CONTAINER,g8=R0.HISTDATA_CONTAINER,y8=R0.CONFIG_CONTAINER,ne=R0.TransferDirection,fs=R0.fieldTypeDefinitions,xA=h0.yamlRangeToLineInformation,ft;(x=>{class A{constructor(e,i,o){this.manifest=e;this.libraryFiles=i;this.ddeHistory=o}manifest;libraryFiles;ddeHistory;fieldNamesPerContainer={};usedContainerNames={};fileDiagnostics=[];libraryDDE=[];libraryYaml={};parseLibraries(){this.libraryDDE.length=0;let e=[];return this.libraryFiles.forEach(i=>{let{parsedDDE:o,diagnostics:t,parsedYaml:B}=this.parseYamlFile(i.path,i.yaml,i.libraryName);e.push(...t),this.libraryDDE.push(o),this.libraryYaml[i.libraryName]=B}),e}get previousVersion(){return{setPointList:{...this.ddeHistory?.setPointList},containers:{...this.ddeHistory?.containers}}}getContainerOfPreviousVersion(e){let i=this.previousVersion,o=e.startsWith("timeseries_")?e.substring(11):e;return Object.values(i.containers).find(t=>t.title===o)||null}parseMainDDE(e,i){let{parsedDDE:o,diagnostics:t}=this.parseYamlFile(e,i);return t.find(D=>D.level==="error")?{ddeJSON:null,diagnostics:t}:{ddeJSON:this.mergeAndFormat(o),diagnostics:t}}parseYamlFile(e,i,o){this.fileDiagnostics.length=0;let t=new vr.LineCounter,B=(0,vr.parseDocument)(i,{lineCounter:t});if(!B.contents)return{parsedDDE:{containers:{},setPointList:{}},diagnostics:[],parsedYaml:null};let l=B.contents||new vr.YAMLMap;return this.validateContainerDefinition(l.items).forEach(j=>{this.validateAllowedContainer(e,j,t,o),this.validateContainerFields(B,e,j,t)}),{parsedDDE:this.yamlDocToDdeJson(B.toJS({mapAsMap:!0}),o),diagnostics:[...this.fileDiagnostics],parsedYaml:B}}yamlDocToDdeJson(e,i){let o={containers:{},setPointList:{}},t=new Map,B=[...Object.values(Er)];if(e.get("cloudProject")){let D=Object.values(this.previousVersion.containers).map(b=>b.title),j=[...new Set([...B,...D])];B.length=0,B.push(...j)}for(let D of B)e.has(D)&&t.set(D,e.get(D));let l=e.get("timeseries");if(l)for(let[D,j]of l)t.set(D,j);for(let[D,j]of t){let{realContainer:b,transferDirection:k,legacyTitle:$}=this.getRealContainerInformation(D);if(!b)continue;let y=Bs[b],q=D.includes("timeseries_")?D.replace("timeseries_",""):D,P={name:b,title:q,previousTitle:$,containerType:y.ctype,volatile:D===Er.volatile,transferDirection:k,fieldCount:j.size,knownNames:[],libraries:[],arrays:{},shadows:{},fields:[],size:0,fieldIndex:0};i&&P.libraries.push(i);for(let[N,R]of j){let O=[],t0=R.get("type"),M=fs[t0];if(!(!M&&t0!=="array")){if(t0==="array"){let h=[],L=R.get("length"),Y=R.get("fields"),W={name:N,length:L,library:i||null,fields:[]};P.arrays[N]=W;for(let H=0;H<L;H++){let K={name:N,index:H};for(let[i0,r0]of Y){let Z=fs[r0.get("type")];if(!Z)continue;W.fields?.find(v0=>v0.name===i0)||W.fields.push({name:i0,type:r0.get("type"),byteSize:Z.len||r0.get("bytes")||r0.get("length")});let n0=`${N}[${H}].${i0}`,{fields:U,shadowInfo:F0}=this.createDDEJsonFields(n0,i,Z,r0);U.forEach(v0=>{v0.arrayRef=K}),F0&&(P.shadows[F0.name]=F0),h.push(...U)}}O.push(...h)}else{let{arrayInfo:h,fields:L,shadowInfo:Y}=this.createDDEJsonFields(N,i,M,R);h&&(P.arrays[h.name]=h),Y&&(P.shadows[Y.name]=Y),O.push(...L)}O.forEach(h=>{h.index=++P.fieldIndex,P.fields.push(h),P.size+=h.byteSize})}}o.containers[b]=P}return o}getRealContainerInformation(e){let i,o,t;if(this.previousVersion){let B=e.startsWith("timeseries_")?e.substring(11):e,{name:l,direction:D,previousTitle:j}=this.findPreviousUsedContainer(B);i=l,o=D,t=j}if(!i){let B=Object.entries(this.usedContainerNames).find(([,l])=>l===e);B&&(i=B[0])}return i||(i=this.findNextFreeContainer(e)),this.usedContainerNames[i]=e,o||(o=[Er.setting,Er.command].includes(e)?ne.down:ne.up),o===ne.up&&i&&Bs[i].xmits.includes(ne.upPlus)&&(o=ne.upPlus),i&&[Bt.configA,Bt.configB].includes(i)&&(o=ne.backendOnly),{realContainer:i,transferDirection:o,legacyTitle:t}}findNextFreeContainer(e){if(e===Bt.aloha)return Bt.aloha;let i=y8;e.startsWith("timeseries_")?i=g8:[Er.relations,Er.storage].includes(e)&&(i=h8);let o=this.previousVersion?.containers;return o&&(i=i.filter(t=>!Object.hasOwn(o,t))),i.find(t=>!Object.hasOwn(this.usedContainerNames,t))}findPreviousUsedContainer(e){let i=this.previousVersion.containers,o=Object.values(i).find(t=>t.title===e);return{name:o?.name,direction:o?.transferDirection,previousTitle:o?.previousTitle}}createDDEJsonFields(e,i,o,t){let B=t.get("array"),l=[],D,j;if(B){D={name:e,library:i||null,length:B};for(let b=0;b<B;b++){let k=`${e.toLowerCase()}[${b}]`;l.push(this.buildDDEJsonField(k,t,{name:e,index:b},o,i,null))}}else{let b=this.buildDDEJsonField(e,t,null,o,i,null);l.push(b);let k=t.get("shadowFields");if(k){j={name:b.name,byteSize:b.byteSize,byteOffset:b.byteOffset};for(let[$,y]of k){let q=$;e.includes(".")&&(q=e.split(".")[0]+`.${$}`),l.push(this.buildDDEJsonField(q,y,null,o,i,b.name))}}}return{arrayInfo:D,shadowInfo:j,fields:l}}buildDDEJsonField(e,i,o,t,B,l){return{id:e.toLowerCase(),name:e,index:0,library:B||null,byteOffset:0,byteSize:t.len||i.get("bytes")||i.get("length"),type:i.get("type"),title:i.get("title")||null,arrayRef:o,shadowRef:l,unit:i.get("unit"),hex:i.get("hex"),decimalPlaces:i.get("decimalPlaces"),writePermission:this.parseUserLevel(i.get("writePermission")),readPermission:this.parseUserLevel(i.get("readPermission")),channelMode:this.parseChannelMode(i.get("channelMode")),defaultValue:i.get("defaultValue"),scale:i.get("scale"),offset:i.get("offset"),chartMinimum:i.get("chartMinimum"),description:i.get("description"),chartMaximum:i.get("chartMaximum"),chartAlarmLow:i.get("chartAlarmLow"),chartAlarmHigh:i.get("chartAlarmHigh"),chartWarningLow:i.get("chartWarningLow"),chartWarningHigh:i.get("chartWarningHigh"),chartHysteresis:i.get("chartHysteresis"),chartTriggerThreshold:i.get("chartTriggerThreshold"),chartTriggerRelation:this.parseTriggerUndershoot(i.get("chartTriggerRelation")),chartSetPoint:i.get("chartSetPoint"),utilsTransferInterval:!!i.get("utilsTransferInterval"),bitmask:i.get("bitmask")}}resolvePossibleAlias(e,i){return(0,vr.isAlias)(i)?i.resolve(e).value:i?.value}validateContainerDefinition(e){let i=[];return e.forEach(o=>{let B=o.key.value;B==="timeseries"?o.value.items.forEach(l=>{l.key.value=`timeseries_${l.key}`,i.push(l)}):["dde","cloudProject","constants"].includes(B)||i.push(o)}),i}parseUserLevel(e){if(e==="read-only")return 99;if(e?.startsWith("UL"))return Number(e.substring(2))}parseChannelMode(e){if(e)return{digital:1,"day-counter":2,"interval-counter":3,analog:6,"infinite-counter":12}[e]??e}parseTriggerUndershoot(e){if(e)return{"greater-or-equal":0,"less-or-equal":1}[e]??e}validateAllowedContainer(e,i,o,t){if(!i.value)return;let l=i.key.value;if(t&&(l.startsWith("aloha")||l.startsWith("timeseries"))){let D=l.includes("_")?l.split("_")[1]:l;this.fileDiagnostics.push({file:e,level:"error",message:`"${D}" not allowed within a library`,...xA(o,i.key.range)})}if(z.isAnalytics(this.manifest)&&![Er.relations,Er.storage].includes(l)){let D=l.includes("_")?l.split("_")[1]:l;this.fileDiagnostics.push({file:e,level:"error",message:`"${D}" not allowed within an analytics app. Only "relations" and "storage" are allowed.`,...xA(o,i.key.range)})}}validateContainerFields(e,i,o,t){let B=o.value;if(!B)return;let l=o.key.value;Object.hasOwn(this.fieldNamesPerContainer,l)||(this.fieldNamesPerContainer[l]=[]);let D=this.getContainerOfPreviousVersion(l);B.items.forEach(j=>{let k=j.key.value;this.checkForContainerRelation(j,e,i,t),this.validateFieldName(j,l,i,t),this.checkFieldNameLength(j,l,i,t);let $=D?.fields.find(O=>O.id===k.toLowerCase()),y=j.value,q=y.get("type",!0),P=this.resolvePossibleAlias(e,q),N=y.get("bytes",!0),R=this.resolvePossibleAlias(e,N);$&&(q&&P&&$.type!==P&&this.fileDiagnostics.push({file:i,level:"warning",message:`Field type changed from "${$.type}" to "${P}".
1654
- Changing the type of an existing field can result in data loss or unexpected behaviour.`,...xA(t,q.range)}),N&&R&&$.byteSize!==R&&this.fileDiagnostics.push({file:i,level:"warning",message:`Byte size changed from '${$.byteSize}' to '${R}'.
1655
- Changing the size of an existing field can result in data loss or unexpected behaviour.`,...xA(t,N.range)}))})}checkForContainerRelation(e,i,o,t){let B=e.value.get("fields");B&&B.items.forEach(D=>{this.checkForContainerRelation(D,i,o,t)}),e.value.items.forEach(D=>{let j=D.value;if(j?.value&&p8.exec(`${j.value}`)){let b=D.key.value;if(b){if(!Object.hasOwn(Es,b))return this.fileDiagnostics.push({file:o,level:"error",message:`Property "${b}" does not allow relations.`,...xA(t,j.range)});if(["scale","offset"].includes(b))return this.fileDiagnostics.push({file:o,level:"warning",message:`Container relations for "${b}" are not available within the dlo source.`,...xA(t,j.range)})}return this.validateContainerRelation(b,j,i,o,t)}})}validateFieldName(e,i,o,t){let B=this.fieldNamesPerContainer[i],l=e.key,D=l.value;m8(D)&&this.fileDiagnostics.push({file:o,level:"error",message:`Reserved property "${D}" is not allowed.`,...xA(t,l.range)});let j=e.value.get("shadowFields");j&&j.items.forEach(b=>{this.validateFieldName(b,i,o,t)}),B.includes(D.toLowerCase())?this.fileDiagnostics.push({file:o,level:"error",message:`Field name "${D}" is already occupied`,...xA(t,l.range)}):B.push(D.toLowerCase())}checkFieldNameLength(e,i,o,t){let B=e.key,l=B.value,j=`DDE_${i.startsWith("timeseries")?i.substring(10):i}_`,b=31-j.length;j.length+l.length>31&&this.fileDiagnostics.push({file:o,level:"error",code:st.CODE.ddeFieldLength,message:`Field name "${l}" to long. ${b} characters allowed for this field/container.`,...xA(t,B.range)})}validateContainerRelation(e,i,o,t,B){let[l,D,j]=i.value.split(".",3),[b,k]=l.split("@"),$=b?b.split(":")[1]:null,q=($&&this.libraryYaml[$]?this.libraryYaml[$]:o).contents?.get(k),P=D.split("[")[0],N=null;if(q){let R=q.get(P);if(R)if(j){let O=R.get("fields");O&&O.get(j)&&(N=O.get(j))}else N=R;else N=this.findRelatedShadowField(q,P)}if(N){let R=Es[e],O=N.get("type");R.includes(O)||this.fileDiagnostics.push({file:t,level:"error",message:`Related field type "${O}" is not allowed for attribute "${e}".`,...xA(B,i.range)})}else $&&!this.libraryYaml[$]?this.fileDiagnostics.push({file:t,level:"error",message:`Related library "${$}" does not exist.`,...xA(B,i.range)}):this.fileDiagnostics.push({file:t,level:"error",message:`Related field "${i.value}" does not exist.`,...xA(B,i.range)})}findRelatedShadowField(e,i){for(let o of e.items){let B=o.value.get("shadowFields");if(!B)continue;let l=B.get(i);if(l)return l}}mergeAndFormat(e){let i={containers:{},setPointList:{}};for(let o of this.libraryDDE)this.combineDDE(i,o);return this.combineDDE(i,e),this.sortContainerFields(i),this.generateSetPointList(i),i}combineDDE(e,i){for(let[o,t]of Object.entries(i.containers)){let B=e.containers[o];B?(B.title=t.title,B.knownNames.unshift(t.title),B.libraries.push(...t.libraries),B.fields.push(...t.fields),B.arrays={...B.arrays,...t.arrays},B.shadows={...B.shadows,...t.shadows}):(B=e.containers[o]=structuredClone(t),B.knownNames.unshift(t.title),B.fieldCount=B.fields.length,B.fieldIndex=0);let l=this.initialContainerByteOffset(B);for(let[D,j]of B.fields.entries()){if(j.shadowRef){let b=B.shadows[j.shadowRef];j.byteOffset=b.byteOffset}else j.byteOffset=l,this.updateShadowFieldInformation(e.containers[o],j),l+=j.byteSize||0;D>B.fieldCount-1&&(j.index+=B.fieldIndex)}B.fieldIndex+=t.fieldIndex,B.knownNames=[...new Set(B.knownNames)],B.libraries=[...new Set(B.libraries)],B.fieldCount=B.fields.length}}initialContainerByteOffset(e){return e.containerType===j8.hx?1:0}updateShadowFieldInformation(e,i){i&&Object.hasOwn(e.shadows,i.name)&&(e.shadows[i.name].byteOffset=i.byteOffset)}sortContainerFields(e){for(let i of Object.values(e.containers)){let{sortedFields:o,containerSize:t}=this.sortFields(i);i.fields=o,i.size=t,i.fieldCount=i.fields.length}}sortFields(e){let i=e.fields.filter(b=>!b.shadowRef),o=e.fields.filter(b=>b.shadowRef),t=[],B=e.name;if(this.previousVersion.containers[B]){let b=this.sortPreviousContainerFields(e,i);t.push(...b)}else t.push(...i);t.forEach(b=>{this.updateShadowFieldInformation(e,b)});let D=t[t.length-1],j=D.byteSize+D.byteOffset;return o.forEach(b=>{b.byteOffset=e.shadows[b.shadowRef].byteOffset,t.push(b)}),{sortedFields:t,containerSize:j}}sortPreviousContainerFields(e,i){let o=e.name,t=this.previousVersion.containers[o],B=[],l=this.initialContainerByteOffset(e);for(let D of t.fields){if(D.shadowRef)continue;let j=i.findIndex(k=>D.id===k.name?.toLowerCase());if(j===-1){l=D.byteOffset+D.byteSize;continue}let b=i[j];if(D.type!==b.type&&D.byteSize!==b.byteSize){l=D.byteOffset+D.byteSize;continue}b.byteOffset=D.byteOffset,i.splice(j,1),B.push(b),l=this.initialContainerByteOffset(e)}if(l>this.initialContainerByteOffset(e)){let D=i.shift();B.push(...this.generatePlaceholderFieldIfNeeded(l,D)),this.updateShadowFieldInformation(e,D)}for(let D of i){if(D.shadowRef)D.byteOffset=e.shadows[D.shadowRef].byteOffset;else{this.updateShadowFieldInformation(e,D);let j=B[B.length-1];j.shadowRef&&(j=e.shadows[j.shadowRef]),D.byteOffset=j.byteOffset+j.byteSize}B.push(D)}return B}generatePlaceholderFieldIfNeeded(e,i){let o=[];if(i)i.byteOffset=e,o.push(i);else{let t={byteOffset:e,byteSize:0,id:"_shadow",library:null,name:"_shadow",type:"shadow",arrayRef:null,shadowRef:null,title:null,index:0};o.push(t)}return o}generateSetPointList(e){e.setPointList={...this.previousVersion.setPointList||{}};for(let i of Object.values(e.containers))for(let o of i.fields)o.chartSetPoint&&(Object.hasOwn(e.setPointList,o.name)||(e.setPointList[o.name]=this.getNextSetpointValue(e.setPointList)))}getNextSetpointValue(e){let i=[...Object.values(e),0];return Math.max(...i)+1}}x.PreCompiler=A})(ft||={});var Gx=R0.TransferDirection,EA=R0.parseXMLValueWithRelation,k8=R0.parseXMLBitmask,_8=R0.parseXMLDefaultValue,w8=R0.fieldTypeDefinitions;function Fn(A,x){let e=[];function i(B,l=!0){if(l){if(Array.isArray(B)){e.push.apply(e,B);return}e.push(""+B)}}function o(B,l){B!=="mergeofs"&&i(`${B}=${l}`)}i("// DDE STRUCTURE created by Microtronics Studio");let t="source=rm2mraw";for(let[B,l]of Object.entries(x.containers)){B.startsWith("histdata")&&l.transferDirection!==Gx.deviceOnly&&(i("<split>"),i(t),i("target="+B),i("key=0"+B.substr(-1,1)),i("</split>")),i("<table>"),o("name",B),o("alias",l.title),o("title",l.title.replace("_"," "));let D={};[Gx.none,Gx.backendOnly,Gx.deviceOnly,Gx.down,Gx.downPlus].includes(l.transferDirection)&&o("upload","0"),[Gx.none,Gx.backendOnly,Gx.deviceOnly,Gx.up,Gx.upPlus].includes(l.transferDirection)&&o("download","0"),(z.isIotApp(A)||z.isLibrary(A))&&[Gx.up,Gx.upPlus].includes(l.transferDirection)&&o("edit","99");for(let j of l.fields){if(j.type==="shadow")continue;let b=$8(j),k=w8[b.type],$=EA("title",b,x)||b.name;!$.startsWith("%")&&b.library&&($=`${b.library}: ${$}`);let y={title:$,alias:b.name,index:j.index,...D};y.byteofs=`${b.byteOffset}`;for(let[q,P]of Object.entries(k.xml))y[q]=P;Object.hasOwn(k,"xmlOut")&&k.xmlOut(y,b,x),y.units=EA("unit",b,x),y.chmode=EA("channelMode",b,x),y.ialarm_high=EA("chartAlarmHigh",b,x),y.ialarm_low=EA("chartAlarmLow",b,x),y.iwarn_high=EA("chartWarningHigh",b,x),y.iwarn_low=EA("chartWarningLow",b,x),y.hysterese=EA("chartHysteresis",b,x),y.itrigger=EA("chartTriggerThreshold",b,x),y.itriggerus=EA("chartTriggerRelation",b,x),y.setpoint=EA("chartSetPoint",b,x),y.bitmask=k8(b),b.hex&&(y.editmask="%HEX%"),b.readPermission&&(y.view=b.readPermission),b.writePermission&&(y.edit=b.writePermission),b.defaultValue!==void 0&&(y.default=_8(b)),b.utilsTransferInterval===!0&&(y.param0="%FFFF0005%transfer_interval"),i("<field>"),b.library&&i(`// declared by ${b.library} library`,!0);for(let[q,P]of Object.entries(y))P!==void 0&&o(q,`${P}`);i("</field>")}["alerts","applog"].includes(B)||(i("</table>"),i("// "+l.size+" bytes total size"))}return i("<split>"),i(t),i("target=alarm0"),i("key=20"),i("</split>"),i("<split>"),i(t),i("target=applog0"),i("key=28"),i("</split>"),e.join(`
1656
- `)}function $8(A){let x=structuredClone(A),r=A.arrayRef?.index;if(r===void 0)return x;for(let[e,i]of Object.entries(x))x[e]=h0.patchValueWithArrayInfo(i,r);return x}var qA=dx(require("semver"));var BA=dx(require("semver"));var Bn=require("vscode-uri");var jx=R0.ContainerType,N0=R0.TransferDirection,Ie=R0.regexRelation,q8=R0.CONFIG_CONTAINER,En=R0.CONTAINER_DEF_DLO_CID_BASE,Le=R0.CONTAINER_DEFS,lt=R0.fieldTypeDefinitions,ls=h0.isNumeric;function AA(A){let x=lt[A.type];return x.pwn.rwp||(x.pwn.rwp="%n"),x.pwn.htype||(x.pwn.htype=x.pwn.rwfunc),x.pwn}var Ct="Microtronics/dlo-core";function fn(A){return z.isLibrary(A)&&A.name==="dlo-core"?A.version:A.libraryDependencies&&Object.hasOwn(A.libraryDependencies,Ct)?V0.rangeToVersion(A.libraryDependencies[Ct]):A.libraryDevDependencies&&Object.hasOwn(A.libraryDevDependencies,Ct)?V0.rangeToVersion(A.libraryDevDependencies[Ct]):null}function S8(A){let x=fn(A);return x===null||BA.gte(x,"0.3.0")?BA.valid(A.version)?A.version:BA.coerce(`${A.version}`):BA.coerce(A.version)?.major}function vn(A){let x=fn(A);if(x===null)return!1;let r=BA.coerce(x);return BA.gte(r,"1.1.0")}function P8(A){let x=fn(A);if(x===null)return!1;let r=BA.coerce(x);return BA.gte(r,"1.15.0")}var T8=["u8","u16","u32","s8","s16","s32","s64","f16","f32","f64"];function N8(A){if(A.type==="ustring")return!1;if(A.defaultValue!=="NaN")return!0;let x=AA(A);return!x||x==="skip"?!1:T8.includes(`${x.rwfunc}`)}function I8(A,x,r){A("PROJECT META");let{dpid:e,registry:i}=r;if(!e)throw new Error('Setting "dpid" is required to generate dlo files');let{auto_inc:o}=xn[e];x("APM_DPID",`${e}`),x(`APM_DPID_${e}`,"1"),x(`APM_DPID_${e.toUpperCase()}`,"1"),x("APM_ID",i?.id||"");let t=S8(r);x("APM_VERSION",`${t}`),x("APM_NAME",`${r.name}`),x("APM_AUTHOR",`${r.publisher}`);for(let[B,l]of Object.entries(o))ls(l)?x(B,`${l}`):x(B,`"${l}"`)}function M8(A,x,r,e){let i=e.flat,{definesWithSource:o}=e;x("GLOBAL DEFINES");for(let[t,B]of Object.entries(i)){let l=o[t]?.comment;if(l){let j=l.split(`
1657
- `);if(j.length===1)A(`/** ${j[0]} */`);else{A("/**");for(let b of j)A(` * ${b}`);A(" */")}}let D=Object.hasOwn(i,B);r(t,`${B}`,D)}}function L8(A,x,r,e){let i=parseInt(A.substring(6)),o=1<<i;r[i]=x.size,e.cx_isupm|=[N0.both,N0.none,N0.deviceOnly,N0.up,N0.upPlus].includes(x.transferDirection)?o:0,e.cx_isvolatilem|=x.volatile?o:0,e.cx_isdnm|=[N0.both,N0.none,N0.deviceOnly,N0.down,N0.downPlus].includes(x.transferDirection)?o:0,e.cx_isvlm|=[N0.bothPlus,N0.upPlus,N0.downPlus].includes(x.transferDirection)?o:0}function R8(A,x,r,e){let i=parseInt(A.substring(8));r[i]=x.size,e.hx_isvlm|=[N0.upPlus].includes(x.transferDirection)?1<<i:0}function O8(A){return[N0.upPlus].includes(A.transferDirection)}function G8(A,x,r){let e=0,i=Array(10).fill(0),o={cx_isupm:0,cx_isvolatilem:0,cx_isdnm:0,cx_isvlm:0},t=0,B=Array(10).fill(0),l={hx_isvlm:0},D;for(let[b,k]of Object.entries(r.containers))k.containerType===jx.cx&&k.transferDirection!==N0.backendOnly?(L8(b,k,i,o),e=Math.max(e,k.size)):k.containerType===jx.hx?(R8(b,k,B,l),e=Math.max(e,k.size)):k.containerType===jx.aloha&&(D=O8(k),e=Math.max(e,k.size));x("DDE CORE"),A(`#define _DDE_BUF_BYTES (${e}+10)`),A(""),A("// c0 c1 c2 c3 c4 c5 c6 c7 c8 c9"),A(`stock _DDE_CONFIGS_size[] =[ ${i.join(", ")}];`),A(`#define _DDE_CONFIGS_upm 0b${o.cx_isupm.toString(2)} // ..is tolerant when reading back container with under-length`),A(`#define _DDE_CONFIGS_volatilem 0b${o.cx_isvolatilem.toString(2)} // inits container as volatile`),A(`#define _DDE_CONFIGS_downm 0b${o.cx_isdnm.toString(2)} // reading the container expects strict length`),A(`#define _DDE_CONFIGS_varlenm 0b${o.cx_isvlm.toString(2)} // allow partial write (dde_wxxx)`),A(`#define _DDE_CONFIGS_rdef 0b${t.toString(2)} // ..apply defaults reading a container with under-length`),A(""),A("// h0 h1 h2 h3 h4 h5 h6 h7 h8 h9"),A(`stock _DDE_HISTS_size[] =[ ${B.join(", ")}];`),A(`#define _DDE_HISTS_varlenm 0b${l.hx_isvlm.toString(2)} // allow partial write (dde_wxxx)`);let j=[...B];Object.hasOwn(r,"applog")&&j.push(125),Object.hasOwn(r,"alerts")&&j.push(13),A(`#define _DDE_HISTS_maxsize ${Math.max(...j)}`),A(""),D!==void 0&&(A(`#define _DDE_ALOHA_varlen ${D?1:0}`),A(""))}function U8(A,x,r){for(let[e,i]of Object.entries(r.containers)){if(i.containerType==="applog")continue;x(`${i.title.toUpperCase()} - ${i.transferDirection} via #${e}`);let o=En(i.containerType,i.transferDirection);if(!o){A("// ... container not available in DLO");continue}let t=`DDE_${i.containerType===jx.aloha?jx.aloha:i.title}`,B=Le[e];A(`// ${t}_id - container identifier required for ${t}_read/_write operations`),A(`#define ${t}_id (${o}+${B.cnum||0})`),A(`// ${t}_sz - [byte] container total size`),A(`#define ${t}_sz ${i.size}`),B.cnum!==void 0&&(A(`// ${t}_idx - 0+ container index number`),A(`#define ${t}_idx ${B.cnum}`))}}function cs(A,x,r){let e=[],i=e.push.bind(e);function o(B){i(`
1658
- // === ${B} ===
1659
- `)}function t(B,l,D=!1){let j=ls(l)?"":'"';D&&(j=""),i(`#define ${B} ${j}${l}${j}`)}return I8(o,t,r),M8(i,o,t,x),G8(i,o,A),U8(i,o,A),e.join(`
1660
- `)}var Re=class{constructor(x,r,e){this.manifest=x;this.ddeMap=r;this.context=e;this.sourceType="pawnSource"}manifest;ddeMap;context;globalVariables=[];pawnGlobalSource=[];pawnHelperSource=[];timeSeriesSource=[];readWriteSource=[];definesSource=[];defaultDefinesSource=[];knownDefines=[];pawnIndent=0;sourceType;pawn(x,r){r&&x==="<"&&this.pawnIndent--,{pawnSource:this.pawnGlobalSource,globalVariables:this.globalVariables,timeseries:this.timeSeriesSource,readWrite:this.readWriteSource,defines:this.definesSource,defaultDefines:this.defaultDefinesSource}[this.sourceType].push(" ".repeat(this.pawnIndent)+(r||x)),r&&x===">"&&this.pawnIndent++}generate(){for(let[x,r]of Object.entries(this.ddeMap.containers))this.context&&!r.libraries.includes(this.context)||!En(r.containerType,r.transferDirection)||!r.fields||!this.context&&!R0.hasContainerAppFields(r)||Le[x].ctype!==jx.cx&&this.context||(this.generateGlobalVarsForContainer(r),this.generateReadWriteFunctions(r));return this.mergeSourceTypes(),{globals:this.pawnGlobalSource,helper:this.pawnHelperSource}}createGlobalVar(x,r){this.sourceType="globalVariables";let e=r?this.variableNameForPawnDefinition(x,r):x;if(r){let i=this.generateCommentForField(r);i&&(Array.isArray(i)?(this.pawn("/**"),i.forEach(o=>{this.pawn(` * ${o}`)}),this.pawn(" */")):this.pawn(`// ${i}`))}this.pawn(`stock ${e}${r?this.initialiserForGlobalVar(r):""};`)}initialiserForGlobalVar(x){if(x.defaultDloDefine===void 0||x.arrayRef)return"";let r=AA(x);return!r||r==="skip"||`${r.rwp||""}`.includes("%l")?"":` = ${x.defaultDloDefine}`}insertSection(x){this.pawn(""),this.pawn("// ============================================================================="),this.pawn(`// ${x}`),this.pawn("// ============================================================================="),this.pawn("")}mergeSourceTypes(){this.sourceType="pawnSource",this.definesSource.length&&(this.insertSection("Defines"),this.pawnGlobalSource.push(...this.definesSource)),this.defaultDefinesSource.length&&(this.insertSection("Field defaults"),this.pawnGlobalSource.push(...this.defaultDefinesSource)),this.globalVariables.length&&(this.insertSection("Global Variables"),this.pawnGlobalSource.push(...this.globalVariables)),this.readWriteSource.length&&(this.insertSection("Internal read/write calls"),this.pawnHelperSource.push(...this.readWriteSource)),this.pawn("")}generateGlobalVarsForContainer(x){this.sourceType="globalVariables",this.pawn(""),this.pawn(`// Container '${x.title.replace("_"," ")}'`),this.pawn("");let r=`DDE_${x.title}`;this.generateArrayDefines(r,x);for(let e of x.fields){if(e.type==="shadow"||e.shadowRef||e.library!==this.context)continue;if(e.arrayRef!==null){let o=x.arrays[e.arrayRef.name],t=`${r}_${e.arrayRef.name}`;o.fields?.length&&(t+=`_${e.name.split(".")[1]}`),this.createDefaultDefineForField(t,e);continue}let i=this.generateFieldVariableName(r,e);this.createDefaultDefineForField(i,e),this.createGlobalVar(`${i}`,e)}}generateArrayDefines(x,r){for(let e of Object.values(r.arrays)){if(this.context!==e.library)continue;let i=`${x}_${e.name}_dim`;if(this.sourceType="defines",this.pawn(`#define ${i} ${e.length}`),e.fields){for(let B of e.fields)lt[B.type]?.isBlob&&B.byteSize&&this.addDefine(`${x}_${e.name}_${B.name}_dim`,B.byteSize);let o={...r};o.fields=[],e.fields.forEach(B=>{o.fields.push({arrayRef:null,shadowRef:null,byteOffset:0,byteSize:B.byteSize,id:B.name,library:e.library,name:B.name,type:B.type,title:null,index:0})});let t=`${x}_${e.name}_def`;this.generateTypeDefinitions(o,t),this.createGlobalVar(`${x}_${e.name}[${i}][${t}]`)}else this.createGlobalVar(`${x}_${e.name}[${i}]`)}}generateCommentForField(x){let r=[`@type ${x.type}`];if(x.description&&r.unshift(x.description),x.defaultValue!==void 0){let{value:e,reason:i}=this.parseFieldDefault(x);r.push(`@default ${e} ${i||""}`)}return r}generateFieldVariableName(x,r){let e=`${x}_${r.name}`,i=Object.hasOwn(lt,r.type)&&lt[r.type].isBlob,o=r.byteSize;return o&&i&&(this.sourceType="defines",this.pawn(`#define ${x}_${r.name}_dim ${o}`),this.pawn(`#define ${x}_${r.name}_iter() for(new i=0;i<${o};i++)`)),this.sourceType="globalVariables",e}generateTypeDefinitions(x,r){this.sourceType="defines";let e=x.fields;if(!e)return;let i=[];this.pawn(">",`#define ${r} [`);for(let o of e){let t=this.generateFieldTypeDefinition(o,x,i,r);t!==null&&this.pawn(t)}this.pawn("<","]")}handleArrayFieldDedup(x,r,e,i){let o=x.arrayRef;if(o){let l=r.arrays[o.name];if(!e.includes(o.name)&&!l.fields)e.push(o.name);else return null}let t=x.arrayRef?x.arrayRef.name:x.name,B=x.arrayRef?`[${i}_${t}_dim]`:"";return{fieldName:t,fld_dim:B}}generateFieldTypeDefinition(x,r,e,i){if(x.type==="shadow"||x.shadowRef||x.library!==this.context)return null;let o=this.handleArrayFieldDedup(x,r,e,i);if(o===null)return null;let{fieldName:t,fld_dim:B}=o,l="";if(x.type==="struct")l="// ."+t+B;else{let D=AA(x);if(!D)return null;D==="skip"?l=`// skipped - .${t}${B}`:l+=D.rwp.replace("%n",`.${t}${B}`).replace("%l",x.byteSize)}return l+=",",x.library&&(l+=` // declared by ${x.library} library`),l}variableNameForPawnDefinition(x,r){let e=AA(r);return e&&e!=="skip"?e.rwp.replace("%n",`${x}`).replace("%l",r.byteSize):x}createDefaultDefineForField(x,r){if(this.sourceType="defaultDefines",r.scale!==void 0&&this.addDefine(`${x}_scale`,r.scale),r.offset!==void 0&&this.addDefine(`${x}_offset`,r.offset),r.defaultValue!==void 0&&N8(r)){let{value:e,reason:i}=this.parseFieldDefault(r),o=`${x}_default`;this.addDefine(o,e,i)&&(r.defaultDloDefine=o)}}addDefine(x,r,e){return Ie.exec(`${r}`)?!1:(this.knownDefines.includes(x)||(e&&this.pawn(`// ${e}`),this.pawn(`#define ${x} ${r}`),this.knownDefines.push(x)),!0)}generateReadWriteFunctions(x){let r=x.name,e=Le[r],i=`DDE_${x.containerType===jx.aloha?jx.aloha:x.title}`;[N0.both,N0.bothPlus,N0.none,N0.deviceOnly,N0.up,N0.upPlus].includes(x.transferDirection)&&this.generateWriteMethod(i,x),e.ctype===jx.cx&&this.generateReadMethod(i,x)}generateWriteMethod(x,r){this.sourceType="readWrite";let e=`DDE_${r.title}_id`,i=[jx.hx,jx.aloha].includes(r.containerType),o=r.containerType===jx.hx,t=r.containerType===jx.aloha,B=`_${x}_write`,l=vn(this.manifest)?", flags":"",D=o?`stamp${l}`:"",j=vn(this.manifest)?"const stamp=0, const flags=0":"const stamp=0";this.pawn(">",`stock ${B}(${o?j:""}) {`),i&&this.pawn(`dde_wbegin(DDE_${t?jx.aloha:r.title}_id);`),this.generateRWFunctionBody(x,r,"dde_w"),i&&this.pawn(`return dde_wend(${D});`),this.pawn("<","}"),this.pawn(""),this.sourceType="globalVariables";let b=`${x}_transfer`,k=`${x}_persist`,$=this.functionArgumentsForDdeWrite(o,i);if(this.pawn(">",`${this.context?"stock ":""}${b}(${$}) {`),i)this.pawn(`${B}(${D});`);else{let y=r.name.slice(-1);this.pawn(`dde_flush(${y}, immediate);`)}this.pawn("<","}"),this.pawn(""),r.volatile&&(this.pawn(">",`stock ${k}() {`),this.pawn(`return rM2M_CfgFlush(${e});`),this.pawn("<","}"))}functionArgumentsForDdeWrite(x,r){let e=vn(this.manifest)?", const flags=0":"";return x?`const stamp=0${e}`:r?"":"bool:immediate=false"}generateReadMethod(x,r){this.sourceType="readWrite";let e=`_${x}_read`;this.pawn(">",`stock ${e}() {`),this.generateRWFunctionBody(x,r,"dde_r"),this.pawn("<","}"),this.pawn("")}isFieldSkipped(x){return x.type==="shadow"||!!x.shadowRef||x.library!==this.context}emitFieldRW(x,r,e,i,o,t,B){if(!r.arrayRef)return this.emitSingleField(x,r,e,i,B);let l=r.arrayRef.name,D=o.get(l);return D?t.has(l)?B:(t.add(l),this.emitArrayLoop(x,D,e)):this.emitSingleField(x,r,e,i,B)}generateRWFunctionBody(x,r,e){let i=r.fields,o=this.analyzeArrayGroups(i,x,r),t=new Set,B=-1;for(let l of i){if(this.isFieldSkipped(l))continue;let D=AA(l);!D||D==="skip"||(B=this.emitFieldRW(x,l,e,D,o,t,B))}}defaultArgumentFor(x,r){return x.defaultDloDefine===void 0?"":r==="dde_r"||P8(this.manifest)?`, ${x.defaultDloDefine}`:""}emitSingleField(x,r,e,i,o){r.byteOffset!==o&&this.pawn(`_dde_idx = ${r.byteOffset};`);let t="";t+=e,t+=i.rwfunc;let B=`${x}_${r.name}`;return t+=`(${B}`,i.rwlen&&(t+=`, ${r.byteSize}`),t+=this.defaultArgumentFor(r,e),this.pawn(t+");"),r.byteOffset+r.byteSize}emitArrayLoop(x,r,e){this.pawn(">",`for (new _i = 0; _i < ${r.dimDefine}; _i++) {`);let i=-1;for(let o of r.templateFields){let t=AA(o);if(!t||t==="skip")continue;let B=o.byteOffset;B!==i&&this.pawn(`_dde_idx = ${B} + (_i * ${r.stride});`),i=B+o.byteSize;let l=`${x}_${o.name.replace(/\[\d+\]/,"[_i]")}`,D=`${e}${t.rwfunc}(${l}`;t.rwlen&&(D+=`, ${o.byteSize}`),D+=this.defaultArgumentFor(o,e),this.pawn(D+");")}return this.pawn("<","}"),-1}analyzeArrayGroups(x,r,e){let i=this.collectArrayFieldsByIndex(x);return this.buildArrayGroups(i,r,e)}collectArrayFieldsByIndex(x){let r=new Map;for(let e of x){if(this.isFieldSkipped(e)||!e.arrayRef)continue;let i=AA(e);if(!i||i==="skip")continue;let{name:o,index:t}=e.arrayRef;r.has(o)||r.set(o,new Map);let B=r.get(o);B.has(t)||B.set(t,[]),B.get(t).push(e)}return r}validateArrayStride(x,r){let e=r[0].byteOffset-x[0].byteOffset;if(e<=0)return null;for(let i=0;i<x.length;i++)if(r[i].byteOffset-x[i].byteOffset!==e)return null;return e}buildArrayGroups(x,r,e){let i=new Map;for(let[o,t]of x){let B=e.arrays[o];if(!B||B.length<2)continue;let l=t.get(0),D=t.get(1);if(!l||!D||l.length===0||D.length===0||l.length!==D.length)continue;let j=this.validateArrayStride(l,D);j!==null&&i.set(o,{arrayName:o,dimDefine:`${r}_${o}_dim`,stride:j,templateFields:l})}return i}parseFieldDefault(x){let r=AA(x),e=x.defaultValue;function i(t,B){return{value:t,reason:B}}switch(x.type){case"astring":case"nstring":case"cstring":return i(`"${e}"`);case"wstring":return i(`''${e}''`);case"ustring":return i(`/* default not supported: ${e} */`);case"binary":{let B=`{ 0x${(e.substring(2).replace(/\s+/g,"").match(/.{1,2}/g)||[]).join(", 0x")} }`;return i(B)}}if(e==="NaN"){let t=r.rwfunc;return i(`${t}_NaN`.toUpperCase())}let o=this.parseFieldScaleOffset(x);return o?i(o.calculated,o.reason):(e!==void 0&&!Ie.exec(`${e}`)&&x.type.startsWith("float")&&e%1===0&&(e=e.toFixed(x.decimalPlaces||1)),i(`${e}`))}parseFieldScaleOffset(x){let r=x.defaultValue;if(!(!!Ie.exec(`${x.offset}`)||!!Ie.exec(`${x.scale}`)||!!Ie.exec(`${x.defaultValue}`))&&(x.offset!==void 0||x.scale!==void 0)){let i=x.offset!==void 0?Number(x.offset):0,o=x.scale!==void 0?Number(x.scale):1;if(o===0)return null;let t=(Number(r)-i)/o,B=`(defaultValue - offset) / scale -> (${r} - ${i}) / ${o}`;return x.type.startsWith("float")?t%1===0&&(t=t.toFixed(1)):(t=Math.round(t),B=`Rounded value of: ${B}`),{calculated:t,reason:B}}return null}};function H8(A){return`${`onUplinkApply_${A}()`};`}function Ds(A,x,r){x.libraries.forEach(e=>{let i=h0.generateHashForLibraryName(e);A(` #ifdef _${i}${r}_${x.title}`),A(` _${i}${r}_${x.title}(); // ${e}`),A(" #endif")})}function K8(A,x){A("stock _onUplinkEvent(ev, param) {"),x.forEach(r=>{let i=`_${h0.generateHashForLibraryName(r)}UplinkEvent`;A(` #ifdef ${i}`),A(` ${i}(ev, param);`),A(" #endif")}),A(" onUplinkEvent(ev, param);"),A("}")}function z8(A){let x=[],r=[];for(let[e,i]of Object.entries(A.containers))Le[e].ctype===jx.cx&&([N0.up,N0.upPlus,N0.deviceOnly].includes(i.transferDirection)&&r.push(i),[N0.bothPlus,N0.both,N0.downPlus,N0.down].includes(i.transferDirection)&&x.push(i));return{containerApply:x,containerRestore:r}}function J8(A,x){x.length&&A("");for(let r of x)r.knownNames.forEach(e=>{A(`forward onUplinkRestore_${e}();`)}),A(""),A(`stock restoreUplink${r.name}() {`),A(` _DDE_${r.name}_read();`),Ds(A,r,"Restore"),R0.hasContainerAppFields(r)&&A(` onUplinkRestore_${r.title}();`),A("}");if(A("#pragma warning push"),A("stock _onUplinkRestore(cfgId) {"),x.length){A(" switch(cfgId) {");for(let r of x)A(` case DDE_${r.title}_id: restoreUplink${r.name}(); // ${r.name}`);A(" }")}else A(" #pragma warning disable 203"),A(" // no containers to restore");A("}"),A("#pragma warning pop")}function V8(A,x){x.length&&A("");for(let r of x)r.knownNames.forEach(e=>{A(`forward onUplinkApply_${e}();`)}),A(""),A(`stock applyUplink${r.name}() {`),A(` _DDE_${r.name}_read();`),Ds(A,r,"Apply"),R0.hasContainerAppFields(r)&&A(` ${H8(r.title)}`),A(" return(OK);"),A("}");if(A("#pragma warning push"),A("stock _onUplinkApply(cfgId) {"),x.length){A(" switch(cfgId) {");for(let r of x)A(` case DDE_${r.title}_id: return applyUplink${r.name}(); // ${r.name}`);A(" }"),A(" return ERROR;")}else A(" #pragma warning disable 203"),A(" // no containers to apply"),A(" return OK;");A("}"),A("#pragma warning pop")}function ds(A,x){let r=[],e=r.push.bind(r);K8(e,x);let{containerApply:i,containerRestore:o}=z8(A);return J8(e,o),V8(e,i),r.join(`
1661
- `)}var W8=q8.map(A=>`_DDE_${A}_write`);function us(A){let x=[],r=x.push.bind(x),e=[...W8];for(let[i,o]of Object.entries(A.containers)){let t=En(o.containerType,o.transferDirection),B=Le[i];if(!t||!o.fields||B.ctype!==jx.cx)continue;let l=`DDE_${o.name}`,D=`DDE_${o.title}_id`;if([N0.both,N0.bothPlus,N0.none,N0.deviceOnly,N0.up,N0.upPlus].includes(o.transferDirection)){let j=`_${l}_write`;r(`stock ${j}() {`),r(` dde_wbegin(${D});`),Cs(r,o,"write"),r(" return dde_wend();"),r("}"),e.splice(e.indexOf(j),1)}if(B.ctype===jx.cx){let j=`_${l}_read`;r(`stock ${j}() {`),r(` if (dde_rbegin(${D})) return ERROR;`),Cs(r,o,"read"),r(" dde_rend();"),r(" return OK;"),r("}")}}if(e.length){r(""),r("// Dummy functions needed by the dde library");for(let i of e)r(`stock ${i}() { return OK; }`)}return x.join(`
1662
- `)}function Cs(A,x,r){x.libraries.forEach(e=>{let i=h0.generateHashForLibraryName(e);A(` #ifdef __${i}${x.title}_${r}`),A(` __${i}${x.title}_${r}();`),A(" #endif")}),R0.hasContainerAppFields(x)&&(A(` #ifdef _DDE_${x.title}_${r}`),A(` _DDE_${x.title}_${r}();`),A(" #endif"))}async function bs(A,x){let r=[],e=await V0.getApmPartDependencies(A,x,b0.Part.dlo);await Me(A,x,r,s0.fileNames.autoInc);let i=await X8(A,x,e);for(let o of e)o.name==="local-data-interface"&&await Me(A,x,r,s0.fileNames.autoLocalDataInc),r.push(`#include <${o.name}>`),o.name==="dlo-core"&&(r.push(...i),await Me(A,x,r,s0.fileNames.autoDdeInc.replace("X","app")),await Me(A,x,r,s0.fileNames.autoDdeInc.replace("X","main")));return e.some(o=>o.name==="dlo-core")&&await Me(A,x,r,s0.fileNames.autoUplinkInc),r.join(`
1663
- `)}async function X8(A,x,r){let e=[];for(let i of r){let o=s0.filePaths.studio.auto.dlo.autoDdeInc.replace("X",i.name);await x.stat(Bn.Utils.joinPath(A,o))&&e.push(`#include "${s0.fileNames.autoDdeInc.replace("X",i.name)}"`)}return e}async function Me(A,x,r,e){let i=Bn.Utils.joinPath(A,s0.filePaths.studio.auto.dlo.path,e);await x.stat(i)&&r.push(`#include "${e}"`)}var js=dx(require("semver")),ms=require("yaml");var rA=R0.ContainerType,Dt=R0.TransferDirection,Y8=R0.fieldTypeDefinitions,ie={$ref:"#/components/parameters/contextId"},Q8={$ref:"#/components/parameters/addonId"},Z8={$ref:"#/components/parameters/appId"},ps={$ref:"#/components/schemas/histdataResponse"},xv={$ref:"#/components/schemas/histdataRequest"},dt={$ref:"#/components/schemas/rapidM2MStamp"},Av={$ref:"#/components/schemas/timeseriesRequestBase"},ct="rapidM2M Stamp",fA={description:"Successful operation"},hs={parameters:{contextId:{name:"siteUid",in:"path",description:"The site uid",schema:{type:"string"},required:!0},appId:{name:"appUid",in:"path",description:"The app uid",schema:{type:"string"},required:!0}},schemas:{rapidM2MStamp:{type:"string",format:"YYYYMMDDhhmmssSSS",description:'Special format of an UTC timestamp. Important: The trailing 0 are truncated. eg.: "2024-02-10" -> "2024021"'}}},gs={...structuredClone(hs)};Object.assign(gs.schemas,{histdataResponse:{type:"array",description:"Array of histdata records. Array starts with the youngest record",items:{type:"array",description:'First item is always the rapidM2M timestamp of the record. All following values are in the order of the "select" array.',items:{anyOf:[dt,{type:"string"},{type:"number"}]}}},histdataRequest:{type:"object",additionalProperties:!1,required:["from","until"],properties:{from:{type:"string",format:ct,description:"items to include must be older or equal, UTC w/o time saving."},until:{type:"string",format:ct,description:"items to include must be younger, UTC w/o time saving. Reply set is limited like that: from <= item.stamp < until."},count:{type:"integer",description:"limits the number of returned records, negative values will count the records from the end of the result set."},offset:{type:"integer",description:"skips the given number of records in the result set."}}},timeseriesRequestBase:{type:"object",additionalProperties:!1,properties:{count:{type:"integer",description:"limits the number of returned records, negative values will count the records from the end of the result set.",minimum:-1e3,maximum:1e3,default:1e3},from:{type:"string",format:ct,description:"items to include must be older or equal, UTC w/o time saving"},until:{type:"string",format:ct,description:"items to include must be younger, UTC w/o time saving. Reply set is limited like that: from <= item.stamp < until"},offset:{type:"integer",description:"Skips the given number of records in the result set",minimum:0,default:0}}}});var Oe={content:{"application/json":{schema:{type:"object",additionalProperties:!1,properties:{err:{type:"string",description:"Information what went wrong"}}}}}},Br={401:{description:"Permission denied",...Oe},403:{description:"Forbidden",...Oe},404:{description:"Resource not found",...Oe},500:{description:"Internal error",...Oe}};function Cn(A,x,r=null){let e=js.coerce(x.version)?.version,i={openapi:"3.0.3",info:{description:x.description,title:x.name,version:e||""},tags:[],paths:{},components:{parameters:{},schemas:{}}};r?Object.assign(i.components,structuredClone(hs)):Object.assign(i.components,structuredClone(gs));let o=z.isAddon(x),t=z.isAnalytics(x);o&&(i.components.parameters.addonId={name:"addonUid",in:"path",description:"The addon uid",schema:{type:"string"},required:!0});for(let B of Object.values(A.containers))r&&(!B.libraries.includes(r)||B.containerType===rA.hx)||!r&&!R0.hasContainerAppFields(B)||B.containerType===rA.aloha||(rv(i,B),tv(i,B,r),sv(i,B,o,t),!o&&!t&&(ev(i,B,r),iv(i,B)));return i.tags.push({name:"app-center",description:"App Center related routes"}),(0,ms.stringify)(i)}function rv(A,x){A.tags.push({name:Ux(x.title),description:`Transfer direction ${x.transferDirection}`})}function Ux(A){return A.split("_").join(" ")}function ev(A,x,r){let e=`${x.name}`,i={type:"object",description:`Container: "${x.title}"`,additionalProperties:!1,properties:{}},o=[];x.containerType===rA.hx&&(e+="Select",o.push("select"),i.properties.select={type:"array",items:{type:"string",enum:[]}});for(let t of x.fields)t.library!==r||t.type==="shadow"||(x.containerType===rA.hx?i.properties.select.items.enum.push(t.id):(i.properties[t.id]=ys(t),!t.readPermission&&!t.writePermission&&o.push(t.id)));i.required=o.length?o:void 0,A.components.schemas[e]=i}function tv(A,x,r=null){let e=`${x.title}`,i={type:"object",description:`Container: "${x.title}" with device transfer direction "${x.transferDirection}"`,additionalProperties:!1,properties:{}},o=[],t=x.containerType===rA.hx;for(let l of x.fields)l.library!==r||l.type==="shadow"||(i.properties[l.name]=ys(l),!l.readPermission&&!l.writePermission&&o.push(l.name));i.required=o.length?o:void 0,A.components.schemas[e]=i;let B=i.properties;if(t){i.required=i.required?.map(D=>D.toLowerCase());let l={};for(let[D,j]of Object.entries(i.properties))l[D.toLowerCase()]=j;i.properties=l}if(t){let l={type:"object",description:`Request schema of "${x.title}"`,additionalProperties:!1,properties:{select:{type:"array",description:"Optional selection of specific fields of the given container",items:{type:"string",enum:Object.keys(B)}}}};A.components.schemas[`${e}RequestSingle`]=l,A.components.schemas[`${e}Request`]={allOf:[Av,l]},i.properties.stamp=dt,o.push("stamp")}}function ys(A){let r={...Y8[A.type].openApi},e=nv(A);return r.default=e,r.example=e,r.description=A.description,r}function nv(A){return A.defaultValue===void 0?A.defaultValue:A.type==="binary"?`${A.defaultValue.substring(2)}`:A.defaultValue}function iv(A,x){let r=`/api/1/sites/{siteUid}/${x.name}`,e={get:void 0,put:void 0};if([rA.cx,rA.cb].includes(x.containerType))e.get={deprecated:!0,tags:[Ux(x.title)],summary:`Retrieve the data of the "${Ux(x.title)}" container`,parameters:[ie],responses:{200:{...fA,content:{"application/json":{schema:{allOf:[{type:"object",required:["stamp"],properties:{stamp:dt}},{$ref:`#/components/schemas/${x.name}`}]}}}},...Br}},[Dt.down,Dt.backendOnly].includes(x.transferDirection)&&(e.put={deprecated:!0,tags:[Ux(x.title)],summary:`Modify the data of the "${Ux(x.title)}" container`,parameters:[ie],requestBody:{content:{"application/json":{schema:{$ref:`#/components/schemas/${x.name}`}}}},responses:{201:{...fA},204:{...fA},...Br}});else if(x.containerType===rA.hx){let i=`${r}`;r+="/youngest",e.get={deprecated:!0,tags:[Ux(x.title)],summary:`Retrieve the youngest data of the "${Ux(x.title)}" container`,parameters:[ie,{name:"json",in:"query",required:!0,schema:{$ref:`#/components/schemas/${x.name}Select`}}],responses:{200:{...fA,content:{"application/json":{schema:ps}}},...Br}},A.paths[i]={get:{deprecated:!0,tags:[Ux(x.title)],summary:`Get the historical data of the "${Ux(x.title)}" container.`,parameters:[ie,{name:"json",in:"query",required:!0,schema:{allOf:[{$ref:`#/components/schemas/${x.name}Select`},xv]}}],responses:{200:{...fA,content:{"application/json":{schema:ps}}},...Br}}}}A.paths[r]=e}function sv(A,x,r=!1,e=!1){let o=x.containerType===rA.hx?"timeseries":"containers",t=[],B=Ux(x.title);e||t.push({path:`/api/1/sites/{siteUid}/${o}/${x.title}`,params:[ie],tags:[B]}),r&&(t=[{path:`/api/1/sites/{siteUid}/addons/{addonUid}/${o}/${x.title}`,params:[ie,Q8],tags:[B]}]);let l={path:`/api/1/app-center/apps/{appUid}/${o}/${x.title}`,params:[Z8],tags:["app-center"]};e&&l.tags.push(B),t.push(l);let D={get:void 0,put:void 0,post:void 0},j={tags:[],summary:`Retrieve the data of the "${Ux(x.title)}" container`,parameters:[],responses:{200:{...fA,content:{"application/json":{schema:{allOf:[{type:"object",required:["stamp"],properties:{stamp:dt}},{$ref:`#/components/schemas/${x.title}`}]}}}},...Br}};if([rA.cx,rA.cb].includes(x.containerType)&&(D.get=j,[Dt.down,Dt.backendOnly].includes(x.transferDirection)&&(D.put={tags:[],summary:`Modify the data of the "${Ux(x.title)}" container`,parameters:[],requestBody:{content:{"application/json":{schema:{$ref:`#/components/schemas/${x.title}`}}}},responses:{201:{...fA},204:{...fA},...Br}}),t.forEach(b=>{let k=structuredClone(D);Object.values(k).forEach($=>{$?.parameters?.unshift(...b.params),$?.tags?.unshift(...b.tags)}),A.paths[b.path]=k})),x.containerType===rA.hx){D.get={tags:[],summary:`Get the historical data of "${x.title}"`,parameters:[{name:"json",in:"query",required:!1,schema:{$ref:`#/components/schemas/${x.title}Request`}}],responses:{200:{...fA,content:{"application/json":{schema:{type:"array",items:{$ref:`#/components/schemas/${x.title}`}}}}},...Br}},r&&(D.post={tags:[],summary:`Insert data into the "${Ux(x.title)}" container`,parameters:[{name:"allow_future_date",in:"query",description:"Allow inserting records with a stamp value in the future",schema:{type:"boolean"}}],requestBody:{content:{"application/json":{schema:{$ref:`#/components/schemas/${x.title}`}}}},responses:{201:{...fA},400:{description:"Bad request",...Oe},...Br}});let b=t[0],k=structuredClone(D);Object.values(k).forEach(O=>{O?.parameters?.unshift(...b.params),O?.tags?.unshift(...b.tags)}),A.paths[b.path]=k;let $={...fA,content:{"application/json":{schema:{$ref:`#/components/schemas/${x.title}`}}}},y=`${b.path}/youngest`,q={get:structuredClone(k.get)};q.get.summary=`Get the youngest record of "${x.title}" container`,q.get.responses[200]=$;let P=r?2:1;q.get.parameters[P].schema.$ref=`#/components/schemas/${x.title}RequestSingle`,A.paths[y]=q;let N=`${b.path}/oldest`,R={get:structuredClone(k.get)};R.get.summary=`Get the oldest record of "${x.title}" container`,R.get.responses[200]=$,R.get.parameters[P].schema.$ref=`#/components/schemas/${x.title}RequestSingle`,A.paths[N]=R}}var _s=R0.TransferDirection,ut=" new szTemp{64};",bt=" return strcat(aData, szTemp, sizeof(szTemp));";function ws(A){if(!A.printf&&A.printfFormat==="memtostr")return"bin";if(!A.printf)return null;let x=A.rwp||"%n",r=x.includes("["),i=x.includes("{")||r;if(A.printfFormat==="stampToISOString")return i?null:"stamp";switch(A.printf){case"%d":return i?null:"d";case"%f":return i?null:"f";case"%s":return r?null:"s";default:return null}}function ln(A){if(A.type==="shadow"||A.shadowRef)return null;let x=AA(A);return!x||x==="skip"?null:ws(x)}function $s(A){return[R0.ContainerType.hx,R0.ContainerType.cx].includes(A.containerType)&&A.transferDirection!==_s.backendOnly}function av(A){if(A.type==="shadow"||A.shadowRef)return!1;let x=AA(A);return!!x&&x!=="skip"}function ov(A,x,r){let e=A.name.indexOf("]"),i=e>=0?A.name.substring(e+1):"",o=`${A.arrayRef.name}|${i}|${x}`;r.has(o)||r.set(o,{fields:[],formatType:x}),r.get(o).fields.push(A)}function Fv(A){let x=[],r=new Map,e=new Set,i=!1;for(let o of A){if(!av(o))continue;let t=ln(o);o.arrayRef&&t?ov(o,t,r):(x.push(o),t?e.add(t):i=!0)}return{standaloneFields:x,groupMap:r,usedFormats:e,hasInlineFields:i}}function vv(A,x,r){r.sort((D,j)=>D.arrayRef.index-j.arrayRef.index);let e=r.map(D=>D.byteOffset),i=e[1]-e[0];if(!(i>0&&e.every((D,j)=>j===0||D-e[j-1]===i)))return null;let[t,B]=x.split("|"),l=r[0].library?`_${h0.generateHashForLibraryName(r[0].library)}`:"DDE_";return{arrayName:t,subField:B,fields:r,startOffset:e[0],endOffset:e[e.length-1],step:i,formatType:ln(r[0]),pawnVarBase:`${l}${A}_${t}`}}function Ev(A,x){let{standaloneFields:r,groupMap:e,usedFormats:i,hasInlineFields:o}=Fv(x),t=[];for(let[B,l]of e){let{fields:D,formatType:j}=l;if(D.length<2){r.push(...D),i.add(j);continue}let b=vv(A,B,D);b?(i.add(j),t.push(b)):(r.push(...D),i.add(j))}return r.sort((B,l)=>B.byteOffset-l.byteOffset),{arrayGroups:t,standaloneFields:r,usedFormats:i,hasInlineFields:o}}function Bv(A){let x=new Set;for(let[,r]of Object.entries(A.containers))if($s(r))for(let e of r.fields){let i=ln(e);i&&x.add(i)}return x}function fv(A,x){x.has("d")&&(A("stock _DDE_fmt_d(aData{}, value) {"),A(ut),A(' sprintf(szTemp, _, "%d", value);'),A(bt),A("}")),x.has("f")&&(A(""),A("stock _DDE_fmt_f(aData{}, Float:value) {"),A(ut),A(' sprintf(szTemp, _, "%.3f", value);'),A(bt),A("}")),x.has("s")&&(A(""),A("stock _DDE_fmt_s(aData{}, value{}) {"),A(ut),A(' sprintf(szTemp, _, "%s", value);'),A(bt),A("}")),x.has("stamp")&&(A(""),A("stock _DDE_fmt_stamp(aData{}, value) {"),A(ut),A(' sprintf(szTemp, _, "%s", (stampToISOString(value)));'),A(bt),A("}")),x.has("bin")&&(A(""),A("stock _DDE_fmt_bin(aData{}, mem{}, dim) {"),A(" #pragma warning disable 224"),A(" memtostr(aData, mem, 0, dim);"),A(" #pragma warning disable 224"),A(" return dim;"),A("}"))}function Cv(A,x){return x===1?A===0?"idx":`idx - ${A}`:A===0?`idx / ${x}`:`(idx - ${A}) / ${x}`}function lv(A,x,r){let e=`idx >= ${A} && idx <= ${x}`;if(r===1)return e;let i=A===0?`idx % ${r} == 0`:`(idx - ${A}) % ${r} == 0`;return`${e} && ${i}`}function cv(A,x){let{startOffset:r,endOffset:e,step:i,formatType:o,pawnVarBase:t,subField:B}=x,l=Cv(r,i),D=lv(r,e,i);if(A(` if (${D}) {`),o==="bin"){let j=`${t}[${l}]${B}`,b=B?B.substring(1):"",k=b?`${t}_${b}_dim`:`${t}_dim`;A(` return _DDE_fmt_bin(aData, ${j}, ${k});`)}else A(` return _DDE_fmt_${o}(aData, ${t}[${l}]${B});`);A(" }")}function Dv(A,x,r){if(r.type==="shadow"||r.shadowRef)return;let e=AA(r);if(!e||e==="skip")return;let o=`${r.library?`_${h0.generateHashForLibraryName(r.library)}`:"DDE_"}${x}_${r.name}`,t=ws(e);if(t==="bin")A(` case ${r.byteOffset}: return _DDE_fmt_bin(aData, ${o}, ${o}_dim);`);else if(t)A(` case ${r.byteOffset}: return _DDE_fmt_${t}(aData, ${o});`);else{if(A(` case ${r.byteOffset}: {`),e.printf){let B=o;e.printfFormat&&(B=`(${e.printfFormat}(${B}))`),A(` sprintf(szTemp, _, "${e.printf}", ${B});`),A(" return (strcat(aData, szTemp, sizeof(szTemp)));")}A(" }")}}function dv(A,x,r){A(` case '${x.at(-1)}': {`),A(` return _DDE_local_${r.title}(aData, idx);`),A(" }")}function ks(A,x,r){let e=r===R0.ContainerType.cx?"c":"h",i=r===R0.ContainerType.cx?"config":"histdata";A(` if(cname{0} == '${e}'){`),A(" switch(cname{1}) {");for(let[o,t]of Object.entries(x.containers))r===t.containerType&&o.startsWith(i)&&t.transferDirection!==_s.backendOnly&&dv(A,o,t);A(" default:"),A(" return OK;"),A(" }"),A(" return OK;"),A(" }")}function uv(A,x){let r=Ev(x.title,x.fields);A(""),A(`stock _DDE_local_${x.title}(aData{}, idx) {`),r.hasInlineFields&&A(" new szTemp{64};");for(let e of r.arrayGroups)cv(A,e);if(r.standaloneFields.length>0){A(" switch(idx) {");for(let e of r.standaloneFields)Dv(A,x.title,e);A(" default:"),A(" return OK;"),A(" }")}A(" return OK;"),A("}")}function bv(A,x){for(let[,r]of Object.entries(x.containers))$s(r)&&uv(A,r)}function qs(A){let x=[],r=x.push.bind(x),e=Bv(A);return fv(r,e),e.size>0&&r(""),r("stock DDE_get_local_data(cname{}, aData{}, idx) {"),ks(r,A,R0.ContainerType.cx),ks(r,A,R0.ContainerType.hx),r(" return OK;"),r("}"),bv(r,A),x.join(`
1664
- `)}var Ns=h0.yamlRangeToLineInformation,Ge=s0.filePaths.dde.path,vA;(t0=>{let A=R0.DDEJson,x=h0.convertBlobToString;t0.DDE_SCHEMA=ui;async function e(M,h){let L=await h.readFile(M);return x(L)}t0.readYamlFile=e;async function i(M,h,L=s0.fileNames.mainDDE,Y){let W=[],H=await z.read(M,h),K=await Ss(M,h,H);if(Y)for(let Z of K){let{result:n0,unresolvedKeys:U}=ax.replaceDefineTemplates(Z.yaml,Y);Z.yaml=n0;for(let F0 of U)W.push({file:Z.path,level:"error",message:`Unresolved define template: {{${F0}}}`,line:0,startCharacter:0,endCharacter:0})}for(let Z of K)W.push(...l(Z.path,Z.yaml));let i0=fx.Utils.joinPath(M,Ge,L),r0=await e(i0,h);if(Y){let{result:Z,unresolvedKeys:n0}=ax.replaceDefineTemplates(r0,Y);r0=Z;for(let U of n0)W.push({file:i0,level:"error",message:`Unresolved define template: {{${U}}}`,line:0,startCharacter:0,endCharacter:0})}return W.push(...l(i0,r0)),{manifest:H,libraryFiles:K,main:{path:i0,yaml:r0},diagnostics:W}}t0.validate=i;async function o(M,h,L,Y=s0.fileNames.mainDDE){let W=await z.read(M,h),H=await ax.read(M,h,L),K=await i(M,h,Y,H.flat);if(K.diagnostics.filter(C0=>C0.level==="error").length>0)return{ddeJSON:null,diagnostics:K.diagnostics};let r0=await $(M,h,L),Z=new ft.PreCompiler(W,K.libraryFiles,r0),n0=Z.parseLibraries();if(n0.find(C0=>C0.level==="error"))return{ddeJSON:null,diagnostics:[...K.diagnostics,...n0]};let{ddeJSON:F0,diagnostics:v0}=Z.parseMainDDE(K.main.path,K.main.yaml);return{ddeJSON:F0,diagnostics:[...K.diagnostics,...v0]}}t0.compileDDE=o;let t=new Ps.default({strict:!1,allErrors:!0,verbose:!0});(0,Ts.default)(t);let B=t.compile(t0.DDE_SCHEMA);function l(M,h){let L=new pt.LineCounter,Y=(0,pt.parseDocument)(h,{lineCounter:L,keepSourceTokens:!0}),W=[];for(let i0 of Y.errors){let r0=i0.pos?Ns(L,[i0.pos[0],i0.pos[1],i0.pos[1]]):{line:0,startCharacter:0,endCharacter:0};W.push({file:M,level:"error",message:i0.message,...r0})}if(W.length>0)return W;let H=Y.toJSON();if(!B(H)){let r0=(B.errors||[]).filter(n0=>n0.keyword!=="if"),Z=new Set;for(let n0 of r0){let U=mv(n0);if(Z.has(U))continue;Z.add(U);let F0=gv(Y,L,n0);W.push({file:M,level:"error",message:U,...F0})}}return W}t0.validateJsonSchema=l,t0.PreCompiler=(M,h,L)=>new ft.PreCompiler(M,h,L);function j(M,h){return Fn(M,h)}t0.generateMyDatanetXML=j;async function b(M,h,L,Y){let W=await z.read(M,h),H=Fn(W,Y),K=fx.Utils.joinPath(M,s0.filePaths.dist.ddeXmlPath);await h.writeFile(K,H),L.log("Generated",s0.filePaths.dist.ddeXmlPath)}t0.exportMyDatanetXML=b;async function k(M,h,L,Y,W){let H=fx.Utils.joinPath(M,s0.filePaths.studio.auto.dde.historyJson);await h.rm(H).catch(console.error);let K=await z.read(M,h);if(!z.isApp(K)||!K.registry?.id)return;if(!W){L.warn("Could not fetch dde of previous version: No API token provided.");return}let i0=qA.coerce(K.version);try{let n0=(await Ax.getExistingApplication(W,K.publisher,K.registry.id,Y)).versions.find(C0=>!qA.prerelease(C0.version)&&qA.lte(C0.version,i0)),U=n0?.files.find(C0=>C0.name==="dde.json");if(!U){L.warn("Could not find a valid previous released app version to fetch the previous dde from.");return}let F0=await fetch(U.downloadUrl,{headers:{...Qx(W),...Ax.injectSemverHeader(!0)}});if(F0.status!==200){L.warn(`Could not fetch the dde.json of version "${n0?.version}"`);return}let v0=await F0.text();await h.writeFile(H,v0),L.log(`Saved history.json of previous app version ${n0.version}`)}catch(r0){L.error("Failed to fetch the dde of previous version",r0)}}t0.fetchPreviousHistoryJson=k;async function $(M,h,L){try{let Y=fx.Utils.joinPath(M,s0.filePaths.studio.auto.dde.historyJson);if(await h.stat(Y)){let H=await h.readFile(Y);return JSON.parse(x(H))}let W=fx.Utils.joinPath(M,Ge,"history.json");if(await h.stat(W)){L.warn(`"${s0.filePaths.studio.auto.dde.historyJson}" does not exist - fallback to "${Ge}history.json"`);let H=await h.readFile(W),K=JSON.parse(x(H)),i0=await z.read(M,h),r0=qA.coerce(i0.version)?.version,Z=Object.keys(K||{}).sort(qA.rcompare).find(U=>U!==r0);if(!Z)return null;let n0=K[Z];return{version:Z,...n0}}}catch(Y){L.error("Failed to read history.json",Y)}return L.warn("history.json does not exist"),null}t0.getHistoryJson=$;function y(M,h){return{version:qA.coerce(h.version)?.version||"1.0.0",...structuredClone(M)}}t0.buildHistoryJson=y;async function q(M,h,L,Y){let W=await z.read(M,h),H=y(Y,W),K=fx.Utils.joinPath(M,s0.filePaths.dist.historyJson);await h.writeFile(K,JSON.stringify(H,null," ")),L.log("Generated",s0.filePaths.dist.historyJson)}t0.exportHistoryJson=q;async function P(M,h){return h.rm(fx.Utils.joinPath(M,s0.filePaths.studio.auto.dlo.path))}t0.clearAutoDloDir=P;async function N(M,h,L,Y){await P(M,h);let W=await z.read(M,h),H=await Ss(M,h,W),K=await ax.read(M,h,L),i0=cs(Y,K,W),Z=new Re(W,Y,null).generate();for(let nx of H){let Ix=new Re(W,Y,nx.libraryName),{globals:lA,helper:cA}=Ix.generate(),rx=[...lA,...cA].join(`\r
1665
- `),W0=s0.filePaths.studio.auto.dlo.autoDdeInc.replace("X",nx.libraryName),Kx=fx.Utils.joinPath(M,W0);rx.length&&(L.log("Generated",W0),await h.writeFile(Kx,rx))}let n0=us(Y),U=ds(Y,H.map(nx=>nx.libraryName)),F0=qs(Y),v0=fx.Utils.joinPath(M,s0.filePaths.studio.auto.dlo.autoInc);await h.writeFile(v0,i0),L.log("Generated",s0.filePaths.studio.auto.dlo.autoInc);let C0=fx.Utils.joinPath(M,s0.filePaths.studio.auto.dlo.autoUplinkInc);await h.writeFile(C0,U),L.log("Generated",s0.filePaths.studio.auto.dlo.autoUplinkInc);let D0=fx.Utils.joinPath(M,s0.filePaths.studio.auto.dlo.autoLocalDataInc);await h.writeFile(D0,F0),L.log("Generated",s0.filePaths.studio.auto.dlo.autoLocalDataInc);let q0=fx.Utils.joinPath(M,s0.filePaths.studio.auto.dlo.autoDdeInc.replace("X","app"));await h.writeFile(q0,[...Z.globals,...Z.helper].join(`
1666
- `)),L.log("Generated",s0.filePaths.studio.auto.dlo.autoDdeInc.replace("X","app"));let I0=fx.Utils.joinPath(M,s0.filePaths.studio.auto.dlo.autoDdeInc.replace("X","main"));await h.writeFile(I0,n0),L.log("Generated",s0.filePaths.studio.auto.dlo.autoDdeInc.replace("X","main")),await O(M,h,L)}t0.exportAutoDloFiles=N;async function R(M,h,L,Y){let W=await z.read(M,h),H=z.isLibrary(W),K=fx.Utils.joinPath(M,s0.filePaths.dist.path,"dde-api.yaml");await h.rm(K).catch(()=>{});let i0=fx.Utils.joinPath(M,s0.filePaths.dist.ddeApi);if(await h.writeFile(i0,Cn(Y,W)),L.log("Generated",s0.filePaths.dist.ddeApi),H){let r0=fx.Utils.joinPath(M,s0.filePaths.dist.ddeApiPath,`${W.name}.yaml`),Z=Cn(Y,W,W.name);Z.length&&(await h.writeFile(r0,Z),L.log("Generated",s0.filePaths.dist.ddeApiPath+`${W.name}.yaml`))}}t0.exportOpenApi=R;async function O(M,h,L){let Y=fx.Utils.joinPath(M,s0.filePaths.studio.auto.dlo.defaultInc),W=await bs(M,h);await h.writeFile(Y,W),L.log("Generated",s0.filePaths.studio.auto.dlo.defaultInc)}t0.exportDefaultInc=O})(vA||={});async function Ss(A,x,r){let e=[],i=await V0.getAll(r);for(let o in i){let t=V0.dependencyToPath(A,o),B=V0.dependencyIdToName(o),l=fx.Utils.joinPath(t,`${Ge}/${B}.dde`);await x.stat(l)&&e.push({libraryName:B,path:l,yaml:await vA.readYamlFile(l,x)})}if(z.isLibrary(r)){let o=fx.Utils.joinPath(A,`/${Ge}/${r.name}.dde`);await x.stat(o)&&e.push({libraryName:r.name,path:o,yaml:await vA.readYamlFile(o,x)})}return e}function pv(A,x,r){if(typeof A=="string")return A;if(typeof A!="object"||A===null)return"";let e=A[x];if(typeof e=="string")return e;if(typeof e!="object"||e===null)return"";let i=r?.missingProperty;return i?e[i]??"":""}function jv(A,x,r,e){let o={required:()=>`Missing required property '${x.missingProperty}'.`,additionalProperties:()=>`Unknown property '${x.additionalProperty}' is not allowed.`,type:()=>`Must be of type '${x.type}'.`,enum:()=>`Must be one of the allowed values: ${JSON.stringify(x.allowedValues)}.`,pattern:()=>`Value does not match the required pattern. ${e?.patternErrorMessage??r}`,minimum:()=>`${r}.`,maximum:()=>`${r}.`,exclusiveMinimum:()=>`${r}.`,exclusiveMaximum:()=>`${r}.`,not:()=>`This value is not allowed here. ${e?.description??""}`.trimEnd(),anyOf:()=>`Value does not match any of the allowed schemas. ${e?.description??""}`.trimEnd(),oneOf:()=>`Value does not match any of the allowed schemas. ${e?.description??""}`.trimEnd()}[A];return o?o():r}function mv(A){let x=A.instancePath||"/",r=A.parentSchema,e=pv(r?.errorMessage,A.keyword,A.params);if(e)return`${x}: ${e}`;let i=A.message||"unknown validation error";return`${x}: ${jv(A.keyword,A.params,i,r)}`}function hv(A,x){let r=x.split("/").filter(Boolean).map(e=>{let i=Number(e);return Number.isNaN(i)?e:i});for(let e=r.length;e>=0;e--){let i=r.slice(0,e),o=A.getIn(i,!0);if(o?.range)return o.range}return null}function gv(A,x,r){let e=hv(A,r.instancePath||"");return e?Ns(x,e):{line:0,startCharacter:0,endCharacter:0}}var cn=require("vscode-uri");var Ms=dx(require("node:child_process"));var jt;(r=>{async function A(e,i,o){let t=await z.read(e,i);if(await z.isApmPartEnabled(e,i,b0.Part.pov)){o.info("Executing POV build script",t.pov?.details.buildCommand);let{buildCommand:B,workingPath:l}=t.pov.details,D=cn.Utils.joinPath(e,l);try{await Is(D,B,o)}catch(j){throw j.code?new Error(`APM part '${b0.Part.pov}' has errors. Aborted.`):j}}}r.tryBuildPov=A;async function x(e,i,o){let t=await z.read(e,i);if(await z.isApmPartEnabled(e,i,b0.Part.blo,t)){o.info("Executing BLO build script",t.blo?.buildCommand);let{buildCommand:B,workingPath:l}=t.blo,D=cn.Utils.joinPath(e,l);try{await Is(D,B,o)}catch(j){throw j.code?new Error(`APM part '${b0.Part.blo}' has errors. Aborted.`):j}}}r.tryBuildBlo=x})(jt||={});async function Is(A,x,r){return new Promise((e,i)=>{Ms.exec(x,{cwd:A.fsPath,env:process.env},(o,t,B)=>{r.log(t),B&&r.error(B),o&&i(o),e(null)})})}var Ue=require("@gera2ld/tarjs"),Ls=h0.convertBlobToString,Dn=require("pako"),px;(b=>{class A extends Error{_mergedDiagnostics;constructor($,y){super($),this.name="BuildError",this._mergedDiagnostics=y}get mergedDiagnostics(){return this._mergedDiagnostics}}b.BuildError=A;async function x(k,$,y,q,P,N=!0,R){N=yv(y,N),await kv(k,$,y,q,P,N);try{let M=await ax.read(k,$,y);await _v(k,$,y,M)}catch(M){y.warn("Could not generate defines.ts:",M)}let O={[b0.Part.dde]:[],[b0.Part.dlo]:[],[b0.Part.dfiles]:[]},t0={[b0.Part.dde]:wv,[b0.Part.dlo]:$v,[b0.Part.dfiles]:qv};try{for(let M of[b0.Part.dde,b0.Part.dlo,b0.Part.dfiles])if(N.includes(M)&&(y.info(`Building ${M.toUpperCase()}...`),await Nv(y,M,t0[M],O[M],k,$)))return O}catch(M){throw R?new A(M?.message,O):M}return N.includes(b0.Part.pov)?await jt.tryBuildPov(k,$,y):y.info("Skipping pov build"),N.includes(b0.Part.blo)?await jt.tryBuildBlo(k,$,y):y.info("Skipping blo build"),await Sv(k,$,y),await Pv(k,$,y),y.done("Project build completed."),O}b.buildAll=x;async function r(k,$,y,q,P,N,R){let O=await z.read(k,$);return z.isLibrary(O)?(y.info("Library project detected. Publishing library..."),o(k,$,y,P,q)):(y.info("App project detected. Publishing app..."),i(k,$,y,P,N,R,q))}b.release=r;async function e(k,$,y,q,P,N){let R=await z.read(k,$),O=`${R.name}-${R.version}.tar.gz`,t0=null;if(z.isLibrary(R))y.info("Library project detected. Packing library..."),t0=await Rs(k,$,y,P,q);else{y.info("App project detected. Packing app...");let h=await Os(k,$,y,P,N,q);t0=await Mv(h)}let M=kr.Utils.joinPath(k,O);t0!==null?(await $.writeFile(M,t0),y.done(`Packaged: ${M.fsPath}`)):y.error(`Could not create archive: ${M.fsPath}`)}b.pack=e;async function i(k,$,y,q,P,N=null,R){if(!await b0.validateAccess(k,$,q,!1,R))throw new Error("Could not validate access to application");let t0=await Os(k,$,y,q,P,R);await b0.updateProfile(k,$,q,R);let M=await b0.publishTag(k,$,q,t0,R);if(N!==null){let h=await z.read(k,$);await Ax.updateExistingApplicationVersion(q,h.publisher,h.registry?.id,h.version,{allowedBackends:N},R),y.info(`Tag "${M.version}" with phase "${M.phase}" shared with ${[...N].join(";")}!`)}y.done(`Tag "${M.version}" with phase "${M.phase}" published!`)}b.releaseAPM=i;async function o(k,$,y,q,P){let N=await z.read(k,$),R=await Rs(k,$,y,q,P);await te.publishPackage(q,N,R,P),y.done(`Library "${N.publisher}/${N.name}" with version "${N.version}" published!`)}b.releaseLibrary=o;async function t(k,$,y,q,P,N,R,O=null){if(N==="*"){let H=await z.read(k,$);N=`${H.name}-${H.version}.tar.gz`,y.info(`Publishing detected archive package "${N}"...`)}let t0=kr.Utils.joinPath(k,N);if(!await $.stat(t0))throw new Error(`Archive package not found: ${t0.fsPath}`);let M=await $.readFile(t0),h=await Lv(M),{publisher:L,registry:Y,version:W}=h;z.isLibrary(h)?(await te.publishPackage(q,h,M,P),y.done(`Library "${L}/${h.name}" with version "${h.version}" published!`)):(await Ax.updateApplicationFile(q,L,Y.id,W,"app.tar.gz",M,P),await Ax.updateExistingApplicationVersion(q,L,Y?.id,W,{allowedBackends:O||void 0,phase:R||void 0},P),y.info(`Tag "${W}" with phase "${R}" shared with ${[...O||""].join(";")}!`),y.done(`Tag "${W}" with phase "${R}" published!`))}b.publishArchive=t;async function B(k,$,y){let q;try{q=await $.readFile(kr.Utils.joinPath(k,"README.md"))}catch{throw new Error('Could not find "README.md". "README.md" is required for publishing.')}if(Ls(q)===s0.readme(y))throw new Error('"README.md" matches the default template. Please write a brief project description.');return q}b.getReadmeFile=B;async function l(k,$){let y;try{y=await $.readFile(kr.Utils.joinPath(k,"CHANGELOG.md"))}catch{throw new Error('Could not find "CHANGELOG.md". "CHANGELOG.md" is required for publishing.')}if(Ls(y)===s0.changelog)throw new Error('"CHANGELOG.md" matches the default template.');return y}b.getChangelogFile=l;async function D(k,$,y,q){let P=await z.read(k,$),{name:N,publisher:R,description:O}=P,t0=z.validateProjectName(N,z.isLibrary(P));if(t0)throw new Error(`name: ${t0}`);let M=z.validateDescription(O);if(M)throw new Error(`description: ${M}`);let h=z.validatePublisherId(R)||await z.validatePublisherOnline(y,R,q);if(h)throw new Error(`publisher: ${h}`);if(!z.isLibrary(P)&&(await z.validateApplicationIcon(k,$,P),z.validateEngineSettings(P),z.isApp(P)&&await z.isApmPartEnabled(k,$,b0.Part.dlo,P)&&(!P.dpid||!Object.values(z.DeviceProfiles).includes(P.dpid))))throw new Error("dpid: The device profile is needed to compile a dlo")}b.validatePublishSettings=D;async function j(k,$){let y=Dn.ungzip(k),q=await Ue.TarReader.load(y),P={};for(let N of q.fileInfos)$.includes(N.name)&&(P[N.name]=q.getFileBlob(N.name));return P}b.readFilesFromTarGz=j})(px||={});function yv(A,x){let r=Object.values(b0.Part);return x===!0?(A.info("Building project..."),r):x===!1?[]:x}async function kv(A,x,r,e,i,o){await V0.validateMinimumBackendVersion(A,x,r),o.includes(b0.Part.dde)&&await vA.fetchPreviousHistoryJson(A,x,r,e,i)}async function _v(A,x,r,e){e.defaultsOnly?(await ax.exportDefinesTs(A,x,e.defaultsOnly),r.log("Generated",s0.filePaths.dist.definesTs,"(defaults only)"),await ax.exportDefinesTs(A,x,e,s0.filePaths.dist.definesAppTs),r.log("Generated",s0.filePaths.dist.definesAppTs,"(with app.ini overrides)")):(await ax.exportDefinesTs(A,x,e),r.log("Generated",s0.filePaths.dist.definesTs))}async function wv(A,x,r){let e=await vA.compileDDE(A,x,r);if(e.ddeJSON){await vA.exportMyDatanetXML(A,x,r,e.ddeJSON);let i=await z.read(A,x);z.isLibrary(i)||await vA.exportHistoryJson(A,x,r,e.ddeJSON),await vA.exportOpenApi(A,x,r,e.ddeJSON),await z.isApmPartEnabled(A,x,b0.Part.dlo,i)&&(await vA.exportAutoDloFiles(A,x,r,e.ddeJSON),await ot.exportDloConfig(A,x,r))}return e.diagnostics}async function $v(A,x,r){let e=new ee(A,x,r),{diagnostics:i}=await e.compile(A,x);return i}async function qv(A,x,r){return await vt.process(A,x,r)}async function Sv(A,x,r){let e=await z.read(A,x);z.isLibrary(e)&&await Wr.normalizeLibraryParts(A,x,e,r)}async function Pv(A,x,r){let e=kr.Utils.joinPath(A,s0.fileNames.reportTemplate);if(await x.stat(e)){let i=kr.Utils.joinPath(A,s0.filePaths.dist.reportTemplate);await x.copy(e,i),r.log(`Copied "${s0.fileNames.reportTemplate}" to dist folder.`)}}function Tv(A,x,r){x!==b0.Part.dlo&&Iv(A,r);let e=r.some(i=>i.level==="error");if(e){let i=`APM part "${x}" has errors. Aborted.`;throw new Error(i)}return e}async function Nv(A,x,r,e,i,o){let t=await r(i,o,A);return e.push(...t),Tv(A,x,t)}function Iv(A,x){x.forEach(r=>{let e=r.startCharacter?`:${r.startCharacter+1}`:"",i=`${r.file.path}:${r.line+1}${e} - ${r.message}`;r.level==="error"?A.error(i):r.level==="warning"?A.warn(i):A.log(i)})}async function Rs(A,x,r,e,i){let o=await z.read(A,x);return await z.validateBasicManifest(A,x,o),await px.buildAll(A,x,r,i,e),await te.createArchive(A,x)}async function Os(A,x,r,e,i,o){if(!Object.values(b0.TagPhase).includes(i))throw new Error(`ReleasePhase: ${i} is not a valid release phase`);return await z.validateBasicManifest(A,x,null),await px.buildAll(A,x,r,o,e),await b0.createTag(A,x,i)}async function Mv(A){let x=new Ue.TarWriter;for(let[e,i]of A.entries())if(e==="tag"){let o=i;x.addFile(e,o)}else{let o=i;x.addFile(e,await o.arrayBuffer())}let r=await x.write();return Dn.gzip(await r.arrayBuffer())}async function Lv(A){let x=await Rv(A,["studio.json","src/studio.json"]);if(!x)throw new Error('Could not find "studio.json" in archive');return JSON.parse(await x.text())}async function Rv(A,x){let r=Dn.ungzip(A),e=await Ue.TarReader.load(r);for(let i of e.fileInfos)if(x.includes(i.name))return e.getFileBlob(i.name);return null}var Ov=h0.bufferToBase64;var b0;(j=>{let A;(R=>(R.alpha="alpha",R.beta="beta",R.rc="rc",R.release="release",R.stage="stage",R.passive="passive",R.withdrawn="withdrawn"))(A=j.TagPhase||={});let x;(P=>(P.dde="dde",P.dlo="dlo",P.pov="pov",P.blo="blo",P.dfiles="dfiles"))(x=j.Part||={});function r(b){let{description:k,name:$,pov:y,engines:q,blo:P,publisher:N,type:R}=b,O=R||z.ProjectTypes.app,t0={name:$,abstract:k,author:N||"",pov_location:z.PovLocation.embedded,pov_details_lowlevel:!1,required_be:q?.backend,required_hwfw:q?.hwfw?.join(";"),required_productcode:q?.productId?.join(";"),blo_level:P?.accessLevel||z.BloAccessLevel.restricted,pip_id:""};return y&&y.details&&(t0.pov_location=z.PovLocation.pure,t0.pov_details_lowlevel=!!y.details.lowLevel),O==="addon"&&(t0.required_hwfw=void 0,t0.required_productcode=void 0,t0.addon_max_sources=1,t0.addon_max_per_site=b.maxInstancesPerSite),t0}j.createBaseTagHeader=r;async function e(b,k,$){let y=await z.read(b,k),q=r(y),P={version:y.version,...q,phase:$};return await o(b,k,y,P)}j.createTag=e;async function i(b,k){let $=await z.read(b,k),q={...r($),blo_autostart:!1};return o(b,k,$,q)}j.createDevTag=i;async function o(b,k,$,y){let q=new FormData;q.append("tag",JSON.stringify(y)),q.append(`src/${z.fileName}`,new Blob([await z.readAsBlob(b,k)]));let P=new Blob([await k.readFile(VA.Utils.joinPath(b,s0.filePaths.dist.ddeXmlPath))]);if(q.append("bin/dde/xml",P),$.icon){let R=await k.readFile(VA.Utils.joinPath(b,$.icon)),O=Ov(R);q.append("previews/00.png",new Blob([`data:image/png;base64,${O}`]))}if(Object.hasOwn(y,"phase")){let R=await px.getReadmeFile(b,k,y.name),O=await px.getChangelogFile(b,k);q.append("previews/README.md",new Blob([R])),q.append("previews/CHANGELOG.md",new Blob([O]))}if(await z.isApmPartEnabled(b,k,"dlo")){let R=new Blob([await k.readFile(VA.Utils.joinPath(b,s0.filePaths.dist.mainAmxPath))]);q.append("bin/dlo/amx",R)}if(await z.isApmPartEnabled(b,k,"pov",$)){await Gs(b,k,q,s0.filePaths.dist.povDetailsPath,"bin/pov/details");let R=new TextEncoder().encode('<!DOCTYPE html><html lang="en">');q.append("bin/pov/list/index.html",new Blob([R]))}let N=await k.findFiles(b,`${s0.filePaths.dist.dfilesPath}/*`);for(let R of N){let O=new Blob([await k.readFile(R)]);q.append(`bin/dfiles/${VA.Utils.basename(R)}`,O)}return await z.isApmPartEnabled(b,k,"blo",$)&&await Gs(b,k,q,s0.filePaths.dist.bloPath,"bin/blo"),await Gv(b,k,q),q}j.createBuffer=o;async function t(b,k,$,y,q){let P=await z.read(b,k);y||await px.validatePublishSettings(b,k,$,q);let{registry:N}=P,R=N?.id;if(!R&&!y&&(R=await B(b,k,$,P,q)),R){let{publisher:O}=P;if(!O)return null;try{return{id:R,...await Ax.getExistingApplication($,O,R,q)}}catch(t0){if(t0?.message==="Could not find given application")return R=await B(b,k,$,P,q),{id:R,...await Ax.getExistingApplication($,O,R,q)}}}return null}j.validateAccess=t;async function B(b,k,$,y,q){let P="myDatanet",{publisher:N,name:R,description:O,registry:t0}=y,M={id:t0?.id,type:y.type||z.ProjectTypes.app,name:R,targetSystem:P,description:O||"",allowedBackends:null};z.isAddon(y)&&(M.allowedApplications=null);let h=await Ax.createNewApplication($,N,M,q);if(!h)throw new Error("Failed to initialize application");return y.registry={id:h},await z.write(b,k,y),h}j.registerNew=B;async function l(b,k,$,y){let{name:q,publisher:P,description:N,registry:R}=await z.read(b,k),O=R?.id;await Ax.updateExistingApplication($,P,O,{description:N,name:q,targetSystem:"myDatanet"},y)}j.updateProfile=l;async function D(b,k,$,y,q){let{publisher:P,registry:N,version:R}=await z.read(b,k);return await Ax.publishApplicationVersion($,P,N?.id,R,y,q)}j.publishTag=D})(b0||={});async function Gs(A,x,r,e,i){let o=await x.findFiles(A,`${e}/**`);for(let t of o){let B=VA.Utils.joinPath(A,e),l=t.path.substring(B.path.length+1),D=new Blob([await x.readFile(VA.Utils.joinPath(A,`${e}/${l}`))]);r.append(`${i}/${l}`,D)}}async function Gv(A,x,r){let e=VA.Utils.joinPath(A,s0.filePaths.dist.reportTemplate);if(await x.stat(e)){let o=new Blob([await x.readFile(e)]);r.append("bin/pov/mdn_report_template.json",o)}let i=VA.Utils.joinPath(A,s0.filePaths.dist.historyJson);await x.stat(i)&&r.append("src/dde/history.json",new Blob([await x.readFile(i)]))}var Ra=dx(require("update-notifier"));function Uv(A,x,r){let e=x.split(".").filter(Boolean),i=A;for(let o=0;o<e.length;o++){let t=e[o];o===e.length-1?i[t]=r:((typeof i[t]!="object"||i[t]===null||Array.isArray(i[t]))&&(i[t]={}),i=i[t])}}function Us(A){let x=A.args,r={};for(let e=0;e<x.length;e++){let i=x[e];if(!i||!i.startsWith("--"))continue;let[o,t]=i.split("=",2),B=o.slice(2),l=!0;if(t!==void 0)l=t;else{let D=x[e+1];D&&!D.startsWith("-")&&(l=D,e++)}B.includes(".")?Uv(r,B,l):r[B]=l}return r}var Sa=require("usb");var Da=require("events");var pa=require("events"),ja=require("events"),ma=require("events"),ya=require("events"),wa=require("events"),qa=require("events");var Hv=Object.create,_n=Object.defineProperty,Kv=Object.getOwnPropertyDescriptor,aa=Object.getOwnPropertyNames,zv=Object.getPrototypeOf,Jv=Object.prototype.hasOwnProperty,Vv=(A,x,r)=>x in A?_n(A,x,{enumerable:!0,configurable:!0,writable:!0,value:r}):A[x]=r,Hs=(A=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(A,{get:(x,r)=>(typeof require<"u"?require:x)[r]}):A)(function(A){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+A+'" is not supported')}),Wv=(A,x)=>function(){try{return x||(0,A[aa(A)[0]])((x={exports:{}}).exports,x),x.exports}catch(e){throw x=0,e}},Xv=(A,x,r,e)=>{if(x&&typeof x=="object"||typeof x=="function")for(let i of aa(x))!Jv.call(A,i)&&i!==r&&_n(A,i,{get:()=>x[i],enumerable:!(e=Kv(x,i))||e.enumerable});return A},Yv=(A,x,r)=>(r=A!=null?Hv(zv(A)):{},Xv(x||!A||!A.__esModule?_n(r,"default",{value:A,enumerable:!0}):r,A)),c0=(A,x,r)=>Vv(A,typeof x!="symbol"?x+"":x,r),Qv=Wv({"mdn_com_wasm/bin/mdnCOM.js"(A,x){"use strict";var r=(()=>{var e=globalThis.document?.currentScript?.src;return async function(i={}){var o;(function(){function E(A0){A0=A0.split("-")[0];for(var f0=A0.split(".").slice(0,3);f0.length<3;)f0.push("00");return f0=f0.map((u0,K0,H0)=>u0.padStart(2,"0")),f0.join("")}var C=A0=>[A0/1e4|0,(A0/100|0)%100,A0%100].join("."),m=2147483647,S=typeof process<"u"&&process.versions?.node?E(process.versions.node):m;if(S<180300)throw new Error(`This emscripten-generated code requires node v${C(180300)} (detected v${C(S)})`);var T=typeof navigator<"u"&&navigator.userAgent;if(T){var Q=T.includes("Safari/")&&!T.includes("Chrome/")&&T.match(/Version\/(\d+\.?\d*\.?\d*)/)?E(T.match(/Version\/(\d+\.?\d*\.?\d*)/)[1]):m;if(Q<15e4)throw new Error(`This emscripten-generated code requires Safari v${C(15e4)} (detected v${Q})`);var X=T.match(/Firefox\/(\d+(?:\.\d+)?)/)?parseFloat(T.match(/Firefox\/(\d+(?:\.\d+)?)/)[1]):m;if(X<79)throw new Error(`This emscripten-generated code requires Firefox v79 (detected v${X})`);var x0=T.match(/Chrome\/(\d+(?:\.\d+)?)/)?parseFloat(T.match(/Chrome\/(\d+(?:\.\d+)?)/)[1]):m;if(x0<85)throw new Error(`This emscripten-generated code requires Chrome v85 (detected v${x0})`)}})();var t=i,B=!!globalThis.window,l=!!globalThis.WorkerGlobalScope,D=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer",j=!B&&!D&&!l,b=[],k="./this.program",$=(E,C)=>{throw C};typeof __filename<"u"?e=__filename:l&&(e=self.location.href);var y="",q,P;if(D){if(!(globalThis.process?.versions?.node&&globalThis.process?.type!="renderer"))throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");var N=Hs("fs");y=__dirname+"/",P=C=>{C=L(C)?new URL(C):C;var m=N.readFileSync(C);return h(Buffer.isBuffer(m)),m},q=async(C,m=!0)=>{C=L(C)?new URL(C):C;var S=N.readFileSync(C,m?void 0:"utf8");return h(m?Buffer.isBuffer(S):typeof S=="string"),S},process.argv.length>1&&(k=process.argv[1].replace(/\\/g,"/")),b=process.argv.slice(2),$=(C,m)=>{throw process.exitCode=C,m}}else if(!j)if(B||l){try{y=new URL(".",e).href}catch{}if(!(globalThis.window||globalThis.WorkerGlobalScope))throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");l&&(P=E=>{var C=new XMLHttpRequest;return C.open("GET",E,!1),C.responseType="arraybuffer",C.send(null),new Uint8Array(C.response)}),q=async E=>{if(L(E))return new Promise((m,S)=>{var T=new XMLHttpRequest;T.open("GET",E,!0),T.responseType="arraybuffer",T.onload=()=>{if(T.status==200||T.status==0&&T.response){m(T.response);return}S(T.status)},T.onerror=S,T.send(null)});var C=await fetch(E,{credentials:"same-origin"});if(C.ok)return C.arrayBuffer();throw new Error(C.status+" : "+C.url)}}else throw new Error("environment detection error");var R=console.log.bind(console),O=console.error.bind(console);h(!j,"shell environment detected but not enabled at build time (add `shell` to `-sENVIRONMENT` to enable)");var t0;globalThis.WebAssembly||O("no native wasm support detected");var M=!1;function h(E,C){E||rx("Assertion failed"+(C?": "+C:""))}var L=E=>E.startsWith("file://");function Y(){var E=Jt();h((E&3)==0),E==0&&(E+=4),g0[E>>2]=34821223,g0[E+4>>2]=2310721022,g0[0]=1668509029}function W(){if(!M){var E=Jt();E==0&&(E+=4);var C=g0[E>>2],m=g0[E+4>>2];(C!=34821223||m!=2310721022)&&rx(`Stack overflow! Stack cookie has been overwritten at ${ox(E)}, expected hex dwords 0x89BACDFE and 0x2135467, but received ${ox(m)} ${ox(C)}`),g0[0]!=1668509029&&rx("Runtime error: The application has corrupted its heap memory area (address zero)!")}}class H{}class K extends H{}var i0=!0;(()=>{var E=new Int16Array(1),C=new Int8Array(E.buffer);E[0]=25459,(C[0]!==115||C[1]!==99)&&rx("Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)")})();function r0(E){Object.getOwnPropertyDescriptor(t,E)||Object.defineProperty(t,E,{configurable:!0,set(){rx(`Attempt to set \`Module.${E}\` after it has already been processed. This can happen, for example, when code is injected via '--post-js' rather than '--pre-js'`)}})}function Z(E){return()=>h(!1,`call to '${E}' via reference taken before Wasm module initialization`)}function n0(E){Object.getOwnPropertyDescriptor(t,E)&&rx(`\`Module.${E}\` was supplied but \`${E}\` not included in INCOMING_MODULE_JS_API`)}function U(E){return E==="FS_createPath"||E==="FS_createDataFile"||E==="FS_createPreloadedFile"||E==="FS_preloadFile"||E==="FS_unlink"||E==="addRunDependency"||E==="FS_createLazyFile"||E==="FS_createDevice"||E==="removeRunDependency"}function F0(E){v0(E)}function v0(E){Object.getOwnPropertyDescriptor(t,E)||Object.defineProperty(t,E,{configurable:!0,get(){var C=`'${E}' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the Emscripten FAQ)`;U(E)&&(C+=". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"),rx(C)}})}function C0(E){for(var C=0,m=E.length,S=new Uint8Array(m),T;C<m;++C)T=E.charCodeAt(C),S[C]=~T>>8&T;return S}var D0,q0,I0=!1;function nx(){var E=At.buffer;Mx=new Int8Array(E),DA=new Int16Array(E),t.HEAPU8=Cx=new Uint8Array(E),xx=new Uint16Array(E),dA=new Int32Array(E),g0=new Uint32Array(E),Nr=new Float32Array(E),Ar=new Float64Array(E),Tr=new BigInt64Array(E),Jx=new BigUint64Array(E)}h(globalThis.Int32Array&&globalThis.Float64Array&&Int32Array.prototype.subarray&&Int32Array.prototype.set,"JS engine does not provide full typed array support");function Ix(){if(t.preRun)for(typeof t.preRun=="function"&&(t.preRun=[t.preRun]);t.preRun.length;)fe(t.preRun.shift());r0("preRun"),eA(B0)}function lA(){h(!I0),I0=!0,W(),Jr.__wasm_call_ctors()}function cA(){if(W(),t.postRun)for(typeof t.postRun=="function"&&(t.postRun=[t.postRun]);t.postRun.length;)uA(t.postRun.shift());r0("postRun"),eA(Vx)}function rx(E){t.onAbort?.(E),E=`Aborted(${E})`,O(E),M=!0;var C=new WebAssembly.RuntimeError(E);throw q0?.(C),C}function W0(){rx("Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -sFORCE_FILESYSTEM")}var Kx={init:W0,createDataFile:W0,createPreloadedFile:W0,createLazyFile:W0,open:W0,mkdev:W0,registerDevice:W0,analyzePath:W0,ErrnoError:W0};function O0(E,C){return(...m)=>{h(I0,`native function \`${E}\` called before runtime initialization`);var S=Jr[E];return h(S,`exported native function \`${E}\` not found`),h(m.length<=C,`native function \`${E}\` called with ${m.length} args but expects ${C}`),S(...m)}}var L0;function G0(){return C0(`\0asm\0\0\0\xCF\`\x7F\0\`\x7F\x7F\0\`\x7F\x7F\`\x7F\x7F\x7F\x7F\`\x7F\x7F\x7F\`\x7F\x7F\x7F\0\`\0\0\`\x7F\x7F\x7F\x7F\0\`\0\x7F\`\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F\x7F\x7F\x7F\0\`\x7F\x7F\x7F\x7F\x7F\x7F\0\`\x7F~\x7F~\`
1650
+ ${w}
1651
+ public ___${n0}( ${M})${y}`}else if(q=Pa.exec(T)){let[,R,n0]=q;S=`${R}${n0}{_log_string="";_assert(__refid,__line);}`}else if(q=Sa.exec(T)){let[,R,n0,M,y]=q;S=`${R}${n0}{ if (!(${M})) { sprintf(_log_string,_,${y.replace(/%%/g,"\xFF")});_assert(__refid,__line); }}`}else if(q=$a.exec(T)){let[,R,n0,M]=q;S=`${R}${n0}{ if (!(${M})) { _log_string="";_assert(__refid,__line); }}`}else if(q=Ta.exec(T)){let[,R,n0,M]=q;S=`${R}${n0}_catch(__refid,__line,${M});`}else if(q=qa.exec(T)){let[,R,n0,M,y,O]=q,{priority:Y,code:W}=ya(y,M.substring(1));Y!==null&&(S=`${R}${n0}{new params_str{DDE_APPLOG_SIZE_PARAMS};sprintf(params_str,_,${O});DDE_applog_write(${Y}, ${W}, params_str, __applog_src_id);}`)}else if(q=Na.exec(T)){let[,R,n0,M,y]=q,{priority:O,code:Y}=ya(y,M.substring(1));O!==null&&(S=`${R}${n0}DDE_applog_write(${O}, ${Y}, "", __applog_src_id);`)}else if(q=Ia.exec(T)){let[,R,n0,M,y]=q,O=M.substring(1),Y=Ma[O];S=`${R}${n0}{ if(_log_level <= ${Y}){ sprintf(_log_string,_,${y.replace(/%%/g,"\xFF")}); _log${M}(__refid,__line); }}`}else(q=zl.exec(T))&&!F.includes(e0.filePaths.studio.auto.path)?(F.includes(e0.filePaths.studio.libdeps)||n.push({file:t,level:"warning",line:g,message:"Libraries are included automatically - remove this #include line"}),S="// Libraries are included automatically! - "+T):(q=Kl.exec(T))&&(n.push({file:t,level:"error",line:g,message:"#endinput is not supported - use #if/#endif instead"}),S=T);v&&!r.legacyProject&&(Wl.exec(T)&&(S=S.replaceAll("DDE_",`_${v}`)),Xl.exec(T)&&(S=S.replace("onUplink",`_${v}`)),Yl.exec(T)&&(S=S.replace("onUplink",`_${v}Uplink`))),u.push(S),w++;for(let R=0;R<L;R++)u.push(""),w++,g++}if(E!=="main.dlo"){let g=E.split(".")[0].replace(/[^a-zA-Z0-9]/g,"_"),S=`_inc_${g}`.substring(0,31),T=`_inc_${g}_inc`.substring(0,31);u.push(`#if defined ${S}`),u.push(`#undef ${S}`),u.push("#endif"),u.push(`#if defined ${T}`),u.push(`#undef ${T}`),u.push("#endif")}return{data:u.join(`
1652
+ `),diagnostics:n}}};var HA=require("vscode-uri");var P0=ax(require("fs")),nx=require("vscode-uri");var Ua=ax(require("iconv-lite")),Ac=h0.convertBlobToStringArray,Ha=16384,Ja=511,ci=Ha|Ja,ec=32768,rc=438,Oa=ec|rc,tc=new Pr,Tr={};function za(){let x=[];for(let A of Object.keys(Tr))x.push(...Tr[A].diagnostics);return x}var Vt=!!process.env.DLO_PROFILE,se={precompileCount:0,cacheHits:0,precompileMs:0};function Ka(x){Vt&&(x.log(`[DLO_PROFILE] precompile: ${se.precompileCount} runs, ${se.cacheHits} cache hits, ${se.precompileMs.toFixed(1)}ms`),se.precompileCount=0,se.cacheHits=0,se.precompileMs=0)}var Ei=(x,A,e,r)=>{let t={getattr(n){let F=nx.Utils.joinPath(nx.URI.parse(n.mount.opts.root),x.getPath(n)),v=F.fsPath;if(!P0.existsSync(v))throw new x.ErrnoError(44);let E=Ga(A,r,e,F),u=P0.statSync(v),p=E?.length||u.size;return{mode:u.isDirectory()?ci:Oa,size:p,atime:u.atime,mtime:u.mtime,ctime:u.ctime}},setattr(n,F){let v=nx.Utils.joinPath(nx.URI.parse(n.mount.opts.root),x.getPath(n)).fsPath;if(!P0.existsSync(v))throw new x.ErrnoError(44);if(typeof F.size=="number"&&P0.truncateSync(v,F.size),typeof F.mode=="number"&&P0.chmodSync(v,F.mode),F.atime||F.mtime){let E=P0.statSync(v);P0.utimesSync(v,F.atime??E.atime,F.mtime??E.mtime)}},lookup(n,F){let E=nx.Utils.joinPath(nx.URI.parse(n.mount.opts.root),x.getPath(n),F).fsPath;if(!P0.existsSync(E))throw new x.ErrnoError(44);let u=P0.statSync(E),p=x.createNode(n,F,u.isDirectory()?ci:Oa,0);return p.node_ops=n.node_ops,p.stream_ops=n.stream_ops,p},readdir(n){let F=nx.Utils.joinPath(nx.URI.parse(n.mount.opts.root),x.getPath(n)).fsPath;return[".","..",...P0.readdirSync(F)]},mknod(n,F,v,E){let u=nx.Utils.joinPath(nx.URI.parse(n.mount.opts.root),x.getPath(n),F).fsPath;P0.writeFileSync(u,"");let p=x.createNode(n,F,v,E);return p.node_ops=n.node_ops,p.stream_ops=n.stream_ops,p},unlink(n,F){let v=nx.Utils.joinPath(nx.URI.parse(n.mount.opts.root),x.getPath(n),F).fsPath;P0.unlinkSync(v)},mkdir(n,F,v){let E=nx.Utils.joinPath(nx.URI.parse(n.mount.opts.root),x.getPath(n),F).fsPath;P0.mkdirSync(E,{mode:v});let u=x.createNode(n,F,v|ci,0);return u.node_ops=n.node_ops,u.stream_ops=n.stream_ops,u},rmdir(n,F){let v=nx.Utils.joinPath(nx.URI.parse(n.mount.opts.root),x.getPath(n),F).fsPath;P0.rmdirSync(v)},rename(n,F,v){let E=nx.Utils.joinPath(nx.URI.parse(n.mount.opts.root),x.getPath(n)).fsPath,u=nx.Utils.joinPath(nx.URI.parse(F.mount.opts.root),x.getPath(F),v).fsPath;P0.renameSync(E,u)}},i={open(n){let F=nx.Utils.joinPath(nx.URI.parse(n.node.mount.opts.root),x.getPath(n.node));n.modifiedContent=Ga(A,r,e,F),n.modifiedContent||(n.nfd=P0.openSync(F.fsPath,Ra(n.flags)))},close(n){n.nfd&&P0.closeSync(n.nfd)},read(n,F,v,E,u){if(!n.modifiedContent)return P0.readSync(n.nfd,F,v,E,u);let p=n.modifiedContent;if(u>=p.length)return 0;let j=p.length-u,w=Math.min(E,j);return nc(p,F,v,u,u+w),w},write(n,F,v,E,u){return P0.writeSync(n.nfd,F,v,E,u)},flagsToMode:Ra,llseek(n,F,v){let E=F;if(v===1)E+=n.position;else if(v===2){let u=P0.fstatSync(n.nfd);E+=u.size}if(E<0)throw new x.ErrnoError(28);return n.position=E,E}};return{mount(){let n=ae(A),F=x.createNode(null,n,Ha|Ja,0);return F.node_ops=t,F.stream_ops=i,F},node_ops:t,stream_ops:i}};function Ra(x){let A=x&2097155;if(A===0)return"r";if(A===1)return"r+";if(A===65)return"w";if(A===577)return"w+";if(A===1089)return"a";if(A===1217)return"a+";throw new Error(`Unknown file open flags: ${x}`)}function nc(x,A,e,r,t){if(Buffer.isBuffer(x)&&Buffer.isBuffer(A))x.copy(A,e,r,t);else{let i=x.subarray(r,t);Buffer.isBuffer(A)?Uint8Array.prototype.set.call(A,i,e):A.set(i,e)}}function Ga(x,A,e,r){let t=r.fsPath;if(!t.endsWith(".dlo")&&!t.endsWith(".inc"))return;let i=ic(t);if(!i){delete Tr[t];return}let n=Tr[t];if(n&&n.mtimeMs===i.mtimeMs&&n.size===i.size)return Vt&&se.cacheHits++,n.buffer;let F=Vt?performance.now():0,v=sc(x,A,e,r);return Vt&&(se.precompileCount++,se.precompileMs+=performance.now()-F),Tr[t]={buffer:v.buffer,mtimeMs:i.mtimeMs,size:i.size,diagnostics:v.diagnostics},Tr[t].buffer}function ic(x){try{return P0.statSync(x)}catch{return null}}function sc(x,A,e,r){let t=P0.readFileSync(r.fsPath),i=Ac(t),n=tc.preCompileDloFile(x,A,e,r,i);return{buffer:Ua.encode(n.data,"cp1252"),diagnostics:n.diagnostics}}function ae(x){return x.fsPath.replace(/\\/g,"/")}function ct(x,A){let e=ae(x);return ae(A).replace(e,"")}var Ao=xo(),Bt=Ao.createPawnCC,eo=Ao.createPawnDbg;var qr=class{constructor(A,e,r){this.cwd=A;this.fs=e;this.logger=r;this.dloCC=null}cwd;fs;logger;dloCC;stdout=[];stderr=[];async initDloCC(A=!1){this.stdout.length=0,this.stderr.length=0,this.dloCC=await Bt({noExitRuntime:A,print:n=>{let F=Bi(this.cwd,n);this.logger.log(F?F.message:n),this.stdout.push(n)},printErr:n=>{let F=Bi(this.cwd,n);n.includes(": warning")?this.logger.warn(F?F.message:n):this.logger.error(F?F.message:n),this.stderr.push(n),this.stdout.push(n)}});let e=ae(this.cwd),[r]=e.split("/"),t=this.dloCC.FS,i=await z.read(this.cwd,this.fs);t.filesystems.NODEFS_TS=Ei(t,this.cwd,i,this.logger),t.mkdir(r),t.mount(t.filesystems.NODEFS_TS,{root:"/"},r),t.chdir(ae(this.cwd))}async compile(A,e){let r=await z.read(A,e);if(!await z.isApmPartEnabled(A,e,p0.Part.dlo,r))return this.logger.log("DLO not enabled. Skipped."),{code:0,stdout:[],stderr:[],diagnostics:[]};await this.initDloCC(),await e.mkdir(HA.Utils.joinPath(A,"dist/dlo"));let t=HA.Utils.joinPath(A,r.dlo?.mainFile||e0.filePaths.dlo.mainDLO),i=[],n=HA.Utils.joinPath(A,e0.filePaths.studio.auto.dlo.cfg),F=ct(A,n);i.push(`-T.${F}`);let v=0;try{let E=`.${ct(A,t)}`;v=await this.dloCC.callMain([E,...i])}catch(E){this.logger.error(E)}return{code:v,stdout:this.stdout,stderr:this.stderr,diagnostics:[...za(),...Ci(A,this.stderr,t)]}}async getDloSymbols(A,e){let r=e.map(u=>{let p=u.substring(0,2);return["-D","-e","-i","-o","-p","-r","-T"].includes(p)?`${p}.${u.substring(2)}`:u}),t=!!process.env.DLO_PROFILE,i=t?performance.now():0,{compiler:n,print:F}=await this.getSymbolCompiler(),v=t?performance.now()-i:0,E=t?performance.now():0;try{if(await n.callMain(["."+A,...r,"-R"]))return null}catch(u){if(u.stack?.startsWith("RuntimeError"))return null;throw u}finally{if(t){let u=performance.now()-E;this.logger.log(`[DLO_PROFILE] instantiate: ${v.toFixed(1)}ms, callMain: ${u.toFixed(1)}ms`),Ka(this.logger)}}return[...F.stdout,...F.stderr]}async getSymbolCompiler(){let A={stdout:[],stderr:[]},e=await Bt({noExitRuntime:!1,print:F=>{A.stdout.push(F)},printErr:F=>{A.stderr.push(F)}}),r=ae(this.cwd),[t]=r.split("/"),i=e.FS,n=await z.read(this.cwd,this.fs);return i.filesystems.NODEFS_TS=Ei(i,this.cwd,n,this.logger),i.mkdir(t),i.mount(i.filesystems.NODEFS_TS,{root:"/"},t),{compiler:e,print:A}}};function Ci(x,A,e){let r=[],t=A.filter(i=>!!i.trim());for(let i of t){if((i.includes("Assertion failed:")||i.includes("Compilation aborted."))&&e){r.push({file:e,level:"error",line:0,message:i});continue}let n=Bi(x,i);n&&r.push({file:HA.URI.parse(`file:///${n?.posixPath}`),level:n.level,line:Number(n.lineNumber)-1,message:n.msg})}return r}function Bi(x,A){let e=A.indexOf(" : "),r=A.indexOf(": ",e+3),t=A.substring(0,e).trim(),i=A.substring(e+3,r).trim(),n=A.substring(r+2).trim();if(!t||!i||!n)return null;let[F,v]=t.split(/[()(-)]/),E=i.split(" "),u=E[E.length-2],j=HA.Utils.joinPath(x,F).fsPath.replace(/\\/g,"/");j.startsWith("/")&&(j=j.substring(1));let w=A.replace(F,j);return{level:u,msg:n,posixPath:j,lineNumber:v,message:w}}async function ro(x,A,e){let r=["-M","-v2"],t=HA.Utils.joinPath(x,e0.filePaths.studio.auto.dlo.defaultInc);r.push(`-p.${ct(x,t)}`);let i=await Ax.getApmPartDependencies(x,A,p0.Part.dlo);for(let F of i){let v=HA.Utils.dirname(F.path);r.push(`-i.${ct(x,v)}`)}let n=e.dlo;return n&&r.push(...n.compileOptions),r.push("-o./dist/dlo/main.amx"),{path:HA.Utils.joinPath(x,e0.filePaths.studio.auto.dlo.cfg),data:r.join(`
1653
+ `)}}var Wt;(v=>{v.createPawnCC=Bt,v.createPawnDbg=eo,v.FileSequencer=$r,v.PreCompiler=Pr,v.Compiler=qr,v.uriToMemFs=ae,v.parseCompilerWarningsAndErrors=Ci;async function F(E,u,p){let j=await z.read(E,u),w=await ro(E,u,j);await u.writeFile(w.path,w.data),p.log("Generated",e0.filePaths.studio.auto.dlo.cfg)}v.exportDloConfig=F})(Wt||={});var no=require("vscode-uri");var ui=require("minimatch");var io=require("@gera2ld/tarjs"),bc=h0.convertBlobToString,mc=require("pako"),so=".studioignore",ao=[".vscodeignore","package-lock.json","npm-debug.log","yarn.lock","yarn-error.log","npm-shrinkwrap.json",".editorconfig",".npmrc",".yarnrc",".gitattributes","*.todo","tslint.yaml",".eslintrc*",".babelrc*",".prettierrc*",".cz-config.js",".commitlintrc*","webpack.config.js","ISSUE_TEMPLATE.md","CONTRIBUTING.md","PULL_REQUEST_TEMPLATE.md","CODE_OF_CONDUCT.md",".github",".travis.yml","appveyor.yml","**/.git","**/.git/**","**/*.vsix","**/.DS_Store","**/*.vsixmanifest","**/.vscode-test/**","**/.vscode-test-web/**"];ao.push("**/.studio/**","**/node_modules/**",so,"dist/defines.app.ts");var to={dot:!0},Nr;(r=>{async function x(t,i){let n=new io.TarWriter;(await A(t,i)).forEach(E=>{n.addFile(E.name,E.data)});let v=await n.write();return mc.gzip(await v.arrayBuffer())}r.createArchive=x;async function A(t,i){let n=[],{ignore:F,negate:v}=await jc(t,i),u=(await i.findFiles(t,"**/*")).filter(({path:p})=>{let j=p.slice(t.path.length+1);return!F.some(w=>(0,ui.minimatch)(j,w,to))||v.some(w=>(0,ui.minimatch)(j,w.slice(1),to))});for(let p of u){let j=p.path.slice(t.path.length+1),[w,g]=await Promise.all([i.stat(p),i.readFile(p)]);w&&n.push({name:j,data:g,modifyTime:new Date(w.mtime)})}return n}r.getFilesForArchive=A;async function e(t,i,n,F=Fx.ENV.production){let{publisher:v,name:E,version:u}=i,p=await bx.readFilesFromTarGz(n,["CHANGELOG.md","README.md","studio.json"]),j={"CHANGELOG.md":await di(p["CHANGELOG.md"]),"README.md":await di(p["README.md"]),"studio.json":await di(p["studio.json"]),"library.tar.gz":n};return await ox.publishLibraryVersion(t,v,E,u,j,F)}r.publishPackage=e})(Nr||={});async function jc(x,A){let e=["!studio.json","!README.md"],t=(await hc(x,A)).split(/[\n\r]/).map(E=>E.trim()).filter(E=>!!E).filter(E=>!/^\s*#/.test(E)),i=[...t,...t.filter(E=>!/(^|\/)[^/]*\*[^/]*$/.test(E)).map(E=>/\/$/.test(E)?`${E}**`:`${E}/**`)],n=[...ao,...i,...e],[F,v]=n.reduce((E,u)=>/^\s*!/.test(u)?[E[0],[...E[1],u]]:[[...E[0],u],E[1]],[[],[]]);return{ignore:F,negate:v}}async function hc(x,A){let e=no.Utils.joinPath(x,so);if(await A.stat(e)){let t=await A.readFile(e);return bc(t)}else return""}async function di(x){return new Uint8Array(await x.arrayBuffer())}var JA=require("vscode-uri");var ye=require("yaml");var gc=h0.convertBlobToString,Xt=h0.yamlRangeToLineInformation,Yt;(n=>{let x;(u=>(u.static="static",u.dynamic="dynamic",u.appDynamic="app-dynamic"))(x=n.Type||={});let A;(p=>(p.crcStamp="crc_stamp",p.stampOnly="stamp_only",p.onlyDown="only_down",p.onlyUp="only_up"))(A=n.SyncLogic||={});let e;(u=>(u.down="down",u.up="up",u.off="off"))(e=n.Force||={});async function r(F,v,E){let{properties:u,diagnostics:p,libraryFiles:j}=await t(F,v),w=JA.Utils.joinPath(F,e0.filePaths.dist.dfilesPath);await v.stat(w)&&await v.rm(w);for(let[g,S]of Object.entries(u))await kc(F,v,g,S,j);return Object.keys(u).length&&(E.done(`${Object.keys(u).length} dfiles processed.`),await v.writeFile(JA.Utils.joinPath(F,e0.filePaths.dist.dfilesProperties),JSON.stringify(u,null," "))),p}n.process=r;async function t(F,v){let E=[],u={},p=await Ax.getApmPartDependencies(F,v,p0.Part.dfiles);for(let g of p){let{properties:S,diagnostics:T}=await i(v,g.path,g.name);Object.assign(u,S),E.push(...T)}let{properties:j,diagnostics:w}=await i(v,JA.Utils.joinPath(F,e0.filePaths.dfiles.mainDFILES),null);return Object.assign(u,j),E.push(...w),{properties:u,diagnostics:E,libraryFiles:p}}n.parseDfile=t;async function i(F,v,E){let u=[],p={};if(!await F.stat(v))return{properties:p,diagnostics:u};let j=await F.readFile(v),w=gc(j),g=new ye.LineCounter,T=(0,ye.parseDocument)(w,{lineCounter:g}).contents||new ye.YAMLMap;for(let q of T.items){let L=q.key.value,R=(0,ye.isMap)(q.value)?q.value:null,n0=Xt(g,q.key.range),M=R?R.has("syncMode"):!1,y=M?R.get("syncMode"):"crc_stamp";if(M){let J=Object.values(n.SyncLogic);if(!J.includes(y)){let s0=R.items.find(Z=>Z.key.value==="syncMode"),r0=Xt(g,s0.key.range);u.push({file:v,code:"",message:`Property syncMode does not match any of "${J.join(", ")}"`,line:r0.line,startCharacter:r0.startCharacter,endCharacter:r0.endCharacter,level:"error"})}}else u.push({file:v,code:"",message:'Property "syncMode" missing',line:n0.line,startCharacter:n0.startCharacter,endCharacter:n0.endCharacter,level:"error"});let O=R?R.has("type"):!1,Y=O?R.get("type"):"static";if(O){let J=Object.values(n.Type);if(!J.includes(Y)){let s0=R.items.find(Z=>Z.key.value==="type"),r0=Xt(g,s0.key.range);u.push({file:v,code:"",message:`Property type does not match any of "${J.join(", ")}"`,line:r0.line,startCharacter:r0.startCharacter,endCharacter:r0.endCharacter,level:"error"})}}L.match(/^[a-z0-9._-]*$/)||u.push({file:v,code:"",message:'Filename does not match pattern "a-z0-9._-"',line:n0.line,startCharacter:n0.startCharacter,endCharacter:n0.endCharacter,level:"error"});let W=JA.Utils.joinPath(JA.Utils.dirname(v),L),H=await yc(F,W);if(H)p[L]={crc:H.crc,force:"off",readable:!1,size:H.size,stamp:H.stamp,sync_logic:y,type:Y,library:E};else{let J=Xt(g,q.key.range);u.push({file:v,code:"",message:`Could not find file "${L}"`,line:J.line,startCharacter:J.startCharacter,endCharacter:J.endCharacter,level:"error"})}}return{properties:p,diagnostics:u}}n.parseYamlFile=i})(Yt||={});async function yc(x,A){let e=await x.stat(A);if(!e)return null;let r=await x.readFile(A);return{size:e.size,stamp:Math.trunc(e.ctime),crc:h0.generateCRC32ForFileContent(r)}}async function kc(x,A,e,r,t){let n=r.library!==null?JA.Utils.dirname(t.find(E=>E.name===r.library).path):JA.Utils.joinPath(x,e0.filePaths.dfiles.path),F=JA.Utils.joinPath(x,e0.filePaths.dist.dfilesPath,e),v=JA.Utils.joinPath(n,e);await A.copy(v,F)}var oo=ax(require("dotenv")),Fo=require("vscode-uri");var wc=".env.local",vo;(A=>{async function x(e,r){let t=Fo.Utils.joinPath(e,wc);if(await r.stat(t)){let i=await r.readFile(t);return oo.default.parse(h0.convertBlobToString(i))}return{}}A.read=x})(vo||={});var Ct=ax(require("chalk")),ke;(r=>{let x;(E=>(E[E.log=0]="log",E[E.done=1]="done",E[E.info=2]="info",E[E.warning=3]="warning",E[E.error=4]="error"))(x=r.LogMessageType||={}),r.LOG_PREFIX={1:Ct.default.bgGreen.black(" DONE "),0:"",2:Ct.default.bgBlueBright.black(" INFO "),3:Ct.default.bgYellow.black(" WARNING "),4:Ct.default.bgRed.black(" ERROR ")};class e{_logHandler;_silent=!1;constructor(i=console){this._logHandler=i}_log(i,n,...F){this._silent&&i!==4||(F=[r.LOG_PREFIX[i],n,...F],this._logHandler.log(...F))}set silent(i){this._silent=i}log(i,...n){this._log(0,i,...n)}debug(i,...n){this._log(0,i,...n)}error(i,...n){this._log(4,i,...n)}info(i,...n){this._log(2,i,...n)}warn(i,...n){this._log(3,i,...n)}done(i,...n){this._log(1,i,...n)}}r.Logger=e})(ke||={});var js=require("node:child_process");var T8=require("node:events"),us=require("vscode-uri");var nF=require("events");var SF=require("events"),PF=require("events"),TF=require("events"),qF=require("events"),MF=require("events"),RF=require("events"),HF=require("events"),JF=require("events"),KF=require("events");var _c=Object.create,Ki=Object.defineProperty,Sc=Object.getOwnPropertyDescriptor,Wo=Object.getOwnPropertyNames,$c=Object.getPrototypeOf,Pc=Object.prototype.hasOwnProperty,Tc=(x,A,e)=>A in x?Ki(x,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):x[A]=e,fo=(x=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(x,{get:(A,e)=>(typeof require<"u"?require:A)[e]}):x)(function(x){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+x+'" is not supported')}),qc=(x,A)=>function(){try{return A||(0,x[Wo(x)[0]])((A={exports:{}}).exports,A),A.exports}catch(r){throw A=0,r}},Nc=(x,A,e,r)=>{if(A&&typeof A=="object"||typeof A=="function")for(let t of Wo(A))!Pc.call(x,t)&&t!==e&&Ki(x,t,{get:()=>A[t],enumerable:!(r=Sc(A,t))||r.enumerable});return x},Ic=(x,A,e)=>(e=x!=null?_c($c(x)):{},Nc(A||!x||!x.__esModule?Ki(e,"default",{value:x,enumerable:!0}):e,x)),a0=(x,A,e)=>Tc(x,typeof A!="symbol"?A+"":A,e),Mc=qc({"mdn_com_wasm/bin/mdnCOM.js"(x,A){"use strict";var e=(()=>{var r=globalThis.document?.currentScript?.src;return async function(t={}){var i;(function(){function c(A0){A0=A0.split("-")[0];for(var E0=A0.split(".").slice(0,3);E0.length<3;)E0.push("00");return E0=E0.map((D0,X0,K0)=>D0.padStart(2,"0")),E0.join("")}var C=A0=>[A0/1e4|0,(A0/100|0)%100,A0%100].join("."),h=2147483647,P=typeof process<"u"&&process.versions?.node?c(process.versions.node):h;if(P<180300)throw new Error(`This emscripten-generated code requires node v${C(180300)} (detected v${C(P)})`);var N=typeof navigator<"u"&&navigator.userAgent;if(N){var Q=N.includes("Safari/")&&!N.includes("Chrome/")&&N.match(/Version\/(\d+\.?\d*\.?\d*)/)?c(N.match(/Version\/(\d+\.?\d*\.?\d*)/)[1]):h;if(Q<15e4)throw new Error(`This emscripten-generated code requires Safari v${C(15e4)} (detected v${Q})`);var X=N.match(/Firefox\/(\d+(?:\.\d+)?)/)?parseFloat(N.match(/Firefox\/(\d+(?:\.\d+)?)/)[1]):h;if(X<79)throw new Error(`This emscripten-generated code requires Firefox v79 (detected v${X})`);var x0=N.match(/Chrome\/(\d+(?:\.\d+)?)/)?parseFloat(N.match(/Chrome\/(\d+(?:\.\d+)?)/)[1]):h;if(x0<85)throw new Error(`This emscripten-generated code requires Chrome v85 (detected v${x0})`)}})();var n=t,F=!!globalThis.window,v=!!globalThis.WorkerGlobalScope,E=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer",u=!F&&!E&&!v,p=[],j="./this.program",w=(c,C)=>{throw C};typeof __filename<"u"?r=__filename:v&&(r=self.location.href);var g="",S,T;if(E){if(!(globalThis.process?.versions?.node&&globalThis.process?.type!="renderer"))throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");var q=fo("fs");g=__dirname+"/",T=C=>{C=O(C)?new URL(C):C;var h=q.readFileSync(C);return y(Buffer.isBuffer(h)),h},S=async(C,h=!0)=>{C=O(C)?new URL(C):C;var P=q.readFileSync(C,h?void 0:"utf8");return y(h?Buffer.isBuffer(P):typeof P=="string"),P},process.argv.length>1&&(j=process.argv[1].replace(/\\/g,"/")),p=process.argv.slice(2),w=(C,h)=>{throw process.exitCode=C,h}}else if(!u)if(F||v){try{g=new URL(".",r).href}catch{}if(!(globalThis.window||globalThis.WorkerGlobalScope))throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");v&&(T=c=>{var C=new XMLHttpRequest;return C.open("GET",c,!1),C.responseType="arraybuffer",C.send(null),new Uint8Array(C.response)}),S=async c=>{if(O(c))return new Promise((h,P)=>{var N=new XMLHttpRequest;N.open("GET",c,!0),N.responseType="arraybuffer",N.onload=()=>{if(N.status==200||N.status==0&&N.response){h(N.response);return}P(N.status)},N.onerror=P,N.send(null)});var C=await fetch(c,{credentials:"same-origin"});if(C.ok)return C.arrayBuffer();throw new Error(C.status+" : "+C.url)}}else throw new Error("environment detection error");var L=console.log.bind(console),R=console.error.bind(console);y(!u,"shell environment detected but not enabled at build time (add `shell` to `-sENVIRONMENT` to enable)");var n0;globalThis.WebAssembly||R("no native wasm support detected");var M=!1;function y(c,C){c||vx("Assertion failed"+(C?": "+C:""))}var O=c=>c.startsWith("file://");function Y(){var c=ti();y((c&3)==0),c==0&&(c+=4),g0[c>>2]=34821223,g0[c+4>>2]=2310721022,g0[0]=1668509029}function W(){if(!M){var c=ti();c==0&&(c+=4);var C=g0[c>>2],h=g0[c+4>>2];(C!=34821223||h!=2310721022)&&vx(`Stack overflow! Stack cookie has been overwritten at ${Cx(c)}, expected hex dwords 0x89BACDFE and 0x2135467, but received ${Cx(h)} ${Cx(C)}`),g0[0]!=1668509029&&vx("Runtime error: The application has corrupted its heap memory area (address zero)!")}}class H{}class J extends H{}var s0=!0;(()=>{var c=new Int16Array(1),C=new Int8Array(c.buffer);c[0]=25459,(C[0]!==115||C[1]!==99)&&vx("Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)")})();function r0(c){Object.getOwnPropertyDescriptor(n,c)||Object.defineProperty(n,c,{configurable:!0,set(){vx(`Attempt to set \`Module.${c}\` after it has already been processed. This can happen, for example, when code is injected via '--post-js' rather than '--pre-js'`)}})}function Z(c){return()=>y(!1,`call to '${c}' via reference taken before Wasm module initialization`)}function i0(c){Object.getOwnPropertyDescriptor(n,c)&&vx(`\`Module.${c}\` was supplied but \`${c}\` not included in INCOMING_MODULE_JS_API`)}function U(c){return c==="FS_createPath"||c==="FS_createDataFile"||c==="FS_createPreloadedFile"||c==="FS_preloadFile"||c==="FS_unlink"||c==="addRunDependency"||c==="FS_createLazyFile"||c==="FS_createDevice"||c==="removeRunDependency"}function v0(c){f0(c)}function f0(c){Object.getOwnPropertyDescriptor(n,c)||Object.defineProperty(n,c,{configurable:!0,get(){var C=`'${c}' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the Emscripten FAQ)`;U(c)&&(C+=". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"),vx(C)}})}function B0(c){for(var C=0,h=c.length,P=new Uint8Array(h),N;C<h;++C)N=c.charCodeAt(C),P[C]=~N>>8&N;return P}var d0,T0,L0=!1;function cx(){var c=Rt.buffer;Vx=new Int8Array(c),$A=new Int16Array(c),n.HEAPU8=jx=new Uint8Array(c),sx=new Uint16Array(c),PA=new Int32Array(c),g0=new Uint32Array(c),cr=new Float32Array(c),de=new Float64Array(c),lr=new BigInt64Array(c),nA=new BigUint64Array(c)}y(globalThis.Int32Array&&globalThis.Float64Array&&Int32Array.prototype.subarray&&Int32Array.prototype.set,"JS engine does not provide full typed array support");function Kx(){if(n.preRun)for(typeof n.preRun=="function"&&(n.preRun=[n.preRun]);n.preRun.length;)Xr(n.preRun.shift());r0("preRun"),CA(c0)}function _A(){y(!L0),L0=!0,W(),hr.__wasm_call_ctors()}function SA(){if(W(),n.postRun)for(typeof n.postRun=="function"&&(n.postRun=[n.postRun]);n.postRun.length;)TA(n.postRun.shift());r0("postRun"),CA(iA)}function vx(c){n.onAbort?.(c),c=`Aborted(${c})`,R(c),M=!0;var C=new WebAssembly.RuntimeError(c);throw T0?.(C),C}function ex(){vx("Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -sFORCE_FILESYSTEM")}var rA={init:ex,createDataFile:ex,createPreloadedFile:ex,createLazyFile:ex,open:ex,mkdev:ex,registerDevice:ex,analyzePath:ex,ErrnoError:ex};function H0(c,C){return(...h)=>{y(L0,`native function \`${c}\` called before runtime initialization`);var P=hr[c];return y(P,`exported native function \`${c}\` not found`),y(h.length<=C,`native function \`${c}\` called with ${h.length} args but expects ${C}`),P(...h)}}var R0;function J0(){return B0(`\0asm\0\0\0\xCF\`\x7F\0\`\x7F\x7F\0\`\x7F\x7F\`\x7F\x7F\x7F\x7F\`\x7F\x7F\x7F\`\x7F\x7F\x7F\0\`\0\0\`\x7F\x7F\x7F\x7F\0\`\0\x7F\`\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F\x7F\x7F\x7F\0\`\x7F\x7F\x7F\x7F\x7F\x7F\0\`\x7F~\x7F~\`
1667
1654
  \x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\0\`\x7F\x7F\x7F\x7F\x7F\x7F\`\x7F|\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F\x7F\x7F\x7F|\`\r\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\0\`\b\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\0\`\x7F\x7F\x7F~~\0\`\x7F~\x7F\x7F\x7F\`\x07\x7F\x7F\x7F\x7F\x7F\x7F\x7F\0\`\x7F\x7F\x7F\x7F\x7F\x7F\x7F\`|\x7F|\`\x07\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\`~\x7F\x7F\xA7\x07env_emval_new_cstring\0env_emval_get_property\0env\r_emval_decref\0\0env_emval_create_invoker\0env\r_emval_incref\0\0env\r_emval_invoke\0env_emval_run_destructors\0\0env_emval_get_module_property\0env_embind_register_value_object\0\venv#_embind_register_value_object_field\0\renv_embind_finalize_value_object\0\0env_embind_register_class\0env"_embind_register_class_constructor\0\venv_embind_register_class_property\0\renv_embind_register_function\0env\v__cxa_throw\0env_embind_register_void\0env_embind_register_bool\0\x07env_embind_register_integer\0
1668
1655
  env_embind_register_bigint\0env_embind_register_float\0env\x1B_embind_register_std_string\0env_embind_register_std_wstring\0env_embind_register_emval\0\0env_embind_register_memory_view\0wasi_snapshot_preview1
1669
1656
  random_get\0env _abort_js\0wasi_snapshot_preview1\bfd_write\0 wasi_snapshot_preview1\bfd_close\0wasi_snapshot_preview1\x07fd_seek\0envemscripten_resize_heap\0\xB6\xB4 \0\b\0\0\0\b\b\0\b\0 \0\0\b\0\b\0\0 \x07  \x07
@@ -2311,28 +2298,54 @@ jv.\xC9\xC2\x81\x85,r\x92\xA1\xE8\xBF\xA2Kf\xA8p\x8BK\xC2\xA3Ql\xC7\xE8\x92\xD
2311
2298
  \x07\0\0 \v\0\0 \v\0\0\v\0\0\0\0\0A\x91\x9C\v!\0\0\0\0\0\0\0\0\0\v\r\0\r\0\0\0 \0\0\0 \0\0\0\0A\xCB\x9C\v\f\0A\xD7\x9C\v\0\0\0\0\0\0\0\0 \f\0\0\0\0\0\f\0\0\f\0A\x85\x9D\v\0A\x91\x9D\v\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0A\xBF\x9D\v\0A\xCB\x9D\v\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0A\x82\x9E\v\0\0\0\0\0\0\0\0\0 \0A\xB3\x9E\v\0A\xBF\x9E\v\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0A\xED\x9E\v\0A\xF9\x9E\v\xAF\b\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\x000123456789ABCDEF\x90\\\0\0\fR\0\0\xB0O\0\0\xF8R\0\0N10__cxxabiv116__shim_type_infoE\0\0\0\0\fR\0\0\xE0O\0\0\xA4O\0\0N10__cxxabiv117__class_type_infoE\0\0\0\fR\0\0P\0\0\xA4O\0\0N10__cxxabiv117__pbase_type_infoE\0\0\0\fR\0\0@P\0\0P\0\0N10__cxxabiv119__pointer_type_infoE\0\fR\0\0pP\0\0\xA4O\0\0N10__cxxabiv120__function_type_infoE\0\0\0\0\fR\0\0\xA4P\0\0P\0\0N10__cxxabiv129__pointer_to_member_type_infoE\0\0\0\0\0\0\0\xF0P\0\0G\0\0\0H\0\0\0I\0\0\0J\0\0\0K\0\0\0\fR\0\0\xFCP\0\0\xA4O\0\0N10__cxxabiv123__fundamental_type_infoE\0\xDCP\0\0,Q\0\0v\0Dn\0\0\0\0\xDCP\0\0<Q\0\0b\0\0\0\xDCP\0\0HQ\0\0c\0\0\0\xDCP\0\0TQ\0\0h\0\0\0\xDCP\0\0\`Q\0\0a\0\0\0\xDCP\0\0lQ\0\0s\0\0\0\xDCP\0\0xQ\0\0t\0\0\0\xDCP\0\0\x84Q\0\0i\0\0\0\xDCP\0\0\x90Q\0\0j\0\0\0\xDCP\0\0\x9CQ\0\0l\0\0\0\xDCP\0\0\xA8Q\0\0m\0\0\0\xDCP\0\0\xB4Q\0\0x\0\0\0\xDCP\0\0\xC0Q\0\0y\0\0\0\xDCP\0\0\xCCQ\0\0f\0\0\0\xDCP\0\0\xD8Q\0\0d\0\0\0\0\0\0\0\xD4O\0\0G\0\0\0L\0\0\0I\0\0\0J\0\0\0M\0\0\0N\0\0\0O\0\0\0P\0\0\0\0\0\0\0,R\0\0G\0\0\0Q\0\0\0I\0\0\0J\0\0\0M\0\0\0R\0\0\0S\0\0\0T\0\0\0\fR\0\x008R\0\0\xD4O\0\0N10__cxxabiv120__si_class_type_infoE\0\0\0\0\0\0\0\x004P\0\0G\0\0\0U\0\0\0I\0\0\0J\0\0\0V\0\0\0\xE4Q\0\0\x84R\0\0St9exception\0\0\0\0\0\0\0\0\xA8R\0\x009\0\0\0W\0\0\0X\0\0\0\fR\0\0\xB4R\0\0|R\0\0St11logic_error\0\0\0\0\0\xD8R\0\x009\0\0\0Y\0\0\0X\0\0\0\fR\0\0\xE4R\0\0\xA8R\0\0St12length_error\0\0\0\0\xE4Q\0\0\0S\0\0St9type_info\0\0\0\0\0\0\xA0N\0\xEB\xA7~ u\x86\xFA\0\xB9,\xFD\xB7\x8Az\xBC\0\xCC\xA2\0=I\xD7\0\b\0\x93\b\x8F*_\xB7\xFAX\xD9\xFD\xCA\xBD\xE1\xCD\xDC@x\0}ga\xEC\0\xE5
2312
2299
  \xD4\0\xCC>Ov\x98\xAF\0\0D\0\xAE\0\xAE\`\0\xFAw!\xEB+\0\`A\x92\0\xA9\xA3nN\0A\xD8\xA7\v\f\0\0\0\0\0\0\0\0*\0A\xF8\xA7\v'9H\0A\x8E\xA8\v\x92\0A\xA2\xA8\v\x8D8R\`S\0\0\xCA\0\0\0\0\0\0\0\0\xBB\xDB\xEB\x07+\x07;\x07P\x07Success\0Illegal byte sequence\0Domain error\0Result not representable\0Not a tty\0Permission denied\0Operation not permitted\0No such file or directory\0No such process\0File exists\0Value too large for defined data type\0No space left on device\0Out of memory\0Resource busy\0Interrupted system call\0Resource temporarily unavailable\0Invalid seek\0Cross-device link\0Read-only file system\0Directory not empty\0Connection reset by peer\0Operation timed out\0Connection refused\0Host is down\0Host is unreachable\0Address in use\0Broken pipe\0I/O error\0No such device or address\0Block device required\0No such device\0Not a directory\0Is a directory\0Text file busy\0Exec format error\0Invalid argument\0Argument list too long\0Symbolic link loop\0Filename too long\0Too many open files in system\0No file descriptors available\0Bad file descriptor\0No child process\0Bad address\0File too large\0Too many links\0No locks available\0Resource deadlock would occur\0State not recoverable\0Owner died\0Operation canceled\0Function not implemented\0No message of desired type\0Identifier removed\0Device not a stream\0No data available\0Device timeout\0Out of streams resources\0Link has been severed\0Protocol error\0Bad message\0File descriptor in bad state\0Not a socket\0Destination address required\0Message too large\0Protocol wrong type for socket\0Protocol not available\0Protocol not supported\0Socket type not supported\0Not supported\0Protocol family not supported\0Address family not supported by protocol\0Address not available\0Network is down\0Network unreachable\0Connection reset by network\0Connection aborted\0No buffer space available\0Socket is connected\0Socket not connected\0Cannot send after socket shutdown\0Operation already in progress\0Operation in progress\0Stale file handle\0Remote I/O error\0Quota exceeded\0No medium found\0Wrong medium type\0Multihop attempted\0Required key not available\0Key has expired\0Key has been revoked\0Key was rejected by service\0A\xB0\xB7\vI\0\0\0 F\0\0 K\0\0\0\0\0\0\0\0\0\xA0J\0\0\xA0K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 L\0\0\0\0\0\0\0\0\0\x07\0\0\0\0 \0\0\0\0\0\0\0A\x84\xB8\v@\0A\x9C\xB8\vA\0\0\0B\0\0\0u\0\0\0\0A\xB4\xB8\v\0A\xC4\xB8\v\xFF\xFF\xFF\xFF
2313
2300
  \0A\x88\xB9\v \xF8[\0\x008y\0\0\0A\x9C\xB9\vE\0A\xB4\xB9\v
2314
- A\0\0\0F\0\0\0Xy\0A\xCC\xB9\v\0A\xDC\xB9\v\b\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0A\xA0\xBA\v\x07\x90\\\0\0P{`)}function ex(E){return E}async function Fe(E){return E}async function ve(E,C){try{var m=await Fe(E),S=await WebAssembly.instantiate(m,C);return S}catch(T){O(`failed to asynchronously prepare wasm: ${T}`),L(E)&&O(`warning: Loading from a file URI (${E}) is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing`),rx(T)}}async function Ee(E,C,m){return ve(C,m)}function E0(){var E={env:Hn,wasi_snapshot_preview1:Hn};return E}async function Be(){function E(X,x0){return Jr=X.exports,wo(Jr),nx(),Jr}var C=t;function m(X){return h(t===C,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),C=null,E(X.instance)}var S=E0();if(t.instantiateWasm)return new Promise((X,x0)=>{try{t.instantiateWasm(S,(A0,f0)=>{X(E(A0,f0))})}catch(A0){O(`Module.instantiateWasm callback failed with error: ${A0}`),x0(A0)}});L0??(L0=G0());var T=await Ee(t0,L0,S),Q=m(T);return Q}class zx{constructor(C){c0(this,"name","ExitStatus"),this.message=`Program terminated with exit(${C})`,this.status=C}}var DA,dA,Tr,Mx,Nr,Ar,xx,g0,Jx,Cx,eA=E=>{for(;E.length>0;)E.shift()(t)},Vx=[],uA=E=>Vx.push(E),B0=[],fe=E=>B0.push(E),Cr=!0;function ox(E){return h(typeof E=="number",`ptrToString expects a number, got ${typeof E}`),E>>>=0,"0x"+E.toString(16).padStart(8,"0")}var Px=E=>{Px.shown||(Px.shown={}),Px.shown[E]||(Px.shown[E]=1,D&&(E="warning: "+E),O(E))};class TA{constructor(C){this.excPtr=C,this.ptr=C-24}set_type(C){g0[this.ptr+4>>2]=C}get_type(){return g0[this.ptr+4>>2]}set_destructor(C){g0[this.ptr+8>>2]=C}get_destructor(){return g0[this.ptr+8>>2]}set_caught(C){C=C?1:0,Mx[this.ptr+12]=C}get_caught(){return Mx[this.ptr+12]!=0}set_rethrown(C){C=C?1:0,Mx[this.ptr+13]=C}get_rethrown(){return Mx[this.ptr+13]!=0}init(C,m){this.set_adjusted_ptr(0),this.set_type(C),this.set_destructor(m)}set_adjusted_ptr(C){g0[this.ptr+16>>2]=C}get_adjusted_ptr(){return g0[this.ptr+16>>2]}}var lr=0,NA=(E,C,m)=>{var S=new TA(E);S.init(C,m),lr++,h(!1,"Exception thrown, but exception catching is not enabled. Compile with -sNO_DISABLE_EXCEPTION_CATCHING or -sEXCEPTION_CATCHING_ALLOWED=[..] to catch.")},Ce=()=>rx("native code called abort()"),X0={},bA=E=>{for(;E.length;){var C=E.pop(),m=E.pop();m(C)}};function e0(E){return this.fromWireType(g0[E>>2])}var pA={},Lx={},Wx={},S0=class extends Error{constructor(C){super(C),this.name="InternalError"}},y0=E=>{throw new S0(E)},tA=(E,C,m)=>{E.forEach(x0=>Wx[x0]=C);function S(x0){var A0=m(x0);A0.length!==E.length&&y0("Mismatched type converter count");for(var f0=0;f0<E.length;++f0)hx(E[f0],A0[f0])}var T=new Array(C.length),Q=[],X=0;for(let[x0,A0]of C.entries())Lx.hasOwnProperty(A0)?T[x0]=Lx[A0]:(Q.push(A0),pA.hasOwnProperty(A0)||(pA[A0]=[]),pA[A0].push(()=>{T[x0]=Lx[A0],++X,X===Q.length&&S(T)}));Q.length===0&&S(T)},cr=E=>{var C=X0[E];delete X0[E];var m=C.rawConstructor,S=C.rawDestructor,T=C.fields,Q=T.map(X=>X.getterReturnType).concat(T.map(X=>X.setterArgumentType));tA([E],Q,X=>{var x0={};for(var[A0,f0]of T.entries()){let u0=X[A0],K0=f0.getter,H0=f0.getterContext,J0=X[A0+T.length],kx=f0.setter,Dx=f0.setterContext;x0[f0.fieldName]={read:Yx=>u0.fromWireType(K0(H0,Yx)),write:(Yx,gA)=>{var aA=[];kx(Dx,Yx,J0.toWireType(aA,gA)),bA(aA)},optional:u0.optional}}return[{name:C.name,fromWireType:u0=>{var K0={};for(var H0 in x0)K0[H0]=x0[H0].read(u0);return S(u0),K0},toWireType:(u0,K0)=>{for(var H0 in x0)if(!(H0 in K0)&&!x0[H0].optional)throw new TypeError(`Missing field: "${H0}"`);var J0=m();for(H0 in x0)x0[H0].write(J0,K0[H0]);return u0!==null&&u0.push(S,J0),J0},readValueFromPointer:e0,destructorFunction:S}]})},Fx=E=>{for(var C="";;){var m=Cx[E++];if(!m)return C;C+=String.fromCharCode(m)}},ix=class extends Error{constructor(C){super(C),this.name="BindingError"}},p0=E=>{throw new ix(E)};function Dr(E,C,m={}){var S=C.name;if(E||p0(`type "${S}" must have a positive integer typeid pointer`),Lx.hasOwnProperty(E)){if(m.ignoreDuplicateRegistrations)return;p0(`Cannot register type '${S}' twice`)}if(Lx[E]=C,delete Wx[E],pA.hasOwnProperty(E)){var T=pA[E];delete pA[E],T.forEach(Q=>Q())}}function hx(E,C,m={}){return Dr(E,C,m)}var rr=(E,C,m)=>{switch(C){case 1:return m?S=>Mx[S]:S=>Cx[S];case 2:return m?S=>DA[S>>1]:S=>xx[S>>1];case 4:return m?S=>dA[S>>2]:S=>g0[S>>2];case 8:return m?S=>Tr[S>>3]:S=>Jx[S>>3];default:throw new TypeError(`invalid integer width (${C}): ${E}`)}},nA=E=>{if(E===null)return"null";var C=typeof E;return C==="object"||C==="array"||C==="function"?E.toString():""+E},jA=(E,C,m,S)=>{if(C<m||C>S)throw new TypeError(`Passing a number "${nA(C)}" from JS side to C/C++ side to an argument of type "${E}", which is outside the valid range [${m}, ${S}]!`)},le=(E,C,m,S,T)=>{C=Fx(C);let Q=S===0n,X=x0=>x0;if(Q){let x0=m*8;X=A0=>BigInt.asUintN(x0,A0),T=X(T)}hx(E,{name:C,fromWireType:X,toWireType:(x0,A0)=>{if(typeof A0=="number")A0=BigInt(A0);else if(typeof A0!="bigint")throw new TypeError(`Cannot convert "${nA(A0)}" to ${C}`);return jA(C,A0,S,T),A0},readValueFromPointer:rr(C,m,!Q),destructorFunction:null})},a=(E,C,m,S)=>{C=Fx(C),hx(E,{name:C,fromWireType:function(T){return!!T},toWireType:function(T,Q){return Q?m:S},readValueFromPointer:function(T){return this.fromWireType(Cx[T])},destructorFunction:null})},k0=E=>({count:E.count,deleteScheduled:E.deleteScheduled,preservePointerOnDelete:E.preservePointerOnDelete,ptr:E.ptr,ptrType:E.ptrType,smartPtr:E.smartPtr,smartPtrType:E.smartPtrType}),dr=E=>{function C(m){return m.$$.ptrType.registeredClass.name}p0(C(E)+" instance already deleted")},mA=!1,iA=E=>{},ce=E=>{E.smartPtr?E.smartPtrType.rawDestructor(E.smartPtr):E.ptrType.registeredClass.rawDestructor(E.ptr)},er=E=>{E.count.value-=1;var C=E.count.value===0;C&&ce(E)},Ir=(E,C,m)=>{if(C===m)return E;if(m.baseClass===void 0)return null;var S=Ir(E,C,m.baseClass);return S===null?null:m.downcast(S)},Mr={},De={},de=(E,C)=>{for(C===void 0&&p0("ptr should not be undefined");E.baseClass;)C=E.upcast(C),E=E.baseClass;return C},ue=(E,C)=>(C=de(E,C),De[C]),tr=(E,C)=>{(!C.ptrType||!C.ptr)&&y0("makeClassHandle requires ptr and ptrType");var m=!!C.smartPtrType,S=!!C.smartPtr;return m!==S&&y0("Both smartPtrType and smartPtr must be specified"),C.count={value:1},IA(Object.create(E,{$$:{value:C,writable:!0}}))};function Lr(E){var C=this.getPointee(E);if(!C)return this.destructor(E),null;var m=ue(this.registeredClass,C);if(m!==void 0){if(m.$$.count.value===0)return m.$$.ptr=C,m.$$.smartPtr=E,m.clone();var S=m.clone();return this.destructor(E),S}function T(){return this.isSmartPointer?tr(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:C,smartPtrType:this,smartPtr:E}):tr(this.registeredClass.instancePrototype,{ptrType:this,ptr:E})}var Q=this.registeredClass.getActualType(C),X=Mr[Q];if(!X)return T.call(this);var x0;this.isConst?x0=X.constPointerType:x0=X.pointerType;var A0=Ir(C,this.registeredClass,x0.registeredClass);return A0===null?T.call(this):this.isSmartPointer?tr(x0.registeredClass.instancePrototype,{ptrType:x0,ptr:A0,smartPtrType:this,smartPtr:E}):tr(x0.registeredClass.instancePrototype,{ptrType:x0,ptr:A0})}var IA=E=>globalThis.FinalizationRegistry?(mA=new FinalizationRegistry(C=>{console.warn(C.leakWarning),er(C.$$)}),IA=C=>{var m=C.$$,S=!!m.smartPtr;if(S){var T={$$:m},Q=m.ptrType.registeredClass,X=new Error(`Embind found a leaked C++ instance ${Q.name} <${ox(m.ptr)}>.
2301
+ A\0\0\0F\0\0\0Xy\0A\xCC\xB9\v\0A\xDC\xB9\v\b\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0A\xA0\xBA\v\x07\x90\\\0\0P{`)}function fx(c){return c}async function zr(c){return c}async function Kr(c,C){try{var h=await zr(c),P=await WebAssembly.instantiate(h,C);return P}catch(N){R(`failed to asynchronously prepare wasm: ${N}`),O(c)&&R(`warning: Loading from a file URI (${c}) is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing`),vx(N)}}async function Vr(c,C,h){return Kr(C,h)}function l0(){var c={env:Ys,wasi_snapshot_preview1:Ys};return c}async function Wr(){function c(X,x0){return hr=X.exports,Of(hr),cx(),hr}var C=n;function h(X){return y(n===C,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),C=null,c(X.instance)}var P=l0();if(n.instantiateWasm)return new Promise((X,x0)=>{try{n.instantiateWasm(P,(A0,E0)=>{X(c(A0,E0))})}catch(A0){R(`Module.instantiateWasm callback failed with error: ${A0}`),x0(A0)}});R0??(R0=J0());var N=await Vr(n0,R0,P),Q=h(N);return Q}class tA{constructor(C){a0(this,"name","ExitStatus"),this.message=`Program terminated with exit(${C})`,this.status=C}}var $A,PA,lr,Vx,cr,de,sx,g0,nA,jx,CA=c=>{for(;c.length>0;)c.shift()(n)},iA=[],TA=c=>iA.push(c),c0=[],Xr=c=>c0.push(c),Me=!0;function Cx(c){return y(typeof c=="number",`ptrToString expects a number, got ${typeof c}`),c>>>=0,"0x"+c.toString(16).padStart(8,"0")}var Gx=c=>{Gx.shown||(Gx.shown={}),Gx.shown[c]||(Gx.shown[c]=1,E&&(c="warning: "+c),R(c))};class WA{constructor(C){this.excPtr=C,this.ptr=C-24}set_type(C){g0[this.ptr+4>>2]=C}get_type(){return g0[this.ptr+4>>2]}set_destructor(C){g0[this.ptr+8>>2]=C}get_destructor(){return g0[this.ptr+8>>2]}set_caught(C){C=C?1:0,Vx[this.ptr+12]=C}get_caught(){return Vx[this.ptr+12]!=0}set_rethrown(C){C=C?1:0,Vx[this.ptr+13]=C}get_rethrown(){return Vx[this.ptr+13]!=0}init(C,h){this.set_adjusted_ptr(0),this.set_type(C),this.set_destructor(h)}set_adjusted_ptr(C){g0[this.ptr+16>>2]=C}get_adjusted_ptr(){return g0[this.ptr+16>>2]}}var Le=0,XA=(c,C,h)=>{var P=new WA(c);P.init(C,h),Le++,y(!1,"Exception thrown, but exception catching is not enabled. Compile with -sNO_DISABLE_EXCEPTION_CATCHING or -sEXCEPTION_CATCHING_ALLOWED=[..] to catch.")},Yr=()=>vx("native code called abort()"),rx={},qA=c=>{for(;c.length;){var C=c.pop(),h=c.pop();h(C)}};function t0(c){return this.fromWireType(g0[c>>2])}var NA={},Wx={},sA={},q0=class extends Error{constructor(C){super(C),this.name="InternalError"}},y0=c=>{throw new q0(c)},dA=(c,C,h)=>{c.forEach(x0=>sA[x0]=C);function P(x0){var A0=h(x0);A0.length!==c.length&&y0("Mismatched type converter count");for(var E0=0;E0<c.length;++E0)Tx(c[E0],A0[E0])}var N=new Array(C.length),Q=[],X=0;for(let[x0,A0]of C.entries())Wx.hasOwnProperty(A0)?N[x0]=Wx[A0]:(Q.push(A0),NA.hasOwnProperty(A0)||(NA[A0]=[]),NA[A0].push(()=>{N[x0]=Wx[A0],++X,X===Q.length&&P(N)}));Q.length===0&&P(N)},Oe=c=>{var C=rx[c];delete rx[c];var h=C.rawConstructor,P=C.rawDestructor,N=C.fields,Q=N.map(X=>X.getterReturnType).concat(N.map(X=>X.setterArgumentType));dA([c],Q,X=>{var x0={};for(var[A0,E0]of N.entries()){let D0=X[A0],X0=E0.getter,K0=E0.getterContext,Q0=X[A0+N.length],Ix=E0.setter,yx=E0.setterContext;x0[E0.fieldName]={read:oA=>D0.fromWireType(X0(K0,oA)),write:(oA,OA)=>{var bA=[];Ix(yx,oA,Q0.toWireType(bA,OA)),qA(bA)},optional:D0.optional}}return[{name:C.name,fromWireType:D0=>{var X0={};for(var K0 in x0)X0[K0]=x0[K0].read(D0);return P(D0),X0},toWireType:(D0,X0)=>{for(var K0 in x0)if(!(K0 in X0)&&!x0[K0].optional)throw new TypeError(`Missing field: "${K0}"`);var Q0=h();for(K0 in x0)x0[K0].write(Q0,X0[K0]);return D0!==null&&D0.push(P,Q0),Q0},readValueFromPointer:t0,destructorFunction:P}]})},dx=c=>{for(var C="";;){var h=jx[c++];if(!h)return C;C+=String.fromCharCode(h)}},Ex=class extends Error{constructor(C){super(C),this.name="BindingError"}},b0=c=>{throw new Ex(c)};function Re(c,C,h={}){var P=C.name;if(c||b0(`type "${P}" must have a positive integer typeid pointer`),Wx.hasOwnProperty(c)){if(h.ignoreDuplicateRegistrations)return;b0(`Cannot register type '${P}' twice`)}if(Wx[c]=C,delete sA[c],NA.hasOwnProperty(c)){var N=NA[c];delete NA[c],N.forEach(Q=>Q())}}function Tx(c,C,h={}){return Re(c,C,h)}var ue=(c,C,h)=>{switch(C){case 1:return h?P=>Vx[P]:P=>jx[P];case 2:return h?P=>$A[P>>1]:P=>sx[P>>1];case 4:return h?P=>PA[P>>2]:P=>g0[P>>2];case 8:return h?P=>lr[P>>3]:P=>nA[P>>3];default:throw new TypeError(`invalid integer width (${C}): ${c}`)}},uA=c=>{if(c===null)return"null";var C=typeof c;return C==="object"||C==="array"||C==="function"?c.toString():""+c},IA=(c,C,h,P)=>{if(C<h||C>P)throw new TypeError(`Passing a number "${uA(C)}" from JS side to C/C++ side to an argument of type "${c}", which is outside the valid range [${h}, ${P}]!`)},Qr=(c,C,h,P,N)=>{C=dx(C);let Q=P===0n,X=x0=>x0;if(Q){let x0=h*8;X=A0=>BigInt.asUintN(x0,A0),N=X(N)}Tx(c,{name:C,fromWireType:X,toWireType:(x0,A0)=>{if(typeof A0=="number")A0=BigInt(A0);else if(typeof A0!="bigint")throw new TypeError(`Cannot convert "${uA(A0)}" to ${C}`);return IA(C,A0,P,N),A0},readValueFromPointer:ue(C,h,!Q),destructorFunction:null})},o=(c,C,h,P)=>{C=dx(C),Tx(c,{name:C,fromWireType:function(N){return!!N},toWireType:function(N,Q){return Q?h:P},readValueFromPointer:function(N){return this.fromWireType(jx[N])},destructorFunction:null})},k0=c=>({count:c.count,deleteScheduled:c.deleteScheduled,preservePointerOnDelete:c.preservePointerOnDelete,ptr:c.ptr,ptrType:c.ptrType,smartPtr:c.smartPtr,smartPtrType:c.smartPtrType}),Ge=c=>{function C(h){return h.$$.ptrType.registeredClass.name}b0(C(c)+" instance already deleted")},MA=!1,DA=c=>{},Zr=c=>{c.smartPtr?c.smartPtrType.rawDestructor(c.smartPtr):c.ptrType.registeredClass.rawDestructor(c.ptr)},De=c=>{c.count.value-=1;var C=c.count.value===0;C&&Zr(c)},Er=(c,C,h)=>{if(C===h)return c;if(h.baseClass===void 0)return null;var P=Er(c,C,h.baseClass);return P===null?null:h.downcast(P)},Br={},xt={},At=(c,C)=>{for(C===void 0&&b0("ptr should not be undefined");c.baseClass;)C=c.upcast(C),c=c.baseClass;return C},et=(c,C)=>(C=At(c,C),xt[C]),pe=(c,C)=>{(!C.ptrType||!C.ptr)&&y0("makeClassHandle requires ptr and ptrType");var h=!!C.smartPtrType,P=!!C.smartPtr;return h!==P&&y0("Both smartPtrType and smartPtr must be specified"),C.count={value:1},YA(Object.create(c,{$$:{value:C,writable:!0}}))};function Cr(c){var C=this.getPointee(c);if(!C)return this.destructor(c),null;var h=et(this.registeredClass,C);if(h!==void 0){if(h.$$.count.value===0)return h.$$.ptr=C,h.$$.smartPtr=c,h.clone();var P=h.clone();return this.destructor(c),P}function N(){return this.isSmartPointer?pe(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:C,smartPtrType:this,smartPtr:c}):pe(this.registeredClass.instancePrototype,{ptrType:this,ptr:c})}var Q=this.registeredClass.getActualType(C),X=Br[Q];if(!X)return N.call(this);var x0;this.isConst?x0=X.constPointerType:x0=X.pointerType;var A0=Er(C,this.registeredClass,x0.registeredClass);return A0===null?N.call(this):this.isSmartPointer?pe(x0.registeredClass.instancePrototype,{ptrType:x0,ptr:A0,smartPtrType:this,smartPtr:c}):pe(x0.registeredClass.instancePrototype,{ptrType:x0,ptr:A0})}var YA=c=>globalThis.FinalizationRegistry?(MA=new FinalizationRegistry(C=>{console.warn(C.leakWarning),De(C.$$)}),YA=C=>{var h=C.$$,P=!!h.smartPtr;if(P){var N={$$:h},Q=h.ptrType.registeredClass,X=new Error(`Embind found a leaked C++ instance ${Q.name} <${Cx(h.ptr)}>.
2315
2302
  We'll free it automatically in this case, but this functionality is not reliable across various environments.
2316
2303
  Make sure to invoke .delete() manually once you're done with the instance instead.
2317
- Originally allocated`);"captureStackTrace"in Error&&Error.captureStackTrace(X,Lr),T.leakWarning=X.stack.replace(/^Error: /,""),mA.register(C,T,C)}return C},iA=C=>mA.unregister(C),IA(E)):(IA=C=>C,E),nr=[],be=()=>{for(;nr.length;){var E=nr.pop();E.$$.deleteScheduled=!1,E.delete()}},Rr,pe=()=>{let E=MA.prototype;Object.assign(E,{isAliasOf(m){if(!(this instanceof MA)||!(m instanceof MA))return!1;var S=this.$$.ptrType.registeredClass,T=this.$$.ptr;m.$$=m.$$;for(var Q=m.$$.ptrType.registeredClass,X=m.$$.ptr;S.baseClass;)T=S.upcast(T),S=S.baseClass;for(;Q.baseClass;)X=Q.upcast(X),Q=Q.baseClass;return S===Q&&T===X},clone(){if(this.$$.ptr||dr(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var m=IA(Object.create(Object.getPrototypeOf(this),{$$:{value:k0(this.$$)}}));return m.$$.count.value+=1,m.$$.deleteScheduled=!1,m},delete(){this.$$.ptr||dr(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&p0("Object already scheduled for deletion"),iA(this),er(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||dr(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&p0("Object already scheduled for deletion"),nr.push(this),nr.length===1&&Rr&&Rr(be),this.$$.deleteScheduled=!0,this}});let C=Symbol.dispose;C&&(E[C]=E.delete)};function MA(){}var ur=(E,C)=>Object.defineProperty(C,"name",{value:E}),Or=(E,C,m)=>{if(E[C].overloadTable===void 0){var S=E[C];E[C]=function(...T){return E[C].overloadTable.hasOwnProperty(T.length)||p0(`Function '${m}' called with an invalid number of arguments (${T.length}) - expects one of (${E[C].overloadTable})!`),E[C].overloadTable[T.length].apply(this,T)},E[C].overloadTable=[],E[C].overloadTable[S.argCount]=S}},Gr=(E,C,m)=>{t.hasOwnProperty(E)?((m===void 0||t[E].overloadTable!==void 0&&t[E].overloadTable[m]!==void 0)&&p0(`Cannot register public name '${E}' twice`),Or(t,E,E),t[E].overloadTable.hasOwnProperty(m)&&p0(`Cannot register multiple overloads of a function with the same number of arguments (${m})!`),t[E].overloadTable[m]=C):(t[E]=C,t[E].argCount=m)},je=48,Ur=57,me=E=>{h(typeof E=="string"),E=E.replace(/[^a-zA-Z0-9_]/g,"$");var C=E.charCodeAt(0);return C>=je&&C<=Ur?`_${E}`:E};function he(E,C,m,S,T,Q,X,x0){this.name=E,this.constructor=C,this.instancePrototype=m,this.rawDestructor=S,this.baseClass=T,this.getActualType=Q,this.upcast=X,this.downcast=x0,this.pureVirtualFunctions=[]}var ir=(E,C,m)=>{for(;C!==m;)C.upcast||p0(`Expected null or instance of ${m.name}, got an instance of ${C.name}`),E=C.upcast(E),C=C.baseClass;return E};function ge(E,C){if(C===null)return this.isReference&&p0(`null is not a valid ${this.name}`),0;C.$$||p0(`Cannot pass "${nA(C)}" as a ${this.name}`),C.$$.ptr||p0(`Cannot pass deleted object as a pointer of type ${this.name}`);var m=C.$$.ptrType.registeredClass,S=ir(C.$$.ptr,m,this.registeredClass);return S}function ye(E,C){var m;if(C===null)return this.isReference&&p0(`null is not a valid ${this.name}`),this.isSmartPointer?(m=this.rawConstructor(),E!==null&&E.push(this.rawDestructor,m),m):0;(!C||!C.$$)&&p0(`Cannot pass "${nA(C)}" as a ${this.name}`),C.$$.ptr||p0(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&C.$$.ptrType.isConst&&p0(`Cannot convert argument of type ${C.$$.smartPtrType?C.$$.smartPtrType.name:C.$$.ptrType.name} to parameter type ${this.name}`);var S=C.$$.ptrType.registeredClass;if(m=ir(C.$$.ptr,S,this.registeredClass),this.isSmartPointer)switch(C.$$.smartPtr===void 0&&p0("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:C.$$.smartPtrType===this?m=C.$$.smartPtr:p0(`Cannot convert argument of type ${C.$$.smartPtrType?C.$$.smartPtrType.name:C.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:m=C.$$.smartPtr;break;case 2:if(C.$$.smartPtrType===this)m=C.$$.smartPtr;else{var T=C.clone();m=this.rawShare(m,d0.toHandle(()=>T.delete())),E!==null&&E.push(this.rawDestructor,m)}break;default:p0("Unsupported sharing policy")}return m}function Hr(E,C){if(C===null)return this.isReference&&p0(`null is not a valid ${this.name}`),0;C.$$||p0(`Cannot pass "${nA(C)}" as a ${this.name}`),C.$$.ptr||p0(`Cannot pass deleted object as a pointer of type ${this.name}`),C.$$.ptrType.isConst&&p0(`Cannot convert argument of type ${C.$$.ptrType.name} to parameter type ${this.name}`);var m=C.$$.ptrType.registeredClass,S=ir(C.$$.ptr,m,this.registeredClass);return S}var Kr=()=>{Object.assign(LA.prototype,{getPointee(E){return this.rawGetPointee&&(E=this.rawGetPointee(E)),E},destructor(E){this.rawDestructor?.(E)},readValueFromPointer:e0,fromWireType:Lr})};function LA(E,C,m,S,T,Q,X,x0,A0,f0,u0){this.name=E,this.registeredClass=C,this.isReference=m,this.isConst=S,this.isSmartPointer=T,this.pointeeType=Q,this.sharingPolicy=X,this.rawGetPointee=x0,this.rawConstructor=A0,this.rawShare=f0,this.rawDestructor=u0,!T&&C.baseClass===void 0?S?(this.toWireType=ge,this.destructorFunction=null):(this.toWireType=Hr,this.destructorFunction=null):this.toWireType=ye}var zr=(E,C,m)=>{t.hasOwnProperty(E)||y0("Replacing nonexistent public symbol"),t[E].overloadTable!==void 0&&m!==void 0?t[E].overloadTable[m]=C:(t[E]=C,t[E].argCount=m)},RA=[],br=E=>{var C=RA[E];return C||(RA[E]=C=gr.get(E)),h(gr.get(E)==C,"table mirror is out of date"),C},gx=(E,C,m=!1)=>{h(!m,"async bindings are only supported with JSPI"),E=Fx(E);function S(){var Q=br(C);return Q}var T=S();return typeof T!="function"&&p0(`unknown function pointer with signature ${E}: ${C}`),T};class ke extends Error{}var hA=E=>{var C=On(E),m=Fx(C);return HA(C),m},OA=(E,C)=>{var m=[],S={};function T(Q){if(!S[Q]&&!Lx[Q]){if(Wx[Q]){Wx[Q].forEach(T);return}m.push(Q),S[Q]=!0}}throw C.forEach(T),new ke(`${E}: `+m.map(hA).join([", "]))},pr=(E,C,m,S,T,Q,X,x0,A0,f0,u0,K0,H0)=>{u0=Fx(u0),Q=gx(T,Q),x0&&(x0=gx(X,x0)),f0&&(f0=gx(A0,f0)),H0=gx(K0,H0);var J0=me(u0);Gr(J0,function(){OA(`Cannot construct ${u0} due to unbound types`,[S])}),tA([E,C,m],S?[S]:[],kx=>{var Dx;kx=kx[0];var Yx,gA;S?(Yx=kx.registeredClass,gA=Yx.instancePrototype):gA=MA.prototype;var aA=ur(u0,function(...Vt){if(Object.getPrototypeOf(this)!==Vr)throw new ix(`Use 'new' to construct ${u0}`);if(yA.constructor_body===void 0)throw new ix(`${u0} has no accessible constructor`);var Vn=yA.constructor_body[Vt.length];if(Vn===void 0)throw new ix(`Tried to invoke ctor of ${u0} with invalid number of parameters (${Vt.length}) - expected (${Object.keys(yA.constructor_body).toString()}) parameters instead!`);return Vn.apply(this,Vt)}),Vr=Object.create(gA,{constructor:{value:aA}});aA.prototype=Vr;var yA=new he(u0,aA,Vr,H0,Yx,Q,x0,f0);yA.baseClass&&((Dx=yA.baseClass).__derivedClasses??(Dx.__derivedClasses=[]),yA.baseClass.__derivedClasses.push(yA));var So=new LA(u0,yA,!0,!1,!1),zn=new LA(u0+"*",yA,!1,!1,!1),Jn=new LA(u0+" const*",yA,!1,!0,!1);return Mr[E]={pointerType:zn,constPointerType:Jn},zr(J0,aA),[So,zn,Jn]})},vx=(E,C)=>{for(var m=[],S=0;S<E;S++)m.push(g0[C+S*4>>2]);return m};function sr(E){for(var C=1;C<E.length;++C)if(E[C]!==null&&E[C].destructorFunction===void 0)return!0;return!1}function GA(E,C,m,S,T){if(E<C||E>m){var Q=C==m?C:`${C} to ${m}`;T(`function ${S} called with ${E} arguments, expected ${Q}`)}}function s(E,C,m,S){var T=sr(E),Q=E.length-2,X=[],x0=["fn"];C&&x0.push("thisWired");for(var A0=0;A0<Q;++A0)X.push(`arg${A0}`),x0.push(`arg${A0}Wired`);X=X.join(","),x0=x0.join(",");var f0=`return function (${X}) {
2318
- `;f0+=`checkArgCount(arguments.length, minArgs, maxArgs, humanName, throwBindingError);
2319
- `,T&&(f0+=`var destructors = [];
2320
- `);var u0=T?"destructors":"null",K0=["humanName","throwBindingError","invoker","fn","runDestructors","fromRetWire","toClassParamWire"];C&&(f0+=`var thisWired = toClassParamWire(${u0}, this);
2321
- `);for(var A0=0;A0<Q;++A0){var H0=`toArg${A0}Wire`;f0+=`var arg${A0}Wired = ${H0}(${u0}, arg${A0});
2322
- `,K0.push(H0)}if(f0+=(m||S?"var rv = ":"")+`invoker(${x0});
2323
- `,T)f0+=`runDestructors(destructors);
2324
- `;else for(var A0=C?1:2;A0<E.length;++A0){var J0=A0===1?"thisWired":"arg"+(A0-2)+"Wired";E[A0].destructorFunction!==null&&(f0+=`${J0}_dtor(${J0});
2325
- `,K0.push(`${J0}_dtor`))}return m&&(f0+=`var ret = fromRetWire(rv);
2304
+ Originally allocated`);"captureStackTrace"in Error&&Error.captureStackTrace(X,Cr),N.leakWarning=X.stack.replace(/^Error: /,""),MA.register(C,N,C)}return C},DA=C=>MA.unregister(C),YA(c)):(YA=C=>C,c),be=[],rt=()=>{for(;be.length;){var c=be.pop();c.$$.deleteScheduled=!1,c.delete()}},dr,tt=()=>{let c=QA.prototype;Object.assign(c,{isAliasOf(h){if(!(this instanceof QA)||!(h instanceof QA))return!1;var P=this.$$.ptrType.registeredClass,N=this.$$.ptr;h.$$=h.$$;for(var Q=h.$$.ptrType.registeredClass,X=h.$$.ptr;P.baseClass;)N=P.upcast(N),P=P.baseClass;for(;Q.baseClass;)X=Q.upcast(X),Q=Q.baseClass;return P===Q&&N===X},clone(){if(this.$$.ptr||Ge(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var h=YA(Object.create(Object.getPrototypeOf(this),{$$:{value:k0(this.$$)}}));return h.$$.count.value+=1,h.$$.deleteScheduled=!1,h},delete(){this.$$.ptr||Ge(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&b0("Object already scheduled for deletion"),DA(this),De(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Ge(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&b0("Object already scheduled for deletion"),be.push(this),be.length===1&&dr&&dr(rt),this.$$.deleteScheduled=!0,this}});let C=Symbol.dispose;C&&(c[C]=c.delete)};function QA(){}var Ue=(c,C)=>Object.defineProperty(C,"name",{value:c}),ur=(c,C,h)=>{if(c[C].overloadTable===void 0){var P=c[C];c[C]=function(...N){return c[C].overloadTable.hasOwnProperty(N.length)||b0(`Function '${h}' called with an invalid number of arguments (${N.length}) - expects one of (${c[C].overloadTable})!`),c[C].overloadTable[N.length].apply(this,N)},c[C].overloadTable=[],c[C].overloadTable[P.argCount]=P}},Dr=(c,C,h)=>{n.hasOwnProperty(c)?((h===void 0||n[c].overloadTable!==void 0&&n[c].overloadTable[h]!==void 0)&&b0(`Cannot register public name '${c}' twice`),ur(n,c,c),n[c].overloadTable.hasOwnProperty(h)&&b0(`Cannot register multiple overloads of a function with the same number of arguments (${h})!`),n[c].overloadTable[h]=C):(n[c]=C,n[c].argCount=h)},nt=48,pr=57,it=c=>{y(typeof c=="string"),c=c.replace(/[^a-zA-Z0-9_]/g,"$");var C=c.charCodeAt(0);return C>=nt&&C<=pr?`_${c}`:c};function st(c,C,h,P,N,Q,X,x0){this.name=c,this.constructor=C,this.instancePrototype=h,this.rawDestructor=P,this.baseClass=N,this.getActualType=Q,this.upcast=X,this.downcast=x0,this.pureVirtualFunctions=[]}var me=(c,C,h)=>{for(;C!==h;)C.upcast||b0(`Expected null or instance of ${h.name}, got an instance of ${C.name}`),c=C.upcast(c),C=C.baseClass;return c};function at(c,C){if(C===null)return this.isReference&&b0(`null is not a valid ${this.name}`),0;C.$$||b0(`Cannot pass "${uA(C)}" as a ${this.name}`),C.$$.ptr||b0(`Cannot pass deleted object as a pointer of type ${this.name}`);var h=C.$$.ptrType.registeredClass,P=me(C.$$.ptr,h,this.registeredClass);return P}function ot(c,C){var h;if(C===null)return this.isReference&&b0(`null is not a valid ${this.name}`),this.isSmartPointer?(h=this.rawConstructor(),c!==null&&c.push(this.rawDestructor,h),h):0;(!C||!C.$$)&&b0(`Cannot pass "${uA(C)}" as a ${this.name}`),C.$$.ptr||b0(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&C.$$.ptrType.isConst&&b0(`Cannot convert argument of type ${C.$$.smartPtrType?C.$$.smartPtrType.name:C.$$.ptrType.name} to parameter type ${this.name}`);var P=C.$$.ptrType.registeredClass;if(h=me(C.$$.ptr,P,this.registeredClass),this.isSmartPointer)switch(C.$$.smartPtr===void 0&&b0("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:C.$$.smartPtrType===this?h=C.$$.smartPtr:b0(`Cannot convert argument of type ${C.$$.smartPtrType?C.$$.smartPtrType.name:C.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:h=C.$$.smartPtr;break;case 2:if(C.$$.smartPtrType===this)h=C.$$.smartPtr;else{var N=C.clone();h=this.rawShare(h,u0.toHandle(()=>N.delete())),c!==null&&c.push(this.rawDestructor,h)}break;default:b0("Unsupported sharing policy")}return h}function br(c,C){if(C===null)return this.isReference&&b0(`null is not a valid ${this.name}`),0;C.$$||b0(`Cannot pass "${uA(C)}" as a ${this.name}`),C.$$.ptr||b0(`Cannot pass deleted object as a pointer of type ${this.name}`),C.$$.ptrType.isConst&&b0(`Cannot convert argument of type ${C.$$.ptrType.name} to parameter type ${this.name}`);var h=C.$$.ptrType.registeredClass,P=me(C.$$.ptr,h,this.registeredClass);return P}var mr=()=>{Object.assign(ZA.prototype,{getPointee(c){return this.rawGetPointee&&(c=this.rawGetPointee(c)),c},destructor(c){this.rawDestructor?.(c)},readValueFromPointer:t0,fromWireType:Cr})};function ZA(c,C,h,P,N,Q,X,x0,A0,E0,D0){this.name=c,this.registeredClass=C,this.isReference=h,this.isConst=P,this.isSmartPointer=N,this.pointeeType=Q,this.sharingPolicy=X,this.rawGetPointee=x0,this.rawConstructor=A0,this.rawShare=E0,this.rawDestructor=D0,!N&&C.baseClass===void 0?P?(this.toWireType=at,this.destructorFunction=null):(this.toWireType=br,this.destructorFunction=null):this.toWireType=ot}var jr=(c,C,h)=>{n.hasOwnProperty(c)||y0("Replacing nonexistent public symbol"),n[c].overloadTable!==void 0&&h!==void 0?n[c].overloadTable[h]=C:(n[c]=C,n[c].argCount=h)},xe=[],He=c=>{var C=xe[c];return C||(xe[c]=C=We.get(c)),y(We.get(c)==C,"table mirror is out of date"),C},qx=(c,C,h=!1)=>{y(!h,"async bindings are only supported with JSPI"),c=dx(c);function P(){var Q=He(C);return Q}var N=P();return typeof N!="function"&&b0(`unknown function pointer with signature ${c}: ${C}`),N};class Ft extends Error{}var LA=c=>{var C=Vs(c),h=dx(C);return te(C),h},Ae=(c,C)=>{var h=[],P={};function N(Q){if(!P[Q]&&!Wx[Q]){if(sA[Q]){sA[Q].forEach(N);return}h.push(Q),P[Q]=!0}}throw C.forEach(N),new Ft(`${c}: `+h.map(LA).join([", "]))},Je=(c,C,h,P,N,Q,X,x0,A0,E0,D0,X0,K0)=>{D0=dx(D0),Q=qx(N,Q),x0&&(x0=qx(X,x0)),E0&&(E0=qx(A0,E0)),K0=qx(X0,K0);var Q0=it(D0);Dr(Q0,function(){Ae(`Cannot construct ${D0} due to unbound types`,[P])}),dA([c,C,h],P?[P]:[],Ix=>{var yx;Ix=Ix[0];var oA,OA;P?(oA=Ix.registeredClass,OA=oA.instancePrototype):OA=QA.prototype;var bA=Ue(D0,function(...ni){if(Object.getPrototypeOf(this)!==gr)throw new Ex(`Use 'new' to construct ${D0}`);if(RA.constructor_body===void 0)throw new Ex(`${D0} has no accessible constructor`);var Aa=RA.constructor_body[ni.length];if(Aa===void 0)throw new Ex(`Tried to invoke ctor of ${D0} with invalid number of parameters (${ni.length}) - expected (${Object.keys(RA.constructor_body).toString()}) parameters instead!`);return Aa.apply(this,ni)}),gr=Object.create(OA,{constructor:{value:bA}});bA.prototype=gr;var RA=new st(D0,bA,gr,K0,oA,Q,x0,E0);RA.baseClass&&((yx=RA.baseClass).__derivedClasses??(yx.__derivedClasses=[]),RA.baseClass.__derivedClasses.push(RA));var Uf=new ZA(D0,RA,!0,!1,!1),Zs=new ZA(D0+"*",RA,!1,!1,!1),xa=new ZA(D0+" const*",RA,!1,!0,!1);return Br[c]={pointerType:Zs,constPointerType:xa},jr(Q0,bA),[Uf,Zs,xa]})},ux=(c,C)=>{for(var h=[],P=0;P<c;P++)h.push(g0[C+P*4>>2]);return h};function je(c){for(var C=1;C<c.length;++C)if(c[C]!==null&&c[C].destructorFunction===void 0)return!0;return!1}function ee(c,C,h,P,N){if(c<C||c>h){var Q=C==h?C:`${C} to ${h}`;N(`function ${P} called with ${c} arguments, expected ${Q}`)}}function a(c,C,h,P){var N=je(c),Q=c.length-2,X=[],x0=["fn"];C&&x0.push("thisWired");for(var A0=0;A0<Q;++A0)X.push(`arg${A0}`),x0.push(`arg${A0}Wired`);X=X.join(","),x0=x0.join(",");var E0=`return function (${X}) {
2305
+ `;E0+=`checkArgCount(arguments.length, minArgs, maxArgs, humanName, throwBindingError);
2306
+ `,N&&(E0+=`var destructors = [];
2307
+ `);var D0=N?"destructors":"null",X0=["humanName","throwBindingError","invoker","fn","runDestructors","fromRetWire","toClassParamWire"];C&&(E0+=`var thisWired = toClassParamWire(${D0}, this);
2308
+ `);for(var A0=0;A0<Q;++A0){var K0=`toArg${A0}Wire`;E0+=`var arg${A0}Wired = ${K0}(${D0}, arg${A0});
2309
+ `,X0.push(K0)}if(E0+=(h||P?"var rv = ":"")+`invoker(${x0});
2310
+ `,N)E0+=`runDestructors(destructors);
2311
+ `;else for(var A0=C?1:2;A0<c.length;++A0){var Q0=A0===1?"thisWired":"arg"+(A0-2)+"Wired";c[A0].destructorFunction!==null&&(E0+=`${Q0}_dtor(${Q0});
2312
+ `,X0.push(`${Q0}_dtor`))}return h&&(E0+=`var ret = fromRetWire(rv);
2326
2313
  return ret;
2327
- `),f0+=`}
2328
- `,K0.push("checkArgCount","minArgs","maxArgs"),f0=`if (arguments.length !== ${K0.length}){ throw new Error(humanName + "Expected ${K0.length} closure arguments " + arguments.length + " given."); }
2329
- ${f0}`,new Function(K0,f0)}function v(E){for(var C=E.length-2,m=E.length-1;m>=2&&E[m].optional;--m)C--;return C}function c(E,C,m,S,T,Q){var X=C.length;X<2&&p0("argTypes array size mismatch! Must at least get return value and 'this' types!"),h(!Q,"async bindings are only supported with JSPI");for(var x0=C[1]!==null&&m!==null,A0=sr(C),f0=!C[0].isVoid,u0=X-2,K0=v(C),H0=C[0],J0=C[1],kx=[E,p0,S,T,bA,H0.fromWireType.bind(H0),J0?.toWireType.bind(J0)],Dx=2;Dx<X;++Dx){var Yx=C[Dx];kx.push(Yx.toWireType.bind(Yx))}if(!A0)for(var Dx=x0?1:2;Dx<C.length;++Dx)C[Dx].destructorFunction!==null&&kx.push(C[Dx].destructorFunction);kx.push(GA,K0,u0);var aA=s(C,x0,f0,Q)(...kx);return ur(E,aA)}var u=(E,C,m,S,T,Q)=>{h(C>0);var X=vx(C,m);T=gx(S,T),tA([],[E],x0=>{x0=x0[0];var A0=`constructor ${x0.name}`;if(x0.registeredClass.constructor_body===void 0&&(x0.registeredClass.constructor_body=[]),x0.registeredClass.constructor_body[C-1]!==void 0)throw new ix(`Cannot register multiple constructors with identical number of parameters (${C-1}) for class '${x0.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return x0.registeredClass.constructor_body[C-1]=()=>{OA(`Cannot construct ${x0.name} due to unbound types`,X)},tA([],X,f0=>(f0.splice(1,0,null),x0.registeredClass.constructor_body[C-1]=c(A0,f0,null,T,Q),[])),[]})},g=(E,C,m)=>(E instanceof Object||p0(`${m} with invalid "this": ${E}`),E instanceof C.registeredClass.constructor||p0(`${m} incompatible with "this" of type ${E.constructor.name}`),E.$$.ptr||p0(`cannot call emscripten binding method ${m} on deleted object`),ir(E.$$.ptr,E.$$.ptrType.registeredClass,C.registeredClass)),w=(E,C,m,S,T,Q,X,x0,A0,f0)=>{C=Fx(C),T=gx(S,T),tA([],[E],u0=>{u0=u0[0];var K0=`${u0.name}.${C}`,H0={get(){OA(`Cannot access ${K0} due to unbound types`,[m,X])},enumerable:!0,configurable:!0};return A0?H0.set=()=>OA(`Cannot access ${K0} due to unbound types`,[m,X]):H0.set=J0=>p0(K0+" is a read-only property"),Object.defineProperty(u0.registeredClass.instancePrototype,C,H0),tA([],A0?[m,X]:[m],J0=>{var kx=J0[0],Dx={get(){var gA=g(this,u0,K0+" getter");return kx.fromWireType(T(Q,gA))},enumerable:!0};if(A0){A0=gx(x0,A0);var Yx=J0[1];Dx.set=function(gA){var aA=g(this,u0,K0+" setter"),Vr=[];A0(f0,aA,Yx.toWireType(Vr,gA)),bA(Vr)}}return Object.defineProperty(u0.registeredClass.instancePrototype,C,Dx),[]}),[]})},G=[],V=[0,1,,1,null,1,!0,1,!1,1],a0=E=>{if(E>9&&--V[E+1]===0){h(V[E]!==void 0,"decref for unallocated handle");var C=V[E];V[E]=void 0,G.push(E)}},d0={toValue:E=>(E||p0(`Cannot use deleted val. handle = ${E}`),h(E===2||V[E]!==void 0&&E%2===0,`invalid handle: ${E}`),V[E]),toHandle:E=>{switch(E){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:{let C=G.pop()||V.length;return V[C]=E,V[C+1]=1,C}}}},U0={name:"emscripten::val",fromWireType:E=>{var C=d0.toValue(E);return a0(E),C},toWireType:(E,C)=>d0.toHandle(C),readValueFromPointer:e0,destructorFunction:null},T0=E=>hx(E,U0),w0=(E,C)=>{switch(C){case 4:return function(m){return this.fromWireType(Nr[m>>2])};case 8:return function(m){return this.fromWireType(Ar[m>>3])};default:throw new TypeError(`invalid float width (${C}): ${E}`)}},j0=(E,C,m)=>{C=Fx(C),hx(E,{name:C,fromWireType:S=>S,toWireType:(S,T)=>{if(typeof T!="number"&&typeof T!="boolean")throw new TypeError(`Cannot convert ${nA(T)} to ${C}`);return T},readValueFromPointer:w0(C,m),destructorFunction:null})},Y0=E=>{E=E.trim();let C=E.indexOf("(");return C===-1?E:(h(E.endsWith(")"),"Parentheses for argument names should match."),E.slice(0,C))},lx=(E,C,m,S,T,Q,X,x0)=>{var A0=vx(C,m);E=Fx(E),E=Y0(E),T=gx(S,T,X),Gr(E,function(){OA(`Cannot call ${E} due to unbound types`,A0)},C-1),tA([],A0,f0=>{var u0=[f0[0],null].concat(f0.slice(1));return zr(E,c(E,u0,null,T,Q,X),C-1),[]})},yx=(E,C,m,S,T)=>{C=Fx(C);let Q=S===0,X=A0=>A0;if(Q){var x0=32-8*m;X=A0=>A0<<x0>>>x0,T=X(T)}hx(E,{name:C,fromWireType:X,toWireType:(A0,f0)=>{if(typeof f0!="number"&&typeof f0!="boolean")throw new TypeError(`Cannot convert "${nA(f0)}" to ${C}`);return jA(C,f0,S,T),f0},readValueFromPointer:rr(C,m,S!==0),destructorFunction:null})},$x=(E,C,m)=>{var S=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array],T=S[C];function Q(X){var x0=g0[X>>2],A0=g0[X+4>>2];return new T(Mx.buffer,A0,x0)}m=Fx(m),hx(E,{name:m,fromWireType:Q,readValueFromPointer:Q},{ignoreDuplicateRegistrations:!0})},qx=(E,C,m,S)=>{if(h(typeof E=="string",`stringToUTF8Array expects a string (got ${typeof E})`),!(S>0))return 0;for(var T=m,Q=m+S-1,X=0;X<E.length;++X){var x0=E.codePointAt(X);if(x0<=127){if(m>=Q)break;C[m++]=x0}else if(x0<=2047){if(m+1>=Q)break;C[m++]=192|x0>>6,C[m++]=128|x0&63}else if(x0<=65535){if(m+2>=Q)break;C[m++]=224|x0>>12,C[m++]=128|x0>>6&63,C[m++]=128|x0&63}else{if(m+3>=Q)break;x0>1114111&&Px(`Invalid Unicode code point ${ox(x0)} encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).`),C[m++]=240|x0>>18,C[m++]=128|x0>>12&63,C[m++]=128|x0>>6&63,C[m++]=128|x0&63,X++}}return C[m]=0,m-T},UA=(E,C,m)=>(h(typeof m=="number","stringToUTF8 requires a third parameter that specifies the length of the output buffer"),qx(E,Cx,C,m)),Tx=E=>{for(var C=0,m=0;m<E.length;++m){var S=E.charCodeAt(m);S<=127?C++:S<=2047?C+=2:S>=55296&&S<=57343?(C+=4,++m):C+=3}return C},sA=globalThis.TextDecoder&&new TextDecoder,tx=(E,C,m,S)=>{var T=C+m;if(S)return T;for(;E[C]&&!(C>=T);)++C;return C},Qe=(E,C=0,m,S)=>{var T=tx(E,C,m,S);if(T-C>16&&E.buffer&&sA)return sA.decode(E.subarray(C,T));for(var Q="";C<T;){var X=E[C++];if(!(X&128)){Q+=String.fromCharCode(X);continue}var x0=E[C++]&63;if((X&224)==192){Q+=String.fromCharCode((X&31)<<6|x0);continue}var A0=E[C++]&63;if((X&240)==224?X=(X&15)<<12|x0<<6|A0:((X&248)!=240&&Px(`Invalid UTF-8 leading byte ${ox(X)} encountered when deserializing a UTF-8 string in wasm memory to a JS string!`),X=(X&7)<<18|x0<<12|A0<<6|E[C++]&63),X<65536)Q+=String.fromCharCode(X);else{var f0=X-65536;Q+=String.fromCharCode(55296|f0>>10,56320|f0&1023)}}return Q},Mt=(E,C,m)=>(h(typeof E=="number",`UTF8ToString expects a number (got ${typeof E})`),E?Qe(Cx,E,C,m):""),Lt=(E,C)=>{C=Fx(C);var m=!0;hx(E,{name:C,fromWireType(S){var T=g0[S>>2],Q=S+4,X;if(m)X=Mt(Q,T,!0);else{X="";for(var x0=0;x0<T;++x0)X+=String.fromCharCode(Cx[Q+x0])}return HA(S),X},toWireType(S,T){T instanceof ArrayBuffer&&(T=new Uint8Array(T));var Q,X=typeof T=="string";X||ArrayBuffer.isView(T)&&T.BYTES_PER_ELEMENT==1||p0("Cannot pass non-string to std::string"),m&&X?Q=Tx(T):Q=T.length;var x0=zt(4+Q+1),A0=x0+4;if(g0[x0>>2]=Q,X)if(m)UA(T,A0,Q+1);else for(var f0=0;f0<Q;++f0){var u0=T.charCodeAt(f0);u0>255&&(HA(x0),p0("String has UTF-16 code units that do not fit in 8 bits")),Cx[A0+f0]=u0}else Cx.set(T,A0);return S!==null&&S.push(HA,x0),x0},readValueFromPointer:e0,destructorFunction(S){HA(S)}})},Ze=globalThis.TextDecoder?new TextDecoder("utf-16le"):void 0,Rt=(E,C,m)=>{h(E%2==0,"pointer passed to UTF16ToString must be 2-byte aligned");var S=E>>1,T=tx(xx,S,C/2,m);if(T-S>16&&Ze)return Ze.decode(xx.subarray(S,T));for(var Q="",X=S;X<T;++X){var x0=xx[X];Q+=String.fromCharCode(x0)}return Q},Ot=(E,C,m)=>{if(h(C%2==0,"pointer passed to stringToUTF16 must be 2-byte aligned"),h(typeof m=="number","stringToUTF16 requires a third parameter that specifies the length of the output buffer"),m??(m=2147483647),m<2)return 0;m-=2;for(var S=C,T=m<E.length*2?m/2:E.length,Q=0;Q<T;++Q){var X=E.charCodeAt(Q);DA[C>>1]=X,C+=2}return DA[C>>1]=0,C-S},xt=E=>E.length*2,_e=(E,C,m)=>{h(E%4==0,"pointer passed to UTF32ToString must be 2-byte aligned");for(var S="",T=E>>2,Q=0;!(Q>=C/4);Q++){var X=g0[T+Q];if(!X&&!m)break;S+=String.fromCodePoint(X)}return S},jr=(E,C,m)=>{if(h(C%4==0,"pointer passed to stringToUTF32 must be 4-byte aligned"),h(typeof m=="number","stringToUTF32 requires a third parameter that specifies the length of the output buffer"),m??(m=2147483647),m<4)return 0;for(var S=C,T=S+m-4,Q=0;Q<E.length;++Q){var X=E.codePointAt(Q);if(X>65535&&Q++,dA[C>>2]=X,C+=4,C+4>T)break}return dA[C>>2]=0,C-S},n=E=>{for(var C=0,m=0;m<E.length;++m){var S=E.codePointAt(m);S>65535&&m++,C+=4}return C},F=(E,C,m)=>{m=Fx(m);var S,T,Q;C===2?(S=Rt,T=Ot,Q=xt):(h(C===4,"only 2-byte and 4-byte strings are currently supported"),S=_e,T=jr,Q=n),hx(E,{name:m,fromWireType:X=>{var x0=g0[X>>2],A0=S(X+4,x0*C,!0);return HA(X),A0},toWireType:(X,x0)=>{typeof x0!="string"&&p0(`Cannot pass non-string to C++ string type ${m}`);var A0=Q(x0),f0=zt(4+A0+C);return g0[f0>>2]=A0/C,T(x0,f0+4,A0+C),X!==null&&X.push(HA,f0),f0},readValueFromPointer:e0,destructorFunction(X){HA(X)}})},f=(E,C,m,S,T,Q)=>{X0[E]={name:Fx(C),rawConstructor:gx(m,S),rawDestructor:gx(T,Q),fields:[]}},d=(E,C,m,S,T,Q,X,x0,A0,f0)=>{X0[E].fields.push({fieldName:Fx(C),getterReturnType:m,getter:gx(S,T),getterContext:Q,setterArgumentType:X,setter:gx(x0,A0),setterContext:f0})},p=(E,C)=>{C=Fx(C),hx(E,{isVoid:!0,name:C,fromWireType:()=>{},toWireType:(m,S)=>{}})},_=[],I=E=>{var C=_.length;return _.push(E),C},J=(E,C)=>{var m=Lx[E];return m===void 0&&p0(`${C} has unknown type ${hA(E)}`),m},o0=(E,C)=>{for(var m=new Array(E),S=0;S<E;++S)m[S]=J(g0[C+S*4>>2],`parameter ${S}`);return m},_0=(E,C,m)=>{var S=[],T=E(S,m);return S.length&&(g0[C>>2]=d0.toHandle(S)),T},z0={},M0=E=>{var C=z0[E];return C===void 0?Fx(E):C},P0=(E,C,m)=>{var S=8,[T,...Q]=o0(E,C),X=T.toWireType.bind(T),x0=Q.map(J0=>J0.readValueFromPointer.bind(J0));E--;var A0={toValue:d0.toValue},f0=x0.map((J0,kx)=>{var Dx=`argFromPtr${kx}`;return A0[Dx]=J0,`${Dx}(args${kx?"+"+kx*S:""})`}),u0;switch(m){case 0:u0="toValue(handle)";break;case 2:u0="new (toValue(handle))";break;case 3:u0="";break;case 1:A0.getStringOrSymbol=M0,u0="toValue(handle)[getStringOrSymbol(methodName)]";break}u0+=`(${f0})`,T.isVoid||(A0.toReturnWire=X,A0.emval_returnValue=_0,u0=`return emval_returnValue(toReturnWire, destructorsRef, ${u0})`),u0=`return function (handle, methodName, destructorsRef, args) {
2330
- ${u0}
2331
- }`;var K0=new Function(Object.keys(A0),u0)(...Object.values(A0)),H0=`methodCaller<(${Q.map(J0=>J0.name)}) => ${T.name}>`;return I(ur(H0,K0))},m0=E=>(E=M0(E),d0.toHandle(t[E])),sx=(E,C)=>(E=d0.toValue(E),C=d0.toValue(C),d0.toHandle(E[C])),bx=E=>{E>9&&(V[E+1]+=1)},Nx=(E,C,m,S,T)=>_[E](C,m,S,T),Rx=E=>d0.toHandle(M0(E)),Ox=E=>{var C=d0.toValue(E);bA(C),a0(E)},mr=()=>2147483648,Xx=(E,C)=>(h(C,"alignment argument is required"),Math.ceil(E/C)*C),ar=E=>{var C=At.buffer.byteLength,m=(E-C+65535)/65536|0;try{return At.grow(m),nx(),1}catch(S){O(`growMemory: Attempted to grow heap from ${C} bytes to ${E} bytes, but got error: ${S}`)}},cx=E=>{var C=Cx.length;E>>>=0,h(E>C);var m=mr();if(E>m)return O(`Cannot enlarge memory, requested ${E} bytes, but the limit is ${m} bytes!`),!1;for(var S=1;S<=4;S*=2){var T=C*(1+.2/S);T=Math.min(T,E+100663296);var Q=Math.min(m,Xx(Math.max(E,T),65536)),X=ar(Q);if(X)return!0}return O(`Failed to grow the heap from ${C} bytes to ${Q} bytes, not enough memory!`),!1},Ha=E=>{rx("fd_close called without SYSCALLS_REQUIRE_FILESYSTEM")},Ka=9007199254740992,za=-9007199254740992,Ja=E=>E<za||E>Ka?NaN:Number(E);function Va(E,C,m,S){return C=Ja(C),70}var Gt=[null,[],[]],Ut=(E,C)=>{var m=Gt[E];h(m),C===0||C===10?((E===1?R:O)(Qe(m)),m.length=0):m.push(C)},bB=()=>{Gn(0),Gt[1].length&&Ut(1,10),Gt[2].length&&Ut(2,10)},Wa=(E,C,m,S)=>{for(var T=0,Q=0;Q<m;Q++){var X=g0[C>>2],x0=g0[C+4>>2];C+=8;for(var A0=0;A0<x0;A0++)Ut(E,Cx[X+A0]);T+=x0}return g0[S>>2]=T,0},Xa=()=>{if(D){var E=Hs("crypto");return C=>E.randomFillSync(C)}return C=>(crypto.getRandomValues(C),0)},Mn=E=>(Mn=Xa())(E),Ya=(E,C)=>Mn(Cx.subarray(E,E+C)),Qa=(E,C)=>{if(hr)for(var m=E;m<E+C;m++){var S=br(m);S&&hr.set(S,m)}},hr,Za=E=>(hr||(hr=new WeakMap,Qa(0,gr.length)),hr.get(E)||0),Ht=[],xo=()=>{if(Ht.length)return Ht.pop();try{return gr.grow(1)}catch(E){if(!(E instanceof RangeError))throw E;rx("Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.")}},Kt=(E,C)=>{gr.set(E,C),RA[E]=gr.get(E)},Ln=E=>{let C=E.length;return h(C<16384),[C%128|128,C>>7,...E]},Ao={i:127,p:127,j:126,f:125,d:124,e:111},Rn=E=>Ln(Array.from(E,C=>{var m=Ao[C];return h(m,`invalid signature char: ${C}`),m})),ro=(E,C)=>{var m=Uint8Array.of(0,97,115,109,1,0,0,0,1,...Ln([1,96,...Rn(C.slice(1)),...Rn(C[0]==="v"?"":C[0])]),2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0),S=new WebAssembly.Module(m),T=new WebAssembly.Instance(S,{e:{f:E}}),Q=T.exports.f;return Q},eo=(E,C)=>{h(typeof E<"u");var m=Za(E);if(m)return m;var S=xo();try{Kt(S,E)}catch(Q){if(!(Q instanceof TypeError))throw Q;h(typeof C<"u","Missing signature argument to addFunction: "+E);var T=ro(E,C);Kt(S,T)}return hr.set(E,S),S},to=E=>{hr.delete(br(E)),Kt(E,null),Ht.push(E)};pe(),Kr(),h(V.length===10);{if(t.noExitRuntime&&(Cr=t.noExitRuntime),t.print&&(R=t.print),t.printErr&&(O=t.printErr),t.wasmBinary&&(t0=t.wasmBinary),t.FS_createDataFile=Kx.createDataFile,t.FS_createPreloadedFile=Kx.createPreloadedFile,so(),t.arguments&&(b=t.arguments),t.thisProgram&&(k=t.thisProgram),h(typeof t.memoryInitializerPrefixURL>"u","Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),h(typeof t.pthreadMainPrefixURL>"u","Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),h(typeof t.cdInitializerPrefixURL>"u","Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),h(typeof t.filePackagePrefixURL>"u","Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),h(typeof t.read>"u","Module.read option was removed"),h(typeof t.readAsync>"u","Module.readAsync option was removed (modify readAsync in JS)"),h(typeof t.readBinary>"u","Module.readBinary option was removed (modify readBinary in JS)"),h(typeof t.setWindowTitle>"u","Module.setWindowTitle option was removed (modify emscripten_set_window_title in JS)"),h(typeof t.TOTAL_MEMORY>"u","Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"),h(typeof t.ENVIRONMENT>"u","Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)"),h(typeof t.STACK_SIZE>"u","STACK_SIZE can no longer be set at runtime. Use -sSTACK_SIZE at link time"),h(typeof t.wasmMemory>"u","Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally"),h(typeof t.INITIAL_MEMORY>"u","Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically"),t.preInit)for(typeof t.preInit=="function"&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.shift()();r0("preInit")}t.addFunction=eo,t.removeFunction=to;var no=["writeI53ToI64","writeI53ToI64Clamped","writeI53ToI64Signaling","writeI53ToU64Clamped","writeI53ToU64Signaling","readI53FromI64","readI53FromU64","convertI32PairToI53","convertI32PairToI53Checked","convertU32PairToI53","stackAlloc","getTempRet0","setTempRet0","zeroMemory","exitJS","withStackSave","strError","inetPton4","inetNtop4","inetPton6","inetNtop6","readSockaddr","writeSockaddr","readEmAsmArgs","jstoi_q","getExecutableName","autoResumeAudioContext","getDynCaller","dynCall","handleException","keepRuntimeAlive","runtimeKeepalivePush","runtimeKeepalivePop","callUserCallback","maybeExit","asyncLoad","asmjsMangle","mmapAlloc","HandleAllocator","getUniqueRunDependency","addRunDependency","removeRunDependency","addOnInit","addOnPostCtor","addOnPreMain","addOnExit","STACK_SIZE","STACK_ALIGN","POINTER_SIZE","ASSERTIONS","ccall","cwrap","intArrayFromString","intArrayToString","stringToAscii","stringToNewUTF8","stringToUTF8OnStack","writeArrayToMemory","registerKeyEventCallback","maybeCStringToJsString","findEventTarget","getBoundingClientRect","fillMouseEventData","registerMouseEventCallback","registerWheelEventCallback","registerUiEventCallback","registerFocusEventCallback","fillDeviceOrientationEventData","registerDeviceOrientationEventCallback","fillDeviceMotionEventData","registerDeviceMotionEventCallback","screenOrientation","fillOrientationChangeEventData","registerOrientationChangeEventCallback","fillFullscreenChangeEventData","registerFullscreenChangeEventCallback","JSEvents_requestFullscreen","JSEvents_resizeCanvasForFullscreen","registerRestoreOldStyle","hideEverythingExceptGivenElement","restoreHiddenElements","setLetterbox","softFullscreenResizeWebGLRenderTarget","doRequestFullscreen","fillPointerlockChangeEventData","registerPointerlockChangeEventCallback","registerPointerlockErrorEventCallback","requestPointerLock","fillVisibilityChangeEventData","registerVisibilityChangeEventCallback","registerTouchEventCallback","fillGamepadEventData","registerGamepadEventCallback","registerBeforeUnloadEventCallback","fillBatteryEventData","registerBatteryEventCallback","setCanvasElementSize","getCanvasElementSize","jsStackTrace","getCallstack","convertPCtoSourceLocation","getEnvStrings","checkWasiClock","wasiRightsToMuslOFlags","wasiOFlagsToMuslOFlags","safeSetTimeout","setImmediateWrapped","safeRequestAnimationFrame","clearImmediateWrapped","registerPostMainLoop","registerPreMainLoop","getPromise","makePromise","idsToPromises","makePromiseCallback","findMatchingCatch","incrementUncaughtExceptionCount","decrementUncaughtExceptionCount","Browser_asyncPrepareDataCounter","isLeapYear","ydayFromDate","arraySum","addDays","getSocketFromFD","getSocketAddress","FS_createPreloadedFile","FS_preloadFile","FS_modeStringToFlags","FS_getMode","FS_fileDataToTypedArray","FS_stdin_getChar","FS_mkdirTree","_setNetworkCallback","heapObjectForWebGLType","toTypedArrayIndex","webgl_enable_ANGLE_instanced_arrays","webgl_enable_OES_vertex_array_object","webgl_enable_WEBGL_draw_buffers","webgl_enable_WEBGL_multi_draw","webgl_enable_EXT_polygon_offset_clamp","webgl_enable_EXT_clip_control","webgl_enable_WEBGL_polygon_mode","emscriptenWebGLGet","computeUnpackAlignedImageSize","colorChannelsInGlTextureFormat","emscriptenWebGLGetTexPixelData","emscriptenWebGLGetUniform","webglGetUniformLocation","webglPrepareUniformLocationsBeforeFirstUse","webglGetLeftBracePos","emscriptenWebGLGetVertexAttrib","__glGetActiveAttribOrUniform","writeGLArray","registerWebGlEventCallback","runAndAbortIfError","ALLOC_NORMAL","ALLOC_STACK","allocate","writeStringToMemory","writeAsciiToMemory","allocateUTF8","allocateUTF8OnStack","demangle","stackTrace","getNativeTypeSize","getFunctionArgsName","createJsInvokerSignature","getEnumValueType","PureVirtualError","registerInheritedInstance","unregisterInheritedInstance","getInheritedInstanceCount","getLiveInheritedInstances","enumReadValueFromPointer","installIndexedIterator","setDelayFunction","count_emval_handles"];no.forEach(F0);var io=["run","out","err","callMain","abort","wasmExports","writeStackCookie","checkStackCookie","INT53_MAX","INT53_MIN","bigintToI53Checked","HEAP8","HEAP16","HEAPU16","HEAP32","HEAPU32","HEAPF32","HEAPF64","HEAP64","HEAPU64","stackSave","stackRestore","createNamedFunction","ptrToString","getHeapMax","growMemory","ENV","ERRNO_CODES","DNS","Protocols","Sockets","timers","warnOnce","readEmAsmArgsArray","alignMemory","wasmTable","wasmMemory","noExitRuntime","addOnPreRun","addOnPostRun","convertJsFunctionToWasm","freeTableIndexes","functionsInTableMap","getEmptyTableSlot","updateTableMap","getFunctionAddress","setValue","getValue","PATH","PATH_FS","UTF8Decoder","UTF8ArrayToString","UTF8ToString","stringToUTF8Array","stringToUTF8","lengthBytesUTF8","AsciiToString","UTF16Decoder","UTF16ToString","stringToUTF16","lengthBytesUTF16","UTF32ToString","stringToUTF32","lengthBytesUTF32","JSEvents","specialHTMLTargets","findCanvasEventTarget","currentFullscreenStrategy","restoreOldWindowedStyle","UNWIND_CACHE","ExitStatus","flush_NO_FILESYSTEM","initRandomFill","randomFill","emSetImmediate","emClearImmediate_deps","emClearImmediate","promiseMap","uncaughtExceptionCount","exceptionCaught","ExceptionInfo","Browser","requestFullscreen","requestFullScreen","setCanvasSize","getUserMedia","createContext","getPreloadedImageData__data","wget","MONTH_DAYS_REGULAR","MONTH_DAYS_LEAP","MONTH_DAYS_REGULAR_CUMULATIVE","MONTH_DAYS_LEAP_CUMULATIVE","SYSCALLS","preloadPlugins","FS_stdin_getChar_buffer","FS_unlink","FS_createPath","FS_createDevice","FS_readFile","FS","FS_root","FS_mounts","FS_devices","FS_streams","FS_nextInode","FS_nameTable","FS_currentPath","FS_initialized","FS_ignorePermissions","FS_filesystems","FS_syncFSRequests","FS_lookupPath","FS_getPath","FS_hashName","FS_hashAddNode","FS_hashRemoveNode","FS_lookupNode","FS_createNode","FS_destroyNode","FS_isRoot","FS_isMountpoint","FS_isFile","FS_isDir","FS_isLink","FS_isChrdev","FS_isBlkdev","FS_isFIFO","FS_isSocket","FS_flagsToPermissionString","FS_nodePermissions","FS_mayLookup","FS_mayCreate","FS_mayDelete","FS_mayOpen","FS_checkOpExists","FS_nextfd","FS_getStreamChecked","FS_getStream","FS_createStream","FS_closeStream","FS_dupStream","FS_doSetAttr","FS_chrdev_stream_ops","FS_major","FS_minor","FS_makedev","FS_registerDevice","FS_getDevice","FS_getMounts","FS_syncfs","FS_mount","FS_unmount","FS_lookup","FS_mknod","FS_statfs","FS_statfsStream","FS_statfsNode","FS_create","FS_mkdir","FS_mkdev","FS_symlink","FS_rename","FS_rmdir","FS_readdir","FS_readlink","FS_stat","FS_fstat","FS_lstat","FS_doChmod","FS_chmod","FS_lchmod","FS_fchmod","FS_doChown","FS_chown","FS_lchown","FS_fchown","FS_doTruncate","FS_truncate","FS_ftruncate","FS_utime","FS_open","FS_close","FS_isClosed","FS_llseek","FS_read","FS_write","FS_mmap","FS_msync","FS_ioctl","FS_writeFile","FS_cwd","FS_chdir","FS_createDefaultDirectories","FS_createDefaultDevices","FS_createSpecialDirectories","FS_createStandardStreams","FS_staticInit","FS_init","FS_quit","FS_findObject","FS_analyzePath","FS_createFile","FS_createDataFile","FS_forceLoadFile","FS_createLazyFile","MEMFS","TTY","PIPEFS","SOCKFS","tempFixedLengthArray","miniTempWebGLFloatBuffers","miniTempWebGLIntBuffers","GL","AL","GLUT","EGL","GLEW","IDBStore","SDL","SDL_gfx","print","printErr","jstoi_s","InternalError","BindingError","throwInternalError","throwBindingError","registeredTypes","awaitingDependencies","typeDependencies","tupleRegistrations","structRegistrations","sharedRegisterType","whenDependentTypesAreResolved","getTypeName","getFunctionName","heap32VectorToArray","requireRegisteredType","usesDestructorStack","checkArgCount","getRequiredArgCount","createJsInvoker","UnboundTypeError","EmValType","EmValOptionalType","throwUnboundTypeError","ensureOverloadTable","exposePublicSymbol","replacePublicSymbol","embindRepr","registeredInstances","getBasestPointer","getInheritedInstance","registeredPointers","registerType","integerReadValueFromPointer","floatReadValueFromPointer","assertIntegerRange","readPointer","runDestructors","craftInvokerFunction","embind__requireFunction","genericPointerToWireType","constNoSmartPtrRawPointerToWireType","nonConstNoSmartPtrRawPointerToWireType","init_RegisteredPointer","RegisteredPointer","RegisteredPointer_fromWireType","runDestructor","releaseClassHandle","finalizationRegistry","detachFinalizer_deps","detachFinalizer","attachFinalizer","makeClassHandle","init_ClassHandle","ClassHandle","throwInstanceAlreadyDeleted","deletionQueue","flushPendingDeletes","delayFunction","RegisteredClass","shallowCopyInternalPointer","downcastPointer","upcastPointer","validateThis","char_0","char_9","makeLegalFunctionName","emval_freelist","emval_handles","emval_symbols","getStringOrSymbol","Emval","emval_returnValue","emval_lookupTypes","emval_methodCallers","emval_addMethodCaller"];io.forEach(v0);function so(){n0("fetchSettings"),n0("logReadFiles"),n0("loadSplitModule"),n0("onMalloc"),n0("onRealloc"),n0("onFree"),n0("onSbrkGrow")}var On=Z("___getTypeName"),zt=Z("_malloc"),HA=Z("_free"),ao=t._MdnCom_ESCHandler=Z("_MdnCom_ESCHandler"),oo=t._MdnCom_Free=Z("_MdnCom_Free"),Fo=t._MdnCom_RawRx=Z("_MdnCom_RawRx"),vo=t._MdnCom_CryptoSelfTest=Z("_MdnCom_CryptoSelfTest"),Eo=t._MdnCom_SetCompanionKeypair=Z("_MdnCom_SetCompanionKeypair"),Bo=t._MdnCom_InitiateEcsHandshake=Z("_MdnCom_InitiateEcsHandshake"),fo=t._MdnCom_SetSecDebug=Z("_MdnCom_SetSecDebug"),Co=t._MdnCom_GetEcsState=Z("_MdnCom_GetEcsState"),lo=t._MdnCom_ResetEcs=Z("_MdnCom_ResetEcs"),co=t._MdnCom_RegisterEcsHandshakeCallback=Z("_MdnCom_RegisterEcsHandshakeCallback"),Do=t._MdnCom_Init=Z("_MdnCom_Init"),uo=t._SendUtoQuery=Z("_SendUtoQuery"),bo=t._SendUtoCmdExt=Z("_SendUtoCmdExt"),Gn=Z("_fflush"),Jt=Z("_emscripten_stack_get_end"),po=Z("_emscripten_stack_get_base"),jo=Z("_strerror"),Un=Z("_emscripten_stack_init"),mo=Z("_emscripten_stack_get_free"),ho=Z("__emscripten_stack_restore"),go=Z("__emscripten_stack_alloc"),yo=Z("_emscripten_stack_get_current"),ko=Z("memory"),_o=Z("__indirect_function_table"),At=Z("wasmMemory"),gr=Z("wasmTable");function wo(E){h(typeof E.__getTypeName<"u","missing Wasm export: __getTypeName"),h(typeof E.malloc<"u","missing Wasm export: malloc"),h(typeof E.free<"u","missing Wasm export: free"),h(typeof E.MdnCom_ESCHandler<"u","missing Wasm export: MdnCom_ESCHandler"),h(typeof E.MdnCom_Free<"u","missing Wasm export: MdnCom_Free"),h(typeof E.MdnCom_RawRx<"u","missing Wasm export: MdnCom_RawRx"),h(typeof E.MdnCom_CryptoSelfTest<"u","missing Wasm export: MdnCom_CryptoSelfTest"),h(typeof E.MdnCom_SetCompanionKeypair<"u","missing Wasm export: MdnCom_SetCompanionKeypair"),h(typeof E.MdnCom_InitiateEcsHandshake<"u","missing Wasm export: MdnCom_InitiateEcsHandshake"),h(typeof E.MdnCom_SetSecDebug<"u","missing Wasm export: MdnCom_SetSecDebug"),h(typeof E.MdnCom_GetEcsState<"u","missing Wasm export: MdnCom_GetEcsState"),h(typeof E.MdnCom_ResetEcs<"u","missing Wasm export: MdnCom_ResetEcs"),h(typeof E.MdnCom_RegisterEcsHandshakeCallback<"u","missing Wasm export: MdnCom_RegisterEcsHandshakeCallback"),h(typeof E.MdnCom_Init<"u","missing Wasm export: MdnCom_Init"),h(typeof E.SendUtoQuery<"u","missing Wasm export: SendUtoQuery"),h(typeof E.SendUtoCmdExt<"u","missing Wasm export: SendUtoCmdExt"),h(typeof E.fflush<"u","missing Wasm export: fflush"),h(typeof E.emscripten_stack_get_end<"u","missing Wasm export: emscripten_stack_get_end"),h(typeof E.emscripten_stack_get_base<"u","missing Wasm export: emscripten_stack_get_base"),h(typeof E.strerror<"u","missing Wasm export: strerror"),h(typeof E.emscripten_stack_init<"u","missing Wasm export: emscripten_stack_init"),h(typeof E.emscripten_stack_get_free<"u","missing Wasm export: emscripten_stack_get_free"),h(typeof E._emscripten_stack_restore<"u","missing Wasm export: _emscripten_stack_restore"),h(typeof E._emscripten_stack_alloc<"u","missing Wasm export: _emscripten_stack_alloc"),h(typeof E.emscripten_stack_get_current<"u","missing Wasm export: emscripten_stack_get_current"),h(typeof E.memory<"u","missing Wasm export: memory"),h(typeof E.__indirect_function_table<"u","missing Wasm export: __indirect_function_table"),On=O0("__getTypeName",1),zt=O0("malloc",1),HA=O0("free",1),ao=t._MdnCom_ESCHandler=O0("MdnCom_ESCHandler",1),oo=t._MdnCom_Free=O0("MdnCom_Free",1),Fo=t._MdnCom_RawRx=O0("MdnCom_RawRx",1),vo=t._MdnCom_CryptoSelfTest=O0("MdnCom_CryptoSelfTest",0),Eo=t._MdnCom_SetCompanionKeypair=O0("MdnCom_SetCompanionKeypair",2),Bo=t._MdnCom_InitiateEcsHandshake=O0("MdnCom_InitiateEcsHandshake",0),fo=t._MdnCom_SetSecDebug=O0("MdnCom_SetSecDebug",1),Co=t._MdnCom_GetEcsState=O0("MdnCom_GetEcsState",0),lo=t._MdnCom_ResetEcs=O0("MdnCom_ResetEcs",0),co=t._MdnCom_RegisterEcsHandshakeCallback=O0("MdnCom_RegisterEcsHandshakeCallback",1),Do=t._MdnCom_Init=O0("MdnCom_Init",2),uo=t._SendUtoQuery=O0("SendUtoQuery",2),bo=t._SendUtoCmdExt=O0("SendUtoCmdExt",4),Gn=O0("fflush",1),Jt=E.emscripten_stack_get_end,po=E.emscripten_stack_get_base,jo=O0("strerror",1),Un=E.emscripten_stack_init,mo=E.emscripten_stack_get_free,ho=E._emscripten_stack_restore,go=E._emscripten_stack_alloc,yo=E.emscripten_stack_get_current,ko=At=E.memory,_o=gr=E.__indirect_function_table}var Hn={__cxa_throw:NA,_abort_js:Ce,_embind_finalize_value_object:cr,_embind_register_bigint:le,_embind_register_bool:a,_embind_register_class:pr,_embind_register_class_constructor:u,_embind_register_class_property:w,_embind_register_emval:T0,_embind_register_float:j0,_embind_register_function:lx,_embind_register_integer:yx,_embind_register_memory_view:$x,_embind_register_std_string:Lt,_embind_register_std_wstring:F,_embind_register_value_object:f,_embind_register_value_object_field:d,_embind_register_void:p,_emval_create_invoker:P0,_emval_decref:a0,_emval_get_module_property:m0,_emval_get_property:sx,_emval_incref:bx,_emval_invoke:Nx,_emval_new_cstring:Rx,_emval_run_destructors:Ox,emscripten_resize_heap:cx,fd_close:Ha,fd_seek:Va,fd_write:Wa,random_get:Ya},Kn;function $o(){Un(),Y()}function qo(){$o(),Ix();function E(){h(!Kn),Kn=!0,t.calledRun=!0,!M&&(lA(),D0?.(t),t.onRuntimeInitialized?.(),r0("onRuntimeInitialized"),h(!t._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),cA())}t.setStatus?(t.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>t.setStatus(""),1),E()},1)):E(),W()}var Jr;Jr=await Be(),qo(),I0?o=t:o=new Promise((E,C)=>{D0=E,q0=C});for(let E of Object.keys(t))E in i||Object.defineProperty(i,E,{configurable:!0,get(){rx(`Access to module property ('${E}') is no longer possible via the module constructor argument; Instead, use the result of the module constructor.`)}});return o}})();typeof A=="object"&&typeof x=="object"?(x.exports=r,x.exports.default=r):typeof define=="function"&&define.amd&&define([],()=>r)}}),oa=Object.freeze({p:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,n:0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,h:8n,a:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,d:0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,Gx:0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,Gy:0x6666666666666666666666666666666666666666666666666666666666666658n}),{p:yt,n:ht,Gx:Ks,Gy:zs,a:dn,d:un,h:Zv}=oa,Ke=32,xE=(...A)=>{"captureStackTrace"in Error&&typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(...A)},mx=(A="")=>{let x=new Error(A);throw xE(x,mx),x},AE=A=>typeof A=="bigint",rE=A=>typeof A=="string",eE=A=>A instanceof Uint8Array||ArrayBuffer.isView(A)&&A.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in A&&A.BYTES_PER_ELEMENT===1,Pr=(A,x,r="")=>{let e=eE(A),i=A?.length,o=x!==void 0;if(!e||o&&i!==x){let t=r&&`"${r}" `,B=o?` of length ${x}`:"",l=e?`length=${i}`:`type=${typeof A}`,D=t+"expected Uint8Array"+B+", got "+l;throw e?new RangeError(D):new TypeError(D)}return A},$t=A=>new Uint8Array(A),wn=A=>Uint8Array.from(A),Fa=(A,x)=>A.toString(16).padStart(x,"0"),va=A=>Array.from(Pr(A)).map(x=>Fa(x,2)).join(""),WA={_0:48,_9:57,A:65,F:70,a:97,f:102},Js=A=>{if(A>=WA._0&&A<=WA._9)return A-WA._0;if(A>=WA.A&&A<=WA.F)return A-(WA.A-10);if(A>=WA.a&&A<=WA.f)return A-(WA.a-10)},Ea=A=>{let x="hex invalid";if(!rE(A))return mx(x);let r=A.length,e=r/2;if(r%2)return mx(x);let i=$t(e);for(let o=0,t=0;o<e;o++,t+=2){let B=Js(A.charCodeAt(t)),l=Js(A.charCodeAt(t+1));if(B===void 0||l===void 0)return mx(x);i[o]=B*16+l}return i},Ba=()=>globalThis?.crypto,tE=()=>Ba()?.subtle??mx("crypto.subtle must be defined, consider polyfill"),fa=(...A)=>{let x=0;for(let i of A)x+=Pr(i).length;let r=$t(x),e=0;return A.forEach(i=>{r.set(i,e),e+=i.length}),r},nE=(A=Ke)=>Ba().getRandomValues($t(A)),kt=BigInt,$r=(A,x,r,e="bad number: out of range")=>{if(!AE(A))throw new TypeError(e);if(x<=A&&A<r)return A;throw new RangeError(e)},Z0=(A,x=yt)=>{let r=A%x;return r>=0n?r:x+r},Vs=(1n<<255n)-1n,l0=A=>{A<0n&&mx("negative coordinate");let x=(A>>255n)*19n+(A&Vs);return x=(x>>255n)*19n+(x&Vs),x%yt},iE=A=>Z0(A,ht),sE=(A,x)=>{(A===0n||x<=0n)&&mx("no inverse n="+A+" mod="+x);let r=Z0(A,x),e=x,i=0n,o=1n,t=1n,B=0n;for(;r!==0n;){let l=e/r,D=e%r,j=i-t*l,b=o-B*l;e=r,r=D,i=t,o=B,t=j,B=b}return e===1n?Z0(i,x):mx("no inverse")},aE=A=>{let x=DE[A];return typeof x!="function"&&mx("hashes."+A+" not set"),x},oE=A=>Pr(A,64,"digest"),bn=A=>A instanceof ze?A:mx("Point expected"),gn=2n**256n,$n=class qr{constructor(x,r,e,i){c0(this,"X"),c0(this,"Y"),c0(this,"Z"),c0(this,"T");let o=gn;this.X=$r(x,0n,o),this.Y=$r(r,0n,o),this.Z=$r(e,1n,o),this.T=$r(i,0n,o),Object.freeze(this)}static CURVE(){return oa}static fromAffine(x){return new qr(x.x,x.y,1n,l0(x.x*x.y))}static fromBytes(x,r=!1){let e=un,i=wn(Pr(x,Ke)),o=x[31];i[31]=o&-129;let t=Ca(i);$r(t,0n,r?gn:yt);let l=l0(t*t),D=Z0(l-1n),j=l0(e*l+1n),{isValid:b,value:k}=EE(D,j);b||mx("bad point: y not sqrt");let $=(k&1n)===1n,y=(o&128)!==0;return!r&&k===0n&&y&&mx("bad point: x==0, isLastByteOdd"),y!==$&&(k=Z0(-k)),new qr(k,t,1n,l0(k*t))}static fromHex(x,r){return qr.fromBytes(Ea(x),r)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}assertValidity(){let x=dn,r=un,e=this;if(e.is0())return mx("bad point: ZERO");let{X:i,Y:o,Z:t,T:B}=e,l=l0(i*i),D=l0(o*o),j=l0(t*t),b=l0(j*j),k=l0(l*x),$=l0(j*(k+D)),y=Z0(b+l0(r*l0(l*D)));if($!==y)return mx("bad point: equation left != right (1)");let q=l0(i*o),P=l0(t*B);return q!==P?mx("bad point: equation left != right (2)"):this}equals(x){let{X:r,Y:e,Z:i}=this,{X:o,Y:t,Z:B}=bn(x),l=l0(r*B),D=l0(o*i),j=l0(e*B),b=l0(t*i);return l===D&&j===b}is0(){return this.equals(Sr)}negate(){return new qr(Z0(-this.X),this.Y,this.Z,Z0(-this.T))}double(){let{X:x,Y:r,Z:e}=this,i=dn,o=l0(x*x),t=l0(r*r),B=l0(2n*e*e),l=l0(i*o),D=Z0(x+r),j=Z0(l0(D*D)-o-t),b=Z0(l+t),k=Z0(b-B),$=Z0(l-t),y=l0(j*k),q=l0(b*$),P=l0(j*$),N=l0(k*b);return new qr(y,q,N,P)}add(x){let{X:r,Y:e,Z:i,T:o}=this,{X:t,Y:B,Z:l,T:D}=bn(x),j=dn,b=un,k=l0(r*t),$=l0(e*B),y=l0(l0(o*b)*D),q=l0(i*l),P=Z0(l0(Z0(r+e)*Z0(t+B))-k-$),N=Z0(q-y),R=Z0(q+y),O=Z0($-l0(j*k)),t0=l0(P*N),M=l0(R*O),h=l0(P*O),L=l0(N*R);return new qr(t0,M,L,h)}subtract(x){return this.add(bn(x).negate())}multiply(x,r=!0){if(!r&&x===0n||($r(x,1n,ht),!r&&this.is0()))return Sr;if(x===1n)return this;if(this.equals(se))return jE(x).p;let e=Sr,i=se;for(let o=this;x>0n;o=o.double(),x>>=1n)x&1n?e=e.add(o):r&&(i=i.add(o));return e}multiplyUnsafe(x){return this.multiply(x,!1)}toAffine(){let{X:x,Y:r,Z:e}=this;if(this.equals(Sr))return{x:0n,y:1n};let i=sE(e,yt);l0(e*i)!==1n&&mx("invalid inverse");let o=l0(x*i),t=l0(r*i);return{x:o,y:t}}toBytes(){let{x,y:r}=this.toAffine(),e=FE(r);return e[31]|=x&1n?128:0,e}toHex(){return va(this.toBytes())}clearCofactor(){return this.multiply(kt(Zv),!1)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){let x=this.multiply(ht/2n,!1).double();return ht%2n&&(x=x.add(this)),x.is0()}};c0($n,"BASE");c0($n,"ZERO");var ze=$n,se=new ze(Ks,zs,1n,Z0(Ks*zs)),Sr=new ze(0n,1n,1n,0n);ze.BASE=se;ze.ZERO=Sr;var FE=A=>Ea(Fa($r(A,0n,gn),64)).reverse(),Ca=A=>kt("0x"+va(wn(Pr(A)).reverse())),SA=(A,x)=>{let r=A;for(;x-- >0n;)r=l0(r*r);return r},vE=A=>{let x=l0(A*A),r=l0(x*A),e=l0(SA(r,2n)*r),i=l0(SA(e,1n)*A),o=l0(SA(i,5n)*i),t=l0(SA(o,10n)*o),B=l0(SA(t,20n)*t),l=l0(SA(B,40n)*B),D=l0(SA(l,80n)*l),j=l0(SA(D,80n)*l),b=l0(SA(j,10n)*o);return{pow_p_5_8:l0(SA(b,2n)*A),b2:r}},Ws=0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n,EE=(A,x)=>{let r=l0(x*l0(x*x)),e=l0(l0(r*r)*x),i=vE(l0(A*e)).pow_p_5_8,o=l0(A*l0(r*i)),t=l0(x*l0(o*o)),B=o,l=l0(o*Ws),D=t===A,j=t===Z0(-A),b=t===Z0(-A*Ws);return D&&(o=B),(j||b)&&(o=l),(Z0(o)&1n)===1n&&(o=Z0(-o)),{isValid:D||j,value:o}},BE=A=>iE(Ca(A)),fE=(...A)=>Promise.resolve(aE("sha512Async")(fa(...A))).then(oE),CE=A=>{let x=wn(A),r=x.slice(0,32);r[0]&=248,r[31]&=127,r[31]|=64;let e=x.slice(32,64),i=BE(r),o=se.multiply(i),t=o.toBytes();return{head:r,prefix:e,scalar:i,point:o,pointBytes:t}},lE=A=>fE(Pr(A,Ke)).then(CE),cE=A=>lE(A).then(x=>x.pointBytes),DE={sha512Async:async A=>{let x=tE(),r=fa(A);return $t(await x.digest("SHA-512",r.buffer))},sha512:void 0},dE=A=>(A=A===void 0?nE(Ke):A,Pr(A,Ke)),uE=async A=>{let x=dE(A),r=await cE(x);return{secretKey:x,publicKey:r}},_t=8,bE=256,la=Math.ceil(bE/_t)+1,yn=2**(_t-1),pE=()=>{let A=[],x=se,r=x;for(let e=0;e<la;e++){r=x,A.push(r);for(let i=1;i<yn;i++)r=r.add(x),A.push(r);x=r.double()}return A},Xs=void 0,Ys=(A,x)=>{let r=x.negate();return A?r:x},jE=A=>{let x=Xs||(Xs=pE()),r=Sr,e=se,i=2**_t,o=i,t=kt(i-1),B=kt(_t);for(let l=0;l<la;l++){let D=Number(A&t);A>>=B,D>yn&&(D-=o,A+=1n);let j=l*yn,b=j,k=j+Math.abs(D)-1,$=l%2!==0,y=D<0;D===0?e=e.add(Ys($,x[b])):r=r.add(Ys(y,x[k]))}return A!==0n&&mx("invalid wnaf"),{p:r,f:e}},mE=32,hE=64;async function Qs(){let{secretKey:A,publicKey:x}=await uE(),r=new Uint8Array(hE);return r.set(A,0),r.set(x,mE),{publicKey:x,privateKey:r}}var wt=class extends Error{constructor(A,x,r){super(r),c0(this,"httpStatus",A),c0(this,"code",x),this.name="CertApiError"}},Zs="/api/1/companion/cert",gE=10080*60*1e3,xa=typeof __COMPANION_AUTH_DEV_PROXY__<"u"&&__COMPANION_AUTH_DEV_PROXY__;function ca(A){let x="";for(let r of A)x+=String.fromCharCode(r);return btoa(x).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function yE(A,x){let r=A.apiHost.replace(/\/+$/,""),e=xa?Zs:r+Zs,i={Authorization:`Bearer ${A.accessToken}`,"Content-Type":"application/json",Accept:"application/json"};xa&&r&&(i["x-target-host"]=r);let o=await fetch(e,{method:"POST",headers:i,body:JSON.stringify({publicKey:ca(x.publicKey),subject:x.subject})});if(!o.ok){let B="unknown_error",l=o.statusText||`Cert API request failed (${o.status})`;try{let D=await o.json();D.code&&(B=D.code),D.message&&(l=D.message)}catch{}throw new wt(o.status,B,l)}let t=await o.json();if(!t.certificate||!t.notAfter)throw new wt(o.status,"invalid_response","Cert API response missing certificate or notAfter");return{certificateBase64Url:t.certificate,notAfter:t.notAfter}}function kE(A,x=gE){let r=Date.parse(A);return Number.isFinite(r)?r-Date.now()>x:!1}var _E=Yv(Qv(),1),mt="[device-master]",ae={debug:(A,...x)=>console.debug(mt,A,...x),info:(A,...x)=>console.info(mt,A,...x),warn:(A,...x)=>console.warn(mt,A,...x),error:(A,...x)=>console.error(mt,A,...x)},Aa={debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}},wE=new Uint32Array([0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117]);function $E(A,x=0){let r=~~x^-1;for(let e=0;e<A.length;e++)r=r>>>8^wE[(r^A[e])&255];return(r^-1)>>>0}var ra=Date.UTC(1999,11,31,0,0,0);function ea(A,x,r=" "){let e=""+A,i=Math.max(0,Math.abs(x)-e.length),o=r.repeat(i);return x<0?e+o:o+e}function _r(A,x){return("0000000000000000"+A.toString(16)).substr(-x)}function ta(A){if(A instanceof Uint8Array)return A;if(A instanceof ArrayBuffer)return new Uint8Array(A);if(A&&Object.hasOwn(A,"type")&&A.type==="Buffer"&&Object.hasOwn(A,"data")&&A.data instanceof Array)return Uint8Array.from(A.data);if(A.buffer)return new Uint8Array(A.buffer,A.byteOffset,A.byteLength);throw new Error("can not convert value to Uint8Array")}var oc=new Uint8Array([0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64]),Fc=new Uint8Array([0,192,193,1,195,3,2,194,198,6,7,199,5,197,196,4,204,12,13,205,15,207,206,14,10,202,203,11,201,9,8,200,216,24,25,217,27,219,218,26,30,222,223,31,221,29,28,220,20,212,213,21,215,23,22,214,210,18,19,211,17,209,208,16,240,48,49,241,51,243,242,50,54,246,247,55,245,53,52,244,60,252,253,61,255,63,62,254,250,58,59,251,57,249,248,56,40,232,233,41,235,43,42,234,238,46,47,239,45,237,236,44,228,36,37,229,39,231,230,38,34,226,227,35,225,33,32,224,160,96,97,161,99,163,162,98,102,166,167,103,165,101,100,164,108,172,173,109,175,111,110,174,170,106,107,171,105,169,168,104,120,184,185,121,187,123,122,186,190,126,127,191,125,189,188,124,180,116,117,181,119,183,182,118,114,178,179,115,177,113,112,176,80,144,145,81,147,83,82,146,150,86,87,151,85,149,148,84,156,92,93,157,95,159,158,94,90,154,155,91,153,89,88,152,136,72,73,137,75,139,138,74,78,142,143,79,141,77,76,140,68,132,133,69,135,71,70,134,130,66,67,131,65,129,128,64]);var qE=[8364,129,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,141,381,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,157,382,376],SE=new Map(qE.map((A,x)=>[A,128+x]));function PE(A){return A<=127||A>=160&&A<=255?A:SE.get(A)??63}var TE="uto_script.dat";var da=(A=>(A[A.DEVINFO=0]="DEVINFO",A[A.STAMPS=1]="STAMPS",A[A.LIC_QUERY=2]="LIC_QUERY",A[A.FILEMAP=3]="FILEMAP",A[A.MNTCFG=4]="MNTCFG",A[A.MDNCFG=5]="MDNCFG",A[A.CONTEXT=128]="CONTEXT",A[A.ALERTS=4294901767]="ALERTS",A[A.HISTDATA0=26368]="HISTDATA0",A[A.LOG=26375]="LOG",A[A.SYSCFG=26378]="SYSCFG",A[A.STATE=26389]="STATE",A[A.LOCALS=26402]="LOCALS",A[A.POS=26404]="POS",A[A.CTRLAMX=26405]="CTRLAMX",A[A.DYNPOS__=26406]="DYNPOS__",A[A.CONFIG0=26416]="CONFIG0",A[A.CONFIG1=26417]="CONFIG1",A[A.CONFIG2=26418]="CONFIG2",A[A.CONFIG3=26419]="CONFIG3",A[A.CONFIG4=26420]="CONFIG4",A[A.CONFIG5=26421]="CONFIG5",A[A.CONFIG6=26422]="CONFIG6",A[A.CONFIG7=26423]="CONFIG7",A[A.CONFIG8=26424]="CONFIG8",A[A.CONFIG9=26425]="CONFIG9",A[A.SYSOTP=26432]="SYSOTP",A[A.SYSFLASH=26433]="SYSFLASH",A[A.APPOTP=26434]="APPOTP",A[A.APPFLASH=26435]="APPFLASH",A[A.APPSTATE=26436]="APPSTATE",A[A.SYSINFO=26437]="SYSINFO",A[A.APPINFO=26438]="APPINFO",A[A.SYSSTATE=26439]="SYSSTATE",A[A.HISTDATA1=26528]="HISTDATA1",A[A.HISTDATA2=26529]="HISTDATA2",A[A.HISTDATA3=26530]="HISTDATA3",A[A.HISTDATA4=26531]="HISTDATA4",A[A.HISTDATA5=26532]="HISTDATA5",A[A.HISTDATA6=26533]="HISTDATA6",A[A.HISTDATA7=26534]="HISTDATA7",A[A.HISTDATA8=26535]="HISTDATA8",A[A.HISTDATA9=26536]="HISTDATA9",A[A.HISTDATA_RAW=26623]="HISTDATA_RAW",A[A.CONFIGA=4294928218]="CONFIGA",A[A.CONFIGB=4294928219]="CONFIGB",A[A.CONFIGC=4294928220]="CONFIGC",A))(da||{});var qn=(A=>(A[A.off=0]="off",A[A.pawn=2]="pawn",A))(qn||{});var na={config0:26416,config1:26417,config2:26418,config3:26419,config4:26420,config5:26421,config6:26422,config7:26423,config8:26424,config9:26425,histdata0:26368,histdata1:26528,histdata2:26529,histdata3:26530,histdata4:26531,histdata5:26532,histdata6:26533,histdata7:26534,histdata8:26535,histdata9:26536},NE=class{constructor(){}resultToString(A){A|=0;let x=A&256?"+DISC":"";switch(A&255){case 0:return"OK"+x;case 1:return"E_TAG"+x;case 2:return"E_DLEN"+x;case 3:return"E_DATA"+x;case 4:return"E_STAMP"+x;case 5:return"E_EOD"+x;case 6:return"E_CMD"+x;case 7:return"E_CMDDENIED"+x;case 8:return"E_FULL"+x;case 9:return"E_NOTSUPPORTED"+x;case 10:return"E_OLDDATA"+x;case 11:return"E_STORAGE"+x;case 12:return"E_STORAGE"+x}return"E_0x"+_r(A,4)+x}commandToString(A){switch(A|=0,A){case 0:return"COMMAND_RESULT";case 1:return"COMMAND_QUERY";case 2:return"COMMAND_DEL";case 3:return"COMMAND_DATA";case 4:return"COMMAND_UNS_DATA";case 5:return"COMMAND_LIVE_DATA";case 7:return"COMMAND_FILE_LIST";case 8:return"COMMAND_FILE_RETR";case 9:return"COMMAND_FILE_STOR";case 10:return"COMMAND_FILE_DELE";case 11:return"COMMAND_SET_VALUE"}return"COMMAND_0x"+_r(A,2)}tagToString(A){A|=0;let x=Object.entries(da).find(([,r])=>r===A);return x?"TAG_"+x[0]:"TAG_0x"+_r(A,4)}containerIdToTag(A,x){let r=na[A]||null;return r&&x&&A.startsWith("histdata")?26623:r}containerIdOf(A){let x=Object.entries(na).find(([,r])=>r===A.wTag);if(x)return x[0];if(A.wTag===26623){if(!A.data||!A.data.byteLength)return null;let r=A.data.getUint8(0);return r===32?"alerts":r>=0&&r<=9?`histdata${r}`:null}return null}formatSerialNumber(A,x="-"){return A?A.substr(0,4)+x+A.substr(4,4)+x+A.substr(8,4)+x+A.substr(12):"(none)"}decodeUplinkState(A){let x={FAILED:1,ACTIVE:2,STARTED:4,RETRY:8,WAKEUPABLE:16,EXTSIM:32,DISABLED:64,WAKEUP:256,POSUPDATE_ACTIVE:512},r=!!(A&x.WAKEUPABLE),e=[];A&x.POSUPDATE_ACTIVE?e=["locating",!1]:A&x.RETRY?e=["retry",!1]:A&x.STARTED?e=["dialing",!1]:A&x.ACTIVE?e=["active",!1]:A&x.FAILED?e=["failed",r]:A&x.DISABLED?e=["disabled",!1]:e=["offline",r];let i=x.WAKEUPABLE|x.RETRY|x.STARTED|x.ACTIVE|x.POSUPDATE_ACTIVE|x.FAILED|x.DISABLED|x.EXTSIM;return{signal:e[0],wakeupAble:e[1],path:A&x.EXTSIM?"xsim ":"isim ",txStateUnknown:A&~i}}stamp40ToMS(A){let x=Math.trunc(A/256),r=A&255;return Math.round(x*1e3+1e3*r/256)+ra}msToStamp40(A){let x=(A-ra)/1e3,r=Math.trunc(x),e=Math.round((x-r)*256);return r*256+e}stamp40ToDate(A){return new Date(this.stamp40ToMS(A))}utf8Unpack(A,x,r){let e=new TextDecoder("utf-8"),i=0;for(;i<r&&A.getUint8(x+i);)i++;let o=new Uint8Array(A.buffer,x,i);return e.decode(o)}ansiUnpack(A,x,r,e){try{let i=ta(A),o=new TextDecoder(e),t=0;for(;t<r&&i[x+t];)t++;return o.decode(i.slice(x,x+t))}catch(i){return console.log("?"+i.message,i),`ERR-unknown codepage "${e}"`}}cp1252Unpack(A,x,r){return this.ansiUnpack(A,x,r,"cp1252")}ansiPack(A,x,r,e){let i=ta(A);i.fill(0,x,x+r);for(let o=0;o<r&&o<e.length;o++)i[x+o]=PE(e.charCodeAt(o))}cp1252Pack(A,x,r,e){return this.ansiPack(A,x,r,e)}dataFrameNotNull(A){if(!A.data)throw new Error("UtoFrame does not have any data!")}decode_DEVINFO(A){this.dataFrameNotNull(A);let x=A.data,r=x.getUint16(0),e=x.getUint16(2),i=x.getUint16(4),o=x.getUint32(6),t=(_r(o,8)+_r(A.dwDevSN,8)).toUpperCase(),B=[];for(let l=0;l<(x.byteLength-10)/5;l++){let D=x.getUint8(10+l*5+2),j=x.getUint16(10+l*5);B.push({wTag:j,sTag:this.tagToString(j),size:x.getUint16(10+l*5+3),flags:{historic:!!(D&1),single:!(D&1),up:!!(D&2),down:!!(D&4),variableLength:!!(D&8),setValue:!!(D&16)}})}return{serialNumber:t,class:_r(r,4),firmwareVersion:`${ea(i>>8,2)}v${ea(i&255,3,"0")}`,flags:_r(e,4),utos:B}}decode_STAMPS(A){this.dataFrameNotNull(A);let x=A.data,r={contextId:x.getBigUint64(0,!0).toString(16).toUpperCase(),stamps:[]};for(let e=0;e<(x.byteLength-8)/5;e++)r.stamps.push(x.getUint32(8+e*5+0)*256+x.getUint8(8+e*5+4));return r}decode_CONTEXT(A){this.dataFrameNotNull(A);let x=A.data;return{id:x.getBigUint64(0,!0).toString(16).toUpperCase(),name:this.cp1252Unpack(x,8,50)}}encode_CONTEXT(A){let x=new Uint8Array(58),r=new DataView(x.buffer);return r.setBigUint64(0,BigInt("0x"+A.id),!0),this.cp1252Pack(r,8,50,A.name),x}decode_FILEMAP(A){this.dataFrameNotNull(A);let x=A.data,r=x.getUint16(13,!1),e={stamp:x.getUint32(0,!1)*256+x.getUint8(4),size:x.getUint32(5,!1),crc32:x.getUint32(9,!1),flags:{read:!!(r&1),write:!!(r&2),node:!!(r&4),system:!!(r&8),extra:r&-16},_flags:r,name:this.cp1252Unpack(x,15,x.byteLength-15)};if(e.flags?.extra)throw new Error("?UTO.decode_FILEMAP.unknown-file-flags."+e.flags.extra);return e}encode_FILEMAP(A){if(A.flags){let e=0;A.flags.extra&&(e|=A.flags.extra|0),A.flags.read&&(e|=1),A.flags.write&&(e|=2),A.flags.node&&(e|=4),A.flags.system&&(e|=8),A._flags=e}let x=new Uint8Array(15+A.name.length+1),r=new DataView(x.buffer);return r.setUint32(0,Math.trunc(A.stamp/256),!1),r.setUint8(4,A.stamp&255),r.setUint32(5,A.size,!1),r.setUint32(9,A.crc32,!1),r.setUint16(13,A._flags,!1),this.cp1252Pack(r,15,256,A.name),x}decode_RM2M_STATE(A){this.dataFrameNotNull(A);let x=A.data;return{rssi:x.getInt8(0),uplinkMode:x.getUint8(1),imei:this.cp1252Unpack(x,61,15),hardwareId:this.cp1252Unpack(x,96,50),sim:{id:this.cp1252Unpack(x,2,15),apn:this.cp1252Unpack(x,17,40),iccId:this.cp1252Unpack(x,76,20)},network:{mcc:x.getUint16(57),mnc:x.getUint16(59)}}}},PA=new NE,ua=class{constructor(A="(unnamed)"){c0(this,"name"),c0(this,"_locked"),c0(this,"_chain"),this.name=A,this._locked=0,this._chain=[]}get islocked(){return!!this._locked}requestLock(){if(++this._locked!==1)return new Promise(A=>{this._chain.push(A)})}unlock(){--this._locked,this._chain.length&&this._chain.shift()()}async runExclusive(A){await this.requestLock();try{return await A()}finally{this.unlock()}}},ia=new WeakMap;function ba(A,x){let e=(ia.get(A)??Promise.resolve()).then(()=>IE(A,x));return ia.set(A,e.catch(()=>{})),e}async function IE(A,x){A.interface&&A.interface==="ble"?await ME(async r=>{await A.write(r)},x,A.mtuSize??23):await A.write(x)}async function ME(A,x,r=23){let e=new Uint8Array(x),i=r-3;for(let o=0;o<e.byteLength;o+=i){let t=e.slice(o,o+i);await A(t.buffer)}}var sa=15e3,LE=500,RE=3,Sn=class gt extends Da.EventEmitter{constructor(x,r){super(),c0(this,"mdnComInterface"),c0(this,"receiveUto"),c0(this,"sendUto"),c0(this,"rxUto"),c0(this,"txStream"),c0(this,"SendUtoCmdExt"),c0(this,"utoPortLock"),c0(this,"transport"),c0(this,"logger"),c0(this,"ecsHandshakeResolver",null),c0(this,"disposeTransportListener",null),c0(this,"encrypted",!1),c0(this,"lastTxWrite",Promise.resolve()),this.mdnComInterface=null,this.receiveUto=null,this.sendUto=null,this.rxUto=null,this.txStream=null,this.SendUtoCmdExt=null,this.utoPortLock=new ua("UTO-Port"),this.transport=x,this.logger=r??ae}async init(){if(this.mdnComInterface!==null)return;this.mdnComInterface=await(0,_E.default)({print:o=>{this.logger.info(`[mdnCom] ${o}`),this.emit("mdnCom",o)},printErr:o=>{this.logger.error(`[mdnCom] ${o}`),this.emit("mdnComError",o)}});let x=this.mdnComInterface.MdnCom_Init;this.receiveUto=this.mdnComInterface.MdnCom_RawRx,this.sendUto=this.mdnComInterface.MdnCom_SendUtoQuery,this.rxUto=this.mdnComInterface.MdnCom_GetRxUto,this.txStream=this.mdnComInterface.MdnCom_GetTxStream,this.SendUtoCmdExt=this.mdnComInterface.MdnCom_SendUtoCmdExt;let r=this.mdnComInterface.addFunction(()=>{if(this.txStream){let o=this.txStream();this.lastTxWrite=ba(this.transport,o.buffer.slice(o.byteOffset,o.byteOffset+o.byteLength))}},"v"),e=this.mdnComInterface.addFunction(()=>{if(this.rxUto){let o=this.rxUto(),t=this.parseUtoFrame(o);this.emit("utoFrame",t)}},"v");await x(r,e);let i=this.mdnComInterface.addFunction(o=>{if(this.logger.info(`[ecs] handshake event from WASM: result=${o} resolverPresent=${this.ecsHandshakeResolver!==null}`),this.ecsHandshakeResolver){let t=this.ecsHandshakeResolver;this.ecsHandshakeResolver=null,t({success:o===0,resultCode:o})}else this.logger.warn("[ecs] handshake event fired but no resolver registered \u2014 Promise will hang")},"vi");this.logger.info(`[ecs] registering handshake callback fn=${i}`),this.mdnComInterface.MdnCom_RegisterEcsHandshakeCallback(i),this.disposeTransportListener=this.transport.onData(async o=>{this.receiveUto&&await this.receiveUto(new Uint8Array(o))}),await this.requestDeviceInfo().catch()}async dispose(x){if(this.logger.info("[dispose] starting dispose"),this.encrypted){if(!x){let r=new Error("[dispose] encrypted session active but no AtCommandHandler provided \u2014 cannot send connection close");throw this.logger.error(r.message),r}try{this.logger.info("[dispose] requesting context for encrypted close");let r=await this.requestContext();r?(this.logger.info("[dispose] writing context back to device"),await this.writeContext(r)):this.logger.warn("[dispose] requestContext returned null \u2014 skipping writeContext")}catch(r){this.logger.error(`[dispose] error during context round trip: ${r}`)}try{this.logger.info("[dispose] sending connection close"),await x.sendConnectionClose(),this.logger.info("[dispose] connection close acknowledged")}catch(r){this.logger.error(`[dispose] error sending connection close: ${r}`)}finally{this.encrypted=!1,this.logger.info("[dispose] encrypted flag cleared")}}if(this.disposeTransportListener&&(this.logger.info("[dispose] removing transport data listener"),this.disposeTransportListener(),this.disposeTransportListener=null),this.mdnComInterface){this.logger.info("[dispose] resetting WASM ECS state");try{this.mdnComInterface.MdnCom_ResetEcs()}catch(r){this.logger.error(`[dispose] error resetting WASM ECS state: ${r}`)}this.ecsHandshakeResolver=null}this.logger.info("[dispose] dispose complete")}isInitialized(){if(!this.mdnComInterface)throw new Error('utoMaster not initialized. Have you called "init()"?')}parseUtoFrame(x){return{dwDevSN:x.vDevID_u32,bCmd:x.vCmd_u8,stamp:x.vStamp_s.u32SysTime*256+x.vStamp_s.u8SysTime,wTag:x.vTag_u16&255,wTagFull:x.vTag_u16,sTag:PA.resultToString(x.vTag_u16),_dbg:x.vDevID_u32.toString(16),bVersion:1,_dlen:x.vDLen_u16,bRes:x.vRes_u8,bSeq:x.vSeq_u8,data:x.vData_pu8.length?new DataView(x.vData_pu8.buffer,x.vData_pu8.byteOffset,x.vData_pu8.length):null}}get utoStampNow(){return{u32SysTime:Math.floor(Date.now()/1e3)-946598400,u8SysTime:0}}get utoStampNow40(){return this.utoStampNow.u32SysTime*256}async requestUto(x,r=0){await this.utoPortLock.requestLock();try{if(!this.sendUto)return null;let e=Math.trunc(r/256),i=r&255;return await this.sendWithRetry((o,t,B)=>{if(o.bCmd===0){let l=this.resultVerdict(o);l===5||l===0||l===4?t(null):B(o);return}if(o.wTagFull!==x)return B(o);t(o)},async()=>{this.sendUto(x,{u32SysTime:e,u8SysTime:i}),await this.lastTxWrite},{timeoutMessage:`[UtoMaster] requestUto: no response from device for tag=0x${x.toString(16)}`})}finally{this.utoPortLock.unlock()}}copyDataView(x){return new Uint8Array(x.buffer.slice(x.byteOffset,x.byteOffset+x.byteLength))}static resultCode(x){return{verdict:x.wTagFull&-257,disc:(x.wTagFull&256)!==0}}resultVerdict(x){let{verdict:r,disc:e}=gt.resultCode(x);return e&&(this.logger.warn(`[UtoMaster] device requested disconnect (RESULT 0x${x.wTagFull.toString(16).padStart(4,"0")})`),this.emit("deviceDisconnectRequested",x.wTagFull)),r}static concatChunks(x){let r=x.reduce((o,t)=>o+t.length,0),e=new Uint8Array(r),i=0;for(let o of x)e.set(o,i),i+=o.length;return e}sendWithRetry(x,r,e){let i=e?.timeoutMs??LE,o=e?.maxRetries??RE;return new Promise((t,B)=>{let l=0,D=!1,j=()=>{},b,k={resolve:y=>{D=!0,clearTimeout(b),this.removeListener("utoFrame",j),t(y)},reject:y=>{D=!0,clearTimeout(b),this.removeListener("utoFrame",j),B(y)}},$=async()=>{j=y=>x(y,k.resolve,k.reject),this.once("utoFrame",j);try{await r()}catch(y){if(D)return;this.removeListener("utoFrame",j),B(y);return}D||(b=setTimeout(()=>{if(this.removeListener("utoFrame",j),l>=o){B(new Error(e?.timeoutMessage??`[UtoMaster] no response from device after ${o} retries`));return}l++,this.logger.warn(`[UtoMaster] no response within ${i}ms, retrying (${l}/${o})`),$()},i))};$()})}createFrameIdleGuard(x,r,e){let i,o=()=>{i!==void 0&&(clearTimeout(i),i=void 0)};return{arm:()=>{o(),i=setTimeout(()=>{i=void 0,this.removeListener("utoFrame",x),e()},r)},clear:o}}async requestHistoricUtos(x,r,e,i=sa,o=0,t){return await this.utoPortLock.requestLock(),new Promise((B,l)=>{if(!this.sendUto)return B([]);let D=[],j=0,b=Promise.resolve(),k=P=>{if($.arm(),P.bCmd===0){$.clear(),this.settleHistoricTransfer(P,D,t,b,B,l);return}if(P.wTagFull===x&&P.data&&(D.push({stamp40:P.stamp,data:this.copyDataView(P.data)}),e?.(++j),t&&o>0&&D.length>=o)){let N=D.splice(0);b=b.then(()=>t(N))}this.once("utoFrame",k)},$=this.createFrameIdleGuard(k,i,()=>l(new Error(`[UtoMaster] requestHistoricUtos timed out after ${i}ms (tag=0x${x.toString(16)}, ${j} records received)`)));this.once("utoFrame",k),$.arm();let y=Math.trunc(r/256),q=r&255;this.sendUto(x,{u32SysTime:y,u8SysTime:q})}).finally(()=>{this.utoPortLock.unlock()})}settleHistoricTransfer(x,r,e,i,o,t){let B=this.resultVerdict(x);if(!(B===5||B===0||B===4)){i.then(()=>t(x)).catch(t);return}let D=e&&r.length>0?r.splice(0):null;(D?i.then(()=>e(D)):i).then(()=>o(e?[]:r)).catch(t)}async requestFile(x,r,e=sa){return await this.utoPortLock.requestLock(),new Promise((i,o)=>{if(!this.SendUtoCmdExt)return i(new Uint8Array(0));let t=[],B=0,l=b=>{if(D.arm(),b.bCmd===0){D.clear();let k=this.resultVerdict(b);k===5||k===0?i(gt.concatChunks(t)):o(b);return}if(b.bCmd===3&&b.data){let k=this.copyDataView(b.data);t.push(k),B+=k.byteLength,r?.(B)}this.once("utoFrame",l)},D=this.createFrameIdleGuard(l,e,()=>o(new Error(`[UtoMaster] requestFile timed out after ${e}ms (file="${x}", ${B} bytes received)`)));this.once("utoFrame",l),D.arm();let j=new Uint8Array(x.length+1);for(let b=0;b<x.length;b++)j[b]=x.charCodeAt(b)&255;this.SendUtoCmdExt(8,3,{u32SysTime:0,u8SysTime:0},j)}).finally(()=>{this.utoPortLock.unlock()})}async deleteFile(x){let r=new Uint8Array(x.length+1);for(let e=0;e<x.length;e++)r[e]=x.charCodeAt(e)&255;await this.sendUTOCmdExt(10,3,r,0)}async sendSetValue(x,r,e){this.isInitialized();let i=new Uint8Array(r.length);PA.cp1252Pack(i,0,r.length,r);try{return await this.sendUTOCmdExt(11,x,i,e),{outcome:"ok",resultCode:0}}catch(o){let t=o;if(t&&t.bCmd===0&&typeof t.wTagFull=="number"){let{verdict:B}=gt.resultCode(t),l=t.wTagFull;return B===4?{outcome:"stamp",resultCode:l}:B===7||B===9?{outcome:"denied",resultCode:l}:{outcome:"error",resultCode:l}}return this.logger.error(`[UtoMaster] sendSetValue transport error tag=0x${x.toString(16)}: ${o}`),{outcome:"error"}}}async requestDeviceInfo(){let x=await this.requestUto(0,this.utoStampNow40);return x?PA.decode_DEVINFO(x):null}async requestContext(){let x=await this.requestUto(128,this.utoStampNow40);return x?PA.decode_CONTEXT(x):null}async writeContext(x){await this.sendUTOCmdExt(3,128,PA.encode_CONTEXT(x))}async requestFileList(x){return await this.utoPortLock.requestLock(),new Promise((r,e)=>{if(!this.SendUtoCmdExt)return r({});let i={},o=t=>this.handleFileListFrame(t,i,x,r,e,o);this.once("utoFrame",o),this.SendUtoCmdExt(7,3,{u32SysTime:0,u8SysTime:0},new Uint8Array(0))}).finally(()=>{this.utoPortLock.unlock()})}handleFileListFrame(x,r,e,i,o,t){if(x.bCmd===0){let B=this.resultVerdict(x);B===5||B===0?i(e?r[e]?{[e]:r[e]}:{}:r):o(x);return}try{let B=PA.decode_FILEMAP(x);r[B.name]=B}catch(B){o(B);return}this.once("utoFrame",t)}async requestStamps(){let x=await this.requestUto(1,this.utoStampNow40);return x?PA.decode_STAMPS(x):null}async sendFile(x,r,e,i){let o=r;x===2&&(o=new Uint8Array(r.length+1),o.set(new Uint8Array(r),1),o[0]=x);let t={name:i??TE,stamp:e?PA.msToStamp40(e):this.utoStampNow.u32SysTime,size:o.length,_flags:11,crc32:$E(o)},B=PA.encode_FILEMAP(t);if(!await this.sendUTOCmdExt(9,3,B,0))for(let j=0;j<o.length;j+=2048){let b=Math.min(2048,o.byteLength-j),k=new Uint8Array(o.buffer,o.byteOffset+j,b);await this.sendUTOCmdExt(3,3,k,j*256);let y=(j+b)/o.byteLength*100;this.emit("installing",y.toFixed(0))}this.emit("installing",null)}async sendUTOCmdExt(x,r,e,i){await this.utoPortLock.requestLock();try{if(!this.SendUtoCmdExt)return null;let o=i??this.utoStampNow.u32SysTime,t=Math.trunc(o/256),B=o&255;return await this.sendWithRetry((l,D,j)=>{if(l.bCmd!==0){j(l);return}this.resultVerdict(l)===0?D(null):j(l)},async()=>{this.SendUtoCmdExt(x,r,{u32SysTime:t,u8SysTime:B},e),await this.lastTxWrite},{timeoutMessage:`[UtoMaster] sendUTOCmdExt: no response from device for cmd=${x} tag=0x${r.toString(16)}`})}finally{this.utoPortLock.unlock()}}async sendUTOData(x,r,e){return this.sendUTOCmdExt(3,x,r,e)}packOtpFlashString(x){let r=new Uint8Array(1024);return PA.cp1252Pack(r,0,1024,x),r}async writeAppOtp(x){await this.sendUTOData(26434,this.packOtpFlashString(x))}async writeAppFlash(x){await this.sendUTOData(26435,this.packOtpFlashString(x))}async writeSysOtp(x){await this.sendUTOData(26432,this.packOtpFlashString(x))}async writeSysFlash(x){await this.sendUTOData(26433,this.packOtpFlashString(x))}async initiateEcsHandshake(x){if(this.isInitialized(),x.companionPublicKey.length!==32)throw new Error(`companionPublicKey must be 32 bytes, got ${x.companionPublicKey.length}`);if(x.companionPrivateKey.length!==32&&x.companionPrivateKey.length!==64)throw new Error(`companionPrivateKey must be 32 bytes (seed) or 64 bytes (seed||public), got ${x.companionPrivateKey.length}`);let r=x.companionPublicKey.slice(0,32),e=x.companionPrivateKey.slice(0,32);this.logger.info(`[ecs] initiateEcsHandshake: pub.len=${r.length} seed.len=${e.length} state(pre)=${this.mdnComInterface.MdnCom_GetEcsState?.()}`);let i=this.mdnComInterface.MdnCom_SetCompanionKeypair(r,e);return this.logger.info(`[ecs] MdnCom_SetCompanionKeypair returned ${i}`),i<0?{success:!1,resultCode:i}:new Promise((o,t)=>{if(x.signal?.aborted){t(new Error("Operation aborted"));return}let B=()=>{this.ecsHandshakeResolver&&(this.logger.warn("[ecs] abort signal fired \u2014 resetting WASM state"),this.ecsHandshakeResolver=null,this.mdnComInterface.MdnCom_ResetEcs(),t(new Error("Operation aborted")))};x.signal?.addEventListener("abort",B,{once:!0}),this.ecsHandshakeResolver=D=>{this.logger.info(`[ecs] resolver invoked: result=${JSON.stringify(D)}`),x.signal?.removeEventListener("abort",B),D.success&&(this.encrypted=!0),o(D)},this.logger.info("[ecs] calling MdnCom_InitiateEcsHandshake()");let l=this.mdnComInterface.MdnCom_InitiateEcsHandshake();this.logger.info(`[ecs] MdnCom_InitiateEcsHandshake returned ${l} state(post)=${this.mdnComInterface.MdnCom_GetEcsState?.()}`),l<0?(this.ecsHandshakeResolver=null,x.signal?.removeEventListener("abort",B),o({success:!1,resultCode:l})):this.logger.info("[ecs] awaiting device INIT response via MdnCom_RawRx ...")})}resetEcs(){this.isInitialized(),this.mdnComInterface.MdnCom_ResetEcs(),this.ecsHandshakeResolver=null}};var He={NAN:1,OF:2,UF:3,OL:4,SC:5};var vc=[["NAN",He.NAN],["OF",He.OF],["UF",He.UF],["OL",He.OL],["SC",He.SC]];var OE=5e3,ha=class ga extends ma.EventEmitter{constructor(x=ae){super(),c0(this,"logger",x),c0(this,"ws",null),c0(this,"bridgeTransport",null),c0(this,"bridgeSignal"),c0(this,"bridgeResolve",null),c0(this,"bridgeReject",null),c0(this,"serverMessageCount",0),c0(this,"settled",!1),c0(this,"abortHandler",null),c0(this,"connectTimeout"),c0(this,"writeQueue",[]),c0(this,"isProcessingQueue",!1),c0(this,"queueAborted",!1),c0(this,"queueDrainPromise",Promise.resolve()),c0(this,"transportUnsubscribe",null)}static buildSyncUrl(x,r){return`wss://${x}/uto/1/sync/${r}`}resetBridgeState(){this.serverMessageCount=0,this.settled=!1,this.abortHandler=null,this.connectTimeout=void 0,this.writeQueue=[],this.isProcessingQueue=!1,this.queueAborted=!1,this.queueDrainPromise=Promise.resolve(),this.bridgeResolve=null,this.bridgeReject=null,this.bridgeTransport=null,this.bridgeSignal=void 0,this.transportUnsubscribe=null}async processWriteQueue(){if(!this.isProcessingQueue){for(this.isProcessingQueue=!0;this.writeQueue.length>0&&!this.queueAborted;){let x=this.writeQueue.shift();try{await ba(this.bridgeTransport,x)}catch(r){let e=r instanceof Error?r.message:String(r);this.logger.error(`Error writing to transport: ${e}`)}}this.isProcessingQueue=!1}}cleanup(){this.transportUnsubscribe&&(this.transportUnsubscribe(),this.transportUnsubscribe=null),this.abortHandler&&this.bridgeSignal&&(this.bridgeSignal.removeEventListener("abort",this.abortHandler),this.abortHandler=null),this.connectTimeout!==void 0&&(clearTimeout(this.connectTimeout),this.connectTimeout=void 0),this.ws=null}settle(x,r){this.settled||(this.settled=!0,this.cleanup(),x==="resolve"?this.bridgeResolve?.({serverMessageCount:this.serverMessageCount}):this.bridgeReject?.(r))}attachWebSocketHandlers(x,r){let e=i=>{x.readyState===WebSocket.OPEN&&!this.bridgeSignal?.aborted&&!this.settled&&x.send(i)};this.abortHandler=()=>{this.logger.info("WebSocket bridge aborted"),this.queueAborted=!0,this.writeQueue.length=0,(x.readyState===WebSocket.OPEN||x.readyState===WebSocket.CONNECTING)&&x.close(),this.settle("reject",new Error("Operation aborted"))},this.bridgeSignal&&this.bridgeSignal.addEventListener("abort",this.abortHandler),x.onopen=()=>{this.connectTimeout!==void 0&&(clearTimeout(this.connectTimeout),this.connectTimeout=void 0),this.logger.info(`WebSocket connected to ${r}`),this.transportUnsubscribe=this.bridgeTransport.onData(e),this.emit("wsConnected")},x.onmessage=i=>{this.serverMessageCount++,this.emit("serverMessage",this.serverMessageCount),!(this.bridgeSignal?.aborted||this.settled)&&(this.writeQueue.push(i.data),this.isProcessingQueue||(this.queueDrainPromise=this.processWriteQueue()))},x.onclose=i=>{this.logger.info(`WebSocket closed (server=${r}, code=${i.code}, messages=${this.serverMessageCount})`),this.emit("wsClosed",i.code,i.reason),this.queueDrainPromise.then(()=>this.settle("resolve")).catch(()=>this.settle("resolve"))},x.onerror=i=>{this.logger.error(`WebSocket error (server=${r})`),this.emit("wsError",i),this.queueAborted=!0,this.writeQueue.length=0,this.settle("reject",new Error("WebSocket error"))}}async bridge(x,r,e,i){return new Promise((o,t)=>{if(i?.aborted){t(new Error("Operation aborted"));return}this.resetBridgeState(),this.bridgeTransport=x,this.bridgeSignal=i,this.bridgeResolve=o,this.bridgeReject=t;let B=ga.buildSyncUrl(r,e);this.logger.info(`Opening WebSocket: ${B}`);let l=new WebSocket(B);l.binaryType="arraybuffer",this.ws=l,this.connectTimeout=setTimeout(()=>{l.readyState===WebSocket.CONNECTING&&(this.logger.error("WebSocket connection timeout"),l.close(),this.settle("reject",new Error("WebSocket connection timeout")))},OE),this.attachWebSocketHandlers(l,r)})}close(){this.ws&&this.ws.readyState===WebSocket.OPEN&&this.ws.close()}},GE="https://lic.mydatanet.at/api/2/";async function UE(A,x=GE){let r=`${x}devices/${A}/assignment`,e=await fetch(r);if(!e.ok)throw new Error(`Failed to get device assignment: ${e.status} ${e.statusText}`);return e.json()}var HE=class extends ja.EventEmitter{constructor(A=ae){super(),c0(this,"logger",A)}async execute(A,x,r,e){let i=r;i||(this.logger.info("[LegacySync] No serverUrl provided, resolving via device assignment..."),this.emit("syncPhase",{phase:"resolving-server"}),i=(await UE(x)).server_url,this.logger.info("[LegacySync] Resolved server URL: "+i)),this.logger.info("[LegacySync] Starting legacy sync (server="+i+")");let o=new ha(this.logger);o.on("wsConnected",()=>this.emit("wsConnected")),o.on("wsClosed",(B,l)=>this.emit("wsClosed",B,l)),o.on("wsError",B=>this.emit("wsError",B)),o.on("serverMessage",B=>this.emit("serverMessage",B));let t=await o.bridge(A,i,x,e);return this.logger.info("[LegacySync] Legacy sync completed (serverMessages="+t.serverMessageCount+")"),{serverMessageCount:t.serverMessageCount}}},ka="Operation aborted";function KE(A){return A instanceof Error?A.message:String(A)}function pn(A){if(A?.aborted)throw new Error(ka)}var zE=class extends ya.EventEmitter{constructor(A,x=ae){super(),c0(this,"atHandler",A),c0(this,"logger",x)}async execute(A,x,r,e){this.logger.info("Starting debug-enabled sync");let i=[{name:"mnt",queryServer:t=>this.atHandler.queryMntServerConfig(t),initiateSync:t=>this.atHandler.initiateMntSync(t)},{name:"mdn",queryServer:t=>this.atHandler.queryMdnServerConfig(t),initiateSync:t=>this.atHandler.initiateMdnSync(t)}],o={};for(let t of i)try{o[t.name]=await this.runSyncPhase(t,A,x,e)}catch(B){if(e?.aborted)throw new Error(ka);let l=`${t.name.toUpperCase()} sync phase failed: ${KE(B)}`;throw this.logger.error(l),new Error(l)}return this.logger.info(`Debug sync completed (mntMessages=${o.mnt}, mdnMessages=${o.mdn})`),{mntServerMessageCount:o.mnt,mdnServerMessageCount:o.mdn}}async runSyncPhase(A,x,r,e){pn(e);let i=A.name.toUpperCase();this.emit("syncPhase",{phase:A.name}),this.logger.info(`Phase: Querying ${i} server configuration`);let o=await A.queryServer(e);this.logger.info(`${i} server domain: ${o}`),pn(e),await A.initiateSync(e),pn(e);let t=await this.syncWithServer(x,o,r,e);return this.logger.info(`${i} phase completed (serverMessages=${t.serverMessageCount})`),t.serverMessageCount}async syncWithServer(A,x,r,e){let i=new ha(this.logger),o=!1;i.on("wsConnected",()=>this.emit("wsConnected"));let t=this.atHandler.createConCloseMonitor(()=>{o=!0,this.logger.info("Device initiated close (+CONCLOSE), closing WebSocket"),i.close()});try{let B=await i.bridge(A,x,r,e);return o?this.logger.info("Connection closed by device (+CONCLOSE)"):(this.logger.info("Connection closed by server, sending +CONCLOSE to device"),await this.atHandler.sendConnectionClose(e)),B}finally{t()}}},_a=class extends pa.EventEmitter{constructor(A,x,r=ae){super(),c0(this,"syncTransport",A),c0(this,"logger",r),c0(this,"atHandler"),this.atHandler=x??null}async sync(A){let x=this.atHandler?"debug":"legacy";this.emit("syncStart",{mode:x});try{if(this.atHandler)try{return this.emit("syncPhase",{phase:"debug-sync"}),await this.syncWithDebug(A)}catch(r){return this.logger.warn("[SyncManager] Debug sync failed, falling back to legacy sync: "+(r instanceof Error?r.message:String(r))),this.emit("syncPhase",{phase:"debug-fallback-legacy"}),await this.syncLegacy(A)}return this.emit("syncPhase",{phase:"legacy"}),await this.syncLegacy(A)}catch(r){throw this.emit("syncError",r),r}}async syncLegacy(A){let x=new HE(this.logger);x.on("syncPhase",i=>this.emit("syncPhase",i));let e={mode:"legacy",serverMessageCount:(await x.execute(this.syncTransport,A.serialNumber,A.serverUrl,A.signal)).serverMessageCount};return this.emit("syncComplete",e),e}async syncWithDebug(A){let x=new zE(this.atHandler,this.logger);x.on("syncPhase",i=>this.emit("syncPhase",i));let r=await x.execute(this.syncTransport,A.serialNumber,A.serverUrl??"",A.signal),e={mode:"debug",serverMessageCount:r.mntServerMessageCount+r.mdnServerMessageCount,mntServerMessageCount:r.mntServerMessageCount,mdnServerMessageCount:r.mdnServerMessageCount};return this.emit("syncComplete",e),e}dispose(){}},XA={MNT_CFG:"at+mntcfg?",MDN_CFG:"at+mdncfg?",MNT_SYNC:"at+mntsync",MDN_SYNC:"at+mdnsync",CON_CLOSE:"at+conclose",APP_GET_METADATA:"AT+APP=GETMETADATA",APP_GET_DATAVALUE:"AT+APP=GETDATAVALUE",APP_TRIG_MEASURE:"AT+APP=TRIGMEASURE",APP_TRIG_MEASURE_TEST:"AT+APP=TRIGMEASURE=?",ATI:"ati",RM2M_STATE:"at+rm2mstate?",TX:"at+tx",TX_MAINTENANCE:"at+tx=4",TX_GSM_POSITION:"at+tx=1",TX_MODE_TRIGGERED:"at+txmode=0",TX_MODE_WAKEUP:"at+txmode=1",TX_MODE_ONLINE:"at+txmode=2",COMPANION_CERT:"AT+COMPCERT",COMPANION_CERT_TEST:"AT+COMPCERT=?"},Sx={OK:"OK",ERROR:"ERROR",SYNC_START:"+SYNC START",MEASURED:"+MEASURED",CON_CLOSE:"+CONCLOSE",MNT_CFG_PREFIX:"+MNTCFG",MDN_CFG_PREFIX:"+MDNCFG",RM2M_STATE:"+RM2MSTATE",ERROR_PIN_REQUIRED:"ERROR PIN REQUIRED",ERROR_NO_DATA:"ERROR NO DATA",COMPCERT_ERROR:/\+COMPCERT ERROR:\s*(\d+)/},Hx=1e4;var JE=/(?:ERROR PIN REQUIRED|ERROR NO DATA|ERROR|OK)\r\n/;function VE(){return{buffer:"",closedByDevice:!1,reset(){this.buffer="",this.closedByDevice=!1}}}var wr="Operation aborted",CA=class extends Error{constructor(A="AT command handler was disposed"){super(A),this.name="AtHandlerDisposedError"}},WE=class extends Error{constructor(A="Device returned ERROR response"){super(A),this.name="AtDeviceError"}},$a=class extends wa.EventEmitter{constructor(A,x=ae){super(),c0(this,"transport",A),c0(this,"logger",x),c0(this,"mutex",new ua("AtCommandHandler")),c0(this,"bufferState",VE()),c0(this,"responseCallback",null),c0(this,"decoder",new TextDecoder),c0(this,"dataHandler"),c0(this,"disposeTransportListener"),c0(this,"isDisposed",!1),c0(this,"activeAbort",null),c0(this,"session"),this.dataHandler=r=>this.handleIncomingData(r),this.disposeTransportListener=this.transport.onData(this.dataHandler),this.session={sendAndWait:(r,e,i=Hx,o)=>this.executeSendAndWait(r,e,i,o),sendRaw:(r,e=Hx)=>this.executeSendRaw(r,e),queryMntServerConfig:r=>this.executeQueryConfig(XA.MNT_CFG,Sx.MNT_CFG_PREFIX,r),queryMdnServerConfig:r=>this.executeQueryConfig(XA.MDN_CFG,Sx.MDN_CFG_PREFIX,r),initiateMntSync:r=>this.executeInitiateMntSync(r),initiateMdnSync:r=>this.executeInitiateMdnSync(r),sendCompanionCert:(r,e)=>this.executeSendCompanionCert(r,e),queryCompanionCertSupport:r=>this.executeQueryCompanionCertSupport(r),sendConnectionClose:r=>this.executeSendConnectionClose(r)}}get isBusy(){return this.mutex.islocked}get disposed(){return this.isDisposed}async withAtLock(A){await this.mutex.requestLock();try{if(this.isDisposed)throw new CA;return await A(this.session)}finally{this.mutex.unlock()}}handleIncomingData(A){let x=this.decoder.decode(A);this.bufferState.buffer+=x,this.emit("data",x),this.responseCallback&&this.responseCallback(this.bufferState.buffer),!this.responseCallback&&this.bufferState.buffer.length>1e3&&(this.bufferState.buffer=this.bufferState.buffer.slice(-500))}encodeCommand(A){let x=new Uint8Array(A.length+2);for(let r=0;r<A.length;r++)x[r]=A.charCodeAt(r);return x[A.length]=10,x[A.length+1]=13,x.buffer}makeCleanup(A,x,r){return()=>{this.responseCallback=null,this.activeAbort=null,clearTimeout(A),x&&r&&x.removeEventListener("abort",r)}}makeResponseChecker(A,x,r,e){let i=A instanceof RegExp;return o=>{if(A!==Sx.ERROR&&o.includes(Sx.ERROR)){x(),e(new WE);return}let t=!1,B=o;if(i){let l=o.match(A);l&&(t=!0,B=l[0])}else t=o.includes(A);if(t){x(),r(B);return}o.length>500&&(this.bufferState.buffer=this.bufferState.buffer.slice(-250))}}executeSendAndWait(A,x,r,e){return new Promise((i,o)=>{if(this.isDisposed){o(new CA);return}if(e?.aborted){o(new Error(wr));return}A&&(this.bufferState.buffer="");let B=x instanceof RegExp?x.source:x,l={cleanup:()=>{}},D=setTimeout(()=>{l.cleanup(),o(new Error(`Timeout waiting for response: ${B}`))},r),j=()=>{l.cleanup(),o(new Error(wr))};l.cleanup=this.makeCleanup(D,e,j),e&&e.addEventListener("abort",j);let b=this.makeResponseChecker(x,l.cleanup,i,o);this.responseCallback=b,this.activeAbort=()=>{l.cleanup(),o(new CA)},!A&&this.bufferState.buffer&&b(this.bufferState.buffer),A&&(this.logger.info("TX: "+A),this.transport.write(this.encodeCommand(A)).catch(k=>{l.cleanup(),o(k)}))})}executeSendRaw(A,x){return new Promise((r,e)=>{if(this.isDisposed){e(new CA);return}this.bufferState.buffer="";let i=setTimeout(()=>{o(),e(new Error(`Timeout waiting for raw AT response to: ${A}`))},x),o=this.makeCleanup(i);this.activeAbort=()=>{o(),e(new CA)},this.responseCallback=t=>{JE.test(t)&&(o(),this.logger.info("RX: "+t.trim()),r(t))},this.logger.info("TX: "+A),this.transport.write(this.encodeCommand(A)).catch(t=>{o(),e(t)})})}executeQueryConfig(A,x,r){return new Promise((e,i)=>{if(this.isDisposed){i(new CA);return}if(r?.aborted){i(new Error(wr));return}this.bufferState.buffer="";let o={cleanup:()=>{}},t=setTimeout(()=>{o.cleanup(),this.logger.error(`Timeout waiting for ${x} server config`),i(new Error(`Timeout waiting for ${x} response \u2014 server configuration not available`))},Hx),B=()=>{o.cleanup(),i(new Error(wr))};o.cleanup=this.makeCleanup(t,r,B),r&&r.addEventListener("abort",B);let l=new RegExp(`\\${x}:\\s*<?([^,>\\s]+)>?`);this.activeAbort=()=>{o.cleanup(),i(new CA)},this.responseCallback=D=>{let j=D.match(l);if(j){o.cleanup();let b=j[1].trim();this.logger.info(`Server config ${x}: ${b}`),e(b);return}D.length>500&&(this.bufferState.buffer=this.bufferState.buffer.slice(-250))},this.logger.info("TX: "+A),this.transport.write(this.encodeCommand(A)).catch(D=>{o.cleanup(),this.logger.error(`Failed to send ${x} command: `+(D instanceof Error?D.message:String(D))),i(D)})})}async sendAndWait(A,x,r=Hx,e){return this.withAtLock(i=>i.sendAndWait(A,x,r,e))}async sendRaw(A,x=Hx){return this.withAtLock(r=>r.sendRaw(A,x))}async queryMntServerConfig(A){return this.withAtLock(x=>x.queryMntServerConfig(A))}async queryMdnServerConfig(A){return this.withAtLock(x=>x.queryMdnServerConfig(A))}async initiateMntSync(A){return this.withAtLock(x=>x.initiateMntSync(A))}async initiateMdnSync(A){return this.withAtLock(x=>x.initiateMdnSync(A))}async sendCompanionCert(A,x){return this.withAtLock(r=>r.sendCompanionCert(A,x))}async executeInitiateMntSync(A){this.logger.info("Initiating MNT sync"),await this.executeSendAndWait(XA.MNT_SYNC,Sx.OK,Hx,A)}async executeInitiateMdnSync(A){this.logger.info("Initiating MDN sync");try{await this.executeSendAndWait(XA.MDN_SYNC,Sx.OK,Hx,A),await this.executeSendAndWait(null,Sx.SYNC_START,Hx,A)}catch(x){this.logger.error("Failed to initiate MDN sync: "+(x instanceof Error?x.message:String(x)))}}async executeSendCompanionCert(A,x){if(this.isDisposed)throw new CA;if(x?.aborted)throw new Error(wr);let r=A.replace(/-/g,"+").replace(/_/g,"/")+"=".repeat((4-A.length%4)%4),e=r.length,i=await this.executeSendAndWait(`${XA.COMPANION_CERT}=${e}`,Sx.OK,Hx,x),o=parseInt(i.match(/(\d+)/)[1],10),t=0;for(;t<e;){let B=Math.min(o,e-t),l=r.slice(t,t+B);await this.executeSendAndWait(`${XA.COMPANION_CERT}=${B},${t},${l}`,Sx.OK,Hx,x),t+=B}return this.executeCompanionCertFinalize(e,x)}executeCompanionCertFinalize(A,x){return new Promise((r,e)=>{if(this.isDisposed){e(new CA);return}if(x?.aborted){e(new Error(wr));return}this.bufferState.buffer="";let i={cleanup:()=>{}},o=setTimeout(()=>{i.cleanup(),e(new Error("Timeout waiting for AT+COMPCERT finalize response"))},Hx),t=()=>{i.cleanup(),e(new Error(wr))};i.cleanup=this.makeCleanup(o,x,t),x&&x.addEventListener("abort",t),this.activeAbort=()=>{i.cleanup(),e(new CA)},this.responseCallback=l=>{let D=l.match(Sx.COMPCERT_ERROR);if(D){i.cleanup(),r({success:!1,errorCode:parseInt(D[1],10)});return}if(l.includes(Sx.OK)){i.cleanup(),r({success:!0});return}l.length>500&&(this.bufferState.buffer=this.bufferState.buffer.slice(-250))};let B=`${XA.COMPANION_CERT}=0,${A}`;this.logger.info("TX: "+B),this.transport.write(this.encodeCommand(B)).catch(l=>{i.cleanup(),e(l)})})}async queryCompanionCertSupport(A){return this.withAtLock(x=>x.queryCompanionCertSupport(A))}async executeQueryCompanionCertSupport(A){try{return await this.executeSendAndWait(XA.COMPANION_CERT_TEST,Sx.OK,Hx,A),!0}catch(x){if(x instanceof CA)throw x;return!1}}async sendConnectionClose(A){return this.withAtLock(x=>x.sendConnectionClose(A))}async executeSendConnectionClose(A){try{await this.executeSendAndWait(XA.CON_CLOSE,Sx.CON_CLOSE,Hx,A)}catch(x){this.logger.error("Failed to receive +CONCLOSE response: "+(x instanceof Error?x.message:String(x)))}}createConCloseMonitor(A){let x="",r=e=>{x+=e,x.includes(Sx.CON_CLOSE)&&(x="",this.bufferState.closedByDevice=!0,A()),x.length>1e3&&(x=x.slice(-500))};return this.on("data",r),()=>{this.off("data",r)}}dispose(){this.isDisposed||(this.isDisposed=!0,this.activeAbort?.(),this.disposeTransportListener(),this.responseCallback=null,this.activeAbort=null,this.removeAllListeners())}};var jn="requesting-cert",mn="cert-revoked",XE=class kn extends qa.EventEmitter{constructor(){super(...arguments),c0(this,"utoMaster",null)}async authenticate(x){let r=x.logger??Aa,{signal:e,atHandler:i}=x,o=()=>{if(e?.aborted)throw new Error("Operation aborted")};try{this.emitPhase("checking-cert"),o();let t=await this.loadOrGenerateKeypair(x.storage),B=await x.storage.getCertificate(x.apiConfig.apiHost);(B===null||!kE(B.notAfter))&&(r.info("Companion cert missing or near expiry \u2014 requesting new cert"),this.emitPhase(jn),o(),B=await this.requestAndStoreCert(t,x)),this.utoMaster=new Sn(x.utoTransport,r),this.emitPhase("cert-presenting"),o();let l=B;B=await i.withAtLock(async b=>{let k=await this.presentCertWithRefresh(b,l,t,x);return await b.initiateMdnSync(e),k}),this.emitPhase("ecs-handshake"),o(),await this.utoMaster.init();let D=await this.utoMaster.initiateEcsHandshake({companionPublicKey:t.publicKey,companionPrivateKey:t.privateKey,signal:e});if(!D.success)return this.fail("ecs-handshake",`ECS handshake failed (code ${D.resultCode})`);this.emitPhase("connected");let j=this.utoMaster;return this.utoMaster=null,{success:!0,utoMaster:j}}catch(t){return this.handleError(t)}}dispose(){this.utoMaster=null,this.removeAllListeners()}async loadOrGenerateKeypair(x){let r=await x.getKeypair();if(r!==null)return r;let e=await Qs();return await x.saveKeypair(e),e}static async fetchCertOrThrowRevoked(x,r){try{return await yE(r.apiConfig,{publicKey:x.publicKey,subject:r.subject})}catch(e){throw e instanceof wt&&(e.httpStatus===401||e.httpStatus===404)?(await r.storage.clearCertificate(r.apiConfig.apiHost),new hn(mn,`Companion cert revoked or session expired (HTTP ${e.httpStatus})`,{httpStatus:e.httpStatus,apiCode:e.code})):e}}async requestAndStoreCert(x,r){let e=await kn.fetchCertOrThrowRevoked(x,r),i={base64Url:e.certificateBase64Url,notAfter:e.notAfter};return await r.storage.saveCertificate(i,r.apiConfig.apiHost),i}static async refreshCertificate(x){let r=await x.storage.getKeypair(),e=r!==null?r:await(async()=>{let t=await Qs();return await x.storage.saveKeypair(t),t})(),i=await kn.fetchCertOrThrowRevoked(e,x),o={base64Url:i.certificateBase64Url,notAfter:i.notAfter};return await x.storage.saveCertificate(o,x.apiConfig.apiHost),o}static async clearCredentials(x,r){await x.clearCertificate(r)}async presentCertWithRefresh(x,r,e,i){let o=await x.sendCompanionCert(r.base64Url,i.signal);if(o.success||o.errorCode===3&&((i.logger??Aa).info("Device reported EXPIRED \u2014 refreshing cert and retrying"),this.emitPhase(jn),r=await this.requestAndStoreCert(e,i),o=await x.sendCompanionCert(r.base64Url,i.signal),o.success))return r;throw new hn("cert-presenting",`AT+COMPCERT rejected (code ${o.errorCode??"?"})`,{certErrorCode:o.errorCode})}emitPhase(x){this.emit("phase",x)}fail(x,r){return this.emit("phase","error"),{success:!1,phase:x,error:r}}handleError(x){return x instanceof hn?(this.emit("phase",x.phase===mn?mn:"error"),{success:!1,phase:x.phase,error:x.message,certErrorCode:x.certErrorCode,httpStatus:x.httpStatus,apiCode:x.apiCode}):(this.emit("phase","error"),x instanceof wt?{success:!1,phase:jn,error:x.message,httpStatus:x.httpStatus,apiCode:x.code}:{success:!1,phase:"error",error:x instanceof Error?x.message:String(x)})}};c0(XE,"encodePublicKeyBase64Url",ca);var hn=class extends Error{constructor(A,x,r={}){super(x),c0(this,"phase",A),c0(this,"extra",r),this.name="AuthError"}get certErrorCode(){return this.extra.certErrorCode}get httpStatus(){return this.extra.httpStatus}get apiCode(){return this.extra.apiCode}};var YA={FAILED:1,ACTIVE:2,STARTED:4,RETRY:8,WAKEUPABLE:16,EXTSIM:32,DISABLED:64,WAKEUP:256,POSUPDATE_ACTIVE:512},Ec=YA.FAILED|YA.ACTIVE|YA.STARTED|YA.RETRY|YA.WAKEUPABLE|YA.EXTSIM|YA.DISABLED|YA.WAKEUP|YA.POSUPDATE_ACTIVE,Bc=`${Sx.RM2M_STATE}: `;var QA={configurationNumber:1,utoInterface:0,utoEndpoint:1,utoSize:64*1024,debugInterface:1,debugEndpoint:2,debugSize:1024};var qt=class{interface="usb";#r=new Set;#x;#e;#t;#A=!1;constructor(x,r){this.#x=x;let i=x.configuration.interfaces[r].alternate.endpoints;this.#e=i.find(o=>o.direction==="in"),this.#t=i.find(o=>o.direction==="out")}async write(x){await this.#x.transferOut(this.#t.endpointNumber,x)}onData(x){let r={cb:x};return this.#r.add(r),this.#A||this.#n(),()=>{this.#r.delete(r)}}async#n(){for(this.#A=!0;this.#A&&this.#x.opened;)try{let x=await this.#x.transferIn(this.#e.endpointNumber,this.#e.packetSize);if(x.data&&x.data.byteLength>0)for(let r of this.#r)r.cb(x.data.buffer)}catch{break}}stop(){this.#A=!1}},Je=class extends qt{constructor(x){super(x,QA.utoInterface)}},St=class extends qt{constructor(x){super(x,QA.debugInterface)}};var YE=9540,Pa=new Sa.WebUSB({allowedDevices:[{vendorId:YE}]});async function QE(){return(await Pa.getDevices()).map(x=>({productName:x.productName,serialNumber:x.serialNumber||x.productName?.split(" ").pop(),vendorId:x.vendorId,productId:x.productId}))}async function Ta(A){let x=await QE();if(x.length===0){A.info("No USB devices found.");return}A.info("Available USB devices:"),x.forEach((r,e)=>{let i=r.productName||`Unknown Device (VID: 0x${r.vendorId.toString(16)}, PID: 0x${r.productId.toString(16)})`,o=r.serialNumber?` [${r.serialNumber}]`:"";A.log(` ${e+1}. ${i}${o}`)})}async function Pt(A,x){x.info(`Searching for device with serial number: ${A}`);let r=await Pa.getDevices();for(let e of r)if((e.serialNumber||e.productName?.split(" ").pop())?.toLowerCase()===A.toLowerCase())return x.info(`Device found: ${e.productName}`),e;return null}async function ZE(A,x){if(x)try{await x.dispose()}catch{}if(A.opened)try{await A.close().catch()}catch{}}async function Tt(A,x,r,e,i=!1){if(!await r.stat(x))return{success:!1,message:`File not found: ${x.fsPath}`};let t=await Pt(A,e);if(!t)return{success:!1,message:`Device not found with serial number: ${A}`};let B=await r.readFile(x),l;try{await t.open(),await t.selectConfiguration(QA.configurationNumber),await t.claimInterface(QA.utoInterface);let D=new Je(t);if(l=new Sn(D),await l.init(),i){l.on("mdnCom",b=>{e.log("mdnCom",b)}),l.on("mdnComError",b=>{e.log("mdnComError",b)});let j=-1;l.on("installing",b=>{b&&b!==j&&(j=b,e.info(`Upload progress: ${b}%`))})}return await l.requestDeviceInfo(),e.info("Device connected, starting upload..."),await l.sendFile(qn.pawn,new Uint8Array(B.buffer,B.byteOffset,B.length)),e.done("Upload completed successfully!"),{success:!0,message:"File uploaded successfully"}}catch(D){return{success:!1,message:`Upload failed: ${D instanceof Error?D.message:String(D)}`}}finally{await ZE(t,l)}}async function Na(A,x,r=!1){let e=await Pt(A,x);if(!e)return{success:!1,message:`Device not found with serial number: ${A}`};let i,o;try{await e.open(),await e.selectConfiguration(QA.configurationNumber),await e.claimInterface(QA.utoInterface),await e.claimInterface(QA.debugInterface);let t=new Je(e),B=new St(e);o=new $a(B,x),i=new _a(t,o,x),i.on("syncError",D=>x.error(`Sync error: ${D.message}`)),r&&(i.on("syncStart",({mode:D})=>x.log(`Sync mode: ${D}`)),i.on("syncPhase",({phase:D})=>x.log(`Sync phase: ${D}`)),i.on("syncComplete",D=>x.info(`Sync complete (mode: ${D.mode}, messages: ${D.serverMessageCount})`))),x.info("Syncing device...");let l=new AbortController;return await i.sync({serialNumber:A,signal:l.signal}),{success:!0,message:"Sync completed successfully"}}catch(t){return{success:!1,message:`Sync failed: ${t instanceof Error?t.message:String(t)}`}}finally{if(i?.dispose(),o?.dispose(),e.opened)try{await e.close().catch()}catch{}}}var Ia=require("vscode-uri");function It(A){return A instanceof Error?A.message:String(A)}function ZA(A,x){return{success:!1,errorCode:A,message:x}}async function AB(A){let{cwd:x,fs:r,logger:e,env:i,apiToken:o,options:t}=A;e.info("[1/5] Building project...");try{let B=t.part?t.part:!0;return await z.validateBasicManifest(x,r,null),await px.buildAll(x,r,e,i,o,B,!0),e.done("Build completed successfully"),null}catch(B){return ZA(1,`Build failed: ${It(B)}`)}}async function rB(A){let{logger:x,options:r}=A,{serial:e}=r;x.info(`[2/5] Searching for USB device with serial: ${e}...`);let i=await Pt(e,x);return i||ZA(2,`USB device not found with serial number: ${e}`)}async function eB(A){let{cwd:x,fs:r,logger:e,options:i}=A,{serial:o,debug:t}=i;e.info("[3/5] Uploading binary to USB device...");let B=Ia.Utils.joinPath(x,s0.filePaths.dist.mainAmxPath),l=await Tt(o,B,r,e,t);return l.success?(e.done("USB upload completed"),null):ZA(3,`USB upload failed: ${l.message}`)}async function tB(A,x){x.info("[4/5] Connecting to myDatanet server...");try{return await A.authenticate()}catch(r){return ZA(4,`myDatanet authentication failed: ${It(r)}`)}}async function nB(A,x,r){if(x)try{let o=await A.getCustomer(x);return r.info(`Using customer: ${o.name} (${o._uid})`),o._uid}catch{return ZA(6,`Customer "${x}" not found`)}let e=await A.getCustomers();if(e.length===0)return ZA(6,"No customers available. Please specify --customer or set MYDATANET_CUSTOMER");if(e.length===1)return r.info(`Using customer: ${e[0].name} (${e[0]._uid})`),e[0]._uid;let i=e.map(o=>o.name).join(", ");return ZA(6,`Multiple customers available. Please specify --customer or set MYDATANET_CUSTOMER. Available: ${i}`)}async function iB(A,x,r,e){let i=await A.getDeviceSite(x);i&&(i.app.phase==="dev"&&(r.apmId=i.app.apmid,r.applicationId=i.app.appl_id),r.siteUid=i._uid,r.siteName=i.name,r.customerUid=i.customer_uid,e.info(`Found existing site: ${i.name}`))}async function sB(A,x,r){let{cwd:e,fs:i,logger:o}=A;o.info("Creating development APM tag...");try{let t=await b0.createDevTag(e,i),B=await x.uploadDevTag(r.apmId,t);return r.applicationId=B,o.done("Development tag uploaded"),null}catch(t){return ZA(5,`Development tag upload failed: ${It(t)}`)}}async function aB(A,x,r,e){e.info("[5/5] Creating development site...");try{return r.siteUid?(r.siteName!==r.name&&await A.updateSiteName(r.siteUid,r.name),e.info(`Reusing existing site: ${r.siteUid}`),{siteUid:r.siteUid,siteName:r.name}):{siteUid:await A.createDevelopmentSite(x,r),siteName:r.name}}catch(i){return ZA(6,`Site creation failed: ${It(i)}`)}}function Ma(A,x,r=!1){if(r){A.log(JSON.stringify({siteUid:x.siteUid,siteName:x.siteName,apmId:x.apmId}));return}A.done("Development deployment completed successfully!"),A.info(""),A.info("=== Deployment Summary ==="),A.info(`Site UID: ${x.siteUid}`),A.info(`Site Name: ${x.siteName}`),A.info(`APM ID: ${x.apmId}`),A.info("==========================")}function Nt(A){return typeof A=="object"&&A!==null&&"errorCode"in A}async function La(A,x,r,e,i,o){let t={cwd:A,fs:x,logger:r,env:e,apiToken:i,options:o},{serial:B,server:l,customer:D,mdnToken:j}=o;r.info("Starting development deployment...");let b=await AB(t);if(b)return b;let k=await rB(t);if(Nt(k))return k;let $=await eB(t);if($)return $;let y=new Ne(l,j,r),q=await tB(y,r);if(Nt(q))return q;let P=q,N=await nB(y,D,r);if(Nt(N))return N;let R=N,O=await on(A,x,r,B,P.name,R,o.siteName);await iB(y,B,O,r);let t0=await sB(t,y,O);if(t0)return t0;let M=await aB(y,R,O,r);return Nt(M)?M:{success:!0,siteUid:M.siteUid,siteName:M.siteName,apmId:O.apmId,message:"Development deployment completed successfully"}}var xr=new wx.Command,Pn=(0,Ra.default)({pkg:Wt}),ux=new Et.Logger,oB=()=>process.env.NODE_ENV==="local-dev-app"?"./dev/app":process.env.NODE_ENV==="local-dev-lib"?"./dev/modbus-master":process.env.NODE_ENV==="local-dev-addon"?"./dev/addon":process.env.NODE_ENV==="local-dev-analytics"?"./dev/analytics":"",oe=Ve.Utils.joinPath(Ve.URI.file(process.cwd()),oB());xr.version(Wt.version).usage("<command>");xr.description(`This tool is used to manage the project dependencies, build, package and publish the project.
2314
+ `),E0+=`}
2315
+ `,X0.push("checkArgCount","minArgs","maxArgs"),E0=`if (arguments.length !== ${X0.length}){ throw new Error(humanName + "Expected ${X0.length} closure arguments " + arguments.length + " given."); }
2316
+ ${E0}`,new Function(X0,E0)}function l(c){for(var C=c.length-2,h=c.length-1;h>=2&&c[h].optional;--h)C--;return C}function d(c,C,h,P,N,Q){var X=C.length;X<2&&b0("argTypes array size mismatch! Must at least get return value and 'this' types!"),y(!Q,"async bindings are only supported with JSPI");for(var x0=C[1]!==null&&h!==null,A0=je(C),E0=!C[0].isVoid,D0=X-2,X0=l(C),K0=C[0],Q0=C[1],Ix=[c,b0,P,N,qA,K0.fromWireType.bind(K0),Q0?.toWireType.bind(Q0)],yx=2;yx<X;++yx){var oA=C[yx];Ix.push(oA.toWireType.bind(oA))}if(!A0)for(var yx=x0?1:2;yx<C.length;++yx)C[yx].destructorFunction!==null&&Ix.push(C[yx].destructorFunction);Ix.push(ee,X0,D0);var bA=a(C,x0,E0,Q)(...Ix);return Ue(c,bA)}var b=(c,C,h,P,N,Q)=>{y(C>0);var X=ux(C,h);N=qx(P,N),dA([],[c],x0=>{x0=x0[0];var A0=`constructor ${x0.name}`;if(x0.registeredClass.constructor_body===void 0&&(x0.registeredClass.constructor_body=[]),x0.registeredClass.constructor_body[C-1]!==void 0)throw new Ex(`Cannot register multiple constructors with identical number of parameters (${C-1}) for class '${x0.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return x0.registeredClass.constructor_body[C-1]=()=>{Ae(`Cannot construct ${x0.name} due to unbound types`,X)},dA([],X,E0=>(E0.splice(1,0,null),x0.registeredClass.constructor_body[C-1]=d(A0,E0,null,N,Q),[])),[]})},k=(c,C,h)=>(c instanceof Object||b0(`${h} with invalid "this": ${c}`),c instanceof C.registeredClass.constructor||b0(`${h} incompatible with "this" of type ${c.constructor.name}`),c.$$.ptr||b0(`cannot call emscripten binding method ${h} on deleted object`),me(c.$$.ptr,c.$$.ptrType.registeredClass,C.registeredClass)),$=(c,C,h,P,N,Q,X,x0,A0,E0)=>{C=dx(C),N=qx(P,N),dA([],[c],D0=>{D0=D0[0];var X0=`${D0.name}.${C}`,K0={get(){Ae(`Cannot access ${X0} due to unbound types`,[h,X])},enumerable:!0,configurable:!0};return A0?K0.set=()=>Ae(`Cannot access ${X0} due to unbound types`,[h,X]):K0.set=Q0=>b0(X0+" is a read-only property"),Object.defineProperty(D0.registeredClass.instancePrototype,C,K0),dA([],A0?[h,X]:[h],Q0=>{var Ix=Q0[0],yx={get(){var OA=k(this,D0,X0+" getter");return Ix.fromWireType(N(Q,OA))},enumerable:!0};if(A0){A0=qx(x0,A0);var oA=Q0[1];yx.set=function(OA){var bA=k(this,D0,X0+" setter"),gr=[];A0(E0,bA,oA.toWireType(gr,OA)),qA(gr)}}return Object.defineProperty(D0.registeredClass.instancePrototype,C,yx),[]}),[]})},G=[],V=[0,1,,1,null,1,!0,1,!1,1],o0=c=>{if(c>9&&--V[c+1]===0){y(V[c]!==void 0,"decref for unallocated handle");var C=V[c];V[c]=void 0,G.push(c)}},u0={toValue:c=>(c||b0(`Cannot use deleted val. handle = ${c}`),y(c===2||V[c]!==void 0&&c%2===0,`invalid handle: ${c}`),V[c]),toHandle:c=>{switch(c){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:{let C=G.pop()||V.length;return V[C]=c,V[C+1]=1,C}}}},z0={name:"emscripten::val",fromWireType:c=>{var C=u0.toValue(c);return o0(c),C},toWireType:(c,C)=>u0.toHandle(C),readValueFromPointer:t0,destructorFunction:null},I0=c=>Tx(c,z0),$0=(c,C)=>{switch(C){case 4:return function(h){return this.fromWireType(cr[h>>2])};case 8:return function(h){return this.fromWireType(de[h>>3])};default:throw new TypeError(`invalid float width (${C}): ${c}`)}},m0=(c,C,h)=>{C=dx(C),Tx(c,{name:C,fromWireType:P=>P,toWireType:(P,N)=>{if(typeof N!="number"&&typeof N!="boolean")throw new TypeError(`Cannot convert ${uA(N)} to ${C}`);return N},readValueFromPointer:$0(C,h),destructorFunction:null})},tx=c=>{c=c.trim();let C=c.indexOf("(");return C===-1?c:(y(c.endsWith(")"),"Parentheses for argument names should match."),c.slice(0,C))},hx=(c,C,h,P,N,Q,X,x0)=>{var A0=ux(C,h);c=dx(c),c=tx(c),N=qx(P,N,X),Dr(c,function(){Ae(`Cannot call ${c} due to unbound types`,A0)},C-1),dA([],A0,E0=>{var D0=[E0[0],null].concat(E0.slice(1));return jr(c,d(c,D0,null,N,Q,X),C-1),[]})},Nx=(c,C,h,P,N)=>{C=dx(C);let Q=P===0,X=A0=>A0;if(Q){var x0=32-8*h;X=A0=>A0<<x0>>>x0,N=X(N)}Tx(c,{name:C,fromWireType:X,toWireType:(A0,E0)=>{if(typeof E0!="number"&&typeof E0!="boolean")throw new TypeError(`Cannot convert "${uA(E0)}" to ${C}`);return IA(C,E0,P,N),E0},readValueFromPointer:ue(C,h,P!==0),destructorFunction:null})},Ox=(c,C,h)=>{var P=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array],N=P[C];function Q(X){var x0=g0[X>>2],A0=g0[X+4>>2];return new N(Vx.buffer,A0,x0)}h=dx(h),Tx(c,{name:h,fromWireType:Q,readValueFromPointer:Q},{ignoreDuplicateRegistrations:!0})},Rx=(c,C,h,P)=>{if(y(typeof c=="string",`stringToUTF8Array expects a string (got ${typeof c})`),!(P>0))return 0;for(var N=h,Q=h+P-1,X=0;X<c.length;++X){var x0=c.codePointAt(X);if(x0<=127){if(h>=Q)break;C[h++]=x0}else if(x0<=2047){if(h+1>=Q)break;C[h++]=192|x0>>6,C[h++]=128|x0&63}else if(x0<=65535){if(h+2>=Q)break;C[h++]=224|x0>>12,C[h++]=128|x0>>6&63,C[h++]=128|x0&63}else{if(h+3>=Q)break;x0>1114111&&Gx(`Invalid Unicode code point ${Cx(x0)} encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).`),C[h++]=240|x0>>18,C[h++]=128|x0>>12&63,C[h++]=128|x0>>6&63,C[h++]=128|x0&63,X++}}return C[h]=0,h-N},re=(c,C,h)=>(y(typeof h=="number","stringToUTF8 requires a third parameter that specifies the length of the output buffer"),Rx(c,jx,C,h)),Ux=c=>{for(var C=0,h=0;h<c.length;++h){var P=c.charCodeAt(h);P<=127?C++:P<=2047?C+=2:P>=55296&&P<=57343?(C+=4,++h):C+=3}return C},pA=globalThis.TextDecoder&&new TextDecoder,lx=(c,C,h,P)=>{var N=C+h;if(P)return N;for(;c[C]&&!(C>=N);)++C;return C},Mt=(c,C=0,h,P)=>{var N=lx(c,C,h,P);if(N-C>16&&c.buffer&&pA)return pA.decode(c.subarray(C,N));for(var Q="";C<N;){var X=c[C++];if(!(X&128)){Q+=String.fromCharCode(X);continue}var x0=c[C++]&63;if((X&224)==192){Q+=String.fromCharCode((X&31)<<6|x0);continue}var A0=c[C++]&63;if((X&240)==224?X=(X&15)<<12|x0<<6|A0:((X&248)!=240&&Gx(`Invalid UTF-8 leading byte ${Cx(X)} encountered when deserializing a UTF-8 string in wasm memory to a JS string!`),X=(X&7)<<18|x0<<12|A0<<6|c[C++]&63),X<65536)Q+=String.fromCharCode(X);else{var E0=X-65536;Q+=String.fromCharCode(55296|E0>>10,56320|E0&1023)}}return Q},Wn=(c,C,h)=>(y(typeof c=="number",`UTF8ToString expects a number (got ${typeof c})`),c?Mt(jx,c,C,h):""),Xn=(c,C)=>{C=dx(C);var h=!0;Tx(c,{name:C,fromWireType(P){var N=g0[P>>2],Q=P+4,X;if(h)X=Wn(Q,N,!0);else{X="";for(var x0=0;x0<N;++x0)X+=String.fromCharCode(jx[Q+x0])}return te(P),X},toWireType(P,N){N instanceof ArrayBuffer&&(N=new Uint8Array(N));var Q,X=typeof N=="string";X||ArrayBuffer.isView(N)&&N.BYTES_PER_ELEMENT==1||b0("Cannot pass non-string to std::string"),h&&X?Q=Ux(N):Q=N.length;var x0=ri(4+Q+1),A0=x0+4;if(g0[x0>>2]=Q,X)if(h)re(N,A0,Q+1);else for(var E0=0;E0<Q;++E0){var D0=N.charCodeAt(E0);D0>255&&(te(x0),b0("String has UTF-16 code units that do not fit in 8 bits")),jx[A0+E0]=D0}else jx.set(N,A0);return P!==null&&P.push(te,x0),x0},readValueFromPointer:t0,destructorFunction(P){te(P)}})},Lt=globalThis.TextDecoder?new TextDecoder("utf-16le"):void 0,Yn=(c,C,h)=>{y(c%2==0,"pointer passed to UTF16ToString must be 2-byte aligned");var P=c>>1,N=lx(sx,P,C/2,h);if(N-P>16&&Lt)return Lt.decode(sx.subarray(P,N));for(var Q="",X=P;X<N;++X){var x0=sx[X];Q+=String.fromCharCode(x0)}return Q},Qn=(c,C,h)=>{if(y(C%2==0,"pointer passed to stringToUTF16 must be 2-byte aligned"),y(typeof h=="number","stringToUTF16 requires a third parameter that specifies the length of the output buffer"),h??(h=2147483647),h<2)return 0;h-=2;for(var P=C,N=h<c.length*2?h/2:c.length,Q=0;Q<N;++Q){var X=c.charCodeAt(Q);$A[C>>1]=X,C+=2}return $A[C>>1]=0,C-P},Ot=c=>c.length*2,vt=(c,C,h)=>{y(c%4==0,"pointer passed to UTF32ToString must be 2-byte aligned");for(var P="",N=c>>2,Q=0;!(Q>=C/4);Q++){var X=g0[N+Q];if(!X&&!h)break;P+=String.fromCodePoint(X)}return P},ze=(c,C,h)=>{if(y(C%4==0,"pointer passed to stringToUTF32 must be 4-byte aligned"),y(typeof h=="number","stringToUTF32 requires a third parameter that specifies the length of the output buffer"),h??(h=2147483647),h<4)return 0;for(var P=C,N=P+h-4,Q=0;Q<c.length;++Q){var X=c.codePointAt(Q);if(X>65535&&Q++,PA[C>>2]=X,C+=4,C+4>N)break}return PA[C>>2]=0,C-P},s=c=>{for(var C=0,h=0;h<c.length;++h){var P=c.codePointAt(h);P>65535&&h++,C+=4}return C},f=(c,C,h)=>{h=dx(h);var P,N,Q;C===2?(P=Yn,N=Qn,Q=Ot):(y(C===4,"only 2-byte and 4-byte strings are currently supported"),P=vt,N=ze,Q=s),Tx(c,{name:h,fromWireType:X=>{var x0=g0[X>>2],A0=P(X+4,x0*C,!0);return te(X),A0},toWireType:(X,x0)=>{typeof x0!="string"&&b0(`Cannot pass non-string to C++ string type ${h}`);var A0=Q(x0),E0=ri(4+A0+C);return g0[E0>>2]=A0/C,N(x0,E0+4,A0+C),X!==null&&X.push(te,E0),E0},readValueFromPointer:t0,destructorFunction(X){te(X)}})},B=(c,C,h,P,N,Q)=>{rx[c]={name:dx(C),rawConstructor:qx(h,P),rawDestructor:qx(N,Q),fields:[]}},D=(c,C,h,P,N,Q,X,x0,A0,E0)=>{rx[c].fields.push({fieldName:dx(C),getterReturnType:h,getter:qx(P,N),getterContext:Q,setterArgumentType:X,setter:qx(x0,A0),setterContext:E0})},m=(c,C)=>{C=dx(C),Tx(c,{isVoid:!0,name:C,fromWireType:()=>{},toWireType:(h,P)=>{}})},_=[],I=c=>{var C=_.length;return _.push(c),C},K=(c,C)=>{var h=Wx[c];return h===void 0&&b0(`${C} has unknown type ${LA(c)}`),h},F0=(c,C)=>{for(var h=new Array(c),P=0;P<c;++P)h[P]=K(g0[C+P*4>>2],`parameter ${P}`);return h},w0=(c,C,h)=>{var P=[],N=c(P,h);return P.length&&(g0[C>>2]=u0.toHandle(P)),N},Y0={},O0=c=>{var C=Y0[c];return C===void 0?dx(c):C},N0=(c,C,h)=>{var P=8,[N,...Q]=F0(c,C),X=N.toWireType.bind(N),x0=Q.map(Q0=>Q0.readValueFromPointer.bind(Q0));c--;var A0={toValue:u0.toValue},E0=x0.map((Q0,Ix)=>{var yx=`argFromPtr${Ix}`;return A0[yx]=Q0,`${yx}(args${Ix?"+"+Ix*P:""})`}),D0;switch(h){case 0:D0="toValue(handle)";break;case 2:D0="new (toValue(handle))";break;case 3:D0="";break;case 1:A0.getStringOrSymbol=O0,D0="toValue(handle)[getStringOrSymbol(methodName)]";break}D0+=`(${E0})`,N.isVoid||(A0.toReturnWire=X,A0.emval_returnValue=w0,D0=`return emval_returnValue(toReturnWire, destructorsRef, ${D0})`),D0=`return function (handle, methodName, destructorsRef, args) {
2317
+ ${D0}
2318
+ }`;var X0=new Function(Object.keys(A0),D0)(...Object.values(A0)),K0=`methodCaller<(${Q.map(Q0=>Q0.name)}) => ${N.name}>`;return I(Ue(K0,X0))},j0=c=>(c=O0(c),u0.toHandle(n[c])),Bx=(c,C)=>(c=u0.toValue(c),C=u0.toValue(C),u0.toHandle(c[C])),wx=c=>{c>9&&(V[c+1]+=1)},Hx=(c,C,h,P,N)=>_[c](C,h,P,N),Xx=c=>u0.toHandle(O0(c)),Yx=c=>{var C=u0.toValue(c);qA(C),o0(c)},Ke=()=>2147483648,aA=(c,C)=>(y(C,"alignment argument is required"),Math.ceil(c/C)*C),he=c=>{var C=Rt.buffer.byteLength,h=(c-C+65535)/65536|0;try{return Rt.grow(h),cx(),1}catch(P){R(`growMemory: Attempted to grow heap from ${C} bytes to ${c} bytes, but got error: ${P}`)}},gx=c=>{var C=jx.length;c>>>=0,y(c>C);var h=Ke();if(c>h)return R(`Cannot enlarge memory, requested ${c} bytes, but the limit is ${h} bytes!`),!1;for(var P=1;P<=4;P*=2){var N=C*(1+.2/P);N=Math.min(N,c+100663296);var Q=Math.min(h,aA(Math.max(c,N),65536)),X=he(Q);if(X)return!0}return R(`Failed to grow the heap from ${C} bytes to ${Q} bytes, not enough memory!`),!1},xf=c=>{vx("fd_close called without SYSCALLS_REQUIRE_FILESYSTEM")},Af=9007199254740992,ef=-9007199254740992,rf=c=>c<ef||c>Af?NaN:Number(c);function tf(c,C,h,P){return C=rf(C),70}var Zn=[null,[],[]],xi=(c,C)=>{var h=Zn[c];y(h),C===0||C===10?((c===1?L:R)(Mt(h)),h.length=0):h.push(C)},I7=()=>{Ws(0),Zn[1].length&&xi(1,10),Zn[2].length&&xi(2,10)},nf=(c,C,h,P)=>{for(var N=0,Q=0;Q<h;Q++){var X=g0[C>>2],x0=g0[C+4>>2];C+=8;for(var A0=0;A0<x0;A0++)xi(c,jx[X+A0]);N+=x0}return g0[P>>2]=N,0},sf=()=>{if(E){var c=fo("crypto");return C=>c.randomFillSync(C)}return C=>(crypto.getRandomValues(C),0)},Js=c=>(Js=sf())(c),af=(c,C)=>Js(jx.subarray(c,c+C)),of=(c,C)=>{if(Ve)for(var h=c;h<c+C;h++){var P=He(h);P&&Ve.set(P,h)}},Ve,Ff=c=>(Ve||(Ve=new WeakMap,of(0,We.length)),Ve.get(c)||0),Ai=[],vf=()=>{if(Ai.length)return Ai.pop();try{return We.grow(1)}catch(c){if(!(c instanceof RangeError))throw c;vx("Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.")}},ei=(c,C)=>{We.set(c,C),xe[c]=We.get(c)},zs=c=>{let C=c.length;return y(C<16384),[C%128|128,C>>7,...c]},ff={i:127,p:127,j:126,f:125,d:124,e:111},Ks=c=>zs(Array.from(c,C=>{var h=ff[C];return y(h,`invalid signature char: ${C}`),h})),lf=(c,C)=>{var h=Uint8Array.of(0,97,115,109,1,0,0,0,1,...zs([1,96,...Ks(C.slice(1)),...Ks(C[0]==="v"?"":C[0])]),2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0),P=new WebAssembly.Module(h),N=new WebAssembly.Instance(P,{e:{f:c}}),Q=N.exports.f;return Q},cf=(c,C)=>{y(typeof c<"u");var h=Ff(c);if(h)return h;var P=vf();try{ei(P,c)}catch(Q){if(!(Q instanceof TypeError))throw Q;y(typeof C<"u","Missing signature argument to addFunction: "+c);var N=lf(c,C);ei(P,N)}return Ve.set(c,P),P},Ef=c=>{Ve.delete(He(c)),ei(c,null),Ai.push(c)};tt(),mr(),y(V.length===10);{if(n.noExitRuntime&&(Me=n.noExitRuntime),n.print&&(L=n.print),n.printErr&&(R=n.printErr),n.wasmBinary&&(n0=n.wasmBinary),n.FS_createDataFile=rA.createDataFile,n.FS_createPreloadedFile=rA.createPreloadedFile,df(),n.arguments&&(p=n.arguments),n.thisProgram&&(j=n.thisProgram),y(typeof n.memoryInitializerPrefixURL>"u","Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),y(typeof n.pthreadMainPrefixURL>"u","Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),y(typeof n.cdInitializerPrefixURL>"u","Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),y(typeof n.filePackagePrefixURL>"u","Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),y(typeof n.read>"u","Module.read option was removed"),y(typeof n.readAsync>"u","Module.readAsync option was removed (modify readAsync in JS)"),y(typeof n.readBinary>"u","Module.readBinary option was removed (modify readBinary in JS)"),y(typeof n.setWindowTitle>"u","Module.setWindowTitle option was removed (modify emscripten_set_window_title in JS)"),y(typeof n.TOTAL_MEMORY>"u","Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"),y(typeof n.ENVIRONMENT>"u","Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)"),y(typeof n.STACK_SIZE>"u","STACK_SIZE can no longer be set at runtime. Use -sSTACK_SIZE at link time"),y(typeof n.wasmMemory>"u","Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally"),y(typeof n.INITIAL_MEMORY>"u","Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically"),n.preInit)for(typeof n.preInit=="function"&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.shift()();r0("preInit")}n.addFunction=cf,n.removeFunction=Ef;var Bf=["writeI53ToI64","writeI53ToI64Clamped","writeI53ToI64Signaling","writeI53ToU64Clamped","writeI53ToU64Signaling","readI53FromI64","readI53FromU64","convertI32PairToI53","convertI32PairToI53Checked","convertU32PairToI53","stackAlloc","getTempRet0","setTempRet0","zeroMemory","exitJS","withStackSave","strError","inetPton4","inetNtop4","inetPton6","inetNtop6","readSockaddr","writeSockaddr","readEmAsmArgs","jstoi_q","getExecutableName","autoResumeAudioContext","getDynCaller","dynCall","handleException","keepRuntimeAlive","runtimeKeepalivePush","runtimeKeepalivePop","callUserCallback","maybeExit","asyncLoad","asmjsMangle","mmapAlloc","HandleAllocator","getUniqueRunDependency","addRunDependency","removeRunDependency","addOnInit","addOnPostCtor","addOnPreMain","addOnExit","STACK_SIZE","STACK_ALIGN","POINTER_SIZE","ASSERTIONS","ccall","cwrap","intArrayFromString","intArrayToString","stringToAscii","stringToNewUTF8","stringToUTF8OnStack","writeArrayToMemory","registerKeyEventCallback","maybeCStringToJsString","findEventTarget","getBoundingClientRect","fillMouseEventData","registerMouseEventCallback","registerWheelEventCallback","registerUiEventCallback","registerFocusEventCallback","fillDeviceOrientationEventData","registerDeviceOrientationEventCallback","fillDeviceMotionEventData","registerDeviceMotionEventCallback","screenOrientation","fillOrientationChangeEventData","registerOrientationChangeEventCallback","fillFullscreenChangeEventData","registerFullscreenChangeEventCallback","JSEvents_requestFullscreen","JSEvents_resizeCanvasForFullscreen","registerRestoreOldStyle","hideEverythingExceptGivenElement","restoreHiddenElements","setLetterbox","softFullscreenResizeWebGLRenderTarget","doRequestFullscreen","fillPointerlockChangeEventData","registerPointerlockChangeEventCallback","registerPointerlockErrorEventCallback","requestPointerLock","fillVisibilityChangeEventData","registerVisibilityChangeEventCallback","registerTouchEventCallback","fillGamepadEventData","registerGamepadEventCallback","registerBeforeUnloadEventCallback","fillBatteryEventData","registerBatteryEventCallback","setCanvasElementSize","getCanvasElementSize","jsStackTrace","getCallstack","convertPCtoSourceLocation","getEnvStrings","checkWasiClock","wasiRightsToMuslOFlags","wasiOFlagsToMuslOFlags","safeSetTimeout","setImmediateWrapped","safeRequestAnimationFrame","clearImmediateWrapped","registerPostMainLoop","registerPreMainLoop","getPromise","makePromise","idsToPromises","makePromiseCallback","findMatchingCatch","incrementUncaughtExceptionCount","decrementUncaughtExceptionCount","Browser_asyncPrepareDataCounter","isLeapYear","ydayFromDate","arraySum","addDays","getSocketFromFD","getSocketAddress","FS_createPreloadedFile","FS_preloadFile","FS_modeStringToFlags","FS_getMode","FS_fileDataToTypedArray","FS_stdin_getChar","FS_mkdirTree","_setNetworkCallback","heapObjectForWebGLType","toTypedArrayIndex","webgl_enable_ANGLE_instanced_arrays","webgl_enable_OES_vertex_array_object","webgl_enable_WEBGL_draw_buffers","webgl_enable_WEBGL_multi_draw","webgl_enable_EXT_polygon_offset_clamp","webgl_enable_EXT_clip_control","webgl_enable_WEBGL_polygon_mode","emscriptenWebGLGet","computeUnpackAlignedImageSize","colorChannelsInGlTextureFormat","emscriptenWebGLGetTexPixelData","emscriptenWebGLGetUniform","webglGetUniformLocation","webglPrepareUniformLocationsBeforeFirstUse","webglGetLeftBracePos","emscriptenWebGLGetVertexAttrib","__glGetActiveAttribOrUniform","writeGLArray","registerWebGlEventCallback","runAndAbortIfError","ALLOC_NORMAL","ALLOC_STACK","allocate","writeStringToMemory","writeAsciiToMemory","allocateUTF8","allocateUTF8OnStack","demangle","stackTrace","getNativeTypeSize","getFunctionArgsName","createJsInvokerSignature","getEnumValueType","PureVirtualError","registerInheritedInstance","unregisterInheritedInstance","getInheritedInstanceCount","getLiveInheritedInstances","enumReadValueFromPointer","installIndexedIterator","setDelayFunction","count_emval_handles"];Bf.forEach(v0);var Cf=["run","out","err","callMain","abort","wasmExports","writeStackCookie","checkStackCookie","INT53_MAX","INT53_MIN","bigintToI53Checked","HEAP8","HEAP16","HEAPU16","HEAP32","HEAPU32","HEAPF32","HEAPF64","HEAP64","HEAPU64","stackSave","stackRestore","createNamedFunction","ptrToString","getHeapMax","growMemory","ENV","ERRNO_CODES","DNS","Protocols","Sockets","timers","warnOnce","readEmAsmArgsArray","alignMemory","wasmTable","wasmMemory","noExitRuntime","addOnPreRun","addOnPostRun","convertJsFunctionToWasm","freeTableIndexes","functionsInTableMap","getEmptyTableSlot","updateTableMap","getFunctionAddress","setValue","getValue","PATH","PATH_FS","UTF8Decoder","UTF8ArrayToString","UTF8ToString","stringToUTF8Array","stringToUTF8","lengthBytesUTF8","AsciiToString","UTF16Decoder","UTF16ToString","stringToUTF16","lengthBytesUTF16","UTF32ToString","stringToUTF32","lengthBytesUTF32","JSEvents","specialHTMLTargets","findCanvasEventTarget","currentFullscreenStrategy","restoreOldWindowedStyle","UNWIND_CACHE","ExitStatus","flush_NO_FILESYSTEM","initRandomFill","randomFill","emSetImmediate","emClearImmediate_deps","emClearImmediate","promiseMap","uncaughtExceptionCount","exceptionCaught","ExceptionInfo","Browser","requestFullscreen","requestFullScreen","setCanvasSize","getUserMedia","createContext","getPreloadedImageData__data","wget","MONTH_DAYS_REGULAR","MONTH_DAYS_LEAP","MONTH_DAYS_REGULAR_CUMULATIVE","MONTH_DAYS_LEAP_CUMULATIVE","SYSCALLS","preloadPlugins","FS_stdin_getChar_buffer","FS_unlink","FS_createPath","FS_createDevice","FS_readFile","FS","FS_root","FS_mounts","FS_devices","FS_streams","FS_nextInode","FS_nameTable","FS_currentPath","FS_initialized","FS_ignorePermissions","FS_filesystems","FS_syncFSRequests","FS_lookupPath","FS_getPath","FS_hashName","FS_hashAddNode","FS_hashRemoveNode","FS_lookupNode","FS_createNode","FS_destroyNode","FS_isRoot","FS_isMountpoint","FS_isFile","FS_isDir","FS_isLink","FS_isChrdev","FS_isBlkdev","FS_isFIFO","FS_isSocket","FS_flagsToPermissionString","FS_nodePermissions","FS_mayLookup","FS_mayCreate","FS_mayDelete","FS_mayOpen","FS_checkOpExists","FS_nextfd","FS_getStreamChecked","FS_getStream","FS_createStream","FS_closeStream","FS_dupStream","FS_doSetAttr","FS_chrdev_stream_ops","FS_major","FS_minor","FS_makedev","FS_registerDevice","FS_getDevice","FS_getMounts","FS_syncfs","FS_mount","FS_unmount","FS_lookup","FS_mknod","FS_statfs","FS_statfsStream","FS_statfsNode","FS_create","FS_mkdir","FS_mkdev","FS_symlink","FS_rename","FS_rmdir","FS_readdir","FS_readlink","FS_stat","FS_fstat","FS_lstat","FS_doChmod","FS_chmod","FS_lchmod","FS_fchmod","FS_doChown","FS_chown","FS_lchown","FS_fchown","FS_doTruncate","FS_truncate","FS_ftruncate","FS_utime","FS_open","FS_close","FS_isClosed","FS_llseek","FS_read","FS_write","FS_mmap","FS_msync","FS_ioctl","FS_writeFile","FS_cwd","FS_chdir","FS_createDefaultDirectories","FS_createDefaultDevices","FS_createSpecialDirectories","FS_createStandardStreams","FS_staticInit","FS_init","FS_quit","FS_findObject","FS_analyzePath","FS_createFile","FS_createDataFile","FS_forceLoadFile","FS_createLazyFile","MEMFS","TTY","PIPEFS","SOCKFS","tempFixedLengthArray","miniTempWebGLFloatBuffers","miniTempWebGLIntBuffers","GL","AL","GLUT","EGL","GLEW","IDBStore","SDL","SDL_gfx","print","printErr","jstoi_s","InternalError","BindingError","throwInternalError","throwBindingError","registeredTypes","awaitingDependencies","typeDependencies","tupleRegistrations","structRegistrations","sharedRegisterType","whenDependentTypesAreResolved","getTypeName","getFunctionName","heap32VectorToArray","requireRegisteredType","usesDestructorStack","checkArgCount","getRequiredArgCount","createJsInvoker","UnboundTypeError","EmValType","EmValOptionalType","throwUnboundTypeError","ensureOverloadTable","exposePublicSymbol","replacePublicSymbol","embindRepr","registeredInstances","getBasestPointer","getInheritedInstance","registeredPointers","registerType","integerReadValueFromPointer","floatReadValueFromPointer","assertIntegerRange","readPointer","runDestructors","craftInvokerFunction","embind__requireFunction","genericPointerToWireType","constNoSmartPtrRawPointerToWireType","nonConstNoSmartPtrRawPointerToWireType","init_RegisteredPointer","RegisteredPointer","RegisteredPointer_fromWireType","runDestructor","releaseClassHandle","finalizationRegistry","detachFinalizer_deps","detachFinalizer","attachFinalizer","makeClassHandle","init_ClassHandle","ClassHandle","throwInstanceAlreadyDeleted","deletionQueue","flushPendingDeletes","delayFunction","RegisteredClass","shallowCopyInternalPointer","downcastPointer","upcastPointer","validateThis","char_0","char_9","makeLegalFunctionName","emval_freelist","emval_handles","emval_symbols","getStringOrSymbol","Emval","emval_returnValue","emval_lookupTypes","emval_methodCallers","emval_addMethodCaller"];Cf.forEach(f0);function df(){i0("fetchSettings"),i0("logReadFiles"),i0("loadSplitModule"),i0("onMalloc"),i0("onRealloc"),i0("onFree"),i0("onSbrkGrow")}var Vs=Z("___getTypeName"),ri=Z("_malloc"),te=Z("_free"),uf=n._MdnCom_ESCHandler=Z("_MdnCom_ESCHandler"),Df=n._MdnCom_Free=Z("_MdnCom_Free"),pf=n._MdnCom_RawRx=Z("_MdnCom_RawRx"),bf=n._MdnCom_CryptoSelfTest=Z("_MdnCom_CryptoSelfTest"),mf=n._MdnCom_SetCompanionKeypair=Z("_MdnCom_SetCompanionKeypair"),jf=n._MdnCom_InitiateEcsHandshake=Z("_MdnCom_InitiateEcsHandshake"),hf=n._MdnCom_SetSecDebug=Z("_MdnCom_SetSecDebug"),gf=n._MdnCom_GetEcsState=Z("_MdnCom_GetEcsState"),yf=n._MdnCom_ResetEcs=Z("_MdnCom_ResetEcs"),kf=n._MdnCom_RegisterEcsHandshakeCallback=Z("_MdnCom_RegisterEcsHandshakeCallback"),wf=n._MdnCom_Init=Z("_MdnCom_Init"),_f=n._SendUtoQuery=Z("_SendUtoQuery"),Sf=n._SendUtoCmdExt=Z("_SendUtoCmdExt"),Ws=Z("_fflush"),ti=Z("_emscripten_stack_get_end"),$f=Z("_emscripten_stack_get_base"),Pf=Z("_strerror"),Xs=Z("_emscripten_stack_init"),Tf=Z("_emscripten_stack_get_free"),qf=Z("__emscripten_stack_restore"),Nf=Z("__emscripten_stack_alloc"),If=Z("_emscripten_stack_get_current"),Mf=Z("memory"),Lf=Z("__indirect_function_table"),Rt=Z("wasmMemory"),We=Z("wasmTable");function Of(c){y(typeof c.__getTypeName<"u","missing Wasm export: __getTypeName"),y(typeof c.malloc<"u","missing Wasm export: malloc"),y(typeof c.free<"u","missing Wasm export: free"),y(typeof c.MdnCom_ESCHandler<"u","missing Wasm export: MdnCom_ESCHandler"),y(typeof c.MdnCom_Free<"u","missing Wasm export: MdnCom_Free"),y(typeof c.MdnCom_RawRx<"u","missing Wasm export: MdnCom_RawRx"),y(typeof c.MdnCom_CryptoSelfTest<"u","missing Wasm export: MdnCom_CryptoSelfTest"),y(typeof c.MdnCom_SetCompanionKeypair<"u","missing Wasm export: MdnCom_SetCompanionKeypair"),y(typeof c.MdnCom_InitiateEcsHandshake<"u","missing Wasm export: MdnCom_InitiateEcsHandshake"),y(typeof c.MdnCom_SetSecDebug<"u","missing Wasm export: MdnCom_SetSecDebug"),y(typeof c.MdnCom_GetEcsState<"u","missing Wasm export: MdnCom_GetEcsState"),y(typeof c.MdnCom_ResetEcs<"u","missing Wasm export: MdnCom_ResetEcs"),y(typeof c.MdnCom_RegisterEcsHandshakeCallback<"u","missing Wasm export: MdnCom_RegisterEcsHandshakeCallback"),y(typeof c.MdnCom_Init<"u","missing Wasm export: MdnCom_Init"),y(typeof c.SendUtoQuery<"u","missing Wasm export: SendUtoQuery"),y(typeof c.SendUtoCmdExt<"u","missing Wasm export: SendUtoCmdExt"),y(typeof c.fflush<"u","missing Wasm export: fflush"),y(typeof c.emscripten_stack_get_end<"u","missing Wasm export: emscripten_stack_get_end"),y(typeof c.emscripten_stack_get_base<"u","missing Wasm export: emscripten_stack_get_base"),y(typeof c.strerror<"u","missing Wasm export: strerror"),y(typeof c.emscripten_stack_init<"u","missing Wasm export: emscripten_stack_init"),y(typeof c.emscripten_stack_get_free<"u","missing Wasm export: emscripten_stack_get_free"),y(typeof c._emscripten_stack_restore<"u","missing Wasm export: _emscripten_stack_restore"),y(typeof c._emscripten_stack_alloc<"u","missing Wasm export: _emscripten_stack_alloc"),y(typeof c.emscripten_stack_get_current<"u","missing Wasm export: emscripten_stack_get_current"),y(typeof c.memory<"u","missing Wasm export: memory"),y(typeof c.__indirect_function_table<"u","missing Wasm export: __indirect_function_table"),Vs=H0("__getTypeName",1),ri=H0("malloc",1),te=H0("free",1),uf=n._MdnCom_ESCHandler=H0("MdnCom_ESCHandler",1),Df=n._MdnCom_Free=H0("MdnCom_Free",1),pf=n._MdnCom_RawRx=H0("MdnCom_RawRx",1),bf=n._MdnCom_CryptoSelfTest=H0("MdnCom_CryptoSelfTest",0),mf=n._MdnCom_SetCompanionKeypair=H0("MdnCom_SetCompanionKeypair",2),jf=n._MdnCom_InitiateEcsHandshake=H0("MdnCom_InitiateEcsHandshake",0),hf=n._MdnCom_SetSecDebug=H0("MdnCom_SetSecDebug",1),gf=n._MdnCom_GetEcsState=H0("MdnCom_GetEcsState",0),yf=n._MdnCom_ResetEcs=H0("MdnCom_ResetEcs",0),kf=n._MdnCom_RegisterEcsHandshakeCallback=H0("MdnCom_RegisterEcsHandshakeCallback",1),wf=n._MdnCom_Init=H0("MdnCom_Init",2),_f=n._SendUtoQuery=H0("SendUtoQuery",2),Sf=n._SendUtoCmdExt=H0("SendUtoCmdExt",4),Ws=H0("fflush",1),ti=c.emscripten_stack_get_end,$f=c.emscripten_stack_get_base,Pf=H0("strerror",1),Xs=c.emscripten_stack_init,Tf=c.emscripten_stack_get_free,qf=c._emscripten_stack_restore,Nf=c._emscripten_stack_alloc,If=c.emscripten_stack_get_current,Mf=Rt=c.memory,Lf=We=c.__indirect_function_table}var Ys={__cxa_throw:XA,_abort_js:Yr,_embind_finalize_value_object:Oe,_embind_register_bigint:Qr,_embind_register_bool:o,_embind_register_class:Je,_embind_register_class_constructor:b,_embind_register_class_property:$,_embind_register_emval:I0,_embind_register_float:m0,_embind_register_function:hx,_embind_register_integer:Nx,_embind_register_memory_view:Ox,_embind_register_std_string:Xn,_embind_register_std_wstring:f,_embind_register_value_object:B,_embind_register_value_object_field:D,_embind_register_void:m,_emval_create_invoker:N0,_emval_decref:o0,_emval_get_module_property:j0,_emval_get_property:Bx,_emval_incref:wx,_emval_invoke:Hx,_emval_new_cstring:Xx,_emval_run_destructors:Yx,emscripten_resize_heap:gx,fd_close:xf,fd_seek:tf,fd_write:nf,random_get:af},Qs;function Rf(){Xs(),Y()}function Gf(){Rf(),Kx();function c(){y(!Qs),Qs=!0,n.calledRun=!0,!M&&(_A(),d0?.(n),n.onRuntimeInitialized?.(),r0("onRuntimeInitialized"),y(!n._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),SA())}n.setStatus?(n.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>n.setStatus(""),1),c()},1)):c(),W()}var hr;hr=await Wr(),Gf(),L0?i=n:i=new Promise((c,C)=>{d0=c,T0=C});for(let c of Object.keys(n))c in t||Object.defineProperty(t,c,{configurable:!0,get(){vx(`Access to module property ('${c}') is no longer possible via the module constructor argument; Instead, use the result of the module constructor.`)}});return i}})();typeof x=="object"&&typeof A=="object"?(A.exports=e,A.exports.default=e):typeof define=="function"&&define.amd&&define([],()=>e)}}),Xo=Object.freeze({p:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,n:0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,h:8n,a:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,d:0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,Gx:0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,Gy:0x6666666666666666666666666666666666666666666666666666666666666658n}),{p:nn,n:rn,Gx:lo,Gy:co,a:Di,d:pi,h:Lc}=Xo,Dt=32,Oc=(...x)=>{"captureStackTrace"in Error&&typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(...x)},$x=(x="")=>{let A=new Error(x);throw Oc(A,$x),A},Rc=x=>typeof x=="bigint",Gc=x=>typeof x=="string",Uc=x=>x instanceof Uint8Array||ArrayBuffer.isView(x)&&x.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in x&&x.BYTES_PER_ELEMENT===1,nr=(x,A,e="")=>{let r=Uc(x),t=x?.length,i=A!==void 0;if(!r||i&&t!==A){let n=e&&`"${e}" `,F=i?` of length ${A}`:"",v=r?`length=${t}`:`type=${typeof x}`,E=n+"expected Uint8Array"+F+", got "+v;throw r?new RangeError(E):new TypeError(E)}return x},Bn=x=>new Uint8Array(x),Vi=x=>Uint8Array.from(x),Yo=(x,A)=>x.toString(16).padStart(A,"0"),Qo=x=>Array.from(nr(x)).map(A=>Yo(A,2)).join(""),oe={_0:48,_9:57,A:65,F:70,a:97,f:102},Eo=x=>{if(x>=oe._0&&x<=oe._9)return x-oe._0;if(x>=oe.A&&x<=oe.F)return x-(oe.A-10);if(x>=oe.a&&x<=oe.f)return x-(oe.a-10)},Zo=x=>{let A="hex invalid";if(!Gc(x))return $x(A);let e=x.length,r=e/2;if(e%2)return $x(A);let t=Bn(r);for(let i=0,n=0;i<r;i++,n+=2){let F=Eo(x.charCodeAt(n)),v=Eo(x.charCodeAt(n+1));if(F===void 0||v===void 0)return $x(A);t[i]=F*16+v}return t},xF=()=>globalThis?.crypto,Hc=()=>xF()?.subtle??$x("crypto.subtle must be defined, consider polyfill"),AF=(...x)=>{let A=0;for(let t of x)A+=nr(t).length;let e=Bn(A),r=0;return x.forEach(t=>{e.set(t,r),r+=t.length}),e},Jc=(x=Dt)=>xF().getRandomValues(Bn(x)),sn=BigInt,Ze=(x,A,e,r="bad number: out of range")=>{if(!Rc(x))throw new TypeError(r);if(A<=x&&x<e)return x;throw new RangeError(r)},ix=(x,A=nn)=>{let e=x%A;return e>=0n?e:A+e},Bo=(1n<<255n)-1n,C0=x=>{x<0n&&$x("negative coordinate");let A=(x>>255n)*19n+(x&Bo);return A=(A>>255n)*19n+(A&Bo),A%nn},zc=x=>ix(x,rn),Kc=(x,A)=>{(x===0n||A<=0n)&&$x("no inverse n="+x+" mod="+A);let e=ix(x,A),r=A,t=0n,i=1n,n=1n,F=0n;for(;e!==0n;){let v=r/e,E=r%e,u=t-n*v,p=i-F*v;r=e,e=E,t=n,i=F,n=u,F=p}return r===1n?ix(t,A):$x("no inverse")},Vc=x=>{let A=tE[x];return typeof A!="function"&&$x("hashes."+x+" not set"),A},Wc=x=>nr(x,64,"digest"),bi=x=>x instanceof mt?x:$x("Point expected"),qi=2n**256n,Wi=class xr{constructor(A,e,r,t){a0(this,"X"),a0(this,"Y"),a0(this,"Z"),a0(this,"T");let i=qi;this.X=Ze(A,0n,i),this.Y=Ze(e,0n,i),this.Z=Ze(r,1n,i),this.T=Ze(t,0n,i),Object.freeze(this)}static CURVE(){return Xo}static fromAffine(A){return new xr(A.x,A.y,1n,C0(A.x*A.y))}static fromBytes(A,e=!1){let r=pi,t=Vi(nr(A,Dt)),i=A[31];t[31]=i&-129;let n=eF(t);Ze(n,0n,e?qi:nn);let v=C0(n*n),E=ix(v-1n),u=C0(r*v+1n),{isValid:p,value:j}=Qc(E,u);p||$x("bad point: y not sqrt");let w=(j&1n)===1n,g=(i&128)!==0;return!e&&j===0n&&g&&$x("bad point: x==0, isLastByteOdd"),g!==w&&(j=ix(-j)),new xr(j,n,1n,C0(j*n))}static fromHex(A,e){return xr.fromBytes(Zo(A),e)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}assertValidity(){let A=Di,e=pi,r=this;if(r.is0())return $x("bad point: ZERO");let{X:t,Y:i,Z:n,T:F}=r,v=C0(t*t),E=C0(i*i),u=C0(n*n),p=C0(u*u),j=C0(v*A),w=C0(u*(j+E)),g=ix(p+C0(e*C0(v*E)));if(w!==g)return $x("bad point: equation left != right (1)");let S=C0(t*i),T=C0(n*F);return S!==T?$x("bad point: equation left != right (2)"):this}equals(A){let{X:e,Y:r,Z:t}=this,{X:i,Y:n,Z:F}=bi(A),v=C0(e*F),E=C0(i*t),u=C0(r*F),p=C0(n*t);return v===E&&u===p}is0(){return this.equals(rr)}negate(){return new xr(ix(-this.X),this.Y,this.Z,ix(-this.T))}double(){let{X:A,Y:e,Z:r}=this,t=Di,i=C0(A*A),n=C0(e*e),F=C0(2n*r*r),v=C0(t*i),E=ix(A+e),u=ix(C0(E*E)-i-n),p=ix(v+n),j=ix(p-F),w=ix(v-n),g=C0(u*j),S=C0(p*w),T=C0(u*w),q=C0(j*p);return new xr(g,S,q,T)}add(A){let{X:e,Y:r,Z:t,T:i}=this,{X:n,Y:F,Z:v,T:E}=bi(A),u=Di,p=pi,j=C0(e*n),w=C0(r*F),g=C0(C0(i*p)*E),S=C0(t*v),T=ix(C0(ix(e+r)*ix(n+F))-j-w),q=ix(S-g),L=ix(S+g),R=ix(w-C0(u*j)),n0=C0(T*q),M=C0(L*R),y=C0(T*R),O=C0(q*L);return new xr(n0,M,O,y)}subtract(A){return this.add(bi(A).negate())}multiply(A,e=!0){if(!e&&A===0n||(Ze(A,1n,rn),!e&&this.is0()))return rr;if(A===1n)return this;if(this.equals(Lr))return oE(A).p;let r=rr,t=Lr;for(let i=this;A>0n;i=i.double(),A>>=1n)A&1n?r=r.add(i):e&&(t=t.add(i));return r}multiplyUnsafe(A){return this.multiply(A,!1)}toAffine(){let{X:A,Y:e,Z:r}=this;if(this.equals(rr))return{x:0n,y:1n};let t=Kc(r,nn);C0(r*t)!==1n&&$x("invalid inverse");let i=C0(A*t),n=C0(e*t);return{x:i,y:n}}toBytes(){let{x:A,y:e}=this.toAffine(),r=Xc(e);return r[31]|=A&1n?128:0,r}toHex(){return Qo(this.toBytes())}clearCofactor(){return this.multiply(sn(Lc),!1)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){let A=this.multiply(rn/2n,!1).double();return rn%2n&&(A=A.add(this)),A.is0()}};a0(Wi,"BASE");a0(Wi,"ZERO");var mt=Wi,Lr=new mt(lo,co,1n,ix(lo*co)),rr=new mt(0n,1n,1n,0n);mt.BASE=Lr;mt.ZERO=rr;var Xc=x=>Zo(Yo(Ze(x,0n,qi),64)).reverse(),eF=x=>sn("0x"+Qo(Vi(nr(x)).reverse())),zA=(x,A)=>{let e=x;for(;A-- >0n;)e=C0(e*e);return e},Yc=x=>{let A=C0(x*x),e=C0(A*x),r=C0(zA(e,2n)*e),t=C0(zA(r,1n)*x),i=C0(zA(t,5n)*t),n=C0(zA(i,10n)*i),F=C0(zA(n,20n)*n),v=C0(zA(F,40n)*F),E=C0(zA(v,80n)*v),u=C0(zA(E,80n)*v),p=C0(zA(u,10n)*i);return{pow_p_5_8:C0(zA(p,2n)*x),b2:e}},Co=0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n,Qc=(x,A)=>{let e=C0(A*C0(A*A)),r=C0(C0(e*e)*A),t=Yc(C0(x*r)).pow_p_5_8,i=C0(x*C0(e*t)),n=C0(A*C0(i*i)),F=i,v=C0(i*Co),E=n===x,u=n===ix(-x),p=n===ix(-x*Co);return E&&(i=F),(u||p)&&(i=v),(ix(i)&1n)===1n&&(i=ix(-i)),{isValid:E||u,value:i}},Zc=x=>zc(eF(x)),xE=(...x)=>Promise.resolve(Vc("sha512Async")(AF(...x))).then(Wc),AE=x=>{let A=Vi(x),e=A.slice(0,32);e[0]&=248,e[31]&=127,e[31]|=64;let r=A.slice(32,64),t=Zc(e),i=Lr.multiply(t),n=i.toBytes();return{head:e,prefix:r,scalar:t,point:i,pointBytes:n}},eE=x=>xE(nr(x,Dt)).then(AE),rE=x=>eE(x).then(A=>A.pointBytes),tE={sha512Async:async x=>{let A=Hc(),e=AF(x);return Bn(await A.digest("SHA-512",e.buffer))},sha512:void 0},nE=x=>(x=x===void 0?Jc(Dt):x,nr(x,Dt)),iE=async x=>{let A=nE(x),e=await rE(A);return{secretKey:A,publicKey:e}},an=8,sE=256,rF=Math.ceil(sE/an)+1,Ni=2**(an-1),aE=()=>{let x=[],A=Lr,e=A;for(let r=0;r<rF;r++){e=A,x.push(e);for(let t=1;t<Ni;t++)e=e.add(A),x.push(e);A=e.double()}return x},uo=void 0,Do=(x,A)=>{let e=A.negate();return x?e:A},oE=x=>{let A=uo||(uo=aE()),e=rr,r=Lr,t=2**an,i=t,n=sn(t-1),F=sn(an);for(let v=0;v<rF;v++){let E=Number(x&n);x>>=F,E>Ni&&(E-=i,x+=1n);let u=v*Ni,p=u,j=u+Math.abs(E)-1,w=v%2!==0,g=E<0;E===0?r=r.add(Do(w,A[p])):e=e.add(Do(g,A[j]))}return x!==0n&&$x("invalid wnaf"),{p:e,f:r}},FE=32,vE=64;async function po(){let{secretKey:x,publicKey:A}=await iE(),e=new Uint8Array(vE);return e.set(x,0),e.set(A,FE),{publicKey:A,privateKey:e}}function Ii(x){let A="";for(let e of x)A+=String.fromCharCode(e);return btoa(A)}function bo(x,A="base64 value"){return lE(fE(x,A))}function fE(x,A){try{return atob(x)}catch{throw new Error(`malformed ${A}: not valid base64`)}}function tF(x){return Ii(x).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function lE(x){let A=new Uint8Array(x.length);for(let e=0;e<x.length;e++)A[e]=x.charCodeAt(e);return A}var on=class extends Error{constructor(x,A,e){super(e),a0(this,"httpStatus",x),a0(this,"code",A),this.name="CertApiError"}},mo="/api/1/companion/cert",cE=10080*60*1e3,jo=typeof __COMPANION_AUTH_DEV_PROXY__<"u"&&__COMPANION_AUTH_DEV_PROXY__;async function EE(x,A){let e=x.apiHost.replace(/\/+$/,""),r=jo?mo:e+mo,t={Authorization:`Bearer ${x.accessToken}`,"Content-Type":"application/json",Accept:"application/json"};jo&&e&&(t["x-target-host"]=e);let i=await fetch(r,{method:"POST",headers:t,body:JSON.stringify({publicKey:tF(A.publicKey),subject:A.subject})});if(!i.ok){let F="unknown_error",v=i.statusText||`Cert API request failed (${i.status})`;try{let E=await i.json();E.code&&(F=E.code),E.message&&(v=E.message)}catch{}throw new on(i.status,F,v)}let n=await i.json();if(!n.certificate||!n.notAfter)throw new on(i.status,"invalid_response","Cert API response missing certificate or notAfter");return{certificateBase64Url:n.certificate,notAfter:n.notAfter}}function BE(x,A=cE){let e=Date.parse(x);return Number.isFinite(e)?e-Date.now()>A:!1}var CE=Ic(Mc(),1),Qt="[device-master]",ir={debug:(x,...A)=>console.debug(Qt,x,...A),info:(x,...A)=>console.info(Qt,x,...A),warn:(x,...A)=>console.warn(Qt,x,...A),error:(x,...A)=>console.error(Qt,x,...A)},Mi={debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}},dE=new Uint32Array([0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117]);function iF(x,A=0){let e=~~A^-1;for(let r=0;r<x.length;r++)e=e>>>8^dE[(e^x[r])&255];return(e^-1)>>>0}var ho=Date.UTC(1999,11,31,0,0,0);function go(x,A,e=" "){let r=""+x,t=Math.max(0,Math.abs(A)-r.length),i=e.repeat(t);return A<0?r+i:i+r}function Xe(x,A){return("0000000000000000"+x.toString(16)).substr(-A)}function yo(x){if(x instanceof Uint8Array)return x;if(x instanceof ArrayBuffer)return new Uint8Array(x);if(x&&Object.hasOwn(x,"type")&&x.type==="Buffer"&&Object.hasOwn(x,"data")&&x.data instanceof Array)return Uint8Array.from(x.data);if(x.buffer)return new Uint8Array(x.buffer,x.byteOffset,x.byteLength);throw new Error("can not convert value to Uint8Array")}var _p=new Uint8Array([0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64]),Sp=new Uint8Array([0,192,193,1,195,3,2,194,198,6,7,199,5,197,196,4,204,12,13,205,15,207,206,14,10,202,203,11,201,9,8,200,216,24,25,217,27,219,218,26,30,222,223,31,221,29,28,220,20,212,213,21,215,23,22,214,210,18,19,211,17,209,208,16,240,48,49,241,51,243,242,50,54,246,247,55,245,53,52,244,60,252,253,61,255,63,62,254,250,58,59,251,57,249,248,56,40,232,233,41,235,43,42,234,238,46,47,239,45,237,236,44,228,36,37,229,39,231,230,38,34,226,227,35,225,33,32,224,160,96,97,161,99,163,162,98,102,166,167,103,165,101,100,164,108,172,173,109,175,111,110,174,170,106,107,171,105,169,168,104,120,184,185,121,187,123,122,186,190,126,127,191,125,189,188,124,180,116,117,181,119,183,182,118,114,178,179,115,177,113,112,176,80,144,145,81,147,83,82,146,150,86,87,151,85,149,148,84,156,92,93,157,95,159,158,94,90,154,155,91,153,89,88,152,136,72,73,137,75,139,138,74,78,142,143,79,141,77,76,140,68,132,133,69,135,71,70,134,130,66,67,131,65,129,128,64]);var uE=[8364,129,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,141,381,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,157,382,376],DE=new Map(uE.map((x,A)=>[x,128+A]));function pE(x){return x<=127||x>=160&&x<=255?x:DE.get(x)??63}var dt="uto_script.dat",sF="uto_fw.dat",Xi=(x=>(x[x.RESULT=0]="RESULT",x[x.QUERY=1]="QUERY",x[x.DELETE=2]="DELETE",x[x.DATA=3]="DATA",x[x.UNS_DATA=4]="UNS_DATA",x[x.LIVE_DATA=5]="LIVE_DATA",x[x.FILE_LIST=7]="FILE_LIST",x[x.FILE_RETR=8]="FILE_RETR",x[x.FILE_STOR=9]="FILE_STOR",x[x.FILE_DELE=10]="FILE_DELE",x[x.SET_VALUE=11]="SET_VALUE",x))(Xi||{});var Se=(x=>(x[x.DEVINFO=0]="DEVINFO",x[x.STAMPS=1]="STAMPS",x[x.LIC_QUERY=2]="LIC_QUERY",x[x.FILEMAP=3]="FILEMAP",x[x.MNTCFG=4]="MNTCFG",x[x.MDNCFG=5]="MDNCFG",x[x.CONTEXT=128]="CONTEXT",x[x.ALERTS=4294901767]="ALERTS",x[x.HISTDATA0=26368]="HISTDATA0",x[x.LOG=26375]="LOG",x[x.SYSCFG=26378]="SYSCFG",x[x.STATE=26389]="STATE",x[x.LOCALS=26402]="LOCALS",x[x.POS=26404]="POS",x[x.CTRLAMX=26405]="CTRLAMX",x[x.DYNPOS__=26406]="DYNPOS__",x[x.CONFIG0=26416]="CONFIG0",x[x.CONFIG1=26417]="CONFIG1",x[x.CONFIG2=26418]="CONFIG2",x[x.CONFIG3=26419]="CONFIG3",x[x.CONFIG4=26420]="CONFIG4",x[x.CONFIG5=26421]="CONFIG5",x[x.CONFIG6=26422]="CONFIG6",x[x.CONFIG7=26423]="CONFIG7",x[x.CONFIG8=26424]="CONFIG8",x[x.CONFIG9=26425]="CONFIG9",x[x.SYSOTP=26432]="SYSOTP",x[x.SYSFLASH=26433]="SYSFLASH",x[x.APPOTP=26434]="APPOTP",x[x.APPFLASH=26435]="APPFLASH",x[x.APPSTATE=26436]="APPSTATE",x[x.SYSINFO=26437]="SYSINFO",x[x.APPINFO=26438]="APPINFO",x[x.SYSSTATE=26439]="SYSSTATE",x[x.HISTDATA1=26528]="HISTDATA1",x[x.HISTDATA2=26529]="HISTDATA2",x[x.HISTDATA3=26530]="HISTDATA3",x[x.HISTDATA4=26531]="HISTDATA4",x[x.HISTDATA5=26532]="HISTDATA5",x[x.HISTDATA6=26533]="HISTDATA6",x[x.HISTDATA7=26534]="HISTDATA7",x[x.HISTDATA8=26535]="HISTDATA8",x[x.HISTDATA9=26536]="HISTDATA9",x[x.HISTDATA_RAW=26623]="HISTDATA_RAW",x[x.CONFIGA=4294928218]="CONFIGA",x[x.CONFIGB=4294928219]="CONFIGB",x[x.CONFIGC=4294928220]="CONFIGC",x))(Se||{});var Yi=(x=>(x[x.off=0]="off",x[x.pawn=2]="pawn",x))(Yi||{});var bE=97;function Li(x){return x&bE}var ko={config0:26416,config1:26417,config2:26418,config3:26419,config4:26420,config5:26421,config6:26422,config7:26423,config8:26424,config9:26425,histdata0:26368,histdata1:26528,histdata2:26529,histdata3:26530,histdata4:26531,histdata5:26532,histdata6:26533,histdata7:26534,histdata8:26535,histdata9:26536},mE=class{constructor(){}resultToString(x){x|=0;let A=x&256?"+DISC":"";switch(x&255){case 0:return"OK"+A;case 1:return"E_TAG"+A;case 2:return"E_DLEN"+A;case 3:return"E_DATA"+A;case 4:return"E_STAMP"+A;case 5:return"E_EOD"+A;case 6:return"E_CMD"+A;case 7:return"E_CMDDENIED"+A;case 8:return"E_FULL"+A;case 9:return"E_NOTSUPPORTED"+A;case 10:return"E_OLDDATA"+A;case 11:return"E_STORAGE"+A;case 12:return"E_STORAGE"+A}return"E_0x"+Xe(x,4)+A}commandToString(x){switch(x|=0,x){case 0:return"COMMAND_RESULT";case 1:return"COMMAND_QUERY";case 2:return"COMMAND_DEL";case 3:return"COMMAND_DATA";case 4:return"COMMAND_UNS_DATA";case 5:return"COMMAND_LIVE_DATA";case 7:return"COMMAND_FILE_LIST";case 8:return"COMMAND_FILE_RETR";case 9:return"COMMAND_FILE_STOR";case 10:return"COMMAND_FILE_DELE";case 11:return"COMMAND_SET_VALUE"}return"COMMAND_0x"+Xe(x,2)}tagToString(x){x|=0;let A=Object.entries(Se).find(([,e])=>e===x);return A?"TAG_"+A[0]:"TAG_0x"+Xe(x,4)}containerIdToTag(x,A){let e=ko[x]||null;return e&&A&&x.startsWith("histdata")?26623:e}containerIdOf(x){let A=Object.entries(ko).find(([,e])=>e===x.wTag);if(A)return A[0];if(x.wTag===26623){if(!x.data||!x.data.byteLength)return null;let e=x.data.getUint8(0);return e===32?"alerts":e>=0&&e<=9?`histdata${e}`:null}return null}formatSerialNumber(x,A="-"){return x?x.substr(0,4)+A+x.substr(4,4)+A+x.substr(8,4)+A+x.substr(12):"(none)"}decodeUplinkState(x){let A={FAILED:1,ACTIVE:2,STARTED:4,RETRY:8,WAKEUPABLE:16,EXTSIM:32,DISABLED:64,WAKEUP:256,POSUPDATE_ACTIVE:512},e=!!(x&A.WAKEUPABLE),r=[];x&A.POSUPDATE_ACTIVE?r=["locating",!1]:x&A.RETRY?r=["retry",!1]:x&A.STARTED?r=["dialing",!1]:x&A.ACTIVE?r=["active",!1]:x&A.FAILED?r=["failed",e]:x&A.DISABLED?r=["disabled",!1]:r=["offline",e];let t=A.WAKEUPABLE|A.RETRY|A.STARTED|A.ACTIVE|A.POSUPDATE_ACTIVE|A.FAILED|A.DISABLED|A.EXTSIM;return{signal:r[0],wakeupAble:r[1],path:x&A.EXTSIM?"xsim ":"isim ",txStateUnknown:x&~t}}stamp40ToMS(x){let A=Math.trunc(x/256),e=x&255;return Math.round(A*1e3+1e3*e/256)+ho}msToStamp40(x){let A=(x-ho)/1e3,e=Math.trunc(A),r=Math.round((A-e)*256);return e*256+r}stamp40ToDate(x){return new Date(this.stamp40ToMS(x))}utf8Unpack(x,A,e){let r=new TextDecoder("utf-8"),t=0;for(;t<e&&x.getUint8(A+t);)t++;let i=new Uint8Array(x.buffer,A,t);return r.decode(i)}ansiUnpack(x,A,e,r){try{let t=yo(x),i=new TextDecoder(r),n=0;for(;n<e&&t[A+n];)n++;return i.decode(t.slice(A,A+n))}catch(t){return console.log("?"+t.message,t),`ERR-unknown codepage "${r}"`}}cp1252Unpack(x,A,e){return this.ansiUnpack(x,A,e,"cp1252")}ansiPack(x,A,e,r){let t=yo(x);t.fill(0,A,A+e);for(let i=0;i<e&&i<r.length;i++)t[A+i]=pE(r.charCodeAt(i))}cp1252Pack(x,A,e,r){return this.ansiPack(x,A,e,r)}dataFrameNotNull(x){if(!x.data)throw new Error("UtoFrame does not have any data!")}decode_DEVINFO(x){this.dataFrameNotNull(x);let A=x.data,e=A.getUint16(0),r=A.getUint16(2),t=A.getUint16(4),i=A.getUint32(6),n=(Xe(i,8)+Xe(x.dwDevSN,8)).toUpperCase(),F=[];for(let v=0;v<(A.byteLength-10)/5;v++){let E=A.getUint8(10+v*5+2),u=A.getUint16(10+v*5);F.push({wTag:u,sTag:this.tagToString(u),size:A.getUint16(10+v*5+3),flags:{historic:!!(E&1),single:!(E&1),up:!!(E&2),down:!!(E&4),variableLength:!!(E&8),setValue:!!(E&16)}})}return{serialNumber:n,class:Xe(e,4),firmwareVersion:`${go(t>>8,2)}v${go(t&255,3,"0")}`,flags:Xe(r,4),utos:F}}decode_STAMPS(x){this.dataFrameNotNull(x);let A=x.data,e={contextId:A.getBigUint64(0,!0).toString(16).toUpperCase(),stamps:[]};for(let r=0;r<(A.byteLength-8)/5;r++)e.stamps.push(A.getUint32(8+r*5+0)*256+A.getUint8(8+r*5+4));return e}decode_CONTEXT(x){this.dataFrameNotNull(x);let A=x.data;return{id:A.getBigUint64(0,!0).toString(16).toUpperCase(),name:this.cp1252Unpack(A,8,50)}}encode_CONTEXT(x){let A=new Uint8Array(58),e=new DataView(A.buffer);return e.setBigUint64(0,BigInt("0x"+x.id),!0),this.cp1252Pack(e,8,50,x.name),A}decode_FILEMAP(x){this.dataFrameNotNull(x);let A=x.data,e=A.getUint16(13,!1),r={stamp:A.getUint32(0,!1)*256+A.getUint8(4),size:A.getUint32(5,!1),crc32:A.getUint32(9,!1),flags:{read:!!(e&1),write:!!(e&2),node:!!(e&4),system:!!(e&8),extra:e&-16},_flags:e,name:this.cp1252Unpack(A,15,A.byteLength-15)};if(r.flags?.extra)throw new Error("?UTO.decode_FILEMAP.unknown-file-flags."+r.flags.extra);return r}encode_FILEMAP(x){if(x.flags){let r=0;x.flags.extra&&(r|=x.flags.extra|0),x.flags.read&&(r|=1),x.flags.write&&(r|=2),x.flags.node&&(r|=4),x.flags.system&&(r|=8),x._flags=r}let A=new Uint8Array(15+x.name.length+1),e=new DataView(A.buffer);return e.setUint32(0,Math.trunc(x.stamp/256),!1),e.setUint8(4,x.stamp&255),e.setUint32(5,x.size,!1),e.setUint32(9,x.crc32,!1),e.setUint16(13,x._flags,!1),this.cp1252Pack(e,15,256,x.name),A}decode_RM2M_STATE(x){this.dataFrameNotNull(x);let A=x.data;return{rssi:A.getInt8(0),uplinkMode:A.getUint8(1),imei:this.cp1252Unpack(A,61,15),hardwareId:this.cp1252Unpack(A,96,50),sim:{id:this.cp1252Unpack(A,2,15),apn:this.cp1252Unpack(A,17,40),iccId:this.cp1252Unpack(A,76,20)},network:{mcc:A.getUint16(57),mnc:A.getUint16(59)}}}},W0=new mE,Rr={nowMs:()=>Date.now()},aF=class{constructor(x="(unnamed)"){a0(this,"name"),a0(this,"_locked"),a0(this,"_chain"),this.name=x,this._locked=0,this._chain=[]}get islocked(){return!!this._locked}requestLock(){if(++this._locked!==1)return new Promise(x=>{this._chain.push(x)})}unlock(){--this._locked,this._chain.length&&this._chain.shift()()}async runExclusive(x){await this.requestLock();try{return await x()}finally{this.unlock()}}},wo=new WeakMap;function oF(x,A){let r=(wo.get(x)??Promise.resolve()).then(()=>jE(x,A));return wo.set(x,r.catch(()=>{})),r}async function jE(x,A){x.interface&&x.interface==="ble"?await hE(async e=>{await x.write(e)},A,x.mtuSize??23):await x.write(A)}async function hE(x,A,e=23){let r=new Uint8Array(A),t=e-3;for(let i=0;i<r.byteLength;i+=t){let n=r.slice(i,i+t);await x(n.buffer)}}var _o=15e3,gE=500,yE=3,kE=1024;function So(x){return x?.utos.find(e=>e.wTag===3)?.size||kE}var Qi=class tn extends nF.EventEmitter{constructor(A,e,r=Rr){super(),a0(this,"mdnComInterface"),a0(this,"receiveUto"),a0(this,"sendUto"),a0(this,"rxUto"),a0(this,"txStream"),a0(this,"SendUtoCmdExt"),a0(this,"utoPortLock"),a0(this,"transport"),a0(this,"logger"),a0(this,"ecsHandshakeResolver",null),a0(this,"disposeTransportListener",null),a0(this,"encrypted",!1),a0(this,"lastTxWrite",Promise.resolve()),a0(this,"timeSource"),a0(this,"fileChunkSize",So(null)),this.mdnComInterface=null,this.receiveUto=null,this.sendUto=null,this.rxUto=null,this.txStream=null,this.SendUtoCmdExt=null,this.utoPortLock=new aF("UTO-Port"),this.transport=A,this.logger=e??ir,this.timeSource=r}async init(){if(this.mdnComInterface!==null)return;this.mdnComInterface=await(0,CE.default)({print:i=>{this.logger.info(`[mdnCom] ${i}`),this.emit("mdnCom",i)},printErr:i=>{this.logger.error(`[mdnCom] ${i}`),this.emit("mdnComError",i)}});let A=this.mdnComInterface.MdnCom_Init;this.receiveUto=this.mdnComInterface.MdnCom_RawRx,this.sendUto=this.mdnComInterface.MdnCom_SendUtoQuery,this.rxUto=this.mdnComInterface.MdnCom_GetRxUto,this.txStream=this.mdnComInterface.MdnCom_GetTxStream,this.SendUtoCmdExt=this.mdnComInterface.MdnCom_SendUtoCmdExt;let e=this.mdnComInterface.addFunction(()=>{if(this.txStream){let i=this.txStream();this.lastTxWrite=oF(this.transport,i.buffer.slice(i.byteOffset,i.byteOffset+i.byteLength))}},"v"),r=this.mdnComInterface.addFunction(()=>{if(this.rxUto){let i=this.rxUto(),n=this.parseUtoFrame(i);this.emit("utoFrame",n)}},"v");await A(e,r);let t=this.mdnComInterface.addFunction(i=>{if(this.logger.info(`[ecs] handshake event from WASM: result=${i} resolverPresent=${this.ecsHandshakeResolver!==null}`),this.ecsHandshakeResolver){let n=this.ecsHandshakeResolver;this.ecsHandshakeResolver=null,n({success:i===0,resultCode:i})}else this.logger.warn("[ecs] handshake event fired but no resolver registered \u2014 Promise will hang")},"vi");this.logger.info(`[ecs] registering handshake callback fn=${t}`),this.mdnComInterface.MdnCom_RegisterEcsHandshakeCallback(t),this.disposeTransportListener=this.transport.onData(async i=>{this.receiveUto&&await this.receiveUto(new Uint8Array(i))}),await this.requestDeviceInfo().catch()}async dispose(A){if(this.logger.info("[dispose] starting dispose"),this.encrypted){if(!A){let e=new Error("[dispose] encrypted session active but no AtCommandHandler provided \u2014 cannot send connection close");throw this.logger.error(e.message),e}try{this.logger.info("[dispose] requesting context for encrypted close");let e=await this.requestContext();e?(this.logger.info("[dispose] writing context back to device"),await this.writeContext(e)):this.logger.warn("[dispose] requestContext returned null \u2014 skipping writeContext")}catch(e){this.logger.error(`[dispose] error during context round trip: ${e}`)}try{this.logger.info("[dispose] sending connection close"),await A.sendConnectionClose(),this.logger.info("[dispose] connection close acknowledged")}catch(e){this.logger.error(`[dispose] error sending connection close: ${e}`)}finally{this.encrypted=!1,this.logger.info("[dispose] encrypted flag cleared")}}if(this.disposeTransportListener&&(this.logger.info("[dispose] removing transport data listener"),this.disposeTransportListener(),this.disposeTransportListener=null),this.mdnComInterface){this.logger.info("[dispose] resetting WASM ECS state");try{this.mdnComInterface.MdnCom_ResetEcs()}catch(e){this.logger.error(`[dispose] error resetting WASM ECS state: ${e}`)}this.ecsHandshakeResolver=null}this.logger.info("[dispose] dispose complete")}isInitialized(){if(!this.mdnComInterface)throw new Error('utoMaster not initialized. Have you called "init()"?')}parseUtoFrame(A){return{dwDevSN:A.vDevID_u32,bCmd:A.vCmd_u8,stamp:A.vStamp_s.u32SysTime*256+A.vStamp_s.u8SysTime,wTag:A.vTag_u16&255,wTagFull:A.vTag_u16,sTag:W0.resultToString(A.vTag_u16),_dbg:A.vDevID_u32.toString(16),bVersion:1,_dlen:A.vDLen_u16,bRes:A.vRes_u8,bSeq:A.vSeq_u8,data:A.vData_pu8.length?new DataView(A.vData_pu8.buffer,A.vData_pu8.byteOffset,A.vData_pu8.length):null}}get utoStampNow(){return{u32SysTime:Math.floor(this.timeSource.nowMs()/1e3)-946598400,u8SysTime:0}}get utoStampNow40(){return this.utoStampNow.u32SysTime*256}async requestUto(A,e=0){await this.utoPortLock.requestLock();try{if(!this.sendUto)return null;let r=Math.trunc(e/256),t=e&255;return await this.sendWithRetry((i,n,F)=>{if(i.bCmd===0){let v=this.resultVerdict(i);v===5||v===0||v===4?n(null):F(i);return}if(i.wTagFull!==A)return F(i);n(i)},async()=>{this.sendUto(A,{u32SysTime:r,u8SysTime:t}),await this.lastTxWrite},{timeoutMessage:`[UtoMaster] requestUto: no response from device for tag=0x${A.toString(16)}`})}finally{this.utoPortLock.unlock()}}copyDataView(A){return new Uint8Array(A.buffer.slice(A.byteOffset,A.byteOffset+A.byteLength))}static resultCode(A){return{verdict:A.wTagFull&-257,disc:(A.wTagFull&256)!==0}}resultVerdict(A){let{verdict:e,disc:r}=tn.resultCode(A);return r&&(this.logger.warn(`[UtoMaster] device requested disconnect (RESULT 0x${A.wTagFull.toString(16).padStart(4,"0")})`),this.emit("deviceDisconnectRequested",A.wTagFull)),e}static concatChunks(A){let e=A.reduce((i,n)=>i+n.length,0),r=new Uint8Array(e),t=0;for(let i of A)r.set(i,t),t+=i.length;return r}sendWithRetry(A,e,r){let t=r?.timeoutMs??gE,i=r?.maxRetries??yE;return new Promise((n,F)=>{let v=0,E=!1,u=()=>{},p,j={resolve:g=>{E=!0,clearTimeout(p),this.removeListener("utoFrame",u),n(g)},reject:g=>{E=!0,clearTimeout(p),this.removeListener("utoFrame",u),F(g)}},w=async()=>{u=g=>A(g,j.resolve,j.reject),this.once("utoFrame",u);try{await e()}catch(g){if(E)return;this.removeListener("utoFrame",u),F(g);return}E||(p=setTimeout(()=>{if(this.removeListener("utoFrame",u),v>=i){F(new Error(r?.timeoutMessage??`[UtoMaster] no response from device after ${i} retries`));return}v++,this.logger.warn(`[UtoMaster] no response within ${t}ms, retrying (${v}/${i})`),w()},t))};w()})}createFrameIdleGuard(A,e,r){let t,i=()=>{t!==void 0&&(clearTimeout(t),t=void 0)};return{arm:()=>{i(),t=setTimeout(()=>{t=void 0,this.removeListener("utoFrame",A),r()},e)},clear:i}}async requestHistoricUtos(A,e,r,t=_o,i=0,n){return await this.utoPortLock.requestLock(),new Promise((F,v)=>{if(!this.sendUto)return F([]);let E=[],u=0,p=Promise.resolve(),j=T=>{if(w.arm(),T.bCmd===0){w.clear(),this.settleHistoricTransfer(T,E,n,p,F,v);return}if(T.wTagFull===A&&T.data&&(E.push({stamp40:T.stamp,data:this.copyDataView(T.data)}),r?.(++u),n&&i>0&&E.length>=i)){let q=E.splice(0);p=p.then(()=>n(q))}this.once("utoFrame",j)},w=this.createFrameIdleGuard(j,t,()=>v(new Error(`[UtoMaster] requestHistoricUtos timed out after ${t}ms (tag=0x${A.toString(16)}, ${u} records received)`)));this.once("utoFrame",j),w.arm();let g=Math.trunc(e/256),S=e&255;this.sendUto(A,{u32SysTime:g,u8SysTime:S})}).finally(()=>{this.utoPortLock.unlock()})}settleHistoricTransfer(A,e,r,t,i,n){let F=this.resultVerdict(A);if(!(F===5||F===0||F===4)){t.then(()=>n(A)).catch(n);return}let E=r&&e.length>0?e.splice(0):null;(E?t.then(()=>r(E)):t).then(()=>i(r?[]:e)).catch(n)}async requestFile(A,e,r=_o){return await this.utoPortLock.requestLock(),new Promise((t,i)=>{if(!this.SendUtoCmdExt)return t(new Uint8Array(0));let n=[],F=0,v=p=>{if(E.arm(),p.bCmd===0){E.clear();let j=this.resultVerdict(p);j===5||j===0?t(tn.concatChunks(n)):i(p);return}if(p.bCmd===3&&p.data){let j=this.copyDataView(p.data);n.push(j),F+=j.byteLength,e?.(F)}this.once("utoFrame",v)},E=this.createFrameIdleGuard(v,r,()=>i(new Error(`[UtoMaster] requestFile timed out after ${r}ms (file="${A}", ${F} bytes received)`)));this.once("utoFrame",v),E.arm();let u=new Uint8Array(A.length+1);for(let p=0;p<A.length;p++)u[p]=A.charCodeAt(p)&255;this.SendUtoCmdExt(8,3,{u32SysTime:0,u8SysTime:0},u)}).finally(()=>{this.utoPortLock.unlock()})}async deleteFile(A){let e=new Uint8Array(A.length+1);for(let r=0;r<A.length;r++)e[r]=A.charCodeAt(r)&255;await this.sendUTOCmdExt(10,3,e,0)}async sendSetValue(A,e,r){this.isInitialized();let t=new Uint8Array(e.length);W0.cp1252Pack(t,0,e.length,e);try{return await this.sendUTOCmdExt(11,A,t,r),{outcome:"ok",resultCode:0}}catch(i){let n=i;if(n&&n.bCmd===0&&typeof n.wTagFull=="number"){let{verdict:F}=tn.resultCode(n),v=n.wTagFull;return F===4?{outcome:"stamp",resultCode:v}:F===7||F===9?{outcome:"denied",resultCode:v}:{outcome:"error",resultCode:v}}return this.logger.error(`[UtoMaster] sendSetValue transport error tag=0x${A.toString(16)}: ${i}`),{outcome:"error"}}}async requestDeviceInfo(){let A=await this.requestUto(0,this.utoStampNow40),e=A?W0.decode_DEVINFO(A):null;return e&&(this.fileChunkSize=So(e)),e}get fileTransferChunkSize(){return this.fileChunkSize}async requestContext(){let A=await this.requestUto(128,this.utoStampNow40);return A?W0.decode_CONTEXT(A):null}async writeContext(A){await this.sendUTOCmdExt(3,128,W0.encode_CONTEXT(A))}async requestFileList(A){return await this.utoPortLock.requestLock(),new Promise((e,r)=>{if(!this.SendUtoCmdExt)return e({});let t={},i=n=>this.handleFileListFrame(n,t,A,e,r,i);this.once("utoFrame",i),this.SendUtoCmdExt(7,3,{u32SysTime:0,u8SysTime:0},new Uint8Array(0))}).finally(()=>{this.utoPortLock.unlock()})}handleFileListFrame(A,e,r,t,i,n){if(A.bCmd===0){let F=this.resultVerdict(A);F===5||F===0?t(r?e[r]?{[r]:e[r]}:{}:e):i(A);return}try{let F=W0.decode_FILEMAP(A);e[F.name]=F}catch(F){i(F);return}this.once("utoFrame",n)}async requestStamps(){let A=await this.requestUto(1,this.utoStampNow40);return A?W0.decode_STAMPS(A):null}async sendFile(A,e,r,t){let i=e;A===2&&(i=new Uint8Array(e.length+1),i.set(new Uint8Array(e),1),i[0]=A);let n={name:t??dt,stamp:r===0?0:W0.msToStamp40(r??this.timeSource.nowMs()),size:i.length,_flags:11,crc32:iF(i)},F=W0.encode_FILEMAP(n);if(!await this.sendUTOCmdExt(9,3,F,0)){let E=this.fileChunkSize;for(let u=0;u<i.length;u+=E){let p=Math.min(E,i.byteLength-u),j=new Uint8Array(i.buffer,i.byteOffset+u,p);await this.sendUTOCmdExt(3,3,j,u*256);let g=(u+p)/i.byteLength*100;this.emit("installing",g.toFixed(0))}}this.emit("installing",null)}async sendUTOCmdExt(A,e,r,t){await this.utoPortLock.requestLock();try{if(!this.SendUtoCmdExt)return null;let i=t??this.utoStampNow40,n=Math.trunc(i/256),F=i&255;return await this.sendWithRetry((v,E,u)=>{if(v.bCmd!==0){u(v);return}this.resultVerdict(v)===0?E(null):u(v)},async()=>{this.SendUtoCmdExt(A,e,{u32SysTime:n,u8SysTime:F},r),await this.lastTxWrite},{timeoutMessage:`[UtoMaster] sendUTOCmdExt: no response from device for cmd=${A} tag=0x${e.toString(16)}`})}finally{this.utoPortLock.unlock()}}async sendUTOData(A,e,r){return this.sendUTOCmdExt(3,A,e,r)}packOtpFlashString(A){let e=new Uint8Array(1024);return W0.cp1252Pack(e,0,1024,A),e}async writeAppOtp(A){await this.sendUTOData(26434,this.packOtpFlashString(A))}async writeAppFlash(A){await this.sendUTOData(26435,this.packOtpFlashString(A))}async writeSysOtp(A){await this.sendUTOData(26432,this.packOtpFlashString(A))}async writeSysFlash(A){await this.sendUTOData(26433,this.packOtpFlashString(A))}async initiateEcsHandshake(A){if(this.isInitialized(),A.companionPublicKey.length!==32)throw new Error(`companionPublicKey must be 32 bytes, got ${A.companionPublicKey.length}`);if(A.companionPrivateKey.length!==32&&A.companionPrivateKey.length!==64)throw new Error(`companionPrivateKey must be 32 bytes (seed) or 64 bytes (seed||public), got ${A.companionPrivateKey.length}`);let e=A.companionPublicKey.slice(0,32),r=A.companionPrivateKey.slice(0,32);this.logger.info(`[ecs] initiateEcsHandshake: pub.len=${e.length} seed.len=${r.length} state(pre)=${this.mdnComInterface.MdnCom_GetEcsState?.()}`);let t=this.mdnComInterface.MdnCom_SetCompanionKeypair(e,r);return this.logger.info(`[ecs] MdnCom_SetCompanionKeypair returned ${t}`),t<0?{success:!1,resultCode:t}:new Promise((i,n)=>{if(A.signal?.aborted){n(new Error("Operation aborted"));return}let F=()=>{this.ecsHandshakeResolver&&(this.logger.warn("[ecs] abort signal fired \u2014 resetting WASM state"),this.ecsHandshakeResolver=null,this.mdnComInterface.MdnCom_ResetEcs(),n(new Error("Operation aborted")))};A.signal?.addEventListener("abort",F,{once:!0}),this.ecsHandshakeResolver=E=>{this.logger.info(`[ecs] resolver invoked: result=${JSON.stringify(E)}`),A.signal?.removeEventListener("abort",F),E.success&&(this.encrypted=!0),i(E)},this.logger.info("[ecs] calling MdnCom_InitiateEcsHandshake()");let v=this.mdnComInterface.MdnCom_InitiateEcsHandshake();this.logger.info(`[ecs] MdnCom_InitiateEcsHandshake returned ${v} state(post)=${this.mdnComInterface.MdnCom_GetEcsState?.()}`),v<0?(this.ecsHandshakeResolver=null,A.signal?.removeEventListener("abort",F),i({success:!1,resultCode:v})):this.logger.info("[ecs] awaiting device INIT response via MdnCom_RawRx ...")})}resetEcs(){this.isInitialized(),this.mdnComInterface.MdnCom_ResetEcs(),this.ecsHandshakeResolver=null}};function xA(x){return parseInt(x.slice(6),16)}function Jx(x){return"400000"+x.toString(16).toUpperCase().padStart(10,"0")}function FF(x){return x?new Uint8Array(x):null}function Zt(x){return{...x,data:FF(x.data)}}function mi(x){return{...x,data:FF(x.data)}}var wE=/^400000[0-9A-F]{10}$/;function $o(x,A){if(!wE.test(A))throw new Error(`MemoryStorage: uto_data row for tag ${x} has non-canonical stamp "${A}"; expected 16-char uppercase hex output of stamp40ToDbHex ("400000" + 10 hex digits)`)}var Cn=class vF{constructor(){a0(this,"metadata",new Map),a0(this,"utoData",new Map),a0(this,"changeRequests",[]),a0(this,"files",new Map)}async getMetadataValue(A){return this.metadata.get(A)??null}async setMetadataValue(A,e){this.metadata.set(A,e)}async deleteMetadataValue(A){this.metadata.delete(A)}async getUtoDataTags(){return[...this.utoData.keys()]}async getLatestStampForTag(A){let e=this.utoData.get(A);return!e||e.size===0?null:[...e.keys()].sort().at(-1)}async getRowForTag(A){let e=await this.getLatestStampForTag(A);return e===null?null:Zt(this.utoData.get(A).get(e))}async replaceUtoRow(A){$o(A.tag,A.stamp),this.utoData.set(A.tag,new Map([[A.stamp,Zt(A)]]))}async insertHistoricRows(A){for(let e of A){$o(e.tag,e.stamp);let r=this.utoData.get(e.tag);r||(r=new Map,this.utoData.set(e.tag,r)),r.has(e.stamp)||r.set(e.stamp,Zt(e))}}async getHistoricRows(A,e){let r=this.utoData.get(A);if(!r)return[];let t=[...r.values()];if(e.fromStamp!==void 0){let n=e.fromStamp;t=t.filter(F=>F.stamp>=n)}if(e.untilStamp!==void 0){let n=e.untilStamp;t=t.filter(F=>F.stamp<=n)}t.sort((n,F)=>e.order==="desc"?F.stamp.localeCompare(n.stamp):n.stamp.localeCompare(F.stamp));let i=e.offset??0;return t.slice(i,i+e.limit).map(Zt)}async getUtoChangeRequests(){return[...this.changeRequests].sort((A,e)=>A.tag-e.tag||A.stamp.localeCompare(e.stamp)).map(A=>({...A}))}async insertUtoChangeRequests(A){for(let e of A)this.changeRequests.push({tag:e.tag,stamp:Jx(e.stamp40),user:e.user??"",json:e.json})}async clearUtoChangeRequests(){this.changeRequests=[]}async getFiles(){return[...this.files.values()].map(mi)}async getFile(A){let e=this.files.get(A);return e?mi(e):null}async upsertFile(A){this.files.set(A.filename,mi(A))}async deleteFile(A){this.files.delete(A)}toJSON(){let A=[];for(let e of this.utoData.values())for(let r of e.values())A.push({tag:r.tag,stamp:r.stamp,flags:r.flags,site_related:r.site_related,data:r.data?Ii(r.data):null});return{metadata:Object.fromEntries(this.metadata),utoData:A,changeRequests:this.changeRequests.map(e=>({...e})),files:[...this.files.values()].map(e=>({filename:e.filename,stamp:e.stamp,crc:e.crc,size:e.size,flags:e.flags,flags_int:e.flags_int,data:e.data?Ii(e.data):null}))}}static fromJSON(A){let e=new vF;for(let[r,t]of Object.entries(A.metadata??{}))e.metadata.set(r,t);for(let r of A.utoData??[]){let t=e.utoData.get(r.tag);t||(t=new Map,e.utoData.set(r.tag,t)),t.set(r.stamp,{tag:r.tag,stamp:r.stamp,flags:r.flags,site_related:r.site_related,data:r.data?bo(r.data,`uto_data.data of tag ${r.tag}`):null})}e.changeRequests=(A.changeRequests??[]).map(r=>({...r}));for(let r of A.files??[])e.files.set(r.filename,{filename:r.filename,stamp:r.stamp,crc:r.crc,size:r.size,flags:r.flags,flags_int:r.flags_int,data:r.data?bo(r.data,`files.data of "${r.filename}"`):null});return e}},_E=new Set(["link","unknown"]);function pt(x){return _E.has(x)}var SE=-2;function _e(x){return x.index===SE}var $E=65535,Po={configa:4294928218,configb:4294928219,configc:4294928220};function Zi(x){let A=x.toLowerCase();if(A==="histdata"||A==="histdata0")return"histdata0";let e=/^rm2mconfig([0-9a-c])$/.exec(A);return e?`config${e[1]}`:x}function Oi(x){let A=Zi(x.trim()).toLowerCase();return Object.prototype.hasOwnProperty.call(Po,A)?Po[A]:W0.containerIdToTag(A,!1)}function Mr(x){return Oi(x.name)}function xs(x,A){let e=x.byNameOrAlias(A);return Oi(e?e.name:A)}function As(x){return Number.isInteger(x)&&x>=0&&x<=$E}var PE={u8:"u8",s8:"s8",u16:"u16",s16:"s16",u32:"u32",s32:"s32",s64:"s64",f32:"f32",f64:"f64",floatm16:"floatm16",stamp4:"stamp4",stamp:"stamp",stamp8:"stamp8",datetime:"datetime",ufm8:"ufm8",link:"link",string:"string",float:"f32",float32:"f32",float64:"f64",char:"string",bint:"s8",wint:"s16",dint:"s32",qint:"s64",byte:"u8",word:"u16",dword:"u32",time_span:"s64"};function TE(x){return x===void 0?"unknown":PE[x.toLowerCase()]??"unknown"}var qE={u8:1,s8:1,u16:2,s16:2,floatm16:2,u32:4,s32:4,f32:4,stamp4:4,stamp:5,stamp8:8,datetime:8,ufm8:1,link:0,unknown:0,s64:8,f64:8},NE=new Set(["name","alias","title","index","byteofs","type","max","decpl","vscale","vofs","units","editmask","view","edit","default","bitmask"]),es="name",IE="type";function ME(x){let A=x.indexOf("=");return{key:x.slice(0,A).trim().toLowerCase(),value:x.slice(A+1).trim()}}function LE(x){return/^config[0-9]$/.test(x)||/^config[A-C]$/i.test(x)?"config":/^histdata[0-9]$/.test(x)?"histdata":"other"}function Ar(x,A){let e=x.get(A);if(e===void 0)return;let r=parseInt(e,10);return Number.isNaN(r)?void 0:r}function OE(x){let A=x.get("bitmask");if(A===void 0)return;let e=A.startsWith("$")?A.slice(1):A,r=parseInt(e,16);return Number.isNaN(r)?void 0:r}var RE=/^(.*?)%(config[0-9a-fA-F])%(.+)$/;function fF(x){let A=RE.exec(x);if(!A)return{};let e=A[1],r=e===""?NaN:Number(e);return{ref:{container:A[2],field:A[3]},prefixValue:Number.isFinite(r)?r:void 0}}function GE(x){let A=x.get("vscale");if(A===void 0)return{value:1};let e=fF(A);if(e.ref)return{value:e.prefixValue??1,ref:e.ref};let r=Number(A);return Number.isFinite(r)?{value:r}:{value:1}}function UE(x){let A=x.get("vofs");if(A===void 0)return{value:0};let e=fF(A);if(e.ref)return{value:e.prefixValue??0,ref:e.ref};let r=Number(A);return Number.isFinite(r)?{value:r}:{value:0}}function HE(x,A){return x==="string"?A??0:qE[x]}function JE(x){let A={};for(let[e,r]of x)NE.has(e)||(A[e]=r);return A}function zE(x,A,e){let r=TE(x.get(IE)),t=Ar(x,"max"),i=HE(r,t),n=A.fields[A.fields.length-1],v=Ar(x,"byteofs")??(n?n.byteofs+n.size:A.kind==="histdata"?1:0),E=A.fields.length,u=x.get(es)??(A.kind==="histdata"?`ch${E}`:`field${E}`),p=GE(x),j=UE(x),w=Ar(x,"index");return{name:u,alias:x.get("alias"),title:x.get("title"),index:w,sortIndex:w??e,byteofs:v,type:r,size:i,max:t,decpl:Ar(x,"decpl"),vscale:p.value,vofs:j.value,vscaleRef:p.ref,vofsRef:j.ref,units:x.get("units"),editmask:x.get("editmask"),view:Ar(x,"view"),edit:Ar(x,"edit"),default:x.get("default"),bitmask:OE(x),attrs:JE(x)}}function KE(){return{name:"",kind:"other",fields:[],recordSize:0}}function VE(x,A,e){switch(A){case es:{let r=Zi(e);x.name=r,x.kind=LE(r);break}case"alias":x.alias=e;break;case"title":x.title=e;break;case"upload":x.upload=parseInt(e,10);break;case"download":x.download=parseInt(e,10);break;case"edit":x.edit=parseInt(e,10);break;default:break}}function WE(x){if(!x.name)throw new Error("?dde.table-without-name");x.recordSize=x.fields.filter(A=>!pt(A.type)).reduce((A,e)=>Math.max(A,e.byteofs+e.size),0),x.fields.sort((A,e)=>A.sortIndex-e.sortIndex)}function XE(x){if(x==="*")return{keyBytes:[],matchAll:!0};let A=x.slice(0,2).toLowerCase()==="0x"?x.slice(2):x;A.length%2!==0&&(A=`0${A}`);let e=[];for(let r=0;r<A.length;r+=2){let t=parseInt(A.slice(r,r+2),16);e.push(Number.isNaN(t)?0:t)}return{keyBytes:e,matchAll:!1}}function YE(x){return x.toLowerCase()==="histdata28"?"applog0":Zi(x)}function QE(x){let{keyBytes:A,matchAll:e}=XE(x.get("key")??"00");return{source:x.get("source")??"",target:YE(x.get("target")??""),key:A[0]??0,keyBytes:A,matchAll:e,keepraw:Ar(x,"keepraw")}}function ZE(x,A){return{containers:x,splits:A,byNameOrAlias(e){let r=e.toLowerCase();return x.find(t=>t.name.toLowerCase()===r||(t.alias??"").toLowerCase()===r)??null}}}function xB(x,A){switch(A){case"<table>":return x.container=KE(),x.expectName=!0,!0;case"</table>":return x.container&&(WE(x.container),x.containers.push(x.container)),x.container=null,!0;case"<field>":return x.field=new Map,!0;case"</field>":return x.container&&x.field&&x.container.fields.push(zE(x.field,x.container,x.line)),x.field=null,!0;case"<split>":return x.split=new Map,!0;case"</split>":return x.split&&x.splits.push(QE(x.split)),x.split=null,!0;default:return!1}}function AB(x,A){let{key:e,value:r}=ME(A);if(x.split)x.split.set(e,r);else if(x.field)x.field.set(e,r);else if(x.container){if(x.expectName&&e!==es)throw new Error(`?dde.first-table-attr-not-name."${e}"`);x.expectName=!1,VE(x.container,e,r)}}function lF(x){let A={containers:[],splits:[],container:null,field:null,split:null,expectName:!1,line:0};for(let[e,r]of x.replace(/\r\n/g,`
2319
+ `).replace(/\r/g,`
2320
+ `).split(`
2321
+ `).entries()){A.line=e;let t=r.trim();t===""||t.startsWith("//")||xB(A,t)||t.includes("=")&&AB(A,t)}return ZE(A.containers,A.splits)}var eB=null,rB=4;function ut(x){let A=new Date(x),e=(r,t)=>r.toString().padStart(t,"0");return e(A.getUTCFullYear(),4)+e(A.getUTCMonth()+1,2)+e(A.getUTCDate(),2)+e(A.getUTCHours(),2)+e(A.getUTCMinutes(),2)+e(A.getUTCSeconds(),2)+e(A.getUTCMilliseconds(),3)}function jt(x){let A=x.trim();if(A==="*")return eB;if(!/^\d{4,17}$/.test(A))throw new Error(`?apiStamp.invalid-input."${x}"`);let e=(u,p,j)=>{let w=A.slice(u,u+p);return parseInt(w.length?w.padEnd(p,"0"):j,10)},r=parseInt(A.slice(0,rB),10),t=A.length>=6?e(4,2,"01"):1,i=A.length>=8?e(6,2,"01"):1,n=e(8,2,"00"),F=e(10,2,"00"),v=e(12,2,"00"),E=e(14,3,"000");return Date.UTC(r,t-1,i,n,F,v,E)}var bt="NAN",tB="%HEX%",nB=65535,cF=class extends Error{constructor(x){super(`?ddeCodec.unknown-alias."${x}"`),a0(this,"alias",x),this.name="DdeUnknownAliasError"}};function dn(x){return(x.alias??x.name).toLowerCase()}function un(x){return x==="string"}function rs(x){return x==="stamp"||x==="stamp4"||x==="stamp8"||x==="datetime"}function EF(x){return(x.editmask??"").toUpperCase()===tB}function BF(x,A){if(!Number.isFinite(x))return x;let e=10**A;return Math.sign(x)*Math.round(Math.abs(x)*e)/e}function iB(x,A){if(!Number.isFinite(x)||x===0)return x;let e=Math.abs(x),r=Math.floor(Math.log10(e));return 10**(r+1)<=e?r+=1:10**r>e&&(r-=1),BF(x,A-1-r)}function sB(x){return x==="floatm16"||x==="f32"||x==="f64"}function aB(x,A){if(!Number.isFinite(A))return A;let e=x.decpl??(sB(x.type)?9:0),r=BF(A,e),t=x.type==="floatm16"?3:x.type==="f32"?7:15;return iB(r,t)}function Ri(x,A){let e=BigInt.asUintN(64,BigInt(Math.trunc(x))),r=BigInt.asUintN(64,BigInt(Math.trunc(A))),t=0n,i=1n;for(;r!==0n;)r&1n&&(e&1n&&(t|=i),i<<=1n),e>>=1n,r>>=1n;return Number(t)}function oB(x,A,e){let r=BigInt.asUintN(64,BigInt(Math.trunc(x))),t=BigInt.asUintN(64,BigInt(Math.trunc(A))),i=BigInt.asUintN(64,BigInt(Math.trunc(e))),n=1n;for(;i!==0n;)i&1n&&(r=t&1n?r|n:r&~n,t>>=1n),i>>=1n,n<<=1n;return Number(r)}var FB=new Set(["u8","s8","u16","s16","u32","s32","s64","ufm8"]);function Fn(x){return!!x.bitmask&&FB.has(x.type)}var CF=255,dF=254,uF=253,DF=252,pF=251,vB=207,ts=65535,vn=65534,ns=65533,is=65532,ss=65531;function fB(x){switch(x){case CF:return ts;case dF:return vn;case uF:return ns;case DF:return is;case pF:return ss;default:return x<=31?x:x>vB?vn:(x&15|16)<<(x>>4)-1}}function lB(x){switch(x){case ts:return CF;case vn:return dF;case ns:return uF;case is:return DF;case ss:return pF;default:{if(x<=31)return x;let A=1,e=x;for(;(e&65504)>0;)e>>=1,A++;return A<<4|e&15}}}var fn=1023,Gi=31,bF=127,ji=8388607,cB=255,Ui=15,EB=-14,To=15;function BB(x){let A=(x&fn)<<13,e=(x&31744)>>10;if(e===Gi)return mF(1024-(x&fn));e!==0&&(e=e-Ui+4+bF);let r=(A|e<<23)>>>0;x&32768&&(r=(r|2147483648)>>>0);let t=new DataView(new ArrayBuffer(4));return t.setUint32(0,r),t.getFloat32(0)}function CB(x){if(typeof x=="string"||Number.isNaN(x))return nB;let A=new DataView(new ArrayBuffer(4));A.setFloat32(0,x);let e=A.getUint32(0),r=e>>>16&32768,t=(e&ji)+4096,i=(t>ji?1:0)+(e>>>23&cB),n=(t&ji)>>>13;return i!==0&&(i=i-bF-4,i<EB?(n=0,i=0):i>To?(n=fn,i=To+Ui):i=i+Ui),r|i<<10|n}var dB=["OF","UF","OL","SC"],Hi={u8:{NAN:255,OF:254,UF:253,OL:252,SC:251},u16:{NAN:65535,OF:65534,UF:65533,OL:65532,SC:65531},u32:{NAN:4294967295,OF:4294967294,UF:4294967293,OL:4294967292,SC:4294967291},s8:{NAN:127,OF:126,UF:-126,OL:-127,SC:-128},s16:{NAN:32767,OF:32766,UF:-32766,OL:-32767,SC:-32768},s32:{NAN:2147483647,OF:2147483646,UF:-2147483646,OL:-2147483647,SC:-2147483648},s64:{NAN:0x7fffffffffffffffn,OF:0x7ffffffffffffffen,UF:-0x7ffffffffffffffen,OL:-0x7fffffffffffffffn,SC:-0x8000000000000000n},ufm8:{NAN:ts,OF:vn,UF:ns,OL:is,SC:ss}},uB={NAN:65535,OF:65534,UF:65533,OL:65532,SC:65531},zx={NAN:1,OF:2,UF:3,OL:4,SC:5},DB=new Set(["u8","u16","u32","ufm8"]);function pB(x){let A=Math.floor(x),e=x-A;return e<.5?A:e>.5?A+1:A%2===0?A:A+1}function as(x){let A=x.replace(/,/g,"").trim();if(!/^[+-]?(\d+\.?\d*|\.\d+)([eE][+-]?\d+)?$/.test(A))return null;let e=Number(A);return Number.isFinite(e)?e:null}function os(x,A,e){switch(x){case"u8":return A.getUint8(e);case"s8":return A.getInt8(e);case"u16":return A.getUint16(e,!1);case"s16":return A.getInt16(e,!1);case"u32":return A.getUint32(e,!1);case"s32":return A.getInt32(e,!1);case"s64":return Number(A.getBigInt64(e,!1));case"f32":return A.getFloat32(e,!1);case"f64":return A.getFloat64(e,!1);case"floatm16":return BB(A.getUint16(e,!1));case"ufm8":return fB(A.getUint8(e));default:throw new Error(`?ddeCodec.non-numeric-type."${x}"`)}}function mF(x){switch(x){case zx.OF:return"OF";case zx.UF:return"UF";case zx.OL:return"OL";case zx.SC:return"SC";default:return bt}}var qo=[["NAN",zx.NAN],["OF",zx.OF],["UF",zx.UF],["OL",zx.OL],["SC",zx.SC]];function bB(x,A){let e=x.getUint32(A,!1);if((e&2139095040)!==2139095040)return 0;let r=e&8388607;return r===0?zx.NAN:(r=r&4194304?8388608-r:r&255,r===0?zx.NAN:r)}function mB(x,A){let e=x.getBigUint64(A,!1);if((e&0x7ff0000000000000n)!==0x7ff0000000000000n)return 0;let r=Number(e&0xffn);return r===0?zx.NAN:r}function jB(x,A){if(x.type==="s64"){let t=A.getBigInt64(x.byteofs,!1);Fn(x)&&(t=BigInt(Ri(Number(t),x.bitmask)));let i=Hi.s64;return qo.find(([n])=>t===BigInt(i[n]))?.[1]??0}let e=Hi[x.type];if(!e)return 0;let r=os(x.type,A,x.byteofs);return Fn(x)&&(r=Ri(r,x.bitmask)),qo.find(([t])=>r===e[t])?.[1]??0}function jF(x,A){switch(x.type){case"floatm16":{let e=A.getUint16(x.byteofs,!1);return(e>>10&Gi)===Gi?1024-(e&fn):0}case"f32":return bB(A,x.byteofs);case"f64":return mB(A,x.byteofs);default:return jB(x,A)}}function hF(x,A){let e=os(x.type,A,x.byteofs);return typeof e=="string"||Number.isNaN(e)?NaN:(Fn(x)&&(e=Ri(e,x.bitmask)),e*x.vscale+x.vofs)}function hB(x,A){let e=jF(x,A);if(e!==0)return mF(e);let r=hF(x,A);return Number.isNaN(r)?bt:aB(x,r)}function gB(x,A){if(x.byteofs+x.size>A.byteLength)return null;if(un(x.type)||rs(x.type))return NaN;let e=new DataView(A.buffer,A.byteOffset,A.byteLength);return jF(x,e)!==0?NaN:hF(x,e)}function yB(x,A){if(EF(x)){let e="";for(let r=0;r<x.size;r++)e+=A.getUint8(x.byteofs+r).toString(16).padStart(2,"0");return e.toUpperCase()}return W0.cp1252Unpack(A,x.byteofs,x.size)}var gF=25569,yF=864e5;function kB(x){return(x-gF)*yF}function wB(x){return x/yF+gF}function _B(x,A){if(x.type==="datetime")return ut(kB(A.getFloat64(x.byteofs,!1)));if(x.type==="stamp8"){let r=A.getBigUint64(x.byteofs,!1),t=Number(r&0xffffffffffn);return ut(W0.stamp40ToMS(t))}let e=A.getUint32(x.byteofs,!1)*256;return x.size>=5&&(e+=A.getUint8(x.byteofs+4)),ut(W0.stamp40ToMS(e))}var SB=new Set(["u8","s8","u16","s16","u32","s32","s64","ufm8"]);function $B(x,A){return/^[+-]?\d+$/.test(x)?parseInt(x,10):/^\$[0-9a-fA-F]+$/.test(x)?parseInt(x.slice(1),16):A}function PB(x){let A=x.default;if(A===void 0)return;if(un(x.type))return A;let e=A.trim();if(e===""||e.toUpperCase()===bt)return bt;if(SB.has(x.type))return $B(e,0);let r=as(e);return r!==null?r:A}function TB(x,A,e){return x.byteofs+x.size>e?PB(x):un(x.type)?yB(x,A):rs(x.type)?_B(x,A):hB(x,A)}function No(x,A){let e=new DataView(A.buffer,A.byteOffset,A.byteLength),r={};for(let t of x.fields)_e(t)||pt(t.type)||(r[dn(t)]=TB(t,e,A.byteLength));return r}function qB(x,A){if(typeof A=="number")return Number.isFinite(A)?{kind:"value",physical:A}:{kind:"sentinel",state:"NAN"};if(typeof A=="string"){if(A.toUpperCase()===bt||A==="")return{kind:"sentinel",state:"NAN"};let e=dB.find(t=>t===A);if(e)return{kind:"sentinel",state:e};if("OUS".includes(A[0]))return{kind:"skip"};let r=as(A);return r!==null?{kind:"value",physical:r}:Io(x)}return Io(x)}function Io(x){let A=x.default;return A!==void 0&&A.startsWith("%")?{kind:"sentinel",state:"NAN"}:{kind:"value",physical:(A!==void 0?as(A):null)??0}}function Ji(x,A,e){switch(x.type){case"floatm16":return A.setUint16(x.byteofs,uB[e],!1);case"f32":return A.setUint32(x.byteofs,(2139095040|zx[e])>>>0,!1);case"f64":return A.setBigUint64(x.byteofs,0x7ff0000000000000n|BigInt(zx[e]),!1);default:break}let r=Hi[x.type]?.[e];if(r===void 0)throw new Error(`?ddeCodec.non-numeric-type."${x.type}"`);if(x.type==="s64")return A.setBigInt64(x.byteofs,BigInt(r),!1);kF(x,A,Number(r))}function NB(x,A,e){if(x.vscale===0)return;let r=(e-x.vofs)/x.vscale;switch(x.type){case"f32":return A.setFloat32(x.byteofs,r,!1);case"f64":return A.setFloat64(x.byteofs,r,!1);case"floatm16":return A.setUint16(x.byteofs,CB(r),!1);default:break}if(Number.isNaN(r))return Ji(x,A,"NAN");if(!Number.isFinite(r))return Ji(x,A,"OF");let t=r;DB.has(x.type)&&t<0&&(t=0),kF(x,A,pB(t))}function kF(x,A,e){if(Fn(x)){let r=os(x.type,A,x.byteofs);e=oB(r,e,x.bitmask)}IB(x.type,A,x.byteofs,e)}function IB(x,A,e,r){switch(x){case"u8":return A.setUint8(e,r);case"s8":return A.setInt8(e,r);case"u16":return A.setUint16(e,r,!1);case"s16":return A.setInt16(e,r,!1);case"u32":return A.setUint32(e,r,!1);case"s32":return A.setInt32(e,r,!1);case"s64":return A.setBigInt64(e,BigInt(r),!1);case"ufm8":return A.setUint8(e,lB(r));default:throw new Error(`?ddeCodec.non-numeric-type."${x}"`)}}function MB(x,A,e){let r=String(e);if(EF(x)){let t=r.trim();if(t.length%2!==0||t.length>x.size*2)throw new Error(`?ddeCodec.invalid-hex."${dn(x)}"`);for(let i=0;i<x.size;i++){let n=i*2<t.length?parseInt(t.substr(i*2,2),16):0;A.setUint8(x.byteofs+i,n)}return}W0.cp1252Pack(A,x.byteofs,x.size,r)}function LB(x,A,e){let r=jt(String(e));if(r===null)throw new Error(`?ddeCodec.unbounded-stamp."${dn(x)}"`);if(x.type==="datetime"){A.setFloat64(x.byteofs,wB(r),!1);return}let t=W0.msToStamp40(r);if(x.type==="stamp8"){A.setBigUint64(x.byteofs,BigInt(t),!1);return}A.setUint32(x.byteofs,Math.trunc(t/256),!1),x.size>=5&&A.setUint8(x.byteofs+4,t&255)}function OB(x,A,e){if(un(x.type))return MB(x,A,e);if(rs(x.type))return LB(x,A,e);let r=qB(x,e);switch(r.kind){case"skip":return;case"sentinel":return Ji(x,A,r.state);case"value":return NB(x,A,r.physical)}}function Mo(x,A,e){let r=e?new Uint8Array(e):new Uint8Array(x.recordSize),t=new DataView(r.buffer,r.byteOffset,r.byteLength),i=new Map(x.fields.filter(n=>!_e(n)&&!pt(n.type)).map(n=>[dn(n),n]));for(let[n,F]of Object.entries(A)){let v=i.get(n.toLowerCase());if(!v)throw new cF(n);OB(v,t,F)}return r}var Lo=99,RB=256,er=class extends Error{constructor(x){super(`?ddeMapper.unknown-container."${x}"`),a0(this,"container",x),this.name="DdeUnknownContainerError"}},ln=class extends Error{constructor(x,A){let e=A?`${x}.${A}`:x;super(`?ddeMapper.write-forbidden."${e}"`),a0(this,"container",x),a0(this,"field",A),this.name="DdeWriteForbiddenError"}},wF=class extends Error{constructor(x){super(`?ddeMapper.unknown-field."${x}"`),a0(this,"field",x),this.name="DdeUnknownFieldError"}};function hi(x){return(x.alias??x.name).toLowerCase()}var _F=class{constructor(x,A,e=Rr){a0(this,"model",x),a0(this,"storage",A),a0(this,"timeSource",e)}async readContainer(x){let A=this.model.byNameOrAlias(x);if(!A)return null;let e=Mr(A);if(e===null)return null;let r=await this.storage.getRowForTag(e);if(!r||!r.data)return null;let t=No(await this.resolveScaleRefs(A),r.data);return delete t.stamp,{stamp:this.rowStamp(r),...t}}async writeContainer(x,A){let e=this.model.byNameOrAlias(x);if(!e)throw new er(x);let r=Mr(e);if(r===null)throw new er(x);if(e.edit===Lo)throw new ln(e.name);let{stamp:t,...i}=A;this.assertFieldsWritable(e,i);let n=await this.storage.getRowForTag(r),F=Mo(await this.resolveScaleRefs(e),i,n?.data??null),v=W0.msToStamp40(this.recordStampMs(t)??this.timeSource.nowMs()),E=Jx(v);return await this.storage.replaceUtoRow({tag:r,stamp:E,flags:n?.flags??0,site_related:n?.site_related??0,data:F}),{tag:r,stampHex:E,stamp40:v,data:F,devicePushable:As(r)&&e.download!==0,upload:e.upload,download:e.download}}async seedContainer(x,A){let e=this.model.byNameOrAlias(x);if(!e)throw new er(x);let r=Mr(e);if(r===null)throw new er(x);let{stamp:t,...i}=A,n=Mo(await this.resolveScaleRefs(e),i,null),F=W0.msToStamp40(this.recordStampMs(t)??this.timeSource.nowMs());await this.storage.replaceUtoRow({tag:r,stamp:Jx(F),flags:0,site_related:0,data:n})}recordStampMs(x){if(typeof x!="string")return null;try{return jt(x)}catch{return null}}async readTimeseries(x,A){let e=this.model.byNameOrAlias(x);if(!e)throw new er(x);let r=this.model.splits.find(E=>E.target.toLowerCase()===e.name.toLowerCase());if(!r)throw new er(x);let t=Math.abs(A.count),i=A.offset??0,n=this.buildSelectSet(e,A.select),F=await this.resolveScaleRefs(e);return(await this.collectMatched(F,r,i+t,{fromStamp:this.boundHex(A.fromMs),untilStamp:this.boundHex(A.untilMs),order:A.count<0?"desc":"asc",selectSet:n})).slice(i,i+t)}matchesSplit(x,A){return x.length===0?!1:A.matchAll?!0:x.length<A.keyBytes.length?!1:A.keyBytes.every((e,r)=>x[r]===e)}async collectMatched(x,A,e,r){let t=[];if(e<=0)return t;let i=Math.max(e,RB);for(let n=0;;n+=i){let F=await this.storage.getHistoricRows(26623,{fromStamp:r.fromStamp,untilStamp:r.untilStamp,order:r.order,limit:i,offset:n});for(let v of F)if(v.data&&this.matchesSplit(v.data,A)&&(t.push(this.recordFromRow(x,v,r.selectSet)),t.length>=e))return t;if(F.length<i)return t}}async readTimeseriesEdge(x,A,e){return(await this.readTimeseries(x,{count:A==="youngest"?-1:1,select:e}))[0]??null}recordFromRow(x,A,e){let r=No(x,A.data),t={stamp:this.rowStamp(A)};for(let[i,n]of Object.entries(r))i!=="stamp"&&(!e||e.has(i))&&(t[i]=n);return t}rowStamp(x){return ut(W0.stamp40ToMS(xA(x.stamp)))}boundHex(x){if(x!=null)return Jx(W0.msToStamp40(x))}async resolveScaleRefs(x){if(!x.fields.some(r=>r.vscaleRef||r.vofsRef))return x;let A=new Map,e=[];for(let r of x.fields){if(!r.vscaleRef&&!r.vofsRef){e.push(r);continue}e.push({...r,vscale:r.vscaleRef?await this.resolveRef(r.vscaleRef,A,r.vscale):r.vscale,vofs:r.vofsRef?await this.resolveRef(r.vofsRef,A,r.vofs):r.vofs})}return{...x,fields:e}}async resolveRef(x,A,e){if(!/^config[0-9a-f]$/i.test(x.container))return e;let r=this.referencedField(x);if(!r)return e;let t=x.container.toLowerCase();A.has(t)||A.set(t,await this.referencedRecordData(x.container));let i=A.get(t);if(!i)return e;let n=gB(r,i);return n===null?e:n}referencedField(x){let A=x.field.toLowerCase();return this.model.byNameOrAlias(x.container)?.fields.find(r=>hi(r)===A||r.name.toLowerCase()===A)??null}async referencedRecordData(x){let A=this.model.byNameOrAlias(x);if(!A)return null;let e=Mr(A);return e===null?null:(await this.storage.getRowForTag(e))?.data??null}assertFieldsWritable(x,A){let e=new Map(x.fields.filter(r=>!_e(r)&&!pt(r.type)).map(r=>[hi(r),r]));for(let r of Object.keys(A)){let t=e.get(r.toLowerCase());if(t&&t.edit===Lo)throw new ln(x.name,t.name)}}buildSelectSet(x,A){if(!A||A.length===0)return null;let e=new Set(x.fields.filter(t=>!_e(t)&&!pt(t.type)).map(t=>hi(t))),r=new Set;for(let t of A){let i=t.toLowerCase();if(i!=="stamp"){if(!e.has(i))throw new wF(t);r.add(i)}}return r}},GB=new Set(["$titles","$meta"]);function Oo(x,A){let e=A.toLowerCase();if(GB.has(e))return null;let r=x[e];if(typeof r!="object"||r===null)return null;let t=new Map;for(let[i,n]of Object.entries(r)){if(typeof n!="object"||n===null)continue;let F=n.alias;typeof F=="string"&&F.length>0&&t.set(i.toLowerCase(),F)}return t}function UB(x,A){let e={};for(let[r,t]of Object.entries(x)){if(r==="stamp"){e[r]=t;continue}let i=A?.get(r.toLowerCase());e[i??r]=t}return e}function Dn(x,A){if(!x)return null;let e=Oo(x,A.name);return e||(A.alias?Oo(x,A.alias):null)}var U0="[OfflineSyncManager]",HB=500,JB="site_info",zB=new Set(["local-data-interface.json"]);function Lx(x){if(x?.aborted)throw x.reason??new DOMException("The operation was aborted.","AbortError")}function KB(x){let A=Li(x);return!!(x&2)||A!==0&&A!==65}function Ro(x){return x.filter(A=>(A.filename===dt||A.filename===sF)&&A.outcome==="download").map(A=>A.filename)}var Ye="skip-equal",Ir="skip-device-readonly",gi="delete",we="error",yi="upload",ki="uploading-utos",Go="downloading-utos",xn="fetching-device-state",wi="uploading-files",An="downloading-files",Uo="executing-change-requests",Ho="executed",VB="error",_i="skip-old-stamp",$F=class extends SF.EventEmitter{constructor(x,A,e){super(),a0(this,"utoMaster",x),a0(this,"storage",A),a0(this,"logger",e)}emitProgress(x,A,e,r,t){let i={phase:x,item:A,completed:e,total:r,...t};this.emit("progress",i)}async uploadHistoricTag(x,A,e,r,t){try{let i=await this.storage.getRowForTag(x),n=0,F=async v=>{let E=v.filter(u=>u.stamp40>e).map(u=>({tag:x,stamp:Jx(u.stamp40),flags:i?.flags??0,site_related:i?.site_related??0,data:u.data}));await this.storage.insertHistoricRows(E),n+=E.length};return await this.utoMaster.requestHistoricUtos(x,e,t,void 0,HB,F),this.logger?.info(`${U0} historic upload tag=0x${x.toString(16)} +${n} records`),{tag:x,sTag:A.sTag,historic:!0,outcome:"upload",dbStamp40:e,deviceStamp40:r,recordsAppended:n}}catch(i){return this.logger?.error(`${U0} historic upload error tag=0x${x.toString(16)}: ${i}`),{tag:x,sTag:A.sTag,historic:!0,outcome:"error",dbStamp40:e,deviceStamp40:r}}}async uploadSingleTag(x,A,e,r){try{let t=await this.utoMaster.requestUto(x,0);if(!t)return this.logger?.info(`${U0} single upload tag=0x${x.toString(16)} \u2014 device returned no data (skip)`),{tag:x,sTag:A.sTag,historic:!1,outcome:Ye,dbStamp40:e,deviceStamp40:r};let i=await this.storage.getRowForTag(x);return await this.storage.replaceUtoRow({tag:x,stamp:Jx(t.stamp),flags:i?.flags??0,site_related:i?.site_related??0,data:t.data?new Uint8Array(t.data.buffer.slice(t.data.byteOffset,t.data.byteOffset+t.data.byteLength)):null}),this.logger?.info(`${U0} single upload tag=0x${x.toString(16)}`),{tag:x,sTag:A.sTag,historic:!1,outcome:"upload",dbStamp40:e,deviceStamp40:r}}catch(t){return this.logger?.error(`${U0} single upload error tag=0x${x.toString(16)}: ${JSON.stringify(t)}`),{tag:x,sTag:A.sTag,historic:!1,outcome:"error",dbStamp40:e,deviceStamp40:r}}}async uploadUtoTags(x,A,e,r){let t=x.length;this.emitProgress(ki,null,0,t);let i=0;for(let n of x){Lx(r);let F=A.get(n),{tagInfo:v,dbStamp40:E,deviceStamp40:u}=F;if(this.emitProgress(ki,v?.sTag??`0x${n.toString(16)}`,i,t),!v||u===null)e.set(n,{tag:n,sTag:"?",historic:!1,outcome:"unknown-tag",dbStamp40:E,deviceStamp40:u});else if(!(!v.flags.up||u<=E)){let p=v.sTag,j=i,w=v.historic?await this.uploadHistoricTag(n,v,E,u,g=>{this.emitProgress(ki,p,j,t,{recordsReceived:g})}):await this.uploadSingleTag(n,v,E,u);e.set(n,w)}++i}}async pullFileFromDevice(x,A,e,r,t,i){let n=A.stamp;try{let F=await this.utoMaster.requestFile(x,E=>{this.emitProgress(wi,x,i,t,{bytesTransferred:E})}),v=iF(F);if(v!==A.crc32)throw new Error(`crc32 mismatch: expected 0x${A.crc32.toString(16)}, got 0x${v.toString(16)}`);return await this.storage.upsertFile({filename:x,stamp:Jx(n),crc:A.crc32,size:F.byteLength,flags:A._flags,flags_int:r,data:F}),{filename:x,outcome:yi,dbStamp40:e,deviceStamp40:n}}catch(F){return this.logger?.error(`${U0} file upload error ${x}: ${JSON.stringify(F)}`),{filename:x,outcome:we,dbStamp40:e,deviceStamp40:n}}}async autoSyncUploadFile(x,A,e,r,t,i,n,F){let v=A.stamp;if(v>r)return this.fileContentMatches(A,e)?this.convergeFileStamp(x,A,e,r):i?this.pullFileFromDevice(x,A,r,t,n,F):void 0;if(v===r&&this.fileContentMatches(A,e))return{filename:x,outcome:Ye,dbStamp40:r,deviceStamp40:v}}async convergeFileStamp(x,A,e,r){let t=A.stamp;try{return await this.storage.upsertFile({filename:x,stamp:Jx(t),crc:A.crc32,size:A.size,flags:A._flags,flags_int:e.flags_int,data:e.data}),{filename:x,outcome:Ye,dbStamp40:r,deviceStamp40:t}}catch(i){return this.logger?.error(`${U0} file upload error ${x}: ${JSON.stringify(i)}`),{filename:x,outcome:we,dbStamp40:r,deviceStamp40:t}}}async mirrorUploadFile(x,A,e,r,t,i,n){let F=A.stamp;if(F!==r||!this.fileContentMatches(A,e))return t?this.pullFileFromDevice(x,A,r,e.flags_int,i,n):{filename:x,outcome:Ir,dbStamp40:r,deviceStamp40:F}}async decideFileUpload(x,A,e,r){let t=await this.storage.getFile(x),i=!!(A._flags&1);if(!t)return i?this.pullFileFromDevice(x,A,0,16,e,r):void 0;let n=xA(t.stamp);return A._flags&8?this.autoSyncUploadFile(x,A,t,n,t.flags_int,i,e,r):this.decideNonSystemUpload(x,A,t,n,i,e,r)}pullIfReadable(x,A,e,r,t,i,n){return x?this.pullFileFromDevice(A,e,r,t,i,n):void 0}async decideNonSystemUpload(x,A,e,r,t,i,n){let F=e.flags_int;if(!(F&2))return F&4?this.pullIfReadable(t,x,A,r,F,i,n):this.decideUploadBySyncLogic(x,A,e,r,t,i,n)}async decideUploadBySyncLogic(x,A,e,r,t,i,n){let F=e.flags_int,v=Li(F);if(v===65)return this.fileContentMatches(A,e)?this.convergeFileStamp(x,A,e,r):this.pullIfReadable(t,x,A,r,F,i,n);if(v===1)return this.autoSyncUploadFile(x,A,e,r,F,t,i,n);if(v===97)return A.stamp>r?this.pullIfReadable(t,x,A,r,F,i,n):void 0;if(v!==33)return this.mirrorUploadFile(x,A,e,r,t,i,n)}async uploadFiles(x,A,e,r){let t=Object.entries(x),i=t.length;this.emitProgress(wi,null,0,i);let n=0;for(let[F,v]of t){if(Lx(r),!(F===sF||F===dt&&!e)){let u=await this.decideFileUpload(F,v,i,n);u&&A.set(F,u)}this.emitProgress(wi,F,++n,i)}}fileContentMatches(x,A){return A!==null&&x.crc32===A.crc&&x.size===A.size}async downloadSingleTag(x,A,e,r){try{let t=await this.storage.getRowForTag(x);return t?.data&&await this.utoMaster.sendUTOCmdExt(3,x,t.data,e),{tag:x,sTag:A.sTag,historic:!1,outcome:"download",dbStamp40:e,deviceStamp40:r}}catch(t){return this.logger?.error(`${U0} download error tag=0x${x.toString(16)}: ${t}`),{tag:x,sTag:A.sTag,historic:!1,outcome:"error",dbStamp40:e,deviceStamp40:r}}}async processDownloadTag(x,A,e,r,t){if(e===r&&!t.has(x)){let i=A.flags.up?Ye:"skip-db-readonly";t.set(x,{tag:x,sTag:A.sTag,historic:!1,outcome:i,dbStamp40:e,deviceStamp40:r});return}if(e>r){let i=A.flags.down?await this.downloadSingleTag(x,A,e,r):{tag:x,sTag:A.sTag,historic:!1,outcome:Ir,dbStamp40:e,deviceStamp40:r};t.set(x,i)}}async downloadUtoTags(x,A,e,r){let t=x.length;this.emitProgress(Go,null,0,t);let i=0;for(let n of x){Lx(r);let{tagInfo:F,dbStamp40:v,deviceStamp40:E}=A.get(n);F&&E!==null&&!F.historic&&await this.processDownloadTag(n,F,v,E,e),this.emitProgress(Go,F?.sTag??`0x${n.toString(16)}`,++i,t)}}async sendFileToDevice(x,A,e,r,t){let i=x.data.byteLength,n=F=>{if(F!==null){let v=Math.round(i*parseInt(F,10)/100);this.emitProgress(An,x.filename,t,r,{bytesTransferred:v,bytesTotal:i})}};this.utoMaster.on("installing",n);try{return await this.utoMaster.sendFile(0,x.data,W0.stamp40ToMS(A),x.filename),{filename:x.filename,outcome:"download",dbStamp40:A,deviceStamp40:e}}catch(F){return this.logger?.error(`${U0} file download error ${x.filename}: ${F}`),{filename:x.filename,outcome:"error",dbStamp40:A,deviceStamp40:e}}finally{this.utoMaster.removeListener("installing",n)}}async processDownloadFile(x,A,e,r,t=!1){if(!x.data)return;let i=A?.stamp??0,n=xA(x.stamp);if(A!==void 0&&this.fileContentMatches(A,x))return n===i?void 0:{filename:x.filename,outcome:Ye,dbStamp40:n,deviceStamp40:i};if(!(!t&&n<i))return!t&&A!==void 0&&!(A._flags&2)?{filename:x.filename,outcome:Ir,dbStamp40:n,deviceStamp40:i}:this.sendFileToDevice(x,n,i,e,r)}async isAppInDevPhase(){let x=await this.storage.getMetadataValue(JB);if(!x)return!1;try{return JSON.parse(x).app?.phase==="dev"}catch(A){return this.logger?.error(`${U0} corrupt site_info metadata: ${A}`),!1}}async downloadFiles(x,A,e,r){let t=await this.storage.getFiles(),i=t.filter(p=>p.flags&8),n=t.filter(p=>!(p.flags&8)),F=[...i,...n].filter(p=>p.filename),v=Object.entries(x).filter(([,p])=>p._flags&4).map(([p])=>p),E=F.length;this.emitProgress(An,null,0,E);let u=0;for(let p of F){if(Lx(r),e&&p.filename===dt){this.emitProgress(An,p.filename,++u,E);continue}let j=p.filename===dt&&!e,w=await this.decideFileDownload(p,x[p.filename],A.get(p.filename),v,j,E,u);w&&A.set(p.filename,w),this.emitProgress(An,p.filename,++u,E)}}async decideFileDownload(x,A,e,r,t,i,n){return A!==void 0?this.decideDownloadExisting(x,A,e,t,i,n):this.decideDownloadMissing(x,r,i,n)}async decideDownloadExisting(x,A,e,r,t,i){if(A._flags&4)return;if(x.flags&8)return e?void 0:this.processDownloadFile(x,A,t,i,r);let n=x.flags_int;if(n&8)return this.handleDeviceDelete(x,A,e);if(!e&&!(n&4))return this.pushToDevice(x,A,t,i)}async pushToDevice(x,A,e,r){let t=A.stamp,i=xA(x.stamp),n=this.wantDownloadPush(x,A,i,t);if(n==="match")return{filename:x.filename,outcome:Ye,dbStamp40:i,deviceStamp40:t};if(n!=="none"&&!(i===0||!x.data||x.data.byteLength===0))return A._flags&2?this.sendFileToDevice(x,i,t,e,r):{filename:x.filename,outcome:Ir,dbStamp40:i,deviceStamp40:t}}wantDownloadPush(x,A,e,r){let t=x.flags_int;if(t&2)return"push";let i=this.fileContentMatches(A,x),n=Li(t);return n===33||n===1&&e>=r?i?"match":"push":n===97&&e>r?"push":"none"}async handleDeviceDelete(x,A,e){let r=A.stamp,t=xA(x.stamp);if(!(e&&(e.outcome===yi||e.outcome===we))){if(!(A._flags&2))return{filename:x.filename,outcome:Ir,dbStamp40:t,deviceStamp40:r};try{return await this.utoMaster.deleteFile(x.filename),await this.storage.deleteFile(x.filename),{filename:x.filename,outcome:gi,dbStamp40:t,deviceStamp40:r}}catch(i){return this.logger?.error(`${U0} file delete error ${x.filename}: ${JSON.stringify(i)}`),{filename:x.filename,outcome:we,dbStamp40:t,deviceStamp40:r}}}}async decideDownloadMissing(x,A,e,r){let t=x.flags_int,i=xA(x.stamp);if(t&8)try{return await this.storage.deleteFile(x.filename),{filename:x.filename,outcome:gi,dbStamp40:i,deviceStamp40:null}}catch(n){return this.logger?.error(`${U0} file delete error ${x.filename}: ${JSON.stringify(n)}`),{filename:x.filename,outcome:we,dbStamp40:i,deviceStamp40:null}}if(!(x.flags&12)&&KB(t)&&x.flags&2&&this.hasMatchingNode(x.filename,A)&&x.data)return this.sendFileToDevice(x,i,0,e,r)}hasMatchingNode(x,A){return A.some(e=>e.slice(0,-1)===x.slice(0,e.length-1))}async reconcileFileState(x){try{await this.reconcileFileStateUnguarded(x)}catch(A){if(x?.aborted)throw A;this.logger?.error(`${U0} file-state reconciliation failed: ${JSON.stringify(A)}`)}}async reconcileFileStateUnguarded(x){let A=await this.utoMaster.requestFileList(),e=new Set(Object.keys(A)),r=await this.storage.getFiles(),t=new Map(r.map(i=>[i.filename,i]));for(let[i,n]of Object.entries(A))Lx(x),await this.reconcileDeviceFile(i,n,t.get(i)??null);for(let i of r)Lx(x),e.has(i.filename)||await this.dropRowMissingFromDevice(i)}async reconcileDeviceFile(x,A,e){let r=!!((A._flags|(e?.flags??0))&8);if(e?.data&&!this.fileContentMatches(A,e)){this.logger?.info(`${U0} reconcile keep ${x}: row holds undeployed content`);return}if(!e?.data&&!r)return;let t={filename:x,stamp:Jx(A.stamp),crc:A.crc32,size:A.size,flags:A._flags,flags_int:e?.flags_int??16,data:this.keepBlob(x,r)?e?.data??null:null};e&&this.fileRowMatches(e,t)||await this.storage.upsertFile(t)}keepBlob(x,A){return!A||zB.has(x)}fileRowMatches(x,A){return x.stamp===A.stamp&&x.crc===A.crc&&x.size===A.size&&x.flags===A.flags&&x.flags_int===A.flags_int&&(x.data??null)===A.data}async dropRowMissingFromDevice(x){try{await this.storage.deleteFile(x.filename)}catch(A){this.logger?.error(`${U0} reconcile delete error ${x.filename}: ${JSON.stringify(A)}`)}}async validateDevice(x){Lx(x),this.emitProgress("validating",null,0,1);let A=await this.utoMaster.requestDeviceInfo();if(!A)throw new Error(`${U0} requestDeviceInfo returned null`);let e=await this.storage.getMetadataValue("device_id");if(e===null)throw new Error(`${U0} DB metadata missing device_id`);if(e.toUpperCase()!==A.serialNumber.toUpperCase())throw new Error(`${U0} DB device_id "${e}" does not match connected device "${A.serialNumber}"`);return this.emitProgress("validating",null,1,1),A}buildTagMap(x){let A=new Map;for(let e=0;e<x.utos.length;e++){let r=x.utos[e];A.set(r.wTag,{index:e,flags:{up:r.flags.up,down:r.flags.down,setValue:!!r.flags.setValue},historic:r.flags.historic,sTag:r.sTag})}return A}async resolveDbTags(x){let A=await this.storage.getUtoDataTags(),e=new Set(A);for(let[r,t]of x)t.historic&&!e.has(r)&&A.push(r);return A}async buildTagStampCache(x,A,e){let r=new Map;for(let t of x){let i=A.get(t),n=await this.storage.getLatestStampForTag(t),F=n?xA(n):0,v=i&&i.index<e.stamps.length?e.stamps[i.index]:null;r.set(t,{dbStamp40:F,deviceStamp40:v,tagInfo:i})}return r}async executeChangeRequests(x,A,e,r,t,i){let n=await this.storage.getUtoChangeRequests(),F=this.groupChangeRequests(n),v=F.size;if(this.emitProgress(Uo,null,0,v),v===0)return;let E=new Set,u=0;for(let[p,j]of F){Lx(i);let w=x.get(p),g=w?.sTag??`0x${p.toString(16)}`;this.emitProgress(Uo,g,u,v),await this.executeChangeRequestTag(p,g,w,j,A,r,t,E),++u}E.size>0&&await this.repullExecutedTags(E,x,e,i)}groupChangeRequests(x){let A=new Map;for(let e of x){let r=A.get(e.tag)??[];r.push({stamp40:xA(e.stamp),user:e.user,json:e.json}),A.set(e.tag,r)}return A}async executeChangeRequestTag(x,A,e,r,t,i,n,F){if(!e){this.pushChangeResults(n,x,A,r,"unknown-tag");return}if(!e.flags.setValue){this.pushChangeResults(n,x,A,r,"skip-unsupported");return}let v=e.index<t.stamps.length?t.stamps[e.index]:0,E=r.filter(p=>p.stamp40<=v),u=r.filter(p=>p.stamp40>v);this.pushChangeResults(n,x,A,E,_i),u.length>0&&await this.coalesceAndSend(x,A,e,u,i,n,F)}async coalesceAndSend(x,A,e,r,t,i,n){let F=await this.storage.getRowForTag(x);if(t.get(x)?.outcome===we||!F||!F.data){this.pushChangeResults(i,x,A,r,"error");return}let v=this.resolveSetObject(F.data,r,A);if(v===null){this.pushChangeResults(i,x,A,r,"error");return}if(Object.keys(v).length===0){this.pushChangeResults(i,x,A,r,"skip-no-change");return}let E=r[r.length-1].stamp40,u=await this.utoMaster.sendSetValue(x,JSON.stringify(v),E);u.outcome==="ok"||u.outcome==="stamp"?(n.add(x),this.pushChangeResults(i,x,A,r,Ho,u.resultCode)):u.outcome==="denied"?(this.logger?.warn(`${U0} change-request denied ${A} (result=${u.resultCode}) \u2014 server will retry`),this.pushChangeResults(i,x,A,r,"denied",u.resultCode)):(this.logger?.error(`${U0} change-request error ${A} (result=${u.resultCode})`),this.pushChangeResults(i,x,A,r,"error",u.resultCode))}resolveSetObject(x,A,e){try{let r=JSON.parse(W0.cp1252Unpack(x,0,x.byteLength));return this.buildSetObject(r,A,e)}catch(r){return this.logger?.error(`${U0} change-request unparseable uto_data ${e}: ${r}`),null}}buildSetObject(x,A,e){let r={};for(let t of A){let i=JSON.parse(t.json);if(!this.isPlainRecord(i))throw new Error(`change-request JSON is not an object on ${e}`);for(let[n,F]of Object.entries(i)){let v=this.resolveChangeField(x[n],F,n,e);v.apply&&(r[n]=v.value,x[n]=v.value)}}return r}resolveChangeField(x,A,e,r){if(this.isBitwiseOp(A)){let{op:t,val:i}=A;return this.resolveBitwiseOp(x,t,i,e,r)}return x===A?{apply:!1}:{apply:!0,value:A}}resolveBitwiseOp(x,A,e,r,t){return A!=="|"&&A!=="&"?(this.logger?.warn(`${U0} change-request unknown op "${A}" on ${t}.${r} \u2014 skipped`),{apply:!1}):typeof e!="number"?(this.logger?.warn(`${U0} change-request op "${A}" with non-number val on ${t}.${r} \u2014 skipped`),{apply:!1}):x===void 0?A==="|"?{apply:!0,value:e}:{apply:!1}:typeof x!="number"?(this.logger?.warn(`${U0} change-request op "${A}" on non-number ${t}.${r} \u2014 skipped`),{apply:!1}):{apply:!0,value:A==="|"?x|e:x&e}}isBitwiseOp(x){return this.isPlainRecord(x)&&"op"in x}isPlainRecord(x){return typeof x=="object"&&x!==null&&!Array.isArray(x)}pushChangeResults(x,A,e,r,t,i){for(let n of r)x.push({tag:A,sTag:e,stamp40:n.stamp40,user:n.user,outcome:t,resultCode:i})}async repullExecutedTags(x,A,e,r){let t=null;try{t=await this.utoMaster.requestStamps()}catch(i){this.logger?.warn(`${U0} change-request STAMPS re-fetch failed \u2014 using per-tag stamps: ${i}`)}for(let i of x)Lx(r),await this.repullExecutedTag(i,A,t,e)}async repullExecutedTag(x,A,e,r){try{let t=await this.utoMaster.requestUto(x,0);if(!t){this.logger?.info(`${U0} change-request re-pull tag=0x${x.toString(16)} \u2014 device returned no data (E_EOD), DB row unchanged`);return}let i=await this.storage.getRowForTag(x),n=t.stamp;await this.storage.replaceUtoRow({tag:x,stamp:Jx(n),flags:i?.flags??0,site_related:i?.site_related??0,data:t.data?new Uint8Array(t.data.buffer.slice(t.data.byteOffset,t.data.byteOffset+t.data.byteLength)):null});let F=r.get(x);if(F){let v=A.get(x),E=e&&v&&v.index<e.stamps.length?e.stamps[v.index]:n;F.dbStamp40=n,F.deviceStamp40=E}this.logger?.info(`${U0} change-request re-pull tag=0x${x.toString(16)} \u2192 stamp ${n}`)}catch(t){this.logger?.error(`${U0} change-request re-pull error tag=0x${x.toString(16)}: ${t}`)}}aggregateResult(x,A,e){let r=[...x.values()],t=[...A.values()],i=Ro(t);return{tags:r,files:t,changeRequests:e,requiresReconnectSync:i.length>0,rebootFilesDeployed:i,totalTagsUploaded:r.filter(n=>n.outcome==="upload"&&!n.historic).length,totalTagsDownloaded:r.filter(n=>n.outcome==="download").length,totalTagsSkipped:r.filter(n=>n.outcome===Ye||n.outcome==="skip-db-readonly"||n.outcome===Ir).length,totalHistoricRecordsAppended:r.reduce((n,F)=>n+(F.recordsAppended??0),0),totalFilesUploaded:t.filter(n=>n.outcome===yi).length,totalFilesDownloaded:t.filter(n=>n.outcome==="download").length,totalFilesDeleted:t.filter(n=>n.outcome===gi).length,totalChangeRequestsExecuted:e.filter(n=>n.outcome===Ho).length,totalErrors:r.filter(n=>n.outcome===we).length+t.filter(n=>n.outcome===we).length+e.filter(n=>n.outcome===VB).length}}async sync(x){let{signal:A}=x??{},e=await this.validateDevice(A);Lx(A),this.emitProgress(xn,null,0,3);let r=this.buildTagMap(e),t=await this.utoMaster.requestStamps();if(!t)throw new Error(`${U0} requestStamps returned null`);this.emitProgress(xn,"stamps",1,3);let i=await this.utoMaster.requestFileList();this.emitProgress(xn,"file-list",2,3);let n=await this.resolveDbTags(r);this.emitProgress(xn,"db-tags",3,3);let F=await this.buildTagStampCache(n,r,t),v=new Map,E=new Map,u=[],p=await this.isAppInDevPhase();return Lx(A),await this.uploadUtoTags(n,F,v,A),Lx(A),await this.uploadFiles(i,E,p,A),Lx(A),await this.executeChangeRequests(r,t,F,v,u,A),Lx(A),await this.downloadUtoTags(n,F,v,A),Lx(A),await this.downloadFiles(i,E,p,A),Lx(A),Ro([...E.values()]).length===0&&await this.reconcileFileState(A),this.emitProgress("complete",null,0,0),this.aggregateResult(v,E,u)}async executeAdHocChangeRequest(x,A){let e=await this.utoMaster.requestDeviceInfo();if(!e)throw new Error(`${U0} requestDeviceInfo returned null`);let r=this.buildTagMap(e),t=await this.utoMaster.requestStamps();if(!t)throw new Error(`${U0} requestStamps returned null`);let i=r.get(x),n=i?.sTag??`0x${x.toString(16)}`,F=A.map(j=>({stamp40:j.stamp40,user:"",json:j.json})).sort((j,w)=>j.stamp40-w.stamp40),v=new Map,E=[],u=new Set;return await this.executeChangeRequestTag(x,n,i,F,t,v,E,u),u.size>0&&await this.repullExecutedTags(u,r,new Map,void 0),E.find(j=>j.outcome!==_i)?.outcome??_i}},WB=5e3,NF=class IF extends qF.EventEmitter{constructor(A=ir){super(),a0(this,"logger",A),a0(this,"ws",null),a0(this,"bridgeTransport",null),a0(this,"bridgeSignal"),a0(this,"bridgeResolve",null),a0(this,"bridgeReject",null),a0(this,"serverMessageCount",0),a0(this,"settled",!1),a0(this,"abortHandler",null),a0(this,"connectTimeout"),a0(this,"writeQueue",[]),a0(this,"isProcessingQueue",!1),a0(this,"queueAborted",!1),a0(this,"queueDrainPromise",Promise.resolve()),a0(this,"transportUnsubscribe",null)}static buildSyncUrl(A,e){return`wss://${A}/uto/1/sync/${e}`}resetBridgeState(){this.serverMessageCount=0,this.settled=!1,this.abortHandler=null,this.connectTimeout=void 0,this.writeQueue=[],this.isProcessingQueue=!1,this.queueAborted=!1,this.queueDrainPromise=Promise.resolve(),this.bridgeResolve=null,this.bridgeReject=null,this.bridgeTransport=null,this.bridgeSignal=void 0,this.transportUnsubscribe=null}async processWriteQueue(){if(!this.isProcessingQueue){for(this.isProcessingQueue=!0;this.writeQueue.length>0&&!this.queueAborted;){let A=this.writeQueue.shift();try{await oF(this.bridgeTransport,A)}catch(e){let r=e instanceof Error?e.message:String(e);this.logger.error(`Error writing to transport: ${r}`)}}this.isProcessingQueue=!1}}cleanup(){this.transportUnsubscribe&&(this.transportUnsubscribe(),this.transportUnsubscribe=null),this.abortHandler&&this.bridgeSignal&&(this.bridgeSignal.removeEventListener("abort",this.abortHandler),this.abortHandler=null),this.connectTimeout!==void 0&&(clearTimeout(this.connectTimeout),this.connectTimeout=void 0),this.ws=null}settle(A,e){this.settled||(this.settled=!0,this.cleanup(),A==="resolve"?this.bridgeResolve?.({serverMessageCount:this.serverMessageCount}):this.bridgeReject?.(e))}attachWebSocketHandlers(A,e){let r=t=>{A.readyState===WebSocket.OPEN&&!this.bridgeSignal?.aborted&&!this.settled&&A.send(t)};this.abortHandler=()=>{this.logger.info("WebSocket bridge aborted"),this.queueAborted=!0,this.writeQueue.length=0,(A.readyState===WebSocket.OPEN||A.readyState===WebSocket.CONNECTING)&&A.close(),this.settle("reject",new Error("Operation aborted"))},this.bridgeSignal&&this.bridgeSignal.addEventListener("abort",this.abortHandler),A.onopen=()=>{this.connectTimeout!==void 0&&(clearTimeout(this.connectTimeout),this.connectTimeout=void 0),this.logger.info(`WebSocket connected to ${e}`),this.transportUnsubscribe=this.bridgeTransport.onData(r),this.emit("wsConnected")},A.onmessage=t=>{this.serverMessageCount++,this.emit("serverMessage",this.serverMessageCount),!(this.bridgeSignal?.aborted||this.settled)&&(this.writeQueue.push(t.data),this.isProcessingQueue||(this.queueDrainPromise=this.processWriteQueue()))},A.onclose=t=>{this.logger.info(`WebSocket closed (server=${e}, code=${t.code}, messages=${this.serverMessageCount})`),this.emit("wsClosed",t.code,t.reason),this.queueDrainPromise.then(()=>this.settle("resolve")).catch(()=>this.settle("resolve"))},A.onerror=t=>{this.logger.error(`WebSocket error (server=${e})`),this.emit("wsError",t),this.queueAborted=!0,this.writeQueue.length=0,this.settle("reject",new Error("WebSocket error"))}}async bridge(A,e,r,t){return new Promise((i,n)=>{if(t?.aborted){n(new Error("Operation aborted"));return}this.resetBridgeState(),this.bridgeTransport=A,this.bridgeSignal=t,this.bridgeResolve=i,this.bridgeReject=n;let F=IF.buildSyncUrl(e,r);this.logger.info(`Opening WebSocket: ${F}`);let v=new WebSocket(F);v.binaryType="arraybuffer",this.ws=v,this.connectTimeout=setTimeout(()=>{v.readyState===WebSocket.CONNECTING&&(this.logger.error("WebSocket connection timeout"),v.close(),this.settle("reject",new Error("WebSocket connection timeout")))},WB),this.attachWebSocketHandlers(v,e)})}close(){this.ws&&this.ws.readyState===WebSocket.OPEN&&this.ws.close()}},XB="https://lic.mydatanet.at/api/2/";async function YB(x,A=XB){let e=`${A}devices/${x}/assignment`,r=await fetch(e);if(!r.ok)throw new Error(`Failed to get device assignment: ${r.status} ${r.statusText}`);return r.json()}var QB=class extends TF.EventEmitter{constructor(x=ir){super(),a0(this,"logger",x)}async execute(x,A,e,r){let t=e;t||(this.logger.info("[LegacySync] No serverUrl provided, resolving via device assignment..."),this.emit("syncPhase",{phase:"resolving-server"}),t=(await YB(A)).server_url,this.logger.info("[LegacySync] Resolved server URL: "+t)),this.logger.info("[LegacySync] Starting legacy sync (server="+t+")");let i=new NF(this.logger);i.on("wsConnected",()=>this.emit("wsConnected")),i.on("wsClosed",(F,v)=>this.emit("wsClosed",F,v)),i.on("wsError",F=>this.emit("wsError",F)),i.on("serverMessage",F=>this.emit("serverMessage",F));let n=await i.bridge(x,t,A,r);return this.logger.info("[LegacySync] Legacy sync completed (serverMessages="+n.serverMessageCount+")"),{serverMessageCount:n.serverMessageCount}}},LF="Operation aborted";function ZB(x){return x instanceof Error?x.message:String(x)}function Si(x){if(x?.aborted)throw new Error(LF)}var xC=class extends MF.EventEmitter{constructor(x,A=ir){super(),a0(this,"atHandler",x),a0(this,"logger",A)}async execute(x,A,e,r){this.logger.info("Starting debug-enabled sync");let t=[{name:"mnt",queryServer:n=>this.atHandler.queryMntServerConfig(n),initiateSync:n=>this.atHandler.initiateMntSync(n)},{name:"mdn",queryServer:n=>this.atHandler.queryMdnServerConfig(n),initiateSync:n=>this.atHandler.initiateMdnSync(n)}],i={};for(let n of t)try{i[n.name]=await this.runSyncPhase(n,x,A,r)}catch(F){if(r?.aborted)throw new Error(LF);let v=`${n.name.toUpperCase()} sync phase failed: ${ZB(F)}`;throw this.logger.error(v),new Error(v)}return this.logger.info(`Debug sync completed (mntMessages=${i.mnt}, mdnMessages=${i.mdn})`),{mntServerMessageCount:i.mnt,mdnServerMessageCount:i.mdn}}async runSyncPhase(x,A,e,r){Si(r);let t=x.name.toUpperCase();this.emit("syncPhase",{phase:x.name}),this.logger.info(`Phase: Querying ${t} server configuration`);let i=await x.queryServer(r);this.logger.info(`${t} server domain: ${i}`),Si(r),await x.initiateSync(r),Si(r);let n=await this.syncWithServer(A,i,e,r);return this.logger.info(`${t} phase completed (serverMessages=${n.serverMessageCount})`),n.serverMessageCount}async syncWithServer(x,A,e,r){let t=new NF(this.logger),i=!1;t.on("wsConnected",()=>this.emit("wsConnected"));let n=this.atHandler.createConCloseMonitor(()=>{i=!0,this.logger.info("Device initiated close (+CONCLOSE), closing WebSocket"),t.close()});try{let F=await t.bridge(x,A,e,r);return i?this.logger.info("Connection closed by device (+CONCLOSE)"):(this.logger.info("Connection closed by server, sending +CONCLOSE to device"),await this.atHandler.sendConnectionClose(r)),F}finally{n()}}},OF=class extends PF.EventEmitter{constructor(x,A,e=ir){super(),a0(this,"syncTransport",x),a0(this,"logger",e),a0(this,"atHandler"),this.atHandler=A??null}async sync(x){let A=this.atHandler?"debug":"legacy";this.emit("syncStart",{mode:A});try{if(this.atHandler)try{return this.emit("syncPhase",{phase:"debug-sync"}),await this.syncWithDebug(x)}catch(e){return this.logger.warn("[SyncManager] Debug sync failed, falling back to legacy sync: "+(e instanceof Error?e.message:String(e))),this.emit("syncPhase",{phase:"debug-fallback-legacy"}),await this.syncLegacy(x)}return this.emit("syncPhase",{phase:"legacy"}),await this.syncLegacy(x)}catch(e){throw this.emit("syncError",e),e}}async syncLegacy(x){let A=new QB(this.logger);A.on("syncPhase",t=>this.emit("syncPhase",t));let r={mode:"legacy",serverMessageCount:(await A.execute(this.syncTransport,x.serialNumber,x.serverUrl,x.signal)).serverMessageCount};return this.emit("syncComplete",r),r}async syncWithDebug(x){let A=new xC(this.atHandler,this.logger);A.on("syncPhase",t=>this.emit("syncPhase",t));let e=await A.execute(this.syncTransport,x.serialNumber,x.serverUrl??"",x.signal),r={mode:"debug",serverMessageCount:e.mntServerMessageCount+e.mdnServerMessageCount,mntServerMessageCount:e.mntServerMessageCount,mdnServerMessageCount:e.mdnServerMessageCount};return this.emit("syncComplete",r),r}dispose(){}},_x={MNT_CFG:"at+mntcfg?",MDN_CFG:"at+mdncfg?",MNT_SYNC:"at+mntsync",MDN_SYNC:"at+mdnsync",CON_CLOSE:"at+conclose",APP_GET_METADATA:"AT+APP=GETMETADATA",APP_GET_DATAVALUE:"AT+APP=GETDATAVALUE",APP_TRIG_MEASURE:"AT+APP=TRIGMEASURE",APP_TRIG_MEASURE_TEST:"AT+APP=TRIGMEASURE=?",ATI:"ati",RM2M_STATE:"at+rm2mstate?",TX:"at+tx",TX_MAINTENANCE:"at+tx=4",TX_GSM_POSITION:"at+tx=1",TX_MODE_TRIGGERED:"at+txmode=0",TX_MODE_WAKEUP:"at+txmode=1",TX_MODE_ONLINE:"at+txmode=2",COMPANION_CERT:"AT+COMPCERT",COMPANION_CERT_TEST:"AT+COMPCERT=?"},V0={OK:"OK",ERROR:"ERROR",SYNC_START:"+SYNC START",MEASURED:"+MEASURED",CON_CLOSE:"+CONCLOSE",MNT_CFG_PREFIX:"+MNTCFG",MDN_CFG_PREFIX:"+MDNCFG",RM2M_STATE:"+RM2MSTATE",ERROR_PIN_REQUIRED:"ERROR PIN REQUIRED",ERROR_NO_DATA:"ERROR NO DATA",COMPCERT_ERROR:/\+COMPCERT ERROR:\s*(\d+)/},Qx=1e4,AC=9e4,eC=/(?:ERROR PIN REQUIRED|ERROR NO DATA|ERROR|OK)\r\n/;function rC(){return{buffer:"",closedByDevice:!1,reset(){this.buffer="",this.closedByDevice=!1}}}var Qe="Operation aborted",Zx=class extends Error{constructor(x="AT command handler was disposed"){super(x),this.name="AtHandlerDisposedError"}},GF=class extends Error{constructor(x="Device returned ERROR response"){super(x),this.name="AtDeviceError"}},UF=class extends RF.EventEmitter{constructor(x,A=ir){super(),a0(this,"transport",x),a0(this,"logger",A),a0(this,"mutex",new aF("AtCommandHandler")),a0(this,"bufferState",rC()),a0(this,"responseCallback",null),a0(this,"decoder",new TextDecoder),a0(this,"dataHandler"),a0(this,"disposeTransportListener"),a0(this,"isDisposed",!1),a0(this,"activeAbort",null),a0(this,"session"),this.dataHandler=e=>this.handleIncomingData(e),this.disposeTransportListener=this.transport.onData(this.dataHandler),this.session={sendAndWait:(e,r,t=Qx,i)=>this.executeSendAndWait(e,r,t,i),sendRaw:(e,r=Qx)=>this.executeSendRaw(e,r),queryMntServerConfig:e=>this.executeQueryConfig(_x.MNT_CFG,V0.MNT_CFG_PREFIX,e),queryMdnServerConfig:e=>this.executeQueryConfig(_x.MDN_CFG,V0.MDN_CFG_PREFIX,e),initiateMntSync:e=>this.executeInitiateMntSync(e),initiateMdnSync:e=>this.executeInitiateMdnSync(e),sendCompanionCert:(e,r)=>this.executeSendCompanionCert(e,r),queryCompanionCertSupport:e=>this.executeQueryCompanionCertSupport(e),sendConnectionClose:e=>this.executeSendConnectionClose(e)}}get isBusy(){return this.mutex.islocked}get disposed(){return this.isDisposed}async withAtLock(x){await this.mutex.requestLock();try{if(this.isDisposed)throw new Zx;return await x(this.session)}finally{this.mutex.unlock()}}handleIncomingData(x){let A=this.decoder.decode(x);this.bufferState.buffer+=A,this.emit("data",A),this.responseCallback&&this.responseCallback(this.bufferState.buffer),!this.responseCallback&&this.bufferState.buffer.length>1e3&&(this.bufferState.buffer=this.bufferState.buffer.slice(-500))}encodeCommand(x){let A=new Uint8Array(x.length+2);for(let e=0;e<x.length;e++)A[e]=x.charCodeAt(e);return A[x.length]=10,A[x.length+1]=13,A.buffer}makeCleanup(x,A,e){return()=>{this.responseCallback=null,this.activeAbort=null,clearTimeout(x),A&&e&&A.removeEventListener("abort",e)}}makeResponseChecker(x,A,e,r){let t=x instanceof RegExp;return i=>{if(x!==V0.ERROR&&i.includes(V0.ERROR)){A(),r(new GF);return}let n=!1,F=i;if(t){let v=i.match(x);v&&(n=!0,F=v[0])}else n=i.includes(x);if(n){A(),e(F);return}i.length>500&&(this.bufferState.buffer=this.bufferState.buffer.slice(-250))}}executeSendAndWait(x,A,e,r){return new Promise((t,i)=>{if(this.isDisposed){i(new Zx);return}if(r?.aborted){i(new Error(Qe));return}x&&(this.bufferState.buffer="");let F=A instanceof RegExp?A.source:A,v={cleanup:()=>{}},E=setTimeout(()=>{v.cleanup(),i(new Error(`Timeout waiting for response: ${F}`))},e),u=()=>{v.cleanup(),i(new Error(Qe))};v.cleanup=this.makeCleanup(E,r,u),r&&r.addEventListener("abort",u);let p=this.makeResponseChecker(A,v.cleanup,t,i);this.responseCallback=p,this.activeAbort=()=>{v.cleanup(),i(new Zx)},!x&&this.bufferState.buffer&&p(this.bufferState.buffer),x&&(this.logger.info("TX: "+x),this.transport.write(this.encodeCommand(x)).catch(j=>{v.cleanup(),i(j)}))})}executeSendRaw(x,A){return new Promise((e,r)=>{if(this.isDisposed){r(new Zx);return}this.bufferState.buffer="";let t=setTimeout(()=>{i(),r(new Error(`Timeout waiting for raw AT response to: ${x}`))},A),i=this.makeCleanup(t);this.activeAbort=()=>{i(),r(new Zx)},this.responseCallback=n=>{eC.test(n)&&(i(),this.logger.info("RX: "+n.trim()),e(n))},this.logger.info("TX: "+x),this.transport.write(this.encodeCommand(x)).catch(n=>{i(),r(n)})})}executeQueryConfig(x,A,e){return new Promise((r,t)=>{if(this.isDisposed){t(new Zx);return}if(e?.aborted){t(new Error(Qe));return}this.bufferState.buffer="";let i={cleanup:()=>{}},n=setTimeout(()=>{i.cleanup(),this.logger.error(`Timeout waiting for ${A} server config`),t(new Error(`Timeout waiting for ${A} response \u2014 server configuration not available`))},Qx),F=()=>{i.cleanup(),t(new Error(Qe))};i.cleanup=this.makeCleanup(n,e,F),e&&e.addEventListener("abort",F);let v=new RegExp(`\\${A}:\\s*<?([^,>\\s]+)>?`);this.activeAbort=()=>{i.cleanup(),t(new Zx)},this.responseCallback=E=>{let u=E.match(v);if(u){i.cleanup();let p=u[1].trim();this.logger.info(`Server config ${A}: ${p}`),r(p);return}E.length>500&&(this.bufferState.buffer=this.bufferState.buffer.slice(-250))},this.logger.info("TX: "+x),this.transport.write(this.encodeCommand(x)).catch(E=>{i.cleanup(),this.logger.error(`Failed to send ${A} command: `+(E instanceof Error?E.message:String(E))),t(E)})})}async sendAndWait(x,A,e=Qx,r){return this.withAtLock(t=>t.sendAndWait(x,A,e,r))}async sendRaw(x,A=Qx){return this.withAtLock(e=>e.sendRaw(x,A))}async queryMntServerConfig(x){return this.withAtLock(A=>A.queryMntServerConfig(x))}async queryMdnServerConfig(x){return this.withAtLock(A=>A.queryMdnServerConfig(x))}async initiateMntSync(x){return this.withAtLock(A=>A.initiateMntSync(x))}async initiateMdnSync(x){return this.withAtLock(A=>A.initiateMdnSync(x))}async sendCompanionCert(x,A){return this.withAtLock(e=>e.sendCompanionCert(x,A))}async executeInitiateMntSync(x){this.logger.info("Initiating MNT sync"),await this.executeSendAndWait(_x.MNT_SYNC,V0.OK,Qx,x)}async executeInitiateMdnSync(x){this.logger.info("Initiating MDN sync");try{await this.executeSendAndWait(_x.MDN_SYNC,V0.OK,Qx,x),await this.executeSendAndWait(null,V0.SYNC_START,Qx,x)}catch(A){this.logger.error("Failed to initiate MDN sync: "+(A instanceof Error?A.message:String(A)))}}async executeSendCompanionCert(x,A){if(this.isDisposed)throw new Zx;if(A?.aborted)throw new Error(Qe);let e=x.replace(/-/g,"+").replace(/_/g,"/")+"=".repeat((4-x.length%4)%4),r=e.length,t=await this.executeSendAndWait(`${_x.COMPANION_CERT}=${r}`,V0.OK,Qx,A),i=parseInt(t.match(/(\d+)/)[1],10),n=0;for(;n<r;){let F=Math.min(i,r-n),v=e.slice(n,n+F);await this.executeSendAndWait(`${_x.COMPANION_CERT}=${F},${n},${v}`,V0.OK,Qx,A),n+=F}return this.executeCompanionCertFinalize(r,A)}executeCompanionCertFinalize(x,A){return new Promise((e,r)=>{if(this.isDisposed){r(new Zx);return}if(A?.aborted){r(new Error(Qe));return}this.bufferState.buffer="";let t={cleanup:()=>{}},i=setTimeout(()=>{t.cleanup(),r(new Error("Timeout waiting for AT+COMPCERT finalize response"))},Qx),n=()=>{t.cleanup(),r(new Error(Qe))};t.cleanup=this.makeCleanup(i,A,n),A&&A.addEventListener("abort",n),this.activeAbort=()=>{t.cleanup(),r(new Zx)},this.responseCallback=v=>{let E=v.match(V0.COMPCERT_ERROR);if(E){t.cleanup(),e({success:!1,errorCode:parseInt(E[1],10)});return}if(v.includes(V0.OK)){t.cleanup(),e({success:!0});return}v.length>500&&(this.bufferState.buffer=this.bufferState.buffer.slice(-250))};let F=`${_x.COMPANION_CERT}=0,${x}`;this.logger.info("TX: "+F),this.transport.write(this.encodeCommand(F)).catch(v=>{t.cleanup(),r(v)})})}async queryCompanionCertSupport(x){return this.withAtLock(A=>A.queryCompanionCertSupport(x))}async executeQueryCompanionCertSupport(x){try{return await this.executeSendAndWait(_x.COMPANION_CERT_TEST,V0.OK,Qx,x),!0}catch(A){if(A instanceof Zx)throw A;return!1}}async sendConnectionClose(x){return this.withAtLock(A=>A.sendConnectionClose(x))}async executeSendConnectionClose(x){try{await this.executeSendAndWait(_x.CON_CLOSE,V0.CON_CLOSE,Qx,x)}catch(A){this.logger.error("Failed to receive +CONCLOSE response: "+(A instanceof Error?A.message:String(A)))}}createConCloseMonitor(x){let A="",e=r=>{A+=r,A.includes(V0.CON_CLOSE)&&(A="",this.bufferState.closedByDevice=!0,x()),A.length>1e3&&(A=A.slice(-500))};return this.on("data",e),()=>{this.off("data",e)}}dispose(){this.isDisposed||(this.isDisposed=!0,this.activeAbort?.(),this.disposeTransportListener(),this.responseCallback=null,this.activeAbort=null,this.removeAllListeners())}};var $i="requesting-cert",Pi="cert-revoked",tC=class zi extends HF.EventEmitter{constructor(){super(...arguments),a0(this,"utoMaster",null)}async authenticate(A){let e=A.logger??Mi,{signal:r,atHandler:t}=A,i=()=>{if(r?.aborted)throw new Error("Operation aborted")};try{this.emitPhase("checking-cert"),i();let n=await this.loadOrGenerateKeypair(A.storage),F=await A.storage.getCertificate(A.apiConfig.apiHost);(F===null||!BE(F.notAfter))&&(e.info("Companion cert missing or near expiry \u2014 requesting new cert"),this.emitPhase($i),i(),F=await this.requestAndStoreCert(n,A)),this.utoMaster=new Qi(A.utoTransport,e,A.timeSource),this.emitPhase("cert-presenting"),i();let v=F;F=await t.withAtLock(async p=>{let j=await this.presentCertWithRefresh(p,v,n,A);return await p.initiateMdnSync(r),j}),this.emitPhase("ecs-handshake"),i(),await this.utoMaster.init();let E=await this.utoMaster.initiateEcsHandshake({companionPublicKey:n.publicKey,companionPrivateKey:n.privateKey,signal:r});if(!E.success)return this.fail("ecs-handshake",`ECS handshake failed (code ${E.resultCode})`);this.emitPhase("connected");let u=this.utoMaster;return this.utoMaster=null,{success:!0,utoMaster:u}}catch(n){return this.handleError(n)}}dispose(){this.utoMaster=null,this.removeAllListeners()}async loadOrGenerateKeypair(A){let e=await A.getKeypair();if(e!==null)return e;let r=await po();return await A.saveKeypair(r),r}static async fetchCertOrThrowRevoked(A,e){try{return await EE(e.apiConfig,{publicKey:A.publicKey,subject:e.subject})}catch(r){throw r instanceof on&&(r.httpStatus===401||r.httpStatus===404)?(await e.storage.clearCertificate(e.apiConfig.apiHost),new Ti(Pi,`Companion cert revoked or session expired (HTTP ${r.httpStatus})`,{httpStatus:r.httpStatus,apiCode:r.code})):r}}async requestAndStoreCert(A,e){let r=await zi.fetchCertOrThrowRevoked(A,e),t={base64Url:r.certificateBase64Url,notAfter:r.notAfter};return await e.storage.saveCertificate(t,e.apiConfig.apiHost),t}static async refreshCertificate(A){let e=await A.storage.getKeypair(),r=e!==null?e:await(async()=>{let n=await po();return await A.storage.saveKeypair(n),n})(),t=await zi.fetchCertOrThrowRevoked(r,A),i={base64Url:t.certificateBase64Url,notAfter:t.notAfter};return await A.storage.saveCertificate(i,A.apiConfig.apiHost),i}static async clearCredentials(A,e){await A.clearCertificate(e)}async presentCertWithRefresh(A,e,r,t){let i=await A.sendCompanionCert(e.base64Url,t.signal);if(i.success||i.errorCode===3&&((t.logger??Mi).info("Device reported EXPIRED \u2014 refreshing cert and retrying"),this.emitPhase($i),e=await this.requestAndStoreCert(r,t),i=await A.sendCompanionCert(e.base64Url,t.signal),i.success))return e;throw new Ti("cert-presenting",`AT+COMPCERT rejected (code ${i.errorCode??"?"})`,{certErrorCode:i.errorCode})}emitPhase(A){this.emit("phase",A)}fail(A,e){return this.emit("phase","error"),{success:!1,phase:A,error:e}}handleError(A){return A instanceof Ti?(this.emit("phase",A.phase===Pi?Pi:"error"),{success:!1,phase:A.phase,error:A.message,certErrorCode:A.certErrorCode,httpStatus:A.httpStatus,apiCode:A.apiCode}):(this.emit("phase","error"),A instanceof on?{success:!1,phase:$i,error:A.message,httpStatus:A.httpStatus,apiCode:A.code}:{success:!1,phase:"error",error:A instanceof Error?A.message:String(A)})}};a0(tC,"encodePublicKeyBase64Url",tF);var Ti=class extends Error{constructor(x,A,e={}){super(A),a0(this,"phase",x),a0(this,"extra",e),this.name="AuthError"}get certErrorCode(){return this.extra.certErrorCode}get httpStatus(){return this.extra.httpStatus}get apiCode(){return this.extra.apiCode}};function nC(x){let A=x.replace(/\r\nOK\r\n$/,"").trim();return A?A.split("\f").map(e=>{let r=e.split(" ");return r.length<4?null:{name:r[0],scale:parseFloat(r[1]),offset:parseFloat(r[2]),unit:r[3]}}).filter(e=>e!==null):[]}function iC(x){let A=x.replace(/^\+[^\r\n]*\r\n/gm,"").replace(/\r\nOK\r\n$/,"").trim();return A?A.split("\f"):[]}function sC(x,A,e){let r=parseFloat(x);return isNaN(r)?x:parseFloat(Number(r*A+e).toFixed(3)).toString()}function Jo(x,A){return x.map((e,r)=>({name:e.name,displayValue:sC(A[r]??"",e.scale,e.offset),unit:e.unit}))}var aC=2e3,zF=class extends JF.EventEmitter{constructor(x,A=ir){super(),a0(this,"atHandler",x),a0(this,"logger",A),a0(this,"datapoints",[]),a0(this,"values",[]),a0(this,"polling",!1),a0(this,"pollTimer",null),a0(this,"fetchInProgress",!1),a0(this,"fetchPromise",null)}async checkSupport(){this.logger.info("Checking local data support");let x=await this.atHandler.sendRaw(_x.APP_GET_METADATA),A=x.includes(V0.OK)?{supported:!0,pinRequired:!1}:x.includes(V0.ERROR_PIN_REQUIRED)?{supported:!0,pinRequired:!0}:x.includes(V0.ERROR_NO_DATA)?{supported:!1,pinRequired:!1}:x.includes(V0.ERROR)?{supported:!1,pinRequired:!1}:{supported:!1,pinRequired:!1};return this.logger.info("Local data support: "+JSON.stringify(A)),A}async fetchMetadata(x){this.logger.info("Fetching metadata"+(x?" (with PIN)":""));let A=x?`${_x.APP_GET_METADATA}=${x}`:_x.APP_GET_METADATA,e=await this.atHandler.sendRaw(A);if(this.logger.debug("Metadata response: "+e),e.includes(V0.ERROR_PIN_REQUIRED))return this.logger.warn("PIN required/invalid for metadata"),null;if(e.includes(V0.ERROR_NO_DATA))return this.logger.warn("No data available from device"),this.datapoints=[],this.values=[],this.emit("metadata",[]),this.emit("error","No local data available from device"),[];if(e.includes(V0.OK)){let r=nC(e);return this.logger.info("Parsed "+r.length+" datapoints"),this.datapoints=r,this.values=new Array(r.length).fill(""),this.emit("metadata",r),r}return e.includes(V0.ERROR)?(this.logger.error("Metadata fetch error: "+e),this.emit("error","Device returned error during metadata fetch"),[]):[]}async fetchValues(x){return this.readValues(A=>this.atHandler.sendRaw(A),x)}async readValues(x,A){try{this.logger.debug("Fetching values");let e=A?`${_x.APP_GET_DATAVALUE}=${A}`:_x.APP_GET_DATAVALUE,r=await x(e);if(r.includes(V0.OK)){let t=iC(r);return this.logger.debug("Values: "+t.join(", ")),this.values=t,this.emit("values",t),this.emit("displayValues",Jo(this.datapoints,t)),t}return[]}catch(e){return this.logger.warn("Value fetch error: "+(e instanceof Error?e.message:String(e))),[]}}async checkMeasurementTriggerSupport(){this.logger.info("Checking measurement trigger support");try{let A=(await this.atHandler.sendRaw(_x.APP_TRIG_MEASURE_TEST)).includes(V0.OK);return this.logger.info("Measurement trigger support: "+A),A}catch(x){if(x instanceof Zx)throw x;return this.logger.warn("Measurement trigger probe failed: "+(x instanceof Error?x.message:String(x))),!1}}async triggerMeasurement(x={}){let{pin:A,timeoutMs:e=AC,signal:r}=x;return this.logger.info("Triggering measurement"),this.atHandler.withAtLock(async t=>{let i=await t.sendRaw(_x.APP_TRIG_MEASURE);if(this.logger.debug("Trigger measurement response: "+i),!i.includes(V0.OK))return this.logger.warn("Measurement trigger rejected: "+i.trim()),{outcome:"rejected",values:[],response:i};this.emit("measurementTriggered");try{let n=await t.sendAndWait(null,V0.MEASURED,e,r);return this.emit("measurementCompleted"),{outcome:"measured",values:await this.readValues(v=>t.sendRaw(v),A),response:n}}catch(n){if(n instanceof Zx)throw n;let F="timeout";return n instanceof GF?F="error":r?.aborted&&(F="aborted"),this.logger.warn(`Measurement ${F} while waiting for ${V0.MEASURED}: `+(n instanceof Error?n.message:String(n))),this.emit("measurementFailed",F),{outcome:F,values:[],response:i}}})}async startPolling(x,A=aC){if(this.polling){this.logger.warn("Polling already active \u2014 ignoring startPolling call");return}this.logger.info("Starting polling every "+A+" ms"),this.polling=!0,this.fetchInProgress=!1,this.emit("pollingStarted"),this.fetchPromise=this.fetchValues(x),await this.fetchPromise,this.fetchPromise=null,this.polling&&(this.pollTimer=setInterval(()=>{this.fetchInProgress||(this.fetchInProgress=!0,this.fetchPromise=this.fetchValues(x).finally(()=>{this.fetchInProgress=!1,this.fetchPromise=null}))},A))}async stopPolling(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null),this.polling&&(this.logger.info("Polling stopped"),this.polling=!1,this.emit("pollingStopped")),this.fetchPromise&&await this.fetchPromise}getSnapshot(){return{datapoints:[...this.datapoints],values:[...this.values],isPolling:this.polling}}getDisplayValues(){return Jo(this.datapoints,this.values)}dispose(){this.stopPolling(),this.datapoints=[],this.values=[],this.removeAllListeners()}};var oC={0:"trigger",1:"wakeup",2:"online"},FC={0:["2G","","GSM"],1:["2G","Compact","GSM-COMPACT"],2:["3G","","UTRAN"],3:["2G","EDGE","GSM-EGPRS"],4:["3G","HSDPA","UTRAN-HSDPA"],5:["3G","HSUPA","UTRAN-HSUPA"],6:["3G","HSPA+","UTRAN-HSXPA"],7:["4G","","EUTRAN"],8:["4G","LTE-M","LTE-CATM1"],9:["4G","NB-IoT","LTE-CATNB1"],100:["WiFi","","WIFI"],101:["LAN","Ethernet","ETHERNET"],102:["Local","Wireless","WIRELESS"],103:["Local","Wired","WIRED"]},vC={"NO SCRIPT":"none","SCRIPT ERROR":"error","SCRIPT OK":"ok"},Sx={FAILED:1,ACTIVE:2,STARTED:4,RETRY:8,WAKEUPABLE:16,EXTSIM:32,DISABLED:64,WAKEUP:256,POSUPDATE_ACTIVE:512},fC=Sx.FAILED|Sx.ACTIVE|Sx.STARTED|Sx.RETRY|Sx.WAKEUPABLE|Sx.EXTSIM|Sx.DISABLED|Sx.WAKEUP|Sx.POSUPDATE_ACTIVE,zo=`${V0.RM2M_STATE}: `;function lC(x=0){let A=(x&Sx.WAKEUPABLE)!==0,e="offline",r=A;return x&Sx.POSUPDATE_ACTIVE?(e="locating",r=!1):x&Sx.RETRY?(e="retry",r=!1):x&Sx.STARTED?(e="dialing",r=!1):x&Sx.ACTIVE?(e="active",r=!1):x&Sx.FAILED?(e="failed",r=A):x&Sx.DISABLED&&(e="disabled",r=!1),{signal:e,simType:(x&Sx.EXTSIM)!==0?"external":"internal",wakeupable:r,unknownFlags:x&~fC}}function cC(x){if(x===void 0)return null;let A=parseInt(x,10);return isNaN(A)?x:oC[A]??x}function EC(x){if(x===void 0)return null;let A=parseInt(x,10);return isNaN(A)?null:FC[A]??["unknown",`itf#${x}`,`itf#${x}`]}function BC(x){if(x.length===0)return null;let A=x.join(",");return vC[A]??A}function CC(x){let A=x.split(","),[e,r,t,i,...n]=A;if(!e||!/^-?\d+$/.test(e)||!r||!/^\d+$/.test(r))return null;let F=parseInt(r,10),v=EC(i),E=i!==void 0?parseInt(i,10):NaN;return{stamp:new Date,rssi:E>=101?null:parseInt(e,10),state:F,uplinkState:lC(F),uplinkMode:cC(t),uplinkInterface:v?v[0]:null,uplinkInterfaceExtended:v?v[1]:null,uplinkInterfaceTechnical:v?v[2]:null,scriptState:BC(n)}}function dC(x){let A=x.indexOf(zo);if(A===-1)return null;let e=x.substring(A+zo.length),r=e.search(/\r?\n/);if(r===-1)return null;let t=e.substring(0,r).trim();return t?CC(t):null}var uC=5e3,VF=class extends KF.EventEmitter{constructor(x,A=Mi){super(),a0(this,"atHandler"),a0(this,"logger"),a0(this,"lastState",null),a0(this,"pollingTimer",null),a0(this,"polling",!1),a0(this,"fetchInProgress",!1),a0(this,"fetchPromise",null),this.atHandler=x,this.logger=A}async fetchState(){try{let x=await this.atHandler.sendRaw(_x.RM2M_STATE),A=dC(x);return A?(this.lastState=A,this.emit("state",A),this.logger.debug("RM2M state fetched successfully")):this.logger.warn("Failed to parse RM2M state response"),A}catch(x){let A=x instanceof Error?x.message:String(x);return this.logger.error(`Failed to fetch RM2M state: ${A}`),this.emit("error",A),null}}startPolling(x=uC){if(this.polling){this.logger.debug("Polling already active, ignoring startPolling call");return}this.logger.info(`Starting RM2M state polling every ${x}ms`),this.polling=!0,this.fetchInProgress=!1,this.emit("pollingStarted"),this.runGuardedFetch(),this.pollingTimer=setInterval(()=>this.runGuardedFetch(),x)}runGuardedFetch(){this.fetchInProgress||(this.fetchInProgress=!0,this.fetchPromise=this.fetchState().finally(()=>{this.fetchInProgress=!1,this.fetchPromise=null}))}async stopPolling(){this.pollingTimer&&(clearInterval(this.pollingTimer),this.pollingTimer=null),this.polling&&(this.logger.info("RM2M state polling stopped"),this.polling=!1,this.emit("pollingStopped")),this.fetchPromise&&await this.fetchPromise}getLastState(){return this.lastState?{...this.lastState,uplinkState:{...this.lastState.uplinkState}}:null}get isPolling(){return this.polling}dispose(){this.stopPolling(),this.lastState=null,this.removeAllListeners()}};var sr={configurationNumber:1,utoInterface:0,utoEndpoint:1,utoSize:64*1024,debugInterface:1,debugEndpoint:2,debugSize:1024};var _0=class extends Error{constructor(x){super(x),this.name="ApiBadRequestError"}},hA=class extends Error{constructor(x){super(x),this.name="ApiNotFoundError"}},Fs=class extends Error{constructor(x){super(x),this.name="ApiForbiddenError"}},WF=class extends Error{constructor(x){super(x),this.name="ApiMethodNotAllowedError"}};function fA(x){try{return decodeURIComponent(x)}catch{throw new _0("malformed url encoding")}}var DC=2e3,pC=2136;function XF(x){if(x.length===0)return!0;if(!/^\d{4,17}$/.test(x))return!1;let A=Number(x.slice(0,4));return A>=DC&&A<=pC}function ht(x){if(x)for(let A of["stamp","from","until"]){let e=x[A];if(typeof e=="string"&&!(A==="until"&&e==="*")&&!(A!=="stamp"&&e.trim().length===0)&&!XF(e))throw new _0(`attribute '${A}' is not valid`)}}function bC(x){return typeof x.setMetadataValue=="function"?x:null}function mC(x){return typeof x.insertUtoChangeRequests=="function"?x:null}function YF(){return{lastIssuedStamp40:0,tagMutexTails:new Map}}async function jC(x){return{status:200,body:x.ctx.siteInfo}}async function hC(x){let{blueprint:A}=x.ctx;if(!A)throw new hA("blueprint unavailable");return{status:200,body:A}}async function gC(x){let{me:A}=x.ctx;if(A==null)throw new hA("no profile stored");return{status:200,body:A}}function QF(x,A,e,r){let t=x.push;t&&(async()=>{try{await t.container(A,e,r)}catch(i){x.logger?.error(`[localApi] device push for tag ${A} failed:`,i)}})()}async function yC(x,A,e){let r=x.push;if(!r)return null;try{return await r.adHocChangeRequest(A,e)}catch(t){return x.logger?.error(`[localApi] change request for tag ${A} failed:`,t),null}}var kC=1024;function pn(x){let A=x.indexOf(0),e=A<0?x:x.subarray(0,A);try{let r=new TextDecoder("utf-8").decode(e),t=JSON.parse(r);return typeof t!="object"||t===null||Array.isArray(t)?null:t}catch{return null}}function wC(x,A=0){let e=new TextEncoder().encode(x),r=Math.max(kC,A,e.length+1),t=new Uint8Array(r);return t.set(e,0),t}var vs=26432,Or={aberrant:1,service:2,standby:4,commissioned:8,offline:16,commissioning:65536,online:131072},ZF=Object.keys(Or),bn=["standby","commissioned","offline","commissioning","online"],Ko=bn.reduce((x,A)=>x|Or[A],0)>>>0;function _C(x){let A=0;for(let e of ZF)x[e]===!0&&(A|=Or[e]);return A>>>0}function x8(x,A){let e={};for(let r of ZF)x&Or[r]?e[r]=!0:typeof A?.[r]=="boolean"&&(e[r]=!1);return e}async function SC(x,A){let e=A.device;if(!e)return!1;let r=await x.getRowForTag(vs);if(!r?.data)return!1;let t=pn(r.data);if(!t)return!1;let i=!1;if(typeof t.lifecycleFlags=="number"){let n=x8(t.lifecycleFlags,e.lifecycle_flags);JSON.stringify(e.lifecycle_flags)!==JSON.stringify(n)&&(e.lifecycle_flags=n,i=!0)}return typeof t.lifecycleState=="string"&&e.lifecycle_state!==t.lifecycleState&&(e.lifecycle_state=t.lifecycleState,i=!0),i}var $C=new Set([...bn,"service","lifecycle_state"]);function PC(x,A){let e=Math.max(W0.msToStamp40((x.timeSource??Rr).nowMs()),A.lastIssuedStamp40+1);return A.lastIssuedStamp40=e+1,e}async function TC(x){let A=MC(x.request.body??null);if(!A)throw new _0("invalid or missing request body");qC(A);let e=x.ctx,r=e.siteInfo.lifecycle_flags;if(!IC(r))throw new _0("this site does not support lifecycle flags!");let t=_C(r),i=t;for(let E of bn){let u=A[E];typeof u=="boolean"&&(i=u?i|Or[E]:i&~Or[E])}if(i>>>=0,i===t)return{status:204,body:""};let n=PC(e,x.session),F=[{json:JSON.stringify({lifecycleFlags:{op:"&",val:~Ko>>>0}}),stamp40:n},{json:JSON.stringify({lifecycleFlags:{op:"|",val:i&Ko}}),stamp40:n+1}],v=mC(e.storage);return v&&await v.insertUtoChangeRequests(F.map(E=>({tag:vs,stamp40:E.stamp40,json:E.json}))),e.siteInfo.lifecycle_flags=x8(i,r),await A8(e),NC(e,F),{status:204,body:""}}function qC(x){let A=[];for(let[e,r]of Object.entries(x))$C.has(e)?(e==="lifecycle_state"?typeof r!="string":typeof r!="boolean")&&A.push(`"${e}" is not valid`):A.push(`"${e}" is not an allowed lifecycle property`);if(A.length>0)throw new _0(`validation errors: ${A.join(", ")}`);if(Object.keys(x).some(e=>!bn.includes(e)))throw new _0("invalid parameters")}async function NC(x,A){try{let e=await yC(x,vs,A);e==="executed"?await SC(x.storage,x.siteInfo)&&await A8(x):e!==null&&x.logger?.warn(`[localApi] lifecycle change request not applied by the device (outcome=${e})`)}catch(e){x.logger?.error("[localApi] lifecycle device-mirror refresh failed:",e)}}async function A8(x){await bC(x.storage)?.setMetadataValue("site_info",JSON.stringify(x.siteInfo))}function IC(x){return typeof x=="object"&&x!==null&&!Array.isArray(x)}function MC(x){if(!x)return null;let A;try{A=JSON.parse(x)}catch{return null}return typeof A!="object"||A===null||Array.isArray(A)?null:A}function e8(x){if(x!=null){if(Array.isArray(x)&&x.every(A=>typeof A=="string"))return x;throw new _0('"select" must be an array')}}function LC(x){if(x!=null){if(Array.isArray(x)&&x.every(A=>typeof A=="string"))return x;throw new _0("invalid parameter, select must be an array")}}function OC(x,A){let e=new Map;if(A){for(let[r,t]of A)e.set(t,r);return e}for(let r of x?.fields??[]){if(_e(r))continue;let t=r.alias??r.name;e.set(t,t.toLowerCase())}return e}function RC(x){let A=new Map;for(let e of x.fields){if(_e(e))continue;let r=(e.alias??e.name).toLowerCase();A.set(e.name,r),e.alias&&A.set(e.alias,r)}return A}function GC(x){let A=new Set;for(let e of x.fields)_e(e)||A.add((e.alias??e.name).toLowerCase());return A.add("stamp"),A}function UC(x,A,e){if(!e)return null;let r=OC(x,A),t=new Set,i=[];for(let n of e){if(n==="stamp")continue;let F=r.get(n);F?t.add(F):i.push(n)}if(i.length>0)throw r8(i);return t}function HC(x,A){let e=RC(x),r=[],t=[],i=!1;for(let n of A){if(n==="stamp"){i=!0,r.push("stamp");continue}let F=e.get(n);F?r.push(F):t.push(n)}if(t.length>0)throw r8(t);return i||r.unshift("stamp"),r}function JC(x,A){if(A===void 0)return;let e=GC(x),r=A.map(i=>i.toLowerCase()),t=r.filter(i=>!e.has(i));if(t.length>0)throw new _0(`unknown field name(s): ${t.join(",")}`);return r.includes("stamp")?r:["stamp",...r]}function zC(x,A){if(!A)return x;let e={};for(let[r,t]of Object.entries(x))(r==="stamp"||A.has(r))&&(e[r]=t);return e}function fs(x,A){if(!A)return x;let e={};for(let r of A)e[r]=r in x?x[r]:null;return e}function r8(x){return new _0(`Fields [\`${x.join("`, `")}\`] do not exist in this container`)}function mn(x,A){return x.containers.find(e=>e.name===A||e.alias===A)??null}async function KC(x){let A=x.ctx,e=fA(x.params[1]),r=mn(A.model,e);if(!r)throw new _0("container does not exist");let t=await A.mapper.readContainer(e);if(!t)throw new hA(`no data for container "${e}"`);let i=WC(A,r,t,VC(x));return{status:200,body:t8(A,e,i)}}function VC(x){let A=x.query.json??{};return e8(A.select)}function WC(x,A,e,r){let t=UC(A,Dn(x.blueprint??null,A),r);return zC(e,t)}function t8(x,A,e){let r=x.model.byNameOrAlias(A);return r?UB(e,Dn(x.blueprint??null,r)):e}async function XC(x){let A=x.ctx,e=fA(x.params[1]),r=A.model.byNameOrAlias(e);if(!r)throw new hA(`unknown container "${e}"`);let t=await A.mapper.readContainer(e);if(!t)throw new hA(`unknown container "${e}"`);let i=x.query.json??{},n=LC(i.select),F=JC(r,n);return{status:200,body:fs(t,F)}}async function YC(x){let A=fA(x.params[1]);return n8(x,A,"canonical")}async function QC(x){let A=fA(x.params[1]);if(!x.ctx.model.byNameOrAlias(A))throw new hA(`unknown container "${A}"`);return n8(x,A,"legacy")}async function n8(x,A,e){let r=td(x);if(!r)throw new _0("invalid or missing request body");ht(r);let{stamp:t,...i}=r;if(e==="canonical"&&t!==void 0&&typeof t!="string")throw new _0("value(s) of field(s) stamp are not valid");let n=x.ctx;if(e==="canonical"&&!mn(n.model,A))throw new _0("container does not exist");let F=n.model.byNameOrAlias(A);if(F?.kind==="histdata")throw new hA(`unknown container "${A}"`);let v=e==="canonical"?Ad(n,F,i):ed(F,i);try{let E=e==="canonical"&&t!==void 0?{...v,stamp:t}:v,u=await n.mapper.writeContainer(A,E);return u.devicePushable&&QF(n,u.tag,u.data,u.stamp40),{status:204,body:""}}catch(E){throw ZC(E,A,e,n,F)}}function ZC(x,A,e,r,t){if(x instanceof ln){let i=x.field?xd(r,t,x.field,e):void 0;return e==="canonical"?i?new _0(`no permission to modify container field \`${i}\``):new _0(`no permission to modify container \`${A}\``):i?new Fs(`unknown field name(s): ${i}`):new WF(`no permission to modify '${A}'`)}return x}function xd(x,A,e,r){if(!A)return e;let t=A.fields.find(n=>n.name===e||n.name.toLowerCase()===e||(n.alias??n.name).toLowerCase()===e);return t?r==="legacy"?(t.alias??t.name).toLowerCase():Dn(x.blueprint??null,A)?.get(e)??t.alias??t.name:e}function Ad(x,A,e){if(!A)return e;let r=Dn(x.blueprint??null,A),t=new Map;if(r)for(let[i,n]of r)t.set(n,i);else for(let i of A.fields)t.set(i.alias??i.name,(i.alias??i.name).toLowerCase());return i8(A,t,e,i=>new _0(`unknown field name(s): ${i}`))}function ed(x,A){if(!x)return A;let e=new Map;for(let r of x.fields){let t=r.alias??r.name;e.set(t.toLowerCase(),t.toLowerCase()),e.set(t,t.toLowerCase())}return i8(x,e,A,r=>new Fs(`unknown field name(s): ${r}`))}var rd=new Set(["stamp","stamp4","stamp8","datetime"]);function i8(x,A,e,r){let t=new Map(x.fields.map(v=>[(v.alias??v.name).toLowerCase(),v])),i={},n=[],F=[];for(let[v,E]of Object.entries(e)){let u=A.get(v);if(!u){n.push(v);continue}let p=t.get(u);if(p&&rd.has(p.type)&&!(typeof E=="string"&&XF(E))){F.push(v);continue}i[u]=E}if(n.length>0)throw r(n.join(","));if(F.length>0)throw new _0(`value(s) of field(s) ${F.join(",")} are not valid`);return i}function td(x){let A=x.query.json,e=A!=null&&typeof A=="object"&&!Array.isArray(A)?A:void 0,r=x.request.body;if(!r)return e?{...e}:null;let t=nd(r);if(t===void 0)throw new _0("request supplied data which is not json formatted");return typeof t!="object"||t===null||Array.isArray(t)?null:{...e,...t}}function nd(x){try{return JSON.parse(x)}catch{return}}var id="x-mt-backfill",sd="pending";async function ls(x,A,e){let r=x.push?.backfill;if(!(!r||A===void 0||A===null||e===null))try{return await r.call(x.push,{fromMs:e})==="pending"?{[id]:sd}:void 0}catch(t){x.logger?.error("[localApi] historic backfill check failed:",t);return}}var ad=1e3,en=1e3,s8="20000101",a8="*";async function od(x){let A=x.query.json??{};c8(A,["from","until","count","offset","select"]),ht(A);let e=x.ctx,r=fA(x.params[1]),{mapperSelect:t,order:i}=F8(e,r,A.select);v8(e,r);let n=cn(A.from,s8,"from"),F=cn(A.until,a8,"until");f8(n,F),F!==null&&(F=vd(F));let v=fd(A.count),E=l8(A.offset),u=await ls(e,A.from,n);return{status:200,body:(await e.mapper.readTimeseries(r,{fromMs:n,untilMs:F,count:v,offset:E,select:t})).map(j=>o8(x,e,r,fs(j,i))),headers:u}}async function Fd(x){let A=x.query.json??{};c8(A,["from","until","offset","select"]),ht(A);let e=x.ctx,r=fA(x.params[1]),t=x.params[2],{mapperSelect:i,order:n}=F8(e,r,A.select);v8(e,r);let F=cn(A.from,s8,"from"),v=cn(A.until,a8,"until");f8(F,v);let E=l8(A.offset),u=await ls(e,A.from,F),j=(await e.mapper.readTimeseries(r,{fromMs:F,untilMs:v,count:t==="youngest"?-1:1,offset:E,select:i}))[0];return j?{status:200,body:o8(x,e,r,fs(j,n)),headers:u}:{status:204,body:JSON.stringify("no timeseries recordData found"),headers:u}}function o8(x,A,e,r){return x.apiVersion==="1"?r:t8(A,e,r)}function F8(x,A,e){let r=e8(e);if(!r)return{mapperSelect:void 0,order:null};let t=mn(x.model,A);if(!t)return{mapperSelect:r,order:null};let i=HC(t,r),n=i.filter(F=>F!=="stamp");return{mapperSelect:n.length>0?n:void 0,order:i}}function v8(x,A){if(!mn(x.model,A))throw new _0("timeseries does not exist")}function cn(x,A,e){let t=x==null||typeof x=="string"&&x.trim()===""?A:String(x);if(t==="*")return null;try{return jt(t)}catch{throw new _0(`attribute '${e}' is not valid`)}}function f8(x,A){if(x!==null&&A!==null&&x>A)throw new _0('E_BAD_REQUEST "from" value must be older than "until"')}function vd(x){let A=W0.msToStamp40(x);return W0.stamp40ToMS(A)>=x&&(A-=1),W0.stamp40ToMS(A)}function fd(x){if(x==null||x==="")return ad;let A=Number(x);if(!Number.isInteger(A))throw new _0('"count" must be an integer');if(A===0)throw new _0("`count` cannot be 0");if(A<-en)throw new _0(`"count" must be greater than or equal to -${en}`);if(A>en)throw new _0(`"count" must be less than or equal to ${en}`);return A}function l8(x){if(x==null||x==="")return 0;let A=Number(x);if(!Number.isInteger(A))throw new _0('"offset" must be an integer');if(A<0)throw new _0('"offset" must be greater than or equal to 0');return A}function c8(x,A){for(let e of Object.keys(x))if(!A.includes(e))throw new _0(`"${e}" is not allowed`)}var ld=1e5,cd="20000101",Ed="*";async function Bd(x){let e=`histdata${x.params[1]?Number(x.params[1]):0}`,r=x.ctx,t=r.model.byNameOrAlias(e);if(!t)throw new hA(`unknown container "${e}"`);let i=x.query.json??{};ht(i);let{fromMs:n,untilMs:F}=ud(i);Dd(n,F);let v=pd(i),E=bd(i),u=E8(t,i.select)??["stamp"],p=En(i.from)?await ls(r,i.from,n):void 0,j=u.filter(S=>S!=="stamp");return{status:200,body:(await r.mapper.readTimeseries(e,{fromMs:n,untilMs:F,count:v,offset:E,select:j.length>0?j:void 0})).map(S=>u.map(T=>T==="stamp"?S.stamp:S[T]??null)),headers:p}}async function Cd(x){let e=`histdata${x.params[1]?Number(x.params[1]):0}`,r=x.params[2],t=x.ctx,i=t.model.byNameOrAlias(e);if(!i)throw new hA(`unknown container "${e}"`);let n=x.query.json??{};ht(n);let F=E8(i,n.select)??["stamp"],v=dd(n),E=F.filter(j=>j!=="stamp"),p=(await t.mapper.readTimeseries(e,{fromMs:null,untilMs:v??null,count:v!==void 0||r==="youngest"?-1:1,select:E.length>0?E:void 0}))[0];return p?{status:200,body:[F.map(j=>j==="stamp"?p.stamp:p[j]??null)]}:{status:200,body:[]}}function dd(x){if(!(!En(x.until)||x.until==="*"))try{return jt(String(x.until))??void 0}catch{throw new _0("from or until value invalid")}}function ud(x){let A=En(x.from),e=En(x.until);if((!A||!e)&&!cs(x.count))throw new _0("missing or invalid parameters (from and until and/or count)");return{fromMs:Vo(A?x.from:cd),untilMs:Vo(e?x.until:Ed)}}function Dd(x,A){if(x!==null&&A!==null&&x>A)throw new _0('"from" value must be older than "until"')}function Vo(x){let A=String(x);try{return jt(A)}catch{throw new _0(`invalid stamp "${A}"`)}}function pd(x){if(!cs(x.count))return ld;if(typeof x.count!="number")throw new _0("invalid parameter count");return x.count}function bd(x){let A=x.offset;if(A==null||A==="")return 0;if(typeof A!="number"||A<0)throw new _0("invalid parameter offset");return A}function E8(x,A){if(A==null)return;if(!Array.isArray(A))throw new _0("invalid parameter, select must be an array");let e=A.map(F=>String(F).toLowerCase()),r=e.filter(F=>F.includes(" "));if(r.length>0)throw new _0(`aggregation suffix not allowed: ${r.join(",")}`);let t=e.includes("stamp")?e:["stamp",...e],i=new Set(x.fields.filter(F=>!_e(F)).map(F=>(F.alias??F.name).toLowerCase()));i.add("stamp");let n=t.filter(F=>!i.has(F));if(n.length>0)throw new _0(`invalid channel(s) ${n.join(",")}`);return t}function cs(x){return!!x}function En(x){return typeof x=="string"?x.trim().length>0:cs(x)}var md="device_id";function jd(x){return async A=>(await jn(A),{status:200,body:await gd(A.ctx,x)})}async function jn(x){let A=fA(x.params[0]),e=await hd(x.ctx);if(!e||e.toLowerCase()!==A.toLowerCase())throw new hA(`unknown device "${A}"`)}async function hd(x){return x.deviceId||x.siteInfo.device?.device_id||x.storage.getMetadataValue(md)}async function gd(x,A){let e=await x.storage.getRowForTag(A);if(!e||!e.data)return{};let r=pn(e.data);return r?(typeof r.pipAppVer=="number"&&(r.pipAppVer=`${r.pipAppVer}.0.0`),r.stamp=ut(W0.stamp40ToMS(xA(e.stamp))),r):{}}function Es(x,A,e){let t=(x.tagMutexTails.get(A)??Promise.resolve()).then(e);return x.tagMutexTails.set(A,t.catch(()=>{})),t}function yd(x){return async A=>{await jn(A);let e=_d(A.request.body??null);if(!e)throw new _0("invalid or missing request body");return Es(A.session,x,async()=>{let r=await A.ctx.storage.getRowForTag(x),t=r?.data?pn(r.data)??{}:{};return await Bs(A.ctx,x,r,{...t,...e}),{status:204,body:""}})}}function kd(x){return async A=>(await jn(A),Es(A.session,x,async()=>{let e=await A.ctx.storage.getRowForTag(x);return!e||!e.data?{status:204,body:""}:(await Bs(A.ctx,x,e,{}),{status:204,body:""})}))}function wd(x){return async A=>{await jn(A);let e=fA(A.params[1]);return Es(A.session,x,async()=>{let r=await A.ctx.storage.getRowForTag(x);if(!r||!r.data)return{status:204,body:""};let t=pn(r.data)??{},i=e.toLowerCase();for(let n of Object.keys(t))n.toLowerCase()===i&&delete t[n];return await Bs(A.ctx,x,r,t),{status:204,body:""}})}}function _d(x){if(!x)return null;let A;try{A=JSON.parse(x)}catch{return null}return typeof A!="object"||A===null||Array.isArray(A)?null:A}async function Bs(x,A,e,r){let t=wC(JSON.stringify(r),e?.data?.length??0),i=W0.msToStamp40((x.timeSource??Rr).nowMs());await x.storage.replaceUtoRow({tag:A,stamp:Jx(i),flags:e?.flags??0,site_related:e?.site_related??0,data:t}),QF(x,A,t,i)}var B8={"content-type":"application/json"},Sd=[{method:"GET",pattern:/^\/api\/1\/me$/,handler:gC,checksUid:!1},{method:"GET",pattern:/^\/api\/[12]\/sites\/([^/]+)$/,handler:jC,checksUid:!0},{method:"GET",pattern:/^\/api\/[12]\/sites\/([^/]+)\/blueprint$/,handler:hC,checksUid:!0},{method:"POST",pattern:/^\/api\/1\/sites\/([^/]+)\/cn-set-lifecycle$/,handler:TC,checksUid:!0},{method:"GET",pattern:/^\/api\/[12]\/sites\/([^/]+)\/timeseries\/([^/]+)\/(oldest|youngest)$/,handler:Fd,checksUid:!0},{method:"GET",pattern:/^\/api\/[12]\/sites\/([^/]+)\/timeseries\/([^/]+)$/,handler:od,checksUid:!0},{method:"GET",pattern:/^\/api\/[12]\/sites\/([^/]+)\/containers\/([^/]+)$/,handler:KC,checksUid:!0},{method:"PUT",pattern:/^\/api\/[12]\/sites\/([^/]+)\/containers\/([^/]+)$/,handler:YC,checksUid:!0},{method:"GET",pattern:/^\/api\/1\/sites\/([^/]+)\/histdata(\d)?\/(oldest|youngest)$/,handler:Cd,checksUid:!0},{method:"GET",pattern:/^\/api\/1\/sites\/([^/]+)\/histdata(\d)?$/,handler:Bd,checksUid:!0},{method:"GET",pattern:/^\/api\/1\/sites\/([^/]+)\/(config[0-9a-c]|config[A-C])$/,handler:XC,checksUid:!0},{method:"PUT",pattern:/^\/api\/1\/sites\/([^/]+)\/(config[0-9a-c]|config[A-C])$/,handler:QC,checksUid:!0},...$d()];function $d(){let x={"sys-otp":26432,"sys-flash":26433,"app-otp":26434,"app-flash":26435,"app-state":26436,"sys-info":26437,"app-info":26438},A={"sys-flash":26433,"app-flash":26435},e=Object.entries(x).map(([t,i])=>({method:"GET",pattern:new RegExp(`^/api/1/devices/([^/]+)/${t}$`),handler:jd(i),checksUid:!1})),r=Object.entries(A).flatMap(([t,i])=>[{method:"PUT",pattern:new RegExp(`^/api/1/devices/([^/]+)/${t}$`),handler:yd(i),checksUid:!1},{method:"DELETE",pattern:new RegExp(`^/api/1/devices/([^/]+)/${t}$`),handler:kd(i),checksUid:!1},{method:"DELETE",pattern:new RegExp(`^/api/1/devices/([^/]+)/${t}/([^/]+)$`),handler:wd(i),checksUid:!1}]);return[...e,...r]}var Pd=/^\/api\/([12])\/customers\/([^/]+)\/sites\/(.*)$/;function C8(x){let A=YF();return e=>Td(x,e,A)}async function Td(x,A,e=YF()){try{let[r,t]=Id(A.path),i=Md(t),n=Nd(r,x);if(n===null)return tr(404,"E_NOT_FOUND","unknown customer");let F=A.method.toUpperCase();for(let v of Sd){if(v.method!==F)continue;let E=v.pattern.exec(n);if(!E)continue;let u=E.slice(1);if(v.checksUid&&!qd(x,u[0]))return tr(404,"E_NOT_FOUND","unknown site");let p=/^\/api\/([12])\//.exec(n)?.[1]??"1",j=await v.handler({request:A,params:u,query:i,ctx:x,session:e,apiVersion:p});return Rd(j)}return tr(404,"E_NOT_FOUND","not found")}catch(r){return Gd(r)}}function qd(x,A){return x.allowAnySiteUid===!0||A!==void 0&&fA(A)===x.siteUid}function Nd(x,A){let e=Pd.exec(x);if(!e)return x;let r=fA(e[2]).toLowerCase();return(A.siteInfo.customer_id??"").toLowerCase()===r||(A.siteInfo.customer_uid??"").toLowerCase()===r?`/api/${e[1]}/sites/${e[3]}`:null}function Id(x){let A=x.indexOf("?");return A<0?[x,""]:[x.slice(0,A),x.slice(A+1)]}function Md(x){let A={params:{}};if(!x)return A;for(let e of x.split("&"))e&&Ld(A,e);return A}function Ld(x,A){let e=A.indexOf("="),r=fA(e<0?A:A.slice(0,e)),t=e<0?"":fA(A.slice(e+1));r==="json"?x.json=Od(t):x.params[r]=t}function Od(x){try{return JSON.parse(x)}catch{throw new _0("request supplied data which is not json formatted ")}}function Rd(x){let A=typeof x.body=="string"?x.body:JSON.stringify(x.body);return{status:x.status,headers:{...B8,...x.headers},body:A}}function d8(x,A){return{status:x,headers:{...B8},body:JSON.stringify(A)}}function Gd(x){return x instanceof _0||x instanceof wF||x instanceof cF?tr(400,"E_BAD_REQUEST",x.message):x instanceof Fs||x instanceof ln?tr(403,"E_FORBIDDEN",x.message):x instanceof WF?tr(405,"E_METHOD_NOT_ALLOWED",x.message):x instanceof hA||x instanceof er?tr(404,"E_NOT_FOUND",x.message):d8(500,{err:x instanceof Error?x.message:String(x)})}function tr(x,A,e){return d8(x,{err:`${A} ${e}`})}function u8(x,A){let e=A.apmId??"local",r=A.version??1;return{uid:A.siteUid,name:A.name??A.siteUid,customer_id:e,customer_uid:e,app:{apmid:e,version:String(r)},device:{device_id:A.deviceId,lifecycle_flags:{}},lifecycle_flags:{},containers:x.containers.map(t=>({name:t.name,alias:t.alias??t.name,kind:t.kind}))}}var D8=require("usb");var hn=class{interface="usb";#e=new Set;#x;#r;#t;#A=!1;constructor(A,e){this.#x=A;let t=A.configuration.interfaces[e].alternate.endpoints;this.#r=t.find(i=>i.direction==="in"),this.#t=t.find(i=>i.direction==="out")}async write(A){await this.#x.transferOut(this.#t.endpointNumber,A)}onData(A){let e={cb:A};return this.#e.add(e),this.#A||this.#n(),()=>{this.#e.delete(e)}}async#n(){for(this.#A=!0;this.#A&&this.#x.opened;)try{let A=await this.#x.transferIn(this.#r.endpointNumber,this.#r.packetSize);if(A.data&&A.data.byteLength>0)for(let e of this.#e)e.cb(A.data.buffer)}catch{break}}stop(){this.#A=!1}},gn=class extends hn{constructor(A){super(A,sr.utoInterface)}},yn=class extends hn{constructor(A){super(A,sr.debugInterface)}};var Ud=9540,p8=new D8.WebUSB({allowedDevices:[{vendorId:Ud}]});async function Hd(){return(await p8.getDevices()).map(A=>({productName:A.productName,serialNumber:A.serialNumber||A.productName?.split(" ").pop(),vendorId:A.vendorId,productId:A.productId}))}async function b8(x){let A=await Hd();if(A.length===0){x.info("No USB devices found.");return}x.info("Available USB devices:"),A.forEach((e,r)=>{let t=e.productName||`Unknown Device (VID: 0x${e.vendorId.toString(16)}, PID: 0x${e.productId.toString(16)})`,i=e.serialNumber?` [${e.serialNumber}]`:"";x.log(` ${r+1}. ${t}${i}`)})}async function Cs(x,A){A.info(`Searching for device with serial number: ${x}`);let e=await p8.getDevices();for(let r of e)if((r.serialNumber||r.productName?.split(" ").pop())?.toLowerCase()===x.toLowerCase())return A.info(`Device found: ${r.productName}`),r;return null}function ds(x){return`Device not found with serial number: ${x}`}function Jd(x){return async(A,e=!0)=>{let r=await Cs(A,x);if(!r)throw new Error(ds(A));try{await r.open(),await r.selectConfiguration(sr.configurationNumber),await r.claimInterface(sr.utoInterface),e&&await r.claimInterface(sr.debugInterface)}catch(t){throw r.opened&&await r.close().catch(()=>{}),t}return{uto:new gn(r),debug:e?new yn(r):void 0,async close(){r.opened&&await r.close().catch(()=>{})}}}}async function kn(x,A={}){let e=A.logger??new ke.Logger,r=A.transportFactory??Jd(e),t=A.needDebug!==!1,i=await r(x,t),n=t?i.debug:void 0,F=n?new UF(n,e):void 0,v=new Qi(i.uto,e);return{utoMaster:v,atHandler:F,transports:i,serial:x,close:async()=>{try{await v.dispose(F)}catch{}F?.dispose(),await i.close()}}}async function Gr(x,A,e,r,t=!1){if(!await e.stat(A))return{success:!1,message:`File not found: ${A.fsPath}`};let n=await e.readFile(A),F;try{F=await kn(x,{logger:r,debug:t,needDebug:!1});let{utoMaster:v}=F;if(t){v.on("mdnCom",u=>{r.log("mdnCom",u)}),v.on("mdnComError",u=>{r.log("mdnComError",u)});let E=-1;v.on("installing",u=>{u&&u!==E&&(E=u,r.info(`Upload progress: ${u}%`))})}return await v.init(),await v.requestDeviceInfo(),r.info("Device connected, starting upload..."),await v.sendFile(Yi.pawn,new Uint8Array(n.buffer,n.byteOffset,n.length)),r.done("Upload completed successfully!"),{success:!0,message:"File uploaded successfully"}}catch(v){let E=v instanceof Error?v.message:String(v);return{success:!1,message:E===ds(x)?E:`Upload failed: ${E}`}}finally{await F?.close()}}async function m8(x,A,e=!1){let r,t;try{r=await kn(x,{logger:A,debug:e});let{atHandler:i,transports:n}=r;if(!i)throw new Error("The debug interface is required for a sync");t=new OF(n.uto,i,A),t.on("syncError",v=>A.error(`Sync error: ${v.message}`)),e&&(t.on("syncStart",({mode:v})=>A.log(`Sync mode: ${v}`)),t.on("syncPhase",({phase:v})=>A.log(`Sync phase: ${v}`)),t.on("syncComplete",v=>A.info(`Sync complete (mode: ${v.mode}, messages: ${v.serverMessageCount})`))),A.info("Syncing device...");let F=new AbortController;return await t.sync({serialNumber:x,signal:F.signal}),{success:!0,message:"Sync completed successfully"}}catch(i){let n=i instanceof Error?i.message:String(i);return{success:!1,message:n===ds(x)?n:`Sync failed: ${n}`}}finally{t?.dispose(),await r?.close()}}var j8=require("vscode-uri");var wn=class x{constructor(A,e,r,t,i){this.fs=r;this.persist=t;this.logger=i;this.storage=A,this.file=e}fs;persist;logger;storage;file;lastSerialized=null;static async create(A,e,r={}){let t=j8.Utils.joinPath(A,e0.filePaths.studio.dev.mirror),i=new Cn;if(r.persist&&await e.stat(t))try{let n=new TextDecoder().decode(await e.readFile(t));i=Cn.fromJSON(JSON.parse(n))}catch(n){r.logger?.warn(`Ignoring unreadable dev mirror snapshot: ${n instanceof Error?n.message:n}`),i=new Cn}return new x(i,t,e,r.persist===!0,r.logger)}async save(){if(!this.persist)return;let A=JSON.stringify(this.storage.toJSON());if(A!==this.lastSerialized)try{await this.fs.writeFile(this.file,A),this.lastSerialized=A}catch(e){this.logger?.warn(`Could not write dev mirror snapshot: ${e instanceof Error?e.message:e}`)}}};var y8=require("node:events"),Sn=require("node:fs/promises"),k8=require("node:path"),w8=ax(require("iconv-lite"));var zd=5e3,h8=500;function g8(x){let A=x.indexOf("\0");return(A>=0?x.slice(0,A):x).trim()}function Kd(x){if(x.length===0)return!1;let A=0,e=0;for(let r of x){e++;let t=r.codePointAt(0)??0;(t===9||t===10||t===13||t>=32&&t!==127)&&A++}return A/e>.8}var _n=class extends y8.EventEmitter{buffer=[];capacity;logFile;logger;seq=0;disposers=[];writeChain=Promise.resolve();logDirReady=void 0;constructor(A={}){super(),this.capacity=A.capacity??zd,this.logFile=A.logFile,this.logger=A.logger}push(A,e,r){let t={seq:++this.seq,ts:Date.now(),source:A,text:e};return r&&(t.raw=Buffer.from(r).toString("base64")),this.buffer.push(t),this.buffer.length>this.capacity&&this.buffer.splice(0,this.buffer.length-this.capacity),this.emit("record",t),this.appendToFile(t),t}appendToFile(A){let e=this.logFile;e&&(this.logDirReady??=(0,Sn.mkdir)((0,k8.dirname)(e),{recursive:!0}).then(()=>{}),this.writeChain=this.writeChain.then(async()=>{await this.logDirReady,await(0,Sn.appendFile)(e,`${JSON.stringify(A)}
2322
+ `,"utf8")}).catch(r=>{this.logger?.warn(`Could not append to log file: ${r instanceof Error?r.message:r}`)}))}since(A=0,e=h8){let r=e>0?e:h8;return this.buffer.filter(t=>t.seq>A).slice(-r)}get lastSeq(){return this.seq}attachUtoMaster(A){let e=r=>{if(r.wTagFull!==Se.LOG||!r.data)return;let t=new Uint8Array(r.data.buffer.slice(r.data.byteOffset,r.data.byteOffset+r.data.byteLength));this.pushDecoded("rm2mlog",t)};A.on("utoFrame",e),this.disposers.push(()=>A.off("utoFrame",e))}attachAtHandler(A){let e=r=>{let t=typeof r=="string"?r:String(r);for(let i of t.split(/\r?\n/)){let n=i.trim();n&&this.push("at",n)}};A.on("data",e),this.disposers.push(()=>A.off("data",e))}pushDecoded(A,e){let t=[g8(w8.default.decode(Buffer.from(e),"win1252")),g8(Buffer.from(e).toString("utf8"))].find(Kd);if(t){this.push(A,t);return}let i=Buffer.from(e.subarray(0,32)).toString("hex");this.push(A,`<${e.length} bytes> ${i}${e.length>32?"\u2026":""}`,e)}async dispose(){for(let A of this.disposers)A();this.disposers=[],this.removeAllListeners(),await this.writeChain}};var S8=require("node:events");var Vd=1e3,Wd=1e4,Xd=200,_8=new Set([Se.HISTDATA_RAW,Se.LOG,Se.ALERTS]),$n=class extends S8.EventEmitter{opts;tagMap=new Map;relevantTags=new Set;containerByTag=new Map;deviceStamps=new Map;seenStamps=new Map;timer;paused=!1;stopped=!1;inFlight=!1;backoffMs=0;lastTickAt=null;lastChangeAt=null;errorCount=0;constructor(A){super(),this.opts=A;for(let e of A.model.containers){let r=Mr(e);r!==null&&this.containerByTag.set(r,e)}}get utoMaster(){let A=this.opts.utoMaster();if(!A)throw new Error("Device not connected");return A}async refreshTagMap(){let A=await this.utoMaster.requestDeviceInfo();this.tagMap=new Map,this.relevantTags=new Set,this.seenStamps.clear(),this.deviceStamps.clear(),A&&A.utos.forEach((e,r)=>{this.tagMap.set(e.wTag,{index:r,sTag:e.sTag,historic:e.flags.historic}),(this.containerByTag.has(e.wTag)||_8.has(e.wTag))&&this.relevantTags.add(e.wTag)})}start(){this.opts.intervalMs<=0||(this.stopped=!1,this.schedule(this.opts.intervalMs))}stop(){this.stopped=!0,this.clearTimer()}clearTimer(){this.timer&&(clearTimeout(this.timer),this.timer=void 0)}pause(){this.paused=!0}resume(){this.paused=!1}status(){return{intervalMs:this.opts.intervalMs,lastTick:this.lastTickAt,lastChange:this.lastChangeAt,errors:this.errorCount,paused:this.paused}}deviceStamp(A){return this.deviceStamps.get(A)??null}knowsTag(A){return this.tagMap.has(A)}async refreshStamps(){try{let A=await this.utoMaster.requestStamps();if(!A)return;for(let[e,r]of this.tagMap)r.index<A.stamps.length&&this.deviceStamps.set(e,A.stamps[r.index])}catch(A){this.opts.logger?.warn(`Stamp refresh failed: ${A instanceof Error?A.message:String(A)}`)}}schedule(A){this.stopped||(this.clearTimer(),this.timer=setTimeout(()=>{this.tick().then(()=>this.schedule(this.backoffMs>0?this.backoffMs:this.opts.intervalMs)).catch(()=>this.schedule(this.backoffMs>0?this.backoffMs:this.opts.intervalMs))},A),this.timer.unref?.())}async tick(){if(this.stopped||this.paused||this.opts.session.busy||this.inFlight)return[];this.inFlight=!0;try{let A=await this.utoMaster.requestStamps();return this.lastTickAt=Date.now(),this.backoffMs=0,A?this.pullAdvancedTags(A.stamps):[]}catch(A){return this.errorCount++,this.backoffMs=Math.min(this.backoffMs>0?this.backoffMs*2:Vd,Wd),this.opts.logger?.warn(`Stamp poll failed: ${A instanceof Error?A.message:String(A)}`),this.emit("error",A instanceof Error?A:new Error(String(A))),[]}finally{this.inFlight=!1}}async pullAdvancedTags(A){let e=[];for(let r of this.relevantTags){let t=await this.pullIfAdvanced(r,A);t&&e.push(t)}if(e.length>0){this.lastChangeAt=Date.now();for(let r of e)this.emit("container-changed",r)}return e}async pullIfAdvanced(A,e){let r=this.tagMap.get(A);if(!r||r.index>=e.length)return null;let t=e[r.index],i=this.seenStamps.get(A);this.deviceStamps.set(A,t),this.seenStamps.set(A,t);let n=await this.mirrorStamp(A);return(i===void 0?t>n:t!==i)?this.pull(A,r,n,t):null}async pullTags(A){let e=[];for(let r of A){let t=this.tagMap.get(r)??{index:-1,sTag:`0x${r.toString(16)}`,historic:!1},i=await this.mirrorStamp(r),n=await this.pull(r,t,t.historic?i:0,this.deviceStamp(r)??0);n&&(e.push(r),this.emit("container-changed",n))}return e}async mirrorStamp(A){let e=await this.opts.storage.getLatestStampForTag(A);return e?xA(e):0}async pull(A,e,r,t){return e.historic||_8.has(A)?this.pullHistoric(A,r,t):this.pullSingle(A,t)}async pullSingle(A,e){let r=await this.utoMaster.requestUto(A,0);if(!r)return null;let t=await this.opts.storage.getRowForTag(A);return await this.opts.storage.replaceUtoRow({tag:A,stamp:Jx(r.stamp),flags:t?.flags??0,site_related:t?.site_related??0,data:r.data?Yd(r.data):null}),this.describeChange(A,r.stamp||e)}async pullHistoric(A,e,r){let t=await this.opts.storage.getRowForTag(A),i=0,n=e,F=async v=>{let E=v.filter(u=>u.stamp40>e).map(u=>(n=Math.max(n,u.stamp40),{tag:A,stamp:Jx(u.stamp40),flags:t?.flags??0,site_related:t?.site_related??0,data:u.data}));await this.opts.storage.insertHistoricRows(E),i+=E.length};return await this.utoMaster.requestHistoricUtos(A,e,void 0,void 0,Xd,F),i===0?null:this.describeChange(A,n||r)}async describeChange(A,e){let r=this.containerByTag.get(A);if(!r)return{tag:A,container:null,stamp:e};let t=null;try{t=await this.opts.mapper.readContainer(r.name)}catch{}return{tag:A,container:r.name,alias:r.alias,stamp:e,decoded:t}}};function Yd(x){return new Uint8Array(x.buffer.slice(x.byteOffset,x.byteOffset+x.byteLength))}var Z0=class extends Error{constructor(e,r){super(e);this.exitCode=r;this.name="DevError"}exitCode},Qd=2e3,Zd=3e3,xu=3e4,$8="dev",P8="local",Pn="Device not connected",Ds=class{tail=Promise.resolve();depth=0;get busy(){return this.depth>0}async run(A,e){this.depth++;let r=this.tail,t=()=>{};this.tail=new Promise(i=>{t=i});try{await Au(r,e)}catch(i){throw this.depth--,r.then(t,t),i}try{return await A()}finally{this.depth--,t()}}};function Au(x,A){return new Promise((e,r)=>{let t=setTimeout(()=>r(new Z0(`Device busy: waited ${A} ms for the UTO link`,3)),A);t.unref?.(),x.then(()=>{clearTimeout(t),e()})})}var $e=class extends T8.EventEmitter{logStream;opts;logger;timeSource;device;mirror;model;mapper;apiHandler;poller;stateManager;localData;offlineSync;buildState={running:!1,ok:null,at:null};lastSyncAt=null;firmwareVersion=null;mirrorSaveTimer;stopped=!1;lock=new Ds;constructor(A){super(),this.opts=A,this.logger=A.logger,this.timeSource=A.timeSource??Rr,this.logStream=new _n({logFile:A.logFile,logger:A.logger}),this.logStream.on("record",e=>this.emit("log",e))}get serial(){return this.opts.serial}get connected(){return this.device!==void 0}get busy(){return this.lock.busy}get ddeModel(){if(!this.model)throw new Z0("DDE model not loaded",7);return this.model}get storage(){if(!this.mirror)throw new Z0("Mirror not initialised",7);return this.mirror.storage}async start(){if(this.opts.build){let A=await this.build();if(A.ok===!1)throw new Z0(A.message??"Build failed",1)}if(await this.loadModel(),this.mirror=await wn.create(this.opts.cwd,this.opts.fs,{persist:this.opts.persistMirror,logger:this.logger}),this.mapper=new _F(this.ddeModel,this.storage,this.timeSource),await this.connect(),this.opts.flash){let A=await this.flash();if(!A.success)throw new Z0(A.message,3)}this.buildApiHandler(),await this.startPoller(),this.opts.persistMirror&&(this.mirrorSaveTimer=setInterval(()=>{this.mirror?.save()},5e3),this.mirrorSaveTimer.unref?.())}async loadModel(){let A=us.Utils.joinPath(this.opts.cwd,e0.filePaths.dist.ddeXmlPath);if(!await this.opts.fs.stat(A))throw new Z0(`No DDE model at ${e0.filePaths.dist.ddeXmlPath} \u2014 run \`studio build\` first`,7);let e=new TextDecoder().decode(await this.opts.fs.readFile(A));this.model=lF(e)}async connect(){try{this.device=this.opts.createDevice?await this.opts.createDevice(this.opts.serial):await kn(this.opts.serial,{transportFactory:this.opts.transportFactory,debug:this.opts.debug,logger:this.logger})}catch(r){let t=r instanceof Error?r.message:String(r);throw new Z0(`Could not open device ${this.opts.serial}: ${t}`,/not found/i.test(t)?2:3)}let{utoMaster:A,atHandler:e}=this.device;if(!e)throw new Z0(`Device ${this.opts.serial} was opened without its debug interface`,3);this.logStream.attachUtoMaster(A),this.logStream.attachAtHandler(e),A.on("utoFrame",r=>this.emit("uto",r));try{await A.init();let r=await A.requestDeviceInfo();this.firmwareVersion=r?.firmwareVersion??null}catch(r){throw new Z0(`UTO handshake failed: ${r instanceof Error?r.message:String(r)}`,3)}this.stateManager=new VF(e,this.logger),this.stateManager.on("state",r=>this.emit("state",r)),this.localData=new zF(e,this.logger),this.offlineSync=new $F(A,this.storage,this.logger)}async startPoller(){this.poller=new $n({session:this,utoMaster:()=>this.device?.utoMaster,storage:this.storage,model:this.ddeModel,mapper:this.mapper,intervalMs:this.opts.pollIntervalMs??Qd,logger:this.logger}),this.poller.on("container-changed",A=>{this.emit("container-changed",A),this.logStream.push("uto",`${A.alias??A.container??this.tagLabel(A.tag)} changed`)}),this.poller.on("error",A=>this.emit("error",A)),await this.poller.refreshTagMap(),this.poller.start()}tagLabel(A){return`0x${A.toString(16)}`}get utoMaster(){if(!this.device)throw new Z0(Pn,3);return this.device.utoMaster}get atHandler(){if(!this.device?.atHandler)throw new Z0(Pn,3);return this.device.atHandler}buildApiHandler(){let A={container:async(r,t,i)=>{await this.withLink(()=>this.utoMaster.sendUTOCmdExt(Xi.DATA,r,t,i))},adHocChangeRequest:async(r,t)=>this.withLink(()=>this.offlineSync.executeAdHocChangeRequest(r,t)),backfill:async()=>(await this.sync(),"ready")},e={siteUid:$8,deviceId:this.opts.serial,model:this.ddeModel,mapper:this.mapper,storage:this.storage,siteInfo:u8(this.ddeModel,{siteUid:$8,deviceId:this.opts.serial,name:`dev-${this.opts.serial}`,apmId:P8}),me:{name:"studio-dev",roles:["developer"]},push:A,logger:this.logger,timeSource:this.timeSource,allowAnySiteUid:!0};this.apiHandler=C8(e)}async handleApi(A){if(!this.apiHandler)throw new Z0("Session not started",7);let e=this.writtenTag(A),r=await this.apiHandler(A);if(e===null||r.status>=400)return r;let t=await this.mirrorStamp(e);return await this.awaitDeviceStamp(e,t)||(r.headers={...r.headers,"x-mt-mirror":"stale"}),r}writtenTag(A){let e=A.method.toUpperCase();if(e!=="PUT"&&e!=="POST")return null;let[r,t=""]=A.path.split("?");if(/(^|&)async=1(&|$)/.test(t))return null;let i=/\/sites\/[^/]+\/(?:containers\/)?([^/?]+)$/.exec(r);if(!i)return null;let n=xs(this.ddeModel,decodeURIComponent(i[1]));return n===null||!As(n)||this.poller?.knowsTag(n)===!1?null:n}async awaitDeviceStamp(A,e){let r=this.opts.waitMs??Zd,t=this.poller;if(r<=0||!t)return!0;let i=Date.now()+r;for(;;){let F=await this.withLink(()=>t.refreshStamps()).then(()=>!0,()=>!1)?t.deviceStamp(A):null;if(F!==null&&F>=e)return await this.withLink(()=>t.pullTags([A])).catch(()=>{}),!0;if(Date.now()>=i)return!1;await eu(100)}}async build(){this.buildState={running:!0,ok:null,at:null},this.emit("build",this.buildState);try{await z.validateBasicManifest(this.opts.cwd,this.opts.fs,null);let A=await bx.buildAll(this.opts.cwd,this.opts.fs,this.logger,this.opts.env??Fx.ENV.production,this.opts.apiToken??null,this.opts.part??!0,!0);this.buildState={running:!1,ok:!0,at:Date.now(),diagnostics:A}}catch(A){this.buildState={running:!1,ok:!1,at:Date.now(),message:A instanceof Error?A.message:String(A),diagnostics:A instanceof bx.BuildError?A.mergedDiagnostics:void 0}}return this.emit("build",this.buildState),this.buildState}async flash(A){let e=us.Utils.joinPath(this.opts.cwd,A??e0.filePaths.dist.mainAmxPath);this.poller?.pause();try{return await this.withLink(async()=>{await this.closeDevice();try{return await(this.opts.uploadToDevice??Gr)(this.opts.serial,e,this.opts.fs,this.logger,this.opts.debug)}finally{await this.reconnect()}})}finally{this.connected&&await this.poller?.refreshTagMap().catch(()=>{}),this.poller?.resume()}}async reconnect(){try{await this.connect()}catch(A){let e=A instanceof Error?A.message:String(A);this.logger.error(`Could not reopen device ${this.opts.serial} after the flash: ${e}`),this.emit("error",A instanceof Error?A:new Error(e))}}async sync(A){let e=await this.withLink(async()=>{this.poller?.pause();try{return A&&A.length>0?await this.poller.pullTags(A):(await this.offlineSync.sync()).tags.filter(i=>i.outcome==="upload").map(i=>i.tag)}finally{this.poller?.resume()}});this.lastSyncAt=Date.now();let r={tags:e,at:this.lastSyncAt};return this.emit("sync",r),r}async at(A){return this.withLink(async()=>(this.logStream.push("at",`> ${A}`),this.atHandler.sendRaw(A)))}async state(){let A=this.stateManager;if(!A)throw new Z0(Pn,3);return A.getLastState()??await A.fetchState()}localDataSnapshot(){return this.localData?.getSnapshot()??null}async measure(){return this.withLink(async()=>{let A=this.localData;if(!A)throw new Z0(Pn,3);return A.triggerMeasurement()})}status(){return{serial:this.opts.serial,connected:this.connected,apmId:P8,firmwareVersion:this.firmwareVersion,model:{containers:(this.model?.containers??[]).map(A=>({name:A.name,alias:A.alias,kind:A.kind,tag:xs(this.ddeModel,A.name)}))},lastSync:this.lastSyncAt,buildState:this.buildState,poll:this.poller?.status()??{intervalMs:0,lastTick:null,lastChange:null,errors:0,paused:!0}}}async tick(){return this.poller?this.poller.tick():[]}async mirrorStamp(A){let e=await this.storage.getLatestStampForTag(A);return e?xA(e):0}async withLink(A){return this.lock.run(A,this.opts.lockWaitMs??xu)}async closeDevice(){let A=this.device;this.device=void 0,this.stateManager?.dispose(),this.stateManager=void 0,await this.localData?.stopPolling(),this.localData?.dispose(),this.localData=void 0,this.offlineSync=void 0,await A?.close()}async stop(){this.stopped||(this.stopped=!0,this.mirrorSaveTimer&&clearInterval(this.mirrorSaveTimer),this.poller?.stop(),await this.mirror?.save(),await this.logStream.dispose(),await this.closeDevice(),this.removeAllListeners())}};function eu(x){return new Promise(A=>setTimeout(A,x))}var L8=ax(require("node:http")),O8=require("vscode-uri"),R8=ax(require("yaml"));var G8=["log","state","sync","build","uto","container-changed","error"],ru=15e3,q8=4*1024*1024,tu="127.0.0.1",nu=8765,U8="no-store",H8="E_NOT_FOUND",N8="E_BAD_REQUEST",iu=2e3,su=20;function ar(x,A){return JSON.stringify({err:`${x} ${A}`})}function Fe(x,A,e,r={}){x.writeHead(A,{"content-type":"application/json","cache-control":U8,...r}),x.end(e)}function au(x){let A=x.replace(/^\[|\]$/g,"").toLowerCase();return A==="localhost"||A==="::1"||A===""||/^127\./.test(A)}function ou(x,A){if(!(au(A)||x.token)){if(!x.allowRemote)throw new Error(`Refusing to bind to ${A} without --bearer: the device API would be reachable from the network. Pass --bearer <token>, or --allow-remote to bind unauthenticated anyway.`);x.logger.warn(`Serving the unauthenticated device API on ${A} \u2014 anyone who can reach this port can write to and flash the device.`)}}function Fu(x){try{let{hostname:A}=new URL(x);return A==="localhost"||A==="127.0.0.1"||A==="[::1]"||A==="::1"}catch{return!1}}function vu(x,A){let e=x.headers.origin;typeof e=="string"&&Fu(e)&&(A.setHeader("access-control-allow-origin",e),A.setHeader("access-control-allow-credentials","true"),A.setHeader("vary","origin")),A.setHeader("access-control-allow-methods","GET,POST,PUT,DELETE,OPTIONS"),A.setHeader("access-control-allow-headers","authorization,content-type"),A.setHeader("access-control-expose-headers","x-mt-mirror, x-mt-backfill"),A.setHeader("access-control-max-age","600")}function fu(x,A,e){if(!A)return!0;let r=x.headers.authorization,t=typeof r=="string"?r.replace(/^Bearer\s+/i,"").trim():(e??"").trim();if(t==="")return!1;let i=process.env.MYDATANET_TOKEN;return t===A||i!==void 0&&i!==""&&t===i}var Pe=class extends Error{constructor(e,r,t){super(t);this.status=e;this.code=r}status;code};async function J8(x){let A=[],e=0;for await(let r of x){let t=r;if(e+=t.length,e>q8)throw x.pause(),new Pe(413,"E_TOO_LARGE",`request body exceeds ${q8} bytes`);A.push(t)}return Buffer.concat(A).toString("utf8")}function z8(x){return x!=="GET"&&x!=="HEAD"}function lu(x){if(!x.trim())return{};let A;try{A=JSON.parse(x)}catch{throw new Pe(400,N8,"malformed JSON body")}if(typeof A!="object"||A===null)throw new Pe(400,N8,"JSON body must be an object");return A}function I8(x,A){let e=x[A];return typeof e=="string"&&e.length>0?e:void 0}function cu(x,A){let e=x[A];if(!Array.isArray(e))return;let r=e.map(Number).filter(t=>Number.isFinite(t));return r.length>0?r:void 0}function M8(x,A,e){let r=Number.parseInt(x.get(A)??"",10);return Number.isFinite(r)?r:e}var ps=class{clients=new Set;heartbeat;constructor(){this.heartbeat=setInterval(()=>this.writeAll(`: ping
2323
+
2324
+ `),ru),this.heartbeat.unref?.()}broadcast(A,e){let r=`event: ${A}
2325
+ data: ${JSON.stringify(e)}
2326
+
2327
+ `;for(let t of this.clients)(!t.types||t.types.has(A))&&this.write(t,r)}writeAll(A){for(let e of this.clients)this.write(e,A)}write(A,e){if(A.res.writableEnded||A.res.destroyed){this.clients.delete(A);return}try{if(A.res.write(e)){A.stalled=0;return}}catch{this.clients.delete(A);return}A.stalled++,A.stalled>=su&&(this.clients.delete(A),A.res.destroy())}subscribe(A,e,r){let t=new URLSearchParams(r).get("types"),i=t?new Set(t.split(",").map(F=>F.trim()).filter(F=>G8.includes(F))):null;e.writeHead(200,{"content-type":"text/event-stream","cache-control":U8,connection:"keep-alive"}),e.write(`: connected
2328
+
2329
+ `);let n={res:e,types:i,stalled:0};this.clients.add(n),A.on("close",()=>this.clients.delete(n)),e.on("close",()=>this.clients.delete(n)),e.on("error",()=>this.clients.delete(n))}close(){clearInterval(this.heartbeat);for(let A of this.clients)!A.res.writableEnded&&!A.res.destroyed&&A.res.end();this.clients.clear()}};async function Eu(x,A,e,r){let t=A.method??"GET",i={path:r,method:t,headers:Object.fromEntries(Object.entries(A.headers).map(([F,v])=>[F,Array.isArray(v)?v.join(","):v??""])),body:z8(t)?await J8(A):null},n=await x.handleApi(i);Fe(e,n.status,n.body,n.headers)}async function Bu(x,A,e,r){let{session:t}=x;switch(A){case"GET /dev/status":return t.status();case"POST /dev/build":return t.build();case"POST /dev/flash":return t.flash(I8(r,"file"));case"POST /dev/sync":return t.sync(cu(r,"tags"));case"GET /dev/logs":return{lastSeq:t.logStream.lastSeq,records:t.logStream.since(M8(e,"since",0),M8(e,"limit",500))};case"POST /dev/at":return Cu(t,I8(r,"cmd"));case"GET /dev/state":return t.state();case"GET /dev/localdata":return t.localDataSnapshot();case"POST /dev/localdata/measure":return t.measure();case"GET /dev/openapi.json":return bu(x);default:return}}async function Cu(x,A){if(!A)throw new Pe(400,"E_BAD_REQUEST","attribute 'cmd' is not valid");return{cmd:A,response:await x.at(A)}}async function du(x,A,e,r){let[t,i=""]=r.split("?"),n=A.method??"GET",F=z8(n)?await J8(A):"";try{let v=await Bu(x,`${n} ${t}`,new URLSearchParams(i),lu(F));if(v===void 0){Fe(e,404,ar(H8,`no route for ${n} ${t}`));return}Fe(e,200,JSON.stringify(v))}catch(v){if(v instanceof Pe){Fe(e,v.status,ar(v.code,v.message));return}Fe(e,500,ar("E_DEV",v instanceof Error?v.message:String(v)))}}async function uu(x,A,e,r){if(vu(e,r),e.method==="OPTIONS"){r.writeHead(204),r.end();return}let t=e.url??"/",i=t.split("?")[1]??"",n=t==="/events"||t.startsWith("/events?"),F=n?new URLSearchParams(i).get("token")??void 0:void 0;if(!fu(e,x.token,F)){Fe(r,401,ar("E_UNAUTHORIZED","invalid or missing bearer token"));return}try{t.startsWith("/api/")?await Eu(x.session,e,r,t):n?A.subscribe(e,r,i):t.startsWith("/dev/")?await du(x,e,r,t):Fe(r,404,ar(H8,`no route for ${t}`))}catch(v){if(v instanceof Pe&&!r.headersSent){Fe(r,v.status,ar(v.code,v.message),{connection:"close"});return}throw v}}async function K8(x){let{session:A,logger:e}=x,r=x.host??tu;ou(x,r);let t=new ps;for(let F of G8)A.on(F,v=>t.broadcast(F,v));let i=L8.default.createServer((F,v)=>{uu(x,t,F,v).catch(E=>{let u=E instanceof Error?E.message:String(E);e.error(`Dev server error: ${u}`),v.headersSent||Fe(v,500,ar("E_INTERNAL",u))})});try{await new Promise((F,v)=>{i.once("error",v),i.listen(x.port??nu,r,()=>{i.off("error",v),F()})})}catch(F){throw t.close(),F}i.on("error",F=>e.error(`Dev server socket error: ${F.message}`));let n=i.address().port;return{url:`http://${r}:${n}`,port:n,async close(){t.close(),i.closeIdleConnections(),i.closeAllConnections(),await Promise.race([new Promise(F=>i.close(()=>F())),Du(iu)])}}}function Du(x){return new Promise(A=>{setTimeout(A,x).unref?.()})}var pu={"/dev/status":{get:{summary:"Session, model and poll status"}},"/dev/build":{post:{summary:"Build the project, returns diagnostics"}},"/dev/flash":{post:{summary:"Upload an AMX to the device"}},"/dev/sync":{post:{summary:"Pull selected/all tags into the mirror"}},"/dev/logs":{get:{summary:"Device log ring buffer (?since, ?limit)"}},"/dev/at":{post:{summary:"Run one AT command"}},"/dev/state":{get:{summary:"Last rm2m state"}},"/dev/localdata":{get:{summary:"Live local-data values"}},"/dev/localdata/measure":{post:{summary:"Trigger a measurement"}},"/dev/openapi.json":{get:{summary:"This document"}},"/events":{get:{summary:"SSE event stream (?types= filters)"}}};async function bu(x){let A={openapi:"3.0.0",info:{title:"studio dev",version:"1"},paths:{}},e=O8.Utils.joinPath(x.cwd,e0.filePaths.dist.ddeApi);if(await x.fs.stat(e))try{let r=new TextDecoder().decode(await x.fs.readFile(e)),t=R8.default.parse(r);typeof t=="object"&&t!==null&&Object.assign(A,t)}catch(r){let t=r instanceof Error?r.message:String(r);x.logger.warn(`Could not parse ${e0.filePaths.dist.ddeApi}: ${t}`)}return A.paths={...A.paths,...pu},A}var gt=require("node:fs"),V8=require("node:path"),W8=require("vscode-uri");var mu=300,ju=new Set([e0.fileNames.projectSettings,e0.filePaths.appIni]);function bs(x){return x instanceof Error?x.message:String(x)}function hu(x){let A=x?.code;return A==="ENOENT"||A==="ENOTDIR"}function gu(x){let A=[],e=r=>{A.push(r);for(let t of(0,gt.readdirSync)(r,{withFileTypes:!0}))t.isDirectory()&&e((0,V8.join)(r,t.name))};try{e(x)}catch{}return A}function X8(x){let{cwd:A,session:e,logger:r}=x,t=x.debounceMs??mu,i=[],n,F=!1,v=!1,E=async()=>{if(F){v=!0;return}F=!0;try{let w=await e.build();if(w.ok!==!0){r.error(`Rebuild failed: ${w.message??"see diagnostics"}`);return}if(x.flash!==!1){let g=await e.flash();if(!g.success){r.error(g.message);return}}await e.sync()}catch(w){r.error(`Watch cycle failed: ${w instanceof Error?w.message:String(w)}`)}finally{F=!1,v&&(v=!1,u())}};function u(){n&&clearTimeout(n),n=setTimeout(()=>{E()},t),n.unref?.()}let p=w=>(g,S)=>{let T=typeof S=="string"?S.replace(/\\/g,"/"):null;(!w||T!==null&&w(T))&&u()},j=(w,g,S)=>{let T=W8.Utils.joinPath(A,w);try{i.push((0,gt.watch)(T.fsPath,{recursive:g},p(S)))}catch(q){if(hu(q))return;if(g){r.warn(`Recursive file watching is not available on this platform (${bs(q)}) \u2014 watching every directory under ${w} individually.`);for(let L of gu(T.fsPath))try{i.push((0,gt.watch)(L,{recursive:!1},p(S)))}catch(R){r.warn(`Could not watch ${L}: ${bs(R)}`)}return}r.warn(`Could not watch ${w}: ${bs(q)}`)}};return j(e0.filePaths.dlo.path,!0),j(e0.filePaths.dde.path,!0),j(".",!1,w=>ju.has(w)),{close(){n&&clearTimeout(n);for(let w of i)w.close()}}}var yu="details";async function hs(x,A,e){let r=e.logger??new ke.Logger,t=new $e({cwd:x,fs:A,serial:e.serial,transportFactory:e.transportFactory,createDevice:e.createDevice,pollIntervalMs:e.pollIntervalMs,flash:e.flash!==!1,build:e.build!==!1,part:e.part,logger:r,env:e.env,apiToken:e.apiToken,waitMs:e.waitMs,logFile:e.logFile,persistMirror:e.persistMirror!==!1,debug:e.debug});t.on("error",E=>r.warn(E instanceof Error?E.message:String(E)));try{await t.start()}catch(E){throw await t.stop(),E}let i,n,F;try{i=await K8({session:t,cwd:x,fs:A,logger:r,host:e.host,port:e.port,token:e.token,allowRemote:e.allowRemote}),e.watch&&(n=X8({cwd:x,session:t,logger:r,flash:e.flash!==!1})),e.pov&&(F=ku(x,t,i.url,e.pov,r))}catch(E){throw await i?.close(),await t.stop(),E}let v=i;return{url:v.url,port:v.port,session:t,apmId:t.status().apmId,async close(){n?.close(),wu(F,r),await v.close(),await t.stop()}}}function ku(x,A,e,r,t){let n=`pov/${typeof r=="string"&&r.length>0?r:yu}`,F=(0,js.spawn)("npm",["run","dev","-w",n],{cwd:x.fsPath,env:{...process.env,MYDATANET_HOST:e},shell:process.platform==="win32",detached:process.platform!=="win32",stdio:["ignore","pipe","pipe"]}),v=E=>{for(let u of E.toString("utf8").split(/\r?\n/)){let p=u.trim();p&&A.logStream.push("pov",p)}};return F.stdout?.on("data",v),F.stderr?.on("data",v),F.on("error",E=>t.error(`POV dev server failed: ${E.message}`)),t.info(`POV dev server: npm run dev -w ${n} (MYDATANET_HOST=${e})`),F}function wu(x,A){if(!(!x||x.exitCode!==null||x.signalCode!==null||x.pid===void 0))try{if(process.platform==="win32"){(0,js.spawn)("taskkill",["/PID",String(x.pid),"/T","/F"],{stdio:"ignore",windowsHide:!0});return}process.kill(-x.pid,"SIGTERM")}catch(e){A.debug(`Could not stop the POV dev server: ${e instanceof Error?e.message:String(e)}`),x.kill()}}var Y8=require("uuid"),_u="b4baec47-0ba4-4e37-b237-8f9cde42b8dd";var yt=class{domain;auth;logger;userInfo=null;constructor(A,e,r){if(typeof A=="object"){let{serverUrl:t,apiToken:i,authHeader:n,logger:F}=A;this.domain=this.normalizeServerUrl(t),this.auth=n||(i?`Bearer ${i}`:""),this.logger=F}else this.domain=this.normalizeServerUrl(A),typeof e=="string"?(this.auth=`Bearer ${e}`,this.logger=r):(this.auth="",this.logger=e)}setAuth(A){this.auth=A}getDomain(){return this.domain}normalizeServerUrl(A){return!A.startsWith("http://")&&!A.startsWith("https://")?`https://${A}`:A}trimDomain(A){return A.replace(/(^\w+:|^)\/\//,"")}async fetchJSON(A,e,r){let t=`${this.domain}${e}`,i={Authorization:this.auth},n={method:A,headers:i};r&&(r instanceof FormData?n.body=r:(i["Content-Type"]="application/json",n.body=JSON.stringify(r)));let F=await fetch(t,n);if(!F.ok){let v=await F.text().catch(()=>"Unknown error");throw new Error(`HTTP ${F.status}: ${v}`)}return F.json()}async authenticate(){this.logger?.info(`Authenticating with ${this.trimDomain(this.domain)}...`);try{let{user:A,customers:e}=await this.fetchJSON("GET","/api/1/me");return this.userInfo={name:A.name,email:A.email,group:A.group,customers:e},this.logger?.info(`Authenticated as ${this.userInfo.name}`),this.userInfo}catch(A){throw new Error(`Authentication failed: ${A instanceof Error?A.message:String(A)}`)}}getUserInfo(){return this.userInfo}async uploadDevTag(A,e){this.logger?.info(`Uploading development tag ${A}...`);let{applid:r}=await this.fetchJSON("POST",`/api/1/app-center/__dev/${A}`,e);return this.logger?.info(`Development tag uploaded, application ID: ${r}`),r}async getCustomer(A){let{_uid:e,name:r}=await this.fetchJSON("GET",`/api/1/customers/${A}`);return{_uid:e,name:r}}async getCustomers(){return this.fetchJSON("GET","/api/1/customers")}async getDeviceSite(A){try{return await this.fetchJSON("GET",`/api/1/devices/${A}/site`)}catch{return null}}async getDevice(A){try{return await this.fetchJSON("GET",`/api/1/devices/${A}`)}catch{return null}}async getSite(A,e){try{return await this.fetchJSON("GET",`/api/1/customers/${A}/sites/${e}`)}catch{return null}}async createDevelopmentSite(A,e,r){if(this.logger?.info(`Creating development site "${e.name}"...`),e.serialNumber){let i=await this.getSite(A,e.name.toLowerCase());if(i)try{return await this.fetchJSON("POST",`/api/1/customers/${A}/sites/${i._uid}/cn-attach-device`,{device_id:e.serialNumber,allow_overwrite:!0,detach_from_old_site:!0,acquire:!0,create:!0}),this.logger?.info(`Device attached to existing site ${i._uid}`),i._uid}catch(n){if(n.message&&!n.message.includes("304"))this.logger?.warn(`Could not attach device to existing site: ${n.message}`);else return i._uid}}let{_uid:t}=await this.fetchJSON("POST",`/api/1/customers/${A}/sites`,{name:e.name,create:!0,force:!0,note:"This is a Studio development site",applid:e.applicationId,device_id:e.serialNumber,reg_code:r,servicetariff:"0000000000000000",servicetariff_indiv_cost:0});return this.logger?.info(`Development site created: ${t}`),t}async updateSiteName(A,e){try{await this.fetchJSON("PUT",`/api/1/sites/${A}`,{name:e})}catch{}}};function Q8(x){return(0,Y8.v5)(x,_u)}async function gs(x,A,e,r,t,i,n){let F=await z.read(x,A),v=t.replaceAll(" ","_").replace(/[^a-zA-Z0-9-]+/g,""),E=F.name.replaceAll(" ","_").replace(/[^a-zA-Z0-9-]+/g,""),u=await z.isApmPartEnabled(x,A,p0.Part.dlo,F),p=u&&r,j=p?r.toUpperCase():`${E}_${v}`,w=p?r:j,g=n||j;return g.length>50&&(e.warn(`Site name "${g}" is too long. Truncating to 50 characters.`),g=g.substring(0,50)),{apmId:Q8(w),applicationId:null,name:g,version:1,serialNumber:u?r:void 0,siteUid:null,customerUid:i}}async function Z8(x,A,e,r,t,i,n=!1){if(i.length>0)for(let F of i){let[v,E]=F.split("@");await Ax.installDependency(x,A,e,r,t,v,E||null,n)}else await Ax.installDependencies(x,A,e,r,t);await Ax.installNpmInApmParts(x,A,e)}async function xv(x,A,e,r,t=null,i=!0,n){return await z.validateBasicManifest(x,A,null),bx.buildAll(x,A,e,r,t,i,n)}async function Su(x){let A=null;if(x){A=x==="*"?x:x.split(";");let e=await z.validateRegistryAllowedBackends(A);if(e)throw new Error(e)}return A}async function Av(x,A,e,r,t,i,n,F){e.info("Publishing package...");let v=await Su(i);if(F)await bx.publishArchive(x,A,e,t,r,F,n,v);else return await bx.validatePublishSettings(x,A,t,r),bx.release(x,A,e,r,t,n,v)}async function ev(x,A,e,r,t,i){return bx.pack(x,A,e,r,t,i)}var qe=G0.DDEContainerName,rv=G0.allowedRelationTypes,$u=G0.regexRelation,Pu=G0.ContainerType,Tu=G0.checkForReservedFieldName,Tn=G0.ContainerName,tv=G0.CONTAINER_DEFS,qu=G0.SERVER_CONTAINER,Nu=G0.HISTDATA_CONTAINER,Iu=G0.CONFIG_CONTAINER,Ur=G0.TransferDirection,nv=G0.fieldTypeDefinitions,lA=h0.yamlRangeToLineInformation,qn;(A=>{class x{constructor(r,t,i){this.manifest=r;this.libraryFiles=t;this.ddeHistory=i}manifest;libraryFiles;ddeHistory;fieldNamesPerContainer={};usedContainerNames={};fileDiagnostics=[];libraryDDE=[];libraryYaml={};parseLibraries(){this.libraryDDE.length=0;let r=[];return this.libraryFiles.forEach(t=>{let{parsedDDE:i,diagnostics:n,parsedYaml:F}=this.parseYamlFile(t.path,t.yaml,t.libraryName);r.push(...n),this.libraryDDE.push(i),this.libraryYaml[t.libraryName]=F}),r}get previousVersion(){return{setPointList:{...this.ddeHistory?.setPointList},containers:{...this.ddeHistory?.containers}}}getContainerOfPreviousVersion(r){let t=this.previousVersion,i=r.startsWith("timeseries_")?r.substring(11):r;return Object.values(t.containers).find(n=>n.title===i)||null}parseMainDDE(r,t){let{parsedDDE:i,diagnostics:n}=this.parseYamlFile(r,t);return n.find(E=>E.level==="error")?{ddeJSON:null,diagnostics:n}:{ddeJSON:this.mergeAndFormat(i),diagnostics:n}}parseYamlFile(r,t,i){this.fileDiagnostics.length=0;let n=new Te.LineCounter,F=(0,Te.parseDocument)(t,{lineCounter:n});if(!F.contents)return{parsedDDE:{containers:{},setPointList:{}},diagnostics:[],parsedYaml:null};let v=F.contents||new Te.YAMLMap;return this.validateContainerDefinition(v.items).forEach(u=>{this.validateAllowedContainer(r,u,n,i),this.validateContainerFields(F,r,u,n)}),{parsedDDE:this.yamlDocToDdeJson(F.toJS({mapAsMap:!0}),i),diagnostics:[...this.fileDiagnostics],parsedYaml:F}}yamlDocToDdeJson(r,t){let i={containers:{},setPointList:{}},n=new Map,F=[...Object.values(qe)];if(r.get("cloudProject")){let E=Object.values(this.previousVersion.containers).map(p=>p.title),u=[...new Set([...F,...E])];F.length=0,F.push(...u)}for(let E of F)r.has(E)&&n.set(E,r.get(E));let v=r.get("timeseries");if(v)for(let[E,u]of v)n.set(E,u);for(let[E,u]of n){let{realContainer:p,transferDirection:j,legacyTitle:w}=this.getRealContainerInformation(E);if(!p)continue;let g=tv[p],S=E.includes("timeseries_")?E.replace("timeseries_",""):E,T={name:p,title:S,previousTitle:w,containerType:g.ctype,volatile:E===qe.volatile,transferDirection:j,fieldCount:u.size,knownNames:[],libraries:[],arrays:{},shadows:{},fields:[],size:0,fieldIndex:0};t&&T.libraries.push(t);for(let[q,L]of u){let R=[],n0=L.get("type"),M=nv[n0];if(!(!M&&n0!=="array")){if(n0==="array"){let y=[],O=L.get("length"),Y=L.get("fields"),W={name:q,length:O,library:t||null,fields:[]};T.arrays[q]=W;for(let H=0;H<O;H++){let J={name:q,index:H};for(let[s0,r0]of Y){let Z=nv[r0.get("type")];if(!Z)continue;W.fields?.find(f0=>f0.name===s0)||W.fields.push({name:s0,type:r0.get("type"),byteSize:Z.len||r0.get("bytes")||r0.get("length")});let i0=`${q}[${H}].${s0}`,{fields:U,shadowInfo:v0}=this.createDDEJsonFields(i0,t,Z,r0);U.forEach(f0=>{f0.arrayRef=J}),v0&&(T.shadows[v0.name]=v0),y.push(...U)}}R.push(...y)}else{let{arrayInfo:y,fields:O,shadowInfo:Y}=this.createDDEJsonFields(q,t,M,L);y&&(T.arrays[y.name]=y),Y&&(T.shadows[Y.name]=Y),R.push(...O)}R.forEach(y=>{y.index=++T.fieldIndex,T.fields.push(y),T.size+=y.byteSize})}}i.containers[p]=T}return i}getRealContainerInformation(r){let t,i,n;if(this.previousVersion){let F=r.startsWith("timeseries_")?r.substring(11):r,{name:v,direction:E,previousTitle:u}=this.findPreviousUsedContainer(F);t=v,i=E,n=u}if(!t){let F=Object.entries(this.usedContainerNames).find(([,v])=>v===r);F&&(t=F[0])}return t||(t=this.findNextFreeContainer(r)),this.usedContainerNames[t]=r,i||(i=[qe.setting,qe.command].includes(r)?Ur.down:Ur.up),i===Ur.up&&t&&tv[t].xmits.includes(Ur.upPlus)&&(i=Ur.upPlus),t&&[Tn.configA,Tn.configB].includes(t)&&(i=Ur.backendOnly),{realContainer:t,transferDirection:i,legacyTitle:n}}findNextFreeContainer(r){if(r===Tn.aloha)return Tn.aloha;let t=Iu;r.startsWith("timeseries_")?t=Nu:[qe.relations,qe.storage].includes(r)&&(t=qu);let i=this.previousVersion?.containers;return i&&(t=t.filter(n=>!Object.hasOwn(i,n))),t.find(n=>!Object.hasOwn(this.usedContainerNames,n))}findPreviousUsedContainer(r){let t=this.previousVersion.containers,i=Object.values(t).find(n=>n.title===r);return{name:i?.name,direction:i?.transferDirection,previousTitle:i?.previousTitle}}createDDEJsonFields(r,t,i,n){let F=n.get("array"),v=[],E,u;if(F){E={name:r,library:t||null,length:F};for(let p=0;p<F;p++){let j=`${r.toLowerCase()}[${p}]`;v.push(this.buildDDEJsonField(j,n,{name:r,index:p},i,t,null))}}else{let p=this.buildDDEJsonField(r,n,null,i,t,null);v.push(p);let j=n.get("shadowFields");if(j){u={name:p.name,byteSize:p.byteSize,byteOffset:p.byteOffset};for(let[w,g]of j){let S=w;r.includes(".")&&(S=r.split(".")[0]+`.${w}`),v.push(this.buildDDEJsonField(S,g,null,i,t,p.name))}}}return{arrayInfo:E,shadowInfo:u,fields:v}}buildDDEJsonField(r,t,i,n,F,v){return{id:r.toLowerCase(),name:r,index:0,library:F||null,byteOffset:0,byteSize:n.len||t.get("bytes")||t.get("length"),type:t.get("type"),title:t.get("title")||null,arrayRef:i,shadowRef:v,unit:t.get("unit"),hex:t.get("hex"),decimalPlaces:t.get("decimalPlaces"),writePermission:this.parseUserLevel(t.get("writePermission")),readPermission:this.parseUserLevel(t.get("readPermission")),channelMode:this.parseChannelMode(t.get("channelMode")),defaultValue:t.get("defaultValue"),scale:t.get("scale"),offset:t.get("offset"),chartMinimum:t.get("chartMinimum"),description:t.get("description"),chartMaximum:t.get("chartMaximum"),chartAlarmLow:t.get("chartAlarmLow"),chartAlarmHigh:t.get("chartAlarmHigh"),chartWarningLow:t.get("chartWarningLow"),chartWarningHigh:t.get("chartWarningHigh"),chartHysteresis:t.get("chartHysteresis"),chartTriggerThreshold:t.get("chartTriggerThreshold"),chartTriggerRelation:this.parseTriggerUndershoot(t.get("chartTriggerRelation")),chartSetPoint:t.get("chartSetPoint"),utilsTransferInterval:!!t.get("utilsTransferInterval"),bitmask:t.get("bitmask")}}resolvePossibleAlias(r,t){return(0,Te.isAlias)(t)?t.resolve(r).value:t?.value}validateContainerDefinition(r){let t=[];return r.forEach(i=>{let F=i.key.value;F==="timeseries"?i.value.items.forEach(v=>{v.key.value=`timeseries_${v.key}`,t.push(v)}):["dde","cloudProject","constants"].includes(F)||t.push(i)}),t}parseUserLevel(r){if(r==="read-only")return 99;if(r?.startsWith("UL"))return Number(r.substring(2))}parseChannelMode(r){if(r)return{digital:1,"day-counter":2,"interval-counter":3,analog:6,"infinite-counter":12}[r]??r}parseTriggerUndershoot(r){if(r)return{"greater-or-equal":0,"less-or-equal":1}[r]??r}validateAllowedContainer(r,t,i,n){if(!t.value)return;let v=t.key.value;if(n&&(v.startsWith("aloha")||v.startsWith("timeseries"))){let E=v.includes("_")?v.split("_")[1]:v;this.fileDiagnostics.push({file:r,level:"error",message:`"${E}" not allowed within a library`,...lA(i,t.key.range)})}if(z.isAnalytics(this.manifest)&&![qe.relations,qe.storage].includes(v)){let E=v.includes("_")?v.split("_")[1]:v;this.fileDiagnostics.push({file:r,level:"error",message:`"${E}" not allowed within an analytics app. Only "relations" and "storage" are allowed.`,...lA(i,t.key.range)})}}validateContainerFields(r,t,i,n){let F=i.value;if(!F)return;let v=i.key.value;Object.hasOwn(this.fieldNamesPerContainer,v)||(this.fieldNamesPerContainer[v]=[]);let E=this.getContainerOfPreviousVersion(v);F.items.forEach(u=>{let j=u.key.value;this.checkForContainerRelation(u,r,t,n),this.validateFieldName(u,v,t,n),this.checkFieldNameLength(u,v,t,n);let w=E?.fields.find(R=>R.id===j.toLowerCase()),g=u.value,S=g.get("type",!0),T=this.resolvePossibleAlias(r,S),q=g.get("bytes",!0),L=this.resolvePossibleAlias(r,q);w&&(S&&T&&w.type!==T&&this.fileDiagnostics.push({file:t,level:"warning",message:`Field type changed from "${w.type}" to "${T}".
2330
+ Changing the type of an existing field can result in data loss or unexpected behaviour.`,...lA(n,S.range)}),q&&L&&w.byteSize!==L&&this.fileDiagnostics.push({file:t,level:"warning",message:`Byte size changed from '${w.byteSize}' to '${L}'.
2331
+ Changing the size of an existing field can result in data loss or unexpected behaviour.`,...lA(n,q.range)}))})}checkForContainerRelation(r,t,i,n){let F=r.value.get("fields");F&&F.items.forEach(E=>{this.checkForContainerRelation(E,t,i,n)}),r.value.items.forEach(E=>{let u=E.value;if(u?.value&&$u.exec(`${u.value}`)){let p=E.key.value;if(p){if(!Object.hasOwn(rv,p))return this.fileDiagnostics.push({file:i,level:"error",message:`Property "${p}" does not allow relations.`,...lA(n,u.range)});if(["scale","offset"].includes(p))return this.fileDiagnostics.push({file:i,level:"warning",message:`Container relations for "${p}" are not available within the dlo source.`,...lA(n,u.range)})}return this.validateContainerRelation(p,u,t,i,n)}})}validateFieldName(r,t,i,n){let F=this.fieldNamesPerContainer[t],v=r.key,E=v.value;Tu(E)&&this.fileDiagnostics.push({file:i,level:"error",message:`Reserved property "${E}" is not allowed.`,...lA(n,v.range)});let u=r.value.get("shadowFields");u&&u.items.forEach(p=>{this.validateFieldName(p,t,i,n)}),F.includes(E.toLowerCase())?this.fileDiagnostics.push({file:i,level:"error",message:`Field name "${E}" is already occupied`,...lA(n,v.range)}):F.push(E.toLowerCase())}checkFieldNameLength(r,t,i,n){let F=r.key,v=F.value,u=`DDE_${t.startsWith("timeseries")?t.substring(10):t}_`,p=31-u.length;u.length+v.length>31&&this.fileDiagnostics.push({file:i,level:"error",code:Kt.CODE.ddeFieldLength,message:`Field name "${v}" to long. ${p} characters allowed for this field/container.`,...lA(n,F.range)})}validateContainerRelation(r,t,i,n,F){let[v,E,u]=t.value.split(".",3),[p,j]=v.split("@"),w=p?p.split(":")[1]:null,S=(w&&this.libraryYaml[w]?this.libraryYaml[w]:i).contents?.get(j),T=E.split("[")[0],q=null;if(S){let L=S.get(T);if(L)if(u){let R=L.get("fields");R&&R.get(u)&&(q=R.get(u))}else q=L;else q=this.findRelatedShadowField(S,T)}if(q){let L=rv[r],R=q.get("type");L.includes(R)||this.fileDiagnostics.push({file:n,level:"error",message:`Related field type "${R}" is not allowed for attribute "${r}".`,...lA(F,t.range)})}else w&&!this.libraryYaml[w]?this.fileDiagnostics.push({file:n,level:"error",message:`Related library "${w}" does not exist.`,...lA(F,t.range)}):this.fileDiagnostics.push({file:n,level:"error",message:`Related field "${t.value}" does not exist.`,...lA(F,t.range)})}findRelatedShadowField(r,t){for(let i of r.items){let F=i.value.get("shadowFields");if(!F)continue;let v=F.get(t);if(v)return v}}mergeAndFormat(r){let t={containers:{},setPointList:{}};for(let i of this.libraryDDE)this.combineDDE(t,i);return this.combineDDE(t,r),this.sortContainerFields(t),this.generateSetPointList(t),t}combineDDE(r,t){for(let[i,n]of Object.entries(t.containers)){let F=r.containers[i];F?(F.title=n.title,F.knownNames.unshift(n.title),F.libraries.push(...n.libraries),F.fields.push(...n.fields),F.arrays={...F.arrays,...n.arrays},F.shadows={...F.shadows,...n.shadows}):(F=r.containers[i]=structuredClone(n),F.knownNames.unshift(n.title),F.fieldCount=F.fields.length,F.fieldIndex=0);let v=this.initialContainerByteOffset(F);for(let[E,u]of F.fields.entries()){if(u.shadowRef){let p=F.shadows[u.shadowRef];u.byteOffset=p.byteOffset}else u.byteOffset=v,this.updateShadowFieldInformation(r.containers[i],u),v+=u.byteSize||0;E>F.fieldCount-1&&(u.index+=F.fieldIndex)}F.fieldIndex+=n.fieldIndex,F.knownNames=[...new Set(F.knownNames)],F.libraries=[...new Set(F.libraries)],F.fieldCount=F.fields.length}}initialContainerByteOffset(r){return r.containerType===Pu.hx?1:0}updateShadowFieldInformation(r,t){t&&Object.hasOwn(r.shadows,t.name)&&(r.shadows[t.name].byteOffset=t.byteOffset)}sortContainerFields(r){for(let t of Object.values(r.containers)){let{sortedFields:i,containerSize:n}=this.sortFields(t);t.fields=i,t.size=n,t.fieldCount=t.fields.length}}sortFields(r){let t=r.fields.filter(p=>!p.shadowRef),i=r.fields.filter(p=>p.shadowRef),n=[],F=r.name;if(this.previousVersion.containers[F]){let p=this.sortPreviousContainerFields(r,t);n.push(...p)}else n.push(...t);n.forEach(p=>{this.updateShadowFieldInformation(r,p)});let E=n[n.length-1],u=E.byteSize+E.byteOffset;return i.forEach(p=>{p.byteOffset=r.shadows[p.shadowRef].byteOffset,n.push(p)}),{sortedFields:n,containerSize:u}}sortPreviousContainerFields(r,t){let i=r.name,n=this.previousVersion.containers[i],F=[],v=this.initialContainerByteOffset(r);for(let E of n.fields){if(E.shadowRef)continue;let u=t.findIndex(j=>E.id===j.name?.toLowerCase());if(u===-1){v=E.byteOffset+E.byteSize;continue}let p=t[u];if(E.type!==p.type&&E.byteSize!==p.byteSize){v=E.byteOffset+E.byteSize;continue}p.byteOffset=E.byteOffset,t.splice(u,1),F.push(p),v=this.initialContainerByteOffset(r)}if(v>this.initialContainerByteOffset(r)){let E=t.shift();F.push(...this.generatePlaceholderFieldIfNeeded(v,E)),this.updateShadowFieldInformation(r,E)}for(let E of t){if(E.shadowRef)E.byteOffset=r.shadows[E.shadowRef].byteOffset;else{this.updateShadowFieldInformation(r,E);let u=F[F.length-1];u.shadowRef&&(u=r.shadows[u.shadowRef]),E.byteOffset=u.byteOffset+u.byteSize}F.push(E)}return F}generatePlaceholderFieldIfNeeded(r,t){let i=[];if(t)t.byteOffset=r,i.push(t);else{let n={byteOffset:r,byteSize:0,id:"_shadow",library:null,name:"_shadow",type:"shadow",arrayRef:null,shadowRef:null,title:null,index:0};i.push(n)}return i}generateSetPointList(r){r.setPointList={...this.previousVersion.setPointList||{}};for(let t of Object.values(r.containers))for(let i of t.fields)i.chartSetPoint&&(Object.hasOwn(r.setPointList,i.name)||(r.setPointList[i.name]=this.getNextSetpointValue(r.setPointList)))}getNextSetpointValue(r){let t=[...Object.values(r),0];return Math.max(...t)+1}}A.PreCompiler=x})(qn||={});var AA=G0.TransferDirection,yA=G0.parseXMLValueWithRelation,Mu=G0.parseXMLBitmask,Lu=G0.parseXMLDefaultValue,Ou=G0.fieldTypeDefinitions;function ys(x,A){let r=[];function t(F,v=!0){if(v){if(Array.isArray(F)){r.push.apply(r,F);return}r.push(""+F)}}function i(F,v){F!=="mergeofs"&&t(`${F}=${v}`)}t("// DDE STRUCTURE created by Microtronics Studio");let n="source=rm2mraw";for(let[F,v]of Object.entries(A.containers)){F.startsWith("histdata")&&v.transferDirection!==AA.deviceOnly&&(t("<split>"),t(n),t("target="+F),t("key=0"+F.substr(-1,1)),t("</split>")),t("<table>"),i("name",F),i("alias",v.title),i("title",v.title.replace("_"," "));let E={};[AA.none,AA.backendOnly,AA.deviceOnly,AA.down,AA.downPlus].includes(v.transferDirection)&&i("upload","0"),[AA.none,AA.backendOnly,AA.deviceOnly,AA.up,AA.upPlus].includes(v.transferDirection)&&i("download","0"),(z.isIotApp(x)||z.isLibrary(x))&&[AA.up,AA.upPlus].includes(v.transferDirection)&&i("edit","99");for(let u of v.fields){if(u.type==="shadow")continue;let p=Ru(u),j=Ou[p.type],w=yA("title",p,A)||p.name;!w.startsWith("%")&&p.library&&(w=`${p.library}: ${w}`);let g={title:w,alias:p.name,index:u.index,...E};g.byteofs=`${p.byteOffset}`;for(let[S,T]of Object.entries(j.xml))g[S]=T;Object.hasOwn(j,"xmlOut")&&j.xmlOut(g,p,A),g.units=yA("unit",p,A),g.chmode=yA("channelMode",p,A),g.ialarm_high=yA("chartAlarmHigh",p,A),g.ialarm_low=yA("chartAlarmLow",p,A),g.iwarn_high=yA("chartWarningHigh",p,A),g.iwarn_low=yA("chartWarningLow",p,A),g.hysterese=yA("chartHysteresis",p,A),g.itrigger=yA("chartTriggerThreshold",p,A),g.itriggerus=yA("chartTriggerRelation",p,A),g.setpoint=yA("chartSetPoint",p,A),g.bitmask=Mu(p),p.hex&&(g.editmask="%HEX%"),p.readPermission&&(g.view=p.readPermission),p.writePermission&&(g.edit=p.writePermission),p.defaultValue!==void 0&&(g.default=Lu(p)),p.utilsTransferInterval===!0&&(g.param0="%FFFF0005%transfer_interval"),t("<field>"),p.library&&t(`// declared by ${p.library} library`,!0);for(let[S,T]of Object.entries(g))T!==void 0&&i(S,`${T}`);t("</field>")}["alerts","applog"].includes(F)||(t("</table>"),t("// "+v.size+" bytes total size"))}return t("<split>"),t(n),t("target=alarm0"),t("key=20"),t("</split>"),t("<split>"),t(n),t("target=applog0"),t("key=28"),t("</split>"),r.join(`
2332
+ `)}function Ru(x){let A=structuredClone(x),e=x.arrayRef?.index;if(e===void 0)return A;for(let[r,t]of Object.entries(A))A[r]=h0.patchValueWithArrayInfo(t,e);return A}var KA=ax(require("semver"));var kA=ax(require("semver"));var _s=require("vscode-uri");var Px=G0.ContainerType,M0=G0.TransferDirection,kt=G0.regexRelation,Gu=G0.CONFIG_CONTAINER,ws=G0.CONTAINER_DEF_DLO_CID_BASE,_t=G0.CONTAINER_DEFS,In=G0.fieldTypeDefinitions,sv=h0.isNumeric;function cA(x){let A=In[x.type];return A.pwn.rwp||(A.pwn.rwp="%n"),A.pwn.htype||(A.pwn.htype=A.pwn.rwfunc),A.pwn}var Nn="Microtronics/dlo-core";function Ss(x){return z.isLibrary(x)&&x.name==="dlo-core"?x.version:x.libraryDependencies&&Object.hasOwn(x.libraryDependencies,Nn)?Ax.rangeToVersion(x.libraryDependencies[Nn]):x.libraryDevDependencies&&Object.hasOwn(x.libraryDevDependencies,Nn)?Ax.rangeToVersion(x.libraryDevDependencies[Nn]):null}function Uu(x){let A=Ss(x);return A===null||kA.gte(A,"0.3.0")?kA.valid(x.version)?x.version:kA.coerce(`${x.version}`):kA.coerce(x.version)?.major}function ks(x){let A=Ss(x);if(A===null)return!1;let e=kA.coerce(A);return kA.gte(e,"1.1.0")}function Hu(x){let A=Ss(x);if(A===null)return!1;let e=kA.coerce(A);return kA.gte(e,"1.15.0")}var Ju=["u8","u16","u32","s8","s16","s32","s64","f16","f32","f64"];function zu(x){if(x.type==="ustring")return!1;if(x.defaultValue!=="NaN")return!0;let A=cA(x);return!A||A==="skip"?!1:Ju.includes(`${A.rwfunc}`)}function Ku(x,A,e){x("PROJECT META");let{dpid:r,registry:t}=e;if(!r)throw new Error('Setting "dpid" is required to generate dlo files');let{auto_inc:i}=fi[r];A("APM_DPID",`${r}`),A(`APM_DPID_${r}`,"1"),A(`APM_DPID_${r.toUpperCase()}`,"1"),A("APM_ID",t?.id||"");let n=Uu(e);A("APM_VERSION",`${n}`),A("APM_NAME",`${e.name}`),A("APM_AUTHOR",`${e.publisher}`);for(let[F,v]of Object.entries(i))sv(v)?A(F,`${v}`):A(F,`"${v}"`)}function Vu(x,A,e,r){let t=r.flat,{definesWithSource:i}=r;A("GLOBAL DEFINES");for(let[n,F]of Object.entries(t)){let v=i[n]?.comment;if(v){let u=v.split(`
2333
+ `);if(u.length===1)x(`/** ${u[0]} */`);else{x("/**");for(let p of u)x(` * ${p}`);x(" */")}}let E=Object.hasOwn(t,F);e(n,`${F}`,E)}}function Wu(x,A,e,r){let t=parseInt(x.substring(6)),i=1<<t;e[t]=A.size,r.cx_isupm|=[M0.both,M0.none,M0.deviceOnly,M0.up,M0.upPlus].includes(A.transferDirection)?i:0,r.cx_isvolatilem|=A.volatile?i:0,r.cx_isdnm|=[M0.both,M0.none,M0.deviceOnly,M0.down,M0.downPlus].includes(A.transferDirection)?i:0,r.cx_isvlm|=[M0.bothPlus,M0.upPlus,M0.downPlus].includes(A.transferDirection)?i:0}function Xu(x,A,e,r){let t=parseInt(x.substring(8));e[t]=A.size,r.hx_isvlm|=[M0.upPlus].includes(A.transferDirection)?1<<t:0}function Yu(x){return[M0.upPlus].includes(x.transferDirection)}function Qu(x,A,e){let r=0,t=Array(10).fill(0),i={cx_isupm:0,cx_isvolatilem:0,cx_isdnm:0,cx_isvlm:0},n=0,F=Array(10).fill(0),v={hx_isvlm:0},E;for(let[p,j]of Object.entries(e.containers))j.containerType===Px.cx&&j.transferDirection!==M0.backendOnly?(Wu(p,j,t,i),r=Math.max(r,j.size)):j.containerType===Px.hx?(Xu(p,j,F,v),r=Math.max(r,j.size)):j.containerType===Px.aloha&&(E=Yu(j),r=Math.max(r,j.size));A("DDE CORE"),x(`#define _DDE_BUF_BYTES (${r}+10)`),x(""),x("// c0 c1 c2 c3 c4 c5 c6 c7 c8 c9"),x(`stock _DDE_CONFIGS_size[] =[ ${t.join(", ")}];`),x(`#define _DDE_CONFIGS_upm 0b${i.cx_isupm.toString(2)} // ..is tolerant when reading back container with under-length`),x(`#define _DDE_CONFIGS_volatilem 0b${i.cx_isvolatilem.toString(2)} // inits container as volatile`),x(`#define _DDE_CONFIGS_downm 0b${i.cx_isdnm.toString(2)} // reading the container expects strict length`),x(`#define _DDE_CONFIGS_varlenm 0b${i.cx_isvlm.toString(2)} // allow partial write (dde_wxxx)`),x(`#define _DDE_CONFIGS_rdef 0b${n.toString(2)} // ..apply defaults reading a container with under-length`),x(""),x("// h0 h1 h2 h3 h4 h5 h6 h7 h8 h9"),x(`stock _DDE_HISTS_size[] =[ ${F.join(", ")}];`),x(`#define _DDE_HISTS_varlenm 0b${v.hx_isvlm.toString(2)} // allow partial write (dde_wxxx)`);let u=[...F];Object.hasOwn(e,"applog")&&u.push(125),Object.hasOwn(e,"alerts")&&u.push(13),x(`#define _DDE_HISTS_maxsize ${Math.max(...u)}`),x(""),E!==void 0&&(x(`#define _DDE_ALOHA_varlen ${E?1:0}`),x(""))}function Zu(x,A,e){for(let[r,t]of Object.entries(e.containers)){if(t.containerType==="applog")continue;A(`${t.title.toUpperCase()} - ${t.transferDirection} via #${r}`);let i=ws(t.containerType,t.transferDirection);if(!i){x("// ... container not available in DLO");continue}let n=`DDE_${t.containerType===Px.aloha?Px.aloha:t.title}`,F=_t[r];x(`// ${n}_id - container identifier required for ${n}_read/_write operations`),x(`#define ${n}_id (${i}+${F.cnum||0})`),x(`// ${n}_sz - [byte] container total size`),x(`#define ${n}_sz ${t.size}`),F.cnum!==void 0&&(x(`// ${n}_idx - 0+ container index number`),x(`#define ${n}_idx ${F.cnum}`))}}function av(x,A,e){let r=[],t=r.push.bind(r);function i(F){t(`
2334
+ // === ${F} ===
2335
+ `)}function n(F,v,E=!1){let u=sv(v)?"":'"';E&&(u=""),t(`#define ${F} ${u}${v}${u}`)}return Ku(i,n,e),Vu(t,i,n,A),Qu(t,i,x),Zu(t,i,x),r.join(`
2336
+ `)}var St=class{constructor(A,e,r){this.manifest=A;this.ddeMap=e;this.context=r;this.sourceType="pawnSource"}manifest;ddeMap;context;globalVariables=[];pawnGlobalSource=[];pawnHelperSource=[];timeSeriesSource=[];readWriteSource=[];definesSource=[];defaultDefinesSource=[];knownDefines=[];pawnIndent=0;sourceType;pawn(A,e){e&&A==="<"&&this.pawnIndent--,{pawnSource:this.pawnGlobalSource,globalVariables:this.globalVariables,timeseries:this.timeSeriesSource,readWrite:this.readWriteSource,defines:this.definesSource,defaultDefines:this.defaultDefinesSource}[this.sourceType].push(" ".repeat(this.pawnIndent)+(e||A)),e&&A===">"&&this.pawnIndent++}generate(){for(let[A,e]of Object.entries(this.ddeMap.containers))this.context&&!e.libraries.includes(this.context)||!ws(e.containerType,e.transferDirection)||!e.fields||!this.context&&!G0.hasContainerAppFields(e)||_t[A].ctype!==Px.cx&&this.context||(this.generateGlobalVarsForContainer(e),this.generateReadWriteFunctions(e));return this.mergeSourceTypes(),{globals:this.pawnGlobalSource,helper:this.pawnHelperSource}}createGlobalVar(A,e){this.sourceType="globalVariables";let r=e?this.variableNameForPawnDefinition(A,e):A;if(e){let t=this.generateCommentForField(e);t&&(Array.isArray(t)?(this.pawn("/**"),t.forEach(i=>{this.pawn(` * ${i}`)}),this.pawn(" */")):this.pawn(`// ${t}`))}this.pawn(`stock ${r}${e?this.initialiserForGlobalVar(e):""};`)}initialiserForGlobalVar(A){if(A.defaultDloDefine===void 0||A.arrayRef)return"";let e=cA(A);return!e||e==="skip"||`${e.rwp||""}`.includes("%l")?"":` = ${A.defaultDloDefine}`}insertSection(A){this.pawn(""),this.pawn("// ============================================================================="),this.pawn(`// ${A}`),this.pawn("// ============================================================================="),this.pawn("")}mergeSourceTypes(){this.sourceType="pawnSource",this.definesSource.length&&(this.insertSection("Defines"),this.pawnGlobalSource.push(...this.definesSource)),this.defaultDefinesSource.length&&(this.insertSection("Field defaults"),this.pawnGlobalSource.push(...this.defaultDefinesSource)),this.globalVariables.length&&(this.insertSection("Global Variables"),this.pawnGlobalSource.push(...this.globalVariables)),this.readWriteSource.length&&(this.insertSection("Internal read/write calls"),this.pawnHelperSource.push(...this.readWriteSource)),this.pawn("")}generateGlobalVarsForContainer(A){this.sourceType="globalVariables",this.pawn(""),this.pawn(`// Container '${A.title.replace("_"," ")}'`),this.pawn("");let e=`DDE_${A.title}`;this.generateArrayDefines(e,A);for(let r of A.fields){if(r.type==="shadow"||r.shadowRef||r.library!==this.context)continue;if(r.arrayRef!==null){let i=A.arrays[r.arrayRef.name],n=`${e}_${r.arrayRef.name}`;i.fields?.length&&(n+=`_${r.name.split(".")[1]}`),this.createDefaultDefineForField(n,r);continue}let t=this.generateFieldVariableName(e,r);this.createDefaultDefineForField(t,r),this.createGlobalVar(`${t}`,r)}}generateArrayDefines(A,e){for(let r of Object.values(e.arrays)){if(this.context!==r.library)continue;let t=`${A}_${r.name}_dim`;if(this.sourceType="defines",this.pawn(`#define ${t} ${r.length}`),r.fields){for(let F of r.fields)In[F.type]?.isBlob&&F.byteSize&&this.addDefine(`${A}_${r.name}_${F.name}_dim`,F.byteSize);let i={...e};i.fields=[],r.fields.forEach(F=>{i.fields.push({arrayRef:null,shadowRef:null,byteOffset:0,byteSize:F.byteSize,id:F.name,library:r.library,name:F.name,type:F.type,title:null,index:0})});let n=`${A}_${r.name}_def`;this.generateTypeDefinitions(i,n),this.createGlobalVar(`${A}_${r.name}[${t}][${n}]`)}else this.createGlobalVar(`${A}_${r.name}[${t}]`)}}generateCommentForField(A){let e=[`@type ${A.type}`];if(A.description&&e.unshift(A.description),A.defaultValue!==void 0){let{value:r,reason:t}=this.parseFieldDefault(A);e.push(`@default ${r} ${t||""}`)}return e}generateFieldVariableName(A,e){let r=`${A}_${e.name}`,t=Object.hasOwn(In,e.type)&&In[e.type].isBlob,i=e.byteSize;return i&&t&&(this.sourceType="defines",this.pawn(`#define ${A}_${e.name}_dim ${i}`),this.pawn(`#define ${A}_${e.name}_iter() for(new i=0;i<${i};i++)`)),this.sourceType="globalVariables",r}generateTypeDefinitions(A,e){this.sourceType="defines";let r=A.fields;if(!r)return;let t=[];this.pawn(">",`#define ${e} [`);for(let i of r){let n=this.generateFieldTypeDefinition(i,A,t,e);n!==null&&this.pawn(n)}this.pawn("<","]")}handleArrayFieldDedup(A,e,r,t){let i=A.arrayRef;if(i){let v=e.arrays[i.name];if(!r.includes(i.name)&&!v.fields)r.push(i.name);else return null}let n=A.arrayRef?A.arrayRef.name:A.name,F=A.arrayRef?`[${t}_${n}_dim]`:"";return{fieldName:n,fld_dim:F}}generateFieldTypeDefinition(A,e,r,t){if(A.type==="shadow"||A.shadowRef||A.library!==this.context)return null;let i=this.handleArrayFieldDedup(A,e,r,t);if(i===null)return null;let{fieldName:n,fld_dim:F}=i,v="";if(A.type==="struct")v="// ."+n+F;else{let E=cA(A);if(!E)return null;E==="skip"?v=`// skipped - .${n}${F}`:v+=E.rwp.replace("%n",`.${n}${F}`).replace("%l",A.byteSize)}return v+=",",A.library&&(v+=` // declared by ${A.library} library`),v}variableNameForPawnDefinition(A,e){let r=cA(e);return r&&r!=="skip"?r.rwp.replace("%n",`${A}`).replace("%l",e.byteSize):A}createDefaultDefineForField(A,e){if(this.sourceType="defaultDefines",e.scale!==void 0&&this.addDefine(`${A}_scale`,e.scale),e.offset!==void 0&&this.addDefine(`${A}_offset`,e.offset),e.defaultValue!==void 0&&zu(e)){let{value:r,reason:t}=this.parseFieldDefault(e),i=`${A}_default`;this.addDefine(i,r,t)&&(e.defaultDloDefine=i)}}addDefine(A,e,r){return kt.exec(`${e}`)?!1:(this.knownDefines.includes(A)||(r&&this.pawn(`// ${r}`),this.pawn(`#define ${A} ${e}`),this.knownDefines.push(A)),!0)}generateReadWriteFunctions(A){let e=A.name,r=_t[e],t=`DDE_${A.containerType===Px.aloha?Px.aloha:A.title}`;[M0.both,M0.bothPlus,M0.none,M0.deviceOnly,M0.up,M0.upPlus].includes(A.transferDirection)&&this.generateWriteMethod(t,A),r.ctype===Px.cx&&this.generateReadMethod(t,A)}generateWriteMethod(A,e){this.sourceType="readWrite";let r=`DDE_${e.title}_id`,t=[Px.hx,Px.aloha].includes(e.containerType),i=e.containerType===Px.hx,n=e.containerType===Px.aloha,F=`_${A}_write`,v=ks(this.manifest)?", flags":"",E=i?`stamp${v}`:"",u=ks(this.manifest)?"const stamp=0, const flags=0":"const stamp=0";this.pawn(">",`stock ${F}(${i?u:""}) {`),t&&this.pawn(`dde_wbegin(DDE_${n?Px.aloha:e.title}_id);`),this.generateRWFunctionBody(A,e,"dde_w"),t&&this.pawn(`return dde_wend(${E});`),this.pawn("<","}"),this.pawn(""),this.sourceType="globalVariables";let p=`${A}_transfer`,j=`${A}_persist`,w=this.functionArgumentsForDdeWrite(i,t);if(this.pawn(">",`${this.context?"stock ":""}${p}(${w}) {`),t)this.pawn(`${F}(${E});`);else{let g=e.name.slice(-1);this.pawn(`dde_flush(${g}, immediate);`)}this.pawn("<","}"),this.pawn(""),e.volatile&&(this.pawn(">",`stock ${j}() {`),this.pawn(`return rM2M_CfgFlush(${r});`),this.pawn("<","}"))}functionArgumentsForDdeWrite(A,e){let r=ks(this.manifest)?", const flags=0":"";return A?`const stamp=0${r}`:e?"":"bool:immediate=false"}generateReadMethod(A,e){this.sourceType="readWrite";let r=`_${A}_read`;this.pawn(">",`stock ${r}() {`),this.generateRWFunctionBody(A,e,"dde_r"),this.pawn("<","}"),this.pawn("")}isFieldSkipped(A){return A.type==="shadow"||!!A.shadowRef||A.library!==this.context}emitFieldRW(A,e,r,t,i,n,F){if(!e.arrayRef)return this.emitSingleField(A,e,r,t,F);let v=e.arrayRef.name,E=i.get(v);return E?n.has(v)?F:(n.add(v),this.emitArrayLoop(A,E,r)):this.emitSingleField(A,e,r,t,F)}generateRWFunctionBody(A,e,r){let t=e.fields,i=this.analyzeArrayGroups(t,A,e),n=new Set,F=-1;for(let v of t){if(this.isFieldSkipped(v))continue;let E=cA(v);!E||E==="skip"||(F=this.emitFieldRW(A,v,r,E,i,n,F))}}defaultArgumentFor(A,e){return A.defaultDloDefine===void 0?"":e==="dde_r"||Hu(this.manifest)?`, ${A.defaultDloDefine}`:""}emitSingleField(A,e,r,t,i){e.byteOffset!==i&&this.pawn(`_dde_idx = ${e.byteOffset};`);let n="";n+=r,n+=t.rwfunc;let F=`${A}_${e.name}`;return n+=`(${F}`,t.rwlen&&(n+=`, ${e.byteSize}`),n+=this.defaultArgumentFor(e,r),this.pawn(n+");"),e.byteOffset+e.byteSize}emitArrayLoop(A,e,r){this.pawn(">",`for (new _i = 0; _i < ${e.dimDefine}; _i++) {`);let t=-1;for(let i of e.templateFields){let n=cA(i);if(!n||n==="skip")continue;let F=i.byteOffset;F!==t&&this.pawn(`_dde_idx = ${F} + (_i * ${e.stride});`),t=F+i.byteSize;let v=`${A}_${i.name.replace(/\[\d+\]/,"[_i]")}`,E=`${r}${n.rwfunc}(${v}`;n.rwlen&&(E+=`, ${i.byteSize}`),E+=this.defaultArgumentFor(i,r),this.pawn(E+");")}return this.pawn("<","}"),-1}analyzeArrayGroups(A,e,r){let t=this.collectArrayFieldsByIndex(A);return this.buildArrayGroups(t,e,r)}collectArrayFieldsByIndex(A){let e=new Map;for(let r of A){if(this.isFieldSkipped(r)||!r.arrayRef)continue;let t=cA(r);if(!t||t==="skip")continue;let{name:i,index:n}=r.arrayRef;e.has(i)||e.set(i,new Map);let F=e.get(i);F.has(n)||F.set(n,[]),F.get(n).push(r)}return e}validateArrayStride(A,e){let r=e[0].byteOffset-A[0].byteOffset;if(r<=0)return null;for(let t=0;t<A.length;t++)if(e[t].byteOffset-A[t].byteOffset!==r)return null;return r}buildArrayGroups(A,e,r){let t=new Map;for(let[i,n]of A){let F=r.arrays[i];if(!F||F.length<2)continue;let v=n.get(0),E=n.get(1);if(!v||!E||v.length===0||E.length===0||v.length!==E.length)continue;let u=this.validateArrayStride(v,E);u!==null&&t.set(i,{arrayName:i,dimDefine:`${e}_${i}_dim`,stride:u,templateFields:v})}return t}parseFieldDefault(A){let e=cA(A),r=A.defaultValue;function t(n,F){return{value:n,reason:F}}switch(A.type){case"astring":case"nstring":case"cstring":return t(`"${r}"`);case"wstring":return t(`''${r}''`);case"ustring":return t(`/* default not supported: ${r} */`);case"binary":{let F=`{ 0x${(r.substring(2).replace(/\s+/g,"").match(/.{1,2}/g)||[]).join(", 0x")} }`;return t(F)}}if(r==="NaN"){let n=e.rwfunc;return t(`${n}_NaN`.toUpperCase())}let i=this.parseFieldScaleOffset(A);return i?t(i.calculated,i.reason):(r!==void 0&&!kt.exec(`${r}`)&&A.type.startsWith("float")&&r%1===0&&(r=r.toFixed(A.decimalPlaces||1)),t(`${r}`))}parseFieldScaleOffset(A){let e=A.defaultValue;if(!(!!kt.exec(`${A.offset}`)||!!kt.exec(`${A.scale}`)||!!kt.exec(`${A.defaultValue}`))&&(A.offset!==void 0||A.scale!==void 0)){let t=A.offset!==void 0?Number(A.offset):0,i=A.scale!==void 0?Number(A.scale):1;if(i===0)return null;let n=(Number(e)-t)/i,F=`(defaultValue - offset) / scale -> (${e} - ${t}) / ${i}`;return A.type.startsWith("float")?n%1===0&&(n=n.toFixed(1)):(n=Math.round(n),F=`Rounded value of: ${F}`),{calculated:n,reason:F}}return null}};function xD(x){return`${`onUplinkApply_${x}()`};`}function ov(x,A,e){A.libraries.forEach(r=>{let t=h0.generateHashForLibraryName(r);x(` #ifdef _${t}${e}_${A.title}`),x(` _${t}${e}_${A.title}(); // ${r}`),x(" #endif")})}function AD(x,A){x("stock _onUplinkEvent(ev, param) {"),A.forEach(e=>{let t=`_${h0.generateHashForLibraryName(e)}UplinkEvent`;x(` #ifdef ${t}`),x(` ${t}(ev, param);`),x(" #endif")}),x(" onUplinkEvent(ev, param);"),x("}")}function eD(x){let A=[],e=[];for(let[r,t]of Object.entries(x.containers))_t[r].ctype===Px.cx&&([M0.up,M0.upPlus,M0.deviceOnly].includes(t.transferDirection)&&e.push(t),[M0.bothPlus,M0.both,M0.downPlus,M0.down].includes(t.transferDirection)&&A.push(t));return{containerApply:A,containerRestore:e}}function rD(x,A){A.length&&x("");for(let e of A)e.knownNames.forEach(r=>{x(`forward onUplinkRestore_${r}();`)}),x(""),x(`stock restoreUplink${e.name}() {`),x(` _DDE_${e.name}_read();`),ov(x,e,"Restore"),G0.hasContainerAppFields(e)&&x(` onUplinkRestore_${e.title}();`),x("}");if(x("#pragma warning push"),x("stock _onUplinkRestore(cfgId) {"),A.length){x(" switch(cfgId) {");for(let e of A)x(` case DDE_${e.title}_id: restoreUplink${e.name}(); // ${e.name}`);x(" }")}else x(" #pragma warning disable 203"),x(" // no containers to restore");x("}"),x("#pragma warning pop")}function tD(x,A){A.length&&x("");for(let e of A)e.knownNames.forEach(r=>{x(`forward onUplinkApply_${r}();`)}),x(""),x(`stock applyUplink${e.name}() {`),x(` _DDE_${e.name}_read();`),ov(x,e,"Apply"),G0.hasContainerAppFields(e)&&x(` ${xD(e.title)}`),x(" return(OK);"),x("}");if(x("#pragma warning push"),x("stock _onUplinkApply(cfgId) {"),A.length){x(" switch(cfgId) {");for(let e of A)x(` case DDE_${e.title}_id: return applyUplink${e.name}(); // ${e.name}`);x(" }"),x(" return ERROR;")}else x(" #pragma warning disable 203"),x(" // no containers to apply"),x(" return OK;");x("}"),x("#pragma warning pop")}function Fv(x,A){let e=[],r=e.push.bind(e);AD(r,A);let{containerApply:t,containerRestore:i}=eD(x);return rD(r,i),tD(r,t),e.join(`
2337
+ `)}var nD=Gu.map(x=>`_DDE_${x}_write`);function vv(x){let A=[],e=A.push.bind(A),r=[...nD];for(let[t,i]of Object.entries(x.containers)){let n=ws(i.containerType,i.transferDirection),F=_t[t];if(!n||!i.fields||F.ctype!==Px.cx)continue;let v=`DDE_${i.name}`,E=`DDE_${i.title}_id`;if([M0.both,M0.bothPlus,M0.none,M0.deviceOnly,M0.up,M0.upPlus].includes(i.transferDirection)){let u=`_${v}_write`;e(`stock ${u}() {`),e(` dde_wbegin(${E});`),iv(e,i,"write"),e(" return dde_wend();"),e("}"),r.splice(r.indexOf(u),1)}if(F.ctype===Px.cx){let u=`_${v}_read`;e(`stock ${u}() {`),e(` if (dde_rbegin(${E})) return ERROR;`),iv(e,i,"read"),e(" dde_rend();"),e(" return OK;"),e("}")}}if(r.length){e(""),e("// Dummy functions needed by the dde library");for(let t of r)e(`stock ${t}() { return OK; }`)}return A.join(`
2338
+ `)}function iv(x,A,e){A.libraries.forEach(r=>{let t=h0.generateHashForLibraryName(r);x(` #ifdef __${t}${A.title}_${e}`),x(` __${t}${A.title}_${e}();`),x(" #endif")}),G0.hasContainerAppFields(A)&&(x(` #ifdef _DDE_${A.title}_${e}`),x(` _DDE_${A.title}_${e}();`),x(" #endif"))}async function fv(x,A){let e=[],r=await Ax.getApmPartDependencies(x,A,p0.Part.dlo);await wt(x,A,e,e0.fileNames.autoInc);let t=await iD(x,A,r);for(let i of r)i.name==="local-data-interface"&&await wt(x,A,e,e0.fileNames.autoLocalDataInc),e.push(`#include <${i.name}>`),i.name==="dlo-core"&&(e.push(...t),await wt(x,A,e,e0.fileNames.autoDdeInc.replace("X","app")),await wt(x,A,e,e0.fileNames.autoDdeInc.replace("X","main")));return r.some(i=>i.name==="dlo-core")&&await wt(x,A,e,e0.fileNames.autoUplinkInc),e.join(`
2339
+ `)}async function iD(x,A,e){let r=[];for(let t of e){let i=e0.filePaths.studio.auto.dlo.autoDdeInc.replace("X",t.name);await A.stat(_s.Utils.joinPath(x,i))&&r.push(`#include "${e0.fileNames.autoDdeInc.replace("X",t.name)}"`)}return r}async function wt(x,A,e,r){let t=_s.Utils.joinPath(x,e0.filePaths.studio.auto.dlo.path,r);await A.stat(t)&&e.push(`#include "${r}"`)}var cv=ax(require("semver")),Ev=require("yaml");var EA=G0.ContainerType,Ln=G0.TransferDirection,sD=G0.fieldTypeDefinitions,Hr={$ref:"#/components/parameters/contextId"},aD={$ref:"#/components/parameters/addonId"},oD={$ref:"#/components/parameters/appId"},lv={$ref:"#/components/schemas/histdataResponse"},FD={$ref:"#/components/schemas/histdataRequest"},On={$ref:"#/components/schemas/rapidM2MStamp"},vD={$ref:"#/components/schemas/timeseriesRequestBase"},Mn="rapidM2M Stamp",wA={description:"Successful operation"},Bv={parameters:{contextId:{name:"siteUid",in:"path",description:"The site uid",schema:{type:"string"},required:!0},appId:{name:"appUid",in:"path",description:"The app uid",schema:{type:"string"},required:!0}},schemas:{rapidM2MStamp:{type:"string",format:"YYYYMMDDhhmmssSSS",description:'Special format of an UTC timestamp. Important: The trailing 0 are truncated. eg.: "2024-02-10" -> "2024021"'}}},Cv={...structuredClone(Bv)};Object.assign(Cv.schemas,{histdataResponse:{type:"array",description:"Array of histdata records. Array starts with the youngest record",items:{type:"array",description:'First item is always the rapidM2M timestamp of the record. All following values are in the order of the "select" array.',items:{anyOf:[On,{type:"string"},{type:"number"}]}}},histdataRequest:{type:"object",additionalProperties:!1,required:["from","until"],properties:{from:{type:"string",format:Mn,description:"items to include must be older or equal, UTC w/o time saving."},until:{type:"string",format:Mn,description:"items to include must be younger, UTC w/o time saving. Reply set is limited like that: from <= item.stamp < until."},count:{type:"integer",description:"limits the number of returned records, negative values will count the records from the end of the result set."},offset:{type:"integer",description:"skips the given number of records in the result set."}}},timeseriesRequestBase:{type:"object",additionalProperties:!1,properties:{count:{type:"integer",description:"limits the number of returned records, negative values will count the records from the end of the result set.",minimum:-1e3,maximum:1e3,default:1e3},from:{type:"string",format:Mn,description:"items to include must be older or equal, UTC w/o time saving"},until:{type:"string",format:Mn,description:"items to include must be younger, UTC w/o time saving. Reply set is limited like that: from <= item.stamp < until"},offset:{type:"integer",description:"Skips the given number of records in the result set",minimum:0,default:0}}}});var $t={content:{"application/json":{schema:{type:"object",additionalProperties:!1,properties:{err:{type:"string",description:"Information what went wrong"}}}}}},Ne={401:{description:"Permission denied",...$t},403:{description:"Forbidden",...$t},404:{description:"Resource not found",...$t},500:{description:"Internal error",...$t}};function $s(x,A,e=null){let r=cv.coerce(A.version)?.version,t={openapi:"3.0.3",info:{description:A.description,title:A.name,version:r||""},tags:[],paths:{},components:{parameters:{},schemas:{}}};e?Object.assign(t.components,structuredClone(Bv)):Object.assign(t.components,structuredClone(Cv));let i=z.isAddon(A),n=z.isAnalytics(A);i&&(t.components.parameters.addonId={name:"addonUid",in:"path",description:"The addon uid",schema:{type:"string"},required:!0});for(let F of Object.values(x.containers))e&&(!F.libraries.includes(e)||F.containerType===EA.hx)||!e&&!G0.hasContainerAppFields(F)||F.containerType===EA.aloha||(fD(t,F),cD(t,F,e),CD(t,F,i,n),!i&&!n&&(lD(t,F,e),BD(t,F)));return t.tags.push({name:"app-center",description:"App Center related routes"}),(0,Ev.stringify)(t)}function fD(x,A){x.tags.push({name:eA(A.title),description:`Transfer direction ${A.transferDirection}`})}function eA(x){return x.split("_").join(" ")}function lD(x,A,e){let r=`${A.name}`,t={type:"object",description:`Container: "${A.title}"`,additionalProperties:!1,properties:{}},i=[];A.containerType===EA.hx&&(r+="Select",i.push("select"),t.properties.select={type:"array",items:{type:"string",enum:[]}});for(let n of A.fields)n.library!==e||n.type==="shadow"||(A.containerType===EA.hx?t.properties.select.items.enum.push(n.id):(t.properties[n.id]=dv(n),!n.readPermission&&!n.writePermission&&i.push(n.id)));t.required=i.length?i:void 0,x.components.schemas[r]=t}function cD(x,A,e=null){let r=`${A.title}`,t={type:"object",description:`Container: "${A.title}" with device transfer direction "${A.transferDirection}"`,additionalProperties:!1,properties:{}},i=[],n=A.containerType===EA.hx;for(let v of A.fields)v.library!==e||v.type==="shadow"||(t.properties[v.name]=dv(v),!v.readPermission&&!v.writePermission&&i.push(v.name));t.required=i.length?i:void 0,x.components.schemas[r]=t;let F=t.properties;if(n){t.required=t.required?.map(E=>E.toLowerCase());let v={};for(let[E,u]of Object.entries(t.properties))v[E.toLowerCase()]=u;t.properties=v}if(n){let v={type:"object",description:`Request schema of "${A.title}"`,additionalProperties:!1,properties:{select:{type:"array",description:"Optional selection of specific fields of the given container",items:{type:"string",enum:Object.keys(F)}}}};x.components.schemas[`${r}RequestSingle`]=v,x.components.schemas[`${r}Request`]={allOf:[vD,v]},t.properties.stamp=On,i.push("stamp")}}function dv(x){let e={...sD[x.type].openApi},r=ED(x);return e.default=r,e.example=r,e.description=x.description,e}function ED(x){return x.defaultValue===void 0?x.defaultValue:x.type==="binary"?`${x.defaultValue.substring(2)}`:x.defaultValue}function BD(x,A){let e=`/api/1/sites/{siteUid}/${A.name}`,r={get:void 0,put:void 0};if([EA.cx,EA.cb].includes(A.containerType))r.get={deprecated:!0,tags:[eA(A.title)],summary:`Retrieve the data of the "${eA(A.title)}" container`,parameters:[Hr],responses:{200:{...wA,content:{"application/json":{schema:{allOf:[{type:"object",required:["stamp"],properties:{stamp:On}},{$ref:`#/components/schemas/${A.name}`}]}}}},...Ne}},[Ln.down,Ln.backendOnly].includes(A.transferDirection)&&(r.put={deprecated:!0,tags:[eA(A.title)],summary:`Modify the data of the "${eA(A.title)}" container`,parameters:[Hr],requestBody:{content:{"application/json":{schema:{$ref:`#/components/schemas/${A.name}`}}}},responses:{201:{...wA},204:{...wA},...Ne}});else if(A.containerType===EA.hx){let t=`${e}`;e+="/youngest",r.get={deprecated:!0,tags:[eA(A.title)],summary:`Retrieve the youngest data of the "${eA(A.title)}" container`,parameters:[Hr,{name:"json",in:"query",required:!0,schema:{$ref:`#/components/schemas/${A.name}Select`}}],responses:{200:{...wA,content:{"application/json":{schema:lv}}},...Ne}},x.paths[t]={get:{deprecated:!0,tags:[eA(A.title)],summary:`Get the historical data of the "${eA(A.title)}" container.`,parameters:[Hr,{name:"json",in:"query",required:!0,schema:{allOf:[{$ref:`#/components/schemas/${A.name}Select`},FD]}}],responses:{200:{...wA,content:{"application/json":{schema:lv}}},...Ne}}}}x.paths[e]=r}function CD(x,A,e=!1,r=!1){let i=A.containerType===EA.hx?"timeseries":"containers",n=[],F=eA(A.title);r||n.push({path:`/api/1/sites/{siteUid}/${i}/${A.title}`,params:[Hr],tags:[F]}),e&&(n=[{path:`/api/1/sites/{siteUid}/addons/{addonUid}/${i}/${A.title}`,params:[Hr,aD],tags:[F]}]);let v={path:`/api/1/app-center/apps/{appUid}/${i}/${A.title}`,params:[oD],tags:["app-center"]};r&&v.tags.push(F),n.push(v);let E={get:void 0,put:void 0,post:void 0},u={tags:[],summary:`Retrieve the data of the "${eA(A.title)}" container`,parameters:[],responses:{200:{...wA,content:{"application/json":{schema:{allOf:[{type:"object",required:["stamp"],properties:{stamp:On}},{$ref:`#/components/schemas/${A.title}`}]}}}},...Ne}};if([EA.cx,EA.cb].includes(A.containerType)&&(E.get=u,[Ln.down,Ln.backendOnly].includes(A.transferDirection)&&(E.put={tags:[],summary:`Modify the data of the "${eA(A.title)}" container`,parameters:[],requestBody:{content:{"application/json":{schema:{$ref:`#/components/schemas/${A.title}`}}}},responses:{201:{...wA},204:{...wA},...Ne}}),n.forEach(p=>{let j=structuredClone(E);Object.values(j).forEach(w=>{w?.parameters?.unshift(...p.params),w?.tags?.unshift(...p.tags)}),x.paths[p.path]=j})),A.containerType===EA.hx){E.get={tags:[],summary:`Get the historical data of "${A.title}"`,parameters:[{name:"json",in:"query",required:!1,schema:{$ref:`#/components/schemas/${A.title}Request`}}],responses:{200:{...wA,content:{"application/json":{schema:{type:"array",items:{$ref:`#/components/schemas/${A.title}`}}}}},...Ne}},e&&(E.post={tags:[],summary:`Insert data into the "${eA(A.title)}" container`,parameters:[{name:"allow_future_date",in:"query",description:"Allow inserting records with a stamp value in the future",schema:{type:"boolean"}}],requestBody:{content:{"application/json":{schema:{$ref:`#/components/schemas/${A.title}`}}}},responses:{201:{...wA},400:{description:"Bad request",...$t},...Ne}});let p=n[0],j=structuredClone(E);Object.values(j).forEach(R=>{R?.parameters?.unshift(...p.params),R?.tags?.unshift(...p.tags)}),x.paths[p.path]=j;let w={...wA,content:{"application/json":{schema:{$ref:`#/components/schemas/${A.title}`}}}},g=`${p.path}/youngest`,S={get:structuredClone(j.get)};S.get.summary=`Get the youngest record of "${A.title}" container`,S.get.responses[200]=w;let T=e?2:1;S.get.parameters[T].schema.$ref=`#/components/schemas/${A.title}RequestSingle`,x.paths[g]=S;let q=`${p.path}/oldest`,L={get:structuredClone(j.get)};L.get.summary=`Get the oldest record of "${A.title}" container`,L.get.responses[200]=w,L.get.parameters[T].schema.$ref=`#/components/schemas/${A.title}RequestSingle`,x.paths[q]=L}}var Dv=G0.TransferDirection,Rn=" new szTemp{64};",Gn=" return strcat(aData, szTemp, sizeof(szTemp));";function pv(x){if(!x.printf&&x.printfFormat==="memtostr")return"bin";if(!x.printf)return null;let A=x.rwp||"%n",e=A.includes("["),t=A.includes("{")||e;if(x.printfFormat==="stampToISOString")return t?null:"stamp";switch(x.printf){case"%d":return t?null:"d";case"%f":return t?null:"f";case"%s":return e?null:"s";default:return null}}function Ps(x){if(x.type==="shadow"||x.shadowRef)return null;let A=cA(x);return!A||A==="skip"?null:pv(A)}function bv(x){return[G0.ContainerType.hx,G0.ContainerType.cx].includes(x.containerType)&&x.transferDirection!==Dv.backendOnly}function dD(x){if(x.type==="shadow"||x.shadowRef)return!1;let A=cA(x);return!!A&&A!=="skip"}function uD(x,A,e){let r=x.name.indexOf("]"),t=r>=0?x.name.substring(r+1):"",i=`${x.arrayRef.name}|${t}|${A}`;e.has(i)||e.set(i,{fields:[],formatType:A}),e.get(i).fields.push(x)}function DD(x){let A=[],e=new Map,r=new Set,t=!1;for(let i of x){if(!dD(i))continue;let n=Ps(i);i.arrayRef&&n?uD(i,n,e):(A.push(i),n?r.add(n):t=!0)}return{standaloneFields:A,groupMap:e,usedFormats:r,hasInlineFields:t}}function pD(x,A,e){e.sort((E,u)=>E.arrayRef.index-u.arrayRef.index);let r=e.map(E=>E.byteOffset),t=r[1]-r[0];if(!(t>0&&r.every((E,u)=>u===0||E-r[u-1]===t)))return null;let[n,F]=A.split("|"),v=e[0].library?`_${h0.generateHashForLibraryName(e[0].library)}`:"DDE_";return{arrayName:n,subField:F,fields:e,startOffset:r[0],endOffset:r[r.length-1],step:t,formatType:Ps(e[0]),pawnVarBase:`${v}${x}_${n}`}}function bD(x,A){let{standaloneFields:e,groupMap:r,usedFormats:t,hasInlineFields:i}=DD(A),n=[];for(let[F,v]of r){let{fields:E,formatType:u}=v;if(E.length<2){e.push(...E),t.add(u);continue}let p=pD(x,F,E);p?(t.add(u),n.push(p)):(e.push(...E),t.add(u))}return e.sort((F,v)=>F.byteOffset-v.byteOffset),{arrayGroups:n,standaloneFields:e,usedFormats:t,hasInlineFields:i}}function mD(x){let A=new Set;for(let[,e]of Object.entries(x.containers))if(bv(e))for(let r of e.fields){let t=Ps(r);t&&A.add(t)}return A}function jD(x,A){A.has("d")&&(x("stock _DDE_fmt_d(aData{}, value) {"),x(Rn),x(' sprintf(szTemp, _, "%d", value);'),x(Gn),x("}")),A.has("f")&&(x(""),x("stock _DDE_fmt_f(aData{}, Float:value) {"),x(Rn),x(' sprintf(szTemp, _, "%.3f", value);'),x(Gn),x("}")),A.has("s")&&(x(""),x("stock _DDE_fmt_s(aData{}, value{}) {"),x(Rn),x(' sprintf(szTemp, _, "%s", value);'),x(Gn),x("}")),A.has("stamp")&&(x(""),x("stock _DDE_fmt_stamp(aData{}, value) {"),x(Rn),x(' sprintf(szTemp, _, "%s", (stampToISOString(value)));'),x(Gn),x("}")),A.has("bin")&&(x(""),x("stock _DDE_fmt_bin(aData{}, mem{}, dim) {"),x(" #pragma warning disable 224"),x(" memtostr(aData, mem, 0, dim);"),x(" #pragma warning disable 224"),x(" return dim;"),x("}"))}function hD(x,A){return A===1?x===0?"idx":`idx - ${x}`:x===0?`idx / ${A}`:`(idx - ${x}) / ${A}`}function gD(x,A,e){let r=`idx >= ${x} && idx <= ${A}`;if(e===1)return r;let t=x===0?`idx % ${e} == 0`:`(idx - ${x}) % ${e} == 0`;return`${r} && ${t}`}function yD(x,A){let{startOffset:e,endOffset:r,step:t,formatType:i,pawnVarBase:n,subField:F}=A,v=hD(e,t),E=gD(e,r,t);if(x(` if (${E}) {`),i==="bin"){let u=`${n}[${v}]${F}`,p=F?F.substring(1):"",j=p?`${n}_${p}_dim`:`${n}_dim`;x(` return _DDE_fmt_bin(aData, ${u}, ${j});`)}else x(` return _DDE_fmt_${i}(aData, ${n}[${v}]${F});`);x(" }")}function kD(x,A,e){if(e.type==="shadow"||e.shadowRef)return;let r=cA(e);if(!r||r==="skip")return;let i=`${e.library?`_${h0.generateHashForLibraryName(e.library)}`:"DDE_"}${A}_${e.name}`,n=pv(r);if(n==="bin")x(` case ${e.byteOffset}: return _DDE_fmt_bin(aData, ${i}, ${i}_dim);`);else if(n)x(` case ${e.byteOffset}: return _DDE_fmt_${n}(aData, ${i});`);else{if(x(` case ${e.byteOffset}: {`),r.printf){let F=i;r.printfFormat&&(F=`(${r.printfFormat}(${F}))`),x(` sprintf(szTemp, _, "${r.printf}", ${F});`),x(" return (strcat(aData, szTemp, sizeof(szTemp)));")}x(" }")}}function wD(x,A,e){x(` case '${A.at(-1)}': {`),x(` return _DDE_local_${e.title}(aData, idx);`),x(" }")}function uv(x,A,e){let r=e===G0.ContainerType.cx?"c":"h",t=e===G0.ContainerType.cx?"config":"histdata";x(` if(cname{0} == '${r}'){`),x(" switch(cname{1}) {");for(let[i,n]of Object.entries(A.containers))e===n.containerType&&i.startsWith(t)&&n.transferDirection!==Dv.backendOnly&&wD(x,i,n);x(" default:"),x(" return OK;"),x(" }"),x(" return OK;"),x(" }")}function _D(x,A){let e=bD(A.title,A.fields);x(""),x(`stock _DDE_local_${A.title}(aData{}, idx) {`),e.hasInlineFields&&x(" new szTemp{64};");for(let r of e.arrayGroups)yD(x,r);if(e.standaloneFields.length>0){x(" switch(idx) {");for(let r of e.standaloneFields)kD(x,A.title,r);x(" default:"),x(" return OK;"),x(" }")}x(" return OK;"),x("}")}function SD(x,A){for(let[,e]of Object.entries(A.containers))bv(e)&&_D(x,e)}function mv(x){let A=[],e=A.push.bind(A),r=mD(x);return jD(e,r),r.size>0&&e(""),e("stock DDE_get_local_data(cname{}, aData{}, idx) {"),uv(e,x,G0.ContainerType.cx),uv(e,x,G0.ContainerType.hx),e(" return OK;"),e("}"),SD(e,x),A.join(`
2340
+ `)}var yv=h0.yamlRangeToLineInformation,Pt=e0.filePaths.dde.path,gA;(n0=>{let x=G0.DDEJson,A=h0.convertBlobToString;n0.DDE_SCHEMA=ga;async function r(M,y){let O=await y.readFile(M);return A(O)}n0.readYamlFile=r;async function t(M,y,O=e0.fileNames.mainDDE,Y){let W=[],H=await z.read(M,y),J=await jv(M,y,H);if(Y)for(let Z of J){let{result:i0,unresolvedKeys:U}=Fx.replaceDefineTemplates(Z.yaml,Y);Z.yaml=i0;for(let v0 of U)W.push({file:Z.path,level:"error",message:`Unresolved define template: {{${v0}}}`,line:0,startCharacter:0,endCharacter:0})}for(let Z of J)W.push(...v(Z.path,Z.yaml));let s0=mx.Utils.joinPath(M,Pt,O),r0=await r(s0,y);if(Y){let{result:Z,unresolvedKeys:i0}=Fx.replaceDefineTemplates(r0,Y);r0=Z;for(let U of i0)W.push({file:s0,level:"error",message:`Unresolved define template: {{${U}}}`,line:0,startCharacter:0,endCharacter:0})}return W.push(...v(s0,r0)),{manifest:H,libraryFiles:J,main:{path:s0,yaml:r0},diagnostics:W}}n0.validate=t;async function i(M,y,O,Y=e0.fileNames.mainDDE){let W=await z.read(M,y),H=await Fx.read(M,y,O),J=await t(M,y,Y,H.flat);if(J.diagnostics.filter(B0=>B0.level==="error").length>0)return{ddeJSON:null,diagnostics:J.diagnostics};let r0=await w(M,y,O),Z=new qn.PreCompiler(W,J.libraryFiles,r0),i0=Z.parseLibraries();if(i0.find(B0=>B0.level==="error"))return{ddeJSON:null,diagnostics:[...J.diagnostics,...i0]};let{ddeJSON:v0,diagnostics:f0}=Z.parseMainDDE(J.main.path,J.main.yaml);return{ddeJSON:v0,diagnostics:[...J.diagnostics,...f0]}}n0.compileDDE=i;let n=new hv.default({strict:!1,allErrors:!0,verbose:!0});(0,gv.default)(n);let F=n.compile(n0.DDE_SCHEMA);function v(M,y){let O=new Un.LineCounter,Y=(0,Un.parseDocument)(y,{lineCounter:O,keepSourceTokens:!0}),W=[];for(let s0 of Y.errors){let r0=s0.pos?yv(O,[s0.pos[0],s0.pos[1],s0.pos[1]]):{line:0,startCharacter:0,endCharacter:0};W.push({file:M,level:"error",message:s0.message,...r0})}if(W.length>0)return W;let H=Y.toJSON();if(!F(H)){let r0=(F.errors||[]).filter(i0=>i0.keyword!=="if"),Z=new Set;for(let i0 of r0){let U=TD(i0);if(Z.has(U))continue;Z.add(U);let v0=ND(Y,O,i0);W.push({file:M,level:"error",message:U,...v0})}}return W}n0.validateJsonSchema=v,n0.PreCompiler=(M,y,O)=>new qn.PreCompiler(M,y,O);function u(M,y){return ys(M,y)}n0.generateMyDatanetXML=u;async function p(M,y,O,Y){let W=await z.read(M,y),H=ys(W,Y),J=mx.Utils.joinPath(M,e0.filePaths.dist.ddeXmlPath);await y.writeFile(J,H),O.log("Generated",e0.filePaths.dist.ddeXmlPath)}n0.exportMyDatanetXML=p;async function j(M,y,O,Y,W){let H=mx.Utils.joinPath(M,e0.filePaths.studio.auto.dde.historyJson);await y.rm(H).catch(console.error);let J=await z.read(M,y);if(!z.isApp(J)||!J.registry?.id)return;if(!W){O.warn("Could not fetch dde of previous version: No API token provided.");return}let s0=KA.coerce(J.version);try{let i0=(await ox.getExistingApplication(W,J.publisher,J.registry.id,Y)).versions.find(B0=>!KA.prerelease(B0.version)&&KA.lte(B0.version,s0)),U=i0?.files.find(B0=>B0.name==="dde.json");if(!U){O.warn("Could not find a valid previous released app version to fetch the previous dde from.");return}let v0=await fetch(U.downloadUrl,{headers:{...FA(W),...ox.injectSemverHeader(!0)}});if(v0.status!==200){O.warn(`Could not fetch the dde.json of version "${i0?.version}"`);return}let f0=await v0.text();await y.writeFile(H,f0),O.log(`Saved history.json of previous app version ${i0.version}`)}catch(r0){O.error("Failed to fetch the dde of previous version",r0)}}n0.fetchPreviousHistoryJson=j;async function w(M,y,O){try{let Y=mx.Utils.joinPath(M,e0.filePaths.studio.auto.dde.historyJson);if(await y.stat(Y)){let H=await y.readFile(Y);return JSON.parse(A(H))}let W=mx.Utils.joinPath(M,Pt,"history.json");if(await y.stat(W)){O.warn(`"${e0.filePaths.studio.auto.dde.historyJson}" does not exist - fallback to "${Pt}history.json"`);let H=await y.readFile(W),J=JSON.parse(A(H)),s0=await z.read(M,y),r0=KA.coerce(s0.version)?.version,Z=Object.keys(J||{}).sort(KA.rcompare).find(U=>U!==r0);if(!Z)return null;let i0=J[Z];return{version:Z,...i0}}}catch(Y){O.error("Failed to read history.json",Y)}return O.warn("history.json does not exist"),null}n0.getHistoryJson=w;function g(M,y){return{version:KA.coerce(y.version)?.version||"1.0.0",...structuredClone(M)}}n0.buildHistoryJson=g;async function S(M,y,O,Y){let W=await z.read(M,y),H=g(Y,W),J=mx.Utils.joinPath(M,e0.filePaths.dist.historyJson);await y.writeFile(J,JSON.stringify(H,null," ")),O.log("Generated",e0.filePaths.dist.historyJson)}n0.exportHistoryJson=S;async function T(M,y){return y.rm(mx.Utils.joinPath(M,e0.filePaths.studio.auto.dlo.path))}n0.clearAutoDloDir=T;async function q(M,y,O,Y){await T(M,y);let W=await z.read(M,y),H=await jv(M,y,W),J=await Fx.read(M,y,O),s0=av(Y,J,W),Z=new St(W,Y,null).generate();for(let cx of H){let Kx=new St(W,Y,cx.libraryName),{globals:_A,helper:SA}=Kx.generate(),vx=[..._A,...SA].join(`\r
2341
+ `),ex=e0.filePaths.studio.auto.dlo.autoDdeInc.replace("X",cx.libraryName),rA=mx.Utils.joinPath(M,ex);vx.length&&(O.log("Generated",ex),await y.writeFile(rA,vx))}let i0=vv(Y),U=Fv(Y,H.map(cx=>cx.libraryName)),v0=mv(Y),f0=mx.Utils.joinPath(M,e0.filePaths.studio.auto.dlo.autoInc);await y.writeFile(f0,s0),O.log("Generated",e0.filePaths.studio.auto.dlo.autoInc);let B0=mx.Utils.joinPath(M,e0.filePaths.studio.auto.dlo.autoUplinkInc);await y.writeFile(B0,U),O.log("Generated",e0.filePaths.studio.auto.dlo.autoUplinkInc);let d0=mx.Utils.joinPath(M,e0.filePaths.studio.auto.dlo.autoLocalDataInc);await y.writeFile(d0,v0),O.log("Generated",e0.filePaths.studio.auto.dlo.autoLocalDataInc);let T0=mx.Utils.joinPath(M,e0.filePaths.studio.auto.dlo.autoDdeInc.replace("X","app"));await y.writeFile(T0,[...Z.globals,...Z.helper].join(`
2342
+ `)),O.log("Generated",e0.filePaths.studio.auto.dlo.autoDdeInc.replace("X","app"));let L0=mx.Utils.joinPath(M,e0.filePaths.studio.auto.dlo.autoDdeInc.replace("X","main"));await y.writeFile(L0,i0),O.log("Generated",e0.filePaths.studio.auto.dlo.autoDdeInc.replace("X","main")),await R(M,y,O)}n0.exportAutoDloFiles=q;async function L(M,y,O,Y){let W=await z.read(M,y),H=z.isLibrary(W),J=mx.Utils.joinPath(M,e0.filePaths.dist.path,"dde-api.yaml");await y.rm(J).catch(()=>{});let s0=mx.Utils.joinPath(M,e0.filePaths.dist.ddeApi);if(await y.writeFile(s0,$s(Y,W)),O.log("Generated",e0.filePaths.dist.ddeApi),H){let r0=mx.Utils.joinPath(M,e0.filePaths.dist.ddeApiPath,`${W.name}.yaml`),Z=$s(Y,W,W.name);Z.length&&(await y.writeFile(r0,Z),O.log("Generated",e0.filePaths.dist.ddeApiPath+`${W.name}.yaml`))}}n0.exportOpenApi=L;async function R(M,y,O){let Y=mx.Utils.joinPath(M,e0.filePaths.studio.auto.dlo.defaultInc),W=await fv(M,y);await y.writeFile(Y,W),O.log("Generated",e0.filePaths.studio.auto.dlo.defaultInc)}n0.exportDefaultInc=R})(gA||={});async function jv(x,A,e){let r=[],t=await Ax.getAll(e);for(let i in t){let n=Ax.dependencyToPath(x,i),F=Ax.dependencyIdToName(i),v=mx.Utils.joinPath(n,`${Pt}/${F}.dde`);await A.stat(v)&&r.push({libraryName:F,path:v,yaml:await gA.readYamlFile(v,A)})}if(z.isLibrary(e)){let i=mx.Utils.joinPath(x,`/${Pt}/${e.name}.dde`);await A.stat(i)&&r.push({libraryName:e.name,path:i,yaml:await gA.readYamlFile(i,A)})}return r}function $D(x,A,e){if(typeof x=="string")return x;if(typeof x!="object"||x===null)return"";let r=x[A];if(typeof r=="string")return r;if(typeof r!="object"||r===null)return"";let t=e?.missingProperty;return t?r[t]??"":""}function PD(x,A,e,r){let i={required:()=>`Missing required property '${A.missingProperty}'.`,additionalProperties:()=>`Unknown property '${A.additionalProperty}' is not allowed.`,type:()=>`Must be of type '${A.type}'.`,enum:()=>`Must be one of the allowed values: ${JSON.stringify(A.allowedValues)}.`,pattern:()=>`Value does not match the required pattern. ${r?.patternErrorMessage??e}`,minimum:()=>`${e}.`,maximum:()=>`${e}.`,exclusiveMinimum:()=>`${e}.`,exclusiveMaximum:()=>`${e}.`,not:()=>`This value is not allowed here. ${r?.description??""}`.trimEnd(),anyOf:()=>`Value does not match any of the allowed schemas. ${r?.description??""}`.trimEnd(),oneOf:()=>`Value does not match any of the allowed schemas. ${r?.description??""}`.trimEnd()}[x];return i?i():e}function TD(x){let A=x.instancePath||"/",e=x.parentSchema,r=$D(e?.errorMessage,x.keyword,x.params);if(r)return`${A}: ${r}`;let t=x.message||"unknown validation error";return`${A}: ${PD(x.keyword,x.params,t,e)}`}function qD(x,A){let e=A.split("/").filter(Boolean).map(r=>{let t=Number(r);return Number.isNaN(t)?r:t});for(let r=e.length;r>=0;r--){let t=e.slice(0,r),i=x.getIn(t,!0);if(i?.range)return i.range}return null}function ND(x,A,e){let r=qD(x,e.instancePath||"");return r?yv(A,r):{line:0,startCharacter:0,endCharacter:0}}var Ts=require("vscode-uri");var wv=ax(require("node:child_process"));var Hn;(e=>{async function x(r,t,i){let n=await z.read(r,t);if(await z.isApmPartEnabled(r,t,p0.Part.pov)){i.info("Executing POV build script",n.pov?.details.buildCommand);let{buildCommand:F,workingPath:v}=n.pov.details,E=Ts.Utils.joinPath(r,v);try{await kv(E,F,i)}catch(u){throw u.code?new Error(`APM part '${p0.Part.pov}' has errors. Aborted.`):u}}}e.tryBuildPov=x;async function A(r,t,i){let n=await z.read(r,t);if(await z.isApmPartEnabled(r,t,p0.Part.blo,n)){i.info("Executing BLO build script",n.blo?.buildCommand);let{buildCommand:F,workingPath:v}=n.blo,E=Ts.Utils.joinPath(r,v);try{await kv(E,F,i)}catch(u){throw u.code?new Error(`APM part '${p0.Part.blo}' has errors. Aborted.`):u}}}e.tryBuildBlo=A})(Hn||={});async function kv(x,A,e){return new Promise((r,t)=>{wv.exec(A,{cwd:x.fsPath,env:process.env},(i,n,F)=>{e.log(n),F&&e.error(F),i&&t(i),r(null)})})}var Tt=require("@gera2ld/tarjs"),_v=h0.convertBlobToString,qs=require("pako"),bx;(p=>{class x extends Error{_mergedDiagnostics;constructor(w,g){super(w),this.name="BuildError",this._mergedDiagnostics=g}get mergedDiagnostics(){return this._mergedDiagnostics}}p.BuildError=x;async function A(j,w,g,S,T,q=!0,L){q=ID(g,q),await MD(j,w,g,S,T,q);try{let M=await Fx.read(j,w,g);await LD(j,w,g,M)}catch(M){g.warn("Could not generate defines.ts:",M)}let R={[p0.Part.dde]:[],[p0.Part.dlo]:[],[p0.Part.dfiles]:[]},n0={[p0.Part.dde]:OD,[p0.Part.dlo]:RD,[p0.Part.dfiles]:GD};try{for(let M of[p0.Part.dde,p0.Part.dlo,p0.Part.dfiles])if(q.includes(M)&&(g.info(`Building ${M.toUpperCase()}...`),await zD(g,M,n0[M],R[M],j,w)))return R}catch(M){throw L?new x(M?.message,R):M}return q.includes(p0.Part.pov)?await Hn.tryBuildPov(j,w,g):g.info("Skipping pov build"),q.includes(p0.Part.blo)?await Hn.tryBuildBlo(j,w,g):g.info("Skipping blo build"),await UD(j,w,g),await HD(j,w,g),g.done("Project build completed."),R}p.buildAll=A;async function e(j,w,g,S,T,q,L){let R=await z.read(j,w);return z.isLibrary(R)?(g.info("Library project detected. Publishing library..."),i(j,w,g,T,S)):(g.info("App project detected. Publishing app..."),t(j,w,g,T,q,L,S))}p.release=e;async function r(j,w,g,S,T,q){let L=await z.read(j,w),R=`${L.name}-${L.version}.tar.gz`,n0=null;if(z.isLibrary(L))g.info("Library project detected. Packing library..."),n0=await Sv(j,w,g,T,S);else{g.info("App project detected. Packing app...");let y=await $v(j,w,g,T,q,S);n0=await VD(y)}let M=or.Utils.joinPath(j,R);n0!==null?(await w.writeFile(M,n0),g.done(`Packaged: ${M.fsPath}`)):g.error(`Could not create archive: ${M.fsPath}`)}p.pack=r;async function t(j,w,g,S,T,q=null,L){if(!await p0.validateAccess(j,w,S,!1,L))throw new Error("Could not validate access to application");let n0=await $v(j,w,g,S,T,L);await p0.updateProfile(j,w,S,L);let M=await p0.publishTag(j,w,S,n0,L);if(q!==null){let y=await z.read(j,w);await ox.updateExistingApplicationVersion(S,y.publisher,y.registry?.id,y.version,{allowedBackends:q},L),g.info(`Tag "${M.version}" with phase "${M.phase}" shared with ${[...q].join(";")}!`)}g.done(`Tag "${M.version}" with phase "${M.phase}" published!`)}p.releaseAPM=t;async function i(j,w,g,S,T){let q=await z.read(j,w),L=await Sv(j,w,g,S,T);await Nr.publishPackage(S,q,L,T),g.done(`Library "${q.publisher}/${q.name}" with version "${q.version}" published!`)}p.releaseLibrary=i;async function n(j,w,g,S,T,q,L,R=null){if(q==="*"){let H=await z.read(j,w);q=`${H.name}-${H.version}.tar.gz`,g.info(`Publishing detected archive package "${q}"...`)}let n0=or.Utils.joinPath(j,q);if(!await w.stat(n0))throw new Error(`Archive package not found: ${n0.fsPath}`);let M=await w.readFile(n0),y=await WD(M),{publisher:O,registry:Y,version:W}=y;z.isLibrary(y)?(await Nr.publishPackage(S,y,M,T),g.done(`Library "${O}/${y.name}" with version "${y.version}" published!`)):(await ox.updateApplicationFile(S,O,Y.id,W,"app.tar.gz",M,T),await ox.updateExistingApplicationVersion(S,O,Y?.id,W,{allowedBackends:R||void 0,phase:L||void 0},T),g.info(`Tag "${W}" with phase "${L}" shared with ${[...R||""].join(";")}!`),g.done(`Tag "${W}" with phase "${L}" published!`))}p.publishArchive=n;async function F(j,w,g){let S;try{S=await w.readFile(or.Utils.joinPath(j,"README.md"))}catch{throw new Error('Could not find "README.md". "README.md" is required for publishing.')}if(_v(S)===e0.readme(g))throw new Error('"README.md" matches the default template. Please write a brief project description.');return S}p.getReadmeFile=F;async function v(j,w){let g;try{g=await w.readFile(or.Utils.joinPath(j,"CHANGELOG.md"))}catch{throw new Error('Could not find "CHANGELOG.md". "CHANGELOG.md" is required for publishing.')}if(_v(g)===e0.changelog)throw new Error('"CHANGELOG.md" matches the default template.');return g}p.getChangelogFile=v;async function E(j,w,g,S){let T=await z.read(j,w),{name:q,publisher:L,description:R}=T,n0=z.validateProjectName(q,z.isLibrary(T));if(n0)throw new Error(`name: ${n0}`);let M=z.validateDescription(R);if(M)throw new Error(`description: ${M}`);let y=z.validatePublisherId(L)||await z.validatePublisherOnline(g,L,S);if(y)throw new Error(`publisher: ${y}`);if(!z.isLibrary(T)&&(await z.validateApplicationIcon(j,w,T),z.validateEngineSettings(T),z.isApp(T)&&await z.isApmPartEnabled(j,w,p0.Part.dlo,T)&&(!T.dpid||!Object.values(z.DeviceProfiles).includes(T.dpid))))throw new Error("dpid: The device profile is needed to compile a dlo")}p.validatePublishSettings=E;async function u(j,w){let g=qs.ungzip(j),S=await Tt.TarReader.load(g),T={};for(let q of S.fileInfos)w.includes(q.name)&&(T[q.name]=S.getFileBlob(q.name));return T}p.readFilesFromTarGz=u})(bx||={});function ID(x,A){let e=Object.values(p0.Part);return A===!0?(x.info("Building project..."),e):A===!1?[]:A}async function MD(x,A,e,r,t,i){await Ax.validateMinimumBackendVersion(x,A,e),i.includes(p0.Part.dde)&&await gA.fetchPreviousHistoryJson(x,A,e,r,t)}async function LD(x,A,e,r){r.defaultsOnly?(await Fx.exportDefinesTs(x,A,r.defaultsOnly),e.log("Generated",e0.filePaths.dist.definesTs,"(defaults only)"),await Fx.exportDefinesTs(x,A,r,e0.filePaths.dist.definesAppTs),e.log("Generated",e0.filePaths.dist.definesAppTs,"(with app.ini overrides)")):(await Fx.exportDefinesTs(x,A,r),e.log("Generated",e0.filePaths.dist.definesTs))}async function OD(x,A,e){let r=await gA.compileDDE(x,A,e);if(r.ddeJSON){await gA.exportMyDatanetXML(x,A,e,r.ddeJSON);let t=await z.read(x,A);z.isLibrary(t)||await gA.exportHistoryJson(x,A,e,r.ddeJSON),await gA.exportOpenApi(x,A,e,r.ddeJSON),await z.isApmPartEnabled(x,A,p0.Part.dlo,t)&&(await gA.exportAutoDloFiles(x,A,e,r.ddeJSON),await Wt.exportDloConfig(x,A,e))}return r.diagnostics}async function RD(x,A,e){let r=new qr(x,A,e),{diagnostics:t}=await r.compile(x,A);return t}async function GD(x,A,e){return await Yt.process(x,A,e)}async function UD(x,A,e){let r=await z.read(x,A);z.isLibrary(r)&&await yr.normalizeLibraryParts(x,A,r,e)}async function HD(x,A,e){let r=or.Utils.joinPath(x,e0.fileNames.reportTemplate);if(await A.stat(r)){let t=or.Utils.joinPath(x,e0.filePaths.dist.reportTemplate);await A.copy(r,t),e.log(`Copied "${e0.fileNames.reportTemplate}" to dist folder.`)}}function JD(x,A,e){A!==p0.Part.dlo&&KD(x,e);let r=e.some(t=>t.level==="error");if(r){let t=`APM part "${A}" has errors. Aborted.`;throw new Error(t)}return r}async function zD(x,A,e,r,t,i){let n=await e(t,i,x);return r.push(...n),JD(x,A,n)}function KD(x,A){A.forEach(e=>{let r=e.startCharacter?`:${e.startCharacter+1}`:"",t=`${e.file.path}:${e.line+1}${r} - ${e.message}`;e.level==="error"?x.error(t):e.level==="warning"?x.warn(t):x.log(t)})}async function Sv(x,A,e,r,t){let i=await z.read(x,A);return await z.validateBasicManifest(x,A,i),await bx.buildAll(x,A,e,t,r),await Nr.createArchive(x,A)}async function $v(x,A,e,r,t,i){if(!Object.values(p0.TagPhase).includes(t))throw new Error(`ReleasePhase: ${t} is not a valid release phase`);return await z.validateBasicManifest(x,A,null),await bx.buildAll(x,A,e,i,r),await p0.createTag(x,A,t)}async function VD(x){let A=new Tt.TarWriter;for(let[r,t]of x.entries())if(r==="tag"){let i=t;A.addFile(r,i)}else{let i=t;A.addFile(r,await i.arrayBuffer())}let e=await A.write();return qs.gzip(await e.arrayBuffer())}async function WD(x){let A=await XD(x,["studio.json","src/studio.json"]);if(!A)throw new Error('Could not find "studio.json" in archive');return JSON.parse(await A.text())}async function XD(x,A){let e=qs.ungzip(x),r=await Tt.TarReader.load(e);for(let t of r.fileInfos)if(A.includes(t.name))return r.getFileBlob(t.name);return null}var YD=h0.bufferToBase64;var p0;(u=>{let x;(L=>(L.alpha="alpha",L.beta="beta",L.rc="rc",L.release="release",L.stage="stage",L.passive="passive",L.withdrawn="withdrawn"))(x=u.TagPhase||={});let A;(T=>(T.dde="dde",T.dlo="dlo",T.pov="pov",T.blo="blo",T.dfiles="dfiles"))(A=u.Part||={});function e(p){let{description:j,name:w,pov:g,engines:S,blo:T,publisher:q,type:L}=p,R=L||z.ProjectTypes.app,n0={name:w,abstract:j,author:q||"",pov_location:z.PovLocation.embedded,pov_details_lowlevel:!1,required_be:S?.backend,required_hwfw:S?.hwfw?.join(";"),required_productcode:S?.productId?.join(";"),blo_level:T?.accessLevel||z.BloAccessLevel.restricted,pip_id:""};return g&&g.details&&(n0.pov_location=z.PovLocation.pure,n0.pov_details_lowlevel=!!g.details.lowLevel),R==="addon"&&(n0.required_hwfw=void 0,n0.required_productcode=void 0,n0.addon_max_sources=1,n0.addon_max_per_site=p.maxInstancesPerSite),n0}u.createBaseTagHeader=e;async function r(p,j,w){let g=await z.read(p,j),S=e(g),T={version:g.version,...S,phase:w};return await i(p,j,g,T)}u.createTag=r;async function t(p,j){let w=await z.read(p,j),S={...e(w),blo_autostart:!1};return i(p,j,w,S)}u.createDevTag=t;async function i(p,j,w,g){let S=new FormData;S.append("tag",JSON.stringify(g)),S.append(`src/${z.fileName}`,new Blob([await z.readAsBlob(p,j)]));let T=new Blob([await j.readFile(ve.Utils.joinPath(p,e0.filePaths.dist.ddeXmlPath))]);if(S.append("bin/dde/xml",T),w.icon){let L=await j.readFile(ve.Utils.joinPath(p,w.icon)),R=YD(L);S.append("previews/00.png",new Blob([`data:image/png;base64,${R}`]))}if(Object.hasOwn(g,"phase")){let L=await bx.getReadmeFile(p,j,g.name),R=await bx.getChangelogFile(p,j);S.append("previews/README.md",new Blob([L])),S.append("previews/CHANGELOG.md",new Blob([R]))}if(await z.isApmPartEnabled(p,j,"dlo")){let L=new Blob([await j.readFile(ve.Utils.joinPath(p,e0.filePaths.dist.mainAmxPath))]);S.append("bin/dlo/amx",L)}if(await z.isApmPartEnabled(p,j,"pov",w)){await Pv(p,j,S,e0.filePaths.dist.povDetailsPath,"bin/pov/details");let L=new TextEncoder().encode('<!DOCTYPE html><html lang="en">');S.append("bin/pov/list/index.html",new Blob([L]))}let q=await j.findFiles(p,`${e0.filePaths.dist.dfilesPath}/*`);for(let L of q){let R=new Blob([await j.readFile(L)]);S.append(`bin/dfiles/${ve.Utils.basename(L)}`,R)}return await z.isApmPartEnabled(p,j,"blo",w)&&await Pv(p,j,S,e0.filePaths.dist.bloPath,"bin/blo"),await QD(p,j,S),S}u.createBuffer=i;async function n(p,j,w,g,S){let T=await z.read(p,j);g||await bx.validatePublishSettings(p,j,w,S);let{registry:q}=T,L=q?.id;if(!L&&!g&&(L=await F(p,j,w,T,S)),L){let{publisher:R}=T;if(!R)return null;try{return{id:L,...await ox.getExistingApplication(w,R,L,S)}}catch(n0){if(n0?.message==="Could not find given application")return L=await F(p,j,w,T,S),{id:L,...await ox.getExistingApplication(w,R,L,S)}}}return null}u.validateAccess=n;async function F(p,j,w,g,S){let T="myDatanet",{publisher:q,name:L,description:R,registry:n0}=g,M={id:n0?.id,type:g.type||z.ProjectTypes.app,name:L,targetSystem:T,description:R||"",allowedBackends:null};z.isAddon(g)&&(M.allowedApplications=null);let y=await ox.createNewApplication(w,q,M,S);if(!y)throw new Error("Failed to initialize application");return g.registry={id:y},await z.write(p,j,g),y}u.registerNew=F;async function v(p,j,w,g){let{name:S,publisher:T,description:q,registry:L}=await z.read(p,j),R=L?.id;await ox.updateExistingApplication(w,T,R,{description:q,name:S,targetSystem:"myDatanet"},g)}u.updateProfile=v;async function E(p,j,w,g,S){let{publisher:T,registry:q,version:L}=await z.read(p,j);return await ox.publishApplicationVersion(w,T,q?.id,L,g,S)}u.publishTag=E})(p0||={});async function Pv(x,A,e,r,t){let i=await A.findFiles(x,`${r}/**`);for(let n of i){let F=ve.Utils.joinPath(x,r),v=n.path.substring(F.path.length+1),E=new Blob([await A.readFile(ve.Utils.joinPath(x,`${r}/${v}`))]);e.append(`${t}/${v}`,E)}}async function QD(x,A,e){let r=ve.Utils.joinPath(x,e0.filePaths.dist.reportTemplate);if(await A.stat(r)){let i=new Blob([await A.readFile(r)]);e.append("bin/pov/mdn_report_template.json",i)}let t=ve.Utils.joinPath(x,e0.filePaths.dist.historyJson);await A.stat(t)&&e.append("src/dde/history.json",new Blob([await A.readFile(t)]))}var Vv=ax(require("update-notifier"));function ZD(x,A,e){let r=A.split(".").filter(Boolean),t=x;for(let i=0;i<r.length;i++){let n=r[i];i===r.length-1?t[n]=e:((typeof t[n]!="object"||t[n]===null||Array.isArray(t[n]))&&(t[n]={}),t=t[n])}}function Tv(x){let A=x.args,e={};for(let r=0;r<A.length;r++){let t=A[r];if(!t||!t.startsWith("--"))continue;let[i,n]=t.split("=",2),F=i.slice(2),v=!0;if(n!==void 0)v=n;else{let E=A[r+1];E&&!E.startsWith("-")&&(v=E,r++)}F.includes(".")?ZD(e,F,v):e[F]=v}return e}var qv=require("vscode-uri");function zn(x){return x instanceof Error?x.message:String(x)}function fe(x,A){return{success:!1,errorCode:x,message:A}}async function A7(x){let{cwd:A,fs:e,logger:r,env:t,apiToken:i,options:n}=x;r.info("[1/5] Building project...");try{let F=n.part?n.part:!0;return await z.validateBasicManifest(A,e,null),await bx.buildAll(A,e,r,t,i,F,!0),r.done("Build completed successfully"),null}catch(F){return fe(1,`Build failed: ${zn(F)}`)}}async function e7(x){let{logger:A,options:e}=x,{serial:r}=e;A.info(`[2/5] Searching for USB device with serial: ${r}...`);let t=await Cs(r,A);return t||fe(2,`USB device not found with serial number: ${r}`)}async function r7(x){let{cwd:A,fs:e,logger:r,options:t}=x,{serial:i,debug:n}=t;r.info("[3/5] Uploading binary to USB device...");let F=qv.Utils.joinPath(A,e0.filePaths.dist.mainAmxPath),v=await Gr(i,F,e,r,n);return v.success?(r.done("USB upload completed"),null):fe(3,`USB upload failed: ${v.message}`)}async function t7(x,A){A.info("[4/5] Connecting to myDatanet server...");try{return await x.authenticate()}catch(e){return fe(4,`myDatanet authentication failed: ${zn(e)}`)}}async function n7(x,A,e){if(A)try{let i=await x.getCustomer(A);return e.info(`Using customer: ${i.name} (${i._uid})`),i._uid}catch{return fe(6,`Customer "${A}" not found`)}let r=await x.getCustomers();if(r.length===0)return fe(6,"No customers available. Please specify --customer or set MYDATANET_CUSTOMER");if(r.length===1)return e.info(`Using customer: ${r[0].name} (${r[0]._uid})`),r[0]._uid;let t=r.map(i=>i.name).join(", ");return fe(6,`Multiple customers available. Please specify --customer or set MYDATANET_CUSTOMER. Available: ${t}`)}async function i7(x,A,e,r){let t=await x.getDeviceSite(A);t&&(t.app.phase==="dev"&&(e.apmId=t.app.apmid,e.applicationId=t.app.appl_id),e.siteUid=t._uid,e.siteName=t.name,e.customerUid=t.customer_uid,r.info(`Found existing site: ${t.name}`))}async function s7(x,A,e){let{cwd:r,fs:t,logger:i}=x;i.info("Creating development APM tag...");try{let n=await p0.createDevTag(r,t),F=await A.uploadDevTag(e.apmId,n);return e.applicationId=F,i.done("Development tag uploaded"),null}catch(n){return fe(5,`Development tag upload failed: ${zn(n)}`)}}async function a7(x,A,e,r){r.info("[5/5] Creating development site...");try{return e.siteUid?(e.siteName!==e.name&&await x.updateSiteName(e.siteUid,e.name),r.info(`Reusing existing site: ${e.siteUid}`),{siteUid:e.siteUid,siteName:e.name}):{siteUid:await x.createDevelopmentSite(A,e),siteName:e.name}}catch(t){return fe(6,`Site creation failed: ${zn(t)}`)}}function Nv(x,A,e=!1){if(e){x.log(JSON.stringify({siteUid:A.siteUid,siteName:A.siteName,apmId:A.apmId}));return}x.done("Development deployment completed successfully!"),x.info(""),x.info("=== Deployment Summary ==="),x.info(`Site UID: ${A.siteUid}`),x.info(`Site Name: ${A.siteName}`),x.info(`APM ID: ${A.apmId}`),x.info("==========================")}function Jn(x){return typeof x=="object"&&x!==null&&"errorCode"in x}async function Iv(x,A,e,r,t,i){let n={cwd:x,fs:A,logger:e,env:r,apiToken:t,options:i},{serial:F,server:v,customer:E,mdnToken:u}=i;e.info("Starting development deployment...");let p=await A7(n);if(p)return p;let j=await e7(n);if(Jn(j))return j;let w=await r7(n);if(w)return w;let g=new yt(v,u,e),S=await t7(g,e);if(Jn(S))return S;let T=S,q=await n7(g,E,e);if(Jn(q))return q;let L=q,R=await gs(x,A,e,F,T.name,L,i.siteName);await i7(g,F,R,e);let n0=await s7(n,g,R);if(n0)return n0;let M=await a7(g,L,R,e);return Jn(M)?M:{success:!0,siteUid:M.siteUid,siteName:M.siteName,apmId:R.apmId,message:"Development deployment completed successfully"}}var Ns="/api/1/sites/dev";function o7(x){let A=x.toUpperCase();return A!=="GET"&&A!=="HEAD"}function Is(x,A){let e=x;try{e=JSON.parse(x).err??x}catch{}let r=/E_NOT_FOUND|E_BAD_REQUEST/.test(e)?8:/E_FORBIDDEN|E_METHOD_NOT_ALLOWED/.test(e)?9:3;return new Z0(`${e} (HTTP ${A})`,r)}function F7(x,A){let e=x.replace(/\/+$/,""),r={"content-type":"application/json"};A&&(r.authorization=`Bearer ${A}`);let t=async(i,n,F)=>fetch(`${e}${n}`,{method:i,headers:r,body:F===void 0?void 0:JSON.stringify(F)});return{async api(i){let n=o7(i.method)&&i.body?JSON.parse(i.body):void 0,F=await t(i.method,i.path,n),v={};return F.headers.forEach((E,u)=>{v[u]=E}),{status:F.status,headers:v,body:await F.text()}},async dev(i,n,F){let v=await t(i,n,F),E=await v.text();if(!v.ok)throw Is(E,v.status);return E?JSON.parse(E):null},async close(){}}}async function v7(x){if(!x.serial)throw new Z0("--serial is required unless --url is given",2);let A=new $e({cwd:x.cwd,fs:x.fs,serial:x.serial,logger:x.logger,build:!1,flash:!1,pollIntervalMs:0,waitMs:x.waitMs,env:x.env,apiToken:x.apiToken,debug:x.debug,createDevice:x.createDevice,transportFactory:x.transportFactory});A.on("error",e=>x.logger.warn(e instanceof Error?e.message:String(e)));try{await A.start()}catch(e){throw await A.stop(),e}return{api:e=>A.handleApi(e),async dev(e,r,t){return f7(A,e,r,t)},close:()=>A.stop()}}function Mv(x,A,e){let r=Number.parseInt(x.get(A)??"",10);return Number.isFinite(r)?r:e}async function f7(x,A,e,r){let t=r??{},[i,n=""]=e.split("?"),F=new URLSearchParams(n);switch(`${A} ${i}`){case"GET /dev/status":return x.status();case"GET /dev/state":return x.state();case"POST /dev/at":return{cmd:t.cmd,response:await x.at(String(t.cmd))};case"POST /dev/flash":return x.flash(typeof t.file=="string"?t.file:void 0);case"POST /dev/sync":return x.sync(Array.isArray(t.tags)?t.tags:void 0);case"GET /dev/logs":return{lastSeq:x.logStream.lastSeq,records:x.logStream.since(Mv(F,"since",0),Mv(F,"limit",500))};default:throw new Z0(`unsupported route ${A} ${i}`,3)}}async function l7(x){return x.url?F7(x.url,x.token):v7(x)}async function le(x,A){let e=await l7(x);try{return await A(e)}finally{await e.close()}}function Ms(x){if(x.status>=400)throw Is(x.body,x.status);return x.status===204||x.body===""?null:JSON.parse(x.body)}async function Lv(x){return le(x,A=>A.dev("GET","/dev/status"))}async function Ov(x,A){let[e,r]=c7(A);return le(x,async t=>{let i=Ms(await t.api({path:`${Ns}/containers/${encodeURIComponent(e)}`,method:"GET"}));if(!r)return i;let n=i??{},F=Object.keys(n).find(v=>v.toLowerCase()===r.toLowerCase());if(F===void 0)throw new Z0(`unknown field '${r}' in container '${e}'`,8);return{[F]:n[F]}})}async function Rv(x,A,e){let r;try{r=JSON.parse(e)}catch(t){throw new Z0(`values are not valid JSON: ${t instanceof Error?t.message:String(t)}`,8)}return le(x,async t=>{let i=`${Ns}/containers/${encodeURIComponent(A)}`,n=await t.api({path:i,method:"PUT",body:JSON.stringify(r)});if(n.status>=400)throw Is(n.body,n.status);let F=n.headers["x-mt-mirror"]==="stale";return{container:A,written:r,stale:F,record:Ms(await t.api({path:i,method:"GET"}))}})}async function Gv(x,A,e){let r={count:-(e.limit??100)};e.from&&(r.from=e.from),e.to&&(r.until=e.to);let t=`${Ns}/timeseries/${encodeURIComponent(A)}?json=${encodeURIComponent(JSON.stringify(r))}`;return le(x,async i=>Ms(await i.api({path:t,method:"GET"})))}async function Uv(x,A){return le(x,e=>e.dev("POST","/dev/at",{cmd:A}))}async function Hv(x){return le(x,A=>A.dev("GET","/dev/state"))}async function Jv(x,A){return le(x,e=>e.dev("POST","/dev/flash",A?{file:A}:{}))}async function zv(x,A){return le(x,e=>e.dev("POST","/dev/sync",A?{tags:A}:{}))}async function Kv(x,A,e){let r=A.filter?new RegExp(A.filter):null,t=i=>{let n=i.text??"";(!r||r.test(n))&&e(i)};await le(x,async i=>{let n=0,F=async()=>{let E=await i.dev("GET",`/dev/logs?since=${n}&limit=500`);for(let u of E.records)n=Math.max(n,u.seq),t(u)};if(await F(),!A.follow)return;let v=Date.now()+(A.durationMs??3e4);for(;Date.now()<v;)await new Promise(E=>setTimeout(E,500)),await F()})}function c7(x){let A=x.indexOf(".");return A<0?[x,void 0]:[x.slice(0,A),x.slice(A+1)]}var BA=new xx.Command,Vn=(0,Vv.default)({pkg:ii}),S0=new ke.Logger,E7=()=>process.env.NODE_ENV==="local-dev-app"?"./dev/app":process.env.NODE_ENV==="local-dev-lib"?"./dev/modbus-master":process.env.NODE_ENV==="local-dev-addon"?"./dev/addon":process.env.NODE_ENV==="local-dev-analytics"?"./dev/analytics":"",ce=Jr.Utils.joinPath(Jr.URI.file(process.cwd()),E7());BA.version(ii.version).usage("<command>");BA.description(`This tool is used to manage the project dependencies, build, package and publish the project.
2332
2343
  The manifest options can be overwritten with the --option=value syntax.
2333
2344
  Example: "studio build --dlo.mainFile="./dlo/test.dlo" will overwrite the dlo.mainFile option of the manifest.
2334
2345
 
2335
- Use "studio --help" for more information.`);function fr(A,x){let r=Us(A);z.setOverwrites(r),x.catch(e=>{ux.error(e instanceof Error?e.message:e),process.exit(1)}).finally(()=>{Pn.notify()})}function FB(A){return process.env.STUDIO_ENV=A||ax.ENV.production,A&&A!==ax.ENV.production&&ux.log(`Using STUDIO_ENV=${A}`),process.env.STUDIO_ENV}function vB(A){return A?.token||null}function We(A){return A.silent&&(ux.silent=!0),{env:FB(A.env),token:vB(A)}}var Xe=new wx.Option("-e, --env <environment>","CLI target environment (defaults to STUDIO_ENV environment variable)").default(process.env.STUDIO_ENV).choices(Object.values(ax.ENV)),Ye=new wx.Option("--token <API-token>","API Access Token (defaults to STUDIO_TOKEN environment variable)").default(process.env.STUDIO_TOKEN),EB=new wx.Option("--allowedBackends <null|*|server.xz;server.yz>","specify the allowedBackends deployment for this version.").default(null),BB=Object.values(b0.TagPhase),Oa=new wx.Option("-ph --phase <release phase>","specify a release phase").choices(BB).default("release"),Ga=new wx.Option("-p --part <APM part>","APM part that should be built").choices(Object.values(b0.Part)),Tn=new wx.Option("-s, --serial <serial>","Device serial number (16 characters hex)"),Nn=new wx.Option("--debug","Enable debug logging").default(!1),fB=new wx.Option("--silent","Suppress intermediate progress output. Only the final result and errors are printed.").default(!1),CB=new wx.Option("--siteName <name>","Override the auto-generated development site name (max 50 characters)."),lB=new wx.Option("--json",'Print the deployment result as a JSON object instead of the human-readable summary. Format: {"siteUid", "siteName", "apmId"}. Best combined with --silent for machine-readable output.').default(!1),cB=new wx.Option("--server <url>","myDatanet instance URL (https:// prefix optional)").default(process.env.MYDATANET_HOST),DB=new wx.Option("--customer <customerId>","myDatanet customer UID or ID").default(process.env.MYDATANET_CUSTOMER),dB=new wx.Option("--mdn-token <token>","myDatanet API token").default(process.env.MYDATANET_TOKEN);xr.command("install").aliases(["i"]).description("install all the dependencies in your project").arguments("[dependency...]").allowExcessArguments(!0).addOption(Xe).addOption(Ye).allowUnknownOption(!0).action((A,x,r)=>{let{env:e,token:i}=We(x);fr(r,as(oe,yr,ux,e,i,A))});xr.command("build").addOption(Ga).allowExcessArguments(!0).addOption(Xe).addOption(Ye).allowUnknownOption(!0).action((A,x)=>{let{env:r,token:e}=We(A);fr(x,os(oe,yr,ux,r,e,A.part))});xr.command("publish").addOption(Oa).addOption(EB).addOption(Xe).addOption(Ye).allowUnknownOption(!0).option("-i, --packagePath <path>",'Publish the provided library or app package. Use "*" for autodetection.').action(async(A,x)=>{let{env:r,token:e}=We(A);fr(x,Fs(oe,yr,ux,r,e,A.allowedBackends,A.phase,A.packagePath))});xr.command("package").alias("pack").description("Package the project").addOption(Oa).addOption(Xe).addOption(Ye).allowUnknownOption(!0).action(async(A,x)=>{let{env:r,token:e}=We(A);fr(x,vs(oe,yr,ux,r,e,A.phase))});xr.command("run").description("Build, upload to USB device, and create development site on myDatanet").addOption(Tn.makeOptionMandatory(!0)).addOption(cB).addOption(DB).addOption(dB).addOption(Ga).addOption(Xe).addOption(Ye).addOption(Nn).addOption(fB).addOption(lB).addOption(CB).allowUnknownOption(!0).action((A,x)=>{let{env:r,token:e}=We(A),i=A.mdnToken,o=A.server;i||(ux.error("MYDATANET_TOKEN is required. Set via --mdn-token or MYDATANET_TOKEN environment variable"),Pn.notify(),process.exit(4)),o||(ux.error("Server URL is required. Set via --server or MYDATANET_HOST environment variable"),Pn.notify(),process.exit(4)),fr(x,La(oe,yr,ux,r,e,{serial:A.serial,server:o,customer:A.customer,mdnToken:i,debug:A.debug,part:A.part?[A.part]:void 0,siteName:A.siteName||void 0}).then(t=>{ux.silent=!1,t.success?(Ma(ux,t,A.json),process.exit(0)):(ux.error(t.message),process.exit(t.errorCode||1))}))});var In=xr.command("usb").description("USB device management commands");In.command("list").description("List available USB devices").action((A,x)=>{fr(x,Ta(ux))});In.command("upload").description("Upload an AMX binary to a USB device").addOption(Tn.makeOptionMandatory(!0)).requiredOption("-f, --file <path>","Path to the AMX file (relative to current directory)").addOption(Nn).action((A,x)=>{let r=Ve.Utils.joinPath(oe,A.file);fr(x,Tt(A.serial,r,yr,ux,A.debug).then(e=>{e.success?process.exit(0):(ux.error(e.message),process.exit(1))}))});In.command("sync").description("Sync a USB device with the myDatanet server").addOption(Tn.makeOptionMandatory(!0)).addOption(Nn).action((A,x)=>{fr(x,Na(A.serial,ux,A.debug).then(r=>{r.success?process.exit(0):(ux.error(r.message),process.exit(1))}))});function Ua(A){xr.parse(A)}
2346
+ Use "studio --help" for more information.`);function kx(x,A){let e=Tv(x);return z.setOverwrites(e),A.catch(r=>{S0.error(r instanceof Error?r.message:r),process.exit(1)}).finally(()=>{Vn.notify()})}function B7(x){return process.env.STUDIO_ENV=x||Fx.ENV.production,x&&x!==Fx.ENV.production&&S0.log(`Using STUDIO_ENV=${x}`),process.env.STUDIO_ENV}function C7(x){return x?.token||null}function Fr(x){return(x.silent||x.json)&&(S0.silent=!0),{env:B7(x.env),token:C7(x)}}var vr=new xx.Option("-e, --env <environment>","CLI target environment (defaults to STUDIO_ENV environment variable)").default(process.env.STUDIO_ENV).choices(Object.values(Fx.ENV)),fr=new xx.Option("--token <API-token>","API Access Token (defaults to STUDIO_TOKEN environment variable)").default(process.env.STUDIO_TOKEN),d7=new xx.Option("--allowedBackends <null|*|server.xz;server.yz>","specify the allowedBackends deployment for this version.").default(null),u7=Object.values(p0.TagPhase),Wv=new xx.Option("-ph --phase <release phase>","specify a release phase").choices(u7).default("release"),Ls=new xx.Option("-p --part <APM part>","APM part that should be built").choices(Object.values(p0.Part));function qt(x=!1){return new xx.Option("-s, --serial <serial>","Device serial number (16 characters hex)").makeOptionMandatory(x)}var Nt=new xx.Option("--debug","Enable debug logging").default(!1),Os=new xx.Option("--silent","Suppress intermediate progress output. Only the final result and errors are printed.").default(!1),D7=new xx.Option("--siteName <name>","Override the auto-generated development site name (max 50 characters)."),Rs=new xx.Option("--json",'Print the deployment result as a JSON object instead of the human-readable summary. Format: {"siteUid", "siteName", "apmId"}. Best combined with --silent for machine-readable output.').default(!1),p7=new xx.Option("--server <url>","myDatanet instance URL (https:// prefix optional)").default(process.env.MYDATANET_HOST),b7=new xx.Option("--customer <customerId>","myDatanet customer UID or ID").default(process.env.MYDATANET_CUSTOMER),m7=new xx.Option("--mdn-token <token>","myDatanet API token").default(process.env.MYDATANET_TOKEN);function It(x,A,e=Number.MAX_SAFE_INTEGER){return r=>{let t=r.trim()===""?Number.NaN:Number(r);if(!Number.isInteger(t)||t<A||t>e)throw new xx.InvalidArgumentError(`${x} must be an integer between ${A} and ${e}, got '${r}'`);return t}}var j7=new xx.Option("--port <port>","Port the local device API server listens on").default(8765).argParser(It("--port",0,65535)),h7=new xx.Option("--host <host>","Address the local device API server binds to").default("127.0.0.1"),g7=new xx.Option("--allow-remote","Allow a non-loopback --host without --bearer (the device API is then unauthenticated)"),y7=new xx.Option("--poll-interval <ms>","Stamp-poll interval in ms (0 disables polling)").default(2e3).argParser(It("--poll-interval",0)),Xv=new xx.Option("--wait <ms>","How long a write waits for the device to confirm, in ms").default(3e3).argParser(It("--wait",0)),k7=new xx.Option("--log-file [path]","Append every device log record to this JSONL file"),Yv=new xx.Option("--bearer <token>","Bearer token required by the local device API server (--token is the Studio API token)"),w7=new xx.Option("--url <url>","Run against a running `studio dev` server instead of opening USB");function Ie(x,A){S0.silent=!1,A?S0.log(JSON.stringify(x)):S0.log(JSON.stringify(x,null,2)),process.exitCode=0}function Qv(x){return x instanceof Z0?x.exitCode:1}function VA(x){S0.silent=!1,S0.error(x instanceof Error?x.message:String(x)),Vn.notify(),process.exitCode=Qv(x)}function Ee(x){let{env:A,token:e}=Fr(x);return{cwd:ce,fs:ne,logger:S0,serial:x.serial,url:x.url,token:x.bearer,debug:x.debug,env:A,apiToken:e,waitMs:x.wait}}function Be(x,A,e){return x.command(A).description(e).addOption(qt()).addOption(w7).addOption(Yv).addOption(Nt).addOption(Os).addOption(Rs).addOption(vr).addOption(fr)}BA.command("install").aliases(["i"]).description("install all the dependencies in your project").arguments("[dependency...]").allowExcessArguments(!0).addOption(vr).addOption(fr).allowUnknownOption(!0).action((x,A,e)=>{let{env:r,token:t}=Fr(A);kx(e,Z8(ce,ne,S0,r,t,x))});BA.command("build").addOption(Ls).allowExcessArguments(!0).addOption(vr).addOption(fr).allowUnknownOption(!0).action((x,A)=>{let{env:e,token:r}=Fr(x);kx(A,xv(ce,ne,S0,e,r,x.part))});BA.command("publish").addOption(Wv).addOption(d7).addOption(vr).addOption(fr).allowUnknownOption(!0).option("-i, --packagePath <path>",'Publish the provided library or app package. Use "*" for autodetection.').action(async(x,A)=>{let{env:e,token:r}=Fr(x);kx(A,Av(ce,ne,S0,e,r,x.allowedBackends,x.phase,x.packagePath))});BA.command("package").alias("pack").description("Package the project").addOption(Wv).addOption(vr).addOption(fr).allowUnknownOption(!0).action(async(x,A)=>{let{env:e,token:r}=Fr(x);kx(A,ev(ce,ne,S0,e,r,x.phase))});BA.command("run").description("Build, upload to USB device, and create development site on myDatanet").addOption(qt(!0)).addOption(p7).addOption(b7).addOption(m7).addOption(Ls).addOption(vr).addOption(fr).addOption(Nt).addOption(Os).addOption(Rs).addOption(D7).allowUnknownOption(!0).action((x,A)=>{let{env:e,token:r}=Fr(x),t=x.mdnToken,i=x.server;t||(S0.error("MYDATANET_TOKEN is required. Set via --mdn-token or MYDATANET_TOKEN environment variable"),Vn.notify(),process.exit(4)),i||(S0.error("Server URL is required. Set via --server or MYDATANET_HOST environment variable"),Vn.notify(),process.exit(4)),kx(A,Iv(ce,ne,S0,e,r,{serial:x.serial,server:i,customer:x.customer,mdnToken:t,debug:x.debug,part:x.part?[x.part]:void 0,siteName:x.siteName||void 0}).then(n=>{S0.silent=!1,n.success?(Nv(S0,n,x.json),process.exit(0)):(S0.error(n.message),process.exit(n.errorCode||1))}))});var Gs=BA.command("usb").description("USB device management commands");Gs.command("list").description("List available USB devices").action((x,A)=>{kx(A,b8(S0))});Gs.command("upload").description("Upload an AMX binary to a USB device").addOption(qt(!0)).requiredOption("-f, --file <path>","Path to the AMX file (relative to current directory)").addOption(Nt).action((x,A)=>{let e=Jr.Utils.joinPath(ce,x.file);kx(A,Gr(x.serial,e,ne,S0,x.debug).then(r=>{r.success?process.exit(0):(S0.error(r.message),process.exit(1))}))});Gs.command("sync").description("Sync a USB device with the myDatanet server").addOption(qt(!0)).addOption(Nt).action((x,A)=>{kx(A,m8(x.serial,S0,x.debug).then(e=>{e.success?process.exit(0):(S0.error(e.message),process.exit(1))}))});BA.command("dev").description("Build, flash and serve the myDatanet-compatible device API on localhost").addOption(qt(!0)).addOption(j7).addOption(h7).addOption(g7).option("--watch","Rebuild, flash and sync when a source file changes",!1).option("--no-build","Skip the initial build").option("--no-flash","Skip flashing dist/dlo/main.amx").addOption(y7).addOption(Xv).addOption(k7).addOption(Yv).option("--pov [name]","Also start the project POV dev server against this server").addOption(Ls).addOption(vr).addOption(fr).addOption(Nt).addOption(Os).addOption(Rs).allowUnknownOption(!0).action((x,A)=>{let{env:e,token:r}=Fr(x);return kx(A,_7(x,e,r).catch(VA))});async function _7(x,A,e){let r=x.logFile===!0?Jr.Utils.joinPath(ce,e0.filePaths.studio.dev.deviceLog).fsPath:x.logFile,t=await hs(ce,ne,{serial:x.serial,host:x.host,port:x.port,allowRemote:x.allowRemote===!0,watch:x.watch,build:x.build,flash:x.flash,pollIntervalMs:x.pollInterval,waitMs:x.wait,logFile:typeof r=="string"?r:void 0,token:x.bearer,pov:x.pov,part:x.part?[x.part]:void 0,debug:x.debug,env:A,apiToken:e,logger:S0});x.json?S7(t):$7(t),await new Promise(i=>{let n=!1,F=()=>{n||(n=!0,t.close().catch(v=>S0.error(v instanceof Error?v.message:String(v))).finally(()=>{process.exitCode=0,process.stdin.pause(),i()}))};process.once("SIGINT",F),process.once("SIGTERM",F),x.json||P7(t,F)})}function S7(x){S0.silent=!0,process.stdout.write(`${JSON.stringify({url:x.url,serial:x.session.serial,apmId:x.apmId,port:x.port})}
2347
+ `);for(let A of["log","build","sync","state","container-changed"])x.session.on(A,e=>process.stdout.write(`${JSON.stringify({event:A,payload:e})}
2348
+ `))}function $7(x){S0.done(`Device API server: ${x.url} (serial ${x.session.serial})`),S0.info("Commands: `at <cmd>`, `sync`, `flash`, `build`, `q` to quit"),x.session.on("log",A=>S0.log(`${Kn.default.dim(A.source)} ${A.text}`)),x.session.on("container-changed",A=>S0.log(`${Kn.default.cyan(A.container??"uto")} ${JSON.stringify(A.decoded??null)}`)),x.session.on("build",A=>{A.ok===!0?S0.done("Build completed"):A.ok===!1&&S0.error(A.message??"Build failed")})}function P7(x,A){process.stdin.isTTY&&(process.stdin.setEncoding("utf8"),process.stdin.on("data",e=>{T7(x,String(e).trim(),A).catch(r=>S0.error(r instanceof Error?r.message:String(r)))}))}async function T7(x,A,e){A==="q"?e():A==="sync"?S0.log(JSON.stringify(await x.session.sync())):A==="flash"?S0.log(JSON.stringify(await x.session.flash())):A==="build"?await x.session.build():A.startsWith("at ")?S0.log(await x.session.at(A.slice(3).trim())):A&&S0.warn(`Unknown command: ${A}`)}var Us="<container>",Hs="Container name or alias",Ce=BA.command("device").description("One-shot device commands (USB or a running `studio dev`)");Be(Ce,"info","Print DEVINFO/STAMPS/model status").action((x,A)=>kx(A,Lv(Ee(x)).then(e=>Ie(e,x.json)).catch(VA)));Be(Ce,"get","Read a container, decoded via the project DDE").argument(Us,`${Hs}, optionally \`container.field\``).action((x,A,e)=>kx(e,Ov(Ee(A),x).then(r=>Ie(r,A.json)).catch(VA)));Be(Ce,"set","Write a container: encode, push and re-read").argument(Us,Hs).argument("<values>","JSON object of field values").addOption(Xv).action((x,A,e,r)=>kx(r,Rv(Ee(e),x,A).then(t=>Ie(t,e.json)).catch(VA)));Be(Ce,"timeseries","Read a histdata window, decoded via the project DDE").argument(Us,`Histdata ${Hs.toLowerCase()}`).option("--from <stamp>","Inclusive lower bound (API stamp)").option("--to <stamp>","Exclusive upper bound (API stamp)").option("--limit <n>","Number of records (youngest first)",It("--limit",1),100).action((x,A,e)=>kx(e,Gv(Ee(A),x,{from:A.from,to:A.to,limit:A.limit}).then(r=>Ie(r,A.json)).catch(VA)));Be(Ce,"logs","Print the device log ring buffer").option("--follow","Keep printing new records",!1).option("--duration <ms>","How long --follow runs",It("--duration",0),3e4).option("--filter <regex>","Only print records whose text matches").action((x,A)=>kx(A,Kv(Ee(x),{follow:x.follow,durationMs:x.duration,filter:x.filter},e=>q7(e,x.json)).then(()=>{process.exitCode=0}).catch(VA)));function q7(x,A){if(S0.silent=!1,A){S0.log(JSON.stringify(x));return}let e=x;S0.log(`${Kn.default.dim(e.source)} ${e.text}`)}Be(Ce,"at","Run one AT command").argument("<cmd>",'AT command, e.g. "at+rm2mstate"').action((x,A,e)=>kx(e,Uv(Ee(A),x).then(r=>Ie(r,A.json)).catch(VA)));Be(Ce,"state","Print the last rm2m state").action((x,A)=>kx(A,Hv(Ee(x)).then(e=>Ie(e,x.json)).catch(VA)));Be(Ce,"flash","Upload an AMX (defaults to dist/dlo/main.amx)").option("-f, --file <path>","AMX file to upload, relative to the project root").action((x,A)=>kx(A,Jv(Ee(x),x.file).then(e=>Ie(e,x.json)).catch(VA)));Be(Ce,"sync","Pull the device data into the mirror").action((x,A)=>kx(A,zv(Ee(x)).then(e=>Ie(e,x.json)).catch(VA)));function Zv(x){BA.parse(x)}0&&(module.exports={deviceExitCode,program});
2336
2349
  /*! Bundled license information:
2337
2350
 
2338
2351
  @microtronics/device-master/dist/esm/index.mjs: