@microtronics/studio-cli 1.1.0-alpha.0 → 1.1.0-alpha.2

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/out/api.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var mn=Object.create;var rr=Object.defineProperty;var hn=Object.getOwnPropertyDescriptor;var gn=Object.getOwnPropertyNames;var kn=Object.getPrototypeOf,yn=Object.prototype.hasOwnProperty;var wn=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),_n=(t,e)=>{for(var F in e)rr(t,F,{get:e[F],enumerable:!0})},Pe=(t,e,F,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of gn(e))!yn.call(t,s)&&s!==F&&rr(t,s,{get:()=>e[s],enumerable:!(i=hn(e,s))||i.enumerable});return t};var J0=(t,e,F)=>(F=t!=null?mn(kn(t)):{},Pe(e||!t||!t.__esModule?rr(F,"default",{value:t,enumerable:!0}):F,t)),$n=t=>Pe(rr({},"__esModule",{value:!0}),t);var Ut=wn((K8,Ot)=>{"use strict";var DF=Object.create,UA=Object.defineProperty,lF=Object.getOwnPropertyDescriptor,Tt=Object.getOwnPropertyNames,cF=Object.getPrototypeOf,dF=Object.prototype.hasOwnProperty,jF=(t,e,F)=>e in t?UA(t,e,{enumerable:!0,configurable:!0,writable:!0,value:F}):t[e]=F,Mt=(t,e)=>function(){return e||(0,t[Tt(t)[0]])((e={exports:{}}).exports,e),e.exports},pF=(t,e)=>{for(var F in e)UA(t,F,{get:e[F],enumerable:!0})},It=(t,e,F,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Tt(e))!dF.call(t,s)&&s!==F&&UA(t,s,{get:()=>e[s],enumerable:!(i=lF(e,s))||i.enumerable});return t},St=(t,e,F)=>(F=t!=null?DF(cF(t)):{},It(e||!t||!t.__esModule?UA(F,"default",{value:t,enumerable:!0}):F,t)),bF=t=>It(UA({},"__esModule",{value:!0}),t),N0=(t,e,F)=>jF(t,typeof e!="symbol"?e+"":e,F),uF=Mt({"wasm/bin/pawncc.js"(t,e){"use strict";var F=(()=>{var i=globalThis.document?.currentScript?.src;return async function(s={}){var E,o=s,C=!!globalThis.window,c=!!globalThis.WorkerGlobalScope,j=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer",b=[],p="./this.program",k=(x,n)=>{throw n};typeof __filename<"u"?i=__filename:c&&(i=self.location.href);var _="",u,y;if(j){var P=require("fs");_=__dirname+"/",y=x=>{x=L(x)?new URL(x):x;var n=P.readFileSync(x);return n},u=async(x,n=!0)=>{x=L(x)?new URL(x):x;var v=P.readFileSync(x,n?void 0:"utf8");return v},process.argv.length>1&&(p=process.argv[1].replace(/\\/g,"/")),b=process.argv.slice(2),k=(x,n)=>{throw process.exitCode=x,n}}else if(C||c){try{_=new URL(".",i).href}catch{}c&&(y=x=>{var n=new XMLHttpRequest;return n.open("GET",x,!1),n.responseType="arraybuffer",n.send(null),new Uint8Array(n.response)}),u=async x=>{if(L(x))return new Promise((v,f)=>{var l=new XMLHttpRequest;l.open("GET",x,!0),l.responseType="arraybuffer",l.onload=()=>{if(l.status==200||l.status==0&&l.response){v(l.response);return}f(l.status)},l.onerror=f,l.send(null)});var n=await fetch(x,{credentials:"same-origin"});if(n.ok)return n.arrayBuffer();throw new Error(n.status+" : "+n.url)}}var g=console.log.bind(console),w=console.error.bind(console),q,T=!1,$,L=x=>x.startsWith("file://");class U{}class H extends U{}function K(x){for(var n=0,v=x.length,f=new Uint8Array(v),l;n<v;++n)l=x.charCodeAt(n),f[n]=~l>>8&l;return f}var S,z,Y=!1,Z=!1;function M(){var x=j0.buffer;q0=new Int8Array(x),kx=new Int16Array(x),Bx=new Uint8Array(x),mr=new Uint16Array(x),m0=new Int32Array(x),Q=new Uint32Array(x),br=new Float32Array(x),ur=new Float64Array(x),h0=new BigInt64Array(x),hr=new BigUint64Array(x)}function r0(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)kr(o.preRun.shift());lA(dA)}function x0(){Y=!0,!o.noFSInit&&!r.initialized&&r.init(),L0.init(),PA.__wasm_call_ctors(),r.ignorePermissions=!1}function e0(){}function d0(){d(),r.quit(),L0.shutdown(),Z=!0}function f0(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)gr(o.postRun.shift());lA(cA)}function o0(x){o.onAbort?.(x),x=`Aborted(${x})`,w(x),T=!0,x+=". Build with -sASSERTIONS for more info.";var n=new WebAssembly.RuntimeError(x);throw z?.(n),n}var b0;function Z0(){return K(`\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 yn=Object.create;var er=Object.defineProperty;var wn=Object.getOwnPropertyDescriptor;var _n=Object.getOwnPropertyNames;var $n=Object.getPrototypeOf,qn=Object.prototype.hasOwnProperty;var Pn=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Nn=(t,e)=>{for(var F in e)er(t,F,{get:e[F],enumerable:!0})},Ne=(t,e,F,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of _n(e))!qn.call(t,a)&&a!==F&&er(t,a,{get:()=>e[a],enumerable:!(i=wn(e,a))||i.enumerable});return t};var J0=(t,e,F)=>(F=t!=null?yn($n(t)):{},Ne(e||!t||!t.__esModule?er(F,"default",{value:t,enumerable:!0}):F,t)),Ln=t=>Ne(er({},"__esModule",{value:!0}),t);var Ht=Pn((Za,Ut)=>{"use strict";var jF=Object.create,UA=Object.defineProperty,pF=Object.getOwnPropertyDescriptor,It=Object.getOwnPropertyNames,uF=Object.getPrototypeOf,bF=Object.prototype.hasOwnProperty,mF=(t,e,F)=>e in t?UA(t,e,{enumerable:!0,configurable:!0,writable:!0,value:F}):t[e]=F,Mt=(t,e)=>function(){return e||(0,t[It(t)[0]])((e={exports:{}}).exports,e),e.exports},hF=(t,e)=>{for(var F in e)UA(t,F,{get:e[F],enumerable:!0})},St=(t,e,F,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of It(e))!bF.call(t,a)&&a!==F&&UA(t,a,{get:()=>e[a],enumerable:!(i=pF(e,a))||i.enumerable});return t},Rt=(t,e,F)=>(F=t!=null?jF(uF(t)):{},St(e||!t||!t.__esModule?UA(F,"default",{value:t,enumerable:!0}):F,t)),gF=t=>St(UA({},"__esModule",{value:!0}),t),N0=(t,e,F)=>mF(t,typeof e!="symbol"?e+"":e,F),kF=Mt({"wasm/bin/pawncc.js"(t,e){"use strict";var F=(()=>{var i=globalThis.document?.currentScript?.src;return async function(a={}){var E,o=a,C=!!globalThis.window,c=!!globalThis.WorkerGlobalScope,j=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer",u=[],p="./this.program",k=(x,n)=>{throw n};typeof __filename<"u"?i=__filename:c&&(i=self.location.href);var w="",b,y;if(j){var q=require("fs");w=__dirname+"/",y=x=>{x=_(x)?new URL(x):x;var n=q.readFileSync(x);return n},b=async(x,n=!0)=>{x=_(x)?new URL(x):x;var v=q.readFileSync(x,n?void 0:"utf8");return v},process.argv.length>1&&(p=process.argv[1].replace(/\\/g,"/")),u=process.argv.slice(2),k=(x,n)=>{throw process.exitCode=x,n}}else if(C||c){try{w=new URL(".",i).href}catch{}c&&(y=x=>{var n=new XMLHttpRequest;return n.open("GET",x,!1),n.responseType="arraybuffer",n.send(null),new Uint8Array(n.response)}),b=async x=>{if(_(x))return new Promise((v,f)=>{var l=new XMLHttpRequest;l.open("GET",x,!0),l.responseType="arraybuffer",l.onload=()=>{if(l.status==200||l.status==0&&l.response){v(l.response);return}f(l.status)},l.onerror=f,l.send(null)});var n=await fetch(x,{credentials:"same-origin"});if(n.ok)return n.arrayBuffer();throw new Error(n.status+" : "+n.url)}}var N=console.log.bind(console),G=console.error.bind(console),M,P=!1,g,_=x=>x.startsWith("file://");class I{}class z extends I{}function J(x){for(var n=0,v=x.length,f=new Uint8Array(v),l;n<v;++n)l=x.charCodeAt(n),f[n]=~l>>8&l;return f}var H,R,W=!1,K=!1;function L(){var x=j0.buffer;q0=new Int8Array(x),yx=new Int16Array(x),Cx=new Uint8Array(x),mr=new Uint16Array(x),m0=new Int32Array(x),A0=new Uint32Array(x),ur=new Float32Array(x),br=new Float64Array(x),h0=new BigInt64Array(x),hr=new BigUint64Array(x)}function Z(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)kr(o.preRun.shift());lA(dA)}function Q(){W=!0,!o.noFSInit&&!r.initialized&&r.init(),L0.init(),PA.__wasm_call_ctors(),r.ignorePermissions=!1}function e0(){}function f0(){d(),r.quit(),L0.shutdown(),K=!0}function D0(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)gr(o.postRun.shift());lA(cA)}function o0(x){o.onAbort?.(x),x=`Aborted(${x})`,G(x),P=!0,x+=". Build with -sASSERTIONS for more info.";var n=new WebAssembly.RuntimeError(x);throw R?.(n),n}var u0;function M0(){return J(`\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 M0(x){return x}async function Ox(x){return x}async function fA(x,n){try{var v=await Ox(x),f=await WebAssembly.instantiate(v,n);return f}catch(l){w(`failed to asynchronously prepare wasm: ${l}`),o0(l)}}async function DA(x,n,v){return fA(n,v)}function AA(){var x={env:$0,wasi_snapshot_preview1:$0};return x}async function rA(){function x(m,N){return PA=m.exports,n0(PA),M(),PA}function n(m){return x(m.instance)}var v=AA();if(o.instantiateWasm)return new Promise((m,N)=>{o.instantiateWasm(v,(I,X)=>{m(x(I,X))})});b0??(b0=Z0());var f=await DA(q,b0,v),l=n(f);return l}class Ux{constructor(n){N0(this,"name","ExitStatus"),this.message=`Program terminated with exit(${n})`,this.status=n}}var kx,m0,h0,q0,br,ur,mr,Q,hr,Bx,lA=x=>{for(;x.length>0;)x.shift()(o)},cA=[],gr=x=>cA.push(x),dA=[],kr=x=>dA.push(x),jA=!1,S0=x=>G(x),z0=()=>W(),yx=globalThis.TextDecoder&&new TextDecoder,eA=(x,n,v,f)=>{var l=n+v;if(f)return l;for(;x[n]&&!(n>=l);)++n;return n},Px=(x,n=0,v,f)=>{var l=eA(x,n,v,f);if(l-n>16&&x.buffer&&yx)return yx.decode(x.subarray(n,l));for(var m="";n<l;){var N=x[n++];if(!(N&128)){m+=String.fromCharCode(N);continue}var I=x[n++]&63;if((N&224)==192){m+=String.fromCharCode((N&31)<<6|I);continue}var X=x[n++]&63;if((N&240)==224?N=(N&15)<<12|I<<6|X:N=(N&7)<<18|I<<12|X<<6|x[n++]&63,N<65536)m+=String.fromCharCode(N);else{var v0=N-65536;m+=String.fromCharCode(55296|v0>>10,56320|v0&1023)}}return m},wx=(x,n,v)=>x?Px(Bx,x,n,v):"",Nx=(x,n,v,f)=>o0(`Assertion failed: ${wx(x)}, at: `+[n?wx(n):"unknown filename",v,f?wx(f):"unknown function"]),A0={isAbs:x=>x.charAt(0)==="/",splitPath:x=>{var n=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return n.exec(x).slice(1)},normalizeArray:(x,n)=>{for(var v=0,f=x.length-1;f>=0;f--){var l=x[f];l==="."?x.splice(f,1):l===".."?(x.splice(f,1),v++):v&&(x.splice(f,1),v--)}if(n)for(;v;v--)x.unshift("..");return x},normalize:x=>{var n=A0.isAbs(x),v=x.slice(-1)==="/";return x=A0.normalizeArray(x.split("/").filter(f=>!!f),!n).join("/"),!x&&!n&&(x="."),x&&v&&(x+="/"),(n?"/":"")+x},dirname:x=>{var n=A0.splitPath(x),v=n[0],f=n[1];return!v&&!f?".":(f&&(f=f.slice(0,-1)),v+f)},basename:x=>x&&x.match(/([^\/]+|\/)\/*$/)[1],join:(...x)=>A0.normalize(x.join("/")),join2:(x,n)=>A0.normalize(x+"/"+n)},yr=()=>{if(j){var x=require("crypto");return n=>x.randomFillSync(n)}return n=>(crypto.getRandomValues(n),0)},pA=x=>(pA=yr())(x),Q0={resolve:(...x)=>{for(var n="",v=!1,f=x.length-1;f>=-1&&!v;f--){var l=f>=0?x[f]:r.cwd();if(typeof l!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!l)return"";n=l+"/"+n,v=A0.isAbs(l)}return n=A0.normalizeArray(n.split("/").filter(m=>!!m),!v).join("/"),(v?"/":"")+n||"."},relative:(x,n)=>{x=Q0.resolve(x).slice(1),n=Q0.resolve(n).slice(1);function v(v0){for(var k0=0;k0<v0.length&&v0[k0]==="";k0++);for(var u0=v0.length-1;u0>=0&&v0[u0]==="";u0--);return k0>u0?[]:v0.slice(k0,u0-k0+1)}for(var f=v(x.split("/")),l=v(n.split("/")),m=Math.min(f.length,l.length),N=m,I=0;I<m;I++)if(f[I]!==l[I]){N=I;break}for(var X=[],I=N;I<f.length;I++)X.push("..");return X=X.concat(l.slice(N)),X.join("/")}},Hx=[],zx=x=>{for(var n=0,v=0;v<x.length;++v){var f=x.charCodeAt(v);f<=127?n++:f<=2047?n+=2:f>=55296&&f<=57343?(n+=4,++v):n+=3}return n},bA=(x,n,v,f)=>{if(!(f>0))return 0;for(var l=v,m=v+f-1,N=0;N<x.length;++N){var I=x.codePointAt(N);if(I<=127){if(v>=m)break;n[v++]=I}else if(I<=2047){if(v+1>=m)break;n[v++]=192|I>>6,n[v++]=128|I&63}else if(I<=65535){if(v+2>=m)break;n[v++]=224|I>>12,n[v++]=128|I>>6&63,n[v++]=128|I&63}else{if(v+3>=m)break;n[v++]=240|I>>18,n[v++]=128|I>>12&63,n[v++]=128|I>>6&63,n[v++]=128|I&63,N++}}return n[v]=0,v-l},Jx=(x,n,v)=>{var f=v>0?v:zx(x)+1,l=new Array(f),m=bA(x,l,0,l.length);return n&&(l.length=m),l},wr=()=>{if(!Hx.length){var x=null;if(j){var n=256,v=Buffer.alloc(n),f=0,l=process.stdin.fd;try{f=P.readSync(l,v,0,n)}catch(m){if(m.toString().includes("EOF"))f=0;else throw m}f>0&&(x=v.slice(0,f).toString("utf-8"))}else globalThis.window?.prompt&&(x=window.prompt("Input: "),x!==null&&(x+=`
1162
- `));if(!x)return null;Hx=Jx(x,!0)}return Hx.shift()},L0={ttys:[],init(){},shutdown(){},register(x,n){L0.ttys[x]={input:[],output:[],ops:n},r.registerDevice(x,L0.stream_ops)},stream_ops:{open(x){var n=L0.ttys[x.node.rdev];if(!n)throw new r.ErrnoError(43);x.tty=n,x.seekable=!1},close(x){x.tty.ops.fsync(x.tty)},fsync(x){x.tty.ops.fsync(x.tty)},read(x,n,v,f,l){if(!x.tty||!x.tty.ops.get_char)throw new r.ErrnoError(60);for(var m=0,N=0;N<f;N++){var I;try{I=x.tty.ops.get_char(x.tty)}catch{throw new r.ErrnoError(29)}if(I===void 0&&m===0)throw new r.ErrnoError(6);if(I==null)break;m++,n[v+N]=I}return m&&(x.node.atime=Date.now()),m},write(x,n,v,f,l){if(!x.tty||!x.tty.ops.put_char)throw new r.ErrnoError(60);try{for(var m=0;m<f;m++)x.tty.ops.put_char(x.tty,n[v+m])}catch{throw new r.ErrnoError(29)}return f&&(x.node.mtime=x.node.ctime=Date.now()),m}},default_tty_ops:{get_char(x){return wr()},put_char(x,n){n===null||n===10?(g(Px(x.output)),x.output=[]):n!=0&&x.output.push(n)},fsync(x){x.output?.length>0&&(g(Px(x.output)),x.output=[])},ioctl_tcgets(x){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(x,n,v){return 0},ioctl_tiocgwinsz(x){return[24,80]}},default_tty1_ops:{put_char(x,n){n===null||n===10?(w(Px(x.output)),x.output=[]):n!=0&&x.output.push(n)},fsync(x){x.output?.length>0&&(w(Px(x.output)),x.output=[])}}},uA=x=>{o0()},J={ops_table:null,mount(x){return J.createNode(null,"/",16895,0)},createNode(x,n,v,f){if(r.isBlkdev(v)||r.isFIFO(v))throw new r.ErrnoError(63);J.ops_table||(J.ops_table={dir:{node:{getattr:J.node_ops.getattr,setattr:J.node_ops.setattr,lookup:J.node_ops.lookup,mknod:J.node_ops.mknod,rename:J.node_ops.rename,unlink:J.node_ops.unlink,rmdir:J.node_ops.rmdir,readdir:J.node_ops.readdir,symlink:J.node_ops.symlink},stream:{llseek:J.stream_ops.llseek}},file:{node:{getattr:J.node_ops.getattr,setattr:J.node_ops.setattr},stream:{llseek:J.stream_ops.llseek,read:J.stream_ops.read,write:J.stream_ops.write,mmap:J.stream_ops.mmap,msync:J.stream_ops.msync}},link:{node:{getattr:J.node_ops.getattr,setattr:J.node_ops.setattr,readlink:J.node_ops.readlink},stream:{}},chrdev:{node:{getattr:J.node_ops.getattr,setattr:J.node_ops.setattr},stream:r.chrdev_stream_ops}});var l=r.createNode(x,n,v,f);return r.isDir(l.mode)?(l.node_ops=J.ops_table.dir.node,l.stream_ops=J.ops_table.dir.stream,l.contents={}):r.isFile(l.mode)?(l.node_ops=J.ops_table.file.node,l.stream_ops=J.ops_table.file.stream,l.usedBytes=0,l.contents=J.emptyFileContents??(J.emptyFileContents=new Uint8Array(0))):r.isLink(l.mode)?(l.node_ops=J.ops_table.link.node,l.stream_ops=J.ops_table.link.stream):r.isChrdev(l.mode)&&(l.node_ops=J.ops_table.chrdev.node,l.stream_ops=J.ops_table.chrdev.stream),l.atime=l.mtime=l.ctime=Date.now(),x&&(x.contents[n]=l,x.atime=x.mtime=x.ctime=l.atime),l},getFileDataAsTypedArray(x){return x.contents.subarray(0,x.usedBytes)},expandFileStorage(x,n){var v=x.contents.length;if(!(v>=n)){var f=1024*1024;n=Math.max(n,v*(v<f?2:1.125)>>>0),v&&(n=Math.max(n,256));var l=J.getFileDataAsTypedArray(x);x.contents=new Uint8Array(n),x.contents.set(l)}},resizeFileStorage(x,n){if(x.usedBytes!=n){var v=x.contents;x.contents=new Uint8Array(n),x.contents.set(v.subarray(0,Math.min(n,x.usedBytes))),x.usedBytes=n}},node_ops:{getattr(x){var n={};return n.dev=r.isChrdev(x.mode)?x.id:1,n.ino=x.id,n.mode=x.mode,n.nlink=1,n.uid=0,n.gid=0,n.rdev=x.rdev,r.isDir(x.mode)?n.size=4096:r.isFile(x.mode)?n.size=x.usedBytes:r.isLink(x.mode)?n.size=x.link.length:n.size=0,n.atime=new Date(x.atime),n.mtime=new Date(x.mtime),n.ctime=new Date(x.ctime),n.blksize=4096,n.blocks=Math.ceil(n.size/n.blksize),n},setattr(x,n){for(let v of["mode","atime","mtime","ctime"])n[v]!=null&&(x[v]=n[v]);n.size!==void 0&&J.resizeFileStorage(x,n.size)},lookup(x,n){throw J.doesNotExistError||(J.doesNotExistError=new r.ErrnoError(44),J.doesNotExistError.stack="<generic error, no stack>"),J.doesNotExistError},mknod(x,n,v,f){return J.createNode(x,n,v,f)},rename(x,n,v){var f;try{f=r.lookupNode(n,v)}catch{}if(f){if(r.isDir(x.mode))for(var l in f.contents)throw new r.ErrnoError(55);r.hashRemoveNode(f)}delete x.parent.contents[x.name],n.contents[v]=x,x.name=v,n.ctime=n.mtime=x.parent.ctime=x.parent.mtime=Date.now()},unlink(x,n){delete x.contents[n],x.ctime=x.mtime=Date.now()},rmdir(x,n){var v=r.lookupNode(x,n);for(var f in v.contents)throw new r.ErrnoError(55);delete x.contents[n],x.ctime=x.mtime=Date.now()},readdir(x){return[".","..",...Object.keys(x.contents)]},symlink(x,n,v){var f=J.createNode(x,n,41471,0);return f.link=v,f},readlink(x){if(!r.isLink(x.mode))throw new r.ErrnoError(28);return x.link}},stream_ops:{read(x,n,v,f,l){var m=x.node.contents;if(l>=x.node.usedBytes)return 0;var N=Math.min(x.node.usedBytes-l,f);return n.set(m.subarray(l,l+N),v),N},write(x,n,v,f,l,m){if(n.buffer===q0.buffer&&(m=!1),!f)return 0;var N=x.node;return N.mtime=N.ctime=Date.now(),m?(N.contents=n.subarray(v,v+f),N.usedBytes=f):N.usedBytes===0&&l===0?(N.contents=n.slice(v,v+f),N.usedBytes=f):(J.expandFileStorage(N,l+f),N.contents.set(n.subarray(v,v+f),l),N.usedBytes=Math.max(N.usedBytes,l+f)),f},llseek(x,n,v){var f=n;if(v===1?f+=x.position:v===2&&r.isFile(x.node.mode)&&(f+=x.node.usedBytes),f<0)throw new r.ErrnoError(28);return f},mmap(x,n,v,f,l){if(!r.isFile(x.node.mode))throw new r.ErrnoError(43);var m,N,I=x.node.contents;if(!(l&2)&&I.buffer===q0.buffer)N=!1,m=I.byteOffset;else{if(N=!0,m=uA(n),!m)throw new r.ErrnoError(48);I&&((v>0||v+n<I.length)&&(I.subarray?I=I.subarray(v,v+n):I=Array.prototype.slice.call(I,v,v+n)),q0.set(I,m))}return{ptr:m,allocated:N}},msync(x,n,v,f,l){return J.stream_ops.write(x,n,0,f,v,!1),0}}},_r=x=>{if(typeof x!="string")return x;var n={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},v=n[x];if(typeof v>"u")throw new Error(`Unknown file open mode: ${x}`);return v},mA=x=>(typeof x=="string"&&(x=Jx(x,!0)),x.subarray||(x=new Uint8Array(x)),x),Kx=(x,n)=>{var v=0;return x&&(v|=365),n&&(v|=146),v},D0={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},E0={mount(x){return E0.createNode(null,"/",x.opts.fs.lstat(x.opts.root).mode,0)},createNode(x,n,v,f){if(!r.isDir(v)&&!r.isFile(v)&&!r.isLink(v))throw new r.ErrnoError(D0.EINVAL);var l=r.createNode(x,n,v);return l.node_ops=E0.node_ops,l.stream_ops=E0.stream_ops,l},realPath(x){for(var n=[];x.parent!==x;)n.push(x.name),x=x.parent;return n.push(x.mount.opts.root),n.reverse(),A0.join(...n)},node_ops:{getattr(x){var n=E0.realPath(x),v;try{v=x.mount.opts.fs.lstat(n)}catch(f){throw f.code?new r.ErrnoError(D0[f.code]):f}return{dev:v.dev,ino:v.ino,mode:v.mode,nlink:v.nlink,uid:v.uid,gid:v.gid,rdev:v.rdev,size:v.size,atime:v.atime,mtime:v.mtime,ctime:v.ctime,blksize:v.blksize,blocks:v.blocks}},setattr(x,n){var v=E0.realPath(x);try{if(n.mode!==void 0&&(x.mount.opts.fs.chmod(v,n.mode),x.mode=n.mode),n.atime||n.mtime){var f=new Date(n.atime||n.mtime),l=new Date(n.mtime||n.atime);x.mount.opts.fs.utime(v,f,l)}n.size!==void 0&&x.mount.opts.fs.truncate(v,n.size)}catch(m){throw m.code?new r.ErrnoError(D0[m.code]):m}},lookup(x,n){try{var v=A0.join2(E0.realPath(x),n),f=x.mount.opts.fs.lstat(v).mode,l=E0.createNode(x,n,f);return l}catch(m){throw m.code?new r.ErrnoError(D0[m.code]):m}},mknod(x,n,v,f){var l=E0.createNode(x,n,v,f),m=E0.realPath(l);try{r.isDir(l.mode)?l.mount.opts.fs.mkdir(m,l.mode):l.mount.opts.fs.writeFile(m,"",{mode:l.mode})}catch(N){throw N.code?new r.ErrnoError(D0[N.code]):N}return l},rename(x,n,v){var f=E0.realPath(x),l=A0.join2(E0.realPath(n),v);try{x.mount.opts.fs.rename(f,l),x.name=v}catch(m){throw m.code?new r.ErrnoError(D0[m.code]):m}},unlink(x,n){var v=A0.join2(E0.realPath(x),n);try{x.mount.opts.fs.unlink(v)}catch(f){throw f.code?new r.ErrnoError(D0[f.code]):f}},rmdir(x,n){var v=A0.join2(E0.realPath(x),n);try{x.mount.opts.fs.rmdir(v)}catch(f){throw f.code?new r.ErrnoError(D0[f.code]):f}},readdir(x){var n=E0.realPath(x);try{return x.mount.opts.fs.readdir(n)}catch(v){throw v.code?new r.ErrnoError(D0[v.code]):v}},symlink(x,n,v){var f=A0.join2(E0.realPath(x),n);try{x.mount.opts.fs.symlink(v,f)}catch(l){throw l.code?new r.ErrnoError(D0[l.code]):l}},readlink(x){var n=E0.realPath(x);try{return x.mount.opts.fs.readlink(n)}catch(v){throw v.code?new r.ErrnoError(D0[v.code]):v}}},stream_ops:{open(x){var n=E0.realPath(x.node);try{x.nfd=x.node.mount.opts.fs.open(n,x.flags)}catch(v){throw v.code?new r.ErrnoError(D0[v.code]):v}},close(x){try{x.node.mount.opts.fs.close(x.nfd)}catch(n){throw n.code?new r.ErrnoError(D0[n.code]):n}},read(x,n,v,f,l){try{return x.node.mount.opts.fs.read(x.nfd,n,v,f,l)}catch(m){throw m.code?new r.ErrnoError(D0[m.code]):m}},write(x,n,v,f,l){try{return x.node.mount.opts.fs.write(x.nfd,n,v,f,l)}catch(m){throw m.code?new r.ErrnoError(D0[m.code]):m}},llseek(x,n,v){var f=n;if(v===1)f+=x.position;else if(v===2&&r.isFile(x.node.mode))try{var l=x.node.node_ops.getattr(x.node);f+=l.size}catch(m){throw new r.ErrnoError(D0[m.code])}if(f<0)throw new r.ErrnoError(D0.EINVAL);return f}}},$r=async x=>{var n=await u(x);return new Uint8Array(n)},hA=(...x)=>r.createDataFile(...x),qr=x=>x,W0=0,Cx=null,gA=x=>{if(W0--,o.monitorRunDependencies?.(W0),W0==0&&Cx){var n=Cx;Cx=null,n()}},kA=x=>{W0++,o.monitorRunDependencies?.(W0)},yA=[],Pr=async(x,n)=>{typeof Browser<"u"&&Browser.init();for(var v of yA)if(v.canHandle(n))return v.handle(x,n);return x},Vx=async(x,n,v,f,l,m,N,I)=>{var X=n?Q0.resolve(A0.join2(x,n)):x,v0=qr(`cp ${X}`);kA(v0);try{var k0=v;typeof v=="string"&&(k0=await $r(v)),k0=await Pr(k0,X),I?.(),m||hA(x,n,k0,f,l,N)}finally{gA(v0)}},Nr=(x,n,v,f,l,m,N,I,X,v0)=>{Vx(x,n,v,f,l,I,X,v0).then(m).catch(N)},r={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,filesystems:null,syncFSRequests:0,ErrnoError:class{constructor(x){N0(this,"name","ErrnoError"),this.errno=x}},FSStream:class{constructor(){N0(this,"shared",{})}get object(){return this.node}set object(x){this.node=x}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(x){this.shared.flags=x}get position(){return this.shared.position}set position(x){this.shared.position=x}},FSNode:class{constructor(x,n,v,f){N0(this,"node_ops",{}),N0(this,"stream_ops",{}),N0(this,"readMode",365),N0(this,"writeMode",146),N0(this,"mounted",null),x||(x=this),this.parent=x,this.mount=x.mount,this.id=r.nextInode++,this.name=n,this.mode=v,this.rdev=f,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(x){x?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(x){x?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return r.isDir(this.mode)}get isDevice(){return r.isChrdev(this.mode)}},lookupPath(x,n={}){if(!x)throw new r.ErrnoError(44);n.follow_mount??(n.follow_mount=!0),A0.isAbs(x)||(x=r.cwd()+"/"+x);x:for(var v=0;v<40;v++){for(var f=x.split("/").filter(v0=>!!v0),l=r.root,m="/",N=0;N<f.length;N++){var I=N===f.length-1;if(I&&n.parent)break;if(f[N]!=="."){if(f[N]===".."){if(m=A0.dirname(m),r.isRoot(l)){x=m+"/"+f.slice(N+1).join("/"),v--;continue x}else l=l.parent;continue}m=A0.join2(m,f[N]);try{l=r.lookupNode(l,f[N])}catch(v0){if(v0?.errno===44&&I&&n.noent_okay)return{path:m};throw v0}if(r.isMountpoint(l)&&(!I||n.follow_mount)&&(l=l.mounted.root),r.isLink(l.mode)&&(!I||n.follow)){if(!l.node_ops.readlink)throw new r.ErrnoError(52);var X=l.node_ops.readlink(l);A0.isAbs(X)||(X=A0.dirname(m)+"/"+X),x=X+"/"+f.slice(N+1).join("/");continue x}}}return{path:m,node:l}}throw new r.ErrnoError(32)},getPath(x){for(var n;;){if(r.isRoot(x)){var v=x.mount.mountpoint;return n?v[v.length-1]!=="/"?`${v}/${n}`:v+n:v}n=n?`${x.name}/${n}`:x.name,x=x.parent}},hashName(x,n){for(var v=0,f=0;f<n.length;f++)v=(v<<5)-v+n.charCodeAt(f)|0;return(x+v>>>0)%r.nameTable.length},hashAddNode(x){var n=r.hashName(x.parent.id,x.name);x.name_next=r.nameTable[n],r.nameTable[n]=x},hashRemoveNode(x){var n=r.hashName(x.parent.id,x.name);if(r.nameTable[n]===x)r.nameTable[n]=x.name_next;else for(var v=r.nameTable[n];v;){if(v.name_next===x){v.name_next=x.name_next;break}v=v.name_next}},lookupNode(x,n){var v=r.mayLookup(x);if(v)throw new r.ErrnoError(v);for(var f=r.hashName(x.id,n),l=r.nameTable[f];l;l=l.name_next){var m=l.name;if(l.parent.id===x.id&&m===n)return l}return r.lookup(x,n)},createNode(x,n,v,f){var l=new r.FSNode(x,n,v,f);return r.hashAddNode(l),l},destroyNode(x){r.hashRemoveNode(x)},isRoot(x){return x===x.parent},isMountpoint(x){return!!x.mounted},isFile(x){return(x&61440)===32768},isDir(x){return(x&61440)===16384},isLink(x){return(x&61440)===40960},isChrdev(x){return(x&61440)===8192},isBlkdev(x){return(x&61440)===24576},isFIFO(x){return(x&61440)===4096},isSocket(x){return(x&49152)===49152},flagsToPermissionString(x){var n=["r","w","rw"][x&3];return x&512&&(n+="w"),n},nodePermissions(x,n){return r.ignorePermissions?0:n.includes("r")&&!(x.mode&292)||n.includes("w")&&!(x.mode&146)||n.includes("x")&&!(x.mode&73)?2:0},mayLookup(x){if(!r.isDir(x.mode))return 54;var n=r.nodePermissions(x,"x");return n||(x.node_ops.lookup?0:2)},mayCreate(x,n){if(!r.isDir(x.mode))return 54;try{var v=r.lookupNode(x,n);return 20}catch{}return r.nodePermissions(x,"wx")},mayDelete(x,n,v){var f;try{f=r.lookupNode(x,n)}catch(m){return m.errno}var l=r.nodePermissions(x,"wx");if(l)return l;if(v){if(!r.isDir(f.mode))return 54;if(r.isRoot(f)||r.getPath(f)===r.cwd())return 10}else if(r.isDir(f.mode))return 31;return 0},mayOpen(x,n){if(!x)return 44;if(r.isLink(x.mode))return 32;var v=r.flagsToPermissionString(n);return r.isDir(x.mode)&&(v!=="r"||n&576)?31:r.nodePermissions(x,v)},checkOpExists(x,n){if(!x)throw new r.ErrnoError(n);return x},MAX_OPEN_FDS:4096,nextfd(){for(var x=0;x<=r.MAX_OPEN_FDS;x++)if(!r.streams[x])return x;throw new r.ErrnoError(33)},getStreamChecked(x){var n=r.getStream(x);if(!n)throw new r.ErrnoError(8);return n},getStream:x=>r.streams[x],createStream(x,n=-1){return x=Object.assign(new r.FSStream,x),n==-1&&(n=r.nextfd()),x.fd=n,r.streams[n]=x,x},closeStream(x){r.streams[x]=null},dupStream(x,n=-1){var v=r.createStream(x,n);return v.stream_ops?.dup?.(v),v},doSetAttr(x,n,v){var f=x?.stream_ops.setattr,l=f?x:n;f??(f=n.node_ops.setattr),r.checkOpExists(f,63);try{f(l,v)}catch(m){throw m instanceof RangeError?new r.ErrnoError(22):m}},chrdev_stream_ops:{open(x){var n=r.getDevice(x.node.rdev);x.stream_ops=n.stream_ops,x.stream_ops.open?.(x)},llseek(){throw new r.ErrnoError(70)}},major:x=>x>>8,minor:x=>x&255,makedev:(x,n)=>x<<8|n,registerDevice(x,n){r.devices[x]={stream_ops:n}},getDevice:x=>r.devices[x],getMounts(x){for(var n=[],v=[x];v.length;){var f=v.pop();n.push(f),v.push(...f.mounts)}return n},syncfs(x,n){typeof x=="function"&&(n=x,x=!1),r.syncFSRequests++,r.syncFSRequests>1&&w(`warning: ${r.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var v=r.getMounts(r.root.mount),f=0;function l(I){return r.syncFSRequests--,n(I)}function m(I){if(I)return m.errored?void 0:(m.errored=!0,l(I));++f>=v.length&&l(null)}for(var N of v)N.type.syncfs?N.type.syncfs(N,x,m):m(null)},mount(x,n,v){var f=v==="/",l=!v,m;if(f&&r.root)throw new r.ErrnoError(10);if(!f&&!l){var N=r.lookupPath(v,{follow_mount:!1});if(v=N.path,m=N.node,r.isMountpoint(m))throw new r.ErrnoError(10);if(!r.isDir(m.mode))throw new r.ErrnoError(54)}var I={type:x,opts:n,mountpoint:v,mounts:[]},X=x.mount(I);return X.mount=I,I.root=X,f?r.root=X:m&&(m.mounted=I,m.mount&&m.mount.mounts.push(I)),X},unmount(x){var n=r.lookupPath(x,{follow_mount:!1});if(!r.isMountpoint(n.node))throw new r.ErrnoError(28);var v=n.node,f=v.mounted,l=r.getMounts(f);for(var[m,N]of Object.entries(r.nameTable))for(;N;){var I=N.name_next;l.includes(N.mount)&&r.destroyNode(N),N=I}v.mounted=null;var X=v.mount.mounts.indexOf(f);v.mount.mounts.splice(X,1)},lookup(x,n){return x.node_ops.lookup(x,n)},mknod(x,n,v){var f=r.lookupPath(x,{parent:!0}),l=f.node,m=A0.basename(x);if(!m)throw new r.ErrnoError(28);if(m==="."||m==="..")throw new r.ErrnoError(20);var N=r.mayCreate(l,m);if(N)throw new r.ErrnoError(N);if(!l.node_ops.mknod)throw new r.ErrnoError(63);return l.node_ops.mknod(l,m,n,v)},statfs(x){return r.statfsNode(r.lookupPath(x,{follow:!0}).node)},statfsStream(x){return r.statfsNode(x.node)},statfsNode(x){var n={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:r.nextInode,ffree:r.nextInode-1,fsid:42,flags:2,namelen:255};return x.node_ops.statfs&&Object.assign(n,x.node_ops.statfs(x.mount.opts.root)),n},create(x,n=438){return n&=4095,n|=32768,r.mknod(x,n,0)},mkdir(x,n=511){return n&=1023,n|=16384,r.mknod(x,n,0)},mkdirTree(x,n){var v=x.split("/"),f="";for(var l of v)if(l){(f||A0.isAbs(x))&&(f+="/"),f+=l;try{r.mkdir(f,n)}catch(m){if(m.errno!=20)throw m}}},mkdev(x,n,v){return typeof v>"u"&&(v=n,n=438),n|=8192,r.mknod(x,n,v)},symlink(x,n){if(!Q0.resolve(x))throw new r.ErrnoError(44);var v=r.lookupPath(n,{parent:!0}),f=v.node;if(!f)throw new r.ErrnoError(44);var l=A0.basename(n),m=r.mayCreate(f,l);if(m)throw new r.ErrnoError(m);if(!f.node_ops.symlink)throw new r.ErrnoError(63);return f.node_ops.symlink(f,l,x)},rename(x,n){var v=A0.dirname(x),f=A0.dirname(n),l=A0.basename(x),m=A0.basename(n),N,I,X;if(N=r.lookupPath(x,{parent:!0}),I=N.node,N=r.lookupPath(n,{parent:!0}),X=N.node,!I||!X)throw new r.ErrnoError(44);if(I.mount!==X.mount)throw new r.ErrnoError(75);var v0=r.lookupNode(I,l),k0=Q0.relative(x,f);if(k0.charAt(0)!==".")throw new r.ErrnoError(28);if(k0=Q0.relative(n,v),k0.charAt(0)!==".")throw new r.ErrnoError(55);var u0;try{u0=r.lookupNode(X,m)}catch{}if(v0!==u0){var c0=r.isDir(v0.mode),i0=r.mayDelete(I,l,c0);if(i0)throw new r.ErrnoError(i0);if(i0=u0?r.mayDelete(X,m,c0):r.mayCreate(X,m),i0)throw new r.ErrnoError(i0);if(!I.node_ops.rename)throw new r.ErrnoError(63);if(r.isMountpoint(v0)||u0&&r.isMountpoint(u0))throw new r.ErrnoError(10);if(X!==I&&(i0=r.nodePermissions(I,"w"),i0))throw new r.ErrnoError(i0);r.hashRemoveNode(v0);try{I.node_ops.rename(v0,X,m),v0.parent=X}catch(T0){throw T0}finally{r.hashAddNode(v0)}}},rmdir(x){var n=r.lookupPath(x,{parent:!0}),v=n.node,f=A0.basename(x),l=r.lookupNode(v,f),m=r.mayDelete(v,f,!0);if(m)throw new r.ErrnoError(m);if(!v.node_ops.rmdir)throw new r.ErrnoError(63);if(r.isMountpoint(l))throw new r.ErrnoError(10);v.node_ops.rmdir(v,f),r.destroyNode(l)},readdir(x){var n=r.lookupPath(x,{follow:!0}),v=n.node,f=r.checkOpExists(v.node_ops.readdir,54);return f(v)},unlink(x){var n=r.lookupPath(x,{parent:!0}),v=n.node;if(!v)throw new r.ErrnoError(44);var f=A0.basename(x),l=r.lookupNode(v,f),m=r.mayDelete(v,f,!1);if(m)throw new r.ErrnoError(m);if(!v.node_ops.unlink)throw new r.ErrnoError(63);if(r.isMountpoint(l))throw new r.ErrnoError(10);v.node_ops.unlink(v,f),r.destroyNode(l)},readlink(x){var n=r.lookupPath(x),v=n.node;if(!v)throw new r.ErrnoError(44);if(!v.node_ops.readlink)throw new r.ErrnoError(28);return v.node_ops.readlink(v)},stat(x,n){var v=r.lookupPath(x,{follow:!n}),f=v.node,l=r.checkOpExists(f.node_ops.getattr,63);return l(f)},fstat(x){var n=r.getStreamChecked(x),v=n.node,f=n.stream_ops.getattr,l=f?n:v;return f??(f=v.node_ops.getattr),r.checkOpExists(f,63),f(l)},lstat(x){return r.stat(x,!0)},doChmod(x,n,v,f){r.doSetAttr(x,n,{mode:v&4095|n.mode&-4096,ctime:Date.now(),dontFollow:f})},chmod(x,n,v){var f;if(typeof x=="string"){var l=r.lookupPath(x,{follow:!v});f=l.node}else f=x;r.doChmod(null,f,n,v)},lchmod(x,n){r.chmod(x,n,!0)},fchmod(x,n){var v=r.getStreamChecked(x);r.doChmod(v,v.node,n,!1)},doChown(x,n,v){r.doSetAttr(x,n,{timestamp:Date.now(),dontFollow:v})},chown(x,n,v,f){var l;if(typeof x=="string"){var m=r.lookupPath(x,{follow:!f});l=m.node}else l=x;r.doChown(null,l,f)},lchown(x,n,v){r.chown(x,n,v,!0)},fchown(x,n,v){var f=r.getStreamChecked(x);r.doChown(f,f.node,!1)},doTruncate(x,n,v){if(r.isDir(n.mode))throw new r.ErrnoError(31);if(!r.isFile(n.mode))throw new r.ErrnoError(28);var f=r.nodePermissions(n,"w");if(f)throw new r.ErrnoError(f);r.doSetAttr(x,n,{size:v,timestamp:Date.now()})},truncate(x,n){if(n<0)throw new r.ErrnoError(28);var v;if(typeof x=="string"){var f=r.lookupPath(x,{follow:!0});v=f.node}else v=x;r.doTruncate(null,v,n)},ftruncate(x,n){var v=r.getStreamChecked(x);if(n<0||(v.flags&2097155)===0)throw new r.ErrnoError(28);r.doTruncate(v,v.node,n)},utime(x,n,v){var f=r.lookupPath(x,{follow:!0}),l=f.node,m=r.checkOpExists(l.node_ops.setattr,63);m(l,{atime:n,mtime:v})},open(x,n,v=438){if(x==="")throw new r.ErrnoError(44);n=_r(n),n&64?v=v&4095|32768:v=0;var f,l;if(typeof x=="object")f=x;else{l=x.endsWith("/");var m=r.lookupPath(x,{follow:!(n&131072),noent_okay:!0});f=m.node,x=m.path}var N=!1;if(n&64)if(f){if(n&128)throw new r.ErrnoError(20)}else{if(l)throw new r.ErrnoError(31);f=r.mknod(x,v|511,0),N=!0}if(!f)throw new r.ErrnoError(44);if(r.isChrdev(f.mode)&&(n&=-513),n&65536&&!r.isDir(f.mode))throw new r.ErrnoError(54);if(!N){var I=r.mayOpen(f,n);if(I)throw new r.ErrnoError(I)}n&512&&!N&&r.truncate(f,0),n&=-131713;var X=r.createStream({node:f,path:r.getPath(f),flags:n,seekable:!0,position:0,stream_ops:f.stream_ops,ungotten:[],error:!1});return X.stream_ops.open&&X.stream_ops.open(X),N&&r.chmod(f,v&511),X},close(x){if(r.isClosed(x))throw new r.ErrnoError(8);x.getdents&&(x.getdents=null);try{x.stream_ops.close&&x.stream_ops.close(x)}catch(n){throw n}finally{r.closeStream(x.fd)}x.fd=null},isClosed(x){return x.fd===null},llseek(x,n,v){if(r.isClosed(x))throw new r.ErrnoError(8);if(!x.seekable||!x.stream_ops.llseek)throw new r.ErrnoError(70);if(v!=0&&v!=1&&v!=2)throw new r.ErrnoError(28);return x.position=x.stream_ops.llseek(x,n,v),x.ungotten=[],x.position},read(x,n,v,f,l){if(f<0||l<0)throw new r.ErrnoError(28);if(r.isClosed(x))throw new r.ErrnoError(8);if((x.flags&2097155)===1)throw new r.ErrnoError(8);if(r.isDir(x.node.mode))throw new r.ErrnoError(31);if(!x.stream_ops.read)throw new r.ErrnoError(28);var m=typeof l<"u";if(!m)l=x.position;else if(!x.seekable)throw new r.ErrnoError(70);var N=x.stream_ops.read(x,n,v,f,l);return m||(x.position+=N),N},write(x,n,v,f,l,m){if(f<0||l<0)throw new r.ErrnoError(28);if(r.isClosed(x))throw new r.ErrnoError(8);if((x.flags&2097155)===0)throw new r.ErrnoError(8);if(r.isDir(x.node.mode))throw new r.ErrnoError(31);if(!x.stream_ops.write)throw new r.ErrnoError(28);x.seekable&&x.flags&1024&&r.llseek(x,0,2);var N=typeof l<"u";if(!N)l=x.position;else if(!x.seekable)throw new r.ErrnoError(70);var I=x.stream_ops.write(x,n,v,f,l,m);return N||(x.position+=I),I},mmap(x,n,v,f,l){if((f&2)!==0&&(l&2)===0&&(x.flags&2097155)!==2)throw new r.ErrnoError(2);if((x.flags&2097155)===1)throw new r.ErrnoError(2);if(!x.stream_ops.mmap)throw new r.ErrnoError(43);if(!n)throw new r.ErrnoError(28);return x.stream_ops.mmap(x,n,v,f,l)},msync(x,n,v,f,l){return x.stream_ops.msync?x.stream_ops.msync(x,n,v,f,l):0},ioctl(x,n,v){if(!x.stream_ops.ioctl)throw new r.ErrnoError(59);return x.stream_ops.ioctl(x,n,v)},readFile(x,n={}){n.flags=n.flags||0,n.encoding=n.encoding||"binary",n.encoding!=="utf8"&&n.encoding!=="binary"&&o0(`Invalid encoding type "${n.encoding}"`);var v=r.open(x,n.flags),f=r.stat(x),l=f.size,m=new Uint8Array(l);return r.read(v,m,0,l,0),n.encoding==="utf8"&&(m=Px(m)),r.close(v),m},writeFile(x,n,v={}){v.flags=v.flags||577;var f=r.open(x,v.flags,v.mode);n=mA(n),r.write(f,n,0,n.byteLength,void 0,v.canOwn),r.close(f)},cwd:()=>r.currentPath,chdir(x){var n=r.lookupPath(x,{follow:!0});if(n.node===null)throw new r.ErrnoError(44);if(!r.isDir(n.node.mode))throw new r.ErrnoError(54);var v=r.nodePermissions(n.node,"x");if(v)throw new r.ErrnoError(v);r.currentPath=n.path},createDefaultDirectories(){r.mkdir("/tmp"),r.mkdir("/home"),r.mkdir("/home/web_user")},createDefaultDevices(){r.mkdir("/dev"),r.registerDevice(r.makedev(1,3),{read:()=>0,write:(f,l,m,N,I)=>N,llseek:()=>0}),r.mkdev("/dev/null",r.makedev(1,3)),L0.register(r.makedev(5,0),L0.default_tty_ops),L0.register(r.makedev(6,0),L0.default_tty1_ops),r.mkdev("/dev/tty",r.makedev(5,0)),r.mkdev("/dev/tty1",r.makedev(6,0));var x=new Uint8Array(1024),n=0,v=()=>(n===0&&(pA(x),n=x.byteLength),x[--n]);r.createDevice("/dev","random",v),r.createDevice("/dev","urandom",v),r.mkdir("/dev/shm"),r.mkdir("/dev/shm/tmp")},createSpecialDirectories(){r.mkdir("/proc");var x=r.mkdir("/proc/self");r.mkdir("/proc/self/fd"),r.mount({mount(){var n=r.createNode(x,"fd",16895,73);return n.stream_ops={llseek:J.stream_ops.llseek},n.node_ops={lookup(v,f){var l=+f,m=r.getStreamChecked(l),N={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>m.path},id:l+1};return N.parent=N,N},readdir(){return Array.from(r.streams.entries()).filter(([v,f])=>f).map(([v,f])=>v.toString())}},n}},{},"/proc/self/fd")},createStandardStreams(x,n,v){x?r.createDevice("/dev","stdin",x):r.symlink("/dev/tty","/dev/stdin"),n?r.createDevice("/dev","stdout",null,n):r.symlink("/dev/tty","/dev/stdout"),v?r.createDevice("/dev","stderr",null,v):r.symlink("/dev/tty1","/dev/stderr");var f=r.open("/dev/stdin",0),l=r.open("/dev/stdout",1),m=r.open("/dev/stderr",1)},staticInit(){r.nameTable=new Array(4096),r.mount(J,{},"/"),r.createDefaultDirectories(),r.createDefaultDevices(),r.createSpecialDirectories(),r.filesystems={MEMFS:J,PROXYFS:E0}},init(x,n,v){r.initialized=!0,x??(x=o.stdin),n??(n=o.stdout),v??(v=o.stderr),r.createStandardStreams(x,n,v)},quit(){r.initialized=!1,D(0);for(var x of r.streams)x&&r.close(x)},findObject(x,n){var v=r.analyzePath(x,n);return v.exists?v.object:null},analyzePath(x,n){try{var v=r.lookupPath(x,{follow:!n});x=v.path}catch{}var f={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var v=r.lookupPath(x,{parent:!0});f.parentExists=!0,f.parentPath=v.path,f.parentObject=v.node,f.name=A0.basename(x),v=r.lookupPath(x,{follow:!n}),f.exists=!0,f.path=v.path,f.object=v.node,f.name=v.node.name,f.isRoot=v.path==="/"}catch(l){f.error=l.errno}return f},createPath(x,n,v,f){x=typeof x=="string"?x:r.getPath(x);for(var l=n.split("/").reverse();l.length;){var m=l.pop();if(m){var N=A0.join2(x,m);try{r.mkdir(N)}catch(I){if(I.errno!=20)throw I}x=N}}return N},createFile(x,n,v,f,l){var m=A0.join2(typeof x=="string"?x:r.getPath(x),n),N=Kx(f,l);return r.create(m,N)},createDataFile(x,n,v,f,l,m){var N=n;x&&(x=typeof x=="string"?x:r.getPath(x),N=n?A0.join2(x,n):x);var I=Kx(f,l),X=r.create(N,I);if(v){v=mA(v),r.chmod(X,I|146);var v0=r.open(X,577);r.write(v0,v,0,v.length,0,m),r.close(v0),r.chmod(X,I)}},createDevice(x,n,v,f){var l,m=A0.join2(typeof x=="string"?x:r.getPath(x),n),N=Kx(!!v,!!f);(l=r.createDevice).major??(l.major=64);var I=r.makedev(r.createDevice.major++,0);return r.registerDevice(I,{open(X){X.seekable=!1},close(X){f?.buffer?.length&&f(10)},read(X,v0,k0,u0,c0){for(var i0=0,T0=0;T0<u0;T0++){var X0;try{X0=v()}catch{throw new r.ErrnoError(29)}if(X0===void 0&&i0===0)throw new r.ErrnoError(6);if(X0==null)break;i0++,v0[k0+T0]=X0}return i0&&(X.node.atime=Date.now()),i0},write(X,v0,k0,u0,c0){for(var i0=0;i0<u0;i0++)try{f(v0[k0+i0])}catch{throw new r.ErrnoError(29)}return u0&&(X.node.mtime=X.node.ctime=Date.now()),i0}}),r.mkdev(m,N,I)},forceLoadFile(x){if(x.isDevice||x.isFolder||x.link||x.contents)return!0;if(globalThis.XMLHttpRequest)o0("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{x.contents=y(x.url)}catch{throw new r.ErrnoError(29)}},createLazyFile(x,n,v,f,l){class m{constructor(){N0(this,"lengthKnown",!1),N0(this,"chunks",[])}get(c0){if(!(c0>this.length-1||c0<0)){var i0=c0%this.chunkSize,T0=c0/this.chunkSize|0;return this.getter(T0)[i0]}}setDataGetter(c0){this.getter=c0}cacheLength(){var c0=new XMLHttpRequest;c0.open("HEAD",v,!1),c0.send(null),c0.status>=200&&c0.status<300||c0.status===304||o0("Couldn't load "+v+". Status: "+c0.status);var i0=Number(c0.getResponseHeader("Content-length")),T0,X0=(T0=c0.getResponseHeader("Accept-Ranges"))&&T0==="bytes",ix=(T0=c0.getResponseHeader("Content-Encoding"))&&T0==="gzip",fx=1024*1024;X0||(fx=i0);var Dx=(px,nA)=>{px>nA&&o0("invalid range ("+px+", "+nA+") or no bytes requested!"),nA>i0-1&&o0("only "+i0+" bytes available! programmer error!");var U0=new XMLHttpRequest;return U0.open("GET",v,!1),i0!==fx&&U0.setRequestHeader("Range","bytes="+px+"-"+nA),U0.responseType="arraybuffer",U0.overrideMimeType&&U0.overrideMimeType("text/plain; charset=x-user-defined"),U0.send(null),U0.status>=200&&U0.status<300||U0.status===304||o0("Couldn't load "+v+". Status: "+U0.status),U0.response!==void 0?new Uint8Array(U0.response||[]):Jx(U0.responseText||"",!0)},NA=this;NA.setDataGetter(px=>{var nA=px*fx,U0=(px+1)*fx-1;return U0=Math.min(U0,i0-1),typeof NA.chunks[px]>"u"&&(NA.chunks[px]=Dx(nA,U0)),typeof NA.chunks[px]>"u"&&o0("doXHR failed!"),NA.chunks[px]}),(ix||!i0)&&(fx=i0=1,i0=this.getter(0).length,fx=i0,g("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i0,this._chunkSize=fx,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(globalThis.XMLHttpRequest){c||o0("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var N=new m,I={isDevice:!1,contents:N}}else var I={isDevice:!1,url:v};var X=r.createFile(x,n,I,f,l);I.contents?X.contents=I.contents:I.url&&(X.contents=null,X.url=I.url),Object.defineProperties(X,{usedBytes:{get:function(){return this.contents.length}}});var v0={};for(let[u0,c0]of Object.entries(X.stream_ops))v0[u0]=(...i0)=>(r.forceLoadFile(X),c0(...i0));function k0(u0,c0,i0,T0,X0){var ix=u0.node.contents;if(X0>=ix.length)return 0;var fx=Math.min(ix.length-X0,T0);if(ix.slice)for(var Dx=0;Dx<fx;Dx++)c0[i0+Dx]=ix[X0+Dx];else for(var Dx=0;Dx<fx;Dx++)c0[i0+Dx]=ix.get(X0+Dx);return fx}return v0.read=(u0,c0,i0,T0,X0)=>(r.forceLoadFile(X),k0(u0,c0,i0,T0,X0)),v0.mmap=(u0,c0,i0,T0,X0)=>{r.forceLoadFile(X);var ix=uA(c0);if(!ix)throw new r.ErrnoError(48);return k0(u0,q0,ix,c0,i0),{ptr:ix,allocated:!0}},X.stream_ops=v0,X}},s0={currentUmask:18,calculateAt(x,n,v){if(A0.isAbs(n))return n;var f;if(x===-100)f=r.cwd();else{var l=s0.getStreamFromFD(x);f=l.path}if(n.length==0){if(!v)throw new r.ErrnoError(44);return f}return f+"/"+n},writeStat(x,n){Q[x>>2]=n.dev,Q[x+4>>2]=n.mode,Q[x+8>>2]=n.nlink,Q[x+12>>2]=n.uid,Q[x+16>>2]=n.gid,Q[x+20>>2]=n.rdev,h0[x+24>>3]=BigInt(n.size),m0[x+32>>2]=4096,m0[x+36>>2]=n.blocks;var v=n.atime.getTime(),f=n.mtime.getTime(),l=n.ctime.getTime();return h0[x+40>>3]=BigInt(Math.floor(v/1e3)),Q[x+48>>2]=v%1e3*1e3*1e3,h0[x+56>>3]=BigInt(Math.floor(f/1e3)),Q[x+64>>2]=f%1e3*1e3*1e3,h0[x+72>>3]=BigInt(Math.floor(l/1e3)),Q[x+80>>2]=l%1e3*1e3*1e3,h0[x+88>>3]=BigInt(n.ino),0},writeStatFs(x,n){Q[x+4>>2]=n.bsize,Q[x+60>>2]=n.bsize,h0[x+8>>3]=BigInt(n.blocks),h0[x+16>>3]=BigInt(n.bfree),h0[x+24>>3]=BigInt(n.bavail),h0[x+32>>3]=BigInt(n.files),h0[x+40>>3]=BigInt(n.ffree),Q[x+48>>2]=n.fsid,Q[x+64>>2]=n.flags,Q[x+56>>2]=n.namelen},doMsync(x,n,v,f,l){if(!r.isFile(n.node.mode))throw new r.ErrnoError(43);if(f&2)return 0;var m=Bx.slice(x,x+v);r.msync(n,m,l,v,f)},getStreamFromFD(x){var n=r.getStreamChecked(x);return n},varargs:void 0,getStr(x){var n=wx(x);return n}};function Lr(x,n,v,f){try{if(n=s0.getStr(n),n=s0.calculateAt(x,n),v&-8)return-28;var l=r.lookupPath(n,{follow:!0}),m=l.node;if(!m)return-44;var N="";return v&4&&(N+="r"),v&2&&(N+="w"),v&1&&(N+="x"),N&&r.nodePermissions(m,N)?-2:0}catch(I){if(typeof r>"u"||I.name!=="ErrnoError")throw I;return-I.errno}}var tA=()=>{var x=m0[+s0.varargs>>2];return s0.varargs+=4,x},Lx=tA;function Gr(x,n,v){s0.varargs=v;try{var f=s0.getStreamFromFD(x);switch(n){case 0:{var l=tA();if(l<0)return-28;for(;r.streams[l];)l++;var m;return m=r.dupStream(f,l),m.fd}case 1:case 2:return 0;case 3:return f.flags;case 4:{var l=tA(),N=289792;return f.flags=f.flags&~N|l&N,0}case 12:{var l=Lx(),I=0;return kx[l+I>>1]=2,0}case 13:case 14:return 0}return-28}catch(X){if(typeof r>"u"||X.name!=="ErrnoError")throw X;return-X.errno}}var wA=(x,n,v)=>bA(x,Bx,n,v);function Tr(x,n){try{if(n===0)return-28;var v=r.cwd(),f=zx(v)+1;return n<f?-68:(wA(v,x,n),f)}catch(l){if(typeof r>"u"||l.name!=="ErrnoError")throw l;return-l.errno}}function Mr(x,n,v){s0.varargs=v;try{var f=s0.getStreamFromFD(x);switch(n){case 21509:return f.tty?0:-59;case 21505:{if(!f.tty)return-59;if(f.tty.ops.ioctl_tcgets){var l=f.tty.ops.ioctl_tcgets(f),m=Lx();m0[m>>2]=l.c_iflag||0,m0[m+4>>2]=l.c_oflag||0,m0[m+8>>2]=l.c_cflag||0,m0[m+12>>2]=l.c_lflag||0;for(var N=0;N<32;N++)q0[m+N+17]=l.c_cc[N]||0;return 0}return 0}case 21510:case 21511:case 21512:return f.tty?0:-59;case 21506:case 21507:case 21508:{if(!f.tty)return-59;if(f.tty.ops.ioctl_tcsets){for(var m=Lx(),I=m0[m>>2],X=m0[m+4>>2],v0=m0[m+8>>2],k0=m0[m+12>>2],u0=[],N=0;N<32;N++)u0.push(q0[m+N+17]);return f.tty.ops.ioctl_tcsets(f.tty,n,{c_iflag:I,c_oflag:X,c_cflag:v0,c_lflag:k0,c_cc:u0})}return 0}case 21519:{if(!f.tty)return-59;var m=Lx();return m0[m>>2]=0,0}case 21520:return f.tty?-28:-59;case 21537:case 21531:{var m=Lx();return r.ioctl(f,n,m)}case 21523:{if(!f.tty)return-59;if(f.tty.ops.ioctl_tiocgwinsz){var c0=f.tty.ops.ioctl_tiocgwinsz(f.tty),m=Lx();kx[m>>1]=c0[0],kx[m+2>>1]=c0[1]}return 0}case 21524:return f.tty?0:-59;case 21515:return f.tty?0:-59;default:return-28}}catch(i0){if(typeof r>"u"||i0.name!=="ErrnoError")throw i0;return-i0.errno}}function Ir(x,n,v,f){s0.varargs=f;try{n=s0.getStr(n),n=s0.calculateAt(x,n);var l=f?tA():0;return v&64&&(l&=~s0.currentUmask),r.open(n,v,l).fd}catch(m){if(typeof r>"u"||m.name!=="ErrnoError")throw m;return-m.errno}}function Sr(x,n,v,f){try{if(n=s0.getStr(n),n=s0.calculateAt(x,n),f<=0)return-28;var l=r.readlink(n),m=Math.min(f,zx(l)),N=q0[v+m];return wA(l,v,f+1),q0[v+m]=N,m}catch(I){if(typeof r>"u"||I.name!=="ErrnoError")throw I;return-I.errno}}function Rr(x,n,v,f){try{return n=s0.getStr(n),f=s0.getStr(f),n=s0.calculateAt(x,n),f=s0.calculateAt(v,f),r.rename(n,f),0}catch(l){if(typeof r>"u"||l.name!=="ErrnoError")throw l;return-l.errno}}function Or(x){try{return x=s0.getStr(x),r.rmdir(x),0}catch(n){if(typeof r>"u"||n.name!=="ErrnoError")throw n;return-n.errno}}function Ur(x,n,v){try{if(n=s0.getStr(n),n=s0.calculateAt(x,n),!v)r.unlink(n);else if(v===512)r.rmdir(n);else return-28;return 0}catch(f){if(typeof r>"u"||f.name!=="ErrnoError")throw f;return-f.errno}}var Hr=()=>{throw new H},zr=()=>performance.now(),Jr=()=>Date.now(),Kr=1,Vr=x=>x>=0&&x<=3,XA=9007199254740992,Wr=-9007199254740992,YA=x=>x<Wr||x>XA?NaN:Number(x);function Xr(x,n,v){if(n=YA(n),!Vr(x))return 28;var f;if(x===0)f=Jr();else if(Kr)f=zr();else return 52;var l=Math.round(f*1e3*1e3);return h0[v>>3]=BigInt(l),0}var Yr=()=>2147483648,ZA=(x,n)=>Math.ceil(x/n)*n,Zr=x=>{var n=j0.buffer.byteLength,v=(x-n+65535)/65536|0;try{return j0.grow(v),M(),1}catch{}},Qr=x=>{var n=Bx.length;x>>>=0;var v=Yr();if(x>v)return!1;for(var f=1;f<=4;f*=2){var l=n*(1+.2/f);l=Math.min(l,x+100663296);var m=Math.min(v,ZA(Math.max(x,l),65536)),N=Zr(m);if(N)return!0}return!1};function xe(x){try{var n=s0.getStreamFromFD(x);return r.close(n),0}catch(v){if(typeof r>"u"||v.name!=="ErrnoError")throw v;return v.errno}}var Ae=(x,n,v,f)=>{for(var l=0,m=0;m<v;m++){var N=Q[n>>2],I=Q[n+4>>2];n+=8;var X=r.read(x,q0,N,I,f);if(X<0)return-1;if(l+=X,X<I)break;typeof f<"u"&&(f+=X)}return l};function re(x,n,v,f){try{var l=s0.getStreamFromFD(x),m=Ae(l,n,v);return Q[f>>2]=m,0}catch(N){if(typeof r>"u"||N.name!=="ErrnoError")throw N;return N.errno}}function QA(x,n,v,f){n=YA(n);try{if(isNaN(n))return 22;var l=s0.getStreamFromFD(x);return r.llseek(l,n,v),h0[f>>3]=BigInt(l.position),l.getdents&&n===0&&v===0&&(l.getdents=null),0}catch(m){if(typeof r>"u"||m.name!=="ErrnoError")throw m;return m.errno}}var xr=(x,n,v,f)=>{for(var l=0,m=0;m<v;m++){var N=Q[n>>2],I=Q[n+4>>2];n+=8;var X=r.write(x,q0,N,I,f);if(X<0)return-1;if(l+=X,X<I)break;typeof f<"u"&&(f+=X)}return l};function Ar(x,n,v,f){try{var l=s0.getStreamFromFD(x),m=xr(l,n,v);return Q[f>>2]=m,0}catch(N){if(typeof r>"u"||N.name!=="ErrnoError")throw N;return N.errno}}var ee=0,_A=()=>jA||ee>0,te=x=>{$=x,_A()||(o.onExit?.(x),T=!0),k(x,new Ux(x))},ne=(x,n)=>{$=x,_A()||d0(),te(x)},ie=x=>{if(x instanceof Ux||x=="unwind")return $;k(1,x)},Wx=x=>R(x),Fe=x=>{var n=zx(x)+1,v=Wx(n);return wA(x,v,n),v},$A=[],R0=x=>{var n=$A[x];return n||($A[x]=n=C0.get(x)),n},qA=(...x)=>r.createPath(...x),Xx=(...x)=>r.unlink(...x),A=(...x)=>r.createLazyFile(...x),a=(...x)=>r.createDevice(...x);if(r.createPreloadedFile=Nr,r.preloadFile=Vx,r.staticInit(),o.noExitRuntime&&(jA=o.noExitRuntime),o.preloadPlugins&&(yA=o.preloadPlugins),o.print&&(g=o.print),o.printErr&&(w=o.printErr),o.wasmBinary&&(q=o.wasmBinary),o.arguments&&(b=o.arguments),o.thisProgram&&(p=o.thisProgram),o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.shift()();o.callMain=qe,o.addRunDependency=kA,o.removeRunDependency=gA,o.FS_preloadFile=Vx,o.FS_unlink=Xx,o.FS_createPath=qA,o.FS_createDevice=a,o.FS=r,o.FS_createDataFile=hA,o.FS_createLazyFile=A,o.PROXYFS=E0;var B,D,d,h,G,R,W,a0,g0,j0,C0;function n0(x){B=o._main=x.__main_argc_argv,D=x.fflush,d=x.__funcs_on_exit,h=x.setThrew,G=x._emscripten_stack_restore,R=x._emscripten_stack_alloc,W=x.emscripten_stack_get_current,a0=j0=x.memory,g0=C0=x.__indirect_function_table}var $0={__assert_fail:Nx,__syscall_faccessat:Lr,__syscall_fcntl64:Gr,__syscall_getcwd:Tr,__syscall_ioctl:Mr,__syscall_openat:Ir,__syscall_readlinkat:Sr,__syscall_renameat:Rr,__syscall_rmdir:Or,__syscall_unlinkat:Ur,_emscripten_throw_longjmp:Hr,clock_time_get:Xr,emscripten_resize_heap:Qr,fd_close:xe,fd_read:re,fd_seek:QA,fd_write:Ar,invoke_i:Yx,invoke_ii:xx,invoke_iii:Ax,invoke_iiid:bn,invoke_iiii:nx,invoke_iiiii:G0,invoke_iiiiii:un,invoke_iijii:dn,invoke_v:O0,invoke_vi:jn,invoke_vii:Y0,invoke_viii:pn,invoke_viiii:Gx,invoke_viiiii:cn};function O0(x){var n=z0();try{R0(x)()}catch(v){if(S0(n),!(v instanceof U))throw v;h(1,0)}}function Y0(x,n,v){var f=z0();try{R0(x)(n,v)}catch(l){if(S0(f),!(l instanceof U))throw l;h(1,0)}}function xx(x,n){var v=z0();try{return R0(x)(n)}catch(f){if(S0(v),!(f instanceof U))throw f;h(1,0)}}function Ax(x,n,v){var f=z0();try{return R0(x)(n,v)}catch(l){if(S0(f),!(l instanceof U))throw l;h(1,0)}}function Yx(x){var n=z0();try{return R0(x)()}catch(v){if(S0(n),!(v instanceof U))throw v;h(1,0)}}function nx(x,n,v,f){var l=z0();try{return R0(x)(n,v,f)}catch(m){if(S0(l),!(m instanceof U))throw m;h(1,0)}}function Gx(x,n,v,f,l){var m=z0();try{R0(x)(n,v,f,l)}catch(N){if(S0(m),!(N instanceof U))throw N;h(1,0)}}function G0(x,n,v,f,l){var m=z0();try{return R0(x)(n,v,f,l)}catch(N){if(S0(m),!(N instanceof U))throw N;h(1,0)}}function cn(x,n,v,f,l,m){var N=z0();try{R0(x)(n,v,f,l,m)}catch(I){if(S0(N),!(I instanceof U))throw I;h(1,0)}}function dn(x,n,v,f,l){var m=z0();try{return R0(x)(n,v,f,l)}catch(N){if(S0(m),!(N instanceof U))throw N;h(1,0)}}function jn(x,n){var v=z0();try{R0(x)(n)}catch(f){if(S0(v),!(f instanceof U))throw f;h(1,0)}}function pn(x,n,v,f){var l=z0();try{R0(x)(n,v,f)}catch(m){if(S0(l),!(m instanceof U))throw m;h(1,0)}}function bn(x,n,v,f){var l=z0();try{return R0(x)(n,v,f)}catch(m){if(S0(l),!(m instanceof U))throw m;h(1,0)}}function un(x,n,v,f,l,m){var N=z0();try{return R0(x)(n,v,f,l,m)}catch(I){if(S0(N),!(I instanceof U))throw I;h(1,0)}}function qe(x=[]){var n=B;x.unshift(p);var v=x.length,f=Wx((v+1)*4),l=f;for(var m of x)Q[l>>2]=Fe(m),l+=4;Q[l>>2]=0;try{var N=n(v,f);return ne(N,!0),N}catch(I){return ie(I)}}function se(x=b){if(W0>0){Cx=se;return}if(r0(),W0>0){Cx=se;return}function n(){if(o.calledRun=!0,!T){x0(),S?.(o),o.onRuntimeInitialized?.();var v=o.noInitialRun||!0;v||qe(x),f0()}}o.setStatus?(o.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>o.setStatus(""),1),n()},1)):n()}var PA;return PA=await rA(),se(),Y?E=o:E=new Promise((x,n)=>{S=x,z=n}),E}})();typeof t=="object"&&typeof e=="object"?(e.exports=F,e.exports.default=F):typeof define=="function"&&define.amd&&define([],()=>F)}}),mF=Mt({"wasm/bin/pawndbg.js"(t,e){"use strict";var F=(()=>{var i=globalThis.document?.currentScript?.src;return async function(s={}){var E,o=s,C=!!globalThis.window,c=!!globalThis.WorkerGlobalScope,j=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer",b=[],p="./this.program",k=(A,a)=>{throw a};typeof __filename<"u"?i=__filename:c&&(i=self.location.href);var _="",u,y;if(j){var P=require("fs");_=__dirname+"/",y=A=>{A=L(A)?new URL(A):A;var a=P.readFileSync(A);return a},u=async(A,a=!0)=>{A=L(A)?new URL(A):A;var B=P.readFileSync(A,a?void 0:"utf8");return B},process.argv.length>1&&(p=process.argv[1].replace(/\\/g,"/")),b=process.argv.slice(2),k=(A,a)=>{throw process.exitCode=A,a}}else if(C||c){try{_=new URL(".",i).href}catch{}c&&(y=A=>{var a=new XMLHttpRequest;return a.open("GET",A,!1),a.responseType="arraybuffer",a.send(null),new Uint8Array(a.response)}),u=async A=>{if(L(A))return new Promise((B,D)=>{var d=new XMLHttpRequest;d.open("GET",A,!0),d.responseType="arraybuffer",d.onload=()=>{if(d.status==200||d.status==0&&d.response){B(d.response);return}D(d.status)},d.onerror=D,d.send(null)});var a=await fetch(A,{credentials:"same-origin"});if(a.ok)return a.arrayBuffer();throw new Error(a.status+" : "+a.url)}}var g=console.log.bind(console),w=console.error.bind(console),q,T=!1,$,L=A=>A.startsWith("file://");class U{}class H extends U{}function K(A){for(var a=0,B=A.length,D=new Uint8Array(B),d;a<B;++a)d=A.charCodeAt(a),D[a]=~d>>8&d;return D}var S,z,Y=!1,Z=!1;function M(){var A=Wx.buffer;q0=new Int8Array(A),kx=new Int16Array(A),Bx=new Uint8Array(A),mr=new Uint16Array(A),m0=new Int32Array(A),Q=new Uint32Array(A),br=new Float32Array(A),ur=new Float64Array(A),h0=new BigInt64Array(A),hr=new BigUint64Array(A)}function r0(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)kr(o.preRun.shift());lA(dA)}function x0(){Y=!0,!o.noFSInit&&!r.initialized&&r.init(),L0.init(),Xx.__wasm_call_ctors(),r.ignorePermissions=!1}function e0(){}function d0(){xr(),r.quit(),L0.shutdown(),Z=!0}function f0(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)gr(o.postRun.shift());lA(cA)}function o0(A){o.onAbort?.(A),A=`Aborted(${A})`,w(A),T=!0,A+=". Build with -sASSERTIONS for more info.";var a=new WebAssembly.RuntimeError(A);throw z?.(a),a}var b0;function Z0(){return K(`\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 Q0(x){return x}async function Nx(x){return x}async function zx(x,n){try{var v=await Nx(x),f=await WebAssembly.instantiate(v,n);return f}catch(l){G(`failed to asynchronously prepare wasm: ${l}`),o0(l)}}async function xx(x,n,v){return zx(n,v)}function Lx(){var x={env:$0,wasi_snapshot_preview1:$0};return x}async function tA(){function x(m,$){return PA=m.exports,n0(PA),L(),PA}function n(m){return x(m.instance)}var v=Lx();if(o.instantiateWasm)return new Promise((m,$)=>{o.instantiateWasm(v,(S,x0)=>{m(x(S,x0))})});u0??(u0=M0());var f=await xx(M,u0,v),l=n(f);return l}class Jx{constructor(n){N0(this,"name","ExitStatus"),this.message=`Program terminated with exit(${n})`,this.status=n}}var yx,m0,h0,q0,ur,br,mr,A0,hr,Cx,lA=x=>{for(;x.length>0;)x.shift()(o)},cA=[],gr=x=>cA.push(x),dA=[],kr=x=>dA.push(x),jA=!1,S0=x=>T(x),z0=()=>Y(),wx=globalThis.TextDecoder&&new TextDecoder,nA=(x,n,v,f)=>{var l=n+v;if(f)return l;for(;x[n]&&!(n>=l);)++n;return n},Gx=(x,n=0,v,f)=>{var l=nA(x,n,v,f);if(l-n>16&&x.buffer&&wx)return wx.decode(x.subarray(n,l));for(var m="";n<l;){var $=x[n++];if(!($&128)){m+=String.fromCharCode($);continue}var S=x[n++]&63;if(($&224)==192){m+=String.fromCharCode(($&31)<<6|S);continue}var x0=x[n++]&63;if(($&240)==224?$=($&15)<<12|S<<6|x0:$=($&7)<<18|S<<12|x0<<6|x[n++]&63,$<65536)m+=String.fromCharCode($);else{var v0=$-65536;m+=String.fromCharCode(55296|v0>>10,56320|v0&1023)}}return m},_x=(x,n,v)=>x?Gx(Cx,x,n,v):"",Tx=(x,n,v,f)=>o0(`Assertion failed: ${_x(x)}, at: `+[n?_x(n):"unknown filename",v,f?_x(f):"unknown function"]),r0={isAbs:x=>x.charAt(0)==="/",splitPath:x=>{var n=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return n.exec(x).slice(1)},normalizeArray:(x,n)=>{for(var v=0,f=x.length-1;f>=0;f--){var l=x[f];l==="."?x.splice(f,1):l===".."?(x.splice(f,1),v++):v&&(x.splice(f,1),v--)}if(n)for(;v;v--)x.unshift("..");return x},normalize:x=>{var n=r0.isAbs(x),v=x.slice(-1)==="/";return x=r0.normalizeArray(x.split("/").filter(f=>!!f),!n).join("/"),!x&&!n&&(x="."),x&&v&&(x+="/"),(n?"/":"")+x},dirname:x=>{var n=r0.splitPath(x),v=n[0],f=n[1];return!v&&!f?".":(f&&(f=f.slice(0,-1)),v+f)},basename:x=>x&&x.match(/([^\/]+|\/)\/*$/)[1],join:(...x)=>r0.normalize(x.join("/")),join2:(x,n)=>r0.normalize(x+"/"+n)},yr=()=>{if(j){var x=require("crypto");return n=>x.randomFillSync(n)}return n=>(crypto.getRandomValues(n),0)},pA=x=>(pA=yr())(x),Ax={resolve:(...x)=>{for(var n="",v=!1,f=x.length-1;f>=-1&&!v;f--){var l=f>=0?x[f]:r.cwd();if(typeof l!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!l)return"";n=l+"/"+n,v=r0.isAbs(l)}return n=r0.normalizeArray(n.split("/").filter(m=>!!m),!v).join("/"),(v?"/":"")+n||"."},relative:(x,n)=>{x=Ax.resolve(x).slice(1),n=Ax.resolve(n).slice(1);function v(v0){for(var k0=0;k0<v0.length&&v0[k0]==="";k0++);for(var b0=v0.length-1;b0>=0&&v0[b0]==="";b0--);return k0>b0?[]:v0.slice(k0,b0-k0+1)}for(var f=v(x.split("/")),l=v(n.split("/")),m=Math.min(f.length,l.length),$=m,S=0;S<m;S++)if(f[S]!==l[S]){$=S;break}for(var x0=[],S=$;S<f.length;S++)x0.push("..");return x0=x0.concat(l.slice($)),x0.join("/")}},Kx=[],Vx=x=>{for(var n=0,v=0;v<x.length;++v){var f=x.charCodeAt(v);f<=127?n++:f<=2047?n+=2:f>=55296&&f<=57343?(n+=4,++v):n+=3}return n},uA=(x,n,v,f)=>{if(!(f>0))return 0;for(var l=v,m=v+f-1,$=0;$<x.length;++$){var S=x.codePointAt($);if(S<=127){if(v>=m)break;n[v++]=S}else if(S<=2047){if(v+1>=m)break;n[v++]=192|S>>6,n[v++]=128|S&63}else if(S<=65535){if(v+2>=m)break;n[v++]=224|S>>12,n[v++]=128|S>>6&63,n[v++]=128|S&63}else{if(v+3>=m)break;n[v++]=240|S>>18,n[v++]=128|S>>12&63,n[v++]=128|S>>6&63,n[v++]=128|S&63,$++}}return n[v]=0,v-l},Wx=(x,n,v)=>{var f=v>0?v:Vx(x)+1,l=new Array(f),m=uA(x,l,0,l.length);return n&&(l.length=m),l},wr=()=>{if(!Kx.length){var x=null;if(j){var n=256,v=Buffer.alloc(n),f=0,l=process.stdin.fd;try{f=q.readSync(l,v,0,n)}catch(m){if(m.toString().includes("EOF"))f=0;else throw m}f>0&&(x=v.slice(0,f).toString("utf-8"))}else globalThis.window?.prompt&&(x=window.prompt("Input: "),x!==null&&(x+=`
1162
+ `));if(!x)return null;Kx=Wx(x,!0)}return Kx.shift()},L0={ttys:[],init(){},shutdown(){},register(x,n){L0.ttys[x]={input:[],output:[],ops:n},r.registerDevice(x,L0.stream_ops)},stream_ops:{open(x){var n=L0.ttys[x.node.rdev];if(!n)throw new r.ErrnoError(43);x.tty=n,x.seekable=!1},close(x){x.tty.ops.fsync(x.tty)},fsync(x){x.tty.ops.fsync(x.tty)},read(x,n,v,f,l){if(!x.tty||!x.tty.ops.get_char)throw new r.ErrnoError(60);for(var m=0,$=0;$<f;$++){var S;try{S=x.tty.ops.get_char(x.tty)}catch{throw new r.ErrnoError(29)}if(S===void 0&&m===0)throw new r.ErrnoError(6);if(S==null)break;m++,n[v+$]=S}return m&&(x.node.atime=Date.now()),m},write(x,n,v,f,l){if(!x.tty||!x.tty.ops.put_char)throw new r.ErrnoError(60);try{for(var m=0;m<f;m++)x.tty.ops.put_char(x.tty,n[v+m])}catch{throw new r.ErrnoError(29)}return f&&(x.node.mtime=x.node.ctime=Date.now()),m}},default_tty_ops:{get_char(x){return wr()},put_char(x,n){n===null||n===10?(N(Gx(x.output)),x.output=[]):n!=0&&x.output.push(n)},fsync(x){x.output?.length>0&&(N(Gx(x.output)),x.output=[])},ioctl_tcgets(x){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(x,n,v){return 0},ioctl_tiocgwinsz(x){return[24,80]}},default_tty1_ops:{put_char(x,n){n===null||n===10?(G(Gx(x.output)),x.output=[]):n!=0&&x.output.push(n)},fsync(x){x.output?.length>0&&(G(Gx(x.output)),x.output=[])}}},bA=x=>{o0()},V={ops_table:null,mount(x){return V.createNode(null,"/",16895,0)},createNode(x,n,v,f){if(r.isBlkdev(v)||r.isFIFO(v))throw new r.ErrnoError(63);V.ops_table||(V.ops_table={dir:{node:{getattr:V.node_ops.getattr,setattr:V.node_ops.setattr,lookup:V.node_ops.lookup,mknod:V.node_ops.mknod,rename:V.node_ops.rename,unlink:V.node_ops.unlink,rmdir:V.node_ops.rmdir,readdir:V.node_ops.readdir,symlink:V.node_ops.symlink},stream:{llseek:V.stream_ops.llseek}},file:{node:{getattr:V.node_ops.getattr,setattr:V.node_ops.setattr},stream:{llseek:V.stream_ops.llseek,read:V.stream_ops.read,write:V.stream_ops.write,mmap:V.stream_ops.mmap,msync:V.stream_ops.msync}},link:{node:{getattr:V.node_ops.getattr,setattr:V.node_ops.setattr,readlink:V.node_ops.readlink},stream:{}},chrdev:{node:{getattr:V.node_ops.getattr,setattr:V.node_ops.setattr},stream:r.chrdev_stream_ops}});var l=r.createNode(x,n,v,f);return r.isDir(l.mode)?(l.node_ops=V.ops_table.dir.node,l.stream_ops=V.ops_table.dir.stream,l.contents={}):r.isFile(l.mode)?(l.node_ops=V.ops_table.file.node,l.stream_ops=V.ops_table.file.stream,l.usedBytes=0,l.contents=V.emptyFileContents??(V.emptyFileContents=new Uint8Array(0))):r.isLink(l.mode)?(l.node_ops=V.ops_table.link.node,l.stream_ops=V.ops_table.link.stream):r.isChrdev(l.mode)&&(l.node_ops=V.ops_table.chrdev.node,l.stream_ops=V.ops_table.chrdev.stream),l.atime=l.mtime=l.ctime=Date.now(),x&&(x.contents[n]=l,x.atime=x.mtime=x.ctime=l.atime),l},getFileDataAsTypedArray(x){return x.contents.subarray(0,x.usedBytes)},expandFileStorage(x,n){var v=x.contents.length;if(!(v>=n)){var f=1024*1024;n=Math.max(n,v*(v<f?2:1.125)>>>0),v&&(n=Math.max(n,256));var l=V.getFileDataAsTypedArray(x);x.contents=new Uint8Array(n),x.contents.set(l)}},resizeFileStorage(x,n){if(x.usedBytes!=n){var v=x.contents;x.contents=new Uint8Array(n),x.contents.set(v.subarray(0,Math.min(n,x.usedBytes))),x.usedBytes=n}},node_ops:{getattr(x){var n={};return n.dev=r.isChrdev(x.mode)?x.id:1,n.ino=x.id,n.mode=x.mode,n.nlink=1,n.uid=0,n.gid=0,n.rdev=x.rdev,r.isDir(x.mode)?n.size=4096:r.isFile(x.mode)?n.size=x.usedBytes:r.isLink(x.mode)?n.size=x.link.length:n.size=0,n.atime=new Date(x.atime),n.mtime=new Date(x.mtime),n.ctime=new Date(x.ctime),n.blksize=4096,n.blocks=Math.ceil(n.size/n.blksize),n},setattr(x,n){for(let v of["mode","atime","mtime","ctime"])n[v]!=null&&(x[v]=n[v]);n.size!==void 0&&V.resizeFileStorage(x,n.size)},lookup(x,n){throw V.doesNotExistError||(V.doesNotExistError=new r.ErrnoError(44),V.doesNotExistError.stack="<generic error, no stack>"),V.doesNotExistError},mknod(x,n,v,f){return V.createNode(x,n,v,f)},rename(x,n,v){var f;try{f=r.lookupNode(n,v)}catch{}if(f){if(r.isDir(x.mode))for(var l in f.contents)throw new r.ErrnoError(55);r.hashRemoveNode(f)}delete x.parent.contents[x.name],n.contents[v]=x,x.name=v,n.ctime=n.mtime=x.parent.ctime=x.parent.mtime=Date.now()},unlink(x,n){delete x.contents[n],x.ctime=x.mtime=Date.now()},rmdir(x,n){var v=r.lookupNode(x,n);for(var f in v.contents)throw new r.ErrnoError(55);delete x.contents[n],x.ctime=x.mtime=Date.now()},readdir(x){return[".","..",...Object.keys(x.contents)]},symlink(x,n,v){var f=V.createNode(x,n,41471,0);return f.link=v,f},readlink(x){if(!r.isLink(x.mode))throw new r.ErrnoError(28);return x.link}},stream_ops:{read(x,n,v,f,l){var m=x.node.contents;if(l>=x.node.usedBytes)return 0;var $=Math.min(x.node.usedBytes-l,f);return n.set(m.subarray(l,l+$),v),$},write(x,n,v,f,l,m){if(n.buffer===q0.buffer&&(m=!1),!f)return 0;var $=x.node;return $.mtime=$.ctime=Date.now(),m?($.contents=n.subarray(v,v+f),$.usedBytes=f):$.usedBytes===0&&l===0?($.contents=n.slice(v,v+f),$.usedBytes=f):(V.expandFileStorage($,l+f),$.contents.set(n.subarray(v,v+f),l),$.usedBytes=Math.max($.usedBytes,l+f)),f},llseek(x,n,v){var f=n;if(v===1?f+=x.position:v===2&&r.isFile(x.node.mode)&&(f+=x.node.usedBytes),f<0)throw new r.ErrnoError(28);return f},mmap(x,n,v,f,l){if(!r.isFile(x.node.mode))throw new r.ErrnoError(43);var m,$,S=x.node.contents;if(!(l&2)&&S.buffer===q0.buffer)$=!1,m=S.byteOffset;else{if($=!0,m=bA(n),!m)throw new r.ErrnoError(48);S&&((v>0||v+n<S.length)&&(S.subarray?S=S.subarray(v,v+n):S=Array.prototype.slice.call(S,v,v+n)),q0.set(S,m))}return{ptr:m,allocated:$}},msync(x,n,v,f,l){return V.stream_ops.write(x,n,0,f,v,!1),0}}},_r=x=>{if(typeof x!="string")return x;var n={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},v=n[x];if(typeof v>"u")throw new Error(`Unknown file open mode: ${x}`);return v},mA=x=>(typeof x=="string"&&(x=Wx(x,!0)),x.subarray||(x=new Uint8Array(x)),x),Xx=(x,n)=>{var v=0;return x&&(v|=365),n&&(v|=146),v},l0={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},E0={mount(x){return E0.createNode(null,"/",x.opts.fs.lstat(x.opts.root).mode,0)},createNode(x,n,v,f){if(!r.isDir(v)&&!r.isFile(v)&&!r.isLink(v))throw new r.ErrnoError(l0.EINVAL);var l=r.createNode(x,n,v);return l.node_ops=E0.node_ops,l.stream_ops=E0.stream_ops,l},realPath(x){for(var n=[];x.parent!==x;)n.push(x.name),x=x.parent;return n.push(x.mount.opts.root),n.reverse(),r0.join(...n)},node_ops:{getattr(x){var n=E0.realPath(x),v;try{v=x.mount.opts.fs.lstat(n)}catch(f){throw f.code?new r.ErrnoError(l0[f.code]):f}return{dev:v.dev,ino:v.ino,mode:v.mode,nlink:v.nlink,uid:v.uid,gid:v.gid,rdev:v.rdev,size:v.size,atime:v.atime,mtime:v.mtime,ctime:v.ctime,blksize:v.blksize,blocks:v.blocks}},setattr(x,n){var v=E0.realPath(x);try{if(n.mode!==void 0&&(x.mount.opts.fs.chmod(v,n.mode),x.mode=n.mode),n.atime||n.mtime){var f=new Date(n.atime||n.mtime),l=new Date(n.mtime||n.atime);x.mount.opts.fs.utime(v,f,l)}n.size!==void 0&&x.mount.opts.fs.truncate(v,n.size)}catch(m){throw m.code?new r.ErrnoError(l0[m.code]):m}},lookup(x,n){try{var v=r0.join2(E0.realPath(x),n),f=x.mount.opts.fs.lstat(v).mode,l=E0.createNode(x,n,f);return l}catch(m){throw m.code?new r.ErrnoError(l0[m.code]):m}},mknod(x,n,v,f){var l=E0.createNode(x,n,v,f),m=E0.realPath(l);try{r.isDir(l.mode)?l.mount.opts.fs.mkdir(m,l.mode):l.mount.opts.fs.writeFile(m,"",{mode:l.mode})}catch($){throw $.code?new r.ErrnoError(l0[$.code]):$}return l},rename(x,n,v){var f=E0.realPath(x),l=r0.join2(E0.realPath(n),v);try{x.mount.opts.fs.rename(f,l),x.name=v}catch(m){throw m.code?new r.ErrnoError(l0[m.code]):m}},unlink(x,n){var v=r0.join2(E0.realPath(x),n);try{x.mount.opts.fs.unlink(v)}catch(f){throw f.code?new r.ErrnoError(l0[f.code]):f}},rmdir(x,n){var v=r0.join2(E0.realPath(x),n);try{x.mount.opts.fs.rmdir(v)}catch(f){throw f.code?new r.ErrnoError(l0[f.code]):f}},readdir(x){var n=E0.realPath(x);try{return x.mount.opts.fs.readdir(n)}catch(v){throw v.code?new r.ErrnoError(l0[v.code]):v}},symlink(x,n,v){var f=r0.join2(E0.realPath(x),n);try{x.mount.opts.fs.symlink(v,f)}catch(l){throw l.code?new r.ErrnoError(l0[l.code]):l}},readlink(x){var n=E0.realPath(x);try{return x.mount.opts.fs.readlink(n)}catch(v){throw v.code?new r.ErrnoError(l0[v.code]):v}}},stream_ops:{open(x){var n=E0.realPath(x.node);try{x.nfd=x.node.mount.opts.fs.open(n,x.flags)}catch(v){throw v.code?new r.ErrnoError(l0[v.code]):v}},close(x){try{x.node.mount.opts.fs.close(x.nfd)}catch(n){throw n.code?new r.ErrnoError(l0[n.code]):n}},read(x,n,v,f,l){try{return x.node.mount.opts.fs.read(x.nfd,n,v,f,l)}catch(m){throw m.code?new r.ErrnoError(l0[m.code]):m}},write(x,n,v,f,l){try{return x.node.mount.opts.fs.write(x.nfd,n,v,f,l)}catch(m){throw m.code?new r.ErrnoError(l0[m.code]):m}},llseek(x,n,v){var f=n;if(v===1)f+=x.position;else if(v===2&&r.isFile(x.node.mode))try{var l=x.node.node_ops.getattr(x.node);f+=l.size}catch(m){throw new r.ErrnoError(l0[m.code])}if(f<0)throw new r.ErrnoError(l0.EINVAL);return f}}},$r=async x=>{var n=await b(x);return new Uint8Array(n)},hA=(...x)=>r.createDataFile(...x),qr=x=>x,X0=0,fx=null,gA=x=>{if(X0--,o.monitorRunDependencies?.(X0),X0==0&&fx){var n=fx;fx=null,n()}},kA=x=>{X0++,o.monitorRunDependencies?.(X0)},yA=[],Pr=async(x,n)=>{typeof Browser<"u"&&Browser.init();for(var v of yA)if(v.canHandle(n))return v.handle(x,n);return x},Yx=async(x,n,v,f,l,m,$,S)=>{var x0=n?Ax.resolve(r0.join2(x,n)):x,v0=qr(`cp ${x0}`);kA(v0);try{var k0=v;typeof v=="string"&&(k0=await $r(v)),k0=await Pr(k0,x0),S?.(),m||hA(x,n,k0,f,l,$)}finally{gA(v0)}},Nr=(x,n,v,f,l,m,$,S,x0,v0)=>{Yx(x,n,v,f,l,S,x0,v0).then(m).catch($)},r={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,filesystems:null,syncFSRequests:0,ErrnoError:class{constructor(x){N0(this,"name","ErrnoError"),this.errno=x}},FSStream:class{constructor(){N0(this,"shared",{})}get object(){return this.node}set object(x){this.node=x}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(x){this.shared.flags=x}get position(){return this.shared.position}set position(x){this.shared.position=x}},FSNode:class{constructor(x,n,v,f){N0(this,"node_ops",{}),N0(this,"stream_ops",{}),N0(this,"readMode",365),N0(this,"writeMode",146),N0(this,"mounted",null),x||(x=this),this.parent=x,this.mount=x.mount,this.id=r.nextInode++,this.name=n,this.mode=v,this.rdev=f,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(x){x?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(x){x?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return r.isDir(this.mode)}get isDevice(){return r.isChrdev(this.mode)}},lookupPath(x,n={}){if(!x)throw new r.ErrnoError(44);n.follow_mount??(n.follow_mount=!0),r0.isAbs(x)||(x=r.cwd()+"/"+x);x:for(var v=0;v<40;v++){for(var f=x.split("/").filter(v0=>!!v0),l=r.root,m="/",$=0;$<f.length;$++){var S=$===f.length-1;if(S&&n.parent)break;if(f[$]!=="."){if(f[$]===".."){if(m=r0.dirname(m),r.isRoot(l)){x=m+"/"+f.slice($+1).join("/"),v--;continue x}else l=l.parent;continue}m=r0.join2(m,f[$]);try{l=r.lookupNode(l,f[$])}catch(v0){if(v0?.errno===44&&S&&n.noent_okay)return{path:m};throw v0}if(r.isMountpoint(l)&&(!S||n.follow_mount)&&(l=l.mounted.root),r.isLink(l.mode)&&(!S||n.follow)){if(!l.node_ops.readlink)throw new r.ErrnoError(52);var x0=l.node_ops.readlink(l);r0.isAbs(x0)||(x0=r0.dirname(m)+"/"+x0),x=x0+"/"+f.slice($+1).join("/");continue x}}}return{path:m,node:l}}throw new r.ErrnoError(32)},getPath(x){for(var n;;){if(r.isRoot(x)){var v=x.mount.mountpoint;return n?v[v.length-1]!=="/"?`${v}/${n}`:v+n:v}n=n?`${x.name}/${n}`:x.name,x=x.parent}},hashName(x,n){for(var v=0,f=0;f<n.length;f++)v=(v<<5)-v+n.charCodeAt(f)|0;return(x+v>>>0)%r.nameTable.length},hashAddNode(x){var n=r.hashName(x.parent.id,x.name);x.name_next=r.nameTable[n],r.nameTable[n]=x},hashRemoveNode(x){var n=r.hashName(x.parent.id,x.name);if(r.nameTable[n]===x)r.nameTable[n]=x.name_next;else for(var v=r.nameTable[n];v;){if(v.name_next===x){v.name_next=x.name_next;break}v=v.name_next}},lookupNode(x,n){var v=r.mayLookup(x);if(v)throw new r.ErrnoError(v);for(var f=r.hashName(x.id,n),l=r.nameTable[f];l;l=l.name_next){var m=l.name;if(l.parent.id===x.id&&m===n)return l}return r.lookup(x,n)},createNode(x,n,v,f){var l=new r.FSNode(x,n,v,f);return r.hashAddNode(l),l},destroyNode(x){r.hashRemoveNode(x)},isRoot(x){return x===x.parent},isMountpoint(x){return!!x.mounted},isFile(x){return(x&61440)===32768},isDir(x){return(x&61440)===16384},isLink(x){return(x&61440)===40960},isChrdev(x){return(x&61440)===8192},isBlkdev(x){return(x&61440)===24576},isFIFO(x){return(x&61440)===4096},isSocket(x){return(x&49152)===49152},flagsToPermissionString(x){var n=["r","w","rw"][x&3];return x&512&&(n+="w"),n},nodePermissions(x,n){return r.ignorePermissions?0:n.includes("r")&&!(x.mode&292)||n.includes("w")&&!(x.mode&146)||n.includes("x")&&!(x.mode&73)?2:0},mayLookup(x){if(!r.isDir(x.mode))return 54;var n=r.nodePermissions(x,"x");return n||(x.node_ops.lookup?0:2)},mayCreate(x,n){if(!r.isDir(x.mode))return 54;try{var v=r.lookupNode(x,n);return 20}catch{}return r.nodePermissions(x,"wx")},mayDelete(x,n,v){var f;try{f=r.lookupNode(x,n)}catch(m){return m.errno}var l=r.nodePermissions(x,"wx");if(l)return l;if(v){if(!r.isDir(f.mode))return 54;if(r.isRoot(f)||r.getPath(f)===r.cwd())return 10}else if(r.isDir(f.mode))return 31;return 0},mayOpen(x,n){if(!x)return 44;if(r.isLink(x.mode))return 32;var v=r.flagsToPermissionString(n);return r.isDir(x.mode)&&(v!=="r"||n&576)?31:r.nodePermissions(x,v)},checkOpExists(x,n){if(!x)throw new r.ErrnoError(n);return x},MAX_OPEN_FDS:4096,nextfd(){for(var x=0;x<=r.MAX_OPEN_FDS;x++)if(!r.streams[x])return x;throw new r.ErrnoError(33)},getStreamChecked(x){var n=r.getStream(x);if(!n)throw new r.ErrnoError(8);return n},getStream:x=>r.streams[x],createStream(x,n=-1){return x=Object.assign(new r.FSStream,x),n==-1&&(n=r.nextfd()),x.fd=n,r.streams[n]=x,x},closeStream(x){r.streams[x]=null},dupStream(x,n=-1){var v=r.createStream(x,n);return v.stream_ops?.dup?.(v),v},doSetAttr(x,n,v){var f=x?.stream_ops.setattr,l=f?x:n;f??(f=n.node_ops.setattr),r.checkOpExists(f,63);try{f(l,v)}catch(m){throw m instanceof RangeError?new r.ErrnoError(22):m}},chrdev_stream_ops:{open(x){var n=r.getDevice(x.node.rdev);x.stream_ops=n.stream_ops,x.stream_ops.open?.(x)},llseek(){throw new r.ErrnoError(70)}},major:x=>x>>8,minor:x=>x&255,makedev:(x,n)=>x<<8|n,registerDevice(x,n){r.devices[x]={stream_ops:n}},getDevice:x=>r.devices[x],getMounts(x){for(var n=[],v=[x];v.length;){var f=v.pop();n.push(f),v.push(...f.mounts)}return n},syncfs(x,n){typeof x=="function"&&(n=x,x=!1),r.syncFSRequests++,r.syncFSRequests>1&&G(`warning: ${r.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var v=r.getMounts(r.root.mount),f=0;function l(S){return r.syncFSRequests--,n(S)}function m(S){if(S)return m.errored?void 0:(m.errored=!0,l(S));++f>=v.length&&l(null)}for(var $ of v)$.type.syncfs?$.type.syncfs($,x,m):m(null)},mount(x,n,v){var f=v==="/",l=!v,m;if(f&&r.root)throw new r.ErrnoError(10);if(!f&&!l){var $=r.lookupPath(v,{follow_mount:!1});if(v=$.path,m=$.node,r.isMountpoint(m))throw new r.ErrnoError(10);if(!r.isDir(m.mode))throw new r.ErrnoError(54)}var S={type:x,opts:n,mountpoint:v,mounts:[]},x0=x.mount(S);return x0.mount=S,S.root=x0,f?r.root=x0:m&&(m.mounted=S,m.mount&&m.mount.mounts.push(S)),x0},unmount(x){var n=r.lookupPath(x,{follow_mount:!1});if(!r.isMountpoint(n.node))throw new r.ErrnoError(28);var v=n.node,f=v.mounted,l=r.getMounts(f);for(var[m,$]of Object.entries(r.nameTable))for(;$;){var S=$.name_next;l.includes($.mount)&&r.destroyNode($),$=S}v.mounted=null;var x0=v.mount.mounts.indexOf(f);v.mount.mounts.splice(x0,1)},lookup(x,n){return x.node_ops.lookup(x,n)},mknod(x,n,v){var f=r.lookupPath(x,{parent:!0}),l=f.node,m=r0.basename(x);if(!m)throw new r.ErrnoError(28);if(m==="."||m==="..")throw new r.ErrnoError(20);var $=r.mayCreate(l,m);if($)throw new r.ErrnoError($);if(!l.node_ops.mknod)throw new r.ErrnoError(63);return l.node_ops.mknod(l,m,n,v)},statfs(x){return r.statfsNode(r.lookupPath(x,{follow:!0}).node)},statfsStream(x){return r.statfsNode(x.node)},statfsNode(x){var n={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:r.nextInode,ffree:r.nextInode-1,fsid:42,flags:2,namelen:255};return x.node_ops.statfs&&Object.assign(n,x.node_ops.statfs(x.mount.opts.root)),n},create(x,n=438){return n&=4095,n|=32768,r.mknod(x,n,0)},mkdir(x,n=511){return n&=1023,n|=16384,r.mknod(x,n,0)},mkdirTree(x,n){var v=x.split("/"),f="";for(var l of v)if(l){(f||r0.isAbs(x))&&(f+="/"),f+=l;try{r.mkdir(f,n)}catch(m){if(m.errno!=20)throw m}}},mkdev(x,n,v){return typeof v>"u"&&(v=n,n=438),n|=8192,r.mknod(x,n,v)},symlink(x,n){if(!Ax.resolve(x))throw new r.ErrnoError(44);var v=r.lookupPath(n,{parent:!0}),f=v.node;if(!f)throw new r.ErrnoError(44);var l=r0.basename(n),m=r.mayCreate(f,l);if(m)throw new r.ErrnoError(m);if(!f.node_ops.symlink)throw new r.ErrnoError(63);return f.node_ops.symlink(f,l,x)},rename(x,n){var v=r0.dirname(x),f=r0.dirname(n),l=r0.basename(x),m=r0.basename(n),$,S,x0;if($=r.lookupPath(x,{parent:!0}),S=$.node,$=r.lookupPath(n,{parent:!0}),x0=$.node,!S||!x0)throw new r.ErrnoError(44);if(S.mount!==x0.mount)throw new r.ErrnoError(75);var v0=r.lookupNode(S,l),k0=Ax.relative(x,f);if(k0.charAt(0)!==".")throw new r.ErrnoError(28);if(k0=Ax.relative(n,v),k0.charAt(0)!==".")throw new r.ErrnoError(55);var b0;try{b0=r.lookupNode(x0,m)}catch{}if(v0!==b0){var d0=r.isDir(v0.mode),F0=r.mayDelete(S,l,d0);if(F0)throw new r.ErrnoError(F0);if(F0=b0?r.mayDelete(x0,m,d0):r.mayCreate(x0,m),F0)throw new r.ErrnoError(F0);if(!S.node_ops.rename)throw new r.ErrnoError(63);if(r.isMountpoint(v0)||b0&&r.isMountpoint(b0))throw new r.ErrnoError(10);if(x0!==S&&(F0=r.nodePermissions(S,"w"),F0))throw new r.ErrnoError(F0);r.hashRemoveNode(v0);try{S.node_ops.rename(v0,x0,m),v0.parent=x0}catch(T0){throw T0}finally{r.hashAddNode(v0)}}},rmdir(x){var n=r.lookupPath(x,{parent:!0}),v=n.node,f=r0.basename(x),l=r.lookupNode(v,f),m=r.mayDelete(v,f,!0);if(m)throw new r.ErrnoError(m);if(!v.node_ops.rmdir)throw new r.ErrnoError(63);if(r.isMountpoint(l))throw new r.ErrnoError(10);v.node_ops.rmdir(v,f),r.destroyNode(l)},readdir(x){var n=r.lookupPath(x,{follow:!0}),v=n.node,f=r.checkOpExists(v.node_ops.readdir,54);return f(v)},unlink(x){var n=r.lookupPath(x,{parent:!0}),v=n.node;if(!v)throw new r.ErrnoError(44);var f=r0.basename(x),l=r.lookupNode(v,f),m=r.mayDelete(v,f,!1);if(m)throw new r.ErrnoError(m);if(!v.node_ops.unlink)throw new r.ErrnoError(63);if(r.isMountpoint(l))throw new r.ErrnoError(10);v.node_ops.unlink(v,f),r.destroyNode(l)},readlink(x){var n=r.lookupPath(x),v=n.node;if(!v)throw new r.ErrnoError(44);if(!v.node_ops.readlink)throw new r.ErrnoError(28);return v.node_ops.readlink(v)},stat(x,n){var v=r.lookupPath(x,{follow:!n}),f=v.node,l=r.checkOpExists(f.node_ops.getattr,63);return l(f)},fstat(x){var n=r.getStreamChecked(x),v=n.node,f=n.stream_ops.getattr,l=f?n:v;return f??(f=v.node_ops.getattr),r.checkOpExists(f,63),f(l)},lstat(x){return r.stat(x,!0)},doChmod(x,n,v,f){r.doSetAttr(x,n,{mode:v&4095|n.mode&-4096,ctime:Date.now(),dontFollow:f})},chmod(x,n,v){var f;if(typeof x=="string"){var l=r.lookupPath(x,{follow:!v});f=l.node}else f=x;r.doChmod(null,f,n,v)},lchmod(x,n){r.chmod(x,n,!0)},fchmod(x,n){var v=r.getStreamChecked(x);r.doChmod(v,v.node,n,!1)},doChown(x,n,v){r.doSetAttr(x,n,{timestamp:Date.now(),dontFollow:v})},chown(x,n,v,f){var l;if(typeof x=="string"){var m=r.lookupPath(x,{follow:!f});l=m.node}else l=x;r.doChown(null,l,f)},lchown(x,n,v){r.chown(x,n,v,!0)},fchown(x,n,v){var f=r.getStreamChecked(x);r.doChown(f,f.node,!1)},doTruncate(x,n,v){if(r.isDir(n.mode))throw new r.ErrnoError(31);if(!r.isFile(n.mode))throw new r.ErrnoError(28);var f=r.nodePermissions(n,"w");if(f)throw new r.ErrnoError(f);r.doSetAttr(x,n,{size:v,timestamp:Date.now()})},truncate(x,n){if(n<0)throw new r.ErrnoError(28);var v;if(typeof x=="string"){var f=r.lookupPath(x,{follow:!0});v=f.node}else v=x;r.doTruncate(null,v,n)},ftruncate(x,n){var v=r.getStreamChecked(x);if(n<0||(v.flags&2097155)===0)throw new r.ErrnoError(28);r.doTruncate(v,v.node,n)},utime(x,n,v){var f=r.lookupPath(x,{follow:!0}),l=f.node,m=r.checkOpExists(l.node_ops.setattr,63);m(l,{atime:n,mtime:v})},open(x,n,v=438){if(x==="")throw new r.ErrnoError(44);n=_r(n),n&64?v=v&4095|32768:v=0;var f,l;if(typeof x=="object")f=x;else{l=x.endsWith("/");var m=r.lookupPath(x,{follow:!(n&131072),noent_okay:!0});f=m.node,x=m.path}var $=!1;if(n&64)if(f){if(n&128)throw new r.ErrnoError(20)}else{if(l)throw new r.ErrnoError(31);f=r.mknod(x,v|511,0),$=!0}if(!f)throw new r.ErrnoError(44);if(r.isChrdev(f.mode)&&(n&=-513),n&65536&&!r.isDir(f.mode))throw new r.ErrnoError(54);if(!$){var S=r.mayOpen(f,n);if(S)throw new r.ErrnoError(S)}n&512&&!$&&r.truncate(f,0),n&=-131713;var x0=r.createStream({node:f,path:r.getPath(f),flags:n,seekable:!0,position:0,stream_ops:f.stream_ops,ungotten:[],error:!1});return x0.stream_ops.open&&x0.stream_ops.open(x0),$&&r.chmod(f,v&511),x0},close(x){if(r.isClosed(x))throw new r.ErrnoError(8);x.getdents&&(x.getdents=null);try{x.stream_ops.close&&x.stream_ops.close(x)}catch(n){throw n}finally{r.closeStream(x.fd)}x.fd=null},isClosed(x){return x.fd===null},llseek(x,n,v){if(r.isClosed(x))throw new r.ErrnoError(8);if(!x.seekable||!x.stream_ops.llseek)throw new r.ErrnoError(70);if(v!=0&&v!=1&&v!=2)throw new r.ErrnoError(28);return x.position=x.stream_ops.llseek(x,n,v),x.ungotten=[],x.position},read(x,n,v,f,l){if(f<0||l<0)throw new r.ErrnoError(28);if(r.isClosed(x))throw new r.ErrnoError(8);if((x.flags&2097155)===1)throw new r.ErrnoError(8);if(r.isDir(x.node.mode))throw new r.ErrnoError(31);if(!x.stream_ops.read)throw new r.ErrnoError(28);var m=typeof l<"u";if(!m)l=x.position;else if(!x.seekable)throw new r.ErrnoError(70);var $=x.stream_ops.read(x,n,v,f,l);return m||(x.position+=$),$},write(x,n,v,f,l,m){if(f<0||l<0)throw new r.ErrnoError(28);if(r.isClosed(x))throw new r.ErrnoError(8);if((x.flags&2097155)===0)throw new r.ErrnoError(8);if(r.isDir(x.node.mode))throw new r.ErrnoError(31);if(!x.stream_ops.write)throw new r.ErrnoError(28);x.seekable&&x.flags&1024&&r.llseek(x,0,2);var $=typeof l<"u";if(!$)l=x.position;else if(!x.seekable)throw new r.ErrnoError(70);var S=x.stream_ops.write(x,n,v,f,l,m);return $||(x.position+=S),S},mmap(x,n,v,f,l){if((f&2)!==0&&(l&2)===0&&(x.flags&2097155)!==2)throw new r.ErrnoError(2);if((x.flags&2097155)===1)throw new r.ErrnoError(2);if(!x.stream_ops.mmap)throw new r.ErrnoError(43);if(!n)throw new r.ErrnoError(28);return x.stream_ops.mmap(x,n,v,f,l)},msync(x,n,v,f,l){return x.stream_ops.msync?x.stream_ops.msync(x,n,v,f,l):0},ioctl(x,n,v){if(!x.stream_ops.ioctl)throw new r.ErrnoError(59);return x.stream_ops.ioctl(x,n,v)},readFile(x,n={}){n.flags=n.flags||0,n.encoding=n.encoding||"binary",n.encoding!=="utf8"&&n.encoding!=="binary"&&o0(`Invalid encoding type "${n.encoding}"`);var v=r.open(x,n.flags),f=r.stat(x),l=f.size,m=new Uint8Array(l);return r.read(v,m,0,l,0),n.encoding==="utf8"&&(m=Gx(m)),r.close(v),m},writeFile(x,n,v={}){v.flags=v.flags||577;var f=r.open(x,v.flags,v.mode);n=mA(n),r.write(f,n,0,n.byteLength,void 0,v.canOwn),r.close(f)},cwd:()=>r.currentPath,chdir(x){var n=r.lookupPath(x,{follow:!0});if(n.node===null)throw new r.ErrnoError(44);if(!r.isDir(n.node.mode))throw new r.ErrnoError(54);var v=r.nodePermissions(n.node,"x");if(v)throw new r.ErrnoError(v);r.currentPath=n.path},createDefaultDirectories(){r.mkdir("/tmp"),r.mkdir("/home"),r.mkdir("/home/web_user")},createDefaultDevices(){r.mkdir("/dev"),r.registerDevice(r.makedev(1,3),{read:()=>0,write:(f,l,m,$,S)=>$,llseek:()=>0}),r.mkdev("/dev/null",r.makedev(1,3)),L0.register(r.makedev(5,0),L0.default_tty_ops),L0.register(r.makedev(6,0),L0.default_tty1_ops),r.mkdev("/dev/tty",r.makedev(5,0)),r.mkdev("/dev/tty1",r.makedev(6,0));var x=new Uint8Array(1024),n=0,v=()=>(n===0&&(pA(x),n=x.byteLength),x[--n]);r.createDevice("/dev","random",v),r.createDevice("/dev","urandom",v),r.mkdir("/dev/shm"),r.mkdir("/dev/shm/tmp")},createSpecialDirectories(){r.mkdir("/proc");var x=r.mkdir("/proc/self");r.mkdir("/proc/self/fd"),r.mount({mount(){var n=r.createNode(x,"fd",16895,73);return n.stream_ops={llseek:V.stream_ops.llseek},n.node_ops={lookup(v,f){var l=+f,m=r.getStreamChecked(l),$={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>m.path},id:l+1};return $.parent=$,$},readdir(){return Array.from(r.streams.entries()).filter(([v,f])=>f).map(([v,f])=>v.toString())}},n}},{},"/proc/self/fd")},createStandardStreams(x,n,v){x?r.createDevice("/dev","stdin",x):r.symlink("/dev/tty","/dev/stdin"),n?r.createDevice("/dev","stdout",null,n):r.symlink("/dev/tty","/dev/stdout"),v?r.createDevice("/dev","stderr",null,v):r.symlink("/dev/tty1","/dev/stderr");var f=r.open("/dev/stdin",0),l=r.open("/dev/stdout",1),m=r.open("/dev/stderr",1)},staticInit(){r.nameTable=new Array(4096),r.mount(V,{},"/"),r.createDefaultDirectories(),r.createDefaultDevices(),r.createSpecialDirectories(),r.filesystems={MEMFS:V,PROXYFS:E0}},init(x,n,v){r.initialized=!0,x??(x=o.stdin),n??(n=o.stdout),v??(v=o.stderr),r.createStandardStreams(x,n,v)},quit(){r.initialized=!1,D(0);for(var x of r.streams)x&&r.close(x)},findObject(x,n){var v=r.analyzePath(x,n);return v.exists?v.object:null},analyzePath(x,n){try{var v=r.lookupPath(x,{follow:!n});x=v.path}catch{}var f={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var v=r.lookupPath(x,{parent:!0});f.parentExists=!0,f.parentPath=v.path,f.parentObject=v.node,f.name=r0.basename(x),v=r.lookupPath(x,{follow:!n}),f.exists=!0,f.path=v.path,f.object=v.node,f.name=v.node.name,f.isRoot=v.path==="/"}catch(l){f.error=l.errno}return f},createPath(x,n,v,f){x=typeof x=="string"?x:r.getPath(x);for(var l=n.split("/").reverse();l.length;){var m=l.pop();if(m){var $=r0.join2(x,m);try{r.mkdir($)}catch(S){if(S.errno!=20)throw S}x=$}}return $},createFile(x,n,v,f,l){var m=r0.join2(typeof x=="string"?x:r.getPath(x),n),$=Xx(f,l);return r.create(m,$)},createDataFile(x,n,v,f,l,m){var $=n;x&&(x=typeof x=="string"?x:r.getPath(x),$=n?r0.join2(x,n):x);var S=Xx(f,l),x0=r.create($,S);if(v){v=mA(v),r.chmod(x0,S|146);var v0=r.open(x0,577);r.write(v0,v,0,v.length,0,m),r.close(v0),r.chmod(x0,S)}},createDevice(x,n,v,f){var l,m=r0.join2(typeof x=="string"?x:r.getPath(x),n),$=Xx(!!v,!!f);(l=r.createDevice).major??(l.major=64);var S=r.makedev(r.createDevice.major++,0);return r.registerDevice(S,{open(x0){x0.seekable=!1},close(x0){f?.buffer?.length&&f(10)},read(x0,v0,k0,b0,d0){for(var F0=0,T0=0;T0<b0;T0++){var Y0;try{Y0=v()}catch{throw new r.ErrnoError(29)}if(Y0===void 0&&F0===0)throw new r.ErrnoError(6);if(Y0==null)break;F0++,v0[k0+T0]=Y0}return F0&&(x0.node.atime=Date.now()),F0},write(x0,v0,k0,b0,d0){for(var F0=0;F0<b0;F0++)try{f(v0[k0+F0])}catch{throw new r.ErrnoError(29)}return b0&&(x0.node.mtime=x0.node.ctime=Date.now()),F0}}),r.mkdev(m,$,S)},forceLoadFile(x){if(x.isDevice||x.isFolder||x.link||x.contents)return!0;if(globalThis.XMLHttpRequest)o0("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{x.contents=y(x.url)}catch{throw new r.ErrnoError(29)}},createLazyFile(x,n,v,f,l){class m{constructor(){N0(this,"lengthKnown",!1),N0(this,"chunks",[])}get(d0){if(!(d0>this.length-1||d0<0)){var F0=d0%this.chunkSize,T0=d0/this.chunkSize|0;return this.getter(T0)[F0]}}setDataGetter(d0){this.getter=d0}cacheLength(){var d0=new XMLHttpRequest;d0.open("HEAD",v,!1),d0.send(null),d0.status>=200&&d0.status<300||d0.status===304||o0("Couldn't load "+v+". Status: "+d0.status);var F0=Number(d0.getResponseHeader("Content-length")),T0,Y0=(T0=d0.getResponseHeader("Accept-Ranges"))&&T0==="bytes",Fx=(T0=d0.getResponseHeader("Content-Encoding"))&&T0==="gzip",Dx=1024*1024;Y0||(Dx=F0);var lx=(ux,FA)=>{ux>FA&&o0("invalid range ("+ux+", "+FA+") or no bytes requested!"),FA>F0-1&&o0("only "+F0+" bytes available! programmer error!");var U0=new XMLHttpRequest;return U0.open("GET",v,!1),F0!==Dx&&U0.setRequestHeader("Range","bytes="+ux+"-"+FA),U0.responseType="arraybuffer",U0.overrideMimeType&&U0.overrideMimeType("text/plain; charset=x-user-defined"),U0.send(null),U0.status>=200&&U0.status<300||U0.status===304||o0("Couldn't load "+v+". Status: "+U0.status),U0.response!==void 0?new Uint8Array(U0.response||[]):Wx(U0.responseText||"",!0)},NA=this;NA.setDataGetter(ux=>{var FA=ux*Dx,U0=(ux+1)*Dx-1;return U0=Math.min(U0,F0-1),typeof NA.chunks[ux]>"u"&&(NA.chunks[ux]=lx(FA,U0)),typeof NA.chunks[ux]>"u"&&o0("doXHR failed!"),NA.chunks[ux]}),(Fx||!F0)&&(Dx=F0=1,F0=this.getter(0).length,Dx=F0,N("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=F0,this._chunkSize=Dx,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(globalThis.XMLHttpRequest){c||o0("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var $=new m,S={isDevice:!1,contents:$}}else var S={isDevice:!1,url:v};var x0=r.createFile(x,n,S,f,l);S.contents?x0.contents=S.contents:S.url&&(x0.contents=null,x0.url=S.url),Object.defineProperties(x0,{usedBytes:{get:function(){return this.contents.length}}});var v0={};for(let[b0,d0]of Object.entries(x0.stream_ops))v0[b0]=(...F0)=>(r.forceLoadFile(x0),d0(...F0));function k0(b0,d0,F0,T0,Y0){var Fx=b0.node.contents;if(Y0>=Fx.length)return 0;var Dx=Math.min(Fx.length-Y0,T0);if(Fx.slice)for(var lx=0;lx<Dx;lx++)d0[F0+lx]=Fx[Y0+lx];else for(var lx=0;lx<Dx;lx++)d0[F0+lx]=Fx.get(Y0+lx);return Dx}return v0.read=(b0,d0,F0,T0,Y0)=>(r.forceLoadFile(x0),k0(b0,d0,F0,T0,Y0)),v0.mmap=(b0,d0,F0,T0,Y0)=>{r.forceLoadFile(x0);var Fx=bA(d0);if(!Fx)throw new r.ErrnoError(48);return k0(b0,q0,Fx,d0,F0),{ptr:Fx,allocated:!0}},x0.stream_ops=v0,x0}},s0={currentUmask:18,calculateAt(x,n,v){if(r0.isAbs(n))return n;var f;if(x===-100)f=r.cwd();else{var l=s0.getStreamFromFD(x);f=l.path}if(n.length==0){if(!v)throw new r.ErrnoError(44);return f}return f+"/"+n},writeStat(x,n){A0[x>>2]=n.dev,A0[x+4>>2]=n.mode,A0[x+8>>2]=n.nlink,A0[x+12>>2]=n.uid,A0[x+16>>2]=n.gid,A0[x+20>>2]=n.rdev,h0[x+24>>3]=BigInt(n.size),m0[x+32>>2]=4096,m0[x+36>>2]=n.blocks;var v=n.atime.getTime(),f=n.mtime.getTime(),l=n.ctime.getTime();return h0[x+40>>3]=BigInt(Math.floor(v/1e3)),A0[x+48>>2]=v%1e3*1e3*1e3,h0[x+56>>3]=BigInt(Math.floor(f/1e3)),A0[x+64>>2]=f%1e3*1e3*1e3,h0[x+72>>3]=BigInt(Math.floor(l/1e3)),A0[x+80>>2]=l%1e3*1e3*1e3,h0[x+88>>3]=BigInt(n.ino),0},writeStatFs(x,n){A0[x+4>>2]=n.bsize,A0[x+60>>2]=n.bsize,h0[x+8>>3]=BigInt(n.blocks),h0[x+16>>3]=BigInt(n.bfree),h0[x+24>>3]=BigInt(n.bavail),h0[x+32>>3]=BigInt(n.files),h0[x+40>>3]=BigInt(n.ffree),A0[x+48>>2]=n.fsid,A0[x+64>>2]=n.flags,A0[x+56>>2]=n.namelen},doMsync(x,n,v,f,l){if(!r.isFile(n.node.mode))throw new r.ErrnoError(43);if(f&2)return 0;var m=Cx.slice(x,x+v);r.msync(n,m,l,v,f)},getStreamFromFD(x){var n=r.getStreamChecked(x);return n},varargs:void 0,getStr(x){var n=_x(x);return n}};function Lr(x,n,v,f){try{if(n=s0.getStr(n),n=s0.calculateAt(x,n),v&-8)return-28;var l=r.lookupPath(n,{follow:!0}),m=l.node;if(!m)return-44;var $="";return v&4&&($+="r"),v&2&&($+="w"),v&1&&($+="x"),$&&r.nodePermissions(m,$)?-2:0}catch(S){if(typeof r>"u"||S.name!=="ErrnoError")throw S;return-S.errno}}var iA=()=>{var x=m0[+s0.varargs>>2];return s0.varargs+=4,x},Ix=iA;function Gr(x,n,v){s0.varargs=v;try{var f=s0.getStreamFromFD(x);switch(n){case 0:{var l=iA();if(l<0)return-28;for(;r.streams[l];)l++;var m;return m=r.dupStream(f,l),m.fd}case 1:case 2:return 0;case 3:return f.flags;case 4:{var l=iA(),$=289792;return f.flags=f.flags&~$|l&$,0}case 12:{var l=Ix(),S=0;return yx[l+S>>1]=2,0}case 13:case 14:return 0}return-28}catch(x0){if(typeof r>"u"||x0.name!=="ErrnoError")throw x0;return-x0.errno}}var wA=(x,n,v)=>uA(x,Cx,n,v);function Tr(x,n){try{if(n===0)return-28;var v=r.cwd(),f=Vx(v)+1;return n<f?-68:(wA(v,x,n),f)}catch(l){if(typeof r>"u"||l.name!=="ErrnoError")throw l;return-l.errno}}function Ir(x,n,v){s0.varargs=v;try{var f=s0.getStreamFromFD(x);switch(n){case 21509:return f.tty?0:-59;case 21505:{if(!f.tty)return-59;if(f.tty.ops.ioctl_tcgets){var l=f.tty.ops.ioctl_tcgets(f),m=Ix();m0[m>>2]=l.c_iflag||0,m0[m+4>>2]=l.c_oflag||0,m0[m+8>>2]=l.c_cflag||0,m0[m+12>>2]=l.c_lflag||0;for(var $=0;$<32;$++)q0[m+$+17]=l.c_cc[$]||0;return 0}return 0}case 21510:case 21511:case 21512:return f.tty?0:-59;case 21506:case 21507:case 21508:{if(!f.tty)return-59;if(f.tty.ops.ioctl_tcsets){for(var m=Ix(),S=m0[m>>2],x0=m0[m+4>>2],v0=m0[m+8>>2],k0=m0[m+12>>2],b0=[],$=0;$<32;$++)b0.push(q0[m+$+17]);return f.tty.ops.ioctl_tcsets(f.tty,n,{c_iflag:S,c_oflag:x0,c_cflag:v0,c_lflag:k0,c_cc:b0})}return 0}case 21519:{if(!f.tty)return-59;var m=Ix();return m0[m>>2]=0,0}case 21520:return f.tty?-28:-59;case 21537:case 21531:{var m=Ix();return r.ioctl(f,n,m)}case 21523:{if(!f.tty)return-59;if(f.tty.ops.ioctl_tiocgwinsz){var d0=f.tty.ops.ioctl_tiocgwinsz(f.tty),m=Ix();yx[m>>1]=d0[0],yx[m+2>>1]=d0[1]}return 0}case 21524:return f.tty?0:-59;case 21515:return f.tty?0:-59;default:return-28}}catch(F0){if(typeof r>"u"||F0.name!=="ErrnoError")throw F0;return-F0.errno}}function Mr(x,n,v,f){s0.varargs=f;try{n=s0.getStr(n),n=s0.calculateAt(x,n);var l=f?iA():0;return v&64&&(l&=~s0.currentUmask),r.open(n,v,l).fd}catch(m){if(typeof r>"u"||m.name!=="ErrnoError")throw m;return-m.errno}}function Sr(x,n,v,f){try{if(n=s0.getStr(n),n=s0.calculateAt(x,n),f<=0)return-28;var l=r.readlink(n),m=Math.min(f,Vx(l)),$=q0[v+m];return wA(l,v,f+1),q0[v+m]=$,m}catch(S){if(typeof r>"u"||S.name!=="ErrnoError")throw S;return-S.errno}}function Rr(x,n,v,f){try{return n=s0.getStr(n),f=s0.getStr(f),n=s0.calculateAt(x,n),f=s0.calculateAt(v,f),r.rename(n,f),0}catch(l){if(typeof r>"u"||l.name!=="ErrnoError")throw l;return-l.errno}}function Or(x){try{return x=s0.getStr(x),r.rmdir(x),0}catch(n){if(typeof r>"u"||n.name!=="ErrnoError")throw n;return-n.errno}}function Ur(x,n,v){try{if(n=s0.getStr(n),n=s0.calculateAt(x,n),!v)r.unlink(n);else if(v===512)r.rmdir(n);else return-28;return 0}catch(f){if(typeof r>"u"||f.name!=="ErrnoError")throw f;return-f.errno}}var Hr=()=>{throw new z},zr=()=>performance.now(),Jr=()=>Date.now(),Kr=1,Vr=x=>x>=0&&x<=3,YA=9007199254740992,Wr=-9007199254740992,ZA=x=>x<Wr||x>YA?NaN:Number(x);function Xr(x,n,v){if(n=ZA(n),!Vr(x))return 28;var f;if(x===0)f=Jr();else if(Kr)f=zr();else return 52;var l=Math.round(f*1e3*1e3);return h0[v>>3]=BigInt(l),0}var Yr=()=>2147483648,QA=(x,n)=>Math.ceil(x/n)*n,Zr=x=>{var n=j0.buffer.byteLength,v=(x-n+65535)/65536|0;try{return j0.grow(v),L(),1}catch{}},Qr=x=>{var n=Cx.length;x>>>=0;var v=Yr();if(x>v)return!1;for(var f=1;f<=4;f*=2){var l=n*(1+.2/f);l=Math.min(l,x+100663296);var m=Math.min(v,QA(Math.max(x,l),65536)),$=Zr(m);if($)return!0}return!1};function xe(x){try{var n=s0.getStreamFromFD(x);return r.close(n),0}catch(v){if(typeof r>"u"||v.name!=="ErrnoError")throw v;return v.errno}}var Ae=(x,n,v,f)=>{for(var l=0,m=0;m<v;m++){var $=A0[n>>2],S=A0[n+4>>2];n+=8;var x0=r.read(x,q0,$,S,f);if(x0<0)return-1;if(l+=x0,x0<S)break;typeof f<"u"&&(f+=x0)}return l};function re(x,n,v,f){try{var l=s0.getStreamFromFD(x),m=Ae(l,n,v);return A0[f>>2]=m,0}catch($){if(typeof r>"u"||$.name!=="ErrnoError")throw $;return $.errno}}function xr(x,n,v,f){n=ZA(n);try{if(isNaN(n))return 22;var l=s0.getStreamFromFD(x);return r.llseek(l,n,v),h0[f>>3]=BigInt(l.position),l.getdents&&n===0&&v===0&&(l.getdents=null),0}catch(m){if(typeof r>"u"||m.name!=="ErrnoError")throw m;return m.errno}}var Ar=(x,n,v,f)=>{for(var l=0,m=0;m<v;m++){var $=A0[n>>2],S=A0[n+4>>2];n+=8;var x0=r.write(x,q0,$,S,f);if(x0<0)return-1;if(l+=x0,x0<S)break;typeof f<"u"&&(f+=x0)}return l};function rr(x,n,v,f){try{var l=s0.getStreamFromFD(x),m=Ar(l,n,v);return A0[f>>2]=m,0}catch($){if(typeof r>"u"||$.name!=="ErrnoError")throw $;return $.errno}}var ee=0,_A=()=>jA||ee>0,te=x=>{g=x,_A()||(o.onExit?.(x),P=!0),k(x,new Jx(x))},ne=(x,n)=>{g=x,_A()||f0(),te(x)},ie=x=>{if(x instanceof Jx||x=="unwind")return g;k(1,x)},Zx=x=>O(x),Fe=x=>{var n=Vx(x)+1,v=Zx(n);return wA(x,v,n),v},$A=[],R0=x=>{var n=$A[x];return n||($A[x]=n=C0.get(x)),n},qA=(...x)=>r.createPath(...x),Qx=(...x)=>r.unlink(...x),A=(...x)=>r.createLazyFile(...x),s=(...x)=>r.createDevice(...x);if(r.createPreloadedFile=Nr,r.preloadFile=Yx,r.staticInit(),o.noExitRuntime&&(jA=o.noExitRuntime),o.preloadPlugins&&(yA=o.preloadPlugins),o.print&&(N=o.print),o.printErr&&(G=o.printErr),o.wasmBinary&&(M=o.wasmBinary),o.arguments&&(u=o.arguments),o.thisProgram&&(p=o.thisProgram),o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.shift()();o.callMain=Pe,o.addRunDependency=kA,o.removeRunDependency=gA,o.FS_preloadFile=Yx,o.FS_unlink=Qx,o.FS_createPath=qA,o.FS_createDevice=s,o.FS=r,o.FS_createDataFile=hA,o.FS_createLazyFile=A,o.PROXYFS=E0;var B,D,d,h,T,O,Y,a0,g0,j0,C0;function n0(x){B=o._main=x.__main_argc_argv,D=x.fflush,d=x.__funcs_on_exit,h=x.setThrew,T=x._emscripten_stack_restore,O=x._emscripten_stack_alloc,Y=x.emscripten_stack_get_current,a0=j0=x.memory,g0=C0=x.__indirect_function_table}var $0={__assert_fail:Tx,__syscall_faccessat:Lr,__syscall_fcntl64:Gr,__syscall_getcwd:Tr,__syscall_ioctl:Ir,__syscall_openat:Mr,__syscall_readlinkat:Sr,__syscall_renameat:Rr,__syscall_rmdir:Or,__syscall_unlinkat:Ur,_emscripten_throw_longjmp:Hr,clock_time_get:Xr,emscripten_resize_heap:Qr,fd_close:xe,fd_read:re,fd_seek:xr,fd_write:rr,invoke_i:xA,invoke_ii:rx,invoke_iii:ex,invoke_iiid:gn,invoke_iiii:ix,invoke_iiiii:G0,invoke_iiiiii:kn,invoke_iijii:bn,invoke_v:O0,invoke_vi:mn,invoke_vii:Z0,invoke_viii:hn,invoke_viiii:Mx,invoke_viiiii:un};function O0(x){var n=z0();try{R0(x)()}catch(v){if(S0(n),!(v instanceof I))throw v;h(1,0)}}function Z0(x,n,v){var f=z0();try{R0(x)(n,v)}catch(l){if(S0(f),!(l instanceof I))throw l;h(1,0)}}function rx(x,n){var v=z0();try{return R0(x)(n)}catch(f){if(S0(v),!(f instanceof I))throw f;h(1,0)}}function ex(x,n,v){var f=z0();try{return R0(x)(n,v)}catch(l){if(S0(f),!(l instanceof I))throw l;h(1,0)}}function xA(x){var n=z0();try{return R0(x)()}catch(v){if(S0(n),!(v instanceof I))throw v;h(1,0)}}function ix(x,n,v,f){var l=z0();try{return R0(x)(n,v,f)}catch(m){if(S0(l),!(m instanceof I))throw m;h(1,0)}}function Mx(x,n,v,f,l){var m=z0();try{R0(x)(n,v,f,l)}catch($){if(S0(m),!($ instanceof I))throw $;h(1,0)}}function G0(x,n,v,f,l){var m=z0();try{return R0(x)(n,v,f,l)}catch($){if(S0(m),!($ instanceof I))throw $;h(1,0)}}function un(x,n,v,f,l,m){var $=z0();try{R0(x)(n,v,f,l,m)}catch(S){if(S0($),!(S instanceof I))throw S;h(1,0)}}function bn(x,n,v,f,l){var m=z0();try{return R0(x)(n,v,f,l)}catch($){if(S0(m),!($ instanceof I))throw $;h(1,0)}}function mn(x,n){var v=z0();try{R0(x)(n)}catch(f){if(S0(v),!(f instanceof I))throw f;h(1,0)}}function hn(x,n,v,f){var l=z0();try{R0(x)(n,v,f)}catch(m){if(S0(l),!(m instanceof I))throw m;h(1,0)}}function gn(x,n,v,f){var l=z0();try{return R0(x)(n,v,f)}catch(m){if(S0(l),!(m instanceof I))throw m;h(1,0)}}function kn(x,n,v,f,l,m){var $=z0();try{return R0(x)(n,v,f,l,m)}catch(S){if(S0($),!(S instanceof I))throw S;h(1,0)}}function Pe(x=[]){var n=B;x.unshift(p);var v=x.length,f=Zx((v+1)*4),l=f;for(var m of x)A0[l>>2]=Fe(m),l+=4;A0[l>>2]=0;try{var $=n(v,f);return ne($,!0),$}catch(S){return ie(S)}}function se(x=u){if(X0>0){fx=se;return}if(Z(),X0>0){fx=se;return}function n(){if(o.calledRun=!0,!P){Q(),H?.(o),o.onRuntimeInitialized?.();var v=o.noInitialRun||!0;v||Pe(x),D0()}}o.setStatus?(o.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>o.setStatus(""),1),n()},1)):n()}var PA;return PA=await tA(),se(),W?E=o:E=new Promise((x,n)=>{H=x,R=n}),E}})();typeof t=="object"&&typeof e=="object"?(e.exports=F,e.exports.default=F):typeof define=="function"&&define.amd&&define([],()=>F)}}),yF=Mt({"wasm/bin/pawndbg.js"(t,e){"use strict";var F=(()=>{var i=globalThis.document?.currentScript?.src;return async function(a={}){var E,o=a,C=!!globalThis.window,c=!!globalThis.WorkerGlobalScope,j=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer",u=[],p="./this.program",k=(A,s)=>{throw s};typeof __filename<"u"?i=__filename:c&&(i=self.location.href);var w="",b,y;if(j){var q=require("fs");w=__dirname+"/",y=A=>{A=_(A)?new URL(A):A;var s=q.readFileSync(A);return s},b=async(A,s=!0)=>{A=_(A)?new URL(A):A;var B=q.readFileSync(A,s?void 0:"utf8");return B},process.argv.length>1&&(p=process.argv[1].replace(/\\/g,"/")),u=process.argv.slice(2),k=(A,s)=>{throw process.exitCode=A,s}}else if(C||c){try{w=new URL(".",i).href}catch{}c&&(y=A=>{var s=new XMLHttpRequest;return s.open("GET",A,!1),s.responseType="arraybuffer",s.send(null),new Uint8Array(s.response)}),b=async A=>{if(_(A))return new Promise((B,D)=>{var d=new XMLHttpRequest;d.open("GET",A,!0),d.responseType="arraybuffer",d.onload=()=>{if(d.status==200||d.status==0&&d.response){B(d.response);return}D(d.status)},d.onerror=D,d.send(null)});var s=await fetch(A,{credentials:"same-origin"});if(s.ok)return s.arrayBuffer();throw new Error(s.status+" : "+s.url)}}var N=console.log.bind(console),G=console.error.bind(console),M,P=!1,g,_=A=>A.startsWith("file://");class I{}class z extends I{}function J(A){for(var s=0,B=A.length,D=new Uint8Array(B),d;s<B;++s)d=A.charCodeAt(s),D[s]=~d>>8&d;return D}var H,R,W=!1,K=!1;function L(){var A=Zx.buffer;q0=new Int8Array(A),yx=new Int16Array(A),Cx=new Uint8Array(A),mr=new Uint16Array(A),m0=new Int32Array(A),A0=new Uint32Array(A),ur=new Float32Array(A),br=new Float64Array(A),h0=new BigInt64Array(A),hr=new BigUint64Array(A)}function Z(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)kr(o.preRun.shift());lA(dA)}function Q(){W=!0,!o.noFSInit&&!r.initialized&&r.init(),L0.init(),Qx.__wasm_call_ctors(),r.ignorePermissions=!1}function e0(){}function f0(){Ar(),r.quit(),L0.shutdown(),K=!0}function D0(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)gr(o.postRun.shift());lA(cA)}function o0(A){o.onAbort?.(A),A=`Aborted(${A})`,G(A),P=!0,A+=". Build with -sASSERTIONS for more info.";var s=new WebAssembly.RuntimeError(A);throw R?.(s),s}var u0;function M0(){return J(`\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,24 +1523,24 @@ 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 M0(A){return A}async function Ox(A){return A}async function fA(A,a){try{var B=await Ox(A),D=await WebAssembly.instantiate(B,a);return D}catch(d){w(`failed to asynchronously prepare wasm: ${d}`),o0(d)}}async function DA(A,a,B){return fA(a,B)}function AA(){var A={env:$A,wasi_snapshot_preview1:$A};return A}async function rA(){function A(h,G){return Xx=h.exports,Fe(Xx),M(),Xx}function a(h){return A(h.instance)}var B=AA();if(o.instantiateWasm)return new Promise((h,G)=>{o.instantiateWasm(B,(R,W)=>{h(A(R,W))})});b0??(b0=Z0());var D=await DA(q,b0,B),d=a(D);return d}class Ux{constructor(a){N0(this,"name","ExitStatus"),this.message=`Program terminated with exit(${a})`,this.status=a}}var kx,m0,h0,q0,br,ur,mr,Q,hr,Bx,lA=A=>{for(;A.length>0;)A.shift()(o)},cA=[],gr=A=>cA.push(A),dA=[],kr=A=>dA.push(A),jA=!1,S0=globalThis.TextDecoder&&new TextDecoder,z0=(A,a,B,D)=>{var d=a+B;if(D)return d;for(;A[a]&&!(a>=d);)++a;return a},yx=(A,a=0,B,D)=>{var d=z0(A,a,B,D);if(d-a>16&&A.buffer&&S0)return S0.decode(A.subarray(a,d));for(var h="";a<d;){var G=A[a++];if(!(G&128)){h+=String.fromCharCode(G);continue}var R=A[a++]&63;if((G&224)==192){h+=String.fromCharCode((G&31)<<6|R);continue}var W=A[a++]&63;if((G&240)==224?G=(G&15)<<12|R<<6|W:G=(G&7)<<18|R<<12|W<<6|A[a++]&63,G<65536)h+=String.fromCharCode(G);else{var a0=G-65536;h+=String.fromCharCode(55296|a0>>10,56320|a0&1023)}}return h},eA=(A,a,B)=>A?yx(Bx,A,a,B):"",Px=(A,a,B,D)=>o0(`Assertion failed: ${eA(A)}, at: `+[a?eA(a):"unknown filename",B,D?eA(D):"unknown function"]),wx=()=>{var A=m0[+s0.varargs>>2];return s0.varargs+=4,A},Nx=wx,A0={isAbs:A=>A.charAt(0)==="/",splitPath:A=>{var a=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return a.exec(A).slice(1)},normalizeArray:(A,a)=>{for(var B=0,D=A.length-1;D>=0;D--){var d=A[D];d==="."?A.splice(D,1):d===".."?(A.splice(D,1),B++):B&&(A.splice(D,1),B--)}if(a)for(;B;B--)A.unshift("..");return A},normalize:A=>{var a=A0.isAbs(A),B=A.slice(-1)==="/";return A=A0.normalizeArray(A.split("/").filter(D=>!!D),!a).join("/"),!A&&!a&&(A="."),A&&B&&(A+="/"),(a?"/":"")+A},dirname:A=>{var a=A0.splitPath(A),B=a[0],D=a[1];return!B&&!D?".":(D&&(D=D.slice(0,-1)),B+D)},basename:A=>A&&A.match(/([^\/]+|\/)\/*$/)[1],join:(...A)=>A0.normalize(A.join("/")),join2:(A,a)=>A0.normalize(A+"/"+a)},yr=()=>{if(j){var A=require("crypto");return a=>A.randomFillSync(a)}return a=>(crypto.getRandomValues(a),0)},pA=A=>(pA=yr())(A),Q0={resolve:(...A)=>{for(var a="",B=!1,D=A.length-1;D>=-1&&!B;D--){var d=D>=0?A[D]:r.cwd();if(typeof d!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!d)return"";a=d+"/"+a,B=A0.isAbs(d)}return a=A0.normalizeArray(a.split("/").filter(h=>!!h),!B).join("/"),(B?"/":"")+a||"."},relative:(A,a)=>{A=Q0.resolve(A).slice(1),a=Q0.resolve(a).slice(1);function B(a0){for(var g0=0;g0<a0.length&&a0[g0]==="";g0++);for(var j0=a0.length-1;j0>=0&&a0[j0]==="";j0--);return g0>j0?[]:a0.slice(g0,j0-g0+1)}for(var D=B(A.split("/")),d=B(a.split("/")),h=Math.min(D.length,d.length),G=h,R=0;R<h;R++)if(D[R]!==d[R]){G=R;break}for(var W=[],R=G;R<D.length;R++)W.push("..");return W=W.concat(d.slice(G)),W.join("/")}},Hx=[],zx=A=>{for(var a=0,B=0;B<A.length;++B){var D=A.charCodeAt(B);D<=127?a++:D<=2047?a+=2:D>=55296&&D<=57343?(a+=4,++B):a+=3}return a},bA=(A,a,B,D)=>{if(!(D>0))return 0;for(var d=B,h=B+D-1,G=0;G<A.length;++G){var R=A.codePointAt(G);if(R<=127){if(B>=h)break;a[B++]=R}else if(R<=2047){if(B+1>=h)break;a[B++]=192|R>>6,a[B++]=128|R&63}else if(R<=65535){if(B+2>=h)break;a[B++]=224|R>>12,a[B++]=128|R>>6&63,a[B++]=128|R&63}else{if(B+3>=h)break;a[B++]=240|R>>18,a[B++]=128|R>>12&63,a[B++]=128|R>>6&63,a[B++]=128|R&63,G++}}return a[B]=0,B-d},Jx=(A,a,B)=>{var D=B>0?B:zx(A)+1,d=new Array(D),h=bA(A,d,0,d.length);return a&&(d.length=h),d},wr=()=>{if(!Hx.length){var A=null;if(j){var a=256,B=Buffer.alloc(a),D=0,d=process.stdin.fd;try{D=P.readSync(d,B,0,a)}catch(h){if(h.toString().includes("EOF"))D=0;else throw h}D>0&&(A=B.slice(0,D).toString("utf-8"))}else globalThis.window?.prompt&&(A=window.prompt("Input: "),A!==null&&(A+=`
1527
- `));if(!A)return null;Hx=Jx(A,!0)}return Hx.shift()},L0={ttys:[],init(){},shutdown(){},register(A,a){L0.ttys[A]={input:[],output:[],ops:a},r.registerDevice(A,L0.stream_ops)},stream_ops:{open(A){var a=L0.ttys[A.node.rdev];if(!a)throw new r.ErrnoError(43);A.tty=a,A.seekable=!1},close(A){A.tty.ops.fsync(A.tty)},fsync(A){A.tty.ops.fsync(A.tty)},read(A,a,B,D,d){if(!A.tty||!A.tty.ops.get_char)throw new r.ErrnoError(60);for(var h=0,G=0;G<D;G++){var R;try{R=A.tty.ops.get_char(A.tty)}catch{throw new r.ErrnoError(29)}if(R===void 0&&h===0)throw new r.ErrnoError(6);if(R==null)break;h++,a[B+G]=R}return h&&(A.node.atime=Date.now()),h},write(A,a,B,D,d){if(!A.tty||!A.tty.ops.put_char)throw new r.ErrnoError(60);try{for(var h=0;h<D;h++)A.tty.ops.put_char(A.tty,a[B+h])}catch{throw new r.ErrnoError(29)}return D&&(A.node.mtime=A.node.ctime=Date.now()),h}},default_tty_ops:{get_char(A){return wr()},put_char(A,a){a===null||a===10?(g(yx(A.output)),A.output=[]):a!=0&&A.output.push(a)},fsync(A){A.output?.length>0&&(g(yx(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,a,B){return 0},ioctl_tiocgwinsz(A){return[24,80]}},default_tty1_ops:{put_char(A,a){a===null||a===10?(w(yx(A.output)),A.output=[]):a!=0&&A.output.push(a)},fsync(A){A.output?.length>0&&(w(yx(A.output)),A.output=[])}}},uA=A=>{o0()},J={ops_table:null,mount(A){return J.createNode(null,"/",16895,0)},createNode(A,a,B,D){if(r.isBlkdev(B)||r.isFIFO(B))throw new r.ErrnoError(63);J.ops_table||(J.ops_table={dir:{node:{getattr:J.node_ops.getattr,setattr:J.node_ops.setattr,lookup:J.node_ops.lookup,mknod:J.node_ops.mknod,rename:J.node_ops.rename,unlink:J.node_ops.unlink,rmdir:J.node_ops.rmdir,readdir:J.node_ops.readdir,symlink:J.node_ops.symlink},stream:{llseek:J.stream_ops.llseek}},file:{node:{getattr:J.node_ops.getattr,setattr:J.node_ops.setattr},stream:{llseek:J.stream_ops.llseek,read:J.stream_ops.read,write:J.stream_ops.write,mmap:J.stream_ops.mmap,msync:J.stream_ops.msync}},link:{node:{getattr:J.node_ops.getattr,setattr:J.node_ops.setattr,readlink:J.node_ops.readlink},stream:{}},chrdev:{node:{getattr:J.node_ops.getattr,setattr:J.node_ops.setattr},stream:r.chrdev_stream_ops}});var d=r.createNode(A,a,B,D);return r.isDir(d.mode)?(d.node_ops=J.ops_table.dir.node,d.stream_ops=J.ops_table.dir.stream,d.contents={}):r.isFile(d.mode)?(d.node_ops=J.ops_table.file.node,d.stream_ops=J.ops_table.file.stream,d.usedBytes=0,d.contents=J.emptyFileContents??(J.emptyFileContents=new Uint8Array(0))):r.isLink(d.mode)?(d.node_ops=J.ops_table.link.node,d.stream_ops=J.ops_table.link.stream):r.isChrdev(d.mode)&&(d.node_ops=J.ops_table.chrdev.node,d.stream_ops=J.ops_table.chrdev.stream),d.atime=d.mtime=d.ctime=Date.now(),A&&(A.contents[a]=d,A.atime=A.mtime=A.ctime=d.atime),d},getFileDataAsTypedArray(A){return A.contents.subarray(0,A.usedBytes)},expandFileStorage(A,a){var B=A.contents.length;if(!(B>=a)){var D=1024*1024;a=Math.max(a,B*(B<D?2:1.125)>>>0),B&&(a=Math.max(a,256));var d=J.getFileDataAsTypedArray(A);A.contents=new Uint8Array(a),A.contents.set(d)}},resizeFileStorage(A,a){if(A.usedBytes!=a){var B=A.contents;A.contents=new Uint8Array(a),A.contents.set(B.subarray(0,Math.min(a,A.usedBytes))),A.usedBytes=a}},node_ops:{getattr(A){var a={};return a.dev=r.isChrdev(A.mode)?A.id:1,a.ino=A.id,a.mode=A.mode,a.nlink=1,a.uid=0,a.gid=0,a.rdev=A.rdev,r.isDir(A.mode)?a.size=4096:r.isFile(A.mode)?a.size=A.usedBytes:r.isLink(A.mode)?a.size=A.link.length:a.size=0,a.atime=new Date(A.atime),a.mtime=new Date(A.mtime),a.ctime=new Date(A.ctime),a.blksize=4096,a.blocks=Math.ceil(a.size/a.blksize),a},setattr(A,a){for(let B of["mode","atime","mtime","ctime"])a[B]!=null&&(A[B]=a[B]);a.size!==void 0&&J.resizeFileStorage(A,a.size)},lookup(A,a){throw J.doesNotExistError||(J.doesNotExistError=new r.ErrnoError(44),J.doesNotExistError.stack="<generic error, no stack>"),J.doesNotExistError},mknod(A,a,B,D){return J.createNode(A,a,B,D)},rename(A,a,B){var D;try{D=r.lookupNode(a,B)}catch{}if(D){if(r.isDir(A.mode))for(var d in D.contents)throw new r.ErrnoError(55);r.hashRemoveNode(D)}delete A.parent.contents[A.name],a.contents[B]=A,A.name=B,a.ctime=a.mtime=A.parent.ctime=A.parent.mtime=Date.now()},unlink(A,a){delete A.contents[a],A.ctime=A.mtime=Date.now()},rmdir(A,a){var B=r.lookupNode(A,a);for(var D in B.contents)throw new r.ErrnoError(55);delete A.contents[a],A.ctime=A.mtime=Date.now()},readdir(A){return[".","..",...Object.keys(A.contents)]},symlink(A,a,B){var D=J.createNode(A,a,41471,0);return D.link=B,D},readlink(A){if(!r.isLink(A.mode))throw new r.ErrnoError(28);return A.link}},stream_ops:{read(A,a,B,D,d){var h=A.node.contents;if(d>=A.node.usedBytes)return 0;var G=Math.min(A.node.usedBytes-d,D);return a.set(h.subarray(d,d+G),B),G},write(A,a,B,D,d,h){if(a.buffer===q0.buffer&&(h=!1),!D)return 0;var G=A.node;return G.mtime=G.ctime=Date.now(),h?(G.contents=a.subarray(B,B+D),G.usedBytes=D):G.usedBytes===0&&d===0?(G.contents=a.slice(B,B+D),G.usedBytes=D):(J.expandFileStorage(G,d+D),G.contents.set(a.subarray(B,B+D),d),G.usedBytes=Math.max(G.usedBytes,d+D)),D},llseek(A,a,B){var D=a;if(B===1?D+=A.position:B===2&&r.isFile(A.node.mode)&&(D+=A.node.usedBytes),D<0)throw new r.ErrnoError(28);return D},mmap(A,a,B,D,d){if(!r.isFile(A.node.mode))throw new r.ErrnoError(43);var h,G,R=A.node.contents;if(!(d&2)&&R.buffer===q0.buffer)G=!1,h=R.byteOffset;else{if(G=!0,h=uA(a),!h)throw new r.ErrnoError(48);R&&((B>0||B+a<R.length)&&(R.subarray?R=R.subarray(B,B+a):R=Array.prototype.slice.call(R,B,B+a)),q0.set(R,h))}return{ptr:h,allocated:G}},msync(A,a,B,D,d){return J.stream_ops.write(A,a,0,D,B,!1),0}}},_r=A=>{if(typeof A!="string")return A;var a={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},B=a[A];if(typeof B>"u")throw new Error(`Unknown file open mode: ${A}`);return B},mA=A=>(typeof A=="string"&&(A=Jx(A,!0)),A.subarray||(A=new Uint8Array(A)),A),Kx=(A,a)=>{var B=0;return A&&(B|=365),a&&(B|=146),B},D0={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},E0={mount(A){return E0.createNode(null,"/",A.opts.fs.lstat(A.opts.root).mode,0)},createNode(A,a,B,D){if(!r.isDir(B)&&!r.isFile(B)&&!r.isLink(B))throw new r.ErrnoError(D0.EINVAL);var d=r.createNode(A,a,B);return d.node_ops=E0.node_ops,d.stream_ops=E0.stream_ops,d},realPath(A){for(var a=[];A.parent!==A;)a.push(A.name),A=A.parent;return a.push(A.mount.opts.root),a.reverse(),A0.join(...a)},node_ops:{getattr(A){var a=E0.realPath(A),B;try{B=A.mount.opts.fs.lstat(a)}catch(D){throw D.code?new r.ErrnoError(D0[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(A,a){var B=E0.realPath(A);try{if(a.mode!==void 0&&(A.mount.opts.fs.chmod(B,a.mode),A.mode=a.mode),a.atime||a.mtime){var D=new Date(a.atime||a.mtime),d=new Date(a.mtime||a.atime);A.mount.opts.fs.utime(B,D,d)}a.size!==void 0&&A.mount.opts.fs.truncate(B,a.size)}catch(h){throw h.code?new r.ErrnoError(D0[h.code]):h}},lookup(A,a){try{var B=A0.join2(E0.realPath(A),a),D=A.mount.opts.fs.lstat(B).mode,d=E0.createNode(A,a,D);return d}catch(h){throw h.code?new r.ErrnoError(D0[h.code]):h}},mknod(A,a,B,D){var d=E0.createNode(A,a,B,D),h=E0.realPath(d);try{r.isDir(d.mode)?d.mount.opts.fs.mkdir(h,d.mode):d.mount.opts.fs.writeFile(h,"",{mode:d.mode})}catch(G){throw G.code?new r.ErrnoError(D0[G.code]):G}return d},rename(A,a,B){var D=E0.realPath(A),d=A0.join2(E0.realPath(a),B);try{A.mount.opts.fs.rename(D,d),A.name=B}catch(h){throw h.code?new r.ErrnoError(D0[h.code]):h}},unlink(A,a){var B=A0.join2(E0.realPath(A),a);try{A.mount.opts.fs.unlink(B)}catch(D){throw D.code?new r.ErrnoError(D0[D.code]):D}},rmdir(A,a){var B=A0.join2(E0.realPath(A),a);try{A.mount.opts.fs.rmdir(B)}catch(D){throw D.code?new r.ErrnoError(D0[D.code]):D}},readdir(A){var a=E0.realPath(A);try{return A.mount.opts.fs.readdir(a)}catch(B){throw B.code?new r.ErrnoError(D0[B.code]):B}},symlink(A,a,B){var D=A0.join2(E0.realPath(A),a);try{A.mount.opts.fs.symlink(B,D)}catch(d){throw d.code?new r.ErrnoError(D0[d.code]):d}},readlink(A){var a=E0.realPath(A);try{return A.mount.opts.fs.readlink(a)}catch(B){throw B.code?new r.ErrnoError(D0[B.code]):B}}},stream_ops:{open(A){var a=E0.realPath(A.node);try{A.nfd=A.node.mount.opts.fs.open(a,A.flags)}catch(B){throw B.code?new r.ErrnoError(D0[B.code]):B}},close(A){try{A.node.mount.opts.fs.close(A.nfd)}catch(a){throw a.code?new r.ErrnoError(D0[a.code]):a}},read(A,a,B,D,d){try{return A.node.mount.opts.fs.read(A.nfd,a,B,D,d)}catch(h){throw h.code?new r.ErrnoError(D0[h.code]):h}},write(A,a,B,D,d){try{return A.node.mount.opts.fs.write(A.nfd,a,B,D,d)}catch(h){throw h.code?new r.ErrnoError(D0[h.code]):h}},llseek(A,a,B){var D=a;if(B===1)D+=A.position;else if(B===2&&r.isFile(A.node.mode))try{var d=A.node.node_ops.getattr(A.node);D+=d.size}catch(h){throw new r.ErrnoError(D0[h.code])}if(D<0)throw new r.ErrnoError(D0.EINVAL);return D}}},$r=async A=>{var a=await u(A);return new Uint8Array(a)},hA=(...A)=>r.createDataFile(...A),qr=A=>A,W0=0,Cx=null,gA=A=>{if(W0--,o.monitorRunDependencies?.(W0),W0==0&&Cx){var a=Cx;Cx=null,a()}},kA=A=>{W0++,o.monitorRunDependencies?.(W0)},yA=[],Pr=async(A,a)=>{typeof Browser<"u"&&Browser.init();for(var B of yA)if(B.canHandle(a))return B.handle(A,a);return A},Vx=async(A,a,B,D,d,h,G,R)=>{var W=a?Q0.resolve(A0.join2(A,a)):A,a0=qr(`cp ${W}`);kA(a0);try{var g0=B;typeof B=="string"&&(g0=await $r(B)),g0=await Pr(g0,W),R?.(),h||hA(A,a,g0,D,d,G)}finally{gA(a0)}},Nr=(A,a,B,D,d,h,G,R,W,a0)=>{Vx(A,a,B,D,d,R,W,a0).then(h).catch(G)},r={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,filesystems:null,syncFSRequests:0,ErrnoError:class{constructor(A){N0(this,"name","ErrnoError"),this.errno=A}},FSStream:class{constructor(){N0(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,a,B,D){N0(this,"node_ops",{}),N0(this,"stream_ops",{}),N0(this,"readMode",365),N0(this,"writeMode",146),N0(this,"mounted",null),A||(A=this),this.parent=A,this.mount=A.mount,this.id=r.nextInode++,this.name=a,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(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 r.isDir(this.mode)}get isDevice(){return r.isChrdev(this.mode)}},lookupPath(A,a={}){if(!A)throw new r.ErrnoError(44);a.follow_mount??(a.follow_mount=!0),A0.isAbs(A)||(A=r.cwd()+"/"+A);x:for(var B=0;B<40;B++){for(var D=A.split("/").filter(a0=>!!a0),d=r.root,h="/",G=0;G<D.length;G++){var R=G===D.length-1;if(R&&a.parent)break;if(D[G]!=="."){if(D[G]===".."){if(h=A0.dirname(h),r.isRoot(d)){A=h+"/"+D.slice(G+1).join("/"),B--;continue x}else d=d.parent;continue}h=A0.join2(h,D[G]);try{d=r.lookupNode(d,D[G])}catch(a0){if(a0?.errno===44&&R&&a.noent_okay)return{path:h};throw a0}if(r.isMountpoint(d)&&(!R||a.follow_mount)&&(d=d.mounted.root),r.isLink(d.mode)&&(!R||a.follow)){if(!d.node_ops.readlink)throw new r.ErrnoError(52);var W=d.node_ops.readlink(d);A0.isAbs(W)||(W=A0.dirname(h)+"/"+W),A=W+"/"+D.slice(G+1).join("/");continue x}}}return{path:h,node:d}}throw new r.ErrnoError(32)},getPath(A){for(var a;;){if(r.isRoot(A)){var B=A.mount.mountpoint;return a?B[B.length-1]!=="/"?`${B}/${a}`:B+a:B}a=a?`${A.name}/${a}`:A.name,A=A.parent}},hashName(A,a){for(var B=0,D=0;D<a.length;D++)B=(B<<5)-B+a.charCodeAt(D)|0;return(A+B>>>0)%r.nameTable.length},hashAddNode(A){var a=r.hashName(A.parent.id,A.name);A.name_next=r.nameTable[a],r.nameTable[a]=A},hashRemoveNode(A){var a=r.hashName(A.parent.id,A.name);if(r.nameTable[a]===A)r.nameTable[a]=A.name_next;else for(var B=r.nameTable[a];B;){if(B.name_next===A){B.name_next=A.name_next;break}B=B.name_next}},lookupNode(A,a){var B=r.mayLookup(A);if(B)throw new r.ErrnoError(B);for(var D=r.hashName(A.id,a),d=r.nameTable[D];d;d=d.name_next){var h=d.name;if(d.parent.id===A.id&&h===a)return d}return r.lookup(A,a)},createNode(A,a,B,D){var d=new r.FSNode(A,a,B,D);return r.hashAddNode(d),d},destroyNode(A){r.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 a=["r","w","rw"][A&3];return A&512&&(a+="w"),a},nodePermissions(A,a){return r.ignorePermissions?0:a.includes("r")&&!(A.mode&292)||a.includes("w")&&!(A.mode&146)||a.includes("x")&&!(A.mode&73)?2:0},mayLookup(A){if(!r.isDir(A.mode))return 54;var a=r.nodePermissions(A,"x");return a||(A.node_ops.lookup?0:2)},mayCreate(A,a){if(!r.isDir(A.mode))return 54;try{var B=r.lookupNode(A,a);return 20}catch{}return r.nodePermissions(A,"wx")},mayDelete(A,a,B){var D;try{D=r.lookupNode(A,a)}catch(h){return h.errno}var d=r.nodePermissions(A,"wx");if(d)return d;if(B){if(!r.isDir(D.mode))return 54;if(r.isRoot(D)||r.getPath(D)===r.cwd())return 10}else if(r.isDir(D.mode))return 31;return 0},mayOpen(A,a){if(!A)return 44;if(r.isLink(A.mode))return 32;var B=r.flagsToPermissionString(a);return r.isDir(A.mode)&&(B!=="r"||a&576)?31:r.nodePermissions(A,B)},checkOpExists(A,a){if(!A)throw new r.ErrnoError(a);return A},MAX_OPEN_FDS:4096,nextfd(){for(var A=0;A<=r.MAX_OPEN_FDS;A++)if(!r.streams[A])return A;throw new r.ErrnoError(33)},getStreamChecked(A){var a=r.getStream(A);if(!a)throw new r.ErrnoError(8);return a},getStream:A=>r.streams[A],createStream(A,a=-1){return A=Object.assign(new r.FSStream,A),a==-1&&(a=r.nextfd()),A.fd=a,r.streams[a]=A,A},closeStream(A){r.streams[A]=null},dupStream(A,a=-1){var B=r.createStream(A,a);return B.stream_ops?.dup?.(B),B},doSetAttr(A,a,B){var D=A?.stream_ops.setattr,d=D?A:a;D??(D=a.node_ops.setattr),r.checkOpExists(D,63);try{D(d,B)}catch(h){throw h instanceof RangeError?new r.ErrnoError(22):h}},chrdev_stream_ops:{open(A){var a=r.getDevice(A.node.rdev);A.stream_ops=a.stream_ops,A.stream_ops.open?.(A)},llseek(){throw new r.ErrnoError(70)}},major:A=>A>>8,minor:A=>A&255,makedev:(A,a)=>A<<8|a,registerDevice(A,a){r.devices[A]={stream_ops:a}},getDevice:A=>r.devices[A],getMounts(A){for(var a=[],B=[A];B.length;){var D=B.pop();a.push(D),B.push(...D.mounts)}return a},syncfs(A,a){typeof A=="function"&&(a=A,A=!1),r.syncFSRequests++,r.syncFSRequests>1&&w(`warning: ${r.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var B=r.getMounts(r.root.mount),D=0;function d(R){return r.syncFSRequests--,a(R)}function h(R){if(R)return h.errored?void 0:(h.errored=!0,d(R));++D>=B.length&&d(null)}for(var G of B)G.type.syncfs?G.type.syncfs(G,A,h):h(null)},mount(A,a,B){var D=B==="/",d=!B,h;if(D&&r.root)throw new r.ErrnoError(10);if(!D&&!d){var G=r.lookupPath(B,{follow_mount:!1});if(B=G.path,h=G.node,r.isMountpoint(h))throw new r.ErrnoError(10);if(!r.isDir(h.mode))throw new r.ErrnoError(54)}var R={type:A,opts:a,mountpoint:B,mounts:[]},W=A.mount(R);return W.mount=R,R.root=W,D?r.root=W:h&&(h.mounted=R,h.mount&&h.mount.mounts.push(R)),W},unmount(A){var a=r.lookupPath(A,{follow_mount:!1});if(!r.isMountpoint(a.node))throw new r.ErrnoError(28);var B=a.node,D=B.mounted,d=r.getMounts(D);for(var[h,G]of Object.entries(r.nameTable))for(;G;){var R=G.name_next;d.includes(G.mount)&&r.destroyNode(G),G=R}B.mounted=null;var W=B.mount.mounts.indexOf(D);B.mount.mounts.splice(W,1)},lookup(A,a){return A.node_ops.lookup(A,a)},mknod(A,a,B){var D=r.lookupPath(A,{parent:!0}),d=D.node,h=A0.basename(A);if(!h)throw new r.ErrnoError(28);if(h==="."||h==="..")throw new r.ErrnoError(20);var G=r.mayCreate(d,h);if(G)throw new r.ErrnoError(G);if(!d.node_ops.mknod)throw new r.ErrnoError(63);return d.node_ops.mknod(d,h,a,B)},statfs(A){return r.statfsNode(r.lookupPath(A,{follow:!0}).node)},statfsStream(A){return r.statfsNode(A.node)},statfsNode(A){var a={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:r.nextInode,ffree:r.nextInode-1,fsid:42,flags:2,namelen:255};return A.node_ops.statfs&&Object.assign(a,A.node_ops.statfs(A.mount.opts.root)),a},create(A,a=438){return a&=4095,a|=32768,r.mknod(A,a,0)},mkdir(A,a=511){return a&=1023,a|=16384,r.mknod(A,a,0)},mkdirTree(A,a){var B=A.split("/"),D="";for(var d of B)if(d){(D||A0.isAbs(A))&&(D+="/"),D+=d;try{r.mkdir(D,a)}catch(h){if(h.errno!=20)throw h}}},mkdev(A,a,B){return typeof B>"u"&&(B=a,a=438),a|=8192,r.mknod(A,a,B)},symlink(A,a){if(!Q0.resolve(A))throw new r.ErrnoError(44);var B=r.lookupPath(a,{parent:!0}),D=B.node;if(!D)throw new r.ErrnoError(44);var d=A0.basename(a),h=r.mayCreate(D,d);if(h)throw new r.ErrnoError(h);if(!D.node_ops.symlink)throw new r.ErrnoError(63);return D.node_ops.symlink(D,d,A)},rename(A,a){var B=A0.dirname(A),D=A0.dirname(a),d=A0.basename(A),h=A0.basename(a),G,R,W;if(G=r.lookupPath(A,{parent:!0}),R=G.node,G=r.lookupPath(a,{parent:!0}),W=G.node,!R||!W)throw new r.ErrnoError(44);if(R.mount!==W.mount)throw new r.ErrnoError(75);var a0=r.lookupNode(R,d),g0=Q0.relative(A,D);if(g0.charAt(0)!==".")throw new r.ErrnoError(28);if(g0=Q0.relative(a,B),g0.charAt(0)!==".")throw new r.ErrnoError(55);var j0;try{j0=r.lookupNode(W,h)}catch{}if(a0!==j0){var C0=r.isDir(a0.mode),n0=r.mayDelete(R,d,C0);if(n0)throw new r.ErrnoError(n0);if(n0=j0?r.mayDelete(W,h,C0):r.mayCreate(W,h),n0)throw new r.ErrnoError(n0);if(!R.node_ops.rename)throw new r.ErrnoError(63);if(r.isMountpoint(a0)||j0&&r.isMountpoint(j0))throw new r.ErrnoError(10);if(W!==R&&(n0=r.nodePermissions(R,"w"),n0))throw new r.ErrnoError(n0);r.hashRemoveNode(a0);try{R.node_ops.rename(a0,W,h),a0.parent=W}catch($0){throw $0}finally{r.hashAddNode(a0)}}},rmdir(A){var a=r.lookupPath(A,{parent:!0}),B=a.node,D=A0.basename(A),d=r.lookupNode(B,D),h=r.mayDelete(B,D,!0);if(h)throw new r.ErrnoError(h);if(!B.node_ops.rmdir)throw new r.ErrnoError(63);if(r.isMountpoint(d))throw new r.ErrnoError(10);B.node_ops.rmdir(B,D),r.destroyNode(d)},readdir(A){var a=r.lookupPath(A,{follow:!0}),B=a.node,D=r.checkOpExists(B.node_ops.readdir,54);return D(B)},unlink(A){var a=r.lookupPath(A,{parent:!0}),B=a.node;if(!B)throw new r.ErrnoError(44);var D=A0.basename(A),d=r.lookupNode(B,D),h=r.mayDelete(B,D,!1);if(h)throw new r.ErrnoError(h);if(!B.node_ops.unlink)throw new r.ErrnoError(63);if(r.isMountpoint(d))throw new r.ErrnoError(10);B.node_ops.unlink(B,D),r.destroyNode(d)},readlink(A){var a=r.lookupPath(A),B=a.node;if(!B)throw new r.ErrnoError(44);if(!B.node_ops.readlink)throw new r.ErrnoError(28);return B.node_ops.readlink(B)},stat(A,a){var B=r.lookupPath(A,{follow:!a}),D=B.node,d=r.checkOpExists(D.node_ops.getattr,63);return d(D)},fstat(A){var a=r.getStreamChecked(A),B=a.node,D=a.stream_ops.getattr,d=D?a:B;return D??(D=B.node_ops.getattr),r.checkOpExists(D,63),D(d)},lstat(A){return r.stat(A,!0)},doChmod(A,a,B,D){r.doSetAttr(A,a,{mode:B&4095|a.mode&-4096,ctime:Date.now(),dontFollow:D})},chmod(A,a,B){var D;if(typeof A=="string"){var d=r.lookupPath(A,{follow:!B});D=d.node}else D=A;r.doChmod(null,D,a,B)},lchmod(A,a){r.chmod(A,a,!0)},fchmod(A,a){var B=r.getStreamChecked(A);r.doChmod(B,B.node,a,!1)},doChown(A,a,B){r.doSetAttr(A,a,{timestamp:Date.now(),dontFollow:B})},chown(A,a,B,D){var d;if(typeof A=="string"){var h=r.lookupPath(A,{follow:!D});d=h.node}else d=A;r.doChown(null,d,D)},lchown(A,a,B){r.chown(A,a,B,!0)},fchown(A,a,B){var D=r.getStreamChecked(A);r.doChown(D,D.node,!1)},doTruncate(A,a,B){if(r.isDir(a.mode))throw new r.ErrnoError(31);if(!r.isFile(a.mode))throw new r.ErrnoError(28);var D=r.nodePermissions(a,"w");if(D)throw new r.ErrnoError(D);r.doSetAttr(A,a,{size:B,timestamp:Date.now()})},truncate(A,a){if(a<0)throw new r.ErrnoError(28);var B;if(typeof A=="string"){var D=r.lookupPath(A,{follow:!0});B=D.node}else B=A;r.doTruncate(null,B,a)},ftruncate(A,a){var B=r.getStreamChecked(A);if(a<0||(B.flags&2097155)===0)throw new r.ErrnoError(28);r.doTruncate(B,B.node,a)},utime(A,a,B){var D=r.lookupPath(A,{follow:!0}),d=D.node,h=r.checkOpExists(d.node_ops.setattr,63);h(d,{atime:a,mtime:B})},open(A,a,B=438){if(A==="")throw new r.ErrnoError(44);a=_r(a),a&64?B=B&4095|32768:B=0;var D,d;if(typeof A=="object")D=A;else{d=A.endsWith("/");var h=r.lookupPath(A,{follow:!(a&131072),noent_okay:!0});D=h.node,A=h.path}var G=!1;if(a&64)if(D){if(a&128)throw new r.ErrnoError(20)}else{if(d)throw new r.ErrnoError(31);D=r.mknod(A,B|511,0),G=!0}if(!D)throw new r.ErrnoError(44);if(r.isChrdev(D.mode)&&(a&=-513),a&65536&&!r.isDir(D.mode))throw new r.ErrnoError(54);if(!G){var R=r.mayOpen(D,a);if(R)throw new r.ErrnoError(R)}a&512&&!G&&r.truncate(D,0),a&=-131713;var W=r.createStream({node:D,path:r.getPath(D),flags:a,seekable:!0,position:0,stream_ops:D.stream_ops,ungotten:[],error:!1});return W.stream_ops.open&&W.stream_ops.open(W),G&&r.chmod(D,B&511),W},close(A){if(r.isClosed(A))throw new r.ErrnoError(8);A.getdents&&(A.getdents=null);try{A.stream_ops.close&&A.stream_ops.close(A)}catch(a){throw a}finally{r.closeStream(A.fd)}A.fd=null},isClosed(A){return A.fd===null},llseek(A,a,B){if(r.isClosed(A))throw new r.ErrnoError(8);if(!A.seekable||!A.stream_ops.llseek)throw new r.ErrnoError(70);if(B!=0&&B!=1&&B!=2)throw new r.ErrnoError(28);return A.position=A.stream_ops.llseek(A,a,B),A.ungotten=[],A.position},read(A,a,B,D,d){if(D<0||d<0)throw new r.ErrnoError(28);if(r.isClosed(A))throw new r.ErrnoError(8);if((A.flags&2097155)===1)throw new r.ErrnoError(8);if(r.isDir(A.node.mode))throw new r.ErrnoError(31);if(!A.stream_ops.read)throw new r.ErrnoError(28);var h=typeof d<"u";if(!h)d=A.position;else if(!A.seekable)throw new r.ErrnoError(70);var G=A.stream_ops.read(A,a,B,D,d);return h||(A.position+=G),G},write(A,a,B,D,d,h){if(D<0||d<0)throw new r.ErrnoError(28);if(r.isClosed(A))throw new r.ErrnoError(8);if((A.flags&2097155)===0)throw new r.ErrnoError(8);if(r.isDir(A.node.mode))throw new r.ErrnoError(31);if(!A.stream_ops.write)throw new r.ErrnoError(28);A.seekable&&A.flags&1024&&r.llseek(A,0,2);var G=typeof d<"u";if(!G)d=A.position;else if(!A.seekable)throw new r.ErrnoError(70);var R=A.stream_ops.write(A,a,B,D,d,h);return G||(A.position+=R),R},mmap(A,a,B,D,d){if((D&2)!==0&&(d&2)===0&&(A.flags&2097155)!==2)throw new r.ErrnoError(2);if((A.flags&2097155)===1)throw new r.ErrnoError(2);if(!A.stream_ops.mmap)throw new r.ErrnoError(43);if(!a)throw new r.ErrnoError(28);return A.stream_ops.mmap(A,a,B,D,d)},msync(A,a,B,D,d){return A.stream_ops.msync?A.stream_ops.msync(A,a,B,D,d):0},ioctl(A,a,B){if(!A.stream_ops.ioctl)throw new r.ErrnoError(59);return A.stream_ops.ioctl(A,a,B)},readFile(A,a={}){a.flags=a.flags||0,a.encoding=a.encoding||"binary",a.encoding!=="utf8"&&a.encoding!=="binary"&&o0(`Invalid encoding type "${a.encoding}"`);var B=r.open(A,a.flags),D=r.stat(A),d=D.size,h=new Uint8Array(d);return r.read(B,h,0,d,0),a.encoding==="utf8"&&(h=yx(h)),r.close(B),h},writeFile(A,a,B={}){B.flags=B.flags||577;var D=r.open(A,B.flags,B.mode);a=mA(a),r.write(D,a,0,a.byteLength,void 0,B.canOwn),r.close(D)},cwd:()=>r.currentPath,chdir(A){var a=r.lookupPath(A,{follow:!0});if(a.node===null)throw new r.ErrnoError(44);if(!r.isDir(a.node.mode))throw new r.ErrnoError(54);var B=r.nodePermissions(a.node,"x");if(B)throw new r.ErrnoError(B);r.currentPath=a.path},createDefaultDirectories(){r.mkdir("/tmp"),r.mkdir("/home"),r.mkdir("/home/web_user")},createDefaultDevices(){r.mkdir("/dev"),r.registerDevice(r.makedev(1,3),{read:()=>0,write:(D,d,h,G,R)=>G,llseek:()=>0}),r.mkdev("/dev/null",r.makedev(1,3)),L0.register(r.makedev(5,0),L0.default_tty_ops),L0.register(r.makedev(6,0),L0.default_tty1_ops),r.mkdev("/dev/tty",r.makedev(5,0)),r.mkdev("/dev/tty1",r.makedev(6,0));var A=new Uint8Array(1024),a=0,B=()=>(a===0&&(pA(A),a=A.byteLength),A[--a]);r.createDevice("/dev","random",B),r.createDevice("/dev","urandom",B),r.mkdir("/dev/shm"),r.mkdir("/dev/shm/tmp")},createSpecialDirectories(){r.mkdir("/proc");var A=r.mkdir("/proc/self");r.mkdir("/proc/self/fd"),r.mount({mount(){var a=r.createNode(A,"fd",16895,73);return a.stream_ops={llseek:J.stream_ops.llseek},a.node_ops={lookup(B,D){var d=+D,h=r.getStreamChecked(d),G={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>h.path},id:d+1};return G.parent=G,G},readdir(){return Array.from(r.streams.entries()).filter(([B,D])=>D).map(([B,D])=>B.toString())}},a}},{},"/proc/self/fd")},createStandardStreams(A,a,B){A?r.createDevice("/dev","stdin",A):r.symlink("/dev/tty","/dev/stdin"),a?r.createDevice("/dev","stdout",null,a):r.symlink("/dev/tty","/dev/stdout"),B?r.createDevice("/dev","stderr",null,B):r.symlink("/dev/tty1","/dev/stderr");var D=r.open("/dev/stdin",0),d=r.open("/dev/stdout",1),h=r.open("/dev/stderr",1)},staticInit(){r.nameTable=new Array(4096),r.mount(J,{},"/"),r.createDefaultDirectories(),r.createDefaultDevices(),r.createSpecialDirectories(),r.filesystems={MEMFS:J,PROXYFS:E0}},init(A,a,B){r.initialized=!0,A??(A=o.stdin),a??(a=o.stdout),B??(B=o.stderr),r.createStandardStreams(A,a,B)},quit(){r.initialized=!1,Ar(0);for(var A of r.streams)A&&r.close(A)},findObject(A,a){var B=r.analyzePath(A,a);return B.exists?B.object:null},analyzePath(A,a){try{var B=r.lookupPath(A,{follow:!a});A=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=r.lookupPath(A,{parent:!0});D.parentExists=!0,D.parentPath=B.path,D.parentObject=B.node,D.name=A0.basename(A),B=r.lookupPath(A,{follow:!a}),D.exists=!0,D.path=B.path,D.object=B.node,D.name=B.node.name,D.isRoot=B.path==="/"}catch(d){D.error=d.errno}return D},createPath(A,a,B,D){A=typeof A=="string"?A:r.getPath(A);for(var d=a.split("/").reverse();d.length;){var h=d.pop();if(h){var G=A0.join2(A,h);try{r.mkdir(G)}catch(R){if(R.errno!=20)throw R}A=G}}return G},createFile(A,a,B,D,d){var h=A0.join2(typeof A=="string"?A:r.getPath(A),a),G=Kx(D,d);return r.create(h,G)},createDataFile(A,a,B,D,d,h){var G=a;A&&(A=typeof A=="string"?A:r.getPath(A),G=a?A0.join2(A,a):A);var R=Kx(D,d),W=r.create(G,R);if(B){B=mA(B),r.chmod(W,R|146);var a0=r.open(W,577);r.write(a0,B,0,B.length,0,h),r.close(a0),r.chmod(W,R)}},createDevice(A,a,B,D){var d,h=A0.join2(typeof A=="string"?A:r.getPath(A),a),G=Kx(!!B,!!D);(d=r.createDevice).major??(d.major=64);var R=r.makedev(r.createDevice.major++,0);return r.registerDevice(R,{open(W){W.seekable=!1},close(W){D?.buffer?.length&&D(10)},read(W,a0,g0,j0,C0){for(var n0=0,$0=0;$0<j0;$0++){var O0;try{O0=B()}catch{throw new r.ErrnoError(29)}if(O0===void 0&&n0===0)throw new r.ErrnoError(6);if(O0==null)break;n0++,a0[g0+$0]=O0}return n0&&(W.node.atime=Date.now()),n0},write(W,a0,g0,j0,C0){for(var n0=0;n0<j0;n0++)try{D(a0[g0+n0])}catch{throw new r.ErrnoError(29)}return j0&&(W.node.mtime=W.node.ctime=Date.now()),n0}}),r.mkdev(h,G,R)},forceLoadFile(A){if(A.isDevice||A.isFolder||A.link||A.contents)return!0;if(globalThis.XMLHttpRequest)o0("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=y(A.url)}catch{throw new r.ErrnoError(29)}},createLazyFile(A,a,B,D,d){class h{constructor(){N0(this,"lengthKnown",!1),N0(this,"chunks",[])}get(C0){if(!(C0>this.length-1||C0<0)){var n0=C0%this.chunkSize,$0=C0/this.chunkSize|0;return this.getter($0)[n0]}}setDataGetter(C0){this.getter=C0}cacheLength(){var C0=new XMLHttpRequest;C0.open("HEAD",B,!1),C0.send(null),C0.status>=200&&C0.status<300||C0.status===304||o0("Couldn't load "+B+". Status: "+C0.status);var n0=Number(C0.getResponseHeader("Content-length")),$0,O0=($0=C0.getResponseHeader("Accept-Ranges"))&&$0==="bytes",Y0=($0=C0.getResponseHeader("Content-Encoding"))&&$0==="gzip",xx=1024*1024;O0||(xx=n0);var Ax=(nx,Gx)=>{nx>Gx&&o0("invalid range ("+nx+", "+Gx+") or no bytes requested!"),Gx>n0-1&&o0("only "+n0+" bytes available! programmer error!");var G0=new XMLHttpRequest;return G0.open("GET",B,!1),n0!==xx&&G0.setRequestHeader("Range","bytes="+nx+"-"+Gx),G0.responseType="arraybuffer",G0.overrideMimeType&&G0.overrideMimeType("text/plain; charset=x-user-defined"),G0.send(null),G0.status>=200&&G0.status<300||G0.status===304||o0("Couldn't load "+B+". Status: "+G0.status),G0.response!==void 0?new Uint8Array(G0.response||[]):Jx(G0.responseText||"",!0)},Yx=this;Yx.setDataGetter(nx=>{var Gx=nx*xx,G0=(nx+1)*xx-1;return G0=Math.min(G0,n0-1),typeof Yx.chunks[nx]>"u"&&(Yx.chunks[nx]=Ax(Gx,G0)),typeof Yx.chunks[nx]>"u"&&o0("doXHR failed!"),Yx.chunks[nx]}),(Y0||!n0)&&(xx=n0=1,n0=this.getter(0).length,xx=n0,g("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n0,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){c||o0("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var G=new h,R={isDevice:!1,contents:G}}else var R={isDevice:!1,url:B};var W=r.createFile(A,a,R,D,d);R.contents?W.contents=R.contents:R.url&&(W.contents=null,W.url=R.url),Object.defineProperties(W,{usedBytes:{get:function(){return this.contents.length}}});var a0={};for(let[j0,C0]of Object.entries(W.stream_ops))a0[j0]=(...n0)=>(r.forceLoadFile(W),C0(...n0));function g0(j0,C0,n0,$0,O0){var Y0=j0.node.contents;if(O0>=Y0.length)return 0;var xx=Math.min(Y0.length-O0,$0);if(Y0.slice)for(var Ax=0;Ax<xx;Ax++)C0[n0+Ax]=Y0[O0+Ax];else for(var Ax=0;Ax<xx;Ax++)C0[n0+Ax]=Y0.get(O0+Ax);return xx}return a0.read=(j0,C0,n0,$0,O0)=>(r.forceLoadFile(W),g0(j0,C0,n0,$0,O0)),a0.mmap=(j0,C0,n0,$0,O0)=>{r.forceLoadFile(W);var Y0=uA(C0);if(!Y0)throw new r.ErrnoError(48);return g0(j0,q0,Y0,C0,n0),{ptr:Y0,allocated:!0}},W.stream_ops=a0,W}},s0={currentUmask:18,calculateAt(A,a,B){if(A0.isAbs(a))return a;var D;if(A===-100)D=r.cwd();else{var d=s0.getStreamFromFD(A);D=d.path}if(a.length==0){if(!B)throw new r.ErrnoError(44);return D}return D+"/"+a},writeStat(A,a){Q[A>>2]=a.dev,Q[A+4>>2]=a.mode,Q[A+8>>2]=a.nlink,Q[A+12>>2]=a.uid,Q[A+16>>2]=a.gid,Q[A+20>>2]=a.rdev,h0[A+24>>3]=BigInt(a.size),m0[A+32>>2]=4096,m0[A+36>>2]=a.blocks;var B=a.atime.getTime(),D=a.mtime.getTime(),d=a.ctime.getTime();return h0[A+40>>3]=BigInt(Math.floor(B/1e3)),Q[A+48>>2]=B%1e3*1e3*1e3,h0[A+56>>3]=BigInt(Math.floor(D/1e3)),Q[A+64>>2]=D%1e3*1e3*1e3,h0[A+72>>3]=BigInt(Math.floor(d/1e3)),Q[A+80>>2]=d%1e3*1e3*1e3,h0[A+88>>3]=BigInt(a.ino),0},writeStatFs(A,a){Q[A+4>>2]=a.bsize,Q[A+60>>2]=a.bsize,h0[A+8>>3]=BigInt(a.blocks),h0[A+16>>3]=BigInt(a.bfree),h0[A+24>>3]=BigInt(a.bavail),h0[A+32>>3]=BigInt(a.files),h0[A+40>>3]=BigInt(a.ffree),Q[A+48>>2]=a.fsid,Q[A+64>>2]=a.flags,Q[A+56>>2]=a.namelen},doMsync(A,a,B,D,d){if(!r.isFile(a.node.mode))throw new r.ErrnoError(43);if(D&2)return 0;var h=Bx.slice(A,A+B);r.msync(a,h,d,B,D)},getStreamFromFD(A){var a=r.getStreamChecked(A);return a},varargs:void 0,getStr(A){var a=eA(A);return a}};function Lr(A,a,B){s0.varargs=B;try{var D=s0.getStreamFromFD(A);switch(a){case 0:{var d=wx();if(d<0)return-28;for(;r.streams[d];)d++;var h;return h=r.dupStream(D,d),h.fd}case 1:case 2:return 0;case 3:return D.flags;case 4:{var d=wx(),G=289792;return D.flags=D.flags&~G|d&G,0}case 12:{var d=Nx(),R=0;return kx[d+R>>1]=2,0}case 13:case 14:return 0}return-28}catch(W){if(typeof r>"u"||W.name!=="ErrnoError")throw W;return-W.errno}}function tA(A,a,B){s0.varargs=B;try{var D=s0.getStreamFromFD(A);switch(a){case 21509:return D.tty?0:-59;case 21505:{if(!D.tty)return-59;if(D.tty.ops.ioctl_tcgets){var d=D.tty.ops.ioctl_tcgets(D),h=Nx();m0[h>>2]=d.c_iflag||0,m0[h+4>>2]=d.c_oflag||0,m0[h+8>>2]=d.c_cflag||0,m0[h+12>>2]=d.c_lflag||0;for(var G=0;G<32;G++)q0[h+G+17]=d.c_cc[G]||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 h=Nx(),R=m0[h>>2],W=m0[h+4>>2],a0=m0[h+8>>2],g0=m0[h+12>>2],j0=[],G=0;G<32;G++)j0.push(q0[h+G+17]);return D.tty.ops.ioctl_tcsets(D.tty,a,{c_iflag:R,c_oflag:W,c_cflag:a0,c_lflag:g0,c_cc:j0})}return 0}case 21519:{if(!D.tty)return-59;var h=Nx();return m0[h>>2]=0,0}case 21520:return D.tty?-28:-59;case 21537:case 21531:{var h=Nx();return r.ioctl(D,a,h)}case 21523:{if(!D.tty)return-59;if(D.tty.ops.ioctl_tiocgwinsz){var C0=D.tty.ops.ioctl_tiocgwinsz(D.tty),h=Nx();kx[h>>1]=C0[0],kx[h+2>>1]=C0[1]}return 0}case 21524:return D.tty?0:-59;case 21515:return D.tty?0:-59;default:return-28}}catch(n0){if(typeof r>"u"||n0.name!=="ErrnoError")throw n0;return-n0.errno}}function Lx(A,a,B,D){s0.varargs=D;try{a=s0.getStr(a),a=s0.calculateAt(A,a);var d=D?wx():0;return B&64&&(d&=~s0.currentUmask),r.open(a,B,d).fd}catch(h){if(typeof r>"u"||h.name!=="ErrnoError")throw h;return-h.errno}}var Gr=()=>2147483648,wA=(A,a)=>Math.ceil(A/a)*a,Tr=A=>{var a=Wx.buffer.byteLength,B=(A-a+65535)/65536|0;try{return Wx.grow(B),M(),1}catch{}},Mr=A=>{var a=Bx.length;A>>>=0;var B=Gr();if(A>B)return!1;for(var D=1;D<=4;D*=2){var d=a*(1+.2/D);d=Math.min(d,A+100663296);var h=Math.min(B,wA(Math.max(A,d),65536)),G=Tr(h);if(G)return!0}return!1};function Ir(A){try{var a=s0.getStreamFromFD(A);return r.close(a),0}catch(B){if(typeof r>"u"||B.name!=="ErrnoError")throw B;return B.errno}}var Sr=(A,a,B,D)=>{for(var d=0,h=0;h<B;h++){var G=Q[a>>2],R=Q[a+4>>2];a+=8;var W=r.read(A,q0,G,R,D);if(W<0)return-1;if(d+=W,W<R)break;typeof D<"u"&&(D+=W)}return d};function Rr(A,a,B,D){try{var d=s0.getStreamFromFD(A),h=Sr(d,a,B);return Q[D>>2]=h,0}catch(G){if(typeof r>"u"||G.name!=="ErrnoError")throw G;return G.errno}}var Or=9007199254740992,Ur=-9007199254740992,Hr=A=>A<Ur||A>Or?NaN:Number(A);function zr(A,a,B,D){a=Hr(a);try{if(isNaN(a))return 22;var d=s0.getStreamFromFD(A);return r.llseek(d,a,B),h0[D>>3]=BigInt(d.position),d.getdents&&a===0&&B===0&&(d.getdents=null),0}catch(h){if(typeof r>"u"||h.name!=="ErrnoError")throw h;return h.errno}}var Jr=(A,a,B,D)=>{for(var d=0,h=0;h<B;h++){var G=Q[a>>2],R=Q[a+4>>2];a+=8;var W=r.write(A,q0,G,R,D);if(W<0)return-1;if(d+=W,W<R)break;typeof D<"u"&&(D+=W)}return d};function Kr(A,a,B,D){try{var d=s0.getStreamFromFD(A),h=Jr(d,a,B);return Q[D>>2]=h,0}catch(G){if(typeof r>"u"||G.name!=="ErrnoError")throw G;return G.errno}}var Vr=0,XA=()=>jA||Vr>0,Wr=A=>{$=A,XA()||(o.onExit?.(A),T=!0),k(A,new Ux(A))},YA=(A,a)=>{$=A,XA()||d0(),Wr(A)},Xr=A=>{if(A instanceof Ux||A=="unwind")return $;k(1,A)},Yr=(A,a,B)=>bA(A,Bx,a,B),ZA=A=>_A(A),Zr=A=>{var a=zx(A)+1,B=ZA(a);return Yr(A,B,a),B},Qr=(...A)=>r.createPath(...A),xe=(...A)=>r.unlink(...A),Ae=(...A)=>r.createLazyFile(...A),re=(...A)=>r.createDevice(...A);if(r.createPreloadedFile=Nr,r.preloadFile=Vx,r.staticInit(),o.noExitRuntime&&(jA=o.noExitRuntime),o.preloadPlugins&&(yA=o.preloadPlugins),o.print&&(g=o.print),o.printErr&&(w=o.printErr),o.wasmBinary&&(q=o.wasmBinary),o.arguments&&(b=o.arguments),o.thisProgram&&(p=o.thisProgram),o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.shift()();o.callMain=R0,o.addRunDependency=kA,o.removeRunDependency=gA,o.FS_preloadFile=Vx,o.FS_unlink=xe,o.FS_createPath=Qr,o.FS_createDevice=re,o.FS=r,o.FS_createDataFile=hA,o.FS_createLazyFile=Ae,o.PROXYFS=E0;var QA,xr,Ar,ee,_A,te,ne,ie,Wx;function Fe(A){QA=o._main=A.__main_argc_argv,xr=A.__funcs_on_exit,Ar=A.fflush,ee=A._emscripten_stack_restore,_A=A._emscripten_stack_alloc,te=A.emscripten_stack_get_current,ne=Wx=A.memory,ie=A.__indirect_function_table}var $A={__assert_fail:Px,__syscall_fcntl64:Lr,__syscall_ioctl:tA,__syscall_openat:Lx,emscripten_resize_heap:Mr,fd_close:Ir,fd_read:Rr,fd_seek:zr,fd_write:Kr};function R0(A=[]){var a=QA;A.unshift(p);var B=A.length,D=ZA((B+1)*4),d=D;for(var h of A)Q[d>>2]=Zr(h),d+=4;Q[d>>2]=0;try{var G=a(B,D);return YA(G,!0),G}catch(R){return Xr(R)}}function qA(A=b){if(W0>0){Cx=qA;return}if(r0(),W0>0){Cx=qA;return}function a(){if(o.calledRun=!0,!T){x0(),S?.(o),o.onRuntimeInitialized?.();var B=o.noInitialRun||!0;B||R0(A),f0()}}o.setStatus?(o.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>o.setStatus(""),1),a()},1)):a()}var Xx;return Xx=await rA(),qA(),Y?E=o:E=new Promise((A,a)=>{S=A,z=a}),E}})();typeof t=="object"&&typeof e=="object"?(e.exports=F,e.exports.default=F):typeof define=="function"&&define.amd&&define([],()=>F)}}),Rt={};pF(Rt,{createPawnCC:()=>kF,createPawnDbg:()=>yF});Ot.exports=bF(Rt);var hF=St(uF(),1),gF=St(mF(),1),kF=hF.default,yF=gF.default});var bs={};_n(bs,{APM:()=>t0,DDE:()=>vx,DDE_Core:()=>p0,DFILES:()=>JA,DLO:()=>zA,DefaultFiles:()=>V,Dependencies:()=>_0,DeviceProfiles:()=>sr,Diagnostics:()=>LA,ENV:()=>ye,Globals:()=>I0,Helper:()=>F0,HttpMethod:()=>_e,Library:()=>Zx,Log:()=>we,Manifest:()=>O,MyDatanetClient:()=>pr,Package:()=>V0,Registry:()=>y0,build:()=>cs,buildDevelopmentInstallInfo:()=>ln,generateDevApmId:()=>$e,install:()=>ls,pack:()=>ps,publish:()=>js});module.exports=$n(bs);var tx=require("vscode-uri");var VA=require("vscode-uri");var qn=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 er(t,e=0){let F=~~e^-1;for(let i=0;i<t.length;i++)F=F>>>8^qn[(F^t[i])&255];return(F^-1)>>>0}var ms=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]),hs=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 F0;(_=>{function t(u,y){let[P,g]=y,{line:w,col:q}=u.linePos(P);return{line:Number(w)-1,startCharacter:q-1,endCharacter:q+(g-P)}}_.yamlRangeToLineInformation=t;let e=new TextEncoder;function F(u){return er(e.encode(u)).toString(16)}_.generateHashForLibraryName=F;function i(u){return er(e.encode(u)).toString(16)}_.generateHashForFilePath=i;function s(u){return er(u).toString(16).toUpperCase().padStart(8,"0")}_.generateCRC32ForFileContent=s;function E(u){try{let y=null;return u?.type==="Buffer"?y=Uint8Array.from(u.data):y=u,new TextDecoder("utf8").decode(y)}catch{return""}}_.convertBlobToString=E;function o(u=""){return u.replace(/\r\n|\n\r|\r/g,`
1528
- `)}_.normalizeLF=o;function C(u){try{let y=E(u);return o(y).split(`
1529
- `)}catch{return[]}}_.convertBlobToStringArray=C,_.isNumeric=u=>!Array.isArray(u)&&u-parseFloat(u)+1>=0;function j(u){let y="",P=u.byteLength;for(let g=0;g<P;g++)y+=String.fromCharCode(u[g]);return btoa(y)}_.bufferToBase64=j;function b(u,y){let P=`${u}`.match(/\{\d*(index)(\+\d*)?}/g);if(P){let g=u;return P.forEach(w=>{let q=w.replace(/\+0$/,""),T=q.match(/index/)?.[0];if(T){let $=q.slice(1,-1).split(T)[1],L=parseInt($)||0;g=g.replace(w,`${y+L}`)}}),g}else return u}_.patchValueWithArrayInfo=b;let p={};function k(u,y,P){let g=p[u];g&&clearTimeout(g.timer),p[u]={timer:setTimeout(()=>{delete p[u],P()},y),handler:P}}_.defer=k})(F0||={});var Fn=require("image-dimensions"),sn=require("file-type-checker");var Gs=require("cross-fetch/polyfill"),Ue=J0(require("openapi-fetch"));var Tx=require("vscode-uri");var K0="dist/",Ne="dde/",ae="dlo/",Le=".studio/",Ge="dfiles/",V;(C=>{C.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 e=`${Le}auto/`,F=`${e}dlo/`,i=`${e}dde/`;C.filePaths={studio:{initFile:`${e}.init`,auto:{path:e,dlo:{path:F,autoInc:`${F}${C.fileNames.autoInc}`,defaultInc:`${F}${C.fileNames.defaultInc}`,autoUplinkInc:`${F}${C.fileNames.autoUplinkInc}`,autoLocalDataInc:`${F}${C.fileNames.autoLocalDataInc}`,autoDdeInc:`${F}${C.fileNames.autoDdeInc}`,mainDdeInc:`${F}${C.fileNames.mainDdeInc}`,legacyAutoInc:`${F}${C.fileNames.legacyAutoInc}`,legacyAutoDdeInc:`${F}${C.fileNames.legacyAutoDdeInc}`,legacyAutoUplinkInc:`${F}${C.fileNames.legacyAutoUplinkInc}`,cfg:`${F}${C.fileNames.dloCfg}`},dde:{path:i,historyJson:`${i}${C.fileNames.historyJson}`}},libdeps:`${Le}libdeps/`},dist:{path:K0,dloPath:`${K0}dlo/`,mainAmxPath:`${K0}dlo/${C.fileNames.mainAmx}`,mainAmxReportPath:`${K0}dlo/${C.fileNames.mainAmxReport}`,ddeXmlPath:`${K0}dde/${C.fileNames.ddeXml}`,ddeApiPath:`${K0}api/`,ddeApi:`${K0}api/${C.fileNames.ddeOpenApi}`,historyJson:`${K0}dde/${C.fileNames.historyJson}`,povPath:`${K0}pov`,povDetailsPath:`${K0}pov/details`,dfilesPath:`${K0}dfiles`,dfilesProperties:`${K0}dfiles/properties.json`,bloPath:`${K0}blo`,reportTemplate:`${K0}/${C.fileNames.reportTemplate}`,definesTs:`${K0}defines.ts`,definesAppTs:`${K0}defines.app.ts`},dlo:{path:ae,mainDLO:`${ae}main.dlo`,mainINI:`${ae}main.ini`},dde:{path:Ne,mainDDE:`${Ne}main.dde`},dfiles:{path:Ge,mainDFILES:`${Ge}/main.dfiles`},appIni:"app.ini",defaultsIni:"defaults.ini"},C.readme=c=>`# ${c} README
1526
+ \0A\x80\v\vp\0\0D\0\0\0`)}function Q0(A){return A}async function Nx(A){return A}async function zx(A,s){try{var B=await Nx(A),D=await WebAssembly.instantiate(B,s);return D}catch(d){G(`failed to asynchronously prepare wasm: ${d}`),o0(d)}}async function xx(A,s,B){return zx(s,B)}function Lx(){var A={env:$A,wasi_snapshot_preview1:$A};return A}async function tA(){function A(h,T){return Qx=h.exports,Fe(Qx),L(),Qx}function s(h){return A(h.instance)}var B=Lx();if(o.instantiateWasm)return new Promise((h,T)=>{o.instantiateWasm(B,(O,Y)=>{h(A(O,Y))})});u0??(u0=M0());var D=await xx(M,u0,B),d=s(D);return d}class Jx{constructor(s){N0(this,"name","ExitStatus"),this.message=`Program terminated with exit(${s})`,this.status=s}}var yx,m0,h0,q0,ur,br,mr,A0,hr,Cx,lA=A=>{for(;A.length>0;)A.shift()(o)},cA=[],gr=A=>cA.push(A),dA=[],kr=A=>dA.push(A),jA=!1,S0=globalThis.TextDecoder&&new TextDecoder,z0=(A,s,B,D)=>{var d=s+B;if(D)return d;for(;A[s]&&!(s>=d);)++s;return s},wx=(A,s=0,B,D)=>{var d=z0(A,s,B,D);if(d-s>16&&A.buffer&&S0)return S0.decode(A.subarray(s,d));for(var h="";s<d;){var T=A[s++];if(!(T&128)){h+=String.fromCharCode(T);continue}var O=A[s++]&63;if((T&224)==192){h+=String.fromCharCode((T&31)<<6|O);continue}var Y=A[s++]&63;if((T&240)==224?T=(T&15)<<12|O<<6|Y:T=(T&7)<<18|O<<12|Y<<6|A[s++]&63,T<65536)h+=String.fromCharCode(T);else{var a0=T-65536;h+=String.fromCharCode(55296|a0>>10,56320|a0&1023)}}return h},nA=(A,s,B)=>A?wx(Cx,A,s,B):"",Gx=(A,s,B,D)=>o0(`Assertion failed: ${nA(A)}, at: `+[s?nA(s):"unknown filename",B,D?nA(D):"unknown function"]),_x=()=>{var A=m0[+s0.varargs>>2];return s0.varargs+=4,A},Tx=_x,r0={isAbs:A=>A.charAt(0)==="/",splitPath:A=>{var s=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return s.exec(A).slice(1)},normalizeArray:(A,s)=>{for(var B=0,D=A.length-1;D>=0;D--){var d=A[D];d==="."?A.splice(D,1):d===".."?(A.splice(D,1),B++):B&&(A.splice(D,1),B--)}if(s)for(;B;B--)A.unshift("..");return A},normalize:A=>{var s=r0.isAbs(A),B=A.slice(-1)==="/";return A=r0.normalizeArray(A.split("/").filter(D=>!!D),!s).join("/"),!A&&!s&&(A="."),A&&B&&(A+="/"),(s?"/":"")+A},dirname:A=>{var s=r0.splitPath(A),B=s[0],D=s[1];return!B&&!D?".":(D&&(D=D.slice(0,-1)),B+D)},basename:A=>A&&A.match(/([^\/]+|\/)\/*$/)[1],join:(...A)=>r0.normalize(A.join("/")),join2:(A,s)=>r0.normalize(A+"/"+s)},yr=()=>{if(j){var A=require("crypto");return s=>A.randomFillSync(s)}return s=>(crypto.getRandomValues(s),0)},pA=A=>(pA=yr())(A),Ax={resolve:(...A)=>{for(var s="",B=!1,D=A.length-1;D>=-1&&!B;D--){var d=D>=0?A[D]:r.cwd();if(typeof d!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!d)return"";s=d+"/"+s,B=r0.isAbs(d)}return s=r0.normalizeArray(s.split("/").filter(h=>!!h),!B).join("/"),(B?"/":"")+s||"."},relative:(A,s)=>{A=Ax.resolve(A).slice(1),s=Ax.resolve(s).slice(1);function B(a0){for(var g0=0;g0<a0.length&&a0[g0]==="";g0++);for(var j0=a0.length-1;j0>=0&&a0[j0]==="";j0--);return g0>j0?[]:a0.slice(g0,j0-g0+1)}for(var D=B(A.split("/")),d=B(s.split("/")),h=Math.min(D.length,d.length),T=h,O=0;O<h;O++)if(D[O]!==d[O]){T=O;break}for(var Y=[],O=T;O<D.length;O++)Y.push("..");return Y=Y.concat(d.slice(T)),Y.join("/")}},Kx=[],Vx=A=>{for(var s=0,B=0;B<A.length;++B){var D=A.charCodeAt(B);D<=127?s++:D<=2047?s+=2:D>=55296&&D<=57343?(s+=4,++B):s+=3}return s},uA=(A,s,B,D)=>{if(!(D>0))return 0;for(var d=B,h=B+D-1,T=0;T<A.length;++T){var O=A.codePointAt(T);if(O<=127){if(B>=h)break;s[B++]=O}else if(O<=2047){if(B+1>=h)break;s[B++]=192|O>>6,s[B++]=128|O&63}else if(O<=65535){if(B+2>=h)break;s[B++]=224|O>>12,s[B++]=128|O>>6&63,s[B++]=128|O&63}else{if(B+3>=h)break;s[B++]=240|O>>18,s[B++]=128|O>>12&63,s[B++]=128|O>>6&63,s[B++]=128|O&63,T++}}return s[B]=0,B-d},Wx=(A,s,B)=>{var D=B>0?B:Vx(A)+1,d=new Array(D),h=uA(A,d,0,d.length);return s&&(d.length=h),d},wr=()=>{if(!Kx.length){var A=null;if(j){var s=256,B=Buffer.alloc(s),D=0,d=process.stdin.fd;try{D=q.readSync(d,B,0,s)}catch(h){if(h.toString().includes("EOF"))D=0;else throw h}D>0&&(A=B.slice(0,D).toString("utf-8"))}else globalThis.window?.prompt&&(A=window.prompt("Input: "),A!==null&&(A+=`
1527
+ `));if(!A)return null;Kx=Wx(A,!0)}return Kx.shift()},L0={ttys:[],init(){},shutdown(){},register(A,s){L0.ttys[A]={input:[],output:[],ops:s},r.registerDevice(A,L0.stream_ops)},stream_ops:{open(A){var s=L0.ttys[A.node.rdev];if(!s)throw new r.ErrnoError(43);A.tty=s,A.seekable=!1},close(A){A.tty.ops.fsync(A.tty)},fsync(A){A.tty.ops.fsync(A.tty)},read(A,s,B,D,d){if(!A.tty||!A.tty.ops.get_char)throw new r.ErrnoError(60);for(var h=0,T=0;T<D;T++){var O;try{O=A.tty.ops.get_char(A.tty)}catch{throw new r.ErrnoError(29)}if(O===void 0&&h===0)throw new r.ErrnoError(6);if(O==null)break;h++,s[B+T]=O}return h&&(A.node.atime=Date.now()),h},write(A,s,B,D,d){if(!A.tty||!A.tty.ops.put_char)throw new r.ErrnoError(60);try{for(var h=0;h<D;h++)A.tty.ops.put_char(A.tty,s[B+h])}catch{throw new r.ErrnoError(29)}return D&&(A.node.mtime=A.node.ctime=Date.now()),h}},default_tty_ops:{get_char(A){return wr()},put_char(A,s){s===null||s===10?(N(wx(A.output)),A.output=[]):s!=0&&A.output.push(s)},fsync(A){A.output?.length>0&&(N(wx(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,s,B){return 0},ioctl_tiocgwinsz(A){return[24,80]}},default_tty1_ops:{put_char(A,s){s===null||s===10?(G(wx(A.output)),A.output=[]):s!=0&&A.output.push(s)},fsync(A){A.output?.length>0&&(G(wx(A.output)),A.output=[])}}},bA=A=>{o0()},V={ops_table:null,mount(A){return V.createNode(null,"/",16895,0)},createNode(A,s,B,D){if(r.isBlkdev(B)||r.isFIFO(B))throw new r.ErrnoError(63);V.ops_table||(V.ops_table={dir:{node:{getattr:V.node_ops.getattr,setattr:V.node_ops.setattr,lookup:V.node_ops.lookup,mknod:V.node_ops.mknod,rename:V.node_ops.rename,unlink:V.node_ops.unlink,rmdir:V.node_ops.rmdir,readdir:V.node_ops.readdir,symlink:V.node_ops.symlink},stream:{llseek:V.stream_ops.llseek}},file:{node:{getattr:V.node_ops.getattr,setattr:V.node_ops.setattr},stream:{llseek:V.stream_ops.llseek,read:V.stream_ops.read,write:V.stream_ops.write,mmap:V.stream_ops.mmap,msync:V.stream_ops.msync}},link:{node:{getattr:V.node_ops.getattr,setattr:V.node_ops.setattr,readlink:V.node_ops.readlink},stream:{}},chrdev:{node:{getattr:V.node_ops.getattr,setattr:V.node_ops.setattr},stream:r.chrdev_stream_ops}});var d=r.createNode(A,s,B,D);return r.isDir(d.mode)?(d.node_ops=V.ops_table.dir.node,d.stream_ops=V.ops_table.dir.stream,d.contents={}):r.isFile(d.mode)?(d.node_ops=V.ops_table.file.node,d.stream_ops=V.ops_table.file.stream,d.usedBytes=0,d.contents=V.emptyFileContents??(V.emptyFileContents=new Uint8Array(0))):r.isLink(d.mode)?(d.node_ops=V.ops_table.link.node,d.stream_ops=V.ops_table.link.stream):r.isChrdev(d.mode)&&(d.node_ops=V.ops_table.chrdev.node,d.stream_ops=V.ops_table.chrdev.stream),d.atime=d.mtime=d.ctime=Date.now(),A&&(A.contents[s]=d,A.atime=A.mtime=A.ctime=d.atime),d},getFileDataAsTypedArray(A){return A.contents.subarray(0,A.usedBytes)},expandFileStorage(A,s){var B=A.contents.length;if(!(B>=s)){var D=1024*1024;s=Math.max(s,B*(B<D?2:1.125)>>>0),B&&(s=Math.max(s,256));var d=V.getFileDataAsTypedArray(A);A.contents=new Uint8Array(s),A.contents.set(d)}},resizeFileStorage(A,s){if(A.usedBytes!=s){var B=A.contents;A.contents=new Uint8Array(s),A.contents.set(B.subarray(0,Math.min(s,A.usedBytes))),A.usedBytes=s}},node_ops:{getattr(A){var s={};return s.dev=r.isChrdev(A.mode)?A.id:1,s.ino=A.id,s.mode=A.mode,s.nlink=1,s.uid=0,s.gid=0,s.rdev=A.rdev,r.isDir(A.mode)?s.size=4096:r.isFile(A.mode)?s.size=A.usedBytes:r.isLink(A.mode)?s.size=A.link.length:s.size=0,s.atime=new Date(A.atime),s.mtime=new Date(A.mtime),s.ctime=new Date(A.ctime),s.blksize=4096,s.blocks=Math.ceil(s.size/s.blksize),s},setattr(A,s){for(let B of["mode","atime","mtime","ctime"])s[B]!=null&&(A[B]=s[B]);s.size!==void 0&&V.resizeFileStorage(A,s.size)},lookup(A,s){throw V.doesNotExistError||(V.doesNotExistError=new r.ErrnoError(44),V.doesNotExistError.stack="<generic error, no stack>"),V.doesNotExistError},mknod(A,s,B,D){return V.createNode(A,s,B,D)},rename(A,s,B){var D;try{D=r.lookupNode(s,B)}catch{}if(D){if(r.isDir(A.mode))for(var d in D.contents)throw new r.ErrnoError(55);r.hashRemoveNode(D)}delete A.parent.contents[A.name],s.contents[B]=A,A.name=B,s.ctime=s.mtime=A.parent.ctime=A.parent.mtime=Date.now()},unlink(A,s){delete A.contents[s],A.ctime=A.mtime=Date.now()},rmdir(A,s){var B=r.lookupNode(A,s);for(var D in B.contents)throw new r.ErrnoError(55);delete A.contents[s],A.ctime=A.mtime=Date.now()},readdir(A){return[".","..",...Object.keys(A.contents)]},symlink(A,s,B){var D=V.createNode(A,s,41471,0);return D.link=B,D},readlink(A){if(!r.isLink(A.mode))throw new r.ErrnoError(28);return A.link}},stream_ops:{read(A,s,B,D,d){var h=A.node.contents;if(d>=A.node.usedBytes)return 0;var T=Math.min(A.node.usedBytes-d,D);return s.set(h.subarray(d,d+T),B),T},write(A,s,B,D,d,h){if(s.buffer===q0.buffer&&(h=!1),!D)return 0;var T=A.node;return T.mtime=T.ctime=Date.now(),h?(T.contents=s.subarray(B,B+D),T.usedBytes=D):T.usedBytes===0&&d===0?(T.contents=s.slice(B,B+D),T.usedBytes=D):(V.expandFileStorage(T,d+D),T.contents.set(s.subarray(B,B+D),d),T.usedBytes=Math.max(T.usedBytes,d+D)),D},llseek(A,s,B){var D=s;if(B===1?D+=A.position:B===2&&r.isFile(A.node.mode)&&(D+=A.node.usedBytes),D<0)throw new r.ErrnoError(28);return D},mmap(A,s,B,D,d){if(!r.isFile(A.node.mode))throw new r.ErrnoError(43);var h,T,O=A.node.contents;if(!(d&2)&&O.buffer===q0.buffer)T=!1,h=O.byteOffset;else{if(T=!0,h=bA(s),!h)throw new r.ErrnoError(48);O&&((B>0||B+s<O.length)&&(O.subarray?O=O.subarray(B,B+s):O=Array.prototype.slice.call(O,B,B+s)),q0.set(O,h))}return{ptr:h,allocated:T}},msync(A,s,B,D,d){return V.stream_ops.write(A,s,0,D,B,!1),0}}},_r=A=>{if(typeof A!="string")return A;var s={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},B=s[A];if(typeof B>"u")throw new Error(`Unknown file open mode: ${A}`);return B},mA=A=>(typeof A=="string"&&(A=Wx(A,!0)),A.subarray||(A=new Uint8Array(A)),A),Xx=(A,s)=>{var B=0;return A&&(B|=365),s&&(B|=146),B},l0={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},E0={mount(A){return E0.createNode(null,"/",A.opts.fs.lstat(A.opts.root).mode,0)},createNode(A,s,B,D){if(!r.isDir(B)&&!r.isFile(B)&&!r.isLink(B))throw new r.ErrnoError(l0.EINVAL);var d=r.createNode(A,s,B);return d.node_ops=E0.node_ops,d.stream_ops=E0.stream_ops,d},realPath(A){for(var s=[];A.parent!==A;)s.push(A.name),A=A.parent;return s.push(A.mount.opts.root),s.reverse(),r0.join(...s)},node_ops:{getattr(A){var s=E0.realPath(A),B;try{B=A.mount.opts.fs.lstat(s)}catch(D){throw D.code?new r.ErrnoError(l0[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(A,s){var B=E0.realPath(A);try{if(s.mode!==void 0&&(A.mount.opts.fs.chmod(B,s.mode),A.mode=s.mode),s.atime||s.mtime){var D=new Date(s.atime||s.mtime),d=new Date(s.mtime||s.atime);A.mount.opts.fs.utime(B,D,d)}s.size!==void 0&&A.mount.opts.fs.truncate(B,s.size)}catch(h){throw h.code?new r.ErrnoError(l0[h.code]):h}},lookup(A,s){try{var B=r0.join2(E0.realPath(A),s),D=A.mount.opts.fs.lstat(B).mode,d=E0.createNode(A,s,D);return d}catch(h){throw h.code?new r.ErrnoError(l0[h.code]):h}},mknod(A,s,B,D){var d=E0.createNode(A,s,B,D),h=E0.realPath(d);try{r.isDir(d.mode)?d.mount.opts.fs.mkdir(h,d.mode):d.mount.opts.fs.writeFile(h,"",{mode:d.mode})}catch(T){throw T.code?new r.ErrnoError(l0[T.code]):T}return d},rename(A,s,B){var D=E0.realPath(A),d=r0.join2(E0.realPath(s),B);try{A.mount.opts.fs.rename(D,d),A.name=B}catch(h){throw h.code?new r.ErrnoError(l0[h.code]):h}},unlink(A,s){var B=r0.join2(E0.realPath(A),s);try{A.mount.opts.fs.unlink(B)}catch(D){throw D.code?new r.ErrnoError(l0[D.code]):D}},rmdir(A,s){var B=r0.join2(E0.realPath(A),s);try{A.mount.opts.fs.rmdir(B)}catch(D){throw D.code?new r.ErrnoError(l0[D.code]):D}},readdir(A){var s=E0.realPath(A);try{return A.mount.opts.fs.readdir(s)}catch(B){throw B.code?new r.ErrnoError(l0[B.code]):B}},symlink(A,s,B){var D=r0.join2(E0.realPath(A),s);try{A.mount.opts.fs.symlink(B,D)}catch(d){throw d.code?new r.ErrnoError(l0[d.code]):d}},readlink(A){var s=E0.realPath(A);try{return A.mount.opts.fs.readlink(s)}catch(B){throw B.code?new r.ErrnoError(l0[B.code]):B}}},stream_ops:{open(A){var s=E0.realPath(A.node);try{A.nfd=A.node.mount.opts.fs.open(s,A.flags)}catch(B){throw B.code?new r.ErrnoError(l0[B.code]):B}},close(A){try{A.node.mount.opts.fs.close(A.nfd)}catch(s){throw s.code?new r.ErrnoError(l0[s.code]):s}},read(A,s,B,D,d){try{return A.node.mount.opts.fs.read(A.nfd,s,B,D,d)}catch(h){throw h.code?new r.ErrnoError(l0[h.code]):h}},write(A,s,B,D,d){try{return A.node.mount.opts.fs.write(A.nfd,s,B,D,d)}catch(h){throw h.code?new r.ErrnoError(l0[h.code]):h}},llseek(A,s,B){var D=s;if(B===1)D+=A.position;else if(B===2&&r.isFile(A.node.mode))try{var d=A.node.node_ops.getattr(A.node);D+=d.size}catch(h){throw new r.ErrnoError(l0[h.code])}if(D<0)throw new r.ErrnoError(l0.EINVAL);return D}}},$r=async A=>{var s=await b(A);return new Uint8Array(s)},hA=(...A)=>r.createDataFile(...A),qr=A=>A,X0=0,fx=null,gA=A=>{if(X0--,o.monitorRunDependencies?.(X0),X0==0&&fx){var s=fx;fx=null,s()}},kA=A=>{X0++,o.monitorRunDependencies?.(X0)},yA=[],Pr=async(A,s)=>{typeof Browser<"u"&&Browser.init();for(var B of yA)if(B.canHandle(s))return B.handle(A,s);return A},Yx=async(A,s,B,D,d,h,T,O)=>{var Y=s?Ax.resolve(r0.join2(A,s)):A,a0=qr(`cp ${Y}`);kA(a0);try{var g0=B;typeof B=="string"&&(g0=await $r(B)),g0=await Pr(g0,Y),O?.(),h||hA(A,s,g0,D,d,T)}finally{gA(a0)}},Nr=(A,s,B,D,d,h,T,O,Y,a0)=>{Yx(A,s,B,D,d,O,Y,a0).then(h).catch(T)},r={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,filesystems:null,syncFSRequests:0,ErrnoError:class{constructor(A){N0(this,"name","ErrnoError"),this.errno=A}},FSStream:class{constructor(){N0(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,s,B,D){N0(this,"node_ops",{}),N0(this,"stream_ops",{}),N0(this,"readMode",365),N0(this,"writeMode",146),N0(this,"mounted",null),A||(A=this),this.parent=A,this.mount=A.mount,this.id=r.nextInode++,this.name=s,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(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 r.isDir(this.mode)}get isDevice(){return r.isChrdev(this.mode)}},lookupPath(A,s={}){if(!A)throw new r.ErrnoError(44);s.follow_mount??(s.follow_mount=!0),r0.isAbs(A)||(A=r.cwd()+"/"+A);x:for(var B=0;B<40;B++){for(var D=A.split("/").filter(a0=>!!a0),d=r.root,h="/",T=0;T<D.length;T++){var O=T===D.length-1;if(O&&s.parent)break;if(D[T]!=="."){if(D[T]===".."){if(h=r0.dirname(h),r.isRoot(d)){A=h+"/"+D.slice(T+1).join("/"),B--;continue x}else d=d.parent;continue}h=r0.join2(h,D[T]);try{d=r.lookupNode(d,D[T])}catch(a0){if(a0?.errno===44&&O&&s.noent_okay)return{path:h};throw a0}if(r.isMountpoint(d)&&(!O||s.follow_mount)&&(d=d.mounted.root),r.isLink(d.mode)&&(!O||s.follow)){if(!d.node_ops.readlink)throw new r.ErrnoError(52);var Y=d.node_ops.readlink(d);r0.isAbs(Y)||(Y=r0.dirname(h)+"/"+Y),A=Y+"/"+D.slice(T+1).join("/");continue x}}}return{path:h,node:d}}throw new r.ErrnoError(32)},getPath(A){for(var s;;){if(r.isRoot(A)){var B=A.mount.mountpoint;return s?B[B.length-1]!=="/"?`${B}/${s}`:B+s:B}s=s?`${A.name}/${s}`:A.name,A=A.parent}},hashName(A,s){for(var B=0,D=0;D<s.length;D++)B=(B<<5)-B+s.charCodeAt(D)|0;return(A+B>>>0)%r.nameTable.length},hashAddNode(A){var s=r.hashName(A.parent.id,A.name);A.name_next=r.nameTable[s],r.nameTable[s]=A},hashRemoveNode(A){var s=r.hashName(A.parent.id,A.name);if(r.nameTable[s]===A)r.nameTable[s]=A.name_next;else for(var B=r.nameTable[s];B;){if(B.name_next===A){B.name_next=A.name_next;break}B=B.name_next}},lookupNode(A,s){var B=r.mayLookup(A);if(B)throw new r.ErrnoError(B);for(var D=r.hashName(A.id,s),d=r.nameTable[D];d;d=d.name_next){var h=d.name;if(d.parent.id===A.id&&h===s)return d}return r.lookup(A,s)},createNode(A,s,B,D){var d=new r.FSNode(A,s,B,D);return r.hashAddNode(d),d},destroyNode(A){r.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 s=["r","w","rw"][A&3];return A&512&&(s+="w"),s},nodePermissions(A,s){return r.ignorePermissions?0:s.includes("r")&&!(A.mode&292)||s.includes("w")&&!(A.mode&146)||s.includes("x")&&!(A.mode&73)?2:0},mayLookup(A){if(!r.isDir(A.mode))return 54;var s=r.nodePermissions(A,"x");return s||(A.node_ops.lookup?0:2)},mayCreate(A,s){if(!r.isDir(A.mode))return 54;try{var B=r.lookupNode(A,s);return 20}catch{}return r.nodePermissions(A,"wx")},mayDelete(A,s,B){var D;try{D=r.lookupNode(A,s)}catch(h){return h.errno}var d=r.nodePermissions(A,"wx");if(d)return d;if(B){if(!r.isDir(D.mode))return 54;if(r.isRoot(D)||r.getPath(D)===r.cwd())return 10}else if(r.isDir(D.mode))return 31;return 0},mayOpen(A,s){if(!A)return 44;if(r.isLink(A.mode))return 32;var B=r.flagsToPermissionString(s);return r.isDir(A.mode)&&(B!=="r"||s&576)?31:r.nodePermissions(A,B)},checkOpExists(A,s){if(!A)throw new r.ErrnoError(s);return A},MAX_OPEN_FDS:4096,nextfd(){for(var A=0;A<=r.MAX_OPEN_FDS;A++)if(!r.streams[A])return A;throw new r.ErrnoError(33)},getStreamChecked(A){var s=r.getStream(A);if(!s)throw new r.ErrnoError(8);return s},getStream:A=>r.streams[A],createStream(A,s=-1){return A=Object.assign(new r.FSStream,A),s==-1&&(s=r.nextfd()),A.fd=s,r.streams[s]=A,A},closeStream(A){r.streams[A]=null},dupStream(A,s=-1){var B=r.createStream(A,s);return B.stream_ops?.dup?.(B),B},doSetAttr(A,s,B){var D=A?.stream_ops.setattr,d=D?A:s;D??(D=s.node_ops.setattr),r.checkOpExists(D,63);try{D(d,B)}catch(h){throw h instanceof RangeError?new r.ErrnoError(22):h}},chrdev_stream_ops:{open(A){var s=r.getDevice(A.node.rdev);A.stream_ops=s.stream_ops,A.stream_ops.open?.(A)},llseek(){throw new r.ErrnoError(70)}},major:A=>A>>8,minor:A=>A&255,makedev:(A,s)=>A<<8|s,registerDevice(A,s){r.devices[A]={stream_ops:s}},getDevice:A=>r.devices[A],getMounts(A){for(var s=[],B=[A];B.length;){var D=B.pop();s.push(D),B.push(...D.mounts)}return s},syncfs(A,s){typeof A=="function"&&(s=A,A=!1),r.syncFSRequests++,r.syncFSRequests>1&&G(`warning: ${r.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var B=r.getMounts(r.root.mount),D=0;function d(O){return r.syncFSRequests--,s(O)}function h(O){if(O)return h.errored?void 0:(h.errored=!0,d(O));++D>=B.length&&d(null)}for(var T of B)T.type.syncfs?T.type.syncfs(T,A,h):h(null)},mount(A,s,B){var D=B==="/",d=!B,h;if(D&&r.root)throw new r.ErrnoError(10);if(!D&&!d){var T=r.lookupPath(B,{follow_mount:!1});if(B=T.path,h=T.node,r.isMountpoint(h))throw new r.ErrnoError(10);if(!r.isDir(h.mode))throw new r.ErrnoError(54)}var O={type:A,opts:s,mountpoint:B,mounts:[]},Y=A.mount(O);return Y.mount=O,O.root=Y,D?r.root=Y:h&&(h.mounted=O,h.mount&&h.mount.mounts.push(O)),Y},unmount(A){var s=r.lookupPath(A,{follow_mount:!1});if(!r.isMountpoint(s.node))throw new r.ErrnoError(28);var B=s.node,D=B.mounted,d=r.getMounts(D);for(var[h,T]of Object.entries(r.nameTable))for(;T;){var O=T.name_next;d.includes(T.mount)&&r.destroyNode(T),T=O}B.mounted=null;var Y=B.mount.mounts.indexOf(D);B.mount.mounts.splice(Y,1)},lookup(A,s){return A.node_ops.lookup(A,s)},mknod(A,s,B){var D=r.lookupPath(A,{parent:!0}),d=D.node,h=r0.basename(A);if(!h)throw new r.ErrnoError(28);if(h==="."||h==="..")throw new r.ErrnoError(20);var T=r.mayCreate(d,h);if(T)throw new r.ErrnoError(T);if(!d.node_ops.mknod)throw new r.ErrnoError(63);return d.node_ops.mknod(d,h,s,B)},statfs(A){return r.statfsNode(r.lookupPath(A,{follow:!0}).node)},statfsStream(A){return r.statfsNode(A.node)},statfsNode(A){var s={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:r.nextInode,ffree:r.nextInode-1,fsid:42,flags:2,namelen:255};return A.node_ops.statfs&&Object.assign(s,A.node_ops.statfs(A.mount.opts.root)),s},create(A,s=438){return s&=4095,s|=32768,r.mknod(A,s,0)},mkdir(A,s=511){return s&=1023,s|=16384,r.mknod(A,s,0)},mkdirTree(A,s){var B=A.split("/"),D="";for(var d of B)if(d){(D||r0.isAbs(A))&&(D+="/"),D+=d;try{r.mkdir(D,s)}catch(h){if(h.errno!=20)throw h}}},mkdev(A,s,B){return typeof B>"u"&&(B=s,s=438),s|=8192,r.mknod(A,s,B)},symlink(A,s){if(!Ax.resolve(A))throw new r.ErrnoError(44);var B=r.lookupPath(s,{parent:!0}),D=B.node;if(!D)throw new r.ErrnoError(44);var d=r0.basename(s),h=r.mayCreate(D,d);if(h)throw new r.ErrnoError(h);if(!D.node_ops.symlink)throw new r.ErrnoError(63);return D.node_ops.symlink(D,d,A)},rename(A,s){var B=r0.dirname(A),D=r0.dirname(s),d=r0.basename(A),h=r0.basename(s),T,O,Y;if(T=r.lookupPath(A,{parent:!0}),O=T.node,T=r.lookupPath(s,{parent:!0}),Y=T.node,!O||!Y)throw new r.ErrnoError(44);if(O.mount!==Y.mount)throw new r.ErrnoError(75);var a0=r.lookupNode(O,d),g0=Ax.relative(A,D);if(g0.charAt(0)!==".")throw new r.ErrnoError(28);if(g0=Ax.relative(s,B),g0.charAt(0)!==".")throw new r.ErrnoError(55);var j0;try{j0=r.lookupNode(Y,h)}catch{}if(a0!==j0){var C0=r.isDir(a0.mode),n0=r.mayDelete(O,d,C0);if(n0)throw new r.ErrnoError(n0);if(n0=j0?r.mayDelete(Y,h,C0):r.mayCreate(Y,h),n0)throw new r.ErrnoError(n0);if(!O.node_ops.rename)throw new r.ErrnoError(63);if(r.isMountpoint(a0)||j0&&r.isMountpoint(j0))throw new r.ErrnoError(10);if(Y!==O&&(n0=r.nodePermissions(O,"w"),n0))throw new r.ErrnoError(n0);r.hashRemoveNode(a0);try{O.node_ops.rename(a0,Y,h),a0.parent=Y}catch($0){throw $0}finally{r.hashAddNode(a0)}}},rmdir(A){var s=r.lookupPath(A,{parent:!0}),B=s.node,D=r0.basename(A),d=r.lookupNode(B,D),h=r.mayDelete(B,D,!0);if(h)throw new r.ErrnoError(h);if(!B.node_ops.rmdir)throw new r.ErrnoError(63);if(r.isMountpoint(d))throw new r.ErrnoError(10);B.node_ops.rmdir(B,D),r.destroyNode(d)},readdir(A){var s=r.lookupPath(A,{follow:!0}),B=s.node,D=r.checkOpExists(B.node_ops.readdir,54);return D(B)},unlink(A){var s=r.lookupPath(A,{parent:!0}),B=s.node;if(!B)throw new r.ErrnoError(44);var D=r0.basename(A),d=r.lookupNode(B,D),h=r.mayDelete(B,D,!1);if(h)throw new r.ErrnoError(h);if(!B.node_ops.unlink)throw new r.ErrnoError(63);if(r.isMountpoint(d))throw new r.ErrnoError(10);B.node_ops.unlink(B,D),r.destroyNode(d)},readlink(A){var s=r.lookupPath(A),B=s.node;if(!B)throw new r.ErrnoError(44);if(!B.node_ops.readlink)throw new r.ErrnoError(28);return B.node_ops.readlink(B)},stat(A,s){var B=r.lookupPath(A,{follow:!s}),D=B.node,d=r.checkOpExists(D.node_ops.getattr,63);return d(D)},fstat(A){var s=r.getStreamChecked(A),B=s.node,D=s.stream_ops.getattr,d=D?s:B;return D??(D=B.node_ops.getattr),r.checkOpExists(D,63),D(d)},lstat(A){return r.stat(A,!0)},doChmod(A,s,B,D){r.doSetAttr(A,s,{mode:B&4095|s.mode&-4096,ctime:Date.now(),dontFollow:D})},chmod(A,s,B){var D;if(typeof A=="string"){var d=r.lookupPath(A,{follow:!B});D=d.node}else D=A;r.doChmod(null,D,s,B)},lchmod(A,s){r.chmod(A,s,!0)},fchmod(A,s){var B=r.getStreamChecked(A);r.doChmod(B,B.node,s,!1)},doChown(A,s,B){r.doSetAttr(A,s,{timestamp:Date.now(),dontFollow:B})},chown(A,s,B,D){var d;if(typeof A=="string"){var h=r.lookupPath(A,{follow:!D});d=h.node}else d=A;r.doChown(null,d,D)},lchown(A,s,B){r.chown(A,s,B,!0)},fchown(A,s,B){var D=r.getStreamChecked(A);r.doChown(D,D.node,!1)},doTruncate(A,s,B){if(r.isDir(s.mode))throw new r.ErrnoError(31);if(!r.isFile(s.mode))throw new r.ErrnoError(28);var D=r.nodePermissions(s,"w");if(D)throw new r.ErrnoError(D);r.doSetAttr(A,s,{size:B,timestamp:Date.now()})},truncate(A,s){if(s<0)throw new r.ErrnoError(28);var B;if(typeof A=="string"){var D=r.lookupPath(A,{follow:!0});B=D.node}else B=A;r.doTruncate(null,B,s)},ftruncate(A,s){var B=r.getStreamChecked(A);if(s<0||(B.flags&2097155)===0)throw new r.ErrnoError(28);r.doTruncate(B,B.node,s)},utime(A,s,B){var D=r.lookupPath(A,{follow:!0}),d=D.node,h=r.checkOpExists(d.node_ops.setattr,63);h(d,{atime:s,mtime:B})},open(A,s,B=438){if(A==="")throw new r.ErrnoError(44);s=_r(s),s&64?B=B&4095|32768:B=0;var D,d;if(typeof A=="object")D=A;else{d=A.endsWith("/");var h=r.lookupPath(A,{follow:!(s&131072),noent_okay:!0});D=h.node,A=h.path}var T=!1;if(s&64)if(D){if(s&128)throw new r.ErrnoError(20)}else{if(d)throw new r.ErrnoError(31);D=r.mknod(A,B|511,0),T=!0}if(!D)throw new r.ErrnoError(44);if(r.isChrdev(D.mode)&&(s&=-513),s&65536&&!r.isDir(D.mode))throw new r.ErrnoError(54);if(!T){var O=r.mayOpen(D,s);if(O)throw new r.ErrnoError(O)}s&512&&!T&&r.truncate(D,0),s&=-131713;var Y=r.createStream({node:D,path:r.getPath(D),flags:s,seekable:!0,position:0,stream_ops:D.stream_ops,ungotten:[],error:!1});return Y.stream_ops.open&&Y.stream_ops.open(Y),T&&r.chmod(D,B&511),Y},close(A){if(r.isClosed(A))throw new r.ErrnoError(8);A.getdents&&(A.getdents=null);try{A.stream_ops.close&&A.stream_ops.close(A)}catch(s){throw s}finally{r.closeStream(A.fd)}A.fd=null},isClosed(A){return A.fd===null},llseek(A,s,B){if(r.isClosed(A))throw new r.ErrnoError(8);if(!A.seekable||!A.stream_ops.llseek)throw new r.ErrnoError(70);if(B!=0&&B!=1&&B!=2)throw new r.ErrnoError(28);return A.position=A.stream_ops.llseek(A,s,B),A.ungotten=[],A.position},read(A,s,B,D,d){if(D<0||d<0)throw new r.ErrnoError(28);if(r.isClosed(A))throw new r.ErrnoError(8);if((A.flags&2097155)===1)throw new r.ErrnoError(8);if(r.isDir(A.node.mode))throw new r.ErrnoError(31);if(!A.stream_ops.read)throw new r.ErrnoError(28);var h=typeof d<"u";if(!h)d=A.position;else if(!A.seekable)throw new r.ErrnoError(70);var T=A.stream_ops.read(A,s,B,D,d);return h||(A.position+=T),T},write(A,s,B,D,d,h){if(D<0||d<0)throw new r.ErrnoError(28);if(r.isClosed(A))throw new r.ErrnoError(8);if((A.flags&2097155)===0)throw new r.ErrnoError(8);if(r.isDir(A.node.mode))throw new r.ErrnoError(31);if(!A.stream_ops.write)throw new r.ErrnoError(28);A.seekable&&A.flags&1024&&r.llseek(A,0,2);var T=typeof d<"u";if(!T)d=A.position;else if(!A.seekable)throw new r.ErrnoError(70);var O=A.stream_ops.write(A,s,B,D,d,h);return T||(A.position+=O),O},mmap(A,s,B,D,d){if((D&2)!==0&&(d&2)===0&&(A.flags&2097155)!==2)throw new r.ErrnoError(2);if((A.flags&2097155)===1)throw new r.ErrnoError(2);if(!A.stream_ops.mmap)throw new r.ErrnoError(43);if(!s)throw new r.ErrnoError(28);return A.stream_ops.mmap(A,s,B,D,d)},msync(A,s,B,D,d){return A.stream_ops.msync?A.stream_ops.msync(A,s,B,D,d):0},ioctl(A,s,B){if(!A.stream_ops.ioctl)throw new r.ErrnoError(59);return A.stream_ops.ioctl(A,s,B)},readFile(A,s={}){s.flags=s.flags||0,s.encoding=s.encoding||"binary",s.encoding!=="utf8"&&s.encoding!=="binary"&&o0(`Invalid encoding type "${s.encoding}"`);var B=r.open(A,s.flags),D=r.stat(A),d=D.size,h=new Uint8Array(d);return r.read(B,h,0,d,0),s.encoding==="utf8"&&(h=wx(h)),r.close(B),h},writeFile(A,s,B={}){B.flags=B.flags||577;var D=r.open(A,B.flags,B.mode);s=mA(s),r.write(D,s,0,s.byteLength,void 0,B.canOwn),r.close(D)},cwd:()=>r.currentPath,chdir(A){var s=r.lookupPath(A,{follow:!0});if(s.node===null)throw new r.ErrnoError(44);if(!r.isDir(s.node.mode))throw new r.ErrnoError(54);var B=r.nodePermissions(s.node,"x");if(B)throw new r.ErrnoError(B);r.currentPath=s.path},createDefaultDirectories(){r.mkdir("/tmp"),r.mkdir("/home"),r.mkdir("/home/web_user")},createDefaultDevices(){r.mkdir("/dev"),r.registerDevice(r.makedev(1,3),{read:()=>0,write:(D,d,h,T,O)=>T,llseek:()=>0}),r.mkdev("/dev/null",r.makedev(1,3)),L0.register(r.makedev(5,0),L0.default_tty_ops),L0.register(r.makedev(6,0),L0.default_tty1_ops),r.mkdev("/dev/tty",r.makedev(5,0)),r.mkdev("/dev/tty1",r.makedev(6,0));var A=new Uint8Array(1024),s=0,B=()=>(s===0&&(pA(A),s=A.byteLength),A[--s]);r.createDevice("/dev","random",B),r.createDevice("/dev","urandom",B),r.mkdir("/dev/shm"),r.mkdir("/dev/shm/tmp")},createSpecialDirectories(){r.mkdir("/proc");var A=r.mkdir("/proc/self");r.mkdir("/proc/self/fd"),r.mount({mount(){var s=r.createNode(A,"fd",16895,73);return s.stream_ops={llseek:V.stream_ops.llseek},s.node_ops={lookup(B,D){var d=+D,h=r.getStreamChecked(d),T={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>h.path},id:d+1};return T.parent=T,T},readdir(){return Array.from(r.streams.entries()).filter(([B,D])=>D).map(([B,D])=>B.toString())}},s}},{},"/proc/self/fd")},createStandardStreams(A,s,B){A?r.createDevice("/dev","stdin",A):r.symlink("/dev/tty","/dev/stdin"),s?r.createDevice("/dev","stdout",null,s):r.symlink("/dev/tty","/dev/stdout"),B?r.createDevice("/dev","stderr",null,B):r.symlink("/dev/tty1","/dev/stderr");var D=r.open("/dev/stdin",0),d=r.open("/dev/stdout",1),h=r.open("/dev/stderr",1)},staticInit(){r.nameTable=new Array(4096),r.mount(V,{},"/"),r.createDefaultDirectories(),r.createDefaultDevices(),r.createSpecialDirectories(),r.filesystems={MEMFS:V,PROXYFS:E0}},init(A,s,B){r.initialized=!0,A??(A=o.stdin),s??(s=o.stdout),B??(B=o.stderr),r.createStandardStreams(A,s,B)},quit(){r.initialized=!1,rr(0);for(var A of r.streams)A&&r.close(A)},findObject(A,s){var B=r.analyzePath(A,s);return B.exists?B.object:null},analyzePath(A,s){try{var B=r.lookupPath(A,{follow:!s});A=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=r.lookupPath(A,{parent:!0});D.parentExists=!0,D.parentPath=B.path,D.parentObject=B.node,D.name=r0.basename(A),B=r.lookupPath(A,{follow:!s}),D.exists=!0,D.path=B.path,D.object=B.node,D.name=B.node.name,D.isRoot=B.path==="/"}catch(d){D.error=d.errno}return D},createPath(A,s,B,D){A=typeof A=="string"?A:r.getPath(A);for(var d=s.split("/").reverse();d.length;){var h=d.pop();if(h){var T=r0.join2(A,h);try{r.mkdir(T)}catch(O){if(O.errno!=20)throw O}A=T}}return T},createFile(A,s,B,D,d){var h=r0.join2(typeof A=="string"?A:r.getPath(A),s),T=Xx(D,d);return r.create(h,T)},createDataFile(A,s,B,D,d,h){var T=s;A&&(A=typeof A=="string"?A:r.getPath(A),T=s?r0.join2(A,s):A);var O=Xx(D,d),Y=r.create(T,O);if(B){B=mA(B),r.chmod(Y,O|146);var a0=r.open(Y,577);r.write(a0,B,0,B.length,0,h),r.close(a0),r.chmod(Y,O)}},createDevice(A,s,B,D){var d,h=r0.join2(typeof A=="string"?A:r.getPath(A),s),T=Xx(!!B,!!D);(d=r.createDevice).major??(d.major=64);var O=r.makedev(r.createDevice.major++,0);return r.registerDevice(O,{open(Y){Y.seekable=!1},close(Y){D?.buffer?.length&&D(10)},read(Y,a0,g0,j0,C0){for(var n0=0,$0=0;$0<j0;$0++){var O0;try{O0=B()}catch{throw new r.ErrnoError(29)}if(O0===void 0&&n0===0)throw new r.ErrnoError(6);if(O0==null)break;n0++,a0[g0+$0]=O0}return n0&&(Y.node.atime=Date.now()),n0},write(Y,a0,g0,j0,C0){for(var n0=0;n0<j0;n0++)try{D(a0[g0+n0])}catch{throw new r.ErrnoError(29)}return j0&&(Y.node.mtime=Y.node.ctime=Date.now()),n0}}),r.mkdev(h,T,O)},forceLoadFile(A){if(A.isDevice||A.isFolder||A.link||A.contents)return!0;if(globalThis.XMLHttpRequest)o0("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=y(A.url)}catch{throw new r.ErrnoError(29)}},createLazyFile(A,s,B,D,d){class h{constructor(){N0(this,"lengthKnown",!1),N0(this,"chunks",[])}get(C0){if(!(C0>this.length-1||C0<0)){var n0=C0%this.chunkSize,$0=C0/this.chunkSize|0;return this.getter($0)[n0]}}setDataGetter(C0){this.getter=C0}cacheLength(){var C0=new XMLHttpRequest;C0.open("HEAD",B,!1),C0.send(null),C0.status>=200&&C0.status<300||C0.status===304||o0("Couldn't load "+B+". Status: "+C0.status);var n0=Number(C0.getResponseHeader("Content-length")),$0,O0=($0=C0.getResponseHeader("Accept-Ranges"))&&$0==="bytes",Z0=($0=C0.getResponseHeader("Content-Encoding"))&&$0==="gzip",rx=1024*1024;O0||(rx=n0);var ex=(ix,Mx)=>{ix>Mx&&o0("invalid range ("+ix+", "+Mx+") or no bytes requested!"),Mx>n0-1&&o0("only "+n0+" bytes available! programmer error!");var G0=new XMLHttpRequest;return G0.open("GET",B,!1),n0!==rx&&G0.setRequestHeader("Range","bytes="+ix+"-"+Mx),G0.responseType="arraybuffer",G0.overrideMimeType&&G0.overrideMimeType("text/plain; charset=x-user-defined"),G0.send(null),G0.status>=200&&G0.status<300||G0.status===304||o0("Couldn't load "+B+". Status: "+G0.status),G0.response!==void 0?new Uint8Array(G0.response||[]):Wx(G0.responseText||"",!0)},xA=this;xA.setDataGetter(ix=>{var Mx=ix*rx,G0=(ix+1)*rx-1;return G0=Math.min(G0,n0-1),typeof xA.chunks[ix]>"u"&&(xA.chunks[ix]=ex(Mx,G0)),typeof xA.chunks[ix]>"u"&&o0("doXHR failed!"),xA.chunks[ix]}),(Z0||!n0)&&(rx=n0=1,n0=this.getter(0).length,rx=n0,N("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n0,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){c||o0("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var T=new h,O={isDevice:!1,contents:T}}else var O={isDevice:!1,url:B};var Y=r.createFile(A,s,O,D,d);O.contents?Y.contents=O.contents:O.url&&(Y.contents=null,Y.url=O.url),Object.defineProperties(Y,{usedBytes:{get:function(){return this.contents.length}}});var a0={};for(let[j0,C0]of Object.entries(Y.stream_ops))a0[j0]=(...n0)=>(r.forceLoadFile(Y),C0(...n0));function g0(j0,C0,n0,$0,O0){var Z0=j0.node.contents;if(O0>=Z0.length)return 0;var rx=Math.min(Z0.length-O0,$0);if(Z0.slice)for(var ex=0;ex<rx;ex++)C0[n0+ex]=Z0[O0+ex];else for(var ex=0;ex<rx;ex++)C0[n0+ex]=Z0.get(O0+ex);return rx}return a0.read=(j0,C0,n0,$0,O0)=>(r.forceLoadFile(Y),g0(j0,C0,n0,$0,O0)),a0.mmap=(j0,C0,n0,$0,O0)=>{r.forceLoadFile(Y);var Z0=bA(C0);if(!Z0)throw new r.ErrnoError(48);return g0(j0,q0,Z0,C0,n0),{ptr:Z0,allocated:!0}},Y.stream_ops=a0,Y}},s0={currentUmask:18,calculateAt(A,s,B){if(r0.isAbs(s))return s;var D;if(A===-100)D=r.cwd();else{var d=s0.getStreamFromFD(A);D=d.path}if(s.length==0){if(!B)throw new r.ErrnoError(44);return D}return D+"/"+s},writeStat(A,s){A0[A>>2]=s.dev,A0[A+4>>2]=s.mode,A0[A+8>>2]=s.nlink,A0[A+12>>2]=s.uid,A0[A+16>>2]=s.gid,A0[A+20>>2]=s.rdev,h0[A+24>>3]=BigInt(s.size),m0[A+32>>2]=4096,m0[A+36>>2]=s.blocks;var B=s.atime.getTime(),D=s.mtime.getTime(),d=s.ctime.getTime();return h0[A+40>>3]=BigInt(Math.floor(B/1e3)),A0[A+48>>2]=B%1e3*1e3*1e3,h0[A+56>>3]=BigInt(Math.floor(D/1e3)),A0[A+64>>2]=D%1e3*1e3*1e3,h0[A+72>>3]=BigInt(Math.floor(d/1e3)),A0[A+80>>2]=d%1e3*1e3*1e3,h0[A+88>>3]=BigInt(s.ino),0},writeStatFs(A,s){A0[A+4>>2]=s.bsize,A0[A+60>>2]=s.bsize,h0[A+8>>3]=BigInt(s.blocks),h0[A+16>>3]=BigInt(s.bfree),h0[A+24>>3]=BigInt(s.bavail),h0[A+32>>3]=BigInt(s.files),h0[A+40>>3]=BigInt(s.ffree),A0[A+48>>2]=s.fsid,A0[A+64>>2]=s.flags,A0[A+56>>2]=s.namelen},doMsync(A,s,B,D,d){if(!r.isFile(s.node.mode))throw new r.ErrnoError(43);if(D&2)return 0;var h=Cx.slice(A,A+B);r.msync(s,h,d,B,D)},getStreamFromFD(A){var s=r.getStreamChecked(A);return s},varargs:void 0,getStr(A){var s=nA(A);return s}};function Lr(A,s,B){s0.varargs=B;try{var D=s0.getStreamFromFD(A);switch(s){case 0:{var d=_x();if(d<0)return-28;for(;r.streams[d];)d++;var h;return h=r.dupStream(D,d),h.fd}case 1:case 2:return 0;case 3:return D.flags;case 4:{var d=_x(),T=289792;return D.flags=D.flags&~T|d&T,0}case 12:{var d=Tx(),O=0;return yx[d+O>>1]=2,0}case 13:case 14:return 0}return-28}catch(Y){if(typeof r>"u"||Y.name!=="ErrnoError")throw Y;return-Y.errno}}function iA(A,s,B){s0.varargs=B;try{var D=s0.getStreamFromFD(A);switch(s){case 21509:return D.tty?0:-59;case 21505:{if(!D.tty)return-59;if(D.tty.ops.ioctl_tcgets){var d=D.tty.ops.ioctl_tcgets(D),h=Tx();m0[h>>2]=d.c_iflag||0,m0[h+4>>2]=d.c_oflag||0,m0[h+8>>2]=d.c_cflag||0,m0[h+12>>2]=d.c_lflag||0;for(var T=0;T<32;T++)q0[h+T+17]=d.c_cc[T]||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 h=Tx(),O=m0[h>>2],Y=m0[h+4>>2],a0=m0[h+8>>2],g0=m0[h+12>>2],j0=[],T=0;T<32;T++)j0.push(q0[h+T+17]);return D.tty.ops.ioctl_tcsets(D.tty,s,{c_iflag:O,c_oflag:Y,c_cflag:a0,c_lflag:g0,c_cc:j0})}return 0}case 21519:{if(!D.tty)return-59;var h=Tx();return m0[h>>2]=0,0}case 21520:return D.tty?-28:-59;case 21537:case 21531:{var h=Tx();return r.ioctl(D,s,h)}case 21523:{if(!D.tty)return-59;if(D.tty.ops.ioctl_tiocgwinsz){var C0=D.tty.ops.ioctl_tiocgwinsz(D.tty),h=Tx();yx[h>>1]=C0[0],yx[h+2>>1]=C0[1]}return 0}case 21524:return D.tty?0:-59;case 21515:return D.tty?0:-59;default:return-28}}catch(n0){if(typeof r>"u"||n0.name!=="ErrnoError")throw n0;return-n0.errno}}function Ix(A,s,B,D){s0.varargs=D;try{s=s0.getStr(s),s=s0.calculateAt(A,s);var d=D?_x():0;return B&64&&(d&=~s0.currentUmask),r.open(s,B,d).fd}catch(h){if(typeof r>"u"||h.name!=="ErrnoError")throw h;return-h.errno}}var Gr=()=>2147483648,wA=(A,s)=>Math.ceil(A/s)*s,Tr=A=>{var s=Zx.buffer.byteLength,B=(A-s+65535)/65536|0;try{return Zx.grow(B),L(),1}catch{}},Ir=A=>{var s=Cx.length;A>>>=0;var B=Gr();if(A>B)return!1;for(var D=1;D<=4;D*=2){var d=s*(1+.2/D);d=Math.min(d,A+100663296);var h=Math.min(B,wA(Math.max(A,d),65536)),T=Tr(h);if(T)return!0}return!1};function Mr(A){try{var s=s0.getStreamFromFD(A);return r.close(s),0}catch(B){if(typeof r>"u"||B.name!=="ErrnoError")throw B;return B.errno}}var Sr=(A,s,B,D)=>{for(var d=0,h=0;h<B;h++){var T=A0[s>>2],O=A0[s+4>>2];s+=8;var Y=r.read(A,q0,T,O,D);if(Y<0)return-1;if(d+=Y,Y<O)break;typeof D<"u"&&(D+=Y)}return d};function Rr(A,s,B,D){try{var d=s0.getStreamFromFD(A),h=Sr(d,s,B);return A0[D>>2]=h,0}catch(T){if(typeof r>"u"||T.name!=="ErrnoError")throw T;return T.errno}}var Or=9007199254740992,Ur=-9007199254740992,Hr=A=>A<Ur||A>Or?NaN:Number(A);function zr(A,s,B,D){s=Hr(s);try{if(isNaN(s))return 22;var d=s0.getStreamFromFD(A);return r.llseek(d,s,B),h0[D>>3]=BigInt(d.position),d.getdents&&s===0&&B===0&&(d.getdents=null),0}catch(h){if(typeof r>"u"||h.name!=="ErrnoError")throw h;return h.errno}}var Jr=(A,s,B,D)=>{for(var d=0,h=0;h<B;h++){var T=A0[s>>2],O=A0[s+4>>2];s+=8;var Y=r.write(A,q0,T,O,D);if(Y<0)return-1;if(d+=Y,Y<O)break;typeof D<"u"&&(D+=Y)}return d};function Kr(A,s,B,D){try{var d=s0.getStreamFromFD(A),h=Jr(d,s,B);return A0[D>>2]=h,0}catch(T){if(typeof r>"u"||T.name!=="ErrnoError")throw T;return T.errno}}var Vr=0,YA=()=>jA||Vr>0,Wr=A=>{g=A,YA()||(o.onExit?.(A),P=!0),k(A,new Jx(A))},ZA=(A,s)=>{g=A,YA()||f0(),Wr(A)},Xr=A=>{if(A instanceof Jx||A=="unwind")return g;k(1,A)},Yr=(A,s,B)=>uA(A,Cx,s,B),QA=A=>_A(A),Zr=A=>{var s=Vx(A)+1,B=QA(s);return Yr(A,B,s),B},Qr=(...A)=>r.createPath(...A),xe=(...A)=>r.unlink(...A),Ae=(...A)=>r.createLazyFile(...A),re=(...A)=>r.createDevice(...A);if(r.createPreloadedFile=Nr,r.preloadFile=Yx,r.staticInit(),o.noExitRuntime&&(jA=o.noExitRuntime),o.preloadPlugins&&(yA=o.preloadPlugins),o.print&&(N=o.print),o.printErr&&(G=o.printErr),o.wasmBinary&&(M=o.wasmBinary),o.arguments&&(u=o.arguments),o.thisProgram&&(p=o.thisProgram),o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.shift()();o.callMain=R0,o.addRunDependency=kA,o.removeRunDependency=gA,o.FS_preloadFile=Yx,o.FS_unlink=xe,o.FS_createPath=Qr,o.FS_createDevice=re,o.FS=r,o.FS_createDataFile=hA,o.FS_createLazyFile=Ae,o.PROXYFS=E0;var xr,Ar,rr,ee,_A,te,ne,ie,Zx;function Fe(A){xr=o._main=A.__main_argc_argv,Ar=A.__funcs_on_exit,rr=A.fflush,ee=A._emscripten_stack_restore,_A=A._emscripten_stack_alloc,te=A.emscripten_stack_get_current,ne=Zx=A.memory,ie=A.__indirect_function_table}var $A={__assert_fail:Gx,__syscall_fcntl64:Lr,__syscall_ioctl:iA,__syscall_openat:Ix,emscripten_resize_heap:Ir,fd_close:Mr,fd_read:Rr,fd_seek:zr,fd_write:Kr};function R0(A=[]){var s=xr;A.unshift(p);var B=A.length,D=QA((B+1)*4),d=D;for(var h of A)A0[d>>2]=Zr(h),d+=4;A0[d>>2]=0;try{var T=s(B,D);return ZA(T,!0),T}catch(O){return Xr(O)}}function qA(A=u){if(X0>0){fx=qA;return}if(Z(),X0>0){fx=qA;return}function s(){if(o.calledRun=!0,!P){Q(),H?.(o),o.onRuntimeInitialized?.();var B=o.noInitialRun||!0;B||R0(A),D0()}}o.setStatus?(o.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>o.setStatus(""),1),s()},1)):s()}var Qx;return Qx=await tA(),qA(),W?E=o:E=new Promise((A,s)=>{H=A,R=s}),E}})();typeof t=="object"&&typeof e=="object"?(e.exports=F,e.exports.default=F):typeof define=="function"&&define.amd&&define([],()=>F)}}),Ot={};hF(Ot,{createPawnCC:()=>$F,createPawnDbg:()=>qF});Ut.exports=gF(Ot);var wF=Rt(kF(),1),_F=Rt(yF(),1),$F=wF.default,qF=_F.default});var ks={};Nn(ks,{APM:()=>t0,DDE:()=>Ex,DDE_Core:()=>p0,DFILES:()=>JA,DLO:()=>zA,DefaultFiles:()=>X,Dependencies:()=>_0,DeviceProfiles:()=>ar,Diagnostics:()=>LA,ENV:()=>we,Globals:()=>I0,Helper:()=>i0,HttpMethod:()=>$e,Library:()=>AA,Log:()=>_e,Manifest:()=>U,MyDatanetClient:()=>pr,Package:()=>V0,Registry:()=>y0,build:()=>bs,buildDevelopmentInstallInfo:()=>pn,generateDevApmId:()=>qe,install:()=>us,pack:()=>gs,publish:()=>hs});module.exports=Ln(ks);var W0=require("vscode-uri");var VA=require("vscode-uri");var Gn=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 tr(t,e=0){let F=~~e^-1;for(let i=0;i<t.length;i++)F=F>>>8^Gn[(F^t[i])&255];return(F^-1)>>>0}var ws=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]),_s=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 i0;(w=>{function t(b,y){let[q,N]=y,{line:G,col:M}=b.linePos(q);return{line:Number(G)-1,startCharacter:M-1,endCharacter:M+(N-q)}}w.yamlRangeToLineInformation=t;let e=new TextEncoder;function F(b){return tr(e.encode(b)).toString(16)}w.generateHashForLibraryName=F;function i(b){return tr(e.encode(b)).toString(16)}w.generateHashForFilePath=i;function a(b){return tr(b).toString(16).toUpperCase().padStart(8,"0")}w.generateCRC32ForFileContent=a;function E(b){try{let y=null;return b?.type==="Buffer"?y=Uint8Array.from(b.data):y=b,new TextDecoder("utf8").decode(y)}catch{return""}}w.convertBlobToString=E;function o(b=""){return b.replace(/\r\n|\n\r|\r/g,`
1528
+ `)}w.normalizeLF=o;function C(b){try{let y=E(b);return o(y).split(`
1529
+ `)}catch{return[]}}w.convertBlobToStringArray=C,w.isNumeric=b=>!Array.isArray(b)&&b-parseFloat(b)+1>=0;function j(b){let y="",q=b.byteLength;for(let N=0;N<q;N++)y+=String.fromCharCode(b[N]);return btoa(y)}w.bufferToBase64=j;function u(b,y){let q=`${b}`.match(/\{\d*(index)(\+\d*)?}/g);if(q){let N=b;return q.forEach(G=>{let M=G.replace(/\+0$/,""),P=M.match(/index/)?.[0];if(P){let g=M.slice(1,-1).split(P)[1],_=parseInt(g)||0;N=N.replace(G,`${y+_}`)}}),N}else return b}w.patchValueWithArrayInfo=u;let p={};function k(b,y,q){let N=p[b];N&&clearTimeout(N.timer),p[b]={timer:setTimeout(()=>{delete p[b],q()},y),handler:q}}w.defer=k})(i0||={});var sn=require("image-dimensions"),an=require("file-type-checker");var Rs=require("cross-fetch/polyfill"),He=J0(require("openapi-fetch"));var Sx=require("vscode-uri");var K0="dist/",Le="dde/",ae="dlo/",Ge=".studio/",Te="dfiles/",X;(C=>{C.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 e=`${Ge}auto/`,F=`${e}dlo/`,i=`${e}dde/`;C.filePaths={studio:{initFile:`${e}.init`,auto:{path:e,dlo:{path:F,autoInc:`${F}${C.fileNames.autoInc}`,defaultInc:`${F}${C.fileNames.defaultInc}`,autoUplinkInc:`${F}${C.fileNames.autoUplinkInc}`,autoLocalDataInc:`${F}${C.fileNames.autoLocalDataInc}`,autoDdeInc:`${F}${C.fileNames.autoDdeInc}`,mainDdeInc:`${F}${C.fileNames.mainDdeInc}`,legacyAutoInc:`${F}${C.fileNames.legacyAutoInc}`,legacyAutoDdeInc:`${F}${C.fileNames.legacyAutoDdeInc}`,legacyAutoUplinkInc:`${F}${C.fileNames.legacyAutoUplinkInc}`,cfg:`${F}${C.fileNames.dloCfg}`},dde:{path:i,historyJson:`${i}${C.fileNames.historyJson}`}},libdeps:`${Ge}libdeps/`},dist:{path:K0,dloPath:`${K0}dlo/`,mainAmxPath:`${K0}dlo/${C.fileNames.mainAmx}`,mainAmxReportPath:`${K0}dlo/${C.fileNames.mainAmxReport}`,ddeXmlPath:`${K0}dde/${C.fileNames.ddeXml}`,ddeApiPath:`${K0}api/`,ddeApi:`${K0}api/${C.fileNames.ddeOpenApi}`,historyJson:`${K0}dde/${C.fileNames.historyJson}`,povPath:`${K0}pov`,povDetailsPath:`${K0}pov/details`,dfilesPath:`${K0}dfiles`,dfilesProperties:`${K0}dfiles/properties.json`,bloPath:`${K0}blo`,reportTemplate:`${K0}/${C.fileNames.reportTemplate}`,definesTs:`${K0}defines.ts`,definesAppTs:`${K0}defines.app.ts`},dlo:{path:ae,mainDLO:`${ae}main.dlo`,mainINI:`${ae}main.ini`},dde:{path:Le,mainDDE:`${Le}main.dde`},dfiles:{path:Te,mainDFILES:`${Te}/main.dfiles`},appIni:"app.ini",defaultsIni:"defaults.ini"},C.readme=c=>`# ${c} README
1530
1530
 
1531
1531
  This is the README for your project "${c}". Write a brief description what this project is about.`,C.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/).`})(V||={});var Ie=J0(require("ini"));var Pn=F0.convertBlobToString,Nn=V.filePaths.dlo.path,I0;(s=>{let t;(c=>(c.lucky="lucky",c.wynni="wynni",c.production="production"))(t=s.ENV||={});async function e(E,o,C){let c=await O.read(E,o),j=await _0.getAll(c),b={},p={},k={};for(let w in j){let q=_0.dependencyToPath(E,w),T=_0.dependencyIdToName(w),$=Tx.Utils.joinPath(q,Nn,`${T}.ini`);await iA(o,$,b,p,k,T);let L=Tx.Utils.joinPath(q,V.filePaths.defaultsIni);await iA(o,L,b,p,k,T)}if(O.isLibrary(c)){let w=Tx.Utils.joinPath(E,V.filePaths.dlo.path,`${c.name}.ini`);C&&await o.stat(w)&&C.warn(`dlo/${c.name}.ini is deprecated. Please migrate your defines to defaults.ini in the project root.`),await iA(o,w,b,p,k,c.name)}let _=c.dlo?.iniFile||V.filePaths.dlo.mainINI,u=Tx.Utils.joinPath(E,_);C&&await o.stat(u)&&C.warn(`${_} is deprecated. Please migrate your defines to app.ini in the project root.`);let y=Mn(_);if(await iA(o,u,b,p,k,y),O.isLibrary(c)){let w=Tx.Utils.joinPath(E,V.filePaths.defaultsIni);await iA(o,w,b,p,k,"defaults")}let P=Ln(c,b,p,k),g=Tx.Utils.joinPath(E,V.filePaths.appIni);return await iA(o,g,b,p,k,"app"),{flat:b,sections:p,definesWithSource:k,defaultsOnly:P}}s.read=e;async function F(E,o,C,c){let j=Object.entries(C.flat),b=[];for(let[_,u]of j){let y=C.definesWithSource[_];if(y?.comment){let g=Te(y.comment);for(let w of g.split(`
1536
- `))b.push(` ${w}`)}let P=Me(u)?"number":"string";b.push(` ${_}: ${P};`)}let p=["// Auto-generated by @microtronics/studio-cli \u2014 DO NOT EDIT","declare global {"," interface StudioDefines {",...b," }"," var STUDIO_DEFINES: StudioDefines;","}","","globalThis.STUDIO_DEFINES ??= {} as StudioDefines;",""];for(let[_,u]of j){let y=C.definesWithSource[_];if(y?.comment&&p.push(Te(y.comment)),Me(u))p.push(`globalThis.STUDIO_DEFINES['${_}'] = ${Number(u)};`);else{let P=u.replace(/\\/g,"\\\\").replace(/'/g,"\\'");p.push(`globalThis.STUDIO_DEFINES['${_}'] = '${P}';`)}}p.push(""),p.push("export {};"),p.push("");let k=Tx.Utils.joinPath(E,c??V.filePaths.dist.definesTs);await o.writeFile(k,p.join(`
1537
- `))}s.exportDefinesTs=F;function i(E,o){let C=[];return{result:E.replace(/\{\{([^}]+)\}\}/g,(j,b)=>{let p=b.trim();return Object.hasOwn(o,p)?o[p]:(C.push(p),j)}),unresolvedKeys:C}}s.replaceDefineTemplates=i})(I0||={});function Ln(t,e,F,i){if(O.isLibrary(t))return{flat:{...e},sections:structuredClone(F),definesWithSource:{...i}}}function Gn(t){if(t==="")return{kind:"empty"};if(t.startsWith("#")||t.startsWith(";"))return{kind:"comment",text:t.replace(/^[#;]\s?/,"")};if(t.startsWith("[")&&t.endsWith("]"))return{kind:"section",name:t.slice(1,-1)};let e=t.indexOf("=");return e>0?{kind:"keyValue",key:t.slice(0,e).trim()}:{kind:"other"}}function Tn(t){let e={},F=t.split(/\r?\n/),i=[],s=null;for(let E of F){let o=Gn(E.trim());if(o.kind==="empty"||o.kind==="other"){i=[];continue}if(o.kind==="comment"){i.push(o.text);continue}if(o.kind==="section"){s=o.name;continue}let C=s?`${s}_${o.key}`:o.key;i.length>0&&(e[C]=i.join(`
1538
- `)),i=[]}return e}function Te(t){let e=t.split(`
1535
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).`})(X||={});var Se=J0(require("ini"));var Tn=i0.convertBlobToString,In=X.filePaths.dlo.path,I0;(a=>{let t;(c=>(c.lucky="lucky",c.wynni="wynni",c.production="production"))(t=a.ENV||={});async function e(E,o,C){let c=await U.read(E,o),j=await _0.getAll(c),u={},p={},k={};for(let G in j){let M=_0.dependencyToPath(E,G),P=_0.dependencyIdToName(G),g=Sx.Utils.joinPath(M,In,`${P}.ini`);await sA(o,g,u,p,k,P);let _=Sx.Utils.joinPath(M,X.filePaths.defaultsIni);await sA(o,_,u,p,k,P)}if(U.isLibrary(c)){let G=Sx.Utils.joinPath(E,X.filePaths.dlo.path,`${c.name}.ini`);C&&await o.stat(G)&&C.warn(`dlo/${c.name}.ini is deprecated. Please migrate your defines to defaults.ini in the project root.`),await sA(o,G,u,p,k,c.name)}let w=c.dlo?.iniFile||X.filePaths.dlo.mainINI,b=Sx.Utils.joinPath(E,w);C&&await o.stat(b)&&C.warn(`${w} is deprecated. Please migrate your defines to app.ini in the project root.`);let y=On(w);if(await sA(o,b,u,p,k,y),U.isLibrary(c)){let G=Sx.Utils.joinPath(E,X.filePaths.defaultsIni);await sA(o,G,u,p,k,"defaults")}let q=Mn(c,u,p,k),N=Sx.Utils.joinPath(E,X.filePaths.appIni);return await sA(o,N,u,p,k,"app"),{flat:u,sections:p,definesWithSource:k,defaultsOnly:q}}a.read=e;async function F(E,o,C,c){let j=Object.entries(C.flat),u=[];for(let[w,b]of j){let y=C.definesWithSource[w];if(y?.comment){let N=Ie(y.comment);for(let G of N.split(`
1536
+ `))u.push(` ${G}`)}let q=Me(b)?"number":"string";u.push(` ${w}: ${q};`)}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,b]of j){let y=C.definesWithSource[w];if(y?.comment&&p.push(Ie(y.comment)),Me(b))p.push(`globalThis.STUDIO_DEFINES['${w}'] = ${Number(b)};`);else{let q=b.replace(/\\/g,"\\\\").replace(/'/g,"\\'");p.push(`globalThis.STUDIO_DEFINES['${w}'] = '${q}';`)}}p.push(""),p.push("export {};"),p.push("");let k=Sx.Utils.joinPath(E,c??X.filePaths.dist.definesTs);await o.writeFile(k,p.join(`
1537
+ `))}a.exportDefinesTs=F;function i(E,o){let C=[];return{result:E.replace(/\{\{([^}]+)\}\}/g,(j,u)=>{let p=u.trim();return Object.hasOwn(o,p)?o[p]:(C.push(p),j)}),unresolvedKeys:C}}a.replaceDefineTemplates=i})(I0||={});function Mn(t,e,F,i){if(U.isLibrary(t))return{flat:{...e},sections:structuredClone(F),definesWithSource:{...i}}}function Sn(t){if(t==="")return{kind:"empty"};if(t.startsWith("#")||t.startsWith(";"))return{kind:"comment",text:t.replace(/^[#;]\s?/,"")};if(t.startsWith("[")&&t.endsWith("]"))return{kind:"section",name:t.slice(1,-1)};let e=t.indexOf("=");return e>0?{kind:"keyValue",key:t.slice(0,e).trim()}:{kind:"other"}}function Rn(t){let e={},F=t.split(/\r?\n/),i=[],a=null;for(let E of F){let o=Sn(E.trim());if(o.kind==="empty"||o.kind==="other"){i=[];continue}if(o.kind==="comment"){i.push(o.text);continue}if(o.kind==="section"){a=o.name;continue}let C=a?`${a}_${o.key}`:o.key;i.length>0&&(e[C]=i.join(`
1538
+ `)),i=[]}return e}function Ie(t){let e=t.split(`
1539
1539
  `);return e.length===1?`/** ${e[0]} */`:`/**
1540
1540
  ${e.map(i=>` * ${i}`).join(`
1541
1541
  `)}
1542
- */`}function Me(t){return t!==""&&!isNaN(Number(t))}function Mn(t){return(t.split("/").pop()||t).replace(/\.ini$/i,"")}function Se(t,e,F){let i=e?`${F}: ${e}`:void 0;return t&&i?`${t}
1543
- ${i}`:i||t}function Re(t,e,F,i,s,E,o){let C=s?`${s}_${i}`:i,c={value:t,sourceUri:e,sourceLine:Sn(F,i,s)};return E[C]&&(c.comment=`${o}: ${E[C]}`),c}function In(t,e,F,i,s,E,o,C,c){i[t]||(i[t]={});for(let[j,b]of Object.entries(e)){let p=`${t}_${j}`,k=C[p],_=`${b}`;F[p]=_,i[t][j]=_;let u=Re(_,E,o,j,t,C,c);u.comment=Se(s[p]?.comment,k,c),s[p]=u}}async function iA(t,e,F,i,s,E){if(!await t.stat(e))return;let o=await t.readFile(e),C=Pn(o),c=Ie.parse(C),j=e.toString(),b=C.split(/\r?\n/),p=Tn(C);for(let[k,_]of Object.entries(c))if(typeof _=="object"&&_!==null)In(k,_,F,i,s,j,b,p,E);else{let u=p[k],y=`${_}`;F[k]=y;let P=Re(y,j,b,k,null,p,E);P.comment=Se(s[k]?.comment,u,E),s[k]=P}}function Sn(t,e,F){let i=F===null,s=F?`[${F}]`:null,E=new RegExp(`^\\s*${Rn(e)}\\s*=`);for(let o=0;o<t.length;o++){let C=t[o].trim();if(s&&C===s){i=!0;continue}if(i&&C.startsWith("[")&&C.endsWith("]")&&F!==null){i=!1;continue}if(i&&E.test(t[o]))return o}return 0}function Rn(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var nr=J0(require("semver/preload")),{GET:oe,POST:tr,PUT:Oe}=(0,Ue.default)();function Fx(t){if(t)return{authorization:`Bearer ${t}`}}var y0;(_=>{_.getAPIUrl=u=>{let y="https://api.registry.microtronics.com";return u===I0.ENV.lucky?y="https://api.registry.lucky.ci.microtronics.com":u===I0.ENV.wynni&&(y="https://api.registry.wynni.ci.microtronics.com"),{baseUrl:y+"/v1"}};async function e(u,y,P,g){let{data:w,error:q}=await oe("/publisher/{publisherId}/libraries/{libraryId}",{...(0,_.getAPIUrl)(g),headers:{...Fx(u)},params:{path:{publisherId:y,libraryId:P}}});if(q)throw new Error(q.reason);return w}_.getLibraryProfile=e;async function F(u,y,P=!1){let g=await fetch(y,{headers:{...Fx(u),...k(!0)}});if(g.status===200)return P?await g.json():await g.arrayBuffer();throw new Error("Failed to fetch the library content")}_.fetchCustomContent=F;async function i(u,y,P){try{let{data:g,error:w}=await oe("/publisher/{publisherId}",{...(0,_.getAPIUrl)(P),headers:{...Fx(u)},params:{path:{publisherId:y}}});return w?(console.error(w),null):g}catch(g){return console.error(g),null}}_.getPublisher=i;async function s(u,y,P,g){try{let{data:w,error:q}=await tr("/packages/{publisherId}/applications",{...(0,_.getAPIUrl)(g),headers:{...Fx(u),...k(!0)},params:{path:{publisherId:y}},body:{...P}});if(q)throw new Error(q.reason);return w.id}catch{return null}}_.createNewApplication=s;async function E(u,y,P,g){let{data:w,error:q}=await oe("/publisher/{publisherId}/applications/{applicationId}",{...(0,_.getAPIUrl)(g),headers:{...Fx(u),...k(!0)},params:{path:{publisherId:y,applicationId:P}}});if(q)throw new Error(q.reason);return w}_.getExistingApplication=E;async function o(u,y,P,g,w){try{let{error:q}=await Oe("/packages/{publisherId}/applications/{applicationId}",{...(0,_.getAPIUrl)(w),headers:{...Fx(u),...k(!0)},params:{path:{publisherId:y,applicationId:P}},body:{...g}});if(q)throw new Error(q.reason);return}catch{return null}}_.updateExistingApplication=o;async function C(u,y,P,g,w,q){let T=!!nr.default.valid(g);try{let{error:$}=await Oe("/packages/{publisherId}/applications/{applicationId}/versions/{applicationVersion}",{...(0,_.getAPIUrl)(q),headers:{...Fx(u),...k(T)},params:{path:{publisherId:y,applicationId:P,applicationVersion:g}},body:{...w}});if($)throw new Error($.reason);return}catch{return null}}_.updateExistingApplicationVersion=C;async function c(u,y,P,g,w,q){let T=!!nr.default.valid(g),{data:$,error:L}=await tr("/packages/{publisherId}/applications/{applicationId}/versions/{applicationVersion}",{...(0,_.getAPIUrl)(q),headers:{...Fx(u),...k(T)},params:{path:{publisherId:y,applicationId:P,applicationVersion:g}},body:{},bodySerializer(){return w}});if(L)throw new Error(L.reason||L.err||L);return $}_.publishApplicationVersion=c;let j={"README.md":"text/markdown","CHANGELOG.md":"text/markdown","library.tar.gz":"application/gzip","studio.json":"application/json"};async function b(u,y,P,g,w,q){try{let{error:T}=await tr("/packages/{publisherId}/libraries/{libraryId}/versions/{libraryVersion}",{...(0,_.getAPIUrl)(q),headers:{...Fx(u),...k(!0)},params:{path:{publisherId:y,libraryId:P,libraryVersion:g}},body:{...w},bodySerializer($){let L=new FormData;for(let[U,H]of Object.entries($))H!==void 0&&L.append(U,new Blob([H],{type:j[U]}),U);return L}});if(T)throw new Error(T.reason)}catch(T){throw console.error(T),T}}_.publishLibraryVersion=b;async function p(u,y,P,g,w,q,T){let $=!!nr.default.valid(g),{error:L}=await tr("/packages/{publisherId}/applications/{applicationId}/versions/{applicationVersion}/files/{applicationFileName}",{...(0,_.getAPIUrl)(T),headers:{...Fx(u),...k($),"Content-Type":"application/octet-stream"},params:{path:{publisherId:y,applicationId:P,applicationVersion:g,applicationFileName:w}},body:{},bodySerializer(){return q}});if(L)throw new Error(L.reason)}_.updateApplicationFile=p;function k(u=!1){return u?{"X-Semver":"true"}:{}}_.injectSemverHeader=k})(y0||={});var an=J0(require("semver/preload"));var qx=require("vscode-uri");var Qx=require("vscode-uri");var P0=require("vscode-uri");var Bt=J0(require("ajv")),Ct=J0(require("ajv-formats"));var He={$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.
1542
+ */`}function Me(t){return t!==""&&!isNaN(Number(t))}function On(t){return(t.split("/").pop()||t).replace(/\.ini$/i,"")}function Re(t,e,F){let i=e?`${F}: ${e}`:void 0;return t&&i?`${t}
1543
+ ${i}`:i||t}function Oe(t,e,F,i,a,E,o){let C=a?`${a}_${i}`:i,c={value:t,sourceUri:e,sourceLine:Hn(F,i,a)};return E[C]&&(c.comment=`${o}: ${E[C]}`),c}function Un(t,e,F,i,a,E,o,C,c){i[t]||(i[t]={});for(let[j,u]of Object.entries(e)){let p=`${t}_${j}`,k=C[p],w=`${u}`;F[p]=w,i[t][j]=w;let b=Oe(w,E,o,j,t,C,c);b.comment=Re(a[p]?.comment,k,c),a[p]=b}}async function sA(t,e,F,i,a,E){if(!await t.stat(e))return;let o=await t.readFile(e),C=Tn(o),c=Se.parse(C),j=e.toString(),u=C.split(/\r?\n/),p=Rn(C);for(let[k,w]of Object.entries(c))if(typeof w=="object"&&w!==null)Un(k,w,F,i,a,j,u,p,E);else{let b=p[k],y=`${w}`;F[k]=y;let q=Oe(y,j,u,k,null,p,E);q.comment=Re(a[k]?.comment,b,E),a[k]=q}}function Hn(t,e,F){let i=F===null,a=F?`[${F}]`:null,E=new RegExp(`^\\s*${zn(e)}\\s*=`);for(let o=0;o<t.length;o++){let C=t[o].trim();if(a&&C===a){i=!0;continue}if(i&&C.startsWith("[")&&C.endsWith("]")&&F!==null){i=!1;continue}if(i&&E.test(t[o]))return o}return 0}function zn(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var ir=J0(require("semver/preload")),{GET:oe,POST:nr,PUT:Ue}=(0,He.default)();function sx(t){if(t)return{authorization:`Bearer ${t}`}}var y0;(w=>{w.getAPIUrl=b=>{let y="https://api.registry.microtronics.com";return b===I0.ENV.lucky?y="https://api.registry.lucky.ci.microtronics.com":b===I0.ENV.wynni&&(y="https://api.registry.wynni.ci.microtronics.com"),{baseUrl:y+"/v1"}};async function e(b,y,q,N){let{data:G,error:M}=await oe("/publisher/{publisherId}/libraries/{libraryId}",{...(0,w.getAPIUrl)(N),headers:{...sx(b)},params:{path:{publisherId:y,libraryId:q}}});if(M)throw new Error(M.reason);return G}w.getLibraryProfile=e;async function F(b,y,q=!1){let N=await fetch(y,{headers:{...sx(b),...k(!0)}});if(N.status===200)return q?await N.json():await N.arrayBuffer();throw new Error("Failed to fetch the library content")}w.fetchCustomContent=F;async function i(b,y,q){try{let{data:N,error:G}=await oe("/publisher/{publisherId}",{...(0,w.getAPIUrl)(q),headers:{...sx(b)},params:{path:{publisherId:y}}});return G?(console.error(G),null):N}catch(N){return console.error(N),null}}w.getPublisher=i;async function a(b,y,q,N){try{let{data:G,error:M}=await nr("/packages/{publisherId}/applications",{...(0,w.getAPIUrl)(N),headers:{...sx(b),...k(!0)},params:{path:{publisherId:y}},body:{...q}});if(M)throw new Error(M.reason);return G.id}catch{return null}}w.createNewApplication=a;async function E(b,y,q,N){let{data:G,error:M}=await oe("/publisher/{publisherId}/applications/{applicationId}",{...(0,w.getAPIUrl)(N),headers:{...sx(b),...k(!0)},params:{path:{publisherId:y,applicationId:q}}});if(M)throw new Error(M.reason);return G}w.getExistingApplication=E;async function o(b,y,q,N,G){try{let{error:M}=await Ue("/packages/{publisherId}/applications/{applicationId}",{...(0,w.getAPIUrl)(G),headers:{...sx(b),...k(!0)},params:{path:{publisherId:y,applicationId:q}},body:{...N}});if(M)throw new Error(M.reason);return}catch{return null}}w.updateExistingApplication=o;async function C(b,y,q,N,G,M){let P=!!ir.default.valid(N);try{let{error:g}=await Ue("/packages/{publisherId}/applications/{applicationId}/versions/{applicationVersion}",{...(0,w.getAPIUrl)(M),headers:{...sx(b),...k(P)},params:{path:{publisherId:y,applicationId:q,applicationVersion:N}},body:{...G}});if(g)throw new Error(g.reason);return}catch{return null}}w.updateExistingApplicationVersion=C;async function c(b,y,q,N,G,M){let P=!!ir.default.valid(N),{data:g,error:_}=await nr("/packages/{publisherId}/applications/{applicationId}/versions/{applicationVersion}",{...(0,w.getAPIUrl)(M),headers:{...sx(b),...k(P)},params:{path:{publisherId:y,applicationId:q,applicationVersion:N}},body:{},bodySerializer(){return G}});if(_)throw new Error(_.reason||_.err||_);return g}w.publishApplicationVersion=c;let j={"README.md":"text/markdown","CHANGELOG.md":"text/markdown","library.tar.gz":"application/gzip","studio.json":"application/json"};async function u(b,y,q,N,G,M){try{let{error:P}=await nr("/packages/{publisherId}/libraries/{libraryId}/versions/{libraryVersion}",{...(0,w.getAPIUrl)(M),headers:{...sx(b),...k(!0)},params:{path:{publisherId:y,libraryId:q,libraryVersion:N}},body:{...G},bodySerializer(g){let _=new FormData;for(let[I,z]of Object.entries(g))z!==void 0&&_.append(I,new Blob([z],{type:j[I]}),I);return _}});if(P)throw new Error(P.reason)}catch(P){throw console.error(P),P}}w.publishLibraryVersion=u;async function p(b,y,q,N,G,M,P){let g=!!ir.default.valid(N),{error:_}=await nr("/packages/{publisherId}/applications/{applicationId}/versions/{applicationVersion}/files/{applicationFileName}",{...(0,w.getAPIUrl)(P),headers:{...sx(b),...k(g),"Content-Type":"application/octet-stream"},params:{path:{publisherId:y,applicationId:q,applicationVersion:N,applicationFileName:G}},body:{},bodySerializer(){return M}});if(_)throw new Error(_.reason)}w.updateApplicationFile=p;function k(b=!1){return b?{"X-Semver":"true"}:{}}w.injectSemverHeader=k})(y0||={});var on=J0(require("semver/preload"));var Px=require("vscode-uri");var rA=require("vscode-uri");var P0=require("vscode-uri");var Ct=J0(require("ajv")),ft=J0(require("ajv-formats"));var ze={$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.
1544
1544
 
1545
1545
  \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.
1546
1546
 
@@ -1638,25 +1638,27 @@ Accepts a number (\u2265 0) or a relation link (\`@container.field\`).`,minimum:
1638
1638
 
1639
1639
  \u26A0\uFE0F **Important:** This does not activate any alarming. Alarming must be implemented in the DLO.
1640
1640
 
1641
- Accepts a number or a relation link (\`@container.field\`).`,$ref:"#/$defs/relationLinkPattern"}}};var Dr=require("yaml");var Mx=require("yaml");var LA;(e=>e.CODE={ddeFieldLength:"field_name_length"})(LA||={});var p0;(S=>{let t;(f0=>(f0.state="state",f0.result="result",f0.aloha="aloha",f0.volatile="volatile",f0.setting="setting",f0.command="command",f0.storage="storage",f0.relations="relations"))(t=S.DDEContainerName||={});let e;(Q=>(Q.configA="configA",Q.configB="configB",Q.configC="configC",Q.config0="config0",Q.config1="config1",Q.config2="config2",Q.config3="config3",Q.config4="config4",Q.config5="config5",Q.config6="config6",Q.config7="config7",Q.config8="config8",Q.config9="config9",Q.histdata0="histdata0",Q.histdata1="histdata1",Q.histdata2="histdata2",Q.histdata3="histdata3",Q.histdata4="histdata4",Q.histdata5="histdata5",Q.histdata6="histdata6",Q.histdata7="histdata7",Q.histdata8="histdata8",Q.histdata9="histdata9",Q.aloha="aloha",Q.alerts="alerts",Q.applog="applog"))(e=S.ContainerName||={});let F;(x0=>(x0.cx="cx",x0.hx="hx",x0.cb="cb",x0.aloha="aloha",x0.applog="applog"))(F=S.ContainerType||={});let i;(b0=>(b0.up="up",b0.down="down",b0.upPlus="up+",b0.downPlus="down+",b0.none="none",b0.backendOnly="backend-only",b0.deviceOnly="device-only",b0.both="both",b0.bothPlus="both+",b0.noneBackend="none-be"))(i=S.TransferDirection||={});function s(z,Y){return z==="cx"&&!["backend-only"].includes(Y)?"DDE_CID_CONFIG":z==="hx"?"DDE_CID_HISTDATA":z==="aloha"?"DDE_CID_ALOHA":null}S.CONTAINER_DEF_DLO_CID_BASE=s;let E=["up","up+","down","down+","both","none","both+","backend-only","device-only"],o=["up","up+","backend-only"];S.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:E},config1:{ctype:"cx",cnum:1,alias:"",flds:"field",xmits:E},config2:{ctype:"cx",cnum:2,alias:"",flds:"field",xmits:E},config3:{ctype:"cx",cnum:3,alias:"",flds:"field",xmits:E},config4:{ctype:"cx",cnum:4,alias:"",flds:"field",xmits:E},config5:{ctype:"cx",cnum:5,alias:"",flds:"field",xmits:E},config6:{ctype:"cx",cnum:6,alias:"",flds:"field",xmits:E},config7:{ctype:"cx",cnum:7,alias:"",flds:"field",xmits:E},config8:{ctype:"cx",cnum:8,alias:"",flds:"field",xmits:E},config9:{ctype:"cx",cnum:9,alias:"",flds:"field",xmits:E},histdata0:{ctype:"hx",cnum:0,alias:"",flds:"ch",xmits:o},histdata1:{ctype:"hx",cnum:1,alias:"",flds:"ch",xmits:o},histdata2:{ctype:"hx",cnum:2,alias:"",flds:"ch",xmits:o},histdata3:{ctype:"hx",cnum:3,alias:"",flds:"ch",xmits:o},histdata4:{ctype:"hx",cnum:4,alias:"",flds:"ch",xmits:o},histdata5:{ctype:"hx",cnum:5,alias:"",flds:"ch",xmits:o},histdata6:{ctype:"hx",cnum:6,alias:"",flds:"ch",xmits:o},histdata7:{ctype:"hx",cnum:7,alias:"",flds:"ch",xmits:o},histdata8:{ctype:"hx",cnum:8,alias:"",flds:"ch",xmits:o},histdata9:{ctype:"hx",cnum:9,alias:"",flds:"ch",xmits:o},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+"]}},S.HISTDATA_CONTAINER=["histdata0","histdata1","histdata2","histdata3","histdata4","histdata5","histdata6","histdata7","histdata8","histdata9"],S.CONFIG_CONTAINER=["config0","config1","config2","config3","config4","config5","config6","config7","config8","config9"],S.SERVER_CONTAINER=["configA","configB","configC"],S.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"];S.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 y(z,Y,Z){let M=Y[z];if(M!==void 0)if(S.regexRelation.exec(`${M}`)){let r0=z==="chartSetPoint",[x0,...e0]=M.split("."),[,d0]=x0.split("@"),f0=Object.values(Z.containers).find(M0=>M0.title===d0),o0=e0.join("."),b0=r0?";":"%",Z0=(r0?"":"%")+(f0?.name||d0)+b0;if(Z0=Z0+`${o0}`,r0){let M0=Z.setPointList[Y.name];Z0=Z0+`;actual_output_value_${M0}`}return Z0}else return M}S.parseXMLValueWithRelation=y;function P(z){let{bitmask:Y}=z;if(!Y)return;let Z="$",M=Y.replaceAll(" ","");if(Y.startsWith("0x"))Z+=M.substring(2);else if(M.startsWith("0b")){let r0=M.substring(2).replaceAll(" ","");Z+=parseInt(r0,2).toString(16).toUpperCase()}return Z}S.parseXMLBitmask=P;function g(z){return z.type==="binary"?z.defaultValue.substring(2):z.defaultValue==="NaN"?"NAN":z.defaultValue}S.parseXMLDefaultValue=g,S.TDEF_NUMBER={xmlOut(z,Y,Z){z.decpl=y("decimalPlaces",Y,Z),z.decpl===void 0&&(z.decpl=0),z.vscale=y("scale",Y,Z),z.vofs=y("offset",Y,Z),z.min=y("chartMinimum",Y,Z),z.max=y("chartMaximum",Y,Z)}};let q={isBlob:1,xmlOut(z,Y){z.max=Y.byteSize}},T={xmlOut(z){z.decpl=-1,z.param0="local",z.units="UTC"}};S.TYPE_DEFS={u8:{dde:"uint8",dim:1,len:1,...S.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,...S.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,...S.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,...S.TDEF_NUMBER,rdef:1,xml:{type:"s8"},pwn:{rwfunc:"s8",htype:"s32",printf:"%d"},openApi:{type:"number"}},s16:{dde:"int16",dim:1,len:2,...S.TDEF_NUMBER,rdef:1,xml:{type:"s16"},pwn:{rwfunc:"s16",htype:"s32",printf:"%d"},openApi:{type:"number"}},s32:{dde:"int32",dim:1,len:4,...S.TDEF_NUMBER,rdef:1,xml:{type:"s32"},pwn:{rwfunc:"s32",printf:"%d"},openApi:{type:"number"}},s64:{dde:"int64",dim:0,len:8,...S.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,...S.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,...S.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,...S.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,...T,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,...T,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,...q,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,...q,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,...q,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,...q,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,...q,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,...q,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"}}},S.fieldTypeDefinitions={uint8:S.TYPE_DEFS.u8,uint16:S.TYPE_DEFS.u16,uint32:S.TYPE_DEFS.u32,int8:S.TYPE_DEFS.s8,int16:S.TYPE_DEFS.s16,int32:S.TYPE_DEFS.s32,int64:S.TYPE_DEFS.s64,float16:S.TYPE_DEFS.f16,float32:S.TYPE_DEFS.f32,float64:S.TYPE_DEFS.f64,stamp32:S.TYPE_DEFS.stamp32,stamp40:S.TYPE_DEFS.stamp40,binary:S.TYPE_DEFS.bin,astring:S.TYPE_DEFS.astr,nstring:S.TYPE_DEFS.nstr,wstring:S.TYPE_DEFS.wstr,ustring:S.TYPE_DEFS.ustr,cstring:S.TYPE_DEFS.cstr};let U=["_id","id","_stamp","stamp","tag","_uid","customer_id","site_id","_rec_flags__","applog"];function H(z){let Y=z.toLowerCase();return U.includes(Y)||/^field\d+$/.test(Y)||/^ch\d+$/.test(Y)}S.checkForReservedFieldName=H;function K(z){return!!z.fields.find(Y=>Y.library===null&&Y.type!=="shadow")}S.hasContainerAppFields=K})(p0||={});var Ix=p0.DDEContainerName,ze=p0.allowedRelationTypes,Un=p0.regexRelation,Hn=p0.ContainerType,zn=p0.checkForReservedFieldName,ir=p0.ContainerName,Je=p0.CONTAINER_DEFS,Jn=p0.SERVER_CONTAINER,Kn=p0.HISTDATA_CONTAINER,Vn=p0.CONFIG_CONTAINER,FA=p0.TransferDirection,Ke=p0.fieldTypeDefinitions,sx=F0.yamlRangeToLineInformation,Fr;(e=>{class t{constructor(i,s,E){this.manifest=i;this.libraryFiles=s;this.ddeHistory=E}manifest;libraryFiles;ddeHistory;fieldNamesPerContainer={};usedContainerNames={};fileDiagnostics=[];libraryDDE=[];libraryYaml={};parseLibraries(){this.libraryDDE.length=0;let i=[];return this.libraryFiles.forEach(s=>{let{parsedDDE:E,diagnostics:o,parsedYaml:C}=this.parseYamlFile(s.path,s.yaml,s.libraryName);i.push(...o),this.libraryDDE.push(E),this.libraryYaml[s.libraryName]=C}),i}get previousVersion(){return{setPointList:{...this.ddeHistory?.setPointList},containers:{...this.ddeHistory?.containers}}}getContainerOfPreviousVersion(i){let s=this.previousVersion,E=i.startsWith("timeseries_")?i.substring(11):i;return Object.values(s.containers).find(o=>o.title===E)||null}parseMainDDE(i,s){let{parsedDDE:E,diagnostics:o}=this.parseYamlFile(i,s);return o.find(j=>j.level==="error")?{ddeJSON:null,diagnostics:o}:{ddeJSON:this.mergeAndFormat(E),diagnostics:o}}parseYamlFile(i,s,E){this.fileDiagnostics.length=0;let o=new Mx.LineCounter,C=(0,Mx.parseDocument)(s,{lineCounter:o});if(!C.contents)return{parsedDDE:{containers:{},setPointList:{}},diagnostics:[],parsedYaml:null};let c=C.contents||new Mx.YAMLMap;return this.validateContainerDefinition(c.items).forEach(b=>{this.validateAllowedContainer(i,b,o,E),this.validateContainerFields(C,i,b,o)}),{parsedDDE:this.yamlDocToDdeJson(C.toJS({mapAsMap:!0}),E),diagnostics:[...this.fileDiagnostics],parsedYaml:C}}yamlDocToDdeJson(i,s){let E={containers:{},setPointList:{}},o=new Map,C=[...Object.values(Ix)];if(i.get("cloudProject")){let j=Object.values(this.previousVersion.containers).map(p=>p.title),b=[...new Set([...C,...j])];C.length=0,C.push(...b)}for(let j of C)i.has(j)&&o.set(j,i.get(j));let c=i.get("timeseries");if(c)for(let[j,b]of c)o.set(j,b);for(let[j,b]of o){let{realContainer:p,transferDirection:k,legacyTitle:_}=this.getRealContainerInformation(j);if(!p)continue;let u=Je[p],y=j.includes("timeseries_")?j.replace("timeseries_",""):j,P={name:p,title:y,previousTitle:_,containerType:u.ctype,volatile:j===Ix.volatile,transferDirection:k,fieldCount:b.size,knownNames:[],libraries:[],arrays:{},shadows:{},fields:[],size:0,fieldIndex:0};s&&P.libraries.push(s);for(let[g,w]of b){let q=[],T=w.get("type"),$=Ke[T];if(!(!$&&T!=="array")){if(T==="array"){let L=[],U=w.get("length"),H=w.get("fields"),K={name:g,length:U,library:s||null,fields:[]};P.arrays[g]=K;for(let S=0;S<U;S++){let z={name:g,index:S};for(let[Y,Z]of H){let M=Ke[Z.get("type")];if(!M)continue;K.fields?.find(d0=>d0.name===Y)||K.fields.push({name:Y,type:Z.get("type"),byteSize:M.len||Z.get("bytes")||Z.get("length")});let r0=`${g}[${S}].${Y}`,{fields:x0,shadowInfo:e0}=this.createDDEJsonFields(r0,s,M,Z);x0.forEach(d0=>{d0.arrayRef=z}),e0&&(P.shadows[e0.name]=e0),L.push(...x0)}}q.push(...L)}else{let{arrayInfo:L,fields:U,shadowInfo:H}=this.createDDEJsonFields(g,s,$,w);L&&(P.arrays[L.name]=L),H&&(P.shadows[H.name]=H),q.push(...U)}q.forEach(L=>{L.index=++P.fieldIndex,P.fields.push(L),P.size+=L.byteSize})}}E.containers[p]=P}return E}getRealContainerInformation(i){let s,E,o;if(this.previousVersion){let C=i.startsWith("timeseries_")?i.substring(11):i,{name:c,direction:j,previousTitle:b}=this.findPreviousUsedContainer(C);s=c,E=j,o=b}if(!s){let C=Object.entries(this.usedContainerNames).find(([,c])=>c===i);C&&(s=C[0])}return s||(s=this.findNextFreeContainer(i)),this.usedContainerNames[s]=i,E||(E=[Ix.setting,Ix.command].includes(i)?FA.down:FA.up),E===FA.up&&s&&Je[s].xmits.includes(FA.upPlus)&&(E=FA.upPlus),s&&[ir.configA,ir.configB].includes(s)&&(E=FA.backendOnly),{realContainer:s,transferDirection:E,legacyTitle:o}}findNextFreeContainer(i){if(i===ir.aloha)return ir.aloha;let s=Vn;i.startsWith("timeseries_")?s=Kn:[Ix.relations,Ix.storage].includes(i)&&(s=Jn);let E=this.previousVersion?.containers;return E&&(s=s.filter(o=>!Object.hasOwn(E,o))),s.find(o=>!Object.hasOwn(this.usedContainerNames,o))}findPreviousUsedContainer(i){let s=this.previousVersion.containers,E=Object.values(s).find(o=>o.title===i);return{name:E?.name,direction:E?.transferDirection,previousTitle:E?.previousTitle}}createDDEJsonFields(i,s,E,o){let C=o.get("array"),c=[],j,b;if(C){j={name:i,library:s||null,length:C};for(let p=0;p<C;p++){let k=`${i.toLowerCase()}[${p}]`;c.push(this.buildDDEJsonField(k,o,{name:i,index:p},E,s,null))}}else{let p=this.buildDDEJsonField(i,o,null,E,s,null);c.push(p);let k=o.get("shadowFields");if(k){b={name:p.name,byteSize:p.byteSize,byteOffset:p.byteOffset};for(let[_,u]of k){let y=_;i.includes(".")&&(y=i.split(".")[0]+`.${_}`),c.push(this.buildDDEJsonField(y,u,null,E,s,p.name))}}}return{arrayInfo:j,shadowInfo:b,fields:c}}buildDDEJsonField(i,s,E,o,C,c){return{id:i.toLowerCase(),name:i,index:0,library:C||null,byteOffset:0,byteSize:o.len||s.get("bytes")||s.get("length"),type:s.get("type"),title:s.get("title")||null,arrayRef:E,shadowRef:c,unit:s.get("unit"),hex:s.get("hex"),decimalPlaces:s.get("decimalPlaces"),writePermission:this.parseUserLevel(s.get("writePermission")),readPermission:this.parseUserLevel(s.get("readPermission")),channelMode:this.parseChannelMode(s.get("channelMode")),defaultValue:s.get("defaultValue"),scale:s.get("scale"),offset:s.get("offset"),chartMinimum:s.get("chartMinimum"),description:s.get("description"),chartMaximum:s.get("chartMaximum"),chartAlarmLow:s.get("chartAlarmLow"),chartAlarmHigh:s.get("chartAlarmHigh"),chartWarningLow:s.get("chartWarningLow"),chartWarningHigh:s.get("chartWarningHigh"),chartHysteresis:s.get("chartHysteresis"),chartTriggerThreshold:s.get("chartTriggerThreshold"),chartTriggerRelation:this.parseTriggerUndershoot(s.get("chartTriggerRelation")),chartSetPoint:s.get("chartSetPoint"),utilsTransferInterval:!!s.get("utilsTransferInterval"),bitmask:s.get("bitmask")}}resolvePossibleAlias(i,s){return(0,Mx.isAlias)(s)?s.resolve(i).value:s?.value}validateContainerDefinition(i){let s=[];return i.forEach(E=>{let C=E.key.value;C==="timeseries"?E.value.items.forEach(c=>{c.key.value=`timeseries_${c.key}`,s.push(c)}):["dde","cloudProject","constants"].includes(C)||s.push(E)}),s}parseUserLevel(i){if(i==="read-only")return 99;if(i?.startsWith("UL"))return Number(i.substring(2))}parseChannelMode(i){if(i)return{digital:1,"day-counter":2,"interval-counter":3,analog:6,"infinite-counter":12}[i]??i}parseTriggerUndershoot(i){if(i)return{"greater-or-equal":0,"less-or-equal":1}[i]??i}validateAllowedContainer(i,s,E,o){if(!s.value)return;let c=s.key.value;if(o&&(c.startsWith("aloha")||c.startsWith("timeseries"))){let j=c.includes("_")?c.split("_")[1]:c;this.fileDiagnostics.push({file:i,level:"error",message:`"${j}" not allowed within a library`,...sx(E,s.key.range)})}if(O.isAnalytics(this.manifest)&&![Ix.relations,Ix.storage].includes(c)){let j=c.includes("_")?c.split("_")[1]:c;this.fileDiagnostics.push({file:i,level:"error",message:`"${j}" not allowed within an analytics app. Only "relations" and "storage" are allowed.`,...sx(E,s.key.range)})}}validateContainerFields(i,s,E,o){let C=E.value;if(!C)return;let c=E.key.value;Object.hasOwn(this.fieldNamesPerContainer,c)||(this.fieldNamesPerContainer[c]=[]);let j=this.getContainerOfPreviousVersion(c);C.items.forEach(b=>{let k=b.key.value;this.checkForContainerRelation(b,i,s,o),this.validateFieldName(b,c,s,o),this.checkFieldNameLength(b,c,s,o);let _=j?.fields.find(q=>q.id===k.toLowerCase()),u=b.value,y=u.get("type",!0),P=this.resolvePossibleAlias(i,y),g=u.get("bytes",!0),w=this.resolvePossibleAlias(i,g);_&&(y&&P&&_.type!==P&&this.fileDiagnostics.push({file:s,level:"warning",message:`Field type changed from "${_.type}" to "${P}".
1642
- Changing the type of an existing field can result in data loss or unexpected behaviour.`,...sx(o,y.range)}),g&&w&&_.byteSize!==w&&this.fileDiagnostics.push({file:s,level:"warning",message:`Byte size changed from '${_.byteSize}' to '${w}'.
1643
- Changing the size of an existing field can result in data loss or unexpected behaviour.`,...sx(o,g.range)}))})}checkForContainerRelation(i,s,E,o){let C=i.value.get("fields");C&&C.items.forEach(j=>{this.checkForContainerRelation(j,s,E,o)}),i.value.items.forEach(j=>{let b=j.value;if(b?.value&&Un.exec(`${b.value}`)){let p=j.key.value;if(p){if(!Object.hasOwn(ze,p))return this.fileDiagnostics.push({file:E,level:"error",message:`Property "${p}" does not allow relations.`,...sx(o,b.range)});if(["scale","offset"].includes(p))return this.fileDiagnostics.push({file:E,level:"warning",message:`Container relations for "${p}" are not available within the dlo source.`,...sx(o,b.range)})}return this.validateContainerRelation(p,b,s,E,o)}})}validateFieldName(i,s,E,o){let C=this.fieldNamesPerContainer[s],c=i.key,j=c.value;zn(j)&&this.fileDiagnostics.push({file:E,level:"error",message:`Reserved property "${j}" is not allowed.`,...sx(o,c.range)});let b=i.value.get("shadowFields");b&&b.items.forEach(p=>{this.validateFieldName(p,s,E,o)}),C.includes(j.toLowerCase())?this.fileDiagnostics.push({file:E,level:"error",message:`Field name "${j}" is already occupied`,...sx(o,c.range)}):C.push(j.toLowerCase())}checkFieldNameLength(i,s,E,o){let C=i.key,c=C.value,b=`DDE_${s.startsWith("timeseries")?s.substring(10):s}_`,p=31-b.length;b.length+c.length>31&&this.fileDiagnostics.push({file:E,level:"error",code:LA.CODE.ddeFieldLength,message:`Field name "${c}" to long. ${p} characters allowed for this field/container.`,...sx(o,C.range)})}validateContainerRelation(i,s,E,o,C){let[c,j,b]=s.value.split(".",3),[p,k]=c.split("@"),_=p?p.split(":")[1]:null,y=(_&&this.libraryYaml[_]?this.libraryYaml[_]:E).contents?.get(k),P=j.split("[")[0],g=null;if(y){let w=y.get(P);if(w)if(b){let q=w.get("fields");q&&q.get(b)&&(g=q.get(b))}else g=w;else g=this.findRelatedShadowField(y,P)}if(g){let w=ze[i],q=g.get("type");w.includes(q)||this.fileDiagnostics.push({file:o,level:"error",message:`Related field type "${q}" is not allowed for attribute "${i}".`,...sx(C,s.range)})}else _&&!this.libraryYaml[_]?this.fileDiagnostics.push({file:o,level:"error",message:`Related library "${_}" does not exist.`,...sx(C,s.range)}):this.fileDiagnostics.push({file:o,level:"error",message:`Related field "${s.value}" does not exist.`,...sx(C,s.range)})}findRelatedShadowField(i,s){for(let E of i.items){let C=E.value.get("shadowFields");if(!C)continue;let c=C.get(s);if(c)return c}}mergeAndFormat(i){let s={containers:{},setPointList:{}};for(let E of this.libraryDDE)this.combineDDE(s,E);return this.combineDDE(s,i),this.sortContainerFields(s),this.generateSetPointList(s),s}combineDDE(i,s){for(let[E,o]of Object.entries(s.containers)){let C=i.containers[E];C?(C.title=o.title,C.knownNames.unshift(o.title),C.libraries.push(...o.libraries),C.fields.push(...o.fields),C.arrays={...C.arrays,...o.arrays},C.shadows={...C.shadows,...o.shadows}):(C=i.containers[E]=structuredClone(o),C.knownNames.unshift(o.title),C.fieldCount=C.fields.length,C.fieldIndex=0);let c=this.initialContainerByteOffset(C);for(let[j,b]of C.fields.entries()){if(b.shadowRef){let p=C.shadows[b.shadowRef];b.byteOffset=p.byteOffset}else b.byteOffset=c,this.updateShadowFieldInformation(i.containers[E],b),c+=b.byteSize||0;j>C.fieldCount-1&&(b.index+=C.fieldIndex)}C.fieldIndex+=o.fieldIndex,C.knownNames=[...new Set(C.knownNames)],C.libraries=[...new Set(C.libraries)],C.fieldCount=C.fields.length}}initialContainerByteOffset(i){return i.containerType===Hn.hx?1:0}updateShadowFieldInformation(i,s){s&&Object.hasOwn(i.shadows,s.name)&&(i.shadows[s.name].byteOffset=s.byteOffset)}sortContainerFields(i){for(let s of Object.values(i.containers)){let{sortedFields:E,containerSize:o}=this.sortFields(s);s.fields=E,s.size=o,s.fieldCount=s.fields.length}}sortFields(i){let s=i.fields.filter(p=>!p.shadowRef),E=i.fields.filter(p=>p.shadowRef),o=[],C=i.name;if(this.previousVersion.containers[C]){let p=this.sortPreviousContainerFields(i,s);o.push(...p)}else o.push(...s);o.forEach(p=>{this.updateShadowFieldInformation(i,p)});let j=o[o.length-1],b=j.byteSize+j.byteOffset;return E.forEach(p=>{p.byteOffset=i.shadows[p.shadowRef].byteOffset,o.push(p)}),{sortedFields:o,containerSize:b}}sortPreviousContainerFields(i,s){let E=i.name,o=this.previousVersion.containers[E],C=[],c=this.initialContainerByteOffset(i);for(let j of o.fields){if(j.shadowRef)continue;let b=s.findIndex(k=>j.id===k.name?.toLowerCase());if(b===-1){c=j.byteOffset+j.byteSize;continue}let p=s[b];if(j.type!==p.type&&j.byteSize!==p.byteSize){c=j.byteOffset+j.byteSize;continue}p.byteOffset=j.byteOffset,s.splice(b,1),C.push(p),c=this.initialContainerByteOffset(i)}if(c>this.initialContainerByteOffset(i)){let j=s.shift();C.push(...this.generatePlaceholderFieldIfNeeded(c,j)),this.updateShadowFieldInformation(i,j)}for(let j of s){if(j.shadowRef)j.byteOffset=i.shadows[j.shadowRef].byteOffset;else{this.updateShadowFieldInformation(i,j);let b=C[C.length-1];b.shadowRef&&(b=i.shadows[b.shadowRef]),j.byteOffset=b.byteOffset+b.byteSize}C.push(j)}return C}generatePlaceholderFieldIfNeeded(i,s){let E=[];if(s)s.byteOffset=i,E.push(s);else{let o={byteOffset:i,byteSize:0,id:"_shadow",library:null,name:"_shadow",type:"shadow",arrayRef:null,shadowRef:null,title:null,index:0};E.push(o)}return E}generateSetPointList(i){i.setPointList={...this.previousVersion.setPointList||{}};for(let s of Object.values(i.containers))for(let E of s.fields)E.chartSetPoint&&(Object.hasOwn(i.setPointList,E.name)||(i.setPointList[E.name]=this.getNextSetpointValue(i.setPointList)))}getNextSetpointValue(i){let s=[...Object.values(i),0];return Math.max(...s)+1}}e.PreCompiler=t})(Fr||={});var rx=p0.TransferDirection,lx=p0.parseXMLValueWithRelation,Wn=p0.parseXMLBitmask,Xn=p0.parseXMLDefaultValue,Yn=p0.fieldTypeDefinitions;function ve(t,e){let i=[];function s(C,c=!0){if(c){if(Array.isArray(C)){i.push.apply(i,C);return}i.push(""+C)}}function E(C,c){C!=="mergeofs"&&s(`${C}=${c}`)}s("// DDE STRUCTURE created by Microtronics Studio");let o="source=rm2mraw";for(let[C,c]of Object.entries(e.containers)){C.startsWith("histdata")&&c.transferDirection!==rx.deviceOnly&&(s("<split>"),s(o),s("target="+C),s("key=0"+C.substr(-1,1)),s("</split>")),s("<table>"),E("name",C),E("alias",c.title),E("title",c.title.replace("_"," "));let j={};[rx.none,rx.backendOnly,rx.deviceOnly,rx.down,rx.downPlus].includes(c.transferDirection)&&E("upload","0"),[rx.none,rx.backendOnly,rx.deviceOnly,rx.up,rx.upPlus].includes(c.transferDirection)&&E("download","0"),(O.isIotApp(t)||O.isLibrary(t))&&[rx.up,rx.upPlus].includes(c.transferDirection)&&E("edit","99");for(let b of c.fields){if(b.type==="shadow")continue;let p=Zn(b),k=Yn[p.type],_=lx("title",p,e)||p.name;!_.startsWith("%")&&p.library&&(_=`${p.library}: ${_}`);let u={title:_,alias:p.name,index:b.index,...j};u.byteofs=`${p.byteOffset}`;for(let[y,P]of Object.entries(k.xml))u[y]=P;Object.hasOwn(k,"xmlOut")&&k.xmlOut(u,p,e),u.units=lx("unit",p,e),u.chmode=lx("channelMode",p,e),u.ialarm_high=lx("chartAlarmHigh",p,e),u.ialarm_low=lx("chartAlarmLow",p,e),u.iwarn_high=lx("chartWarningHigh",p,e),u.iwarn_low=lx("chartWarningLow",p,e),u.hysterese=lx("chartHysteresis",p,e),u.itrigger=lx("chartTriggerThreshold",p,e),u.itriggerus=lx("chartTriggerRelation",p,e),u.setpoint=lx("chartSetPoint",p,e),u.bitmask=Wn(p),p.hex&&(u.editmask="%HEX%"),p.readPermission&&(u.view=p.readPermission),p.writePermission&&(u.edit=p.writePermission),p.defaultValue!==void 0&&(u.default=Xn(p)),p.utilsTransferInterval===!0&&(u.param0="%FFFF0005%transfer_interval"),s("<field>"),p.library&&s(`// declared by ${p.library} library`,!0);for(let[y,P]of Object.entries(u))P!==void 0&&E(y,`${P}`);s("</field>")}["alerts","applog"].includes(C)||(s("</table>"),s("// "+c.size+" bytes total size"))}return s("<split>"),s(o),s("target=alarm0"),s("key=20"),s("</split>"),s("<split>"),s(o),s("target=applog0"),s("key=28"),s("</split>"),i.join(`
1644
- `)}function Zn(t){let e=structuredClone(t),F=t.arrayRef?.index;if(F===void 0)return e;for(let[i,s]of Object.entries(e))e[i]=F0.patchValueWithArrayInfo(s,F);return e}var ux=J0(require("semver"));var dx=J0(require("semver"));var sA={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},Ee={max_size:1e5,max_fields:1e3},bx={max_size:4e3,max_fields:1e3},cx={max_size:1024,max_fields:1e3},aA={configA:Ee,configB:Ee,configC:Ee,config0:bx,config1:bx,config2:bx,config3:bx,config4:bx,config5:bx,config6:bx,config7:bx,config8:bx,config9:bx,histdata0:cx,histdata1:cx,histdata2:cx,histdata3:cx,histdata4:cx,histdata5:cx,histdata6:cx,histdata7:cx,histdata8:cx,histdata9:cx,aloha:{...cx,warn_fields:10},alerts:{max_size:13,max_fields:0,exact_match:!0},applog:{max_size:125,max_fields:0,exact_match:!1}},sr={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:aA,auto_inc:{...sA,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:aA,auto_inc:{...sA,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:aA,auto_inc:{...sA,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:aA,auto_inc:{...sA,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:aA,auto_inc:{...sA,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:aA,auto_inc:{...sA,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 fe=require("vscode-uri");var H0=p0.ContainerType,l0=p0.TransferDirection,GA=p0.regexRelation,Qn=p0.CONFIG_CONTAINER,Ce=p0.CONTAINER_DEF_DLO_CID_BASE,MA=p0.CONTAINER_DEFS,or=p0.fieldTypeDefinitions,We=F0.isNumeric;function ax(t){let e=or[t.type];return e.pwn.rwp||(e.pwn.rwp="%n"),e.pwn.htype||(e.pwn.htype=e.pwn.rwfunc),e.pwn}var ar="Microtronics/dlo-core";function De(t){return O.isLibrary(t)&&t.name==="dlo-core"?t.version:t.libraryDependencies&&Object.hasOwn(t.libraryDependencies,ar)?_0.rangeToVersion(t.libraryDependencies[ar]):t.libraryDevDependencies&&Object.hasOwn(t.libraryDevDependencies,ar)?_0.rangeToVersion(t.libraryDevDependencies[ar]):null}function xi(t){let e=De(t);return e===null||dx.gte(e,"0.3.0")?dx.valid(t.version)?t.version:dx.coerce(`${t.version}`):dx.coerce(t.version)?.major}function Be(t){let e=De(t);if(e===null)return!1;let F=dx.coerce(e);return dx.gte(F,"1.1.0")}function Ai(t){let e=De(t);if(e===null)return!1;let F=dx.coerce(e);return dx.gte(F,"1.15.0")}var ri=["u8","u16","u32","s8","s16","s32","s64","f16","f32","f64"];function ei(t){if(t.type==="ustring")return!1;if(t.defaultValue!=="NaN")return!0;let e=ax(t);return!e||e==="skip"?!1:ri.includes(`${e.rwfunc}`)}function ti(t,e,F){t("PROJECT META");let{dpid:i,registry:s}=F;if(!i)throw new Error('Setting "dpid" is required to generate dlo files');let{auto_inc:E}=sr[i];e("APM_DPID",`${i}`),e(`APM_DPID_${i}`,"1"),e(`APM_DPID_${i.toUpperCase()}`,"1"),e("APM_ID",s?.id||"");let o=xi(F);e("APM_VERSION",`${o}`),e("APM_NAME",`${F.name}`),e("APM_AUTHOR",`${F.publisher}`);for(let[C,c]of Object.entries(E))We(c)?e(C,`${c}`):e(C,`"${c}"`)}function ni(t,e,F,i){let s=i.flat,{definesWithSource:E}=i;e("GLOBAL DEFINES");for(let[o,C]of Object.entries(s)){let c=E[o]?.comment;if(c){let b=c.split(`
1645
- `);if(b.length===1)t(`/** ${b[0]} */`);else{t("/**");for(let p of b)t(` * ${p}`);t(" */")}}let j=Object.hasOwn(s,C);F(o,`${C}`,j)}}function ii(t,e,F,i){let s=parseInt(t.substring(6)),E=1<<s;F[s]=e.size,i.cx_isupm|=[l0.both,l0.none,l0.deviceOnly,l0.up,l0.upPlus].includes(e.transferDirection)?E:0,i.cx_isvolatilem|=e.volatile?E:0,i.cx_isdnm|=[l0.both,l0.none,l0.deviceOnly,l0.down,l0.downPlus].includes(e.transferDirection)?E:0,i.cx_isvlm|=[l0.bothPlus,l0.upPlus,l0.downPlus].includes(e.transferDirection)?E:0}function Fi(t,e,F,i){let s=parseInt(t.substring(8));F[s]=e.size,i.hx_isvlm|=[l0.upPlus].includes(e.transferDirection)?1<<s:0}function si(t){return[l0.upPlus].includes(t.transferDirection)}function ai(t,e,F){let i=0,s=Array(10).fill(0),E={cx_isupm:0,cx_isvolatilem:0,cx_isdnm:0,cx_isvlm:0},o=0,C=Array(10).fill(0),c={hx_isvlm:0},j;for(let[p,k]of Object.entries(F.containers))k.containerType===H0.cx&&k.transferDirection!==l0.backendOnly?(ii(p,k,s,E),i=Math.max(i,k.size)):k.containerType===H0.hx?(Fi(p,k,C,c),i=Math.max(i,k.size)):k.containerType===H0.aloha&&(j=si(k),i=Math.max(i,k.size));e("DDE CORE"),t(`#define _DDE_BUF_BYTES (${i}+10)`),t(""),t("// c0 c1 c2 c3 c4 c5 c6 c7 c8 c9"),t(`stock _DDE_CONFIGS_size[] =[ ${s.join(", ")}];`),t(`#define _DDE_CONFIGS_upm 0b${E.cx_isupm.toString(2)} // ..is tolerant when reading back container with under-length`),t(`#define _DDE_CONFIGS_volatilem 0b${E.cx_isvolatilem.toString(2)} // inits container as volatile`),t(`#define _DDE_CONFIGS_downm 0b${E.cx_isdnm.toString(2)} // reading the container expects strict length`),t(`#define _DDE_CONFIGS_varlenm 0b${E.cx_isvlm.toString(2)} // allow partial write (dde_wxxx)`),t(`#define _DDE_CONFIGS_rdef 0b${o.toString(2)} // ..apply defaults reading a container with under-length`),t(""),t("// h0 h1 h2 h3 h4 h5 h6 h7 h8 h9"),t(`stock _DDE_HISTS_size[] =[ ${C.join(", ")}];`),t(`#define _DDE_HISTS_varlenm 0b${c.hx_isvlm.toString(2)} // allow partial write (dde_wxxx)`);let b=[...C];Object.hasOwn(F,"applog")&&b.push(125),Object.hasOwn(F,"alerts")&&b.push(13),t(`#define _DDE_HISTS_maxsize ${Math.max(...b)}`),t(""),j!==void 0&&(t(`#define _DDE_ALOHA_varlen ${j?1:0}`),t(""))}function oi(t,e,F){for(let[i,s]of Object.entries(F.containers)){if(s.containerType==="applog")continue;e(`${s.title.toUpperCase()} - ${s.transferDirection} via #${i}`);let E=Ce(s.containerType,s.transferDirection);if(!E){t("// ... container not available in DLO");continue}let o=`DDE_${s.containerType===H0.aloha?H0.aloha:s.title}`,C=MA[i];t(`// ${o}_id - container identifier required for ${o}_read/_write operations`),t(`#define ${o}_id (${E}+${C.cnum||0})`),t(`// ${o}_sz - [byte] container total size`),t(`#define ${o}_sz ${s.size}`),C.cnum!==void 0&&(t(`// ${o}_idx - 0+ container index number`),t(`#define ${o}_idx ${C.cnum}`))}}function Xe(t,e,F){let i=[],s=i.push.bind(i);function E(C){s(`
1641
+ Accepts a number or a relation link (\`@container.field\`).`,$ref:"#/$defs/relationLinkPattern"}}};var lr=require("yaml");var Rx=require("yaml");var LA;(e=>e.CODE={ddeFieldLength:"field_name_length"})(LA||={});var p0;(H=>{let t;(D0=>(D0.state="state",D0.result="result",D0.aloha="aloha",D0.volatile="volatile",D0.setting="setting",D0.command="command",D0.storage="storage",D0.relations="relations"))(t=H.DDEContainerName||={});let e;(A0=>(A0.configA="configA",A0.configB="configB",A0.configC="configC",A0.config0="config0",A0.config1="config1",A0.config2="config2",A0.config3="config3",A0.config4="config4",A0.config5="config5",A0.config6="config6",A0.config7="config7",A0.config8="config8",A0.config9="config9",A0.histdata0="histdata0",A0.histdata1="histdata1",A0.histdata2="histdata2",A0.histdata3="histdata3",A0.histdata4="histdata4",A0.histdata5="histdata5",A0.histdata6="histdata6",A0.histdata7="histdata7",A0.histdata8="histdata8",A0.histdata9="histdata9",A0.aloha="aloha",A0.alerts="alerts",A0.applog="applog"))(e=H.ContainerName||={});let F;(Q=>(Q.cx="cx",Q.hx="hx",Q.cb="cb",Q.aloha="aloha",Q.applog="applog"))(F=H.ContainerType||={});let i;(u0=>(u0.up="up",u0.down="down",u0.upPlus="up+",u0.downPlus="down+",u0.none="none",u0.backendOnly="backend-only",u0.deviceOnly="device-only",u0.both="both",u0.bothPlus="both+",u0.noneBackend="none-be"))(i=H.TransferDirection||={});function a(R,W){return R==="cx"&&!["backend-only"].includes(W)?"DDE_CID_CONFIG":R==="hx"?"DDE_CID_HISTDATA":R==="aloha"?"DDE_CID_ALOHA":null}H.CONTAINER_DEF_DLO_CID_BASE=a;let E=["up","up+","down","down+","both","none","both+","backend-only","device-only"],o=["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:E},config1:{ctype:"cx",cnum:1,alias:"",flds:"field",xmits:E},config2:{ctype:"cx",cnum:2,alias:"",flds:"field",xmits:E},config3:{ctype:"cx",cnum:3,alias:"",flds:"field",xmits:E},config4:{ctype:"cx",cnum:4,alias:"",flds:"field",xmits:E},config5:{ctype:"cx",cnum:5,alias:"",flds:"field",xmits:E},config6:{ctype:"cx",cnum:6,alias:"",flds:"field",xmits:E},config7:{ctype:"cx",cnum:7,alias:"",flds:"field",xmits:E},config8:{ctype:"cx",cnum:8,alias:"",flds:"field",xmits:E},config9:{ctype:"cx",cnum:9,alias:"",flds:"field",xmits:E},histdata0:{ctype:"hx",cnum:0,alias:"",flds:"ch",xmits:o},histdata1:{ctype:"hx",cnum:1,alias:"",flds:"ch",xmits:o},histdata2:{ctype:"hx",cnum:2,alias:"",flds:"ch",xmits:o},histdata3:{ctype:"hx",cnum:3,alias:"",flds:"ch",xmits:o},histdata4:{ctype:"hx",cnum:4,alias:"",flds:"ch",xmits:o},histdata5:{ctype:"hx",cnum:5,alias:"",flds:"ch",xmits:o},histdata6:{ctype:"hx",cnum:6,alias:"",flds:"ch",xmits:o},histdata7:{ctype:"hx",cnum:7,alias:"",flds:"ch",xmits:o},histdata8:{ctype:"hx",cnum:8,alias:"",flds:"ch",xmits:o},histdata9:{ctype:"hx",cnum:9,alias:"",flds:"ch",xmits:o},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"],w=["int8","int16","int32","int64","uint8","uint16","uint32","float16","float32","float64"];H.allowedRelationTypes={title:k,unit:k,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 y(R,W,K){let L=W[R];if(L!==void 0)if(H.regexRelation.exec(`${L}`)){let Z=R==="chartSetPoint",[Q,...e0]=L.split("."),[,f0]=Q.split("@"),D0=Object.values(K.containers).find(Q0=>Q0.title===f0),o0=e0.join("."),u0=Z?";":"%",M0=(Z?"":"%")+(D0?.name||f0)+u0;if(M0=M0+`${o0}`,Z){let Q0=K.setPointList[W.name];M0=M0+`;actual_output_value_${Q0}`}return M0}else return L}H.parseXMLValueWithRelation=y;function q(R){let{bitmask:W}=R;if(!W)return;let K="$",L=W.replaceAll(" ","");if(W.startsWith("0x"))K+=L.substring(2);else if(L.startsWith("0b")){let Z=L.substring(2).replaceAll(" ","");K+=parseInt(Z,2).toString(16).toUpperCase()}return K}H.parseXMLBitmask=q;function N(R){return R.type==="binary"?R.defaultValue.substring(2):R.defaultValue==="NaN"?"NAN":R.defaultValue}H.parseXMLDefaultValue=N,H.TDEF_NUMBER={xmlOut(R,W,K){R.decpl=y("decimalPlaces",W,K),R.decpl===void 0&&(R.decpl=0),R.vscale=y("scale",W,K),R.vofs=y("offset",W,K),R.min=y("chartMinimum",W,K),R.max=y("chartMaximum",W,K)}};let M={isBlob:1,xmlOut(R,W){R.max=W.byteSize}},P={xmlOut(R){R.decpl=-1,R.param0="local",R.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,...P,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,...P,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,...M,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,...M,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,...M,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,...M,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,...M,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,...M,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 I=["_id","id","_stamp","stamp","tag","_uid","customer_id","site_id","_rec_flags__","applog"];function z(R){let W=R.toLowerCase();return I.includes(W)||/^field\d+$/.test(W)||/^ch\d+$/.test(W)}H.checkForReservedFieldName=z;function J(R){return!!R.fields.find(W=>W.library===null&&W.type!=="shadow")}H.hasContainerAppFields=J})(p0||={});var Ox=p0.DDEContainerName,Je=p0.allowedRelationTypes,Kn=p0.regexRelation,Vn=p0.ContainerType,Wn=p0.checkForReservedFieldName,Fr=p0.ContainerName,Ke=p0.CONTAINER_DEFS,Xn=p0.SERVER_CONTAINER,Yn=p0.HISTDATA_CONTAINER,Zn=p0.CONFIG_CONTAINER,aA=p0.TransferDirection,Ve=p0.fieldTypeDefinitions,ax=i0.yamlRangeToLineInformation,sr;(e=>{class t{constructor(i,a,E){this.manifest=i;this.libraryFiles=a;this.ddeHistory=E}manifest;libraryFiles;ddeHistory;fieldNamesPerContainer={};usedContainerNames={};fileDiagnostics=[];libraryDDE=[];libraryYaml={};parseLibraries(){this.libraryDDE.length=0;let i=[];return this.libraryFiles.forEach(a=>{let{parsedDDE:E,diagnostics:o,parsedYaml:C}=this.parseYamlFile(a.path,a.yaml,a.libraryName);i.push(...o),this.libraryDDE.push(E),this.libraryYaml[a.libraryName]=C}),i}get previousVersion(){return{setPointList:{...this.ddeHistory?.setPointList},containers:{...this.ddeHistory?.containers}}}getContainerOfPreviousVersion(i){let a=this.previousVersion,E=i.startsWith("timeseries_")?i.substring(11):i;return Object.values(a.containers).find(o=>o.title===E)||null}parseMainDDE(i,a){let{parsedDDE:E,diagnostics:o}=this.parseYamlFile(i,a);return o.find(j=>j.level==="error")?{ddeJSON:null,diagnostics:o}:{ddeJSON:this.mergeAndFormat(E),diagnostics:o}}parseYamlFile(i,a,E){this.fileDiagnostics.length=0;let o=new Rx.LineCounter,C=(0,Rx.parseDocument)(a,{lineCounter:o});if(!C.contents)return{parsedDDE:{containers:{},setPointList:{}},diagnostics:[],parsedYaml:null};let c=C.contents||new Rx.YAMLMap;return this.validateContainerDefinition(c.items).forEach(u=>{this.validateAllowedContainer(i,u,o,E),this.validateContainerFields(C,i,u,o)}),{parsedDDE:this.yamlDocToDdeJson(C.toJS({mapAsMap:!0}),E),diagnostics:[...this.fileDiagnostics],parsedYaml:C}}yamlDocToDdeJson(i,a){let E={containers:{},setPointList:{}},o=new Map,C=[...Object.values(Ox)];if(i.get("cloudProject")){let j=Object.values(this.previousVersion.containers).map(p=>p.title),u=[...new Set([...C,...j])];C.length=0,C.push(...u)}for(let j of C)i.has(j)&&o.set(j,i.get(j));let c=i.get("timeseries");if(c)for(let[j,u]of c)o.set(j,u);for(let[j,u]of o){let{realContainer:p,transferDirection:k,legacyTitle:w}=this.getRealContainerInformation(j);if(!p)continue;let b=Ke[p],y=j.includes("timeseries_")?j.replace("timeseries_",""):j,q={name:p,title:y,previousTitle:w,containerType:b.ctype,volatile:j===Ox.volatile,transferDirection:k,fieldCount:u.size,knownNames:[],libraries:[],arrays:{},shadows:{},fields:[],size:0,fieldIndex:0};a&&q.libraries.push(a);for(let[N,G]of u){let M=[],P=G.get("type"),g=Ve[P];if(!(!g&&P!=="array")){if(P==="array"){let _=[],I=G.get("length"),z=G.get("fields"),J={name:N,length:I,library:a||null,fields:[]};q.arrays[N]=J;for(let H=0;H<I;H++){let R={name:N,index:H};for(let[W,K]of z){let L=Ve[K.get("type")];if(!L)continue;J.fields?.find(f0=>f0.name===W)||J.fields.push({name:W,type:K.get("type"),byteSize:L.len||K.get("bytes")||K.get("length")});let Z=`${N}[${H}].${W}`,{fields:Q,shadowInfo:e0}=this.createDDEJsonFields(Z,a,L,K);Q.forEach(f0=>{f0.arrayRef=R}),e0&&(q.shadows[e0.name]=e0),_.push(...Q)}}M.push(..._)}else{let{arrayInfo:_,fields:I,shadowInfo:z}=this.createDDEJsonFields(N,a,g,G);_&&(q.arrays[_.name]=_),z&&(q.shadows[z.name]=z),M.push(...I)}M.forEach(_=>{_.index=++q.fieldIndex,q.fields.push(_),q.size+=_.byteSize})}}E.containers[p]=q}return E}getRealContainerInformation(i){let a,E,o;if(this.previousVersion){let C=i.startsWith("timeseries_")?i.substring(11):i,{name:c,direction:j,previousTitle:u}=this.findPreviousUsedContainer(C);a=c,E=j,o=u}if(!a){let C=Object.entries(this.usedContainerNames).find(([,c])=>c===i);C&&(a=C[0])}return a||(a=this.findNextFreeContainer(i)),this.usedContainerNames[a]=i,E||(E=[Ox.setting,Ox.command].includes(i)?aA.down:aA.up),E===aA.up&&a&&Ke[a].xmits.includes(aA.upPlus)&&(E=aA.upPlus),a&&[Fr.configA,Fr.configB].includes(a)&&(E=aA.backendOnly),{realContainer:a,transferDirection:E,legacyTitle:o}}findNextFreeContainer(i){if(i===Fr.aloha)return Fr.aloha;let a=Zn;i.startsWith("timeseries_")?a=Yn:[Ox.relations,Ox.storage].includes(i)&&(a=Xn);let E=this.previousVersion?.containers;return E&&(a=a.filter(o=>!Object.hasOwn(E,o))),a.find(o=>!Object.hasOwn(this.usedContainerNames,o))}findPreviousUsedContainer(i){let a=this.previousVersion.containers,E=Object.values(a).find(o=>o.title===i);return{name:E?.name,direction:E?.transferDirection,previousTitle:E?.previousTitle}}createDDEJsonFields(i,a,E,o){let C=o.get("array"),c=[],j,u;if(C){j={name:i,library:a||null,length:C};for(let p=0;p<C;p++){let k=`${i.toLowerCase()}[${p}]`;c.push(this.buildDDEJsonField(k,o,{name:i,index:p},E,a,null))}}else{let p=this.buildDDEJsonField(i,o,null,E,a,null);c.push(p);let k=o.get("shadowFields");if(k){u={name:p.name,byteSize:p.byteSize,byteOffset:p.byteOffset};for(let[w,b]of k){let y=w;i.includes(".")&&(y=i.split(".")[0]+`.${w}`),c.push(this.buildDDEJsonField(y,b,null,E,a,p.name))}}}return{arrayInfo:j,shadowInfo:u,fields:c}}buildDDEJsonField(i,a,E,o,C,c){return{id:i.toLowerCase(),name:i,index:0,library:C||null,byteOffset:0,byteSize:o.len||a.get("bytes")||a.get("length"),type:a.get("type"),title:a.get("title")||null,arrayRef:E,shadowRef:c,unit:a.get("unit"),hex:a.get("hex"),decimalPlaces:a.get("decimalPlaces"),writePermission:this.parseUserLevel(a.get("writePermission")),readPermission:this.parseUserLevel(a.get("readPermission")),channelMode:this.parseChannelMode(a.get("channelMode")),defaultValue:a.get("defaultValue"),scale:a.get("scale"),offset:a.get("offset"),chartMinimum:a.get("chartMinimum"),description:a.get("description"),chartMaximum:a.get("chartMaximum"),chartAlarmLow:a.get("chartAlarmLow"),chartAlarmHigh:a.get("chartAlarmHigh"),chartWarningLow:a.get("chartWarningLow"),chartWarningHigh:a.get("chartWarningHigh"),chartHysteresis:a.get("chartHysteresis"),chartTriggerThreshold:a.get("chartTriggerThreshold"),chartTriggerRelation:this.parseTriggerUndershoot(a.get("chartTriggerRelation")),chartSetPoint:a.get("chartSetPoint"),utilsTransferInterval:!!a.get("utilsTransferInterval"),bitmask:a.get("bitmask")}}resolvePossibleAlias(i,a){return(0,Rx.isAlias)(a)?a.resolve(i).value:a?.value}validateContainerDefinition(i){let a=[];return i.forEach(E=>{let C=E.key.value;C==="timeseries"?E.value.items.forEach(c=>{c.key.value=`timeseries_${c.key}`,a.push(c)}):["dde","cloudProject","constants"].includes(C)||a.push(E)}),a}parseUserLevel(i){if(i==="read-only")return 99;if(i?.startsWith("UL"))return Number(i.substring(2))}parseChannelMode(i){if(i)return{digital:1,"day-counter":2,"interval-counter":3,analog:6,"infinite-counter":12}[i]??i}parseTriggerUndershoot(i){if(i)return{"greater-or-equal":0,"less-or-equal":1}[i]??i}validateAllowedContainer(i,a,E,o){if(!a.value)return;let c=a.key.value;if(o&&(c.startsWith("aloha")||c.startsWith("timeseries"))){let j=c.includes("_")?c.split("_")[1]:c;this.fileDiagnostics.push({file:i,level:"error",message:`"${j}" not allowed within a library`,...ax(E,a.key.range)})}if(U.isAnalytics(this.manifest)&&![Ox.relations,Ox.storage].includes(c)){let j=c.includes("_")?c.split("_")[1]:c;this.fileDiagnostics.push({file:i,level:"error",message:`"${j}" not allowed within an analytics app. Only "relations" and "storage" are allowed.`,...ax(E,a.key.range)})}}validateContainerFields(i,a,E,o){let C=E.value;if(!C)return;let c=E.key.value;Object.hasOwn(this.fieldNamesPerContainer,c)||(this.fieldNamesPerContainer[c]=[]);let j=this.getContainerOfPreviousVersion(c);C.items.forEach(u=>{let k=u.key.value;this.checkForContainerRelation(u,i,a,o),this.validateFieldName(u,c,a,o),this.checkFieldNameLength(u,c,a,o);let w=j?.fields.find(M=>M.id===k.toLowerCase()),b=u.value,y=b.get("type",!0),q=this.resolvePossibleAlias(i,y),N=b.get("bytes",!0),G=this.resolvePossibleAlias(i,N);w&&(y&&q&&w.type!==q&&this.fileDiagnostics.push({file:a,level:"warning",message:`Field type changed from "${w.type}" to "${q}".
1642
+ Changing the type of an existing field can result in data loss or unexpected behaviour.`,...ax(o,y.range)}),N&&G&&w.byteSize!==G&&this.fileDiagnostics.push({file:a,level:"warning",message:`Byte size changed from '${w.byteSize}' to '${G}'.
1643
+ Changing the size of an existing field can result in data loss or unexpected behaviour.`,...ax(o,N.range)}))})}checkForContainerRelation(i,a,E,o){let C=i.value.get("fields");C&&C.items.forEach(j=>{this.checkForContainerRelation(j,a,E,o)}),i.value.items.forEach(j=>{let u=j.value;if(u?.value&&Kn.exec(`${u.value}`)){let p=j.key.value;if(p){if(!Object.hasOwn(Je,p))return this.fileDiagnostics.push({file:E,level:"error",message:`Property "${p}" does not allow relations.`,...ax(o,u.range)});if(["scale","offset"].includes(p))return this.fileDiagnostics.push({file:E,level:"warning",message:`Container relations for "${p}" are not available within the dlo source.`,...ax(o,u.range)})}return this.validateContainerRelation(p,u,a,E,o)}})}validateFieldName(i,a,E,o){let C=this.fieldNamesPerContainer[a],c=i.key,j=c.value;Wn(j)&&this.fileDiagnostics.push({file:E,level:"error",message:`Reserved property "${j}" is not allowed.`,...ax(o,c.range)});let u=i.value.get("shadowFields");u&&u.items.forEach(p=>{this.validateFieldName(p,a,E,o)}),C.includes(j.toLowerCase())?this.fileDiagnostics.push({file:E,level:"error",message:`Field name "${j}" is already occupied`,...ax(o,c.range)}):C.push(j.toLowerCase())}checkFieldNameLength(i,a,E,o){let C=i.key,c=C.value,u=`DDE_${a.startsWith("timeseries")?a.substring(10):a}_`,p=31-u.length;u.length+c.length>31&&this.fileDiagnostics.push({file:E,level:"error",code:LA.CODE.ddeFieldLength,message:`Field name "${c}" to long. ${p} characters allowed for this field/container.`,...ax(o,C.range)})}validateContainerRelation(i,a,E,o,C){let[c,j,u]=a.value.split(".",3),[p,k]=c.split("@"),w=p?p.split(":")[1]:null,y=(w&&this.libraryYaml[w]?this.libraryYaml[w]:E).contents?.get(k),q=j.split("[")[0],N=null;if(y){let G=y.get(q);if(G)if(u){let M=G.get("fields");M&&M.get(u)&&(N=M.get(u))}else N=G;else N=this.findRelatedShadowField(y,q)}if(N){let G=Je[i],M=N.get("type");G.includes(M)||this.fileDiagnostics.push({file:o,level:"error",message:`Related field type "${M}" is not allowed for attribute "${i}".`,...ax(C,a.range)})}else w&&!this.libraryYaml[w]?this.fileDiagnostics.push({file:o,level:"error",message:`Related library "${w}" does not exist.`,...ax(C,a.range)}):this.fileDiagnostics.push({file:o,level:"error",message:`Related field "${a.value}" does not exist.`,...ax(C,a.range)})}findRelatedShadowField(i,a){for(let E of i.items){let C=E.value.get("shadowFields");if(!C)continue;let c=C.get(a);if(c)return c}}mergeAndFormat(i){let a={containers:{},setPointList:{}};for(let E of this.libraryDDE)this.combineDDE(a,E);return this.combineDDE(a,i),this.sortContainerFields(a),this.generateSetPointList(a),a}combineDDE(i,a){for(let[E,o]of Object.entries(a.containers)){let C=i.containers[E];C?(C.title=o.title,C.knownNames.unshift(o.title),C.libraries.push(...o.libraries),C.fields.push(...o.fields),C.arrays={...C.arrays,...o.arrays},C.shadows={...C.shadows,...o.shadows}):(C=i.containers[E]=structuredClone(o),C.knownNames.unshift(o.title),C.fieldCount=C.fields.length,C.fieldIndex=0);let c=this.initialContainerByteOffset(C);for(let[j,u]of C.fields.entries()){if(u.shadowRef){let p=C.shadows[u.shadowRef];u.byteOffset=p.byteOffset}else u.byteOffset=c,this.updateShadowFieldInformation(i.containers[E],u),c+=u.byteSize||0;j>C.fieldCount-1&&(u.index+=C.fieldIndex)}C.fieldIndex+=o.fieldIndex,C.knownNames=[...new Set(C.knownNames)],C.libraries=[...new Set(C.libraries)],C.fieldCount=C.fields.length}}initialContainerByteOffset(i){return i.containerType===Vn.hx?1:0}updateShadowFieldInformation(i,a){a&&Object.hasOwn(i.shadows,a.name)&&(i.shadows[a.name].byteOffset=a.byteOffset)}sortContainerFields(i){for(let a of Object.values(i.containers)){let{sortedFields:E,containerSize:o}=this.sortFields(a);a.fields=E,a.size=o,a.fieldCount=a.fields.length}}sortFields(i){let a=i.fields.filter(p=>!p.shadowRef),E=i.fields.filter(p=>p.shadowRef),o=[],C=i.name;if(this.previousVersion.containers[C]){let p=this.sortPreviousContainerFields(i,a);o.push(...p)}else o.push(...a);o.forEach(p=>{this.updateShadowFieldInformation(i,p)});let j=o[o.length-1],u=j.byteSize+j.byteOffset;return E.forEach(p=>{p.byteOffset=i.shadows[p.shadowRef].byteOffset,o.push(p)}),{sortedFields:o,containerSize:u}}sortPreviousContainerFields(i,a){let E=i.name,o=this.previousVersion.containers[E],C=[],c=this.initialContainerByteOffset(i);for(let j of o.fields){if(j.shadowRef)continue;let u=a.findIndex(k=>j.id===k.name?.toLowerCase());if(u===-1){c=j.byteOffset+j.byteSize;continue}let p=a[u];if(j.type!==p.type&&j.byteSize!==p.byteSize){c=j.byteOffset+j.byteSize;continue}p.byteOffset=j.byteOffset,a.splice(u,1),C.push(p),c=this.initialContainerByteOffset(i)}if(c>this.initialContainerByteOffset(i)){let j=a.shift();C.push(...this.generatePlaceholderFieldIfNeeded(c,j)),this.updateShadowFieldInformation(i,j)}for(let j of a){if(j.shadowRef)j.byteOffset=i.shadows[j.shadowRef].byteOffset;else{this.updateShadowFieldInformation(i,j);let u=C[C.length-1];u.shadowRef&&(u=i.shadows[u.shadowRef]),j.byteOffset=u.byteOffset+u.byteSize}C.push(j)}return C}generatePlaceholderFieldIfNeeded(i,a){let E=[];if(a)a.byteOffset=i,E.push(a);else{let o={byteOffset:i,byteSize:0,id:"_shadow",library:null,name:"_shadow",type:"shadow",arrayRef:null,shadowRef:null,title:null,index:0};E.push(o)}return E}generateSetPointList(i){i.setPointList={...this.previousVersion.setPointList||{}};for(let a of Object.values(i.containers))for(let E of a.fields)E.chartSetPoint&&(Object.hasOwn(i.setPointList,E.name)||(i.setPointList[E.name]=this.getNextSetpointValue(i.setPointList)))}getNextSetpointValue(i){let a=[...Object.values(i),0];return Math.max(...a)+1}}e.PreCompiler=t})(sr||={});var tx=p0.TransferDirection,cx=p0.parseXMLValueWithRelation,Qn=p0.parseXMLBitmask,xi=p0.parseXMLDefaultValue,Ai=p0.fieldTypeDefinitions;function ve(t,e){let i=[];function a(C,c=!0){if(c){if(Array.isArray(C)){i.push.apply(i,C);return}i.push(""+C)}}function E(C,c){C!=="mergeofs"&&a(`${C}=${c}`)}a("// DDE STRUCTURE created by Microtronics Studio");let o="source=rm2mraw";for(let[C,c]of Object.entries(e.containers)){C.startsWith("histdata")&&c.transferDirection!==tx.deviceOnly&&(a("<split>"),a(o),a("target="+C),a("key=0"+C.substr(-1,1)),a("</split>")),a("<table>"),E("name",C),E("alias",c.title),E("title",c.title.replace("_"," "));let j={};[tx.none,tx.backendOnly,tx.deviceOnly,tx.down,tx.downPlus].includes(c.transferDirection)&&E("upload","0"),[tx.none,tx.backendOnly,tx.deviceOnly,tx.up,tx.upPlus].includes(c.transferDirection)&&E("download","0"),(U.isIotApp(t)||U.isLibrary(t))&&[tx.up,tx.upPlus].includes(c.transferDirection)&&E("edit","99");for(let u of c.fields){if(u.type==="shadow")continue;let p=ri(u),k=Ai[p.type],w=cx("title",p,e)||p.name;!w.startsWith("%")&&p.library&&(w=`${p.library}: ${w}`);let b={title:w,alias:p.name,index:u.index,...j};b.byteofs=`${p.byteOffset}`;for(let[y,q]of Object.entries(k.xml))b[y]=q;Object.hasOwn(k,"xmlOut")&&k.xmlOut(b,p,e),b.units=cx("unit",p,e),b.chmode=cx("channelMode",p,e),b.ialarm_high=cx("chartAlarmHigh",p,e),b.ialarm_low=cx("chartAlarmLow",p,e),b.iwarn_high=cx("chartWarningHigh",p,e),b.iwarn_low=cx("chartWarningLow",p,e),b.hysterese=cx("chartHysteresis",p,e),b.itrigger=cx("chartTriggerThreshold",p,e),b.itriggerus=cx("chartTriggerRelation",p,e),b.setpoint=cx("chartSetPoint",p,e),b.bitmask=Qn(p),p.hex&&(b.editmask="%HEX%"),p.readPermission&&(b.view=p.readPermission),p.writePermission&&(b.edit=p.writePermission),p.defaultValue!==void 0&&(b.default=xi(p)),p.utilsTransferInterval===!0&&(b.param0="%FFFF0005%transfer_interval"),a("<field>"),p.library&&a(`// declared by ${p.library} library`,!0);for(let[y,q]of Object.entries(b))q!==void 0&&E(y,`${q}`);a("</field>")}["alerts","applog"].includes(C)||(a("</table>"),a("// "+c.size+" bytes total size"))}return a("<split>"),a(o),a("target=alarm0"),a("key=20"),a("</split>"),a("<split>"),a(o),a("target=applog0"),a("key=28"),a("</split>"),i.join(`
1644
+ `)}function ri(t){let e=structuredClone(t),F=t.arrayRef?.index;if(F===void 0)return e;for(let[i,a]of Object.entries(e))e[i]=i0.patchValueWithArrayInfo(a,F);return e}var mx=J0(require("semver"));var jx=J0(require("semver"));var oA={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},Ee={max_size:1e5,max_fields:1e3},bx={max_size:4e3,max_fields:1e3},dx={max_size:1024,max_fields:1e3},vA={configA:Ee,configB:Ee,configC:Ee,config0:bx,config1:bx,config2:bx,config3:bx,config4:bx,config5:bx,config6:bx,config7:bx,config8:bx,config9:bx,histdata0:dx,histdata1:dx,histdata2:dx,histdata3:dx,histdata4:dx,histdata5:dx,histdata6:dx,histdata7:dx,histdata8:dx,histdata9:dx,aloha:{...dx,warn_fields:10},alerts:{max_size:13,max_fields:0,exact_match:!0},applog:{max_size:125,max_fields:0,exact_match:!1}},ar={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:vA,auto_inc:{...oA,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:vA,auto_inc:{...oA,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:vA,auto_inc:{...oA,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:vA,auto_inc:{...oA,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:vA,auto_inc:{...oA,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:vA,auto_inc:{...oA,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 fe=require("vscode-uri");var H0=p0.ContainerType,c0=p0.TransferDirection,GA=p0.regexRelation,ei=p0.CONFIG_CONTAINER,Ce=p0.CONTAINER_DEF_DLO_CID_BASE,IA=p0.CONTAINER_DEFS,vr=p0.fieldTypeDefinitions,Xe=i0.isNumeric;function ox(t){let e=vr[t.type];return e.pwn.rwp||(e.pwn.rwp="%n"),e.pwn.htype||(e.pwn.htype=e.pwn.rwfunc),e.pwn}var or="Microtronics/dlo-core";function De(t){return U.isLibrary(t)&&t.name==="dlo-core"?t.version:t.libraryDependencies&&Object.hasOwn(t.libraryDependencies,or)?_0.rangeToVersion(t.libraryDependencies[or]):t.libraryDevDependencies&&Object.hasOwn(t.libraryDevDependencies,or)?_0.rangeToVersion(t.libraryDevDependencies[or]):null}function ti(t){let e=De(t);return e===null||jx.gte(e,"0.3.0")?jx.valid(t.version)?t.version:jx.coerce(`${t.version}`):jx.coerce(t.version)?.major}function Be(t){let e=De(t);if(e===null)return!1;let F=jx.coerce(e);return jx.gte(F,"1.1.0")}function ni(t){let e=De(t);if(e===null)return!1;let F=jx.coerce(e);return jx.gte(F,"1.15.0")}var ii=["u8","u16","u32","s8","s16","s32","s64","f16","f32","f64"];function Fi(t){if(t.type==="ustring")return!1;if(t.defaultValue!=="NaN")return!0;let e=ox(t);return!e||e==="skip"?!1:ii.includes(`${e.rwfunc}`)}function si(t,e,F){t("PROJECT META");let{dpid:i,registry:a}=F;if(!i)throw new Error('Setting "dpid" is required to generate dlo files');let{auto_inc:E}=ar[i];e("APM_DPID",`${i}`),e(`APM_DPID_${i}`,"1"),e(`APM_DPID_${i.toUpperCase()}`,"1"),e("APM_ID",a?.id||"");let o=ti(F);e("APM_VERSION",`${o}`),e("APM_NAME",`${F.name}`),e("APM_AUTHOR",`${F.publisher}`);for(let[C,c]of Object.entries(E))Xe(c)?e(C,`${c}`):e(C,`"${c}"`)}function ai(t,e,F,i){let a=i.flat,{definesWithSource:E}=i;e("GLOBAL DEFINES");for(let[o,C]of Object.entries(a)){let c=E[o]?.comment;if(c){let u=c.split(`
1645
+ `);if(u.length===1)t(`/** ${u[0]} */`);else{t("/**");for(let p of u)t(` * ${p}`);t(" */")}}let j=Object.hasOwn(a,C);F(o,`${C}`,j)}}function oi(t,e,F,i){let a=parseInt(t.substring(6)),E=1<<a;F[a]=e.size,i.cx_isupm|=[c0.both,c0.none,c0.deviceOnly,c0.up,c0.upPlus].includes(e.transferDirection)?E:0,i.cx_isvolatilem|=e.volatile?E:0,i.cx_isdnm|=[c0.both,c0.none,c0.deviceOnly,c0.down,c0.downPlus].includes(e.transferDirection)?E:0,i.cx_isvlm|=[c0.bothPlus,c0.upPlus,c0.downPlus].includes(e.transferDirection)?E:0}function vi(t,e,F,i){let a=parseInt(t.substring(8));F[a]=e.size,i.hx_isvlm|=[c0.upPlus].includes(e.transferDirection)?1<<a:0}function Ei(t){return[c0.upPlus].includes(t.transferDirection)}function Bi(t,e,F){let i=0,a=Array(10).fill(0),E={cx_isupm:0,cx_isvolatilem:0,cx_isdnm:0,cx_isvlm:0},o=0,C=Array(10).fill(0),c={hx_isvlm:0},j;for(let[p,k]of Object.entries(F.containers))k.containerType===H0.cx&&k.transferDirection!==c0.backendOnly?(oi(p,k,a,E),i=Math.max(i,k.size)):k.containerType===H0.hx?(vi(p,k,C,c),i=Math.max(i,k.size)):k.containerType===H0.aloha&&(j=Ei(k),i=Math.max(i,k.size));e("DDE CORE"),t(`#define _DDE_BUF_BYTES (${i}+10)`),t(""),t("// c0 c1 c2 c3 c4 c5 c6 c7 c8 c9"),t(`stock _DDE_CONFIGS_size[] =[ ${a.join(", ")}];`),t(`#define _DDE_CONFIGS_upm 0b${E.cx_isupm.toString(2)} // ..is tolerant when reading back container with under-length`),t(`#define _DDE_CONFIGS_volatilem 0b${E.cx_isvolatilem.toString(2)} // inits container as volatile`),t(`#define _DDE_CONFIGS_downm 0b${E.cx_isdnm.toString(2)} // reading the container expects strict length`),t(`#define _DDE_CONFIGS_varlenm 0b${E.cx_isvlm.toString(2)} // allow partial write (dde_wxxx)`),t(`#define _DDE_CONFIGS_rdef 0b${o.toString(2)} // ..apply defaults reading a container with under-length`),t(""),t("// h0 h1 h2 h3 h4 h5 h6 h7 h8 h9"),t(`stock _DDE_HISTS_size[] =[ ${C.join(", ")}];`),t(`#define _DDE_HISTS_varlenm 0b${c.hx_isvlm.toString(2)} // allow partial write (dde_wxxx)`);let u=[...C];Object.hasOwn(F,"applog")&&u.push(125),Object.hasOwn(F,"alerts")&&u.push(13),t(`#define _DDE_HISTS_maxsize ${Math.max(...u)}`),t(""),j!==void 0&&(t(`#define _DDE_ALOHA_varlen ${j?1:0}`),t(""))}function Ci(t,e,F){for(let[i,a]of Object.entries(F.containers)){if(a.containerType==="applog")continue;e(`${a.title.toUpperCase()} - ${a.transferDirection} via #${i}`);let E=Ce(a.containerType,a.transferDirection);if(!E){t("// ... container not available in DLO");continue}let o=`DDE_${a.containerType===H0.aloha?H0.aloha:a.title}`,C=IA[i];t(`// ${o}_id - container identifier required for ${o}_read/_write operations`),t(`#define ${o}_id (${E}+${C.cnum||0})`),t(`// ${o}_sz - [byte] container total size`),t(`#define ${o}_sz ${a.size}`),C.cnum!==void 0&&(t(`// ${o}_idx - 0+ container index number`),t(`#define ${o}_idx ${C.cnum}`))}}function Ye(t,e,F){let i=[],a=i.push.bind(i);function E(C){a(`
1646
1646
  // === ${C} ===
1647
- `)}function o(C,c,j=!1){let b=We(c)?"":'"';j&&(b=""),s(`#define ${C} ${b}${c}${b}`)}return ti(E,o,F),ni(s,E,o,e),ai(s,E,t),oi(s,E,t),i.join(`
1648
- `)}var IA=class{constructor(e,F,i){this.manifest=e;this.ddeMap=F;this.context=i;this.sourceType="pawnSource"}manifest;ddeMap;context;globalVariables=[];pawnGlobalSource=[];pawnHelperSource=[];timeSeriesSource=[];readWriteSource=[];definesSource=[];defaultDefinesSource=[];knownDefines=[];pawnIndent=0;sourceType;pawn(e,F){F&&e==="<"&&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)+(F||e)),F&&e===">"&&this.pawnIndent++}generate(){for(let[e,F]of Object.entries(this.ddeMap.containers))this.context&&!F.libraries.includes(this.context)||!Ce(F.containerType,F.transferDirection)||!F.fields||!this.context&&!p0.hasContainerAppFields(F)||MA[e].ctype!==H0.cx&&this.context||(this.generateGlobalVarsForContainer(F),this.generateReadWriteFunctions(F));return this.mergeSourceTypes(),{globals:this.pawnGlobalSource,helper:this.pawnHelperSource}}createGlobalVar(e,F){this.sourceType="globalVariables";let i=F?this.variableNameForPawnDefinition(e,F):e;if(F){let s=this.generateCommentForField(F);s&&(Array.isArray(s)?(this.pawn("/**"),s.forEach(E=>{this.pawn(` * ${E}`)}),this.pawn(" */")):this.pawn(`// ${s}`))}this.pawn(`stock ${i}${F?this.initialiserForGlobalVar(F):""};`)}initialiserForGlobalVar(e){if(e.defaultDloDefine===void 0||e.arrayRef)return"";let F=ax(e);return!F||F==="skip"||`${F.rwp||""}`.includes("%l")?"":` = ${e.defaultDloDefine}`}insertSection(e){this.pawn(""),this.pawn("// ============================================================================="),this.pawn(`// ${e}`),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(e){this.sourceType="globalVariables",this.pawn(""),this.pawn(`// Container '${e.title.replace("_"," ")}'`),this.pawn("");let F=`DDE_${e.title}`;this.generateArrayDefines(F,e);for(let i of e.fields){if(i.type==="shadow"||i.shadowRef||i.library!==this.context)continue;if(i.arrayRef!==null){let E=e.arrays[i.arrayRef.name],o=`${F}_${i.arrayRef.name}`;E.fields?.length&&(o+=`_${i.name.split(".")[1]}`),this.createDefaultDefineForField(o,i);continue}let s=this.generateFieldVariableName(F,i);this.createDefaultDefineForField(s,i),this.createGlobalVar(`${s}`,i)}}generateArrayDefines(e,F){for(let i of Object.values(F.arrays)){if(this.context!==i.library)continue;let s=`${e}_${i.name}_dim`;if(this.sourceType="defines",this.pawn(`#define ${s} ${i.length}`),i.fields){for(let C of i.fields)or[C.type]?.isBlob&&C.byteSize&&this.addDefine(`${e}_${i.name}_${C.name}_dim`,C.byteSize);let E={...F};E.fields=[],i.fields.forEach(C=>{E.fields.push({arrayRef:null,shadowRef:null,byteOffset:0,byteSize:C.byteSize,id:C.name,library:i.library,name:C.name,type:C.type,title:null,index:0})});let o=`${e}_${i.name}_def`;this.generateTypeDefinitions(E,o),this.createGlobalVar(`${e}_${i.name}[${s}][${o}]`)}else this.createGlobalVar(`${e}_${i.name}[${s}]`)}}generateCommentForField(e){let F=[`@type ${e.type}`];if(e.description&&F.unshift(e.description),e.defaultValue!==void 0){let{value:i,reason:s}=this.parseFieldDefault(e);F.push(`@default ${i} ${s||""}`)}return F}generateFieldVariableName(e,F){let i=`${e}_${F.name}`,s=Object.hasOwn(or,F.type)&&or[F.type].isBlob,E=F.byteSize;return E&&s&&(this.sourceType="defines",this.pawn(`#define ${e}_${F.name}_dim ${E}`),this.pawn(`#define ${e}_${F.name}_iter() for(new i=0;i<${E};i++)`)),this.sourceType="globalVariables",i}generateTypeDefinitions(e,F){this.sourceType="defines";let i=e.fields;if(!i)return;let s=[];this.pawn(">",`#define ${F} [`);for(let E of i){let o=this.generateFieldTypeDefinition(E,e,s,F);o!==null&&this.pawn(o)}this.pawn("<","]")}handleArrayFieldDedup(e,F,i,s){let E=e.arrayRef;if(E){let c=F.arrays[E.name];if(!i.includes(E.name)&&!c.fields)i.push(E.name);else return null}let o=e.arrayRef?e.arrayRef.name:e.name,C=e.arrayRef?`[${s}_${o}_dim]`:"";return{fieldName:o,fld_dim:C}}generateFieldTypeDefinition(e,F,i,s){if(e.type==="shadow"||e.shadowRef||e.library!==this.context)return null;let E=this.handleArrayFieldDedup(e,F,i,s);if(E===null)return null;let{fieldName:o,fld_dim:C}=E,c="";if(e.type==="struct")c="// ."+o+C;else{let j=ax(e);if(!j)return null;j==="skip"?c=`// skipped - .${o}${C}`:c+=j.rwp.replace("%n",`.${o}${C}`).replace("%l",e.byteSize)}return c+=",",e.library&&(c+=` // declared by ${e.library} library`),c}variableNameForPawnDefinition(e,F){let i=ax(F);return i&&i!=="skip"?i.rwp.replace("%n",`${e}`).replace("%l",F.byteSize):e}createDefaultDefineForField(e,F){if(this.sourceType="defaultDefines",F.scale!==void 0&&this.addDefine(`${e}_scale`,F.scale),F.offset!==void 0&&this.addDefine(`${e}_offset`,F.offset),F.defaultValue!==void 0&&ei(F)){let{value:i,reason:s}=this.parseFieldDefault(F),E=`${e}_default`;this.addDefine(E,i,s)&&(F.defaultDloDefine=E)}}addDefine(e,F,i){return GA.exec(`${F}`)?!1:(this.knownDefines.includes(e)||(i&&this.pawn(`// ${i}`),this.pawn(`#define ${e} ${F}`),this.knownDefines.push(e)),!0)}generateReadWriteFunctions(e){let F=e.name,i=MA[F],s=`DDE_${e.containerType===H0.aloha?H0.aloha:e.title}`;[l0.both,l0.bothPlus,l0.none,l0.deviceOnly,l0.up,l0.upPlus].includes(e.transferDirection)&&this.generateWriteMethod(s,e),i.ctype===H0.cx&&this.generateReadMethod(s,e)}generateWriteMethod(e,F){this.sourceType="readWrite";let i=`DDE_${F.title}_id`,s=[H0.hx,H0.aloha].includes(F.containerType),E=F.containerType===H0.hx,o=F.containerType===H0.aloha,C=`_${e}_write`,c=Be(this.manifest)?", flags":"",j=E?`stamp${c}`:"",b=Be(this.manifest)?"const stamp=0, const flags=0":"const stamp=0";this.pawn(">",`stock ${C}(${E?b:""}) {`),s&&this.pawn(`dde_wbegin(DDE_${o?H0.aloha:F.title}_id);`),this.generateRWFunctionBody(e,F,"dde_w"),s&&this.pawn(`return dde_wend(${j});`),this.pawn("<","}"),this.pawn(""),this.sourceType="globalVariables";let p=`${e}_transfer`,k=`${e}_persist`,_=this.functionArgumentsForDdeWrite(E,s);if(this.pawn(">",`${this.context?"stock ":""}${p}(${_}) {`),s)this.pawn(`${C}(${j});`);else{let u=F.name.slice(-1);this.pawn(`dde_flush(${u}, immediate);`)}this.pawn("<","}"),this.pawn(""),F.volatile&&(this.pawn(">",`stock ${k}() {`),this.pawn(`return rM2M_CfgFlush(${i});`),this.pawn("<","}"))}functionArgumentsForDdeWrite(e,F){let i=Be(this.manifest)?", const flags=0":"";return e?`const stamp=0${i}`:F?"":"bool:immediate=false"}generateReadMethod(e,F){this.sourceType="readWrite";let i=`_${e}_read`;this.pawn(">",`stock ${i}() {`),this.generateRWFunctionBody(e,F,"dde_r"),this.pawn("<","}"),this.pawn("")}isFieldSkipped(e){return e.type==="shadow"||!!e.shadowRef||e.library!==this.context}emitFieldRW(e,F,i,s,E,o,C){if(!F.arrayRef)return this.emitSingleField(e,F,i,s,C);let c=F.arrayRef.name,j=E.get(c);return j?o.has(c)?C:(o.add(c),this.emitArrayLoop(e,j,i)):this.emitSingleField(e,F,i,s,C)}generateRWFunctionBody(e,F,i){let s=F.fields,E=this.analyzeArrayGroups(s,e,F),o=new Set,C=-1;for(let c of s){if(this.isFieldSkipped(c))continue;let j=ax(c);!j||j==="skip"||(C=this.emitFieldRW(e,c,i,j,E,o,C))}}defaultArgumentFor(e,F){return e.defaultDloDefine===void 0?"":F==="dde_r"||Ai(this.manifest)?`, ${e.defaultDloDefine}`:""}emitSingleField(e,F,i,s,E){F.byteOffset!==E&&this.pawn(`_dde_idx = ${F.byteOffset};`);let o="";o+=i,o+=s.rwfunc;let C=`${e}_${F.name}`;return o+=`(${C}`,s.rwlen&&(o+=`, ${F.byteSize}`),o+=this.defaultArgumentFor(F,i),this.pawn(o+");"),F.byteOffset+F.byteSize}emitArrayLoop(e,F,i){this.pawn(">",`for (new _i = 0; _i < ${F.dimDefine}; _i++) {`);let s=-1;for(let E of F.templateFields){let o=ax(E);if(!o||o==="skip")continue;let C=E.byteOffset;C!==s&&this.pawn(`_dde_idx = ${C} + (_i * ${F.stride});`),s=C+E.byteSize;let c=`${e}_${E.name.replace(/\[\d+\]/,"[_i]")}`,j=`${i}${o.rwfunc}(${c}`;o.rwlen&&(j+=`, ${E.byteSize}`),j+=this.defaultArgumentFor(E,i),this.pawn(j+");")}return this.pawn("<","}"),-1}analyzeArrayGroups(e,F,i){let s=this.collectArrayFieldsByIndex(e);return this.buildArrayGroups(s,F,i)}collectArrayFieldsByIndex(e){let F=new Map;for(let i of e){if(this.isFieldSkipped(i)||!i.arrayRef)continue;let s=ax(i);if(!s||s==="skip")continue;let{name:E,index:o}=i.arrayRef;F.has(E)||F.set(E,new Map);let C=F.get(E);C.has(o)||C.set(o,[]),C.get(o).push(i)}return F}validateArrayStride(e,F){let i=F[0].byteOffset-e[0].byteOffset;if(i<=0)return null;for(let s=0;s<e.length;s++)if(F[s].byteOffset-e[s].byteOffset!==i)return null;return i}buildArrayGroups(e,F,i){let s=new Map;for(let[E,o]of e){let C=i.arrays[E];if(!C||C.length<2)continue;let c=o.get(0),j=o.get(1);if(!c||!j||c.length===0||j.length===0||c.length!==j.length)continue;let b=this.validateArrayStride(c,j);b!==null&&s.set(E,{arrayName:E,dimDefine:`${F}_${E}_dim`,stride:b,templateFields:c})}return s}parseFieldDefault(e){let F=ax(e),i=e.defaultValue;function s(o,C){return{value:o,reason:C}}switch(e.type){case"astring":case"nstring":case"cstring":return s(`"${i}"`);case"wstring":return s(`''${i}''`);case"ustring":return s(`/* default not supported: ${i} */`);case"binary":{let C=`{ 0x${(i.substring(2).replace(/\s+/g,"").match(/.{1,2}/g)||[]).join(", 0x")} }`;return s(C)}}if(i==="NaN"){let o=F.rwfunc;return s(`${o}_NaN`.toUpperCase())}let E=this.parseFieldScaleOffset(e);return E?s(E.calculated,E.reason):(i!==void 0&&!GA.exec(`${i}`)&&e.type.startsWith("float")&&i%1===0&&(i=i.toFixed(e.decimalPlaces||1)),s(`${i}`))}parseFieldScaleOffset(e){let F=e.defaultValue;if(!(!!GA.exec(`${e.offset}`)||!!GA.exec(`${e.scale}`)||!!GA.exec(`${e.defaultValue}`))&&(e.offset!==void 0||e.scale!==void 0)){let s=e.offset!==void 0?Number(e.offset):0,E=e.scale!==void 0?Number(e.scale):1;if(E===0)return null;let o=(Number(F)-s)/E,C=`(defaultValue - offset) / scale -> (${F} - ${s}) / ${E}`;return e.type.startsWith("float")?o%1===0&&(o=o.toFixed(1)):(o=Math.round(o),C=`Rounded value of: ${C}`),{calculated:o,reason:C}}return null}};function vi(t){return`${`onUplinkApply_${t}()`};`}function Ye(t,e,F){e.libraries.forEach(i=>{let s=F0.generateHashForLibraryName(i);t(` #ifdef _${s}${F}_${e.title}`),t(` _${s}${F}_${e.title}(); // ${i}`),t(" #endif")})}function Ei(t,e){t("stock _onUplinkEvent(ev, param) {"),e.forEach(F=>{let s=`_${F0.generateHashForLibraryName(F)}UplinkEvent`;t(` #ifdef ${s}`),t(` ${s}(ev, param);`),t(" #endif")}),t(" onUplinkEvent(ev, param);"),t("}")}function Bi(t){let e=[],F=[];for(let[i,s]of Object.entries(t.containers))MA[i].ctype===H0.cx&&([l0.up,l0.upPlus,l0.deviceOnly].includes(s.transferDirection)&&F.push(s),[l0.bothPlus,l0.both,l0.downPlus,l0.down].includes(s.transferDirection)&&e.push(s));return{containerApply:e,containerRestore:F}}function Ci(t,e){e.length&&t("");for(let F of e)F.knownNames.forEach(i=>{t(`forward onUplinkRestore_${i}();`)}),t(""),t(`stock restoreUplink${F.name}() {`),t(` _DDE_${F.name}_read();`),Ye(t,F,"Restore"),p0.hasContainerAppFields(F)&&t(` onUplinkRestore_${F.title}();`),t("}");if(t("#pragma warning push"),t("stock _onUplinkRestore(cfgId) {"),e.length){t(" switch(cfgId) {");for(let F of e)t(` case DDE_${F.title}_id: restoreUplink${F.name}(); // ${F.name}`);t(" }")}else t(" #pragma warning disable 203"),t(" // no containers to restore");t("}"),t("#pragma warning pop")}function fi(t,e){e.length&&t("");for(let F of e)F.knownNames.forEach(i=>{t(`forward onUplinkApply_${i}();`)}),t(""),t(`stock applyUplink${F.name}() {`),t(` _DDE_${F.name}_read();`),Ye(t,F,"Apply"),p0.hasContainerAppFields(F)&&t(` ${vi(F.title)}`),t(" return(OK);"),t("}");if(t("#pragma warning push"),t("stock _onUplinkApply(cfgId) {"),e.length){t(" switch(cfgId) {");for(let F of e)t(` case DDE_${F.title}_id: return applyUplink${F.name}(); // ${F.name}`);t(" }"),t(" return ERROR;")}else t(" #pragma warning disable 203"),t(" // no containers to apply"),t(" return OK;");t("}"),t("#pragma warning pop")}function Ze(t,e){let F=[],i=F.push.bind(F);Ei(i,e);let{containerApply:s,containerRestore:E}=Bi(t);return Ci(i,E),fi(i,s),F.join(`
1649
- `)}var Di=Qn.map(t=>`_DDE_${t}_write`);function Qe(t){let e=[],F=e.push.bind(e),i=[...Di];for(let[s,E]of Object.entries(t.containers)){let o=Ce(E.containerType,E.transferDirection),C=MA[s];if(!o||!E.fields||C.ctype!==H0.cx)continue;let c=`DDE_${E.name}`,j=`DDE_${E.title}_id`;if([l0.both,l0.bothPlus,l0.none,l0.deviceOnly,l0.up,l0.upPlus].includes(E.transferDirection)){let b=`_${c}_write`;F(`stock ${b}() {`),F(` dde_wbegin(${j});`),Ve(F,E,"write"),F(" return dde_wend();"),F("}"),i.splice(i.indexOf(b),1)}if(C.ctype===H0.cx){let b=`_${c}_read`;F(`stock ${b}() {`),F(` if (dde_rbegin(${j})) return ERROR;`),Ve(F,E,"read"),F(" dde_rend();"),F(" return OK;"),F("}")}}if(i.length){F(""),F("// Dummy functions needed by the dde library");for(let s of i)F(`stock ${s}() { return OK; }`)}return e.join(`
1650
- `)}function Ve(t,e,F){e.libraries.forEach(i=>{let s=F0.generateHashForLibraryName(i);t(` #ifdef __${s}${e.title}_${F}`),t(` __${s}${e.title}_${F}();`),t(" #endif")}),p0.hasContainerAppFields(e)&&(t(` #ifdef _DDE_${e.title}_${F}`),t(` _DDE_${e.title}_${F}();`),t(" #endif"))}async function xt(t,e){let F=[],i=await _0.getApmPartDependencies(t,e,t0.Part.dlo);await TA(t,e,F,V.fileNames.autoInc);let s=await li(t,e,i);for(let E of i)E.name==="local-data-interface"&&await TA(t,e,F,V.fileNames.autoLocalDataInc),F.push(`#include <${E.name}>`),E.name==="dlo-core"&&(F.push(...s),await TA(t,e,F,V.fileNames.autoDdeInc.replace("X","app")),await TA(t,e,F,V.fileNames.autoDdeInc.replace("X","main")));return i.some(E=>E.name==="dlo-core")&&await TA(t,e,F,V.fileNames.autoUplinkInc),F.join(`
1651
- `)}async function li(t,e,F){let i=[];for(let s of F){let E=V.filePaths.studio.auto.dlo.autoDdeInc.replace("X",s.name);await e.stat(fe.Utils.joinPath(t,E))&&i.push(`#include "${V.fileNames.autoDdeInc.replace("X",s.name)}"`)}return i}async function TA(t,e,F,i){let s=fe.Utils.joinPath(t,V.filePaths.studio.auto.dlo.path,i);await e.stat(s)&&F.push(`#include "${i}"`)}var rt=J0(require("semver")),et=require("yaml");var ox=p0.ContainerType,Er=p0.TransferDirection,ci=p0.fieldTypeDefinitions,oA={$ref:"#/components/parameters/contextId"},di={$ref:"#/components/parameters/addonId"},ji={$ref:"#/components/parameters/appId"},At={$ref:"#/components/schemas/histdataResponse"},pi={$ref:"#/components/schemas/histdataRequest"},Br={$ref:"#/components/schemas/rapidM2MStamp"},bi={$ref:"#/components/schemas/timeseriesRequestBase"},vr="rapidM2M Stamp",jx={description:"Successful operation"},tt={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"'}}},nt={...structuredClone(tt)};Object.assign(nt.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:[Br,{type:"string"},{type:"number"}]}}},histdataRequest:{type:"object",additionalProperties:!1,required:["from","until"],properties:{from:{type:"string",format:vr,description:"items to include must be older or equal, UTC w/o time saving."},until:{type:"string",format:vr,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:vr,description:"items to include must be older or equal, UTC w/o time saving"},until:{type:"string",format:vr,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 SA={content:{"application/json":{schema:{type:"object",additionalProperties:!1,properties:{err:{type:"string",description:"Information what went wrong"}}}}}},Sx={401:{description:"Permission denied",...SA},403:{description:"Forbidden",...SA},404:{description:"Resource not found",...SA},500:{description:"Internal error",...SA}};function le(t,e,F=null){let i=rt.coerce(e.version)?.version,s={openapi:"3.0.3",info:{description:e.description,title:e.name,version:i||""},tags:[],paths:{},components:{parameters:{},schemas:{}}};F?Object.assign(s.components,structuredClone(tt)):Object.assign(s.components,structuredClone(nt));let E=O.isAddon(e),o=O.isAnalytics(e);E&&(s.components.parameters.addonId={name:"addonUid",in:"path",description:"The addon uid",schema:{type:"string"},required:!0});for(let C of Object.values(t.containers))F&&(!C.libraries.includes(F)||C.containerType===ox.hx)||!F&&!p0.hasContainerAppFields(C)||C.containerType===ox.aloha||(ui(s,C),hi(s,C,F),yi(s,C,E,o),!E&&!o&&(mi(s,C,F),ki(s,C)));return s.tags.push({name:"app-center",description:"App Center related routes"}),(0,et.stringify)(s)}function ui(t,e){t.tags.push({name:ex(e.title),description:`Transfer direction ${e.transferDirection}`})}function ex(t){return t.split("_").join(" ")}function mi(t,e,F){let i=`${e.name}`,s={type:"object",description:`Container: "${e.title}"`,additionalProperties:!1,properties:{}},E=[];e.containerType===ox.hx&&(i+="Select",E.push("select"),s.properties.select={type:"array",items:{type:"string",enum:[]}});for(let o of e.fields)o.library!==F||o.type==="shadow"||(e.containerType===ox.hx?s.properties.select.items.enum.push(o.id):(s.properties[o.id]=it(o),!o.readPermission&&!o.writePermission&&E.push(o.id)));s.required=E.length?E:void 0,t.components.schemas[i]=s}function hi(t,e,F=null){let i=`${e.title}`,s={type:"object",description:`Container: "${e.title}" with device transfer direction "${e.transferDirection}"`,additionalProperties:!1,properties:{}},E=[],o=e.containerType===ox.hx;for(let c of e.fields)c.library!==F||c.type==="shadow"||(s.properties[c.name]=it(c),!c.readPermission&&!c.writePermission&&E.push(c.name));s.required=E.length?E:void 0,t.components.schemas[i]=s;let C=s.properties;if(o){s.required=s.required?.map(j=>j.toLowerCase());let c={};for(let[j,b]of Object.entries(s.properties))c[j.toLowerCase()]=b;s.properties=c}if(o){let c={type:"object",description:`Request schema of "${e.title}"`,additionalProperties:!1,properties:{select:{type:"array",description:"Optional selection of specific fields of the given container",items:{type:"string",enum:Object.keys(C)}}}};t.components.schemas[`${i}RequestSingle`]=c,t.components.schemas[`${i}Request`]={allOf:[bi,c]},s.properties.stamp=Br,E.push("stamp")}}function it(t){let F={...ci[t.type].openApi},i=gi(t);return F.default=i,F.example=i,F.description=t.description,F}function gi(t){return t.defaultValue===void 0?t.defaultValue:t.type==="binary"?`${t.defaultValue.substring(2)}`:t.defaultValue}function ki(t,e){let F=`/api/1/sites/{siteUid}/${e.name}`,i={get:void 0,put:void 0};if([ox.cx,ox.cb].includes(e.containerType))i.get={deprecated:!0,tags:[ex(e.title)],summary:`Retrieve the data of the "${ex(e.title)}" container`,parameters:[oA],responses:{200:{...jx,content:{"application/json":{schema:{allOf:[{type:"object",required:["stamp"],properties:{stamp:Br}},{$ref:`#/components/schemas/${e.name}`}]}}}},...Sx}},[Er.down,Er.backendOnly].includes(e.transferDirection)&&(i.put={deprecated:!0,tags:[ex(e.title)],summary:`Modify the data of the "${ex(e.title)}" container`,parameters:[oA],requestBody:{content:{"application/json":{schema:{$ref:`#/components/schemas/${e.name}`}}}},responses:{201:{...jx},204:{...jx},...Sx}});else if(e.containerType===ox.hx){let s=`${F}`;F+="/youngest",i.get={deprecated:!0,tags:[ex(e.title)],summary:`Retrieve the youngest data of the "${ex(e.title)}" container`,parameters:[oA,{name:"json",in:"query",required:!0,schema:{$ref:`#/components/schemas/${e.name}Select`}}],responses:{200:{...jx,content:{"application/json":{schema:At}}},...Sx}},t.paths[s]={get:{deprecated:!0,tags:[ex(e.title)],summary:`Get the historical data of the "${ex(e.title)}" container.`,parameters:[oA,{name:"json",in:"query",required:!0,schema:{allOf:[{$ref:`#/components/schemas/${e.name}Select`},pi]}}],responses:{200:{...jx,content:{"application/json":{schema:At}}},...Sx}}}}t.paths[F]=i}function yi(t,e,F=!1,i=!1){let E=e.containerType===ox.hx?"timeseries":"containers",o=[],C=ex(e.title);i||o.push({path:`/api/1/sites/{siteUid}/${E}/${e.title}`,params:[oA],tags:[C]}),F&&(o=[{path:`/api/1/sites/{siteUid}/addons/{addonUid}/${E}/${e.title}`,params:[oA,di],tags:[C]}]);let c={path:`/api/1/app-center/apps/{appUid}/${E}/${e.title}`,params:[ji],tags:["app-center"]};i&&c.tags.push(C),o.push(c);let j={get:void 0,put:void 0,post:void 0},b={tags:[],summary:`Retrieve the data of the "${ex(e.title)}" container`,parameters:[],responses:{200:{...jx,content:{"application/json":{schema:{allOf:[{type:"object",required:["stamp"],properties:{stamp:Br}},{$ref:`#/components/schemas/${e.title}`}]}}}},...Sx}};if([ox.cx,ox.cb].includes(e.containerType)&&(j.get=b,[Er.down,Er.backendOnly].includes(e.transferDirection)&&(j.put={tags:[],summary:`Modify the data of the "${ex(e.title)}" container`,parameters:[],requestBody:{content:{"application/json":{schema:{$ref:`#/components/schemas/${e.title}`}}}},responses:{201:{...jx},204:{...jx},...Sx}}),o.forEach(p=>{let k=structuredClone(j);Object.values(k).forEach(_=>{_?.parameters?.unshift(...p.params),_?.tags?.unshift(...p.tags)}),t.paths[p.path]=k})),e.containerType===ox.hx){j.get={tags:[],summary:`Get the historical data of "${e.title}"`,parameters:[{name:"json",in:"query",required:!1,schema:{$ref:`#/components/schemas/${e.title}Request`}}],responses:{200:{...jx,content:{"application/json":{schema:{type:"array",items:{$ref:`#/components/schemas/${e.title}`}}}}},...Sx}},F&&(j.post={tags:[],summary:`Insert data into the "${ex(e.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/${e.title}`}}}},responses:{201:{...jx},400:{description:"Bad request",...SA},...Sx}});let p=o[0],k=structuredClone(j);Object.values(k).forEach(q=>{q?.parameters?.unshift(...p.params),q?.tags?.unshift(...p.tags)}),t.paths[p.path]=k;let _={...jx,content:{"application/json":{schema:{$ref:`#/components/schemas/${e.title}`}}}},u=`${p.path}/youngest`,y={get:structuredClone(k.get)};y.get.summary=`Get the youngest record of "${e.title}" container`,y.get.responses[200]=_;let P=F?2:1;y.get.parameters[P].schema.$ref=`#/components/schemas/${e.title}RequestSingle`,t.paths[u]=y;let g=`${p.path}/oldest`,w={get:structuredClone(k.get)};w.get.summary=`Get the oldest record of "${e.title}" container`,w.get.responses[200]=_,w.get.parameters[P].schema.$ref=`#/components/schemas/${e.title}RequestSingle`,t.paths[g]=w}}var st=p0.TransferDirection,Cr=" new szTemp{64};",fr=" return strcat(aData, szTemp, sizeof(szTemp));";function at(t){if(!t.printf&&t.printfFormat==="memtostr")return"bin";if(!t.printf)return null;let e=t.rwp||"%n",F=e.includes("["),s=e.includes("{")||F;if(t.printfFormat==="stampToISOString")return s?null:"stamp";switch(t.printf){case"%d":return s?null:"d";case"%f":return s?null:"f";case"%s":return F?null:"s";default:return null}}function ce(t){if(t.type==="shadow"||t.shadowRef)return null;let e=ax(t);return!e||e==="skip"?null:at(e)}function ot(t){return[p0.ContainerType.hx,p0.ContainerType.cx].includes(t.containerType)&&t.transferDirection!==st.backendOnly}function wi(t){if(t.type==="shadow"||t.shadowRef)return!1;let e=ax(t);return!!e&&e!=="skip"}function _i(t,e,F){let i=t.name.indexOf("]"),s=i>=0?t.name.substring(i+1):"",E=`${t.arrayRef.name}|${s}|${e}`;F.has(E)||F.set(E,{fields:[],formatType:e}),F.get(E).fields.push(t)}function $i(t){let e=[],F=new Map,i=new Set,s=!1;for(let E of t){if(!wi(E))continue;let o=ce(E);E.arrayRef&&o?_i(E,o,F):(e.push(E),o?i.add(o):s=!0)}return{standaloneFields:e,groupMap:F,usedFormats:i,hasInlineFields:s}}function qi(t,e,F){F.sort((j,b)=>j.arrayRef.index-b.arrayRef.index);let i=F.map(j=>j.byteOffset),s=i[1]-i[0];if(!(s>0&&i.every((j,b)=>b===0||j-i[b-1]===s)))return null;let[o,C]=e.split("|"),c=F[0].library?`_${F0.generateHashForLibraryName(F[0].library)}`:"DDE_";return{arrayName:o,subField:C,fields:F,startOffset:i[0],endOffset:i[i.length-1],step:s,formatType:ce(F[0]),pawnVarBase:`${c}${t}_${o}`}}function Pi(t,e){let{standaloneFields:F,groupMap:i,usedFormats:s,hasInlineFields:E}=$i(e),o=[];for(let[C,c]of i){let{fields:j,formatType:b}=c;if(j.length<2){F.push(...j),s.add(b);continue}let p=qi(t,C,j);p?(s.add(b),o.push(p)):(F.push(...j),s.add(b))}return F.sort((C,c)=>C.byteOffset-c.byteOffset),{arrayGroups:o,standaloneFields:F,usedFormats:s,hasInlineFields:E}}function Ni(t){let e=new Set;for(let[,F]of Object.entries(t.containers))if(ot(F))for(let i of F.fields){let s=ce(i);s&&e.add(s)}return e}function Li(t,e){e.has("d")&&(t("stock _DDE_fmt_d(aData{}, value) {"),t(Cr),t(' sprintf(szTemp, _, "%d", value);'),t(fr),t("}")),e.has("f")&&(t(""),t("stock _DDE_fmt_f(aData{}, Float:value) {"),t(Cr),t(' sprintf(szTemp, _, "%.3f", value);'),t(fr),t("}")),e.has("s")&&(t(""),t("stock _DDE_fmt_s(aData{}, value{}) {"),t(Cr),t(' sprintf(szTemp, _, "%s", value);'),t(fr),t("}")),e.has("stamp")&&(t(""),t("stock _DDE_fmt_stamp(aData{}, value) {"),t(Cr),t(' sprintf(szTemp, _, "%s", (stampToISOString(value)));'),t(fr),t("}")),e.has("bin")&&(t(""),t("stock _DDE_fmt_bin(aData{}, mem{}, dim) {"),t(" #pragma warning disable 224"),t(" memtostr(aData, mem, 0, dim);"),t(" #pragma warning disable 224"),t(" return dim;"),t("}"))}function Gi(t,e){return e===1?t===0?"idx":`idx - ${t}`:t===0?`idx / ${e}`:`(idx - ${t}) / ${e}`}function Ti(t,e,F){let i=`idx >= ${t} && idx <= ${e}`;if(F===1)return i;let s=t===0?`idx % ${F} == 0`:`(idx - ${t}) % ${F} == 0`;return`${i} && ${s}`}function Mi(t,e){let{startOffset:F,endOffset:i,step:s,formatType:E,pawnVarBase:o,subField:C}=e,c=Gi(F,s),j=Ti(F,i,s);if(t(` if (${j}) {`),E==="bin"){let b=`${o}[${c}]${C}`,p=C?C.substring(1):"",k=p?`${o}_${p}_dim`:`${o}_dim`;t(` return _DDE_fmt_bin(aData, ${b}, ${k});`)}else t(` return _DDE_fmt_${E}(aData, ${o}[${c}]${C});`);t(" }")}function Ii(t,e,F){if(F.type==="shadow"||F.shadowRef)return;let i=ax(F);if(!i||i==="skip")return;let E=`${F.library?`_${F0.generateHashForLibraryName(F.library)}`:"DDE_"}${e}_${F.name}`,o=at(i);if(o==="bin")t(` case ${F.byteOffset}: return _DDE_fmt_bin(aData, ${E}, ${E}_dim);`);else if(o)t(` case ${F.byteOffset}: return _DDE_fmt_${o}(aData, ${E});`);else{if(t(` case ${F.byteOffset}: {`),i.printf){let C=E;i.printfFormat&&(C=`(${i.printfFormat}(${C}))`),t(` sprintf(szTemp, _, "${i.printf}", ${C});`),t(" return (strcat(aData, szTemp, sizeof(szTemp)));")}t(" }")}}function Si(t,e,F){t(` case '${e.at(-1)}': {`),t(` return _DDE_local_${F.title}(aData, idx);`),t(" }")}function Ft(t,e,F){let i=F===p0.ContainerType.cx?"c":"h",s=F===p0.ContainerType.cx?"config":"histdata";t(` if(cname{0} == '${i}'){`),t(" switch(cname{1}) {");for(let[E,o]of Object.entries(e.containers))F===o.containerType&&E.startsWith(s)&&o.transferDirection!==st.backendOnly&&Si(t,E,o);t(" default:"),t(" return OK;"),t(" }"),t(" return OK;"),t(" }")}function Ri(t,e){let F=Pi(e.title,e.fields);t(""),t(`stock _DDE_local_${e.title}(aData{}, idx) {`),F.hasInlineFields&&t(" new szTemp{64};");for(let i of F.arrayGroups)Mi(t,i);if(F.standaloneFields.length>0){t(" switch(idx) {");for(let i of F.standaloneFields)Ii(t,e.title,i);t(" default:"),t(" return OK;"),t(" }")}t(" return OK;"),t("}")}function Oi(t,e){for(let[,F]of Object.entries(e.containers))ot(F)&&Ri(t,F)}function vt(t){let e=[],F=e.push.bind(e),i=Ni(t);return Li(F,i),i.size>0&&F(""),F("stock DDE_get_local_data(cname{}, aData{}, idx) {"),Ft(F,t,p0.ContainerType.cx),Ft(F,t,p0.ContainerType.hx),F(" return OK;"),F("}"),Oi(F,t),e.join(`
1652
- `)}var ft=F0.yamlRangeToLineInformation,RA=V.filePaths.dde.path,vx;(T=>{let t=p0.DDEJson,e=F0.convertBlobToString;T.DDE_SCHEMA=He;async function i($,L){let U=await L.readFile($);return e(U)}T.readYamlFile=i;async function s($,L,U=V.fileNames.mainDDE,H){let K=[],S=await O.read($,L),z=await Et($,L,S);if(H)for(let M of z){let{result:r0,unresolvedKeys:x0}=I0.replaceDefineTemplates(M.yaml,H);M.yaml=r0;for(let e0 of x0)K.push({file:M.path,level:"error",message:`Unresolved define template: {{${e0}}}`,line:0,startCharacter:0,endCharacter:0})}for(let M of z)K.push(...c(M.path,M.yaml));let Y=P0.Utils.joinPath($,RA,U),Z=await i(Y,L);if(H){let{result:M,unresolvedKeys:r0}=I0.replaceDefineTemplates(Z,H);Z=M;for(let x0 of r0)K.push({file:Y,level:"error",message:`Unresolved define template: {{${x0}}}`,line:0,startCharacter:0,endCharacter:0})}return K.push(...c(Y,Z)),{manifest:S,libraryFiles:z,main:{path:Y,yaml:Z},diagnostics:K}}T.validate=s;async function E($,L,U,H=V.fileNames.mainDDE){let K=await O.read($,L),S=await I0.read($,L,U),z=await s($,L,H,S.flat);if(z.diagnostics.filter(f0=>f0.level==="error").length>0)return{ddeJSON:null,diagnostics:z.diagnostics};let Z=await _($,L,U),M=new Fr.PreCompiler(K,z.libraryFiles,Z),r0=M.parseLibraries();if(r0.find(f0=>f0.level==="error"))return{ddeJSON:null,diagnostics:[...z.diagnostics,...r0]};let{ddeJSON:e0,diagnostics:d0}=M.parseMainDDE(z.main.path,z.main.yaml);return{ddeJSON:e0,diagnostics:[...z.diagnostics,...d0]}}T.compileDDE=E;let o=new Bt.default({strict:!1,allErrors:!0,verbose:!0});(0,Ct.default)(o);let C=o.compile(T.DDE_SCHEMA);function c($,L){let U=new Dr.LineCounter,H=(0,Dr.parseDocument)(L,{lineCounter:U,keepSourceTokens:!0}),K=[];for(let Y of H.errors){let Z=Y.pos?ft(U,[Y.pos[0],Y.pos[1],Y.pos[1]]):{line:0,startCharacter:0,endCharacter:0};K.push({file:$,level:"error",message:Y.message,...Z})}if(K.length>0)return K;let S=H.toJSON();if(!C(S)){let Z=(C.errors||[]).filter(r0=>r0.keyword!=="if"),M=new Set;for(let r0 of Z){let x0=zi(r0);if(M.has(x0))continue;M.add(x0);let e0=Ki(H,U,r0);K.push({file:$,level:"error",message:x0,...e0})}}return K}T.validateJsonSchema=c,T.PreCompiler=($,L,U)=>new Fr.PreCompiler($,L,U);function b($,L){return ve($,L)}T.generateMyDatanetXML=b;async function p($,L,U,H){let K=await O.read($,L),S=ve(K,H),z=P0.Utils.joinPath($,V.filePaths.dist.ddeXmlPath);await L.writeFile(z,S),U.log("Generated",V.filePaths.dist.ddeXmlPath)}T.exportMyDatanetXML=p;async function k($,L,U,H,K){let S=P0.Utils.joinPath($,V.filePaths.studio.auto.dde.historyJson);await L.rm(S).catch(console.error);let z=await O.read($,L);if(!O.isApp(z)||!z.registry?.id)return;if(!K){U.warn("Could not fetch dde of previous version: No API token provided.");return}let Y=ux.coerce(z.version);try{let r0=(await y0.getExistingApplication(K,z.publisher,z.registry.id,H)).versions.find(f0=>!ux.prerelease(f0.version)&&ux.lte(f0.version,Y)),x0=r0?.files.find(f0=>f0.name==="dde.json");if(!x0){U.warn("Could not find a valid previous released app version to fetch the previous dde from.");return}let e0=await fetch(x0.downloadUrl,{headers:{...Fx(K),...y0.injectSemverHeader(!0)}});if(e0.status!==200){U.warn(`Could not fetch the dde.json of version "${r0?.version}"`);return}let d0=await e0.text();await L.writeFile(S,d0),U.log(`Saved history.json of previous app version ${r0.version}`)}catch(Z){U.error("Failed to fetch the dde of previous version",Z)}}T.fetchPreviousHistoryJson=k;async function _($,L,U){try{let H=P0.Utils.joinPath($,V.filePaths.studio.auto.dde.historyJson);if(await L.stat(H)){let S=await L.readFile(H);return JSON.parse(e(S))}let K=P0.Utils.joinPath($,RA,"history.json");if(await L.stat(K)){U.warn(`"${V.filePaths.studio.auto.dde.historyJson}" does not exist - fallback to "${RA}history.json"`);let S=await L.readFile(K),z=JSON.parse(e(S)),Y=await O.read($,L),Z=ux.coerce(Y.version)?.version,M=Object.keys(z||{}).sort(ux.rcompare).find(x0=>x0!==Z);if(!M)return null;let r0=z[M];return{version:M,...r0}}}catch(H){U.error("Failed to read history.json",H)}return U.warn("history.json does not exist"),null}T.getHistoryJson=_;function u($,L){return{version:ux.coerce(L.version)?.version||"1.0.0",...structuredClone($)}}T.buildHistoryJson=u;async function y($,L,U,H){let K=await O.read($,L),S=u(H,K),z=P0.Utils.joinPath($,V.filePaths.dist.historyJson);await L.writeFile(z,JSON.stringify(S,null," ")),U.log("Generated",V.filePaths.dist.historyJson)}T.exportHistoryJson=y;async function P($,L){return L.rm(P0.Utils.joinPath($,V.filePaths.studio.auto.dlo.path))}T.clearAutoDloDir=P;async function g($,L,U,H){await P($,L);let K=await O.read($,L),S=await Et($,L,K),z=await I0.read($,L,U),Y=Xe(H,z,K),M=new IA(K,H,null).generate();for(let M0 of S){let Ox=new IA(K,H,M0.libraryName),{globals:fA,helper:DA}=Ox.generate(),AA=[...fA,...DA].join(`\r
1653
- `),rA=V.filePaths.studio.auto.dlo.autoDdeInc.replace("X",M0.libraryName),Ux=P0.Utils.joinPath($,rA);AA.length&&(U.log("Generated",rA),await L.writeFile(Ux,AA))}let r0=Qe(H),x0=Ze(H,S.map(M0=>M0.libraryName)),e0=vt(H),d0=P0.Utils.joinPath($,V.filePaths.studio.auto.dlo.autoInc);await L.writeFile(d0,Y),U.log("Generated",V.filePaths.studio.auto.dlo.autoInc);let f0=P0.Utils.joinPath($,V.filePaths.studio.auto.dlo.autoUplinkInc);await L.writeFile(f0,x0),U.log("Generated",V.filePaths.studio.auto.dlo.autoUplinkInc);let o0=P0.Utils.joinPath($,V.filePaths.studio.auto.dlo.autoLocalDataInc);await L.writeFile(o0,e0),U.log("Generated",V.filePaths.studio.auto.dlo.autoLocalDataInc);let b0=P0.Utils.joinPath($,V.filePaths.studio.auto.dlo.autoDdeInc.replace("X","app"));await L.writeFile(b0,[...M.globals,...M.helper].join(`
1654
- `)),U.log("Generated",V.filePaths.studio.auto.dlo.autoDdeInc.replace("X","app"));let Z0=P0.Utils.joinPath($,V.filePaths.studio.auto.dlo.autoDdeInc.replace("X","main"));await L.writeFile(Z0,r0),U.log("Generated",V.filePaths.studio.auto.dlo.autoDdeInc.replace("X","main")),await q($,L,U)}T.exportAutoDloFiles=g;async function w($,L,U,H){let K=await O.read($,L),S=O.isLibrary(K),z=P0.Utils.joinPath($,V.filePaths.dist.path,"dde-api.yaml");await L.rm(z).catch(()=>{});let Y=P0.Utils.joinPath($,V.filePaths.dist.ddeApi);if(await L.writeFile(Y,le(H,K)),U.log("Generated",V.filePaths.dist.ddeApi),S){let Z=P0.Utils.joinPath($,V.filePaths.dist.ddeApiPath,`${K.name}.yaml`),M=le(H,K,K.name);M.length&&(await L.writeFile(Z,M),U.log("Generated",V.filePaths.dist.ddeApiPath+`${K.name}.yaml`))}}T.exportOpenApi=w;async function q($,L,U){let H=P0.Utils.joinPath($,V.filePaths.studio.auto.dlo.defaultInc),K=await xt($,L);await L.writeFile(H,K),U.log("Generated",V.filePaths.studio.auto.dlo.defaultInc)}T.exportDefaultInc=q})(vx||={});async function Et(t,e,F){let i=[],s=await _0.getAll(F);for(let E in s){let o=_0.dependencyToPath(t,E),C=_0.dependencyIdToName(E),c=P0.Utils.joinPath(o,`${RA}/${C}.dde`);await e.stat(c)&&i.push({libraryName:C,path:c,yaml:await vx.readYamlFile(c,e)})}if(O.isLibrary(F)){let E=P0.Utils.joinPath(t,`/${RA}/${F.name}.dde`);await e.stat(E)&&i.push({libraryName:F.name,path:E,yaml:await vx.readYamlFile(E,e)})}return i}function Ui(t,e,F){if(typeof t=="string")return t;if(typeof t!="object"||t===null)return"";let i=t[e];if(typeof i=="string")return i;if(typeof i!="object"||i===null)return"";let s=F?.missingProperty;return s?i[s]??"":""}function Hi(t,e,F,i){let E={required:()=>`Missing required property '${e.missingProperty}'.`,additionalProperties:()=>`Unknown property '${e.additionalProperty}' is not allowed.`,type:()=>`Must be of type '${e.type}'.`,enum:()=>`Must be one of the allowed values: ${JSON.stringify(e.allowedValues)}.`,pattern:()=>`Value does not match the required pattern. ${i?.patternErrorMessage??F}`,minimum:()=>`${F}.`,maximum:()=>`${F}.`,exclusiveMinimum:()=>`${F}.`,exclusiveMaximum:()=>`${F}.`,not:()=>`This value is not allowed here. ${i?.description??""}`.trimEnd(),anyOf:()=>`Value does not match any of the allowed schemas. ${i?.description??""}`.trimEnd(),oneOf:()=>`Value does not match any of the allowed schemas. ${i?.description??""}`.trimEnd()}[t];return E?E():F}function zi(t){let e=t.instancePath||"/",F=t.parentSchema,i=Ui(F?.errorMessage,t.keyword,t.params);if(i)return`${e}: ${i}`;let s=t.message||"unknown validation error";return`${e}: ${Hi(t.keyword,t.params,s,F)}`}function Ji(t,e){let F=e.split("/").filter(Boolean).map(i=>{let s=Number(i);return Number.isNaN(s)?i:s});for(let i=F.length;i>=0;i--){let s=F.slice(0,i),E=t.getIn(s,!0);if(E?.range)return E.range}return null}function Ki(t,e,F){let i=Ji(t,F.instancePath||"");return i?ft(e,i):{line:0,startCharacter:0,endCharacter:0}}var de=require("vscode-uri");var vA=class{dloFileMap={};rootUri=de.URI.parse("");constructor(){}set workspacePath(e){this.rootUri=e}getSequenceForFile(e){let F=e.substring(this.rootUri.path.length||0);if(this.rootUri.scheme!=="file"){let s=this.rootUri.toString();F=e.substring(s.length+1)}if(Object.hasOwn(this.dloFileMap,F))return this.dloFileMap[F];let i=F0.generateHashForFilePath(F);return this.dloFileMap[F]=i,i}getFilePathForSequence(e){let F=Object.entries(this.dloFileMap).find(([,i])=>i===e);return F?de.URI.parse(`${this.rootUri.path}${F[0]}`).path:null}};var ct=require("vscode-uri");var Vi=/^(?:\s*#options\s+)(.*)(?:\s*)$/,Wi=/^(?:\s*#preinclude\s+)(.*)(?:\s*)$/,Xi=/^(?:\s*#ifdef\s+)(.*)$/,Yi=/^(?:\s*#ifndef\s+)(.*)$/,Zi=/^(?:\s*#elseifdef\s+)(.*)$/,Qi=/^(?:\s*#elseifndef\s+)(.*)$/,dt=/^(\s*)(?:#callback\s+)(\w*)(?:\s*\(\s*)(.*?)(?:\s*\)\s*)(\{*){1}(?:\s*)$/,jt=/^(.*)(^|\s+)(?:assert\s*\(\s*)(.*?)(?:\s*,\s*)(.*?)(?:\s*\)\s*;*\s*)$/,pt=/^(.*)(^|\s+)(?:assert\s*\(\s*)(.*?)(?:\s*\)\s*;*\s*)$/,bt=/^(.*)(^|\s+)(?:assert\s*\(\s*\);*\s*)$/,ut=/^(.*)(^|\s+)(?:catch\s*\(\s*)(.*?)(?:\s*\)\s*;*\s*)$/,xF=/^\s*#include\s*</,AF=/^\s*#endinput\s*/,rF=/^\s*#pragma\s+dynamic\s+(\S+)\s*(\/\/.*|\/\*.*|)$/,mt=/^(.*)(^|\s+)(?:applog(|_ok|_warning|_alarm|_debug|_fatal)\s*\(\s*)(.*?)(?:\s*,\s*)(.*?)(?:\s*\)\s*;*\s*)$/,ht=/^(.*)(^|\s*)(?:applog(|_ok|_warning|_alarm|_debug|_fatal)\s*\(\s*)(.*?)(?:\s*\)\s*;*\s*)$/;function Dt(t,e=""){let F=" ",i=t;return e.length?F={fatal:"\xA7",alarm:"!",warning:"?",debug:"~",ok:"$"}[e]||null:["!","?","~","$","\xA7"].includes(t.substring(1,1))&&(F=t.substring(1,1),i=`"${t.substring(2,t.length-1)}"`),{priority:`'${F}'`,code:i}}var gt=/^(.*)(^|\s+)(?:log(|_debug|_info|_warn|_error)\s*\(\s*)(.*?)(?:\s*\)\s*;*\s*)$/,kt=(s=>(s[s.debug=0]="debug",s[s.info=1]="info",s[s.warn=2]="warn",s[s.error=3]="error",s))(kt||{}),eF=/^(.*)(^|\s*)DDE_(state|result|aloha|volatile|setting|command)_/,tF=/^(.*)(^|\s*)onUplink(Restore|Apply)_(state|result|aloha|volatile|setting|command)/,nF=/^(.*)(^|\s*)onUplinkEvent/,iF=/(?:^|\s)(?:assert|catch|applog(?:_ok|_warning|_alarm|_debug|_fatal)?|log(?:_debug|_info|_warn|_error)?)\s*\(/,FF=/^\s*#callback\s+\w+\s*\(/;function lt(t){let e=0,F=!1,i="";for(let s=0;s<t.length;s++){let E=t[s];if(F){if(E==="\\"){s++;continue}E===i&&(F=!1);continue}if(E==='"'||E==="'"){F=!0,i=E;continue}E==="("?e++:E===")"&&e--}return e}function yt(t){return dt.test(t)||bt.test(t)||jt.test(t)||pt.test(t)||ut.test(t)||mt.test(t)||ht.test(t)||gt.test(t)}function sF(t,e,F){if(!(iF.test(F)||FF.test(F)))return null;let s=lt(F);if(s<=0)return null;let E=s,o=[t[e]],C=[F],c=e+1,j=100;for(;E>0&&c<t.length&&c-e<j;){let k=t[c],_=k.split("//",1)[0];o.push(k),C.push(_),E+=lt(_),c++}if(o.length<=1||E>0)return null;let b=o.map((k,_)=>_===0?k:k.trim()).join(" "),p=C.map((k,_)=>_===0?k:k.trim()).join(" ");return yt(p)?{joinedOriginal:b,joinedStripped:p,extraLineCount:o.length-1}:null}var EA=class{pragmaDynamic=null;dloFileSequencer=new vA;constructor(){}get pragmaDynamicFlag(){return this.pragmaDynamic?`-S${this.pragmaDynamic}`:null}preCompileDloFile(e,F,i,s,E){this.dloFileSequencer.workspacePath=e;let o=[],C=s.path,c=!1,j=ct.Utils.basename(s);if(C.includes(V.filePaths.studio.auto.dlo.path)){let u=j.substring(0,j.length-8);!["app","main"].includes(u)&&j.endsWith("-dde.inc")&&(c=F0.generateHashForLibraryName(u))}else if(C.includes(V.filePaths.studio.libdeps)){let u=C.split("libdeps/")[1],[y]=u.split("/");["dlo-core"].includes(y)||(c=F0.generateHashForLibraryName(y))}else O.isLibrary(i)&&(j.endsWith(".dlo")||C.includes("/dlo/examples/")||C.includes("/dlo/test/")?F.log("Skipping dde mangling for project file",j):c=F0.generateHashForLibraryName(i.name));if(C.endsWith(".auto/default.inc"))return{data:E.join(`
1655
- `),diagnostics:o};let b=[],p=this.dloFileSequencer.getSequenceForFile(C);b.push(`stock static __file{} = "${p}";`),b.push(`stock static __refid{} = "${p}";`),b.push('stock static __applog_src_id{} = "A\\0\\0\\0\\0\\0\\0\\0";'),b.push("#line 0");let _=0;for(let u=0;u<E.length;u++){let y=E[u],P=y.split("//",1)[0],g=null,w=0;if(!yt(P)){let q=sF(E,u,P);q&&(y=q.joinedOriginal,P=q.joinedStripped,w=q.extraLineCount)}if(g=Vi.exec(P))y="// "+y,o.push({file:s,level:"error",line:u,message:"#options is not supported here. Use the DLO settings instead."});else if(g=Wi.exec(P))y="// "+y,o.push({file:s,level:"error",line:u,message:"#preinclude is not supported here. Use the DLO settings instead."});else if(g=rF.exec(P)){let q=Number(g[1].startsWith("(")?g[1].substring(1,g[1].length-1):g[1]);!Number.isInteger(q)||q<64?o.push({file:s,level:"error",line:u,message:"#pragma dynamic only supports integer values and must be greater than 63"}):(!this.pragmaDynamic||q>this.pragmaDynamic)&&(this.pragmaDynamic=q)}else if(g=Xi.exec(P))y=y.replace("#ifdef ","#if defined ");else if(g=Yi.exec(P))y=y.replace("#ifndef ","#if !defined ");else if(g=Zi.exec(P))y=y.replace("#elseifdef ","#elseif defined ");else if(g=Qi.exec(P))y=y.replace("#elseifndef ","#elseif !defined ");else if(g=dt.exec(P)){let[,q,T,$,L]=g;y=`${q}#define ${T} _catch_funcidx( "___${T}")
1656
- forward ___${T}( ${$});
1647
+ `)}function o(C,c,j=!1){let u=Xe(c)?"":'"';j&&(u=""),a(`#define ${C} ${u}${c}${u}`)}return si(E,o,F),ai(a,E,o,e),Bi(a,E,t),Ci(a,E,t),i.join(`
1648
+ `)}var MA=class{constructor(e,F,i){this.manifest=e;this.ddeMap=F;this.context=i;this.sourceType="pawnSource"}manifest;ddeMap;context;globalVariables=[];pawnGlobalSource=[];pawnHelperSource=[];timeSeriesSource=[];readWriteSource=[];definesSource=[];defaultDefinesSource=[];knownDefines=[];pawnIndent=0;sourceType;pawn(e,F){F&&e==="<"&&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)+(F||e)),F&&e===">"&&this.pawnIndent++}generate(){for(let[e,F]of Object.entries(this.ddeMap.containers))this.context&&!F.libraries.includes(this.context)||!Ce(F.containerType,F.transferDirection)||!F.fields||!this.context&&!p0.hasContainerAppFields(F)||IA[e].ctype!==H0.cx&&this.context||(this.generateGlobalVarsForContainer(F),this.generateReadWriteFunctions(F));return this.mergeSourceTypes(),{globals:this.pawnGlobalSource,helper:this.pawnHelperSource}}createGlobalVar(e,F){this.sourceType="globalVariables";let i=F?this.variableNameForPawnDefinition(e,F):e;if(F){let a=this.generateCommentForField(F);a&&(Array.isArray(a)?(this.pawn("/**"),a.forEach(E=>{this.pawn(` * ${E}`)}),this.pawn(" */")):this.pawn(`// ${a}`))}this.pawn(`stock ${i}${F?this.initialiserForGlobalVar(F):""};`)}initialiserForGlobalVar(e){if(e.defaultDloDefine===void 0||e.arrayRef)return"";let F=ox(e);return!F||F==="skip"||`${F.rwp||""}`.includes("%l")?"":` = ${e.defaultDloDefine}`}insertSection(e){this.pawn(""),this.pawn("// ============================================================================="),this.pawn(`// ${e}`),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(e){this.sourceType="globalVariables",this.pawn(""),this.pawn(`// Container '${e.title.replace("_"," ")}'`),this.pawn("");let F=`DDE_${e.title}`;this.generateArrayDefines(F,e);for(let i of e.fields){if(i.type==="shadow"||i.shadowRef||i.library!==this.context)continue;if(i.arrayRef!==null){let E=e.arrays[i.arrayRef.name],o=`${F}_${i.arrayRef.name}`;E.fields?.length&&(o+=`_${i.name.split(".")[1]}`),this.createDefaultDefineForField(o,i);continue}let a=this.generateFieldVariableName(F,i);this.createDefaultDefineForField(a,i),this.createGlobalVar(`${a}`,i)}}generateArrayDefines(e,F){for(let i of Object.values(F.arrays)){if(this.context!==i.library)continue;let a=`${e}_${i.name}_dim`;if(this.sourceType="defines",this.pawn(`#define ${a} ${i.length}`),i.fields){for(let C of i.fields)vr[C.type]?.isBlob&&C.byteSize&&this.addDefine(`${e}_${i.name}_${C.name}_dim`,C.byteSize);let E={...F};E.fields=[],i.fields.forEach(C=>{E.fields.push({arrayRef:null,shadowRef:null,byteOffset:0,byteSize:C.byteSize,id:C.name,library:i.library,name:C.name,type:C.type,title:null,index:0})});let o=`${e}_${i.name}_def`;this.generateTypeDefinitions(E,o),this.createGlobalVar(`${e}_${i.name}[${a}][${o}]`)}else this.createGlobalVar(`${e}_${i.name}[${a}]`)}}generateCommentForField(e){let F=[`@type ${e.type}`];if(e.description&&F.unshift(e.description),e.defaultValue!==void 0){let{value:i,reason:a}=this.parseFieldDefault(e);F.push(`@default ${i} ${a||""}`)}return F}generateFieldVariableName(e,F){let i=`${e}_${F.name}`,a=Object.hasOwn(vr,F.type)&&vr[F.type].isBlob,E=F.byteSize;return E&&a&&(this.sourceType="defines",this.pawn(`#define ${e}_${F.name}_dim ${E}`),this.pawn(`#define ${e}_${F.name}_iter() for(new i=0;i<${E};i++)`)),this.sourceType="globalVariables",i}generateTypeDefinitions(e,F){this.sourceType="defines";let i=e.fields;if(!i)return;let a=[];this.pawn(">",`#define ${F} [`);for(let E of i){let o=this.generateFieldTypeDefinition(E,e,a,F);o!==null&&this.pawn(o)}this.pawn("<","]")}handleArrayFieldDedup(e,F,i,a){let E=e.arrayRef;if(E){let c=F.arrays[E.name];if(!i.includes(E.name)&&!c.fields)i.push(E.name);else return null}let o=e.arrayRef?e.arrayRef.name:e.name,C=e.arrayRef?`[${a}_${o}_dim]`:"";return{fieldName:o,fld_dim:C}}generateFieldTypeDefinition(e,F,i,a){if(e.type==="shadow"||e.shadowRef||e.library!==this.context)return null;let E=this.handleArrayFieldDedup(e,F,i,a);if(E===null)return null;let{fieldName:o,fld_dim:C}=E,c="";if(e.type==="struct")c="// ."+o+C;else{let j=ox(e);if(!j)return null;j==="skip"?c=`// skipped - .${o}${C}`:c+=j.rwp.replace("%n",`.${o}${C}`).replace("%l",e.byteSize)}return c+=",",e.library&&(c+=` // declared by ${e.library} library`),c}variableNameForPawnDefinition(e,F){let i=ox(F);return i&&i!=="skip"?i.rwp.replace("%n",`${e}`).replace("%l",F.byteSize):e}createDefaultDefineForField(e,F){if(this.sourceType="defaultDefines",F.scale!==void 0&&this.addDefine(`${e}_scale`,F.scale),F.offset!==void 0&&this.addDefine(`${e}_offset`,F.offset),F.defaultValue!==void 0&&Fi(F)){let{value:i,reason:a}=this.parseFieldDefault(F),E=`${e}_default`;this.addDefine(E,i,a)&&(F.defaultDloDefine=E)}}addDefine(e,F,i){return GA.exec(`${F}`)?!1:(this.knownDefines.includes(e)||(i&&this.pawn(`// ${i}`),this.pawn(`#define ${e} ${F}`),this.knownDefines.push(e)),!0)}generateReadWriteFunctions(e){let F=e.name,i=IA[F],a=`DDE_${e.containerType===H0.aloha?H0.aloha:e.title}`;[c0.both,c0.bothPlus,c0.none,c0.deviceOnly,c0.up,c0.upPlus].includes(e.transferDirection)&&this.generateWriteMethod(a,e),i.ctype===H0.cx&&this.generateReadMethod(a,e)}generateWriteMethod(e,F){this.sourceType="readWrite";let i=`DDE_${F.title}_id`,a=[H0.hx,H0.aloha].includes(F.containerType),E=F.containerType===H0.hx,o=F.containerType===H0.aloha,C=`_${e}_write`,c=Be(this.manifest)?", flags":"",j=E?`stamp${c}`:"",u=Be(this.manifest)?"const stamp=0, const flags=0":"const stamp=0";this.pawn(">",`stock ${C}(${E?u:""}) {`),a&&this.pawn(`dde_wbegin(DDE_${o?H0.aloha:F.title}_id);`),this.generateRWFunctionBody(e,F,"dde_w"),a&&this.pawn(`return dde_wend(${j});`),this.pawn("<","}"),this.pawn(""),this.sourceType="globalVariables";let p=`${e}_transfer`,k=`${e}_persist`,w=this.functionArgumentsForDdeWrite(E,a);if(this.pawn(">",`${this.context?"stock ":""}${p}(${w}) {`),a)this.pawn(`${C}(${j});`);else{let b=F.name.slice(-1);this.pawn(`dde_flush(${b}, immediate);`)}this.pawn("<","}"),this.pawn(""),F.volatile&&(this.pawn(">",`stock ${k}() {`),this.pawn(`return rM2M_CfgFlush(${i});`),this.pawn("<","}"))}functionArgumentsForDdeWrite(e,F){let i=Be(this.manifest)?", const flags=0":"";return e?`const stamp=0${i}`:F?"":"bool:immediate=false"}generateReadMethod(e,F){this.sourceType="readWrite";let i=`_${e}_read`;this.pawn(">",`stock ${i}() {`),this.generateRWFunctionBody(e,F,"dde_r"),this.pawn("<","}"),this.pawn("")}isFieldSkipped(e){return e.type==="shadow"||!!e.shadowRef||e.library!==this.context}emitFieldRW(e,F,i,a,E,o,C){if(!F.arrayRef)return this.emitSingleField(e,F,i,a,C);let c=F.arrayRef.name,j=E.get(c);return j?o.has(c)?C:(o.add(c),this.emitArrayLoop(e,j,i)):this.emitSingleField(e,F,i,a,C)}generateRWFunctionBody(e,F,i){let a=F.fields,E=this.analyzeArrayGroups(a,e,F),o=new Set,C=-1;for(let c of a){if(this.isFieldSkipped(c))continue;let j=ox(c);!j||j==="skip"||(C=this.emitFieldRW(e,c,i,j,E,o,C))}}defaultArgumentFor(e,F){return e.defaultDloDefine===void 0?"":F==="dde_r"||ni(this.manifest)?`, ${e.defaultDloDefine}`:""}emitSingleField(e,F,i,a,E){F.byteOffset!==E&&this.pawn(`_dde_idx = ${F.byteOffset};`);let o="";o+=i,o+=a.rwfunc;let C=`${e}_${F.name}`;return o+=`(${C}`,a.rwlen&&(o+=`, ${F.byteSize}`),o+=this.defaultArgumentFor(F,i),this.pawn(o+");"),F.byteOffset+F.byteSize}emitArrayLoop(e,F,i){this.pawn(">",`for (new _i = 0; _i < ${F.dimDefine}; _i++) {`);let a=-1;for(let E of F.templateFields){let o=ox(E);if(!o||o==="skip")continue;let C=E.byteOffset;C!==a&&this.pawn(`_dde_idx = ${C} + (_i * ${F.stride});`),a=C+E.byteSize;let c=`${e}_${E.name.replace(/\[\d+\]/,"[_i]")}`,j=`${i}${o.rwfunc}(${c}`;o.rwlen&&(j+=`, ${E.byteSize}`),j+=this.defaultArgumentFor(E,i),this.pawn(j+");")}return this.pawn("<","}"),-1}analyzeArrayGroups(e,F,i){let a=this.collectArrayFieldsByIndex(e);return this.buildArrayGroups(a,F,i)}collectArrayFieldsByIndex(e){let F=new Map;for(let i of e){if(this.isFieldSkipped(i)||!i.arrayRef)continue;let a=ox(i);if(!a||a==="skip")continue;let{name:E,index:o}=i.arrayRef;F.has(E)||F.set(E,new Map);let C=F.get(E);C.has(o)||C.set(o,[]),C.get(o).push(i)}return F}validateArrayStride(e,F){let i=F[0].byteOffset-e[0].byteOffset;if(i<=0)return null;for(let a=0;a<e.length;a++)if(F[a].byteOffset-e[a].byteOffset!==i)return null;return i}buildArrayGroups(e,F,i){let a=new Map;for(let[E,o]of e){let C=i.arrays[E];if(!C||C.length<2)continue;let c=o.get(0),j=o.get(1);if(!c||!j||c.length===0||j.length===0||c.length!==j.length)continue;let u=this.validateArrayStride(c,j);u!==null&&a.set(E,{arrayName:E,dimDefine:`${F}_${E}_dim`,stride:u,templateFields:c})}return a}parseFieldDefault(e){let F=ox(e),i=e.defaultValue;function a(o,C){return{value:o,reason:C}}switch(e.type){case"astring":case"nstring":case"cstring":return a(`"${i}"`);case"wstring":return a(`''${i}''`);case"ustring":return a(`/* default not supported: ${i} */`);case"binary":{let C=`{ 0x${(i.substring(2).replace(/\s+/g,"").match(/.{1,2}/g)||[]).join(", 0x")} }`;return a(C)}}if(i==="NaN"){let o=F.rwfunc;return a(`${o}_NaN`.toUpperCase())}let E=this.parseFieldScaleOffset(e);return E?a(E.calculated,E.reason):(i!==void 0&&!GA.exec(`${i}`)&&e.type.startsWith("float")&&i%1===0&&(i=i.toFixed(e.decimalPlaces||1)),a(`${i}`))}parseFieldScaleOffset(e){let F=e.defaultValue;if(!(!!GA.exec(`${e.offset}`)||!!GA.exec(`${e.scale}`)||!!GA.exec(`${e.defaultValue}`))&&(e.offset!==void 0||e.scale!==void 0)){let a=e.offset!==void 0?Number(e.offset):0,E=e.scale!==void 0?Number(e.scale):1;if(E===0)return null;let o=(Number(F)-a)/E,C=`(defaultValue - offset) / scale -> (${F} - ${a}) / ${E}`;return e.type.startsWith("float")?o%1===0&&(o=o.toFixed(1)):(o=Math.round(o),C=`Rounded value of: ${C}`),{calculated:o,reason:C}}return null}};function fi(t){return`${`onUplinkApply_${t}()`};`}function Ze(t,e,F){e.libraries.forEach(i=>{let a=i0.generateHashForLibraryName(i);t(` #ifdef _${a}${F}_${e.title}`),t(` _${a}${F}_${e.title}(); // ${i}`),t(" #endif")})}function Di(t,e){t("stock _onUplinkEvent(ev, param) {"),e.forEach(F=>{let a=`_${i0.generateHashForLibraryName(F)}UplinkEvent`;t(` #ifdef ${a}`),t(` ${a}(ev, param);`),t(" #endif")}),t(" onUplinkEvent(ev, param);"),t("}")}function li(t){let e=[],F=[];for(let[i,a]of Object.entries(t.containers))IA[i].ctype===H0.cx&&([c0.up,c0.upPlus,c0.deviceOnly].includes(a.transferDirection)&&F.push(a),[c0.bothPlus,c0.both,c0.downPlus,c0.down].includes(a.transferDirection)&&e.push(a));return{containerApply:e,containerRestore:F}}function ci(t,e){e.length&&t("");for(let F of e)F.knownNames.forEach(i=>{t(`forward onUplinkRestore_${i}();`)}),t(""),t(`stock restoreUplink${F.name}() {`),t(` _DDE_${F.name}_read();`),Ze(t,F,"Restore"),p0.hasContainerAppFields(F)&&t(` onUplinkRestore_${F.title}();`),t("}");if(t("#pragma warning push"),t("stock _onUplinkRestore(cfgId) {"),e.length){t(" switch(cfgId) {");for(let F of e)t(` case DDE_${F.title}_id: restoreUplink${F.name}(); // ${F.name}`);t(" }")}else t(" #pragma warning disable 203"),t(" // no containers to restore");t("}"),t("#pragma warning pop")}function di(t,e){e.length&&t("");for(let F of e)F.knownNames.forEach(i=>{t(`forward onUplinkApply_${i}();`)}),t(""),t(`stock applyUplink${F.name}() {`),t(` _DDE_${F.name}_read();`),Ze(t,F,"Apply"),p0.hasContainerAppFields(F)&&t(` ${fi(F.title)}`),t(" return(OK);"),t("}");if(t("#pragma warning push"),t("stock _onUplinkApply(cfgId) {"),e.length){t(" switch(cfgId) {");for(let F of e)t(` case DDE_${F.title}_id: return applyUplink${F.name}(); // ${F.name}`);t(" }"),t(" return ERROR;")}else t(" #pragma warning disable 203"),t(" // no containers to apply"),t(" return OK;");t("}"),t("#pragma warning pop")}function Qe(t,e){let F=[],i=F.push.bind(F);Di(i,e);let{containerApply:a,containerRestore:E}=li(t);return ci(i,E),di(i,a),F.join(`
1649
+ `)}var ji=ei.map(t=>`_DDE_${t}_write`);function xt(t){let e=[],F=e.push.bind(e),i=[...ji];for(let[a,E]of Object.entries(t.containers)){let o=Ce(E.containerType,E.transferDirection),C=IA[a];if(!o||!E.fields||C.ctype!==H0.cx)continue;let c=`DDE_${E.name}`,j=`DDE_${E.title}_id`;if([c0.both,c0.bothPlus,c0.none,c0.deviceOnly,c0.up,c0.upPlus].includes(E.transferDirection)){let u=`_${c}_write`;F(`stock ${u}() {`),F(` dde_wbegin(${j});`),We(F,E,"write"),F(" return dde_wend();"),F("}"),i.splice(i.indexOf(u),1)}if(C.ctype===H0.cx){let u=`_${c}_read`;F(`stock ${u}() {`),F(` if (dde_rbegin(${j})) return ERROR;`),We(F,E,"read"),F(" dde_rend();"),F(" return OK;"),F("}")}}if(i.length){F(""),F("// Dummy functions needed by the dde library");for(let a of i)F(`stock ${a}() { return OK; }`)}return e.join(`
1650
+ `)}function We(t,e,F){e.libraries.forEach(i=>{let a=i0.generateHashForLibraryName(i);t(` #ifdef __${a}${e.title}_${F}`),t(` __${a}${e.title}_${F}();`),t(" #endif")}),p0.hasContainerAppFields(e)&&(t(` #ifdef _DDE_${e.title}_${F}`),t(` _DDE_${e.title}_${F}();`),t(" #endif"))}async function At(t,e){let F=[],i=await _0.getApmPartDependencies(t,e,t0.Part.dlo);await TA(t,e,F,X.fileNames.autoInc);let a=await pi(t,e,i);for(let E of i)E.name==="local-data-interface"&&await TA(t,e,F,X.fileNames.autoLocalDataInc),F.push(`#include <${E.name}>`),E.name==="dlo-core"&&(F.push(...a),await TA(t,e,F,X.fileNames.autoDdeInc.replace("X","app")),await TA(t,e,F,X.fileNames.autoDdeInc.replace("X","main")));return i.some(E=>E.name==="dlo-core")&&await TA(t,e,F,X.fileNames.autoUplinkInc),F.join(`
1651
+ `)}async function pi(t,e,F){let i=[];for(let a of F){let E=X.filePaths.studio.auto.dlo.autoDdeInc.replace("X",a.name);await e.stat(fe.Utils.joinPath(t,E))&&i.push(`#include "${X.fileNames.autoDdeInc.replace("X",a.name)}"`)}return i}async function TA(t,e,F,i){let a=fe.Utils.joinPath(t,X.filePaths.studio.auto.dlo.path,i);await e.stat(a)&&F.push(`#include "${i}"`)}var et=J0(require("semver")),tt=require("yaml");var vx=p0.ContainerType,Br=p0.TransferDirection,ui=p0.fieldTypeDefinitions,EA={$ref:"#/components/parameters/contextId"},bi={$ref:"#/components/parameters/addonId"},mi={$ref:"#/components/parameters/appId"},rt={$ref:"#/components/schemas/histdataResponse"},hi={$ref:"#/components/schemas/histdataRequest"},Cr={$ref:"#/components/schemas/rapidM2MStamp"},gi={$ref:"#/components/schemas/timeseriesRequestBase"},Er="rapidM2M Stamp",px={description:"Successful operation"},nt={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"'}}},it={...structuredClone(nt)};Object.assign(it.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:[Cr,{type:"string"},{type:"number"}]}}},histdataRequest:{type:"object",additionalProperties:!1,required:["from","until"],properties:{from:{type:"string",format:Er,description:"items to include must be older or equal, UTC w/o time saving."},until:{type:"string",format:Er,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:Er,description:"items to include must be older or equal, UTC w/o time saving"},until:{type:"string",format:Er,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 SA={content:{"application/json":{schema:{type:"object",additionalProperties:!1,properties:{err:{type:"string",description:"Information what went wrong"}}}}}},Ux={401:{description:"Permission denied",...SA},403:{description:"Forbidden",...SA},404:{description:"Resource not found",...SA},500:{description:"Internal error",...SA}};function le(t,e,F=null){let i=et.coerce(e.version)?.version,a={openapi:"3.0.3",info:{description:e.description,title:e.name,version:i||""},tags:[],paths:{},components:{parameters:{},schemas:{}}};F?Object.assign(a.components,structuredClone(nt)):Object.assign(a.components,structuredClone(it));let E=U.isAddon(e),o=U.isAnalytics(e);E&&(a.components.parameters.addonId={name:"addonUid",in:"path",description:"The addon uid",schema:{type:"string"},required:!0});for(let C of Object.values(t.containers))F&&(!C.libraries.includes(F)||C.containerType===vx.hx)||!F&&!p0.hasContainerAppFields(C)||C.containerType===vx.aloha||(ki(a,C),wi(a,C,F),qi(a,C,E,o),!E&&!o&&(yi(a,C,F),$i(a,C)));return a.tags.push({name:"app-center",description:"App Center related routes"}),(0,tt.stringify)(a)}function ki(t,e){t.tags.push({name:nx(e.title),description:`Transfer direction ${e.transferDirection}`})}function nx(t){return t.split("_").join(" ")}function yi(t,e,F){let i=`${e.name}`,a={type:"object",description:`Container: "${e.title}"`,additionalProperties:!1,properties:{}},E=[];e.containerType===vx.hx&&(i+="Select",E.push("select"),a.properties.select={type:"array",items:{type:"string",enum:[]}});for(let o of e.fields)o.library!==F||o.type==="shadow"||(e.containerType===vx.hx?a.properties.select.items.enum.push(o.id):(a.properties[o.id]=Ft(o),!o.readPermission&&!o.writePermission&&E.push(o.id)));a.required=E.length?E:void 0,t.components.schemas[i]=a}function wi(t,e,F=null){let i=`${e.title}`,a={type:"object",description:`Container: "${e.title}" with device transfer direction "${e.transferDirection}"`,additionalProperties:!1,properties:{}},E=[],o=e.containerType===vx.hx;for(let c of e.fields)c.library!==F||c.type==="shadow"||(a.properties[c.name]=Ft(c),!c.readPermission&&!c.writePermission&&E.push(c.name));a.required=E.length?E:void 0,t.components.schemas[i]=a;let C=a.properties;if(o){a.required=a.required?.map(j=>j.toLowerCase());let c={};for(let[j,u]of Object.entries(a.properties))c[j.toLowerCase()]=u;a.properties=c}if(o){let c={type:"object",description:`Request schema of "${e.title}"`,additionalProperties:!1,properties:{select:{type:"array",description:"Optional selection of specific fields of the given container",items:{type:"string",enum:Object.keys(C)}}}};t.components.schemas[`${i}RequestSingle`]=c,t.components.schemas[`${i}Request`]={allOf:[gi,c]},a.properties.stamp=Cr,E.push("stamp")}}function Ft(t){let F={...ui[t.type].openApi},i=_i(t);return F.default=i,F.example=i,F.description=t.description,F}function _i(t){return t.defaultValue===void 0?t.defaultValue:t.type==="binary"?`${t.defaultValue.substring(2)}`:t.defaultValue}function $i(t,e){let F=`/api/1/sites/{siteUid}/${e.name}`,i={get:void 0,put:void 0};if([vx.cx,vx.cb].includes(e.containerType))i.get={deprecated:!0,tags:[nx(e.title)],summary:`Retrieve the data of the "${nx(e.title)}" container`,parameters:[EA],responses:{200:{...px,content:{"application/json":{schema:{allOf:[{type:"object",required:["stamp"],properties:{stamp:Cr}},{$ref:`#/components/schemas/${e.name}`}]}}}},...Ux}},[Br.down,Br.backendOnly].includes(e.transferDirection)&&(i.put={deprecated:!0,tags:[nx(e.title)],summary:`Modify the data of the "${nx(e.title)}" container`,parameters:[EA],requestBody:{content:{"application/json":{schema:{$ref:`#/components/schemas/${e.name}`}}}},responses:{201:{...px},204:{...px},...Ux}});else if(e.containerType===vx.hx){let a=`${F}`;F+="/youngest",i.get={deprecated:!0,tags:[nx(e.title)],summary:`Retrieve the youngest data of the "${nx(e.title)}" container`,parameters:[EA,{name:"json",in:"query",required:!0,schema:{$ref:`#/components/schemas/${e.name}Select`}}],responses:{200:{...px,content:{"application/json":{schema:rt}}},...Ux}},t.paths[a]={get:{deprecated:!0,tags:[nx(e.title)],summary:`Get the historical data of the "${nx(e.title)}" container.`,parameters:[EA,{name:"json",in:"query",required:!0,schema:{allOf:[{$ref:`#/components/schemas/${e.name}Select`},hi]}}],responses:{200:{...px,content:{"application/json":{schema:rt}}},...Ux}}}}t.paths[F]=i}function qi(t,e,F=!1,i=!1){let E=e.containerType===vx.hx?"timeseries":"containers",o=[],C=nx(e.title);i||o.push({path:`/api/1/sites/{siteUid}/${E}/${e.title}`,params:[EA],tags:[C]}),F&&(o=[{path:`/api/1/sites/{siteUid}/addons/{addonUid}/${E}/${e.title}`,params:[EA,bi],tags:[C]}]);let c={path:`/api/1/app-center/apps/{appUid}/${E}/${e.title}`,params:[mi],tags:["app-center"]};i&&c.tags.push(C),o.push(c);let j={get:void 0,put:void 0,post:void 0},u={tags:[],summary:`Retrieve the data of the "${nx(e.title)}" container`,parameters:[],responses:{200:{...px,content:{"application/json":{schema:{allOf:[{type:"object",required:["stamp"],properties:{stamp:Cr}},{$ref:`#/components/schemas/${e.title}`}]}}}},...Ux}};if([vx.cx,vx.cb].includes(e.containerType)&&(j.get=u,[Br.down,Br.backendOnly].includes(e.transferDirection)&&(j.put={tags:[],summary:`Modify the data of the "${nx(e.title)}" container`,parameters:[],requestBody:{content:{"application/json":{schema:{$ref:`#/components/schemas/${e.title}`}}}},responses:{201:{...px},204:{...px},...Ux}}),o.forEach(p=>{let k=structuredClone(j);Object.values(k).forEach(w=>{w?.parameters?.unshift(...p.params),w?.tags?.unshift(...p.tags)}),t.paths[p.path]=k})),e.containerType===vx.hx){j.get={tags:[],summary:`Get the historical data of "${e.title}"`,parameters:[{name:"json",in:"query",required:!1,schema:{$ref:`#/components/schemas/${e.title}Request`}}],responses:{200:{...px,content:{"application/json":{schema:{type:"array",items:{$ref:`#/components/schemas/${e.title}`}}}}},...Ux}},F&&(j.post={tags:[],summary:`Insert data into the "${nx(e.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/${e.title}`}}}},responses:{201:{...px},400:{description:"Bad request",...SA},...Ux}});let p=o[0],k=structuredClone(j);Object.values(k).forEach(M=>{M?.parameters?.unshift(...p.params),M?.tags?.unshift(...p.tags)}),t.paths[p.path]=k;let w={...px,content:{"application/json":{schema:{$ref:`#/components/schemas/${e.title}`}}}},b=`${p.path}/youngest`,y={get:structuredClone(k.get)};y.get.summary=`Get the youngest record of "${e.title}" container`,y.get.responses[200]=w;let q=F?2:1;y.get.parameters[q].schema.$ref=`#/components/schemas/${e.title}RequestSingle`,t.paths[b]=y;let N=`${p.path}/oldest`,G={get:structuredClone(k.get)};G.get.summary=`Get the oldest record of "${e.title}" container`,G.get.responses[200]=w,G.get.parameters[q].schema.$ref=`#/components/schemas/${e.title}RequestSingle`,t.paths[N]=G}}var at=p0.TransferDirection,fr=" new szTemp{64};",Dr=" return strcat(aData, szTemp, sizeof(szTemp));";function ot(t){if(!t.printf&&t.printfFormat==="memtostr")return"bin";if(!t.printf)return null;let e=t.rwp||"%n",F=e.includes("["),a=e.includes("{")||F;if(t.printfFormat==="stampToISOString")return a?null:"stamp";switch(t.printf){case"%d":return a?null:"d";case"%f":return a?null:"f";case"%s":return F?null:"s";default:return null}}function ce(t){if(t.type==="shadow"||t.shadowRef)return null;let e=ox(t);return!e||e==="skip"?null:ot(e)}function vt(t){return[p0.ContainerType.hx,p0.ContainerType.cx].includes(t.containerType)&&t.transferDirection!==at.backendOnly}function Pi(t){if(t.type==="shadow"||t.shadowRef)return!1;let e=ox(t);return!!e&&e!=="skip"}function Ni(t,e,F){let i=t.name.indexOf("]"),a=i>=0?t.name.substring(i+1):"",E=`${t.arrayRef.name}|${a}|${e}`;F.has(E)||F.set(E,{fields:[],formatType:e}),F.get(E).fields.push(t)}function Li(t){let e=[],F=new Map,i=new Set,a=!1;for(let E of t){if(!Pi(E))continue;let o=ce(E);E.arrayRef&&o?Ni(E,o,F):(e.push(E),o?i.add(o):a=!0)}return{standaloneFields:e,groupMap:F,usedFormats:i,hasInlineFields:a}}function Gi(t,e,F){F.sort((j,u)=>j.arrayRef.index-u.arrayRef.index);let i=F.map(j=>j.byteOffset),a=i[1]-i[0];if(!(a>0&&i.every((j,u)=>u===0||j-i[u-1]===a)))return null;let[o,C]=e.split("|"),c=F[0].library?`_${i0.generateHashForLibraryName(F[0].library)}`:"DDE_";return{arrayName:o,subField:C,fields:F,startOffset:i[0],endOffset:i[i.length-1],step:a,formatType:ce(F[0]),pawnVarBase:`${c}${t}_${o}`}}function Ti(t,e){let{standaloneFields:F,groupMap:i,usedFormats:a,hasInlineFields:E}=Li(e),o=[];for(let[C,c]of i){let{fields:j,formatType:u}=c;if(j.length<2){F.push(...j),a.add(u);continue}let p=Gi(t,C,j);p?(a.add(u),o.push(p)):(F.push(...j),a.add(u))}return F.sort((C,c)=>C.byteOffset-c.byteOffset),{arrayGroups:o,standaloneFields:F,usedFormats:a,hasInlineFields:E}}function Ii(t){let e=new Set;for(let[,F]of Object.entries(t.containers))if(vt(F))for(let i of F.fields){let a=ce(i);a&&e.add(a)}return e}function Mi(t,e){e.has("d")&&(t("stock _DDE_fmt_d(aData{}, value) {"),t(fr),t(' sprintf(szTemp, _, "%d", value);'),t(Dr),t("}")),e.has("f")&&(t(""),t("stock _DDE_fmt_f(aData{}, Float:value) {"),t(fr),t(' sprintf(szTemp, _, "%.3f", value);'),t(Dr),t("}")),e.has("s")&&(t(""),t("stock _DDE_fmt_s(aData{}, value{}) {"),t(fr),t(' sprintf(szTemp, _, "%s", value);'),t(Dr),t("}")),e.has("stamp")&&(t(""),t("stock _DDE_fmt_stamp(aData{}, value) {"),t(fr),t(' sprintf(szTemp, _, "%s", (stampToISOString(value)));'),t(Dr),t("}")),e.has("bin")&&(t(""),t("stock _DDE_fmt_bin(aData{}, mem{}, dim) {"),t(" #pragma warning disable 224"),t(" memtostr(aData, mem, 0, dim);"),t(" #pragma warning disable 224"),t(" return dim;"),t("}"))}function Si(t,e){return e===1?t===0?"idx":`idx - ${t}`:t===0?`idx / ${e}`:`(idx - ${t}) / ${e}`}function Ri(t,e,F){let i=`idx >= ${t} && idx <= ${e}`;if(F===1)return i;let a=t===0?`idx % ${F} == 0`:`(idx - ${t}) % ${F} == 0`;return`${i} && ${a}`}function Oi(t,e){let{startOffset:F,endOffset:i,step:a,formatType:E,pawnVarBase:o,subField:C}=e,c=Si(F,a),j=Ri(F,i,a);if(t(` if (${j}) {`),E==="bin"){let u=`${o}[${c}]${C}`,p=C?C.substring(1):"",k=p?`${o}_${p}_dim`:`${o}_dim`;t(` return _DDE_fmt_bin(aData, ${u}, ${k});`)}else t(` return _DDE_fmt_${E}(aData, ${o}[${c}]${C});`);t(" }")}function Ui(t,e,F){if(F.type==="shadow"||F.shadowRef)return;let i=ox(F);if(!i||i==="skip")return;let E=`${F.library?`_${i0.generateHashForLibraryName(F.library)}`:"DDE_"}${e}_${F.name}`,o=ot(i);if(o==="bin")t(` case ${F.byteOffset}: return _DDE_fmt_bin(aData, ${E}, ${E}_dim);`);else if(o)t(` case ${F.byteOffset}: return _DDE_fmt_${o}(aData, ${E});`);else{if(t(` case ${F.byteOffset}: {`),i.printf){let C=E;i.printfFormat&&(C=`(${i.printfFormat}(${C}))`),t(` sprintf(szTemp, _, "${i.printf}", ${C});`),t(" return (strcat(aData, szTemp, sizeof(szTemp)));")}t(" }")}}function Hi(t,e,F){t(` case '${e.at(-1)}': {`),t(` return _DDE_local_${F.title}(aData, idx);`),t(" }")}function st(t,e,F){let i=F===p0.ContainerType.cx?"c":"h",a=F===p0.ContainerType.cx?"config":"histdata";t(` if(cname{0} == '${i}'){`),t(" switch(cname{1}) {");for(let[E,o]of Object.entries(e.containers))F===o.containerType&&E.startsWith(a)&&o.transferDirection!==at.backendOnly&&Hi(t,E,o);t(" default:"),t(" return OK;"),t(" }"),t(" return OK;"),t(" }")}function zi(t,e){let F=Ti(e.title,e.fields);t(""),t(`stock _DDE_local_${e.title}(aData{}, idx) {`),F.hasInlineFields&&t(" new szTemp{64};");for(let i of F.arrayGroups)Oi(t,i);if(F.standaloneFields.length>0){t(" switch(idx) {");for(let i of F.standaloneFields)Ui(t,e.title,i);t(" default:"),t(" return OK;"),t(" }")}t(" return OK;"),t("}")}function Ji(t,e){for(let[,F]of Object.entries(e.containers))vt(F)&&zi(t,F)}function Et(t){let e=[],F=e.push.bind(e),i=Ii(t);return Mi(F,i),i.size>0&&F(""),F("stock DDE_get_local_data(cname{}, aData{}, idx) {"),st(F,t,p0.ContainerType.cx),st(F,t,p0.ContainerType.hx),F(" return OK;"),F("}"),Ji(F,t),e.join(`
1652
+ `)}var Dt=i0.yamlRangeToLineInformation,RA=X.filePaths.dde.path,Ex;(P=>{let t=p0.DDEJson,e=i0.convertBlobToString;P.DDE_SCHEMA=ze;async function i(g,_){let I=await _.readFile(g);return e(I)}P.readYamlFile=i;async function a(g,_,I=X.fileNames.mainDDE,z){let J=[],H=await U.read(g,_),R=await Bt(g,_,H);if(z)for(let L of R){let{result:Z,unresolvedKeys:Q}=I0.replaceDefineTemplates(L.yaml,z);L.yaml=Z;for(let e0 of Q)J.push({file:L.path,level:"error",message:`Unresolved define template: {{${e0}}}`,line:0,startCharacter:0,endCharacter:0})}for(let L of R)J.push(...c(L.path,L.yaml));let W=P0.Utils.joinPath(g,RA,I),K=await i(W,_);if(z){let{result:L,unresolvedKeys:Z}=I0.replaceDefineTemplates(K,z);K=L;for(let Q of Z)J.push({file:W,level:"error",message:`Unresolved define template: {{${Q}}}`,line:0,startCharacter:0,endCharacter:0})}return J.push(...c(W,K)),{manifest:H,libraryFiles:R,main:{path:W,yaml:K},diagnostics:J}}P.validate=a;async function E(g,_,I,z=X.fileNames.mainDDE){let J=await U.read(g,_),H=await I0.read(g,_,I),R=await a(g,_,z,H.flat);if(R.diagnostics.filter(D0=>D0.level==="error").length>0)return{ddeJSON:null,diagnostics:R.diagnostics};let K=await w(g,_,I),L=new sr.PreCompiler(J,R.libraryFiles,K),Z=L.parseLibraries();if(Z.find(D0=>D0.level==="error"))return{ddeJSON:null,diagnostics:[...R.diagnostics,...Z]};let{ddeJSON:e0,diagnostics:f0}=L.parseMainDDE(R.main.path,R.main.yaml);return{ddeJSON:e0,diagnostics:[...R.diagnostics,...f0]}}P.compileDDE=E;let o=new Ct.default({strict:!1,allErrors:!0,verbose:!0});(0,ft.default)(o);let C=o.compile(P.DDE_SCHEMA);function c(g,_){let I=new lr.LineCounter,z=(0,lr.parseDocument)(_,{lineCounter:I,keepSourceTokens:!0}),J=[];for(let W of z.errors){let K=W.pos?Dt(I,[W.pos[0],W.pos[1],W.pos[1]]):{line:0,startCharacter:0,endCharacter:0};J.push({file:g,level:"error",message:W.message,...K})}if(J.length>0)return J;let H=z.toJSON();if(!C(H)){let K=(C.errors||[]).filter(Z=>Z.keyword!=="if"),L=new Set;for(let Z of K){let Q=Wi(Z);if(L.has(Q))continue;L.add(Q);let e0=Yi(z,I,Z);J.push({file:g,level:"error",message:Q,...e0})}}return J}P.validateJsonSchema=c,P.PreCompiler=(g,_,I)=>new sr.PreCompiler(g,_,I);function u(g,_){return ve(g,_)}P.generateMyDatanetXML=u;async function p(g,_,I,z){let J=await U.read(g,_),H=ve(J,z),R=P0.Utils.joinPath(g,X.filePaths.dist.ddeXmlPath);await _.writeFile(R,H),I.log("Generated",X.filePaths.dist.ddeXmlPath)}P.exportMyDatanetXML=p;async function k(g,_,I,z,J){let H=P0.Utils.joinPath(g,X.filePaths.studio.auto.dde.historyJson);await _.rm(H).catch(console.error);let R=await U.read(g,_);if(!U.isApp(R)||!R.registry?.id)return;if(!J){I.warn("Could not fetch dde of previous version: No API token provided.");return}let W=mx.coerce(R.version);try{let Z=(await y0.getExistingApplication(J,R.publisher,R.registry.id,z)).versions.find(D0=>!mx.prerelease(D0.version)&&mx.lte(D0.version,W)),Q=Z?.files.find(D0=>D0.name==="dde.json");if(!Q){I.warn("Could not find a valid previous released app version to fetch the previous dde from.");return}let e0=await fetch(Q.downloadUrl,{headers:{...sx(J),...y0.injectSemverHeader(!0)}});if(e0.status!==200){I.warn(`Could not fetch the dde.json of version "${Z?.version}"`);return}let f0=await e0.text();await _.writeFile(H,f0),I.log(`Saved history.json of previous app version ${Z.version}`)}catch(K){I.error("Failed to fetch the dde of previous version",K)}}P.fetchPreviousHistoryJson=k;async function w(g,_,I){try{let z=P0.Utils.joinPath(g,X.filePaths.studio.auto.dde.historyJson);if(await _.stat(z)){let H=await _.readFile(z);return JSON.parse(e(H))}let J=P0.Utils.joinPath(g,RA,"history.json");if(await _.stat(J)){I.warn(`"${X.filePaths.studio.auto.dde.historyJson}" does not exist - fallback to "${RA}history.json"`);let H=await _.readFile(J),R=JSON.parse(e(H)),W=await U.read(g,_),K=mx.coerce(W.version)?.version,L=Object.keys(R||{}).sort(mx.rcompare).find(Q=>Q!==K);if(!L)return null;let Z=R[L];return{version:L,...Z}}}catch(z){I.error("Failed to read history.json",z)}return I.warn("history.json does not exist"),null}P.getHistoryJson=w;function b(g,_){return{version:mx.coerce(_.version)?.version||"1.0.0",...structuredClone(g)}}P.buildHistoryJson=b;async function y(g,_,I,z){let J=await U.read(g,_),H=b(z,J),R=P0.Utils.joinPath(g,X.filePaths.dist.historyJson);await _.writeFile(R,JSON.stringify(H,null," ")),I.log("Generated",X.filePaths.dist.historyJson)}P.exportHistoryJson=y;async function q(g,_){return _.rm(P0.Utils.joinPath(g,X.filePaths.studio.auto.dlo.path))}P.clearAutoDloDir=q;async function N(g,_,I,z){await q(g,_);let J=await U.read(g,_),H=await Bt(g,_,J),R=await I0.read(g,_,I),W=Ye(z,R,J),L=new MA(J,z,null).generate();for(let Q0 of H){let Nx=new MA(J,z,Q0.libraryName),{globals:zx,helper:xx}=Nx.generate(),Lx=[...zx,...xx].join(`\r
1653
+ `),tA=X.filePaths.studio.auto.dlo.autoDdeInc.replace("X",Q0.libraryName),Jx=P0.Utils.joinPath(g,tA);Lx.length&&(I.log("Generated",tA),await _.writeFile(Jx,Lx))}let Z=xt(z),Q=Qe(z,H.map(Q0=>Q0.libraryName)),e0=Et(z),f0=P0.Utils.joinPath(g,X.filePaths.studio.auto.dlo.autoInc);await _.writeFile(f0,W),I.log("Generated",X.filePaths.studio.auto.dlo.autoInc);let D0=P0.Utils.joinPath(g,X.filePaths.studio.auto.dlo.autoUplinkInc);await _.writeFile(D0,Q),I.log("Generated",X.filePaths.studio.auto.dlo.autoUplinkInc);let o0=P0.Utils.joinPath(g,X.filePaths.studio.auto.dlo.autoLocalDataInc);await _.writeFile(o0,e0),I.log("Generated",X.filePaths.studio.auto.dlo.autoLocalDataInc);let u0=P0.Utils.joinPath(g,X.filePaths.studio.auto.dlo.autoDdeInc.replace("X","app"));await _.writeFile(u0,[...L.globals,...L.helper].join(`
1654
+ `)),I.log("Generated",X.filePaths.studio.auto.dlo.autoDdeInc.replace("X","app"));let M0=P0.Utils.joinPath(g,X.filePaths.studio.auto.dlo.autoDdeInc.replace("X","main"));await _.writeFile(M0,Z),I.log("Generated",X.filePaths.studio.auto.dlo.autoDdeInc.replace("X","main")),await M(g,_,I)}P.exportAutoDloFiles=N;async function G(g,_,I,z){let J=await U.read(g,_),H=U.isLibrary(J),R=P0.Utils.joinPath(g,X.filePaths.dist.path,"dde-api.yaml");await _.rm(R).catch(()=>{});let W=P0.Utils.joinPath(g,X.filePaths.dist.ddeApi);if(await _.writeFile(W,le(z,J)),I.log("Generated",X.filePaths.dist.ddeApi),H){let K=P0.Utils.joinPath(g,X.filePaths.dist.ddeApiPath,`${J.name}.yaml`),L=le(z,J,J.name);L.length&&(await _.writeFile(K,L),I.log("Generated",X.filePaths.dist.ddeApiPath+`${J.name}.yaml`))}}P.exportOpenApi=G;async function M(g,_,I){let z=P0.Utils.joinPath(g,X.filePaths.studio.auto.dlo.defaultInc),J=await At(g,_);await _.writeFile(z,J),I.log("Generated",X.filePaths.studio.auto.dlo.defaultInc)}P.exportDefaultInc=M})(Ex||={});async function Bt(t,e,F){let i=[],a=await _0.getAll(F);for(let E in a){let o=_0.dependencyToPath(t,E),C=_0.dependencyIdToName(E),c=P0.Utils.joinPath(o,`${RA}/${C}.dde`);await e.stat(c)&&i.push({libraryName:C,path:c,yaml:await Ex.readYamlFile(c,e)})}if(U.isLibrary(F)){let E=P0.Utils.joinPath(t,`/${RA}/${F.name}.dde`);await e.stat(E)&&i.push({libraryName:F.name,path:E,yaml:await Ex.readYamlFile(E,e)})}return i}function Ki(t,e,F){if(typeof t=="string")return t;if(typeof t!="object"||t===null)return"";let i=t[e];if(typeof i=="string")return i;if(typeof i!="object"||i===null)return"";let a=F?.missingProperty;return a?i[a]??"":""}function Vi(t,e,F,i){let E={required:()=>`Missing required property '${e.missingProperty}'.`,additionalProperties:()=>`Unknown property '${e.additionalProperty}' is not allowed.`,type:()=>`Must be of type '${e.type}'.`,enum:()=>`Must be one of the allowed values: ${JSON.stringify(e.allowedValues)}.`,pattern:()=>`Value does not match the required pattern. ${i?.patternErrorMessage??F}`,minimum:()=>`${F}.`,maximum:()=>`${F}.`,exclusiveMinimum:()=>`${F}.`,exclusiveMaximum:()=>`${F}.`,not:()=>`This value is not allowed here. ${i?.description??""}`.trimEnd(),anyOf:()=>`Value does not match any of the allowed schemas. ${i?.description??""}`.trimEnd(),oneOf:()=>`Value does not match any of the allowed schemas. ${i?.description??""}`.trimEnd()}[t];return E?E():F}function Wi(t){let e=t.instancePath||"/",F=t.parentSchema,i=Ki(F?.errorMessage,t.keyword,t.params);if(i)return`${e}: ${i}`;let a=t.message||"unknown validation error";return`${e}: ${Vi(t.keyword,t.params,a,F)}`}function Xi(t,e){let F=e.split("/").filter(Boolean).map(i=>{let a=Number(i);return Number.isNaN(a)?i:a});for(let i=F.length;i>=0;i--){let a=F.slice(0,i),E=t.getIn(a,!0);if(E?.range)return E.range}return null}function Yi(t,e,F){let i=Xi(t,F.instancePath||"");return i?Dt(e,i):{line:0,startCharacter:0,endCharacter:0}}var de=require("vscode-uri");var BA=class{dloFileMap={};rootUri=de.URI.parse("");constructor(){}set workspacePath(e){this.rootUri=e}getSequenceForFile(e){let F=e.substring(this.rootUri.path.length||0);if(this.rootUri.scheme!=="file"){let a=this.rootUri.toString();F=e.substring(a.length+1)}if(Object.hasOwn(this.dloFileMap,F))return this.dloFileMap[F];let i=i0.generateHashForFilePath(F);return this.dloFileMap[F]=i,i}getFilePathForSequence(e){let F=Object.entries(this.dloFileMap).find(([,i])=>i===e);return F?de.URI.parse(`${this.rootUri.path}${F[0]}`).path:null}};var dt=require("vscode-uri");var Zi=/^(?:\s*#options\s+)(.*)(?:\s*)$/,Qi=/^(?:\s*#preinclude\s+)(.*)(?:\s*)$/,xF=/^(?:\s*#ifdef\s+)(.*)$/,AF=/^(?:\s*#ifndef\s+)(.*)$/,rF=/^(?:\s*#elseifdef\s+)(.*)$/,eF=/^(?:\s*#elseifndef\s+)(.*)$/,jt=/^(\s*)(?:#callback\s+)(\w*)(?:\s*\(\s*)(.*?)(?:\s*\)\s*)(\{*){1}(?:\s*)$/,pt=/^(.*)(^|\s+)(?:assert\s*\(\s*)(.*?)(?:\s*,\s*)(.*?)(?:\s*\)\s*;*\s*)$/,ut=/^(.*)(^|\s+)(?:assert\s*\(\s*)(.*?)(?:\s*\)\s*;*\s*)$/,bt=/^(.*)(^|\s+)(?:assert\s*\(\s*\);*\s*)$/,mt=/^(.*)(^|\s+)(?:catch\s*\(\s*)(.*?)(?:\s*\)\s*;*\s*)$/,tF=/^\s*#include\s*</,nF=/^\s*#endinput\s*/,iF=/^\s*#pragma\s+dynamic\s+(\S+)\s*(\/\/.*|\/\*.*|)$/,ht=/^(.*)(^|\s+)(?:applog(|_ok|_warning|_alarm|_debug|_fatal)\s*\(\s*)(.*?)(?:\s*,\s*)(.*?)(?:\s*\)\s*;*\s*)$/,gt=/^(.*)(^|\s*)(?:applog(|_ok|_warning|_alarm|_debug|_fatal)\s*\(\s*)(.*?)(?:\s*\)\s*;*\s*)$/;function lt(t,e=""){let F=" ",i=t;return e.length?F={fatal:"\xA7",alarm:"!",warning:"?",debug:"~",ok:"$"}[e]||null:["!","?","~","$","\xA7"].includes(t.substring(1,1))&&(F=t.substring(1,1),i=`"${t.substring(2,t.length-1)}"`),{priority:`'${F}'`,code:i}}var kt=/^(.*)(^|\s+)(?:log(|_debug|_info|_warn|_error)\s*\(\s*)(.*?)(?:\s*\)\s*;*\s*)$/,yt=(a=>(a[a.debug=0]="debug",a[a.info=1]="info",a[a.warn=2]="warn",a[a.error=3]="error",a))(yt||{}),FF=/^(.*)(^|\s*)DDE_(state|result|aloha|volatile|setting|command)_/,sF=/^(.*)(^|\s*)onUplink(Restore|Apply)_(state|result|aloha|volatile|setting|command)/,aF=/^(.*)(^|\s*)onUplinkEvent/,oF=/(?:^|\s)(?:assert|catch|applog(?:_ok|_warning|_alarm|_debug|_fatal)?|log(?:_debug|_info|_warn|_error)?)\s*\(/,vF=/^\s*#callback\s+\w+\s*\(/;function ct(t){let e=0,F=!1,i="";for(let a=0;a<t.length;a++){let E=t[a];if(F){if(E==="\\"){a++;continue}E===i&&(F=!1);continue}if(E==='"'||E==="'"){F=!0,i=E;continue}E==="("?e++:E===")"&&e--}return e}function wt(t){return jt.test(t)||bt.test(t)||pt.test(t)||ut.test(t)||mt.test(t)||ht.test(t)||gt.test(t)||kt.test(t)}function EF(t,e,F){if(!(oF.test(F)||vF.test(F)))return null;let a=ct(F);if(a<=0)return null;let E=a,o=[t[e]],C=[F],c=e+1,j=100;for(;E>0&&c<t.length&&c-e<j;){let k=t[c],w=k.split("//",1)[0];o.push(k),C.push(w),E+=ct(w),c++}if(o.length<=1||E>0)return null;let u=o.map((k,w)=>w===0?k:k.trim()).join(" "),p=C.map((k,w)=>w===0?k:k.trim()).join(" ");return wt(p)?{joinedOriginal:u,joinedStripped:p,extraLineCount:o.length-1}:null}var CA=class{pragmaDynamic=null;dloFileSequencer=new BA;constructor(){}get pragmaDynamicFlag(){return this.pragmaDynamic?`-S${this.pragmaDynamic}`:null}preCompileDloFile(e,F,i,a,E){this.dloFileSequencer.workspacePath=e;let o=[],C=a.path,c=!1,j=dt.Utils.basename(a);if(C.includes(X.filePaths.studio.auto.dlo.path)){let b=j.substring(0,j.length-8);!["app","main"].includes(b)&&j.endsWith("-dde.inc")&&(c=i0.generateHashForLibraryName(b))}else if(C.includes(X.filePaths.studio.libdeps)){let b=C.split("libdeps/")[1],[y]=b.split("/");["dlo-core"].includes(y)||(c=i0.generateHashForLibraryName(y))}else U.isLibrary(i)&&(j.endsWith(".dlo")||C.includes("/dlo/examples/")||C.includes("/dlo/test/")?F.log("Skipping dde mangling for project file",j):c=i0.generateHashForLibraryName(i.name));if(C.endsWith(".auto/default.inc"))return{data:E.join(`
1655
+ `),diagnostics:o};let u=[],p=this.dloFileSequencer.getSequenceForFile(C);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 b=0;b<E.length;b++){let y=E[b],q=y.split("//",1)[0],N=null,G=0;if(!wt(q)){let M=EF(E,b,q);M&&(y=M.joinedOriginal,q=M.joinedStripped,G=M.extraLineCount)}if(N=Zi.exec(q))y="// "+y,o.push({file:a,level:"error",line:b,message:"#options is not supported here. Use the DLO settings instead."});else if(N=Qi.exec(q))y="// "+y,o.push({file:a,level:"error",line:b,message:"#preinclude is not supported here. Use the DLO settings instead."});else if(N=iF.exec(q)){let M=Number(N[1].startsWith("(")?N[1].substring(1,N[1].length-1):N[1]);!Number.isInteger(M)||M<64?o.push({file:a,level:"error",line:b,message:"#pragma dynamic only supports integer values and must be greater than 63"}):(!this.pragmaDynamic||M>this.pragmaDynamic)&&(this.pragmaDynamic=M)}else if(N=xF.exec(q))y=y.replace("#ifdef ","#if defined ");else if(N=AF.exec(q))y=y.replace("#ifndef ","#if !defined ");else if(N=rF.exec(q))y=y.replace("#elseifdef ","#elseif defined ");else if(N=eF.exec(q))y=y.replace("#elseifndef ","#elseif !defined ");else if(N=jt.exec(q)){let[,M,P,g,_]=N;y=`${M}#define ${P} _catch_funcidx( "___${P}")
1656
+ forward ___${P}( ${g});
1657
1657
  #line
1658
- ${_}
1659
- public ___${T}( ${$})${L}`}else if(g=bt.exec(P)){let[,q,T]=g;y=`${q}${T}{_log_string="";_assert(__refid,__line);}`}else if(g=jt.exec(P)){let[,q,T,$,L]=g;y=`${q}${T}{ if (!(${$})) { sprintf(_log_string,_,${L.replace(/%%/g,"\xFF")});_assert(__refid,__line); }}`}else if(g=pt.exec(P)){let[,q,T,$]=g;y=`${q}${T}{ if (!(${$})) { _log_string="";_assert(__refid,__line); }}`}else if(g=ut.exec(P)){let[,q,T,$]=g;y=`${q}${T}_catch(__refid,__line,${$});`}else if(g=mt.exec(P)){let[,q,T,$,L,U]=g,{priority:H,code:K}=Dt(L,$.substring(1));H!==null&&(y=`${q}${T}{new params_str{DDE_APPLOG_SIZE_PARAMS};sprintf(params_str,_,${U});DDE_applog_write(${H}, ${K}, params_str, __applog_src_id);}`)}else if(g=ht.exec(P)){let[,q,T,$,L]=g,{priority:U,code:H}=Dt(L,$.substring(1));U!==null&&(y=`${q}${T}DDE_applog_write(${U}, ${H}, "", __applog_src_id);`)}else if(g=gt.exec(P)){let[,q,T,$,L]=g,U=$.substring(1),H=kt[U];y=`${q}${T}{ if(_log_level <= ${H}){ sprintf(_log_string,_,${L.replace(/%%/g,"\xFF")}); _log${$}(__refid,__line); }}`}else(g=xF.exec(P))&&!C.includes(V.filePaths.studio.auto.path)?(C.includes(V.filePaths.studio.libdeps)||o.push({file:s,level:"warning",line:u,message:"Libraries are included automatically - remove this #include line"}),y="// Libraries are included automatically! - "+P):(g=AF.exec(P))&&(o.push({file:s,level:"error",line:u,message:"#endinput is not supported - use #if/#endif instead"}),y=P);c&&!i.legacyProject&&(eF.exec(P)&&(y=y.replaceAll("DDE_",`_${c}`)),tF.exec(P)&&(y=y.replace("onUplink",`_${c}`)),nF.exec(P)&&(y=y.replace("onUplink",`_${c}Uplink`))),b.push(y),_++;for(let q=0;q<w;q++)b.push(""),_++,u++}if(j!=="main.dlo"){let u=j.split(".")[0].replace(/[^a-zA-Z0-9]/g,"_"),y=`_inc_${u}`.substring(0,31),P=`_inc_${u}_inc`.substring(0,31);b.push(`#if defined ${y}`),b.push(`#undef ${y}`),b.push("#endif"),b.push(`#if defined ${P}`),b.push(`#undef ${P}`),b.push("#endif")}return{data:b.join(`
1660
- `),diagnostics:o}}};var mx=require("vscode-uri");var B0=J0(require("fs")),w0=require("vscode-uri");var qt=J0(require("iconv-lite")),aF=F0.convertBlobToStringArray,Pt=16384,Nt=511,je=Pt|Nt,oF=32768,vF=438,wt=oF|vF,EF=new EA,BA={};function Lt(){let t=[];for(let e of Object.keys(BA))t.push(...BA[e].diagnostics);return t}var lr=!!process.env.DLO_PROFILE,_x={precompileCount:0,cacheHits:0,precompileMs:0};function Gt(t){lr&&(t.log(`[DLO_PROFILE] precompile: ${_x.precompileCount} runs, ${_x.cacheHits} cache hits, ${_x.precompileMs.toFixed(1)}ms`),_x.precompileCount=0,_x.cacheHits=0,_x.precompileMs=0)}var pe=(t,e,F,i)=>{let s={getattr(o){let C=w0.Utils.joinPath(w0.URI.parse(o.mount.opts.root),t.getPath(o)),c=C.fsPath;if(!B0.existsSync(c))throw new t.ErrnoError(44);let j=$t(e,i,F,C),b=B0.statSync(c),p=j?.length||b.size;return{mode:b.isDirectory()?je:wt,size:p,atime:b.atime,mtime:b.mtime,ctime:b.ctime}},setattr(o,C){let c=w0.Utils.joinPath(w0.URI.parse(o.mount.opts.root),t.getPath(o)).fsPath;if(!B0.existsSync(c))throw new t.ErrnoError(44);if(typeof C.size=="number"&&B0.truncateSync(c,C.size),typeof C.mode=="number"&&B0.chmodSync(c,C.mode),C.atime||C.mtime){let j=B0.statSync(c);B0.utimesSync(c,C.atime??j.atime,C.mtime??j.mtime)}},lookup(o,C){let j=w0.Utils.joinPath(w0.URI.parse(o.mount.opts.root),t.getPath(o),C).fsPath;if(!B0.existsSync(j))throw new t.ErrnoError(44);let b=B0.statSync(j),p=t.createNode(o,C,b.isDirectory()?je:wt,0);return p.node_ops=o.node_ops,p.stream_ops=o.stream_ops,p},readdir(o){let C=w0.Utils.joinPath(w0.URI.parse(o.mount.opts.root),t.getPath(o)).fsPath;return[".","..",...B0.readdirSync(C)]},mknod(o,C,c,j){let b=w0.Utils.joinPath(w0.URI.parse(o.mount.opts.root),t.getPath(o),C).fsPath;B0.writeFileSync(b,"");let p=t.createNode(o,C,c,j);return p.node_ops=o.node_ops,p.stream_ops=o.stream_ops,p},unlink(o,C){let c=w0.Utils.joinPath(w0.URI.parse(o.mount.opts.root),t.getPath(o),C).fsPath;B0.unlinkSync(c)},mkdir(o,C,c){let j=w0.Utils.joinPath(w0.URI.parse(o.mount.opts.root),t.getPath(o),C).fsPath;B0.mkdirSync(j,{mode:c});let b=t.createNode(o,C,c|je,0);return b.node_ops=o.node_ops,b.stream_ops=o.stream_ops,b},rmdir(o,C){let c=w0.Utils.joinPath(w0.URI.parse(o.mount.opts.root),t.getPath(o),C).fsPath;B0.rmdirSync(c)},rename(o,C,c){let j=w0.Utils.joinPath(w0.URI.parse(o.mount.opts.root),t.getPath(o)).fsPath,b=w0.Utils.joinPath(w0.URI.parse(C.mount.opts.root),t.getPath(C),c).fsPath;B0.renameSync(j,b)}},E={open(o){let C=w0.Utils.joinPath(w0.URI.parse(o.node.mount.opts.root),t.getPath(o.node));o.modifiedContent=$t(e,i,F,C),o.modifiedContent||(o.nfd=B0.openSync(C.fsPath,_t(o.flags)))},close(o){o.nfd&&B0.closeSync(o.nfd)},read(o,C,c,j,b){if(!o.modifiedContent)return B0.readSync(o.nfd,C,c,j,b);let p=o.modifiedContent;if(b>=p.length)return 0;let k=p.length-b,_=Math.min(j,k);return BF(p,C,c,b,b+_),_},write(o,C,c,j,b){return B0.writeSync(o.nfd,C,c,j,b)},flagsToMode:_t,llseek(o,C,c){let j=C;if(c===1)j+=o.position;else if(c===2){let b=B0.fstatSync(o.nfd);j+=b.size}if(j<0)throw new t.ErrnoError(28);return o.position=j,j}};return{mount(){let o=$x(e),C=t.createNode(null,o,Pt|Nt,0);return C.node_ops=s,C.stream_ops=E,C},node_ops:s,stream_ops:E}};function _t(t){let e=t&2097155;if(e===0)return"r";if(e===1)return"r+";if(e===65)return"w";if(e===577)return"w+";if(e===1089)return"a";if(e===1217)return"a+";throw new Error(`Unknown file open flags: ${t}`)}function BF(t,e,F,i,s){if(Buffer.isBuffer(t)&&Buffer.isBuffer(e))t.copy(e,F,i,s);else{let E=t.subarray(i,s);Buffer.isBuffer(e)?Uint8Array.prototype.set.call(e,E,F):e.set(E,F)}}function $t(t,e,F,i){let s=i.fsPath;if(!s.endsWith(".dlo")&&!s.endsWith(".inc"))return;let E=CF(s);if(!E){delete BA[s];return}let o=BA[s];if(o&&o.mtimeMs===E.mtimeMs&&o.size===E.size)return lr&&_x.cacheHits++,o.buffer;let C=lr?performance.now():0,c=fF(t,e,F,i);return lr&&(_x.precompileCount++,_x.precompileMs+=performance.now()-C),BA[s]={buffer:c.buffer,mtimeMs:E.mtimeMs,size:E.size,diagnostics:c.diagnostics},BA[s].buffer}function CF(t){try{return B0.statSync(t)}catch{return null}}function fF(t,e,F,i){let s=B0.readFileSync(i.fsPath),E=aF(s),o=EF.preCompileDloFile(t,e,F,i,E);return{buffer:qt.encode(o.data,"cp1252"),diagnostics:o.diagnostics}}function $x(t){return t.fsPath.replace(/\\/g,"/")}function OA(t,e){let F=$x(t);return $x(e).replace(F,"")}var Ht=Ut(),HA=Ht.createPawnCC,zt=Ht.createPawnDbg;var CA=class{constructor(e,F,i){this.cwd=e;this.fs=F;this.logger=i;this.dloCC=null}cwd;fs;logger;dloCC;stdout=[];stderr=[];async initDloCC(e=!1){this.stdout.length=0,this.stderr.length=0,this.dloCC=await HA({noExitRuntime:e,print:o=>{let C=be(this.cwd,o);this.logger.log(C?C.message:o),this.stdout.push(o)},printErr:o=>{let C=be(this.cwd,o);o.includes(": warning")?this.logger.warn(C?C.message:o):this.logger.error(C?C.message:o),this.stderr.push(o),this.stdout.push(o)}});let F=$x(this.cwd),[i]=F.split("/"),s=this.dloCC.FS,E=await O.read(this.cwd,this.fs);s.filesystems.NODEFS_TS=pe(s,this.cwd,E,this.logger),s.mkdir(i),s.mount(s.filesystems.NODEFS_TS,{root:"/"},i),s.chdir($x(this.cwd))}async compile(e,F){let i=await O.read(e,F);if(!await O.isApmPartEnabled(e,F,t0.Part.dlo,i))return this.logger.log("DLO not enabled. Skipped."),{code:0,stdout:[],stderr:[],diagnostics:[]};await this.initDloCC(),await F.mkdir(mx.Utils.joinPath(e,"dist/dlo"));let s=mx.Utils.joinPath(e,i.dlo?.mainFile||V.filePaths.dlo.mainDLO),E=[],o=mx.Utils.joinPath(e,V.filePaths.studio.auto.dlo.cfg),C=OA(e,o);E.push(`-T.${C}`);let c=0;try{let j=`.${OA(e,s)}`;c=await this.dloCC.callMain([j,...E])}catch(j){this.logger.error(j)}return{code:c,stdout:this.stdout,stderr:this.stderr,diagnostics:[...Lt(),...ue(e,this.stderr,s)]}}async getDloSymbols(e,F){let i=F.map(b=>{let p=b.substring(0,2);return["-D","-e","-i","-o","-p","-r","-T"].includes(p)?`${p}.${b.substring(2)}`:b}),s=!!process.env.DLO_PROFILE,E=s?performance.now():0,{compiler:o,print:C}=await this.getSymbolCompiler(),c=s?performance.now()-E:0,j=s?performance.now():0;try{if(await o.callMain(["."+e,...i,"-R"]))return null}catch(b){if(b.stack?.startsWith("RuntimeError"))return null;throw b}finally{if(s){let b=performance.now()-j;this.logger.log(`[DLO_PROFILE] instantiate: ${c.toFixed(1)}ms, callMain: ${b.toFixed(1)}ms`),Gt(this.logger)}}return[...C.stdout,...C.stderr]}async getSymbolCompiler(){let e={stdout:[],stderr:[]},F=await HA({noExitRuntime:!1,print:C=>{e.stdout.push(C)},printErr:C=>{e.stderr.push(C)}}),i=$x(this.cwd),[s]=i.split("/"),E=F.FS,o=await O.read(this.cwd,this.fs);return E.filesystems.NODEFS_TS=pe(E,this.cwd,o,this.logger),E.mkdir(s),E.mount(E.filesystems.NODEFS_TS,{root:"/"},s),{compiler:F,print:e}}};function ue(t,e,F){let i=[],s=e.filter(E=>!!E.trim());for(let E of s){if((E.includes("Assertion failed:")||E.includes("Compilation aborted."))&&F){i.push({file:F,level:"error",line:0,message:E});continue}let o=be(t,E);o&&i.push({file:mx.URI.parse(`file:///${o?.posixPath}`),level:o.level,line:Number(o.lineNumber)-1,message:o.msg})}return i}function be(t,e){let F=e.indexOf(" : "),i=e.indexOf(": ",F+3),s=e.substring(0,F).trim(),E=e.substring(F+3,i).trim(),o=e.substring(i+2).trim();if(!s||!E||!o)return null;let[C,c]=s.split(/[()(-)]/),j=E.split(" "),b=j[j.length-2],k=mx.Utils.joinPath(t,C).fsPath.replace(/\\/g,"/");k.startsWith("/")&&(k=k.substring(1));let _=e.replace(C,k);return{level:b,msg:o,posixPath:k,lineNumber:c,message:_}}async function Jt(t,e,F){let i=["-M","-v2"],s=mx.Utils.joinPath(t,V.filePaths.studio.auto.dlo.defaultInc);i.push(`-p.${OA(t,s)}`);let E=await _0.getApmPartDependencies(t,e,t0.Part.dlo);for(let C of E){let c=mx.Utils.dirname(C.path);i.push(`-i.${OA(t,c)}`)}let o=F.dlo;return o&&i.push(...o.compileOptions),i.push("-o./dist/dlo/main.amx"),{path:mx.Utils.joinPath(t,V.filePaths.studio.auto.dlo.cfg),data:i.join(`
1661
- `)}}var zA;(c=>{c.createPawnCC=HA,c.createPawnDbg=zt,c.FileSequencer=vA,c.PreCompiler=EA,c.Compiler=CA,c.uriToMemFs=$x,c.parseCompilerWarningsAndErrors=ue;async function C(j,b,p){let k=await O.read(j,b),_=await Jt(j,b,k);await b.writeFile(_.path,_.data),p.log("Generated",V.filePaths.studio.auto.dlo.cfg)}c.exportDloConfig=C})(zA||={});var me=require("vscode-uri");var Vt=J0(require("node:child_process"));var cr;(F=>{async function t(i,s,E){let o=await O.read(i,s);if(await O.isApmPartEnabled(i,s,t0.Part.pov)){E.info("Executing POV build script",o.pov?.details.buildCommand);let{buildCommand:C,workingPath:c}=o.pov.details,j=me.Utils.joinPath(i,c);try{await Kt(j,C,E)}catch(b){throw b.code?new Error(`APM part '${t0.Part.pov}' has errors. Aborted.`):b}}}F.tryBuildPov=t;async function e(i,s,E){let o=await O.read(i,s);if(await O.isApmPartEnabled(i,s,t0.Part.blo,o)){E.info("Executing BLO build script",o.blo?.buildCommand);let{buildCommand:C,workingPath:c}=o.blo,j=me.Utils.joinPath(i,c);try{await Kt(j,C,E)}catch(b){throw b.code?new Error(`APM part '${t0.Part.blo}' has errors. Aborted.`):b}}}F.tryBuildBlo=e})(cr||={});async function Kt(t,e,F){return new Promise((i,s)=>{Vt.exec(e,{cwd:t.fsPath,env:process.env},(E,o,C)=>{F.log(o),C&&F.error(C),E&&s(E),i(null)})})}var Xt=require("vscode-uri");var ge=require("minimatch");var Yt=require("@gera2ld/tarjs"),_F=F0.convertBlobToString,$F=require("pako"),Zt=".studioignore",Qt=[".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/**"];Qt.push("**/.studio/**","**/node_modules/**",Zt,"dist/defines.app.ts");var Wt={dot:!0},Zx;(i=>{async function t(s,E){let o=new Yt.TarWriter;(await e(s,E)).forEach(j=>{o.addFile(j.name,j.data)});let c=await o.write();return $F.gzip(await c.arrayBuffer())}i.createArchive=t;async function e(s,E){let o=[],{ignore:C,negate:c}=await qF(s,E),b=(await E.findFiles(s,"**/*")).filter(({path:p})=>{let k=p.slice(s.path.length+1);return!C.some(_=>(0,ge.minimatch)(k,_,Wt))||c.some(_=>(0,ge.minimatch)(k,_.slice(1),Wt))});for(let p of b){let k=p.path.slice(s.path.length+1),[_,u]=await Promise.all([E.stat(p),E.readFile(p)]);_&&o.push({name:k,data:u,modifyTime:new Date(_.mtime)})}return o}i.getFilesForArchive=e;async function F(s,E,o,C=I0.ENV.production){let{publisher:c,name:j,version:b}=E,p=await V0.readFilesFromTarGz(o,["CHANGELOG.md","README.md","studio.json"]),k={"CHANGELOG.md":await he(p["CHANGELOG.md"]),"README.md":await he(p["README.md"]),"studio.json":await he(p["studio.json"]),"library.tar.gz":o};return await y0.publishLibraryVersion(s,c,j,b,k,C)}i.publishPackage=F})(Zx||={});async function qF(t,e){let F=["!studio.json","!README.md"],s=(await PF(t,e)).split(/[\n\r]/).map(j=>j.trim()).filter(j=>!!j).filter(j=>!/^\s*#/.test(j)),E=[...s,...s.filter(j=>!/(^|\/)[^/]*\*[^/]*$/.test(j)).map(j=>/\/$/.test(j)?`${j}**`:`${j}/**`)],o=[...Qt,...E,...F],[C,c]=o.reduce((j,b)=>/^\s*!/.test(b)?[j[0],[...j[1],b]]:[[...j[0],b],j[1]],[[],[]]);return{ignore:C,negate:c}}async function PF(t,e){let F=Xt.Utils.joinPath(t,Zt);if(await e.stat(F)){let s=await e.readFile(F);return _F(s)}else return""}async function he(t){return new Uint8Array(await t.arrayBuffer())}var hx=require("vscode-uri");var Rx=require("yaml");var NF=F0.convertBlobToString,dr=F0.yamlRangeToLineInformation,JA;(o=>{let t;(b=>(b.static="static",b.dynamic="dynamic",b.appDynamic="app-dynamic"))(t=o.Type||={});let e;(p=>(p.crcStamp="crc_stamp",p.stampOnly="stamp_only",p.onlyDown="only_down",p.onlyUp="only_up"))(e=o.SyncLogic||={});let F;(b=>(b.down="down",b.up="up",b.off="off"))(F=o.Force||={});async function i(C,c,j){let{properties:b,diagnostics:p,libraryFiles:k}=await s(C,c),_=hx.Utils.joinPath(C,V.filePaths.dist.dfilesPath);await c.stat(_)&&await c.rm(_);for(let[u,y]of Object.entries(b))await GF(C,c,u,y,k);return Object.keys(b).length&&(j.done(`${Object.keys(b).length} dfiles processed.`),await c.writeFile(hx.Utils.joinPath(C,V.filePaths.dist.dfilesProperties),JSON.stringify(b,null," "))),p}o.process=i;async function s(C,c){let j=[],b={},p=await _0.getApmPartDependencies(C,c,t0.Part.dfiles);for(let u of p){let{properties:y,diagnostics:P}=await E(c,u.path,u.name);Object.assign(b,y),j.push(...P)}let{properties:k,diagnostics:_}=await E(c,hx.Utils.joinPath(C,V.filePaths.dfiles.mainDFILES),null);return Object.assign(b,k),j.push(..._),{properties:b,diagnostics:j,libraryFiles:p}}o.parseDfile=s;async function E(C,c,j){let b=[],p={};if(!await C.stat(c))return{properties:p,diagnostics:b};let k=await C.readFile(c),_=NF(k),u=new Rx.LineCounter,P=(0,Rx.parseDocument)(_,{lineCounter:u}).contents||new Rx.YAMLMap;for(let g of P.items){let w=g.key.value,q=(0,Rx.isMap)(g.value)?g.value:null,T=dr(u,g.key.range),$=q?q.has("syncMode"):!1,L=$?q.get("syncMode"):"crc_stamp";if($){let z=Object.values(o.SyncLogic);if(!z.includes(L)){let Y=q.items.find(M=>M.key.value==="syncMode"),Z=dr(u,Y.key.range);b.push({file:c,code:"",message:`Property syncMode does not match any of "${z.join(", ")}"`,line:Z.line,startCharacter:Z.startCharacter,endCharacter:Z.endCharacter,level:"error"})}}else b.push({file:c,code:"",message:'Property "syncMode" missing',line:T.line,startCharacter:T.startCharacter,endCharacter:T.endCharacter,level:"error"});let U=q?q.has("type"):!1,H=U?q.get("type"):"static";if(U){let z=Object.values(o.Type);if(!z.includes(H)){let Y=q.items.find(M=>M.key.value==="type"),Z=dr(u,Y.key.range);b.push({file:c,code:"",message:`Property type does not match any of "${z.join(", ")}"`,line:Z.line,startCharacter:Z.startCharacter,endCharacter:Z.endCharacter,level:"error"})}}w.match(/^[a-z0-9._-]*$/)||b.push({file:c,code:"",message:'Filename does not match pattern "a-z0-9._-"',line:T.line,startCharacter:T.startCharacter,endCharacter:T.endCharacter,level:"error"});let K=hx.Utils.joinPath(hx.Utils.dirname(c),w),S=await LF(C,K);if(S)p[w]={crc:S.crc,force:"off",readable:!1,size:S.size,stamp:S.stamp,sync_logic:L,type:H,library:j};else{let z=dr(u,g.key.range);b.push({file:c,code:"",message:`Could not find file "${w}"`,line:z.line,startCharacter:z.startCharacter,endCharacter:z.endCharacter,level:"error"})}}return{properties:p,diagnostics:b}}o.parseYamlFile=E})(JA||={});async function LF(t,e){let F=await t.stat(e);if(!F)return null;let i=await t.readFile(e);return{size:F.size,stamp:Math.trunc(F.ctime),crc:F0.generateCRC32ForFileContent(i)}}async function GF(t,e,F,i,s){let o=i.library!==null?hx.Utils.dirname(s.find(j=>j.name===i.library).path):hx.Utils.joinPath(t,V.filePaths.dfiles.path),C=hx.Utils.joinPath(t,V.filePaths.dist.dfilesPath,F),c=hx.Utils.joinPath(o,F);await e.copy(c,C)}var KA=require("@gera2ld/tarjs"),xn=F0.convertBlobToString,ke=require("pako"),V0;(p=>{class t extends Error{_mergedDiagnostics;constructor(_,u){super(_),this.name="BuildError",this._mergedDiagnostics=u}get mergedDiagnostics(){return this._mergedDiagnostics}}p.BuildError=t;async function e(k,_,u,y,P,g=!0,w){g=TF(u,g),await MF(k,_,u,y,P,g);try{let $=await I0.read(k,_,u);await IF(k,_,u,$)}catch($){u.warn("Could not generate defines.ts:",$)}let q={[t0.Part.dde]:[],[t0.Part.dlo]:[],[t0.Part.dfiles]:[]},T={[t0.Part.dde]:SF,[t0.Part.dlo]:RF,[t0.Part.dfiles]:OF};try{for(let $ of[t0.Part.dde,t0.Part.dlo,t0.Part.dfiles])if(g.includes($)&&(u.info(`Building ${$.toUpperCase()}...`),await zF(u,$,T[$],q[$],k,_)))return q}catch($){throw w?new t($?.message,q):$}return g.includes(t0.Part.pov)?await cr.tryBuildPov(k,_,u):u.info("Skipping pov build"),g.includes(t0.Part.blo)?await cr.tryBuildBlo(k,_,u):u.info("Skipping blo build"),await UF(k,_,u),u.done("Project build completed."),q}p.buildAll=e;async function F(k,_,u,y,P,g,w){let q=await O.read(k,_);return O.isLibrary(q)?(u.info("Library project detected. Publishing library..."),E(k,_,u,P,y)):(u.info("App project detected. Publishing app..."),s(k,_,u,P,g,w,y))}p.release=F;async function i(k,_,u,y,P,g){let w=await O.read(k,_),q=`${w.name}-${w.version}.tar.gz`,T=null;if(O.isLibrary(w))u.info("Library project detected. Packing library..."),T=await An(k,_,u,P,y);else{u.info("App project detected. Packing app...");let L=await rn(k,_,u,P,g,y);T=await KF(L)}let $=Qx.Utils.joinPath(k,q);T!==null?(await _.writeFile($,T),u.done(`Packaged: ${$.fsPath}`)):u.error(`Could not create archive: ${$.fsPath}`)}p.pack=i;async function s(k,_,u,y,P,g=null,w){if(!await t0.validateAccess(k,_,y,!1,w))throw new Error("Could not validate access to application");let T=await rn(k,_,u,y,P,w);await t0.updateProfile(k,_,y,w);let $=await t0.publishTag(k,_,y,T,w);if(g!==null){let L=await O.read(k,_);await y0.updateExistingApplicationVersion(y,L.publisher,L.registry?.id,L.version,{allowedBackends:g},w),u.info(`Tag "${$.version}" with phase "${$.phase}" shared with ${[...g].join(";")}!`)}u.done(`Tag "${$.version}" with phase "${$.phase}" published!`)}p.releaseAPM=s;async function E(k,_,u,y,P){let g=await O.read(k,_),w=await An(k,_,u,y,P);await Zx.publishPackage(y,g,w,P),u.done(`Library "${g.publisher}/${g.name}" with version "${g.version}" published!`)}p.releaseLibrary=E;async function o(k,_,u,y,P,g,w,q=null){if(g==="*"){let S=await O.read(k,_);g=`${S.name}-${S.version}.tar.gz`,u.info(`Publishing detected archive package "${g}"...`)}let T=Qx.Utils.joinPath(k,g);if(!await _.stat(T))throw new Error(`Archive package not found: ${T.fsPath}`);let $=await _.readFile(T),L=await VF($),{publisher:U,registry:H,version:K}=L;O.isLibrary(L)?(await Zx.publishPackage(y,L,$,P),u.done(`Library "${U}/${L.name}" with version "${L.version}" published!`)):(await y0.updateApplicationFile(y,U,H.id,K,"app.tar.gz",$,P),await y0.updateExistingApplicationVersion(y,U,H?.id,K,{allowedBackends:q||void 0,phase:w||void 0},P),u.info(`Tag "${K}" with phase "${w}" shared with ${[...q||""].join(";")}!`),u.done(`Tag "${K}" with phase "${w}" published!`))}p.publishArchive=o;async function C(k,_,u){let y;try{y=await _.readFile(Qx.Utils.joinPath(k,"README.md"))}catch{throw new Error('Could not find "README.md". "README.md" is required for publishing.')}if(xn(y)===V.readme(u))throw new Error('"README.md" matches the default template. Please write a brief project description.');return y}p.getReadmeFile=C;async function c(k,_){let u;try{u=await _.readFile(Qx.Utils.joinPath(k,"CHANGELOG.md"))}catch{throw new Error('Could not find "CHANGELOG.md". "CHANGELOG.md" is required for publishing.')}if(xn(u)===V.changelog)throw new Error('"CHANGELOG.md" matches the default template.');return u}p.getChangelogFile=c;async function j(k,_,u,y){let P=await O.read(k,_),{name:g,publisher:w,description:q}=P,T=O.validateProjectName(g,O.isLibrary(P));if(T)throw new Error(`name: ${T}`);let $=O.validateDescription(q);if($)throw new Error(`description: ${$}`);let L=O.validatePublisherId(w)||await O.validatePublisherOnline(u,w,y);if(L)throw new Error(`publisher: ${L}`);if(!O.isLibrary(P)&&(await O.validateApplicationIcon(k,_,P),O.validateEngineSettings(P),O.isApp(P)&&await O.isApmPartEnabled(k,_,t0.Part.dlo,P)&&(!P.dpid||!Object.values(O.DeviceProfiles).includes(P.dpid))))throw new Error("dpid: The device profile is needed to compile a dlo")}p.validatePublishSettings=j;async function b(k,_){let u=ke.ungzip(k),y=await KA.TarReader.load(u),P={};for(let g of y.fileInfos)_.includes(g.name)&&(P[g.name]=y.getFileBlob(g.name));return P}p.readFilesFromTarGz=b})(V0||={});function TF(t,e){let F=Object.values(t0.Part);return e===!0?(t.info("Building project..."),F):e===!1?[]:e}async function MF(t,e,F,i,s,E){E.includes(t0.Part.dde)&&await vx.fetchPreviousHistoryJson(t,e,F,i,s)}async function IF(t,e,F,i){i.defaultsOnly?(await I0.exportDefinesTs(t,e,i.defaultsOnly),F.log("Generated",V.filePaths.dist.definesTs,"(defaults only)"),await I0.exportDefinesTs(t,e,i,V.filePaths.dist.definesAppTs),F.log("Generated",V.filePaths.dist.definesAppTs,"(with app.ini overrides)")):(await I0.exportDefinesTs(t,e,i),F.log("Generated",V.filePaths.dist.definesTs))}async function SF(t,e,F){let i=await vx.compileDDE(t,e,F);if(i.ddeJSON){await vx.exportMyDatanetXML(t,e,F,i.ddeJSON);let s=await O.read(t,e);O.isLibrary(s)||await vx.exportHistoryJson(t,e,F,i.ddeJSON),await vx.exportOpenApi(t,e,F,i.ddeJSON),await O.isApmPartEnabled(t,e,t0.Part.dlo,s)&&(await vx.exportAutoDloFiles(t,e,F,i.ddeJSON),await zA.exportDloConfig(t,e,F))}return i.diagnostics}async function RF(t,e,F){let i=new CA(t,e,F),{diagnostics:s}=await i.compile(t,e);return s}async function OF(t,e,F){return await JA.process(t,e,F)}async function UF(t,e,F){let i=Qx.Utils.joinPath(t,V.fileNames.reportTemplate);if(await e.stat(i)){let s=Qx.Utils.joinPath(t,V.filePaths.dist.reportTemplate);await e.copy(i,s),F.log(`Copied "${V.fileNames.reportTemplate}" to dist folder.`)}}function HF(t,e,F){e!==t0.Part.dlo&&JF(t,F);let i=F.some(s=>s.level==="error");if(i){let s=`APM part "${e}" has errors. Aborted.`;throw new Error(s)}return i}async function zF(t,e,F,i,s,E){let o=await F(s,E,t);return i.push(...o),HF(t,e,o)}function JF(t,e){e.forEach(F=>{let i=F.startCharacter?`:${F.startCharacter+1}`:"",s=`${F.file.path}:${F.line+1}${i} - ${F.message}`;F.level==="error"?t.error(s):F.level==="warning"?t.warn(s):t.log(s)})}async function An(t,e,F,i,s){let E=await O.read(t,e);return await O.validateBasicManifest(t,e,E),await V0.buildAll(t,e,F,s,i),await Zx.createArchive(t,e)}async function rn(t,e,F,i,s,E){if(!Object.values(t0.TagPhase).includes(s))throw new Error(`ReleasePhase: ${s} is not a valid release phase`);return await O.validateBasicManifest(t,e,null),await V0.buildAll(t,e,F,E,i),await t0.createTag(t,e,s)}async function KF(t){let e=new KA.TarWriter;for(let[i,s]of t.entries())if(i==="tag"){let E=s;e.addFile(i,E)}else{let E=s;e.addFile(i,await E.arrayBuffer())}let F=await e.write();return ke.gzip(await F.arrayBuffer())}async function VF(t){let e=await WF(t,["studio.json","src/studio.json"]);if(!e)throw new Error('Could not find "studio.json" in archive');return JSON.parse(await e.text())}async function WF(t,e){let F=ke.ungzip(t),i=await KA.TarReader.load(F);for(let s of i.fileInfos)if(e.includes(s.name))return i.getFileBlob(s.name);return null}var XF=F0.bufferToBase64;var t0;(b=>{let t;(w=>(w.alpha="alpha",w.beta="beta",w.rc="rc",w.release="release",w.stage="stage",w.passive="passive",w.withdrawn="withdrawn"))(t=b.TagPhase||={});let e;(P=>(P.dde="dde",P.dlo="dlo",P.pov="pov",P.blo="blo",P.dfiles="dfiles"))(e=b.Part||={});function F(p){let{description:k,name:_,pov:u,engines:y,blo:P,publisher:g,type:w}=p,q=w||O.ProjectTypes.app,T={name:_,abstract:k,author:g||"",pov_location:O.PovLocation.embedded,pov_details_lowlevel:!1,required_be:y?.backend,required_hwfw:y?.hwfw?.join(";"),required_productcode:y?.productId?.join(";"),blo_level:P?.accessLevel||O.BloAccessLevel.restricted,pip_id:""};return u&&u.details&&(T.pov_location=O.PovLocation.pure,T.pov_details_lowlevel=!!u.details.lowLevel),q==="addon"&&(T.required_hwfw=void 0,T.required_productcode=void 0,T.addon_max_sources=1,T.addon_max_per_site=p.maxInstancesPerSite),T}b.createBaseTagHeader=F;async function i(p,k,_){let u=await O.read(p,k),y=F(u),P={version:u.version,...y,phase:_};return await E(p,k,u,P)}b.createTag=i;async function s(p,k){let _=await O.read(p,k),y={...F(_),blo_autostart:!1};return E(p,k,_,y)}b.createDevTag=s;async function E(p,k,_,u){let y=new FormData;y.append("tag",JSON.stringify(u)),y.append(`src/${O.fileName}`,new Blob([await O.readAsBlob(p,k)]));let P=new Blob([await k.readFile(qx.Utils.joinPath(p,V.filePaths.dist.ddeXmlPath))]);if(y.append("bin/dde/xml",P),_.icon){let w=await k.readFile(qx.Utils.joinPath(p,_.icon)),q=XF(w);y.append("previews/00.png",new Blob([`data:image/png;base64,${q}`]))}if(Object.hasOwn(u,"phase")){let w=await V0.getReadmeFile(p,k,u.name),q=await V0.getChangelogFile(p,k);y.append("previews/README.md",new Blob([w])),y.append("previews/CHANGELOG.md",new Blob([q]))}if(await O.isApmPartEnabled(p,k,"dlo")){let w=new Blob([await k.readFile(qx.Utils.joinPath(p,V.filePaths.dist.mainAmxPath))]);y.append("bin/dlo/amx",w)}if(await O.isApmPartEnabled(p,k,"pov",_)){await en(p,k,y,V.filePaths.dist.povDetailsPath,"bin/pov/details");let w=new TextEncoder().encode('<!DOCTYPE html><html lang="en">');y.append("bin/pov/list/index.html",new Blob([w]))}let g=await k.findFiles(p,`${V.filePaths.dist.dfilesPath}/*`);for(let w of g){let q=new Blob([await k.readFile(w)]);y.append(`bin/dfiles/${qx.Utils.basename(w)}`,q)}return await O.isApmPartEnabled(p,k,"blo",_)&&await en(p,k,y,V.filePaths.dist.bloPath,"bin/blo"),await YF(p,k,y),y}b.createBuffer=E;async function o(p,k,_,u,y){let P=await O.read(p,k);u||await V0.validatePublishSettings(p,k,_,y);let{registry:g}=P,w=g?.id;if(!w&&!u&&(w=await C(p,k,_,P,y)),w){let{publisher:q}=P;if(!q)return null;try{return{id:w,...await y0.getExistingApplication(_,q,w,y)}}catch(T){if(T?.message==="Could not find given application")return w=await C(p,k,_,P,y),{id:w,...await y0.getExistingApplication(_,q,w,y)}}}return null}b.validateAccess=o;async function C(p,k,_,u,y){let P="myDatanet",{publisher:g,name:w,description:q,registry:T}=u,$={id:T?.id,type:u.type||O.ProjectTypes.app,name:w,targetSystem:P,description:q||"",allowedBackends:null};O.isAddon(u)&&($.allowedApplications=null);let L=await y0.createNewApplication(_,g,$,y);if(!L)throw new Error("Failed to initialize application");return u.registry={id:L},await O.write(p,k,u),L}b.registerNew=C;async function c(p,k,_,u){let{name:y,publisher:P,description:g,registry:w}=await O.read(p,k),q=w?.id;await y0.updateExistingApplication(_,P,q,{description:g,name:y,targetSystem:"myDatanet"},u)}b.updateProfile=c;async function j(p,k,_,u,y){let{publisher:P,registry:g,version:w}=await O.read(p,k);return await y0.publishApplicationVersion(_,P,g?.id,w,u,y)}b.publishTag=j})(t0||={});async function en(t,e,F,i,s){let E=await e.findFiles(t,`${i}/**`);for(let o of E){let C=qx.Utils.joinPath(t,i),c=o.path.substring(C.path.length+1),j=new Blob([await e.readFile(qx.Utils.joinPath(t,`${i}/${c}`))]);F.append(`${s}/${c}`,j)}}async function YF(t,e,F){let i=qx.Utils.joinPath(t,V.filePaths.dist.reportTemplate);if(await e.stat(i)){let E=new Blob([await e.readFile(i)]);F.append("bin/pov/mdn_report_template.json",E)}let s=qx.Utils.joinPath(t,V.filePaths.dist.historyJson);await e.stat(s)&&F.append("src/dde/history.json",new Blob([await e.readFile(s)]))}var on=require("deepmerge-ts"),ZF=F0.isNumeric,tn="52v007",nn="53v001",QF="54v001",xs="56v001",Ex={_manifest:null,_stat:null,_overwrites:null,get manifest(){return(0,on.deepmerge)(structuredClone(this._manifest),Ex._overwrites||{})},set manifest(t){this._manifest=t},set overwrites(t){this._overwrites=t},get stat(){return this._stat},set stat(t){this._stat=t},clear(){this._stat=null,this._manifest=null}},O;(Z=>{let t=F0.convertBlobToString;Z.fileName="studio.json";let F;(o0=>(o0.m22x="m22x",o0.m23x="m23x",o0.nrf91="nrf91",o0.m2blegw="m2blegw",o0.m2easyv3="m2easyv3",o0.m2easyiot="m2easyiot"))(F=Z.DeviceProfiles||={});let i;(d0=>(d0.app="app",d0.library="library",d0.addon="addon",d0.analytics="analytics"))(i=Z.ProjectTypes||={});let s;(x0=>(x0.restricted="restricted",x0.global="global"))(s=Z.BloAccessLevel||={});let E;(x0=>(x0.embedded="$embedded",x0.pure="$pure"))(E=Z.PovLocation||={});function o(M){Ex.overwrites=M}Z.setOverwrites=o;function C(){Ex.overwrites=null}Z.clearOverwrites=C;async function c(M,r0){let x0=VA.Utils.joinPath(M,Z.fileName),e0=await r0.stat(x0);if(Ex.manifest===null||x0?.fsPath!==Ex.stat?.path.fsPath||e0?.ctime!==Ex.stat?.ctime||e0?.mtime!==Ex.stat?.mtime||e0?.size!==Ex.stat?.size){let d0=await r0.readFile(x0),f0=t(d0);Ex.manifest=JSON.parse(f0),Ex.stat={...e0,path:x0}}return Ex.manifest}Z.read=c;async function j(M,r0){return await r0.readFile(VA.Utils.joinPath(M,Z.fileName))}Z.readAsBlob=j;async function b(M,r0,x0){return Ex.clear(),Fs(x0),r0.writeFile(VA.Utils.joinPath(M,Z.fileName),JSON.stringify(x0,null," "))}Z.write=b;function p(M){return M.library!==void 0?M.library:M.type==="library"}Z.isLibrary=p;function k(M){return M.type==="addon"}Z.isAddon=k;function _(M){return M.type===void 0&&!p(M)?!0:M.type==="app"}Z.isApp=_;function u(M){return M.type===void 0?!0:M.type==="app"}Z.isIotApp=u;function y(M){return M.type==="analytics"}Z.isAnalytics=y;async function P(M,r0,x0){x0||(x0=await c(M,r0)),is(x0),As(x0),rs(x0),ns(x0)}Z.validateBasicManifest=P;function g(M){let r0="Library name can only contain 'a' through 'z', '0' through '9', '_' and '-'. The Library name must start with an alphabetic or numeric character.";if(M.match(/^[a-z0-9-_]+$/)){let e0=["-","_"];if(e0.includes(M[0])||e0.includes(M[M.length-1]))return r0}else return r0;return M.length<3||M.length>20?"The library name is beyond permissible length of 20 characters.":null}Z.validateLibraryName=g;function w(M,r0){if(r0)return g(M);{let x0="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(!M.match(/^([a-zA-Z0-9 _-]+)$/))return x0;if(M.length<3||M.length>40)return"The project name is beyond permissible length of 40 characters.";let d0=["-","_"," "];return d0.includes(M[0])||d0.includes(M[M.length-1])?x0:null}}Z.validateProjectName=w;function q(M){return M.length<5?"The description must have at least 5 characters.":null}Z.validateDescription=q;function T(M){if(!M)return"No publisher set yet";let r0="Publisher can only contain 'A' through 'Z', 'a' through 'z', '0' through '9' and '-'. The Publisher start with an alphabetic or numeric character.";if(M.match(/^[a-zA-Z0-9-]+$/)){let e0=["_"];if(e0.includes(M[0])||e0.includes(M[M.length-1]))return r0}else return r0;return null}Z.validatePublisherId=T;async function $(M,r0,x0){return await y0.getPublisher(M,r0,x0)?null:`Publisher '${r0}' does not exist.`}Z.validatePublisherOnline=$;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 U(M){if(M===void 0)return"Allowed backends not specified yet";if(M===null)return null;if(Array.isArray(M)||M?.includes(";")){let r0=M?.includes(";")?M.split(";"):M;for(let x0 of r0)if(!x0.match(L))return`Domain "${x0}" is invalid`}else if(!M?.match(L)&&M!=="*")return'Invalid value for "allowedBackends"';return null}Z.validateRegistryAllowedBackends=U;let H=/^[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 K(M){if(M===void 0)return"Allowed applications not specified yet";if(M===null)return null;if(Array.isArray(M)||M?.includes(";")){let r0=M?.includes(";")?M.split(";"):M;for(let x0 of r0)if(!x0.match(H))return`Application id "${x0}" is invalid`}else if(!M?.match(H)&&M!=="*")return'Invalid value for "allowedApplications"';return null}Z.validateRegistryAllowedApplications=K;async function S(M,r0,x0){let e0=x0.icon;if(!e0)throw new Error("App icon is required for publishing an application!");let d0=VA.Utils.joinPath(M,e0);if(!await r0.stat(d0))throw new Error(`Could not load icon "${e0}"`);let o0=await r0.readFile(d0),b0=(0,Fn.imageDimensionsFromData)(o0);if(!b0)throw new Error("App icon could not be validated!");if(b0?.width!==b0?.height)throw new Error("App icon has to be a square!");if(b0.width>512||b0.width<75)throw new Error("App icon size should be between 75px and 512px!");if(!(0,sn.isPNG)(o0))throw new Error("App icon has to be of type PNG!")}Z.validateApplicationIcon=S;function z(M){let{engines:r0}=M;if(r0?.backend&&!r0.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');es(M),ts(M)}Z.validateEngineSettings=z;async function Y(M,r0,x0,e0){e0||(e0=await Z.read(M,r0));let d0=Z.isAddon(e0),f0=Z.isAnalytics(e0);switch(x0){case t0.Part.dlo:return!!e0?.dlo?.mainFile&&!d0&&!f0;case t0.Part.blo:return!!(e0.blo?.buildCommand&&e0.blo?.workingPath);case t0.Part.pov:return!!(e0.pov?.details?.buildCommand&&e0.pov.details.workingPath);case t0.Part.dde:case t0.Part.dfiles:return!0;default:return!1}}Z.isApmPartEnabled=Y})(O||={});function As(t){let{pov:e}=t;if(e&&e.details){if(!Object.hasOwn(e.details,"buildCommand"))throw new Error('Setting "pov.details.buildCommand" missing!');if(!Object.hasOwn(e.details,"workingPath"))throw new Error('Setting "pov.details.workingPath" missing!')}}function rs(t){let{blo:e}=t;if(e){if(!Object.hasOwn(e,"buildCommand"))throw new Error('Setting "blo.buildCommand" missing!');if(!Object.hasOwn(e,"workingPath"))throw new Error('Setting "blo.workingPath" missing!');if(e.accessLevel&&!["restricted","global"].includes(e.accessLevel))throw new Error('Only "restricted" or "global" are allowed as value for "blo.accessLevel"!')}}function es(t){let{backend:e,productId:F,hwfw:i}=t.engines;if(O.isAddon(t)&&(F||i))throw new Error('For project type "addon", "engines.hwfw" or "engines.productId" is not allowed!"');if(e&&e>=tn){if(i&&F)throw new Error('Only "engines.hwfw" or "engines.productId" is allowed!"')}else if(F)throw new Error(`"engines.productId" requires "engines.backend" to be "${tn}"`)}function ts(t){if(!O.isAddon(t)&&!O.isAnalytics(t))return;let{backend:e}=t.engines,F=O.isAddon(t)?QF:xs;if(!e||e<F)throw new Error(`Project type "${t.type}" requires "engines.backend" to be ">=${F}"`);if(t.dlo)throw new Error(`For project type "${t.type}", "dlo" is not supported!"`);if(t.dpid)throw new Error(`For project type "${t.type}", "dpid" is not supported!"`)}function ns(t){let{maxInstancesPerSite:e}=t;if(e===void 0){if(O.isAddon(t))throw new Error('Property "maxInstancesPerSite" is required for addon projects!');return}if(!O.isAddon(t))throw new Error('Property "maxInstancesPerSite" is only allowed for addon projects!');if(!Number.isInteger(e))throw new Error('Property "maxInstancesPerSite" must be an integer!');if(e<1||e>100)throw new Error('Property "maxInstancesPerSite" must be between 1 and 100!')}function is(t){if((t.engines?.backend||"00v000")>=nn||O.isLibrary(t)){if(!an.default.valid(t.version))throw new Error(`From "engines.backend" version >= ${nn} onwards "version" has to be a semantic version string!"`)}else if(!ZF(t.version))throw new Error('"version" has to be a number!')}function Fs(t){t.registry&&(delete t.registry.allowedBackends,delete t.registry.target)}var gx=J0(require("semver"));var Bn=J0(require("node:child_process")),ss=require("tinytar-fix"),as=require("pako"),xA=".studio/libdeps",jr="package.json",_0;(P=>{async function t(g,w=!1){let q=g.libraryDependencies||{};return w||Object.assign(q,g.libraryDevDependencies||{}),q}P.getAll=t;function e(g){return g.split("/")[1]}P.dependencyIdToName=e;function F(g,w){let q=e(w);return tx.Utils.joinPath(g,xA,q)}P.dependencyToPath=F;function i(g){return isNaN(g.split("")[0])?g.substring(1):g}P.rangeToVersion=i;function s(g,w,q){if(!gx.satisfies(w,q,{includePrerelease:!0}))throw new Error(`${g}, version ${w} does not satisfy required constraint ${q}`)}P.satisfiesSemverRange=s;async function E(g,w,q={},T=!1){let $=await O.read(g,w),L=$.libraryDependencies||{};T&&Object.assign(L,$.libraryDevDependencies);let U=Object.keys(q);for(let H of U)if(Object.hasOwn(L,H)){let K=q[H],S=L[H],z=i(K),Y=i(S),Z=gx.compare(z,Y);Z===1?(L[H]=K,s(H,z,S)):Z===-1&&(L[H]=S,s(H,Y,K))}else L[H]=q[H];return L}P.validateDependencyTree=E;async function o(g,w,q,T,$){let L=i($),U=tx.Utils.joinPath(g,xA,T);try{let H=await O.read(U,w);return gx.gte(H.version,L)&&H.publisher.toLowerCase()===q.toLowerCase()}catch{return!1}}P.isDependencyInstalled=o;async function C(g,w,q,T){let $=tx.Utils.joinPath(g,xA,T);await w.rm($).catch(L=>{q.error("removeExisting",L)})}P.removeExisting=C;async function c(g,w,q,T,$){let L=ss.untar(as.ungzip($));await C(g,w,q,T);for(let U of L.values())try{let H=tx.Utils.joinPath(g,xA,T,U.name);await w.writeFile(H,U.data)}catch(H){q.error("Extracting lib",H)}}P.extractLibraryContent=c;async function j(g,w,q,T,$,L,U,H=!1){let[K,S]=L.split("/");if(U&&await o(g,w,K,S,U))return;await C(g,w,q,S);let z=await y0.getLibraryProfile($,K,S,T),Y=U?z.versions?.find(M0=>gx.eq(M0.name,P.rangeToVersion(U))):z.versions[0];if(!Y)throw new Error(`Library ${L} with version ${U} does not exist!`);let Z=Y.files.find(M0=>M0.name==="studio.json"),r0=(await os($,Z.downloadUrl)).libraryDependencies||{},x0={...r0};x0[L]=`^${Y.name}`,await E(g,w,x0,H);for(let[M0,Ox]of Object.entries(r0))await j(g,w,q,T,$,M0,Ox,H);let e0=Y.files.find(M0=>M0.name==="library.tar.gz");if(!e0)throw new Error(`Library ${L} has no content!`);let d0=await y0.fetchCustomContent($,e0.downloadUrl);await c(g,w,q,S,d0),await u(g,w,q,S,H);let f0=await O.read(g,w),o0=f0.libraryDependencies||{},b0=f0.libraryDevDependencies||{},Z0=H?b0:o0;Z0[L]=`^${Y.name}`,f0.libraryDependencies=o0,f0.libraryDevDependencies=b0,await O.write(g,w,f0)}P.installDependency=j;async function b(g,w,q,T,$){let L=await O.read(g,w),U=L.libraryDependencies||{},H=L.libraryDevDependencies||{},K=Object.assign(U,H);for(let[S,z]of Object.entries(K)){let Y=Object.hasOwn(H,S);await j(g,w,q,T,$,S,z,Y)}for(let[S]of Object.entries(K)){let z=e(S),Y=Object.hasOwn(H,S);await u(g,w,q,z,Y)}q.done(`Installed ${Object.entries(K).length} dependencies`)}P.installDependencies=b;async function p(g,w,q,T,$){let L=await O.read(g,w),U=L.libraryDependencies||{},H=L.libraryDevDependencies||{},K=Object.assign(U,H),S=`${T}/${$}`;delete K[S];let z=await vs(g,w,K);if(!Object.hasOwn(z,S))await y(g,w,q,$),await C(g,w,q,$),delete H[S],delete U[S],await O.write(g,w,L);else throw new Error(`Library '${$}' not removed. This library is a dependency of other libraries.`)}P.uninstallDependency=p;async function k(g,w,q){let T=await O.read(g,w),$=[];T.pov?.details?.workingPath&&$.push({name:"pov",workingPath:T.pov.details.workingPath}),T.blo?.workingPath&&$.push({name:"blo",workingPath:T.blo.workingPath});for(let{name:L,workingPath:U}of $){let H=tx.Utils.joinPath(g,U),K=tx.Utils.joinPath(H,jr);await w.stat(K)&&(q.info(`Installing npm dependencies for ${L} (${U})...`),await Cs(H,q))}}P.installNpmInApmParts=k;async function _(g,w,q){let T=await O.read(g,w),$=await t(T),L=[],U=V.filePaths[q].path,H=q===t0.Part.dlo?"inc":"dfiles";for(let K in $){let S=P.dependencyToPath(g,K),z=P.dependencyIdToName(K),Y=tx.Utils.joinPath(S,U,`${z}.${H}`);await w.stat(Y)&&L.push({name:z,path:Y})}if(O.isLibrary(T)){let K=tx.Utils.joinPath(g,U,`${T.name}.${H}`);await w.stat(K)&&L.push({name:T.name,path:K})}return L}P.getApmPartDependencies=_;async function u(g,w,q,T,$){let L=await O.read(g,w),U=[{partName:"blo",partDistPath:"blo",workingPath:L.blo?.workingPath},{partName:"pov",partDistPath:"pov/details",workingPath:L.pov?.details?.workingPath}];for(let{partName:H,partDistPath:K,workingPath:S}of U){if(!S)continue;let z=tx.Utils.joinPath(g,xA,T,"dist",...K.split("/"),jr);if(await w.stat(z))try{let Z=await vn(g,w,S),M=$?"devDependencies":"dependencies";Z[M]=Z[M]||{};let r0=S.split("/").length,x0=Array(r0).fill("..").join("/");Z[M][T]=`file:${x0}/${xA}/${T}/dist/${K}`,await En(g,w,S,Z),q.info(`Linked ${T} to ${H} (${S})`)}catch(Z){q.warn(`Could not link ${T} to ${H}: ${Z}`)}}}P.linkLibraryApmParts=u;async function y(g,w,q,T){let $=await O.read(g,w),L=[{partName:"blo",workingPath:$.blo?.workingPath},{partName:"pov",workingPath:$.pov?.details?.workingPath}];for(let{partName:U,workingPath:H}of L)if(H)try{let K=await vn(g,w,H),S=!1;K.dependencies?.[T]?.startsWith("file:")&&(delete K.dependencies[T],S=!0),K.devDependencies?.[T]?.startsWith("file:")&&(delete K.devDependencies[T],S=!0),S&&(await En(g,w,H,K),q.info(`Unlinked ${T} from ${U}`))}catch(K){q.warn(`Could not unlink ${T} from ${U}: ${K}`)}}P.unlinkLibraryApmParts=y})(_0||={});async function vn(t,e,F){let i=tx.Utils.joinPath(t,F,jr),s=await e.readFile(i),E=new TextDecoder().decode(s);return JSON.parse(E)}async function En(t,e,F,i){let s=tx.Utils.joinPath(t,F,jr),E=JSON.stringify(i,null," ")+`
1662
- `;await e.writeFile(s,E)}async function os(t,e){return await y0.fetchCustomContent(t,e,!0)}async function vs(t,e,F){let i={};function s(j,b,p,k=!1){let _=i[j],u=_0.rangeToVersion(p),y=_0.rangeToVersion(p);(!_||gx.gt(u,y))&&(i[j]={publisherId:b,version:p,installed:k})}let E=Object.entries(F).map(([j,b])=>{let[p,k]=j.split("/");return s(k,p,b,!0),k}),o={};for(let j of E)try{let b=await Es(t,e,j);o[j]=Object.entries(b).map(([p,k])=>{let[_,u]=p.split("/");return s(u,_,k),u}),E.push(...o[j])}catch{let p=i[j];throw new Error(`Please import "${p.publisherId}/${j}" first.`)}let C=[];for(;;){let j=E.filter(b=>C.includes(b)?!1:(o[b]||[]).every(k=>C.includes(k)));if(C.push(...j),E.length===C.length||!j.length)break}let c={};return[...new Set(C)].forEach(j=>{let{version:b,publisherId:p}=i[j],k=Bs(p,j,b);c[k.libraryId]=k.libraryVersion}),c}async function Es(t,e,F){let i=tx.Utils.joinPath(t,xA,F);return(await O.read(i,e))?.libraryDependencies||{}}function Bs(t,e,F){return{libraryName:e,publisherId:t,libraryVersion:F[0]==="^"?F:"^"+F,libraryId:`${t}/${e}`}}function Cs(t,e){return new Promise((F,i)=>{Bn.exec("npm ci",{cwd:t.fsPath,env:process.env},(s,E,o)=>{E&&e.log(E),o&&e.error(o),s&&i(s),F()})})}var Cn=J0(require("dotenv")),fn=require("vscode-uri");var fs=".env.local",ye;(e=>{async function t(F,i){let s=fn.Utils.joinPath(F,fs);if(await i.stat(s)){let E=await i.readFile(s);return Cn.default.parse(F0.convertBlobToString(E))}return{}}e.read=t})(ye||={});var WA=J0(require("chalk")),we;(i=>{let t;(j=>(j[j.log=0]="log",j[j.done=1]="done",j[j.info=2]="info",j[j.warning=3]="warning",j[j.error=4]="error"))(t=i.LogMessageType||={}),i.LOG_PREFIX={1:WA.default.bgGreen.black(" DONE "),0:"",2:WA.default.bgBlueBright.black(" INFO "),3:WA.default.bgYellow.black(" WARNING "),4:WA.default.bgRed.black(" ERROR ")};class F{_logHandler;_silent=!1;constructor(E=console){this._logHandler=E}_log(E,o,...C){this._silent&&E!==4||(C=[i.LOG_PREFIX[E],o,...C],this._logHandler.log(...C))}set silent(E){this._silent=E}log(E,...o){this._log(0,E,...o)}debug(E,...o){this._log(0,E,...o)}error(E,...o){this._log(4,E,...o)}info(E,...o){this._log(2,E,...o)}warn(E,...o){this._log(3,E,...o)}done(E,...o){this._log(1,E,...o)}}i.Logger=F})(we||={});var Dn=require("uuid"),Ds="b4baec47-0ba4-4e37-b237-8f9cde42b8dd",_e=(s=>(s.Get="GET",s.Post="POST",s.Put="PUT",s.Delete="DELETE",s))(_e||{});var pr=class{domain;auth;logger;userInfo=null;constructor(e,F,i){if(typeof e=="object"){let{serverUrl:s,apiToken:E,authHeader:o,logger:C}=e;this.domain=this.normalizeServerUrl(s),this.auth=o||(E?`Bearer ${E}`:""),this.logger=C}else this.domain=this.normalizeServerUrl(e),typeof F=="string"?(this.auth=`Bearer ${F}`,this.logger=i):(this.auth="",this.logger=F)}setAuth(e){this.auth=e}getDomain(){return this.domain}normalizeServerUrl(e){return!e.startsWith("http://")&&!e.startsWith("https://")?`https://${e}`:e}trimDomain(e){return e.replace(/(^\w+:|^)\/\//,"")}async fetchJSON(e,F,i){let s=`${this.domain}${F}`,E={Authorization:this.auth},o={method:e,headers:E};i&&(i instanceof FormData?o.body=i:(E["Content-Type"]="application/json",o.body=JSON.stringify(i)));let C=await fetch(s,o);if(!C.ok){let c=await C.text().catch(()=>"Unknown error");throw new Error(`HTTP ${C.status}: ${c}`)}return C.json()}async authenticate(){this.logger?.info(`Authenticating with ${this.trimDomain(this.domain)}...`);try{let{user:e,customers:F}=await this.fetchJSON("GET","/api/1/me");return this.userInfo={name:e.name,email:e.email,group:e.group,customers:F},this.logger?.info(`Authenticated as ${this.userInfo.name}`),this.userInfo}catch(e){throw new Error(`Authentication failed: ${e instanceof Error?e.message:String(e)}`)}}getUserInfo(){return this.userInfo}async uploadDevTag(e,F){this.logger?.info(`Uploading development tag ${e}...`);let{applid:i}=await this.fetchJSON("POST",`/api/1/app-center/__dev/${e}`,F);return this.logger?.info(`Development tag uploaded, application ID: ${i}`),i}async getCustomer(e){let{_uid:F,name:i}=await this.fetchJSON("GET",`/api/1/customers/${e}`);return{_uid:F,name:i}}async getCustomers(){return this.fetchJSON("GET","/api/1/customers")}async getDeviceSite(e){try{return await this.fetchJSON("GET",`/api/1/devices/${e}/site`)}catch{return null}}async getDevice(e){try{return await this.fetchJSON("GET",`/api/1/devices/${e}`)}catch{return null}}async getSite(e,F){try{return await this.fetchJSON("GET",`/api/1/customers/${e}/sites/${F}`)}catch{return null}}async createDevelopmentSite(e,F,i){if(this.logger?.info(`Creating development site "${F.name}"...`),F.serialNumber){let E=await this.getSite(e,F.name.toLowerCase());if(E)try{return await this.fetchJSON("POST",`/api/1/customers/${e}/sites/${E._uid}/cn-attach-device`,{device_id:F.serialNumber,allow_overwrite:!0,detach_from_old_site:!0,acquire:!0,create:!0}),this.logger?.info(`Device attached to existing site ${E._uid}`),E._uid}catch(o){if(o.message&&!o.message.includes("304"))this.logger?.warn(`Could not attach device to existing site: ${o.message}`);else return E._uid}}let{_uid:s}=await this.fetchJSON("POST",`/api/1/customers/${e}/sites`,{name:F.name,create:!0,force:!0,note:"This is a Studio development site",applid:F.applicationId,device_id:F.serialNumber,reg_code:i,servicetariff:"0000000000000000",servicetariff_indiv_cost:0});return this.logger?.info(`Development site created: ${s}`),s}async updateSiteName(e,F){try{await this.fetchJSON("PUT",`/api/1/sites/${e}`,{name:F})}catch{}}};function $e(t){return(0,Dn.v5)(t,Ds)}async function ln(t,e,F,i,s,E,o){let C=await O.read(t,e),c=s.replaceAll(" ","_").replace(/[^a-zA-Z0-9-]+/g,""),j=C.name.replaceAll(" ","_").replace(/[^a-zA-Z0-9-]+/g,""),b=await O.isApmPartEnabled(t,e,t0.Part.dlo,C),p=b&&i,k=p?i.toUpperCase():`${j}_${c}`,_=p?i:k,u=o||k;return u.length>50&&(F.warn(`Site name "${u}" is too long. Truncating to 50 characters.`),u=u.substring(0,50)),{apmId:$e(_),applicationId:null,name:u,version:1,serialNumber:b?i:void 0,siteUid:null,customerUid:E}}async function ls(t,e,F,i,s,E,o=!1){if(E.length>0)for(let C of E){let[c,j]=C.split("@");await _0.installDependency(t,e,F,i,s,c,j||null,o)}else await _0.installDependencies(t,e,F,i,s);await _0.installNpmInApmParts(t,e,F)}async function cs(t,e,F,i,s=null,E=!0,o){return await O.validateBasicManifest(t,e,null),V0.buildAll(t,e,F,i,s,E,o)}async function ds(t){let e=null;if(t){e=t==="*"?t:t.split(";");let F=await O.validateRegistryAllowedBackends(e);if(F)throw new Error(F)}return e}async function js(t,e,F,i,s,E,o,C){F.info("Publishing package...");let c=await ds(E);if(C)await V0.publishArchive(t,e,F,s,i,C,o,c);else return await V0.validatePublishSettings(t,e,s,i),V0.release(t,e,F,i,s,o,c)}async function ps(t,e,F,i,s,E){return V0.pack(t,e,F,i,s,E)}0&&(module.exports={APM,DDE,DDE_Core,DFILES,DLO,DefaultFiles,Dependencies,DeviceProfiles,Diagnostics,ENV,Globals,Helper,HttpMethod,Library,Log,Manifest,MyDatanetClient,Package,Registry,build,buildDevelopmentInstallInfo,generateDevApmId,install,pack,publish});
1658
+ ${w}
1659
+ public ___${P}( ${g})${_}`}else if(N=bt.exec(q)){let[,M,P]=N;y=`${M}${P}{_log_string="";_assert(__refid,__line);}`}else if(N=pt.exec(q)){let[,M,P,g,_]=N;y=`${M}${P}{ if (!(${g})) { sprintf(_log_string,_,${_.replace(/%%/g,"\xFF")});_assert(__refid,__line); }}`}else if(N=ut.exec(q)){let[,M,P,g]=N;y=`${M}${P}{ if (!(${g})) { _log_string="";_assert(__refid,__line); }}`}else if(N=mt.exec(q)){let[,M,P,g]=N;y=`${M}${P}_catch(__refid,__line,${g});`}else if(N=ht.exec(q)){let[,M,P,g,_,I]=N,{priority:z,code:J}=lt(_,g.substring(1));z!==null&&(y=`${M}${P}{new params_str{DDE_APPLOG_SIZE_PARAMS};sprintf(params_str,_,${I});DDE_applog_write(${z}, ${J}, params_str, __applog_src_id);}`)}else if(N=gt.exec(q)){let[,M,P,g,_]=N,{priority:I,code:z}=lt(_,g.substring(1));I!==null&&(y=`${M}${P}DDE_applog_write(${I}, ${z}, "", __applog_src_id);`)}else if(N=kt.exec(q)){let[,M,P,g,_]=N,I=g.substring(1),z=yt[I];y=`${M}${P}{ if(_log_level <= ${z}){ sprintf(_log_string,_,${_.replace(/%%/g,"\xFF")}); _log${g}(__refid,__line); }}`}else(N=tF.exec(q))&&!C.includes(X.filePaths.studio.auto.path)?(C.includes(X.filePaths.studio.libdeps)||o.push({file:a,level:"warning",line:b,message:"Libraries are included automatically - remove this #include line"}),y="// Libraries are included automatically! - "+q):(N=nF.exec(q))&&(o.push({file:a,level:"error",line:b,message:"#endinput is not supported - use #if/#endif instead"}),y=q);c&&!i.legacyProject&&(FF.exec(q)&&(y=y.replaceAll("DDE_",`_${c}`)),sF.exec(q)&&(y=y.replace("onUplink",`_${c}`)),aF.exec(q)&&(y=y.replace("onUplink",`_${c}Uplink`))),u.push(y),w++;for(let M=0;M<G;M++)u.push(""),w++,b++}if(j!=="main.dlo"){let b=j.split(".")[0].replace(/[^a-zA-Z0-9]/g,"_"),y=`_inc_${b}`.substring(0,31),q=`_inc_${b}_inc`.substring(0,31);u.push(`#if defined ${y}`),u.push(`#undef ${y}`),u.push("#endif"),u.push(`#if defined ${q}`),u.push(`#undef ${q}`),u.push("#endif")}return{data:u.join(`
1660
+ `),diagnostics:o}}};var hx=require("vscode-uri");var B0=J0(require("fs")),w0=require("vscode-uri");var Pt=J0(require("iconv-lite")),BF=i0.convertBlobToStringArray,Nt=16384,Lt=511,je=Nt|Lt,CF=32768,fF=438,_t=CF|fF,DF=new CA,fA={};function Gt(){let t=[];for(let e of Object.keys(fA))t.push(...fA[e].diagnostics);return t}var cr=!!process.env.DLO_PROFILE,$x={precompileCount:0,cacheHits:0,precompileMs:0};function Tt(t){cr&&(t.log(`[DLO_PROFILE] precompile: ${$x.precompileCount} runs, ${$x.cacheHits} cache hits, ${$x.precompileMs.toFixed(1)}ms`),$x.precompileCount=0,$x.cacheHits=0,$x.precompileMs=0)}var pe=(t,e,F,i)=>{let a={getattr(o){let C=w0.Utils.joinPath(w0.URI.parse(o.mount.opts.root),t.getPath(o)),c=C.fsPath;if(!B0.existsSync(c))throw new t.ErrnoError(44);let j=qt(e,i,F,C),u=B0.statSync(c),p=j?.length||u.size;return{mode:u.isDirectory()?je:_t,size:p,atime:u.atime,mtime:u.mtime,ctime:u.ctime}},setattr(o,C){let c=w0.Utils.joinPath(w0.URI.parse(o.mount.opts.root),t.getPath(o)).fsPath;if(!B0.existsSync(c))throw new t.ErrnoError(44);if(typeof C.size=="number"&&B0.truncateSync(c,C.size),typeof C.mode=="number"&&B0.chmodSync(c,C.mode),C.atime||C.mtime){let j=B0.statSync(c);B0.utimesSync(c,C.atime??j.atime,C.mtime??j.mtime)}},lookup(o,C){let j=w0.Utils.joinPath(w0.URI.parse(o.mount.opts.root),t.getPath(o),C).fsPath;if(!B0.existsSync(j))throw new t.ErrnoError(44);let u=B0.statSync(j),p=t.createNode(o,C,u.isDirectory()?je:_t,0);return p.node_ops=o.node_ops,p.stream_ops=o.stream_ops,p},readdir(o){let C=w0.Utils.joinPath(w0.URI.parse(o.mount.opts.root),t.getPath(o)).fsPath;return[".","..",...B0.readdirSync(C)]},mknod(o,C,c,j){let u=w0.Utils.joinPath(w0.URI.parse(o.mount.opts.root),t.getPath(o),C).fsPath;B0.writeFileSync(u,"");let p=t.createNode(o,C,c,j);return p.node_ops=o.node_ops,p.stream_ops=o.stream_ops,p},unlink(o,C){let c=w0.Utils.joinPath(w0.URI.parse(o.mount.opts.root),t.getPath(o),C).fsPath;B0.unlinkSync(c)},mkdir(o,C,c){let j=w0.Utils.joinPath(w0.URI.parse(o.mount.opts.root),t.getPath(o),C).fsPath;B0.mkdirSync(j,{mode:c});let u=t.createNode(o,C,c|je,0);return u.node_ops=o.node_ops,u.stream_ops=o.stream_ops,u},rmdir(o,C){let c=w0.Utils.joinPath(w0.URI.parse(o.mount.opts.root),t.getPath(o),C).fsPath;B0.rmdirSync(c)},rename(o,C,c){let j=w0.Utils.joinPath(w0.URI.parse(o.mount.opts.root),t.getPath(o)).fsPath,u=w0.Utils.joinPath(w0.URI.parse(C.mount.opts.root),t.getPath(C),c).fsPath;B0.renameSync(j,u)}},E={open(o){let C=w0.Utils.joinPath(w0.URI.parse(o.node.mount.opts.root),t.getPath(o.node));o.modifiedContent=qt(e,i,F,C),o.modifiedContent||(o.nfd=B0.openSync(C.fsPath,$t(o.flags)))},close(o){o.nfd&&B0.closeSync(o.nfd)},read(o,C,c,j,u){if(!o.modifiedContent)return B0.readSync(o.nfd,C,c,j,u);let p=o.modifiedContent;if(u>=p.length)return 0;let k=p.length-u,w=Math.min(j,k);return lF(p,C,c,u,u+w),w},write(o,C,c,j,u){return B0.writeSync(o.nfd,C,c,j,u)},flagsToMode:$t,llseek(o,C,c){let j=C;if(c===1)j+=o.position;else if(c===2){let u=B0.fstatSync(o.nfd);j+=u.size}if(j<0)throw new t.ErrnoError(28);return o.position=j,j}};return{mount(){let o=qx(e),C=t.createNode(null,o,Nt|Lt,0);return C.node_ops=a,C.stream_ops=E,C},node_ops:a,stream_ops:E}};function $t(t){let e=t&2097155;if(e===0)return"r";if(e===1)return"r+";if(e===65)return"w";if(e===577)return"w+";if(e===1089)return"a";if(e===1217)return"a+";throw new Error(`Unknown file open flags: ${t}`)}function lF(t,e,F,i,a){if(Buffer.isBuffer(t)&&Buffer.isBuffer(e))t.copy(e,F,i,a);else{let E=t.subarray(i,a);Buffer.isBuffer(e)?Uint8Array.prototype.set.call(e,E,F):e.set(E,F)}}function qt(t,e,F,i){let a=i.fsPath;if(!a.endsWith(".dlo")&&!a.endsWith(".inc"))return;let E=cF(a);if(!E){delete fA[a];return}let o=fA[a];if(o&&o.mtimeMs===E.mtimeMs&&o.size===E.size)return cr&&$x.cacheHits++,o.buffer;let C=cr?performance.now():0,c=dF(t,e,F,i);return cr&&($x.precompileCount++,$x.precompileMs+=performance.now()-C),fA[a]={buffer:c.buffer,mtimeMs:E.mtimeMs,size:E.size,diagnostics:c.diagnostics},fA[a].buffer}function cF(t){try{return B0.statSync(t)}catch{return null}}function dF(t,e,F,i){let a=B0.readFileSync(i.fsPath),E=BF(a),o=DF.preCompileDloFile(t,e,F,i,E);return{buffer:Pt.encode(o.data,"cp1252"),diagnostics:o.diagnostics}}function qx(t){return t.fsPath.replace(/\\/g,"/")}function OA(t,e){let F=qx(t);return qx(e).replace(F,"")}var zt=Ht(),HA=zt.createPawnCC,Jt=zt.createPawnDbg;var DA=class{constructor(e,F,i){this.cwd=e;this.fs=F;this.logger=i;this.dloCC=null}cwd;fs;logger;dloCC;stdout=[];stderr=[];async initDloCC(e=!1){this.stdout.length=0,this.stderr.length=0,this.dloCC=await HA({noExitRuntime:e,print:o=>{let C=ue(this.cwd,o);this.logger.log(C?C.message:o),this.stdout.push(o)},printErr:o=>{let C=ue(this.cwd,o);o.includes(": warning")?this.logger.warn(C?C.message:o):this.logger.error(C?C.message:o),this.stderr.push(o),this.stdout.push(o)}});let F=qx(this.cwd),[i]=F.split("/"),a=this.dloCC.FS,E=await U.read(this.cwd,this.fs);a.filesystems.NODEFS_TS=pe(a,this.cwd,E,this.logger),a.mkdir(i),a.mount(a.filesystems.NODEFS_TS,{root:"/"},i),a.chdir(qx(this.cwd))}async compile(e,F){let i=await U.read(e,F);if(!await U.isApmPartEnabled(e,F,t0.Part.dlo,i))return this.logger.log("DLO not enabled. Skipped."),{code:0,stdout:[],stderr:[],diagnostics:[]};await this.initDloCC(),await F.mkdir(hx.Utils.joinPath(e,"dist/dlo"));let a=hx.Utils.joinPath(e,i.dlo?.mainFile||X.filePaths.dlo.mainDLO),E=[],o=hx.Utils.joinPath(e,X.filePaths.studio.auto.dlo.cfg),C=OA(e,o);E.push(`-T.${C}`);let c=0;try{let j=`.${OA(e,a)}`;c=await this.dloCC.callMain([j,...E])}catch(j){this.logger.error(j)}return{code:c,stdout:this.stdout,stderr:this.stderr,diagnostics:[...Gt(),...be(e,this.stderr,a)]}}async getDloSymbols(e,F){let i=F.map(u=>{let p=u.substring(0,2);return["-D","-e","-i","-o","-p","-r","-T"].includes(p)?`${p}.${u.substring(2)}`:u}),a=!!process.env.DLO_PROFILE,E=a?performance.now():0,{compiler:o,print:C}=await this.getSymbolCompiler(),c=a?performance.now()-E:0,j=a?performance.now():0;try{if(await o.callMain(["."+e,...i,"-R"]))return null}catch(u){if(u.stack?.startsWith("RuntimeError"))return null;throw u}finally{if(a){let u=performance.now()-j;this.logger.log(`[DLO_PROFILE] instantiate: ${c.toFixed(1)}ms, callMain: ${u.toFixed(1)}ms`),Tt(this.logger)}}return[...C.stdout,...C.stderr]}async getSymbolCompiler(){let e={stdout:[],stderr:[]},F=await HA({noExitRuntime:!1,print:C=>{e.stdout.push(C)},printErr:C=>{e.stderr.push(C)}}),i=qx(this.cwd),[a]=i.split("/"),E=F.FS,o=await U.read(this.cwd,this.fs);return E.filesystems.NODEFS_TS=pe(E,this.cwd,o,this.logger),E.mkdir(a),E.mount(E.filesystems.NODEFS_TS,{root:"/"},a),{compiler:F,print:e}}};function be(t,e,F){let i=[],a=e.filter(E=>!!E.trim());for(let E of a){if((E.includes("Assertion failed:")||E.includes("Compilation aborted."))&&F){i.push({file:F,level:"error",line:0,message:E});continue}let o=ue(t,E);o&&i.push({file:hx.URI.parse(`file:///${o?.posixPath}`),level:o.level,line:Number(o.lineNumber)-1,message:o.msg})}return i}function ue(t,e){let F=e.indexOf(" : "),i=e.indexOf(": ",F+3),a=e.substring(0,F).trim(),E=e.substring(F+3,i).trim(),o=e.substring(i+2).trim();if(!a||!E||!o)return null;let[C,c]=a.split(/[()(-)]/),j=E.split(" "),u=j[j.length-2],k=hx.Utils.joinPath(t,C).fsPath.replace(/\\/g,"/");k.startsWith("/")&&(k=k.substring(1));let w=e.replace(C,k);return{level:u,msg:o,posixPath:k,lineNumber:c,message:w}}async function Kt(t,e,F){let i=["-M","-v2"],a=hx.Utils.joinPath(t,X.filePaths.studio.auto.dlo.defaultInc);i.push(`-p.${OA(t,a)}`);let E=await _0.getApmPartDependencies(t,e,t0.Part.dlo);for(let C of E){let c=hx.Utils.dirname(C.path);i.push(`-i.${OA(t,c)}`)}let o=F.dlo;return o&&i.push(...o.compileOptions),i.push("-o./dist/dlo/main.amx"),{path:hx.Utils.joinPath(t,X.filePaths.studio.auto.dlo.cfg),data:i.join(`
1661
+ `)}}var zA;(c=>{c.createPawnCC=HA,c.createPawnDbg=Jt,c.FileSequencer=BA,c.PreCompiler=CA,c.Compiler=DA,c.uriToMemFs=qx,c.parseCompilerWarningsAndErrors=be;async function C(j,u,p){let k=await U.read(j,u),w=await Kt(j,u,k);await u.writeFile(w.path,w.data),p.log("Generated",X.filePaths.studio.auto.dlo.cfg)}c.exportDloConfig=C})(zA||={});var me=require("vscode-uri");var Wt=J0(require("node:child_process"));var dr;(F=>{async function t(i,a,E){let o=await U.read(i,a);if(await U.isApmPartEnabled(i,a,t0.Part.pov)){E.info("Executing POV build script",o.pov?.details.buildCommand);let{buildCommand:C,workingPath:c}=o.pov.details,j=me.Utils.joinPath(i,c);try{await Vt(j,C,E)}catch(u){throw u.code?new Error(`APM part '${t0.Part.pov}' has errors. Aborted.`):u}}}F.tryBuildPov=t;async function e(i,a,E){let o=await U.read(i,a);if(await U.isApmPartEnabled(i,a,t0.Part.blo,o)){E.info("Executing BLO build script",o.blo?.buildCommand);let{buildCommand:C,workingPath:c}=o.blo,j=me.Utils.joinPath(i,c);try{await Vt(j,C,E)}catch(u){throw u.code?new Error(`APM part '${t0.Part.blo}' has errors. Aborted.`):u}}}F.tryBuildBlo=e})(dr||={});async function Vt(t,e,F){return new Promise((i,a)=>{Wt.exec(e,{cwd:t.fsPath,env:process.env},(E,o,C)=>{F.log(o),C&&F.error(C),E&&a(E),i(null)})})}var Yt=require("vscode-uri");var ge=require("minimatch");var Zt=require("@gera2ld/tarjs"),NF=i0.convertBlobToString,LF=require("pako"),Qt=".studioignore",xn=[".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/**"];xn.push("**/.studio/**","**/node_modules/**",Qt,"dist/defines.app.ts");var Xt={dot:!0},AA;(i=>{async function t(a,E){let o=new Zt.TarWriter;(await e(a,E)).forEach(j=>{o.addFile(j.name,j.data)});let c=await o.write();return LF.gzip(await c.arrayBuffer())}i.createArchive=t;async function e(a,E){let o=[],{ignore:C,negate:c}=await GF(a,E),u=(await E.findFiles(a,"**/*")).filter(({path:p})=>{let k=p.slice(a.path.length+1);return!C.some(w=>(0,ge.minimatch)(k,w,Xt))||c.some(w=>(0,ge.minimatch)(k,w.slice(1),Xt))});for(let p of u){let k=p.path.slice(a.path.length+1),[w,b]=await Promise.all([E.stat(p),E.readFile(p)]);w&&o.push({name:k,data:b,modifyTime:new Date(w.mtime)})}return o}i.getFilesForArchive=e;async function F(a,E,o,C=I0.ENV.production){let{publisher:c,name:j,version:u}=E,p=await V0.readFilesFromTarGz(o,["CHANGELOG.md","README.md","studio.json"]),k={"CHANGELOG.md":await he(p["CHANGELOG.md"]),"README.md":await he(p["README.md"]),"studio.json":await he(p["studio.json"]),"library.tar.gz":o};return await y0.publishLibraryVersion(a,c,j,u,k,C)}i.publishPackage=F})(AA||={});async function GF(t,e){let F=["!studio.json","!README.md"],a=(await TF(t,e)).split(/[\n\r]/).map(j=>j.trim()).filter(j=>!!j).filter(j=>!/^\s*#/.test(j)),E=[...a,...a.filter(j=>!/(^|\/)[^/]*\*[^/]*$/.test(j)).map(j=>/\/$/.test(j)?`${j}**`:`${j}/**`)],o=[...xn,...E,...F],[C,c]=o.reduce((j,u)=>/^\s*!/.test(u)?[j[0],[...j[1],u]]:[[...j[0],u],j[1]],[[],[]]);return{ignore:C,negate:c}}async function TF(t,e){let F=Yt.Utils.joinPath(t,Qt);if(await e.stat(F)){let a=await e.readFile(F);return NF(a)}else return""}async function he(t){return new Uint8Array(await t.arrayBuffer())}var gx=require("vscode-uri");var Hx=require("yaml");var IF=i0.convertBlobToString,jr=i0.yamlRangeToLineInformation,JA;(o=>{let t;(u=>(u.static="static",u.dynamic="dynamic",u.appDynamic="app-dynamic"))(t=o.Type||={});let e;(p=>(p.crcStamp="crc_stamp",p.stampOnly="stamp_only",p.onlyDown="only_down",p.onlyUp="only_up"))(e=o.SyncLogic||={});let F;(u=>(u.down="down",u.up="up",u.off="off"))(F=o.Force||={});async function i(C,c,j){let{properties:u,diagnostics:p,libraryFiles:k}=await a(C,c),w=gx.Utils.joinPath(C,X.filePaths.dist.dfilesPath);await c.stat(w)&&await c.rm(w);for(let[b,y]of Object.entries(u))await SF(C,c,b,y,k);return Object.keys(u).length&&(j.done(`${Object.keys(u).length} dfiles processed.`),await c.writeFile(gx.Utils.joinPath(C,X.filePaths.dist.dfilesProperties),JSON.stringify(u,null," "))),p}o.process=i;async function a(C,c){let j=[],u={},p=await _0.getApmPartDependencies(C,c,t0.Part.dfiles);for(let b of p){let{properties:y,diagnostics:q}=await E(c,b.path,b.name);Object.assign(u,y),j.push(...q)}let{properties:k,diagnostics:w}=await E(c,gx.Utils.joinPath(C,X.filePaths.dfiles.mainDFILES),null);return Object.assign(u,k),j.push(...w),{properties:u,diagnostics:j,libraryFiles:p}}o.parseDfile=a;async function E(C,c,j){let u=[],p={};if(!await C.stat(c))return{properties:p,diagnostics:u};let k=await C.readFile(c),w=IF(k),b=new Hx.LineCounter,q=(0,Hx.parseDocument)(w,{lineCounter:b}).contents||new Hx.YAMLMap;for(let N of q.items){let G=N.key.value,M=(0,Hx.isMap)(N.value)?N.value:null,P=jr(b,N.key.range),g=M?M.has("syncMode"):!1,_=g?M.get("syncMode"):"crc_stamp";if(g){let R=Object.values(o.SyncLogic);if(!R.includes(_)){let W=M.items.find(L=>L.key.value==="syncMode"),K=jr(b,W.key.range);u.push({file:c,code:"",message:`Property syncMode does not match any of "${R.join(", ")}"`,line:K.line,startCharacter:K.startCharacter,endCharacter:K.endCharacter,level:"error"})}}else u.push({file:c,code:"",message:'Property "syncMode" missing',line:P.line,startCharacter:P.startCharacter,endCharacter:P.endCharacter,level:"error"});let I=M?M.has("type"):!1,z=I?M.get("type"):"static";if(I){let R=Object.values(o.Type);if(!R.includes(z)){let W=M.items.find(L=>L.key.value==="type"),K=jr(b,W.key.range);u.push({file:c,code:"",message:`Property type does not match any of "${R.join(", ")}"`,line:K.line,startCharacter:K.startCharacter,endCharacter:K.endCharacter,level:"error"})}}G.match(/^[a-z0-9._-]*$/)||u.push({file:c,code:"",message:'Filename does not match pattern "a-z0-9._-"',line:P.line,startCharacter:P.startCharacter,endCharacter:P.endCharacter,level:"error"});let J=gx.Utils.joinPath(gx.Utils.dirname(c),G),H=await MF(C,J);if(H)p[G]={crc:H.crc,force:"off",readable:!1,size:H.size,stamp:H.stamp,sync_logic:_,type:z,library:j};else{let R=jr(b,N.key.range);u.push({file:c,code:"",message:`Could not find file "${G}"`,line:R.line,startCharacter:R.startCharacter,endCharacter:R.endCharacter,level:"error"})}}return{properties:p,diagnostics:u}}o.parseYamlFile=E})(JA||={});async function MF(t,e){let F=await t.stat(e);if(!F)return null;let i=await t.readFile(e);return{size:F.size,stamp:Math.trunc(F.ctime),crc:i0.generateCRC32ForFileContent(i)}}async function SF(t,e,F,i,a){let o=i.library!==null?gx.Utils.dirname(a.find(j=>j.name===i.library).path):gx.Utils.joinPath(t,X.filePaths.dfiles.path),C=gx.Utils.joinPath(t,X.filePaths.dist.dfilesPath,F),c=gx.Utils.joinPath(o,F);await e.copy(c,C)}var KA=require("@gera2ld/tarjs"),An=i0.convertBlobToString,ke=require("pako"),V0;(p=>{class t extends Error{_mergedDiagnostics;constructor(w,b){super(w),this.name="BuildError",this._mergedDiagnostics=b}get mergedDiagnostics(){return this._mergedDiagnostics}}p.BuildError=t;async function e(k,w,b,y,q,N=!0,G){N=RF(b,N),await OF(k,w,b,y,q,N);try{let g=await I0.read(k,w,b);await UF(k,w,b,g)}catch(g){b.warn("Could not generate defines.ts:",g)}let M={[t0.Part.dde]:[],[t0.Part.dlo]:[],[t0.Part.dfiles]:[]},P={[t0.Part.dde]:HF,[t0.Part.dlo]:zF,[t0.Part.dfiles]:JF};try{for(let g of[t0.Part.dde,t0.Part.dlo,t0.Part.dfiles])if(N.includes(g)&&(b.info(`Building ${g.toUpperCase()}...`),await WF(b,g,P[g],M[g],k,w)))return M}catch(g){throw G?new t(g?.message,M):g}return N.includes(t0.Part.pov)?await dr.tryBuildPov(k,w,b):b.info("Skipping pov build"),N.includes(t0.Part.blo)?await dr.tryBuildBlo(k,w,b):b.info("Skipping blo build"),await KF(k,w,b),b.done("Project build completed."),M}p.buildAll=e;async function F(k,w,b,y,q,N,G){let M=await U.read(k,w);return U.isLibrary(M)?(b.info("Library project detected. Publishing library..."),E(k,w,b,q,y)):(b.info("App project detected. Publishing app..."),a(k,w,b,q,N,G,y))}p.release=F;async function i(k,w,b,y,q,N){let G=await U.read(k,w),M=`${G.name}-${G.version}.tar.gz`,P=null;if(U.isLibrary(G))b.info("Library project detected. Packing library..."),P=await rn(k,w,b,q,y);else{b.info("App project detected. Packing app...");let _=await en(k,w,b,q,N,y);P=await YF(_)}let g=rA.Utils.joinPath(k,M);P!==null?(await w.writeFile(g,P),b.done(`Packaged: ${g.fsPath}`)):b.error(`Could not create archive: ${g.fsPath}`)}p.pack=i;async function a(k,w,b,y,q,N=null,G){if(!await t0.validateAccess(k,w,y,!1,G))throw new Error("Could not validate access to application");let P=await en(k,w,b,y,q,G);await t0.updateProfile(k,w,y,G);let g=await t0.publishTag(k,w,y,P,G);if(N!==null){let _=await U.read(k,w);await y0.updateExistingApplicationVersion(y,_.publisher,_.registry?.id,_.version,{allowedBackends:N},G),b.info(`Tag "${g.version}" with phase "${g.phase}" shared with ${[...N].join(";")}!`)}b.done(`Tag "${g.version}" with phase "${g.phase}" published!`)}p.releaseAPM=a;async function E(k,w,b,y,q){let N=await U.read(k,w),G=await rn(k,w,b,y,q);await AA.publishPackage(y,N,G,q),b.done(`Library "${N.publisher}/${N.name}" with version "${N.version}" published!`)}p.releaseLibrary=E;async function o(k,w,b,y,q,N,G,M=null){if(N==="*"){let H=await U.read(k,w);N=`${H.name}-${H.version}.tar.gz`,b.info(`Publishing detected archive package "${N}"...`)}let P=rA.Utils.joinPath(k,N);if(!await w.stat(P))throw new Error(`Archive package not found: ${P.fsPath}`);let g=await w.readFile(P),_=await ZF(g),{publisher:I,registry:z,version:J}=_;U.isLibrary(_)?(await AA.publishPackage(y,_,g,q),b.done(`Library "${I}/${_.name}" with version "${_.version}" published!`)):(await y0.updateApplicationFile(y,I,z.id,J,"app.tar.gz",g,q),await y0.updateExistingApplicationVersion(y,I,z?.id,J,{allowedBackends:M||void 0,phase:G||void 0},q),b.info(`Tag "${J}" with phase "${G}" shared with ${[...M||""].join(";")}!`),b.done(`Tag "${J}" with phase "${G}" published!`))}p.publishArchive=o;async function C(k,w,b){let y;try{y=await w.readFile(rA.Utils.joinPath(k,"README.md"))}catch{throw new Error('Could not find "README.md". "README.md" is required for publishing.')}if(An(y)===X.readme(b))throw new Error('"README.md" matches the default template. Please write a brief project description.');return y}p.getReadmeFile=C;async function c(k,w){let b;try{b=await w.readFile(rA.Utils.joinPath(k,"CHANGELOG.md"))}catch{throw new Error('Could not find "CHANGELOG.md". "CHANGELOG.md" is required for publishing.')}if(An(b)===X.changelog)throw new Error('"CHANGELOG.md" matches the default template.');return b}p.getChangelogFile=c;async function j(k,w,b,y){let q=await U.read(k,w),{name:N,publisher:G,description:M}=q,P=U.validateProjectName(N,U.isLibrary(q));if(P)throw new Error(`name: ${P}`);let g=U.validateDescription(M);if(g)throw new Error(`description: ${g}`);let _=U.validatePublisherId(G)||await U.validatePublisherOnline(b,G,y);if(_)throw new Error(`publisher: ${_}`);if(!U.isLibrary(q)&&(await U.validateApplicationIcon(k,w,q),U.validateEngineSettings(q),U.isApp(q)&&await U.isApmPartEnabled(k,w,t0.Part.dlo,q)&&(!q.dpid||!Object.values(U.DeviceProfiles).includes(q.dpid))))throw new Error("dpid: The device profile is needed to compile a dlo")}p.validatePublishSettings=j;async function u(k,w){let b=ke.ungzip(k),y=await KA.TarReader.load(b),q={};for(let N of y.fileInfos)w.includes(N.name)&&(q[N.name]=y.getFileBlob(N.name));return q}p.readFilesFromTarGz=u})(V0||={});function RF(t,e){let F=Object.values(t0.Part);return e===!0?(t.info("Building project..."),F):e===!1?[]:e}async function OF(t,e,F,i,a,E){E.includes(t0.Part.dde)&&await Ex.fetchPreviousHistoryJson(t,e,F,i,a)}async function UF(t,e,F,i){i.defaultsOnly?(await I0.exportDefinesTs(t,e,i.defaultsOnly),F.log("Generated",X.filePaths.dist.definesTs,"(defaults only)"),await I0.exportDefinesTs(t,e,i,X.filePaths.dist.definesAppTs),F.log("Generated",X.filePaths.dist.definesAppTs,"(with app.ini overrides)")):(await I0.exportDefinesTs(t,e,i),F.log("Generated",X.filePaths.dist.definesTs))}async function HF(t,e,F){let i=await Ex.compileDDE(t,e,F);if(i.ddeJSON){await Ex.exportMyDatanetXML(t,e,F,i.ddeJSON);let a=await U.read(t,e);U.isLibrary(a)||await Ex.exportHistoryJson(t,e,F,i.ddeJSON),await Ex.exportOpenApi(t,e,F,i.ddeJSON),await U.isApmPartEnabled(t,e,t0.Part.dlo,a)&&(await Ex.exportAutoDloFiles(t,e,F,i.ddeJSON),await zA.exportDloConfig(t,e,F))}return i.diagnostics}async function zF(t,e,F){let i=new DA(t,e,F),{diagnostics:a}=await i.compile(t,e);return a}async function JF(t,e,F){return await JA.process(t,e,F)}async function KF(t,e,F){let i=rA.Utils.joinPath(t,X.fileNames.reportTemplate);if(await e.stat(i)){let a=rA.Utils.joinPath(t,X.filePaths.dist.reportTemplate);await e.copy(i,a),F.log(`Copied "${X.fileNames.reportTemplate}" to dist folder.`)}}function VF(t,e,F){e!==t0.Part.dlo&&XF(t,F);let i=F.some(a=>a.level==="error");if(i){let a=`APM part "${e}" has errors. Aborted.`;throw new Error(a)}return i}async function WF(t,e,F,i,a,E){let o=await F(a,E,t);return i.push(...o),VF(t,e,o)}function XF(t,e){e.forEach(F=>{let i=F.startCharacter?`:${F.startCharacter+1}`:"",a=`${F.file.path}:${F.line+1}${i} - ${F.message}`;F.level==="error"?t.error(a):F.level==="warning"?t.warn(a):t.log(a)})}async function rn(t,e,F,i,a){let E=await U.read(t,e);return await U.validateBasicManifest(t,e,E),await V0.buildAll(t,e,F,a,i),await AA.createArchive(t,e)}async function en(t,e,F,i,a,E){if(!Object.values(t0.TagPhase).includes(a))throw new Error(`ReleasePhase: ${a} is not a valid release phase`);return await U.validateBasicManifest(t,e,null),await V0.buildAll(t,e,F,E,i),await t0.createTag(t,e,a)}async function YF(t){let e=new KA.TarWriter;for(let[i,a]of t.entries())if(i==="tag"){let E=a;e.addFile(i,E)}else{let E=a;e.addFile(i,await E.arrayBuffer())}let F=await e.write();return ke.gzip(await F.arrayBuffer())}async function ZF(t){let e=await QF(t,["studio.json","src/studio.json"]);if(!e)throw new Error('Could not find "studio.json" in archive');return JSON.parse(await e.text())}async function QF(t,e){let F=ke.ungzip(t),i=await KA.TarReader.load(F);for(let a of i.fileInfos)if(e.includes(a.name))return i.getFileBlob(a.name);return null}var xs=i0.bufferToBase64;var t0;(u=>{let t;(G=>(G.alpha="alpha",G.beta="beta",G.rc="rc",G.release="release",G.stage="stage",G.passive="passive",G.withdrawn="withdrawn"))(t=u.TagPhase||={});let e;(q=>(q.dde="dde",q.dlo="dlo",q.pov="pov",q.blo="blo",q.dfiles="dfiles"))(e=u.Part||={});function F(p){let{description:k,name:w,pov:b,engines:y,blo:q,publisher:N,type:G}=p,M=G||U.ProjectTypes.app,P={name:w,abstract:k,author:N||"",pov_location:U.PovLocation.embedded,pov_details_lowlevel:!1,required_be:y?.backend,required_hwfw:y?.hwfw?.join(";"),required_productcode:y?.productId?.join(";"),blo_level:q?.accessLevel||U.BloAccessLevel.restricted,pip_id:""};return b&&b.details&&(P.pov_location=U.PovLocation.pure,P.pov_details_lowlevel=!!b.details.lowLevel),M==="addon"&&(P.required_hwfw=void 0,P.required_productcode=void 0,P.addon_max_sources=1,P.addon_max_per_site=p.maxInstancesPerSite),P}u.createBaseTagHeader=F;async function i(p,k,w){let b=await U.read(p,k),y=F(b),q={version:b.version,...y,phase:w};return await E(p,k,b,q)}u.createTag=i;async function a(p,k){let w=await U.read(p,k),y={...F(w),blo_autostart:!1};return E(p,k,w,y)}u.createDevTag=a;async function E(p,k,w,b){let y=new FormData;y.append("tag",JSON.stringify(b)),y.append(`src/${U.fileName}`,new Blob([await U.readAsBlob(p,k)]));let q=new Blob([await k.readFile(Px.Utils.joinPath(p,X.filePaths.dist.ddeXmlPath))]);if(y.append("bin/dde/xml",q),w.icon){let G=await k.readFile(Px.Utils.joinPath(p,w.icon)),M=xs(G);y.append("previews/00.png",new Blob([`data:image/png;base64,${M}`]))}if(Object.hasOwn(b,"phase")){let G=await V0.getReadmeFile(p,k,b.name),M=await V0.getChangelogFile(p,k);y.append("previews/README.md",new Blob([G])),y.append("previews/CHANGELOG.md",new Blob([M]))}if(await U.isApmPartEnabled(p,k,"dlo")){let G=new Blob([await k.readFile(Px.Utils.joinPath(p,X.filePaths.dist.mainAmxPath))]);y.append("bin/dlo/amx",G)}if(await U.isApmPartEnabled(p,k,"pov",w)){await tn(p,k,y,X.filePaths.dist.povDetailsPath,"bin/pov/details");let G=new TextEncoder().encode('<!DOCTYPE html><html lang="en">');y.append("bin/pov/list/index.html",new Blob([G]))}let N=await k.findFiles(p,`${X.filePaths.dist.dfilesPath}/*`);for(let G of N){let M=new Blob([await k.readFile(G)]);y.append(`bin/dfiles/${Px.Utils.basename(G)}`,M)}return await U.isApmPartEnabled(p,k,"blo",w)&&await tn(p,k,y,X.filePaths.dist.bloPath,"bin/blo"),await As(p,k,y),y}u.createBuffer=E;async function o(p,k,w,b,y){let q=await U.read(p,k);b||await V0.validatePublishSettings(p,k,w,y);let{registry:N}=q,G=N?.id;if(!G&&!b&&(G=await C(p,k,w,q,y)),G){let{publisher:M}=q;if(!M)return null;try{return{id:G,...await y0.getExistingApplication(w,M,G,y)}}catch(P){if(P?.message==="Could not find given application")return G=await C(p,k,w,q,y),{id:G,...await y0.getExistingApplication(w,M,G,y)}}}return null}u.validateAccess=o;async function C(p,k,w,b,y){let q="myDatanet",{publisher:N,name:G,description:M,registry:P}=b,g={id:P?.id,type:b.type||U.ProjectTypes.app,name:G,targetSystem:q,description:M||"",allowedBackends:null};U.isAddon(b)&&(g.allowedApplications=null);let _=await y0.createNewApplication(w,N,g,y);if(!_)throw new Error("Failed to initialize application");return b.registry={id:_},await U.write(p,k,b),_}u.registerNew=C;async function c(p,k,w,b){let{name:y,publisher:q,description:N,registry:G}=await U.read(p,k),M=G?.id;await y0.updateExistingApplication(w,q,M,{description:N,name:y,targetSystem:"myDatanet"},b)}u.updateProfile=c;async function j(p,k,w,b,y){let{publisher:q,registry:N,version:G}=await U.read(p,k);return await y0.publishApplicationVersion(w,q,N?.id,G,b,y)}u.publishTag=j})(t0||={});async function tn(t,e,F,i,a){let E=await e.findFiles(t,`${i}/**`);for(let o of E){let C=Px.Utils.joinPath(t,i),c=o.path.substring(C.path.length+1),j=new Blob([await e.readFile(Px.Utils.joinPath(t,`${i}/${c}`))]);F.append(`${a}/${c}`,j)}}async function As(t,e,F){let i=Px.Utils.joinPath(t,X.filePaths.dist.reportTemplate);if(await e.stat(i)){let E=new Blob([await e.readFile(i)]);F.append("bin/pov/mdn_report_template.json",E)}let a=Px.Utils.joinPath(t,X.filePaths.dist.historyJson);await e.stat(a)&&F.append("src/dde/history.json",new Blob([await e.readFile(a)]))}var vn=require("deepmerge-ts"),rs=i0.isNumeric,nn="52v007",Fn="53v001",es="54v001",ts="56v001",Bx={_manifest:null,_stat:null,_overwrites:null,get manifest(){return(0,vn.deepmerge)(structuredClone(this._manifest),Bx._overwrites||{})},set manifest(t){this._manifest=t},set overwrites(t){this._overwrites=t},get stat(){return this._stat},set stat(t){this._stat=t},clear(){this._stat=null,this._manifest=null}},U;(K=>{let t=i0.convertBlobToString;K.fileName="studio.json";let F;(o0=>(o0.m22x="m22x",o0.m23x="m23x",o0.nrf91="nrf91",o0.m2blegw="m2blegw",o0.m2easyv3="m2easyv3",o0.m2easyiot="m2easyiot"))(F=K.DeviceProfiles||={});let i;(f0=>(f0.app="app",f0.library="library",f0.addon="addon",f0.analytics="analytics"))(i=K.ProjectTypes||={});let a;(Q=>(Q.restricted="restricted",Q.global="global"))(a=K.BloAccessLevel||={});let E;(Q=>(Q.embedded="$embedded",Q.pure="$pure"))(E=K.PovLocation||={});function o(L){Bx.overwrites=L}K.setOverwrites=o;function C(){Bx.overwrites=null}K.clearOverwrites=C;async function c(L,Z){let Q=VA.Utils.joinPath(L,K.fileName),e0=await Z.stat(Q);if(Bx.manifest===null||Q?.fsPath!==Bx.stat?.path.fsPath||e0?.ctime!==Bx.stat?.ctime||e0?.mtime!==Bx.stat?.mtime||e0?.size!==Bx.stat?.size){let f0=await Z.readFile(Q),D0=t(f0);Bx.manifest=JSON.parse(D0),Bx.stat={...e0,path:Q}}return Bx.manifest}K.read=c;async function j(L,Z){return await Z.readFile(VA.Utils.joinPath(L,K.fileName))}K.readAsBlob=j;async function u(L,Z,Q){return Bx.clear(),vs(Q),Z.writeFile(VA.Utils.joinPath(L,K.fileName),JSON.stringify(Q,null," "))}K.write=u;function p(L){return L.library!==void 0?L.library:L.type==="library"}K.isLibrary=p;function k(L){return L.type==="addon"}K.isAddon=k;function w(L){return L.type===void 0&&!p(L)?!0:L.type==="app"}K.isApp=w;function b(L){return L.type===void 0?!0:L.type==="app"}K.isIotApp=b;function y(L){return L.type==="analytics"}K.isAnalytics=y;async function q(L,Z,Q){Q||(Q=await c(L,Z)),os(Q),ns(Q),is(Q),as(Q)}K.validateBasicManifest=q;function N(L){let Z="Library name can only contain 'a' through 'z', '0' through '9', '_' and '-'. The Library name must start with an alphabetic or numeric character.";if(L.match(/^[a-z0-9-_]+$/)){let e0=["-","_"];if(e0.includes(L[0])||e0.includes(L[L.length-1]))return Z}else return Z;return L.length<3||L.length>20?"The library name is beyond permissible length of 20 characters.":null}K.validateLibraryName=N;function G(L,Z){if(Z)return N(L);{let Q="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(!L.match(/^([a-zA-Z0-9 _-]+)$/))return Q;if(L.length<3||L.length>40)return"The project name is beyond permissible length of 40 characters.";let f0=["-","_"," "];return f0.includes(L[0])||f0.includes(L[L.length-1])?Q:null}}K.validateProjectName=G;function M(L){return L.length<5?"The description must have at least 5 characters.":null}K.validateDescription=M;function P(L){if(!L)return"No publisher set yet";let Z="Publisher can only contain 'A' through 'Z', 'a' through 'z', '0' through '9' and '-'. The Publisher start with an alphabetic or numeric character.";if(L.match(/^[a-zA-Z0-9-]+$/)){let e0=["_"];if(e0.includes(L[0])||e0.includes(L[L.length-1]))return Z}else return Z;return null}K.validatePublisherId=P;async function g(L,Z,Q){return await y0.getPublisher(L,Z,Q)?null:`Publisher '${Z}' does not exist.`}K.validatePublisherOnline=g;let _=/^(((?!-))(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 I(L){if(L===void 0)return"Allowed backends not specified yet";if(L===null)return null;if(Array.isArray(L)||L?.includes(";")){let Z=L?.includes(";")?L.split(";"):L;for(let Q of Z)if(!Q.match(_))return`Domain "${Q}" is invalid`}else if(!L?.match(_)&&L!=="*")return'Invalid value for "allowedBackends"';return null}K.validateRegistryAllowedBackends=I;let z=/^[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 J(L){if(L===void 0)return"Allowed applications not specified yet";if(L===null)return null;if(Array.isArray(L)||L?.includes(";")){let Z=L?.includes(";")?L.split(";"):L;for(let Q of Z)if(!Q.match(z))return`Application id "${Q}" is invalid`}else if(!L?.match(z)&&L!=="*")return'Invalid value for "allowedApplications"';return null}K.validateRegistryAllowedApplications=J;async function H(L,Z,Q){let e0=Q.icon;if(!e0)throw new Error("App icon is required for publishing an application!");let f0=VA.Utils.joinPath(L,e0);if(!await Z.stat(f0))throw new Error(`Could not load icon "${e0}"`);let o0=await Z.readFile(f0),u0=(0,sn.imageDimensionsFromData)(o0);if(!u0)throw new Error("App icon could not be validated!");if(u0?.width!==u0?.height)throw new Error("App icon has to be a square!");if(u0.width>512||u0.width<75)throw new Error("App icon size should be between 75px and 512px!");if(!(0,an.isPNG)(o0))throw new Error("App icon has to be of type PNG!")}K.validateApplicationIcon=H;function R(L){let{engines:Z}=L;if(Z?.backend&&!Z.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');Fs(L),ss(L)}K.validateEngineSettings=R;async function W(L,Z,Q,e0){e0||(e0=await K.read(L,Z));let f0=K.isAddon(e0),D0=K.isAnalytics(e0);switch(Q){case t0.Part.dlo:return!!e0?.dlo?.mainFile&&!f0&&!D0;case t0.Part.blo:return!!(e0.blo?.buildCommand&&e0.blo?.workingPath);case t0.Part.pov:return!!(e0.pov?.details?.buildCommand&&e0.pov.details.workingPath);case t0.Part.dde:case t0.Part.dfiles:return!0;default:return!1}}K.isApmPartEnabled=W})(U||={});function ns(t){let{pov:e}=t;if(e&&e.details){if(!Object.hasOwn(e.details,"buildCommand"))throw new Error('Setting "pov.details.buildCommand" missing!');if(!Object.hasOwn(e.details,"workingPath"))throw new Error('Setting "pov.details.workingPath" missing!')}}function is(t){let{blo:e}=t;if(e){if(!Object.hasOwn(e,"buildCommand"))throw new Error('Setting "blo.buildCommand" missing!');if(!Object.hasOwn(e,"workingPath"))throw new Error('Setting "blo.workingPath" missing!');if(e.accessLevel&&!["restricted","global"].includes(e.accessLevel))throw new Error('Only "restricted" or "global" are allowed as value for "blo.accessLevel"!')}}function Fs(t){let{backend:e,productId:F,hwfw:i}=t.engines;if(U.isAddon(t)&&(F||i))throw new Error('For project type "addon", "engines.hwfw" or "engines.productId" is not allowed!"');if(e&&e>=nn){if(i&&F)throw new Error('Only "engines.hwfw" or "engines.productId" is allowed!"')}else if(F)throw new Error(`"engines.productId" requires "engines.backend" to be "${nn}"`)}function ss(t){if(!U.isAddon(t)&&!U.isAnalytics(t))return;let{backend:e}=t.engines,F=U.isAddon(t)?es:ts;if(!e||e<F)throw new Error(`Project type "${t.type}" requires "engines.backend" to be ">=${F}"`);if(t.dlo)throw new Error(`For project type "${t.type}", "dlo" is not supported!"`);if(t.dpid)throw new Error(`For project type "${t.type}", "dpid" is not supported!"`)}function as(t){let{maxInstancesPerSite:e}=t;if(e===void 0){if(U.isAddon(t))throw new Error('Property "maxInstancesPerSite" is required for addon projects!');return}if(!U.isAddon(t))throw new Error('Property "maxInstancesPerSite" is only allowed for addon projects!');if(!Number.isInteger(e))throw new Error('Property "maxInstancesPerSite" must be an integer!');if(e<1||e>100)throw new Error('Property "maxInstancesPerSite" must be between 1 and 100!')}function os(t){if((t.engines?.backend||"00v000")>=Fn||U.isLibrary(t)){if(!on.default.valid(t.version))throw new Error(`From "engines.backend" version >= ${Fn} onwards "version" has to be a semantic version string!"`)}else if(!rs(t.version))throw new Error('"version" has to be a number!')}function vs(t){t.registry&&(delete t.registry.allowedBackends,delete t.registry.target)}var kx=J0(require("semver"));var fn=J0(require("node:child_process")),Dn=require("minimatch");var Es=require("tinytar-fix"),Bs=require("pako"),eA=".studio/libdeps",WA="package.json",Cs="package-lock.json",_0;(M=>{async function t(P,g=!1){let _=P.libraryDependencies||{};return g||Object.assign(_,P.libraryDevDependencies||{}),_}M.getAll=t;function e(P){return P.split("/")[1]}M.dependencyIdToName=e;function F(P,g){let _=e(g);return W0.Utils.joinPath(P,eA,_)}M.dependencyToPath=F;function i(P){return isNaN(P.split("")[0])?P.substring(1):P}M.rangeToVersion=i;function a(P,g,_){if(!kx.satisfies(g,_,{includePrerelease:!0}))throw new Error(`${P}, version ${g} does not satisfy required constraint ${_}`)}M.satisfiesSemverRange=a;async function E(P,g,_={},I=!1){let z=await U.read(P,g),J=z.libraryDependencies||{};I&&Object.assign(J,z.libraryDevDependencies);let H=Object.keys(_);for(let R of H)if(Object.hasOwn(J,R)){let W=_[R],K=J[R],L=i(W),Z=i(K),Q=kx.compare(L,Z);Q===1?(J[R]=W,a(R,L,K)):Q===-1&&(J[R]=K,a(R,Z,W))}else J[R]=_[R];return J}M.validateDependencyTree=E;async function o(P,g,_,I,z){let J=i(z),H=W0.Utils.joinPath(P,eA,I);try{let R=await U.read(H,g);return kx.gte(R.version,J)&&R.publisher.toLowerCase()===_.toLowerCase()}catch{return!1}}M.isDependencyInstalled=o;async function C(P,g,_,I){let z=W0.Utils.joinPath(P,eA,I);await g.rm(z).catch(J=>{_.error("removeExisting",J)})}M.removeExisting=C;async function c(P,g,_,I,z){let J=Es.untar(Bs.ungzip(z));await C(P,g,_,I);for(let H of J.values())try{let R=W0.Utils.joinPath(P,eA,I,H.name);await g.writeFile(R,H.data)}catch(R){_.error("Extracting lib",R)}}M.extractLibraryContent=c;async function j(P,g,_,I,z,J,H,R=!1){let[W,K]=J.split("/");if(H&&await o(P,g,W,K,H))return;await C(P,g,_,K);let L=await y0.getLibraryProfile(z,W,K,I),Z=H?L.versions?.find(xx=>kx.eq(xx.name,M.rangeToVersion(H))):L.versions[0];if(!Z)throw new Error(`Library ${J} with version ${H} does not exist!`);let Q=Z.files.find(xx=>xx.name==="studio.json"),f0=(await fs(z,Q.downloadUrl)).libraryDependencies||{},D0={...f0};D0[J]=`^${Z.name}`,await E(P,g,D0,R);for(let[xx,Lx]of Object.entries(f0))await j(P,g,_,I,z,xx,Lx,R);let o0=Z.files.find(xx=>xx.name==="library.tar.gz");if(!o0)throw new Error(`Library ${J} has no content!`);let u0=await y0.fetchCustomContent(z,o0.downloadUrl);await c(P,g,_,K,u0),await N(P,g,_,K,R);let M0=await U.read(P,g),Q0=M0.libraryDependencies||{},Nx=M0.libraryDevDependencies||{},zx=R?Nx:Q0;zx[J]=`^${Z.name}`,M0.libraryDependencies=Q0,M0.libraryDevDependencies=Nx,await U.write(P,g,M0)}M.installDependency=j;async function u(P,g,_,I,z){let J=await U.read(P,g),H=J.libraryDependencies||{},R=J.libraryDevDependencies||{},W=Object.assign(H,R);for(let[K,L]of Object.entries(W)){let Z=Object.hasOwn(R,K);await j(P,g,_,I,z,K,L,Z)}for(let[K]of Object.entries(W)){let L=e(K),Z=Object.hasOwn(R,K);await N(P,g,_,L,Z)}_.done(`Installed ${Object.entries(W).length} dependencies`)}M.installDependencies=u;async function p(P,g,_,I,z){let J=await U.read(P,g),H=J.libraryDependencies||{},R=J.libraryDevDependencies||{},W=Object.assign(H,R),K=`${I}/${z}`;delete W[K];let L=await Ds(P,g,W);if(!Object.hasOwn(L,K))await G(P,g,_,z),await C(P,g,_,z),delete R[K],delete H[K],await U.write(P,g,J);else throw new Error(`Library '${z}' not removed. This library is a dependency of other libraries.`)}M.uninstallDependency=p;async function k(P,g){try{let I=(await ln(W0.Utils.joinPath(P,WA),g)).workspaces;if(Array.isArray(I)&&I.every(J=>typeof J=="string")&&I.length>0)return I;let z=I?.packages;return Array.isArray(z)&&z.every(J=>typeof J=="string")&&z.length>0?z:null}catch{return null}}M.readNpmWorkspacePatterns=k;function w(P,g){let _=z=>z.replace(/\\/g,"/").replace(/^\.\//,"").replace(/\/$/,""),I=_(P);return g.some(z=>{let J=_(z);return J===I||(0,Dn.minimatch)(I,J)})}M.isPathInWorkspaces=w;function b(P,g){if(!g)return{rootInstall:!1,partInstalls:P.map(z=>z.workingPath)};let _=[],I=!1;for(let z of P)w(z.workingPath,g)?I=!0:_.push(z.workingPath);return{rootInstall:I,partInstalls:_}}M.planNpmInstalls=b;async function y(P,g,_){let I=await U.read(P,g),z=[];I.pov?.details?.workingPath&&z.push({name:"pov",workingPath:I.pov.details.workingPath}),I.blo?.workingPath&&z.push({name:"blo",workingPath:I.blo.workingPath});let J=[];for(let K of z){let L=W0.Utils.joinPath(P,K.workingPath),Z=W0.Utils.joinPath(L,WA);await g.stat(Z)&&J.push(K)}if(J.length===0)return;let H=await k(P,g),{rootInstall:R,partInstalls:W}=b(J,H);if(R){let K=J.filter(L=>!W.includes(L.workingPath)).map(L=>L.workingPath).join(", ");_.info(`npm workspaces detected in root package.json - installing dependencies once at the project root (${K})`),await Cn(P,g,_)}for(let K of J){if(!W.includes(K.workingPath))continue;H?_.warn(`${K.workingPath} (${K.name}) is not covered by any workspace pattern in the root package.json - installing it separately.`):_.info(`Installing npm dependencies for ${K.name} (${K.workingPath})...`);let L=W0.Utils.joinPath(P,K.workingPath);await Cn(L,g,_)}}M.installNpmInApmParts=y;async function q(P,g,_){let I=await U.read(P,g),z=await t(I),J=[],H=X.filePaths[_].path,R=_===t0.Part.dlo?"inc":"dfiles";for(let W in z){let K=M.dependencyToPath(P,W),L=M.dependencyIdToName(W),Z=W0.Utils.joinPath(K,H,`${L}.${R}`);await g.stat(Z)&&J.push({name:L,path:Z})}if(U.isLibrary(I)){let W=W0.Utils.joinPath(P,H,`${I.name}.${R}`);await g.stat(W)&&J.push({name:I.name,path:W})}return J}M.getApmPartDependencies=q;async function N(P,g,_,I,z){let J=await U.read(P,g),H=[{partName:"blo",partDistPath:"blo",workingPath:J.blo?.workingPath},{partName:"pov",partDistPath:"pov/details",workingPath:J.pov?.details?.workingPath}];for(let{partName:R,partDistPath:W,workingPath:K}of H){if(!K)continue;let L=W0.Utils.joinPath(P,eA,I,"dist",...W.split("/"),WA);if(await g.stat(L))try{let Q=await En(P,g,K),e0=z?"devDependencies":"dependencies";Q[e0]=Q[e0]||{};let f0=K.split("/").length,D0=Array(f0).fill("..").join("/");Q[e0][I]=`file:${D0}/${eA}/${I}/dist/${W}`,await Bn(P,g,K,Q),_.info(`Linked ${I} to ${R} (${K})`)}catch(Q){_.warn(`Could not link ${I} to ${R}: ${Q}`)}}}M.linkLibraryApmParts=N;async function G(P,g,_,I){let z=await U.read(P,g),J=[{partName:"blo",workingPath:z.blo?.workingPath},{partName:"pov",workingPath:z.pov?.details?.workingPath}];for(let{partName:H,workingPath:R}of J)if(R)try{let W=await En(P,g,R),K=!1;W.dependencies?.[I]?.startsWith("file:")&&(delete W.dependencies[I],K=!0),W.devDependencies?.[I]?.startsWith("file:")&&(delete W.devDependencies[I],K=!0),K&&(await Bn(P,g,R,W),_.info(`Unlinked ${I} from ${H}`))}catch(W){_.warn(`Could not unlink ${I} from ${H}: ${W}`)}}M.unlinkLibraryApmParts=G})(_0||={});async function ln(t,e){let F=await e.readFile(t);return JSON.parse(i0.convertBlobToString(F))}function En(t,e,F){return ln(W0.Utils.joinPath(t,F,WA),e)}async function Bn(t,e,F,i){let a=W0.Utils.joinPath(t,F,WA),E=JSON.stringify(i,null," ")+`
1662
+ `;await e.writeFile(a,E)}async function fs(t,e){return await y0.fetchCustomContent(t,e,!0)}async function Ds(t,e,F){let i={};function a(j,u,p,k=!1){let w=i[j],b=_0.rangeToVersion(p),y=_0.rangeToVersion(p);(!w||kx.gt(b,y))&&(i[j]={publisherId:u,version:p,installed:k})}let E=Object.entries(F).map(([j,u])=>{let[p,k]=j.split("/");return a(k,p,u,!0),k}),o={};for(let j of E)try{let u=await ls(t,e,j);o[j]=Object.entries(u).map(([p,k])=>{let[w,b]=p.split("/");return a(b,w,k),b}),E.push(...o[j])}catch{let p=i[j];throw new Error(`Please import "${p.publisherId}/${j}" first.`)}let C=[];for(;;){let j=E.filter(u=>C.includes(u)?!1:(o[u]||[]).every(k=>C.includes(k)));if(C.push(...j),E.length===C.length||!j.length)break}let c={};return[...new Set(C)].forEach(j=>{let{version:u,publisherId:p}=i[j],k=cs(p,j,u);c[k.libraryId]=k.libraryVersion}),c}async function ls(t,e,F){let i=W0.Utils.joinPath(t,eA,F);return(await U.read(i,e))?.libraryDependencies||{}}function cs(t,e,F){return{libraryName:e,publisherId:t,libraryVersion:F[0]==="^"?F:"^"+F,libraryId:`${t}/${e}`}}var ds=/EUSAGE|not in sync|can only install packages when your package\.json and package-lock\.json/i;function ye(t,e,F){return new Promise((i,a)=>{fn.exec(e,{cwd:t.fsPath,env:process.env},(E,o,C)=>{if(o&&F.log(o),C&&F.error(C),E){a(new Error(`${E.message}
1663
+ ${o}
1664
+ ${C}`));return}i()})})}async function Cn(t,e,F){let i=W0.Utils.joinPath(t,Cs);if(!await e.stat(i)){F.warn(`No package-lock.json found in ${t.fsPath} - running 'npm install' instead of 'npm ci'.`),await ye(t,"npm install",F);return}try{await ye(t,"npm ci",F)}catch(E){let o=E instanceof Error?E.message:String(E);if(!ds.test(o))throw E;F.warn(`package-lock.json is out of sync with package.json in ${t.fsPath} - falling back to 'npm install'.`),await ye(t,"npm install",F)}}var cn=J0(require("dotenv")),dn=require("vscode-uri");var js=".env.local",we;(e=>{async function t(F,i){let a=dn.Utils.joinPath(F,js);if(await i.stat(a)){let E=await i.readFile(a);return cn.default.parse(i0.convertBlobToString(E))}return{}}e.read=t})(we||={});var XA=J0(require("chalk")),_e;(i=>{let t;(j=>(j[j.log=0]="log",j[j.done=1]="done",j[j.info=2]="info",j[j.warning=3]="warning",j[j.error=4]="error"))(t=i.LogMessageType||={}),i.LOG_PREFIX={1:XA.default.bgGreen.black(" DONE "),0:"",2:XA.default.bgBlueBright.black(" INFO "),3:XA.default.bgYellow.black(" WARNING "),4:XA.default.bgRed.black(" ERROR ")};class F{_logHandler;_silent=!1;constructor(E=console){this._logHandler=E}_log(E,o,...C){this._silent&&E!==4||(C=[i.LOG_PREFIX[E],o,...C],this._logHandler.log(...C))}set silent(E){this._silent=E}log(E,...o){this._log(0,E,...o)}debug(E,...o){this._log(0,E,...o)}error(E,...o){this._log(4,E,...o)}info(E,...o){this._log(2,E,...o)}warn(E,...o){this._log(3,E,...o)}done(E,...o){this._log(1,E,...o)}}i.Logger=F})(_e||={});var jn=require("uuid"),ps="b4baec47-0ba4-4e37-b237-8f9cde42b8dd",$e=(a=>(a.Get="GET",a.Post="POST",a.Put="PUT",a.Delete="DELETE",a))($e||{});var pr=class{domain;auth;logger;userInfo=null;constructor(e,F,i){if(typeof e=="object"){let{serverUrl:a,apiToken:E,authHeader:o,logger:C}=e;this.domain=this.normalizeServerUrl(a),this.auth=o||(E?`Bearer ${E}`:""),this.logger=C}else this.domain=this.normalizeServerUrl(e),typeof F=="string"?(this.auth=`Bearer ${F}`,this.logger=i):(this.auth="",this.logger=F)}setAuth(e){this.auth=e}getDomain(){return this.domain}normalizeServerUrl(e){return!e.startsWith("http://")&&!e.startsWith("https://")?`https://${e}`:e}trimDomain(e){return e.replace(/(^\w+:|^)\/\//,"")}async fetchJSON(e,F,i){let a=`${this.domain}${F}`,E={Authorization:this.auth},o={method:e,headers:E};i&&(i instanceof FormData?o.body=i:(E["Content-Type"]="application/json",o.body=JSON.stringify(i)));let C=await fetch(a,o);if(!C.ok){let c=await C.text().catch(()=>"Unknown error");throw new Error(`HTTP ${C.status}: ${c}`)}return C.json()}async authenticate(){this.logger?.info(`Authenticating with ${this.trimDomain(this.domain)}...`);try{let{user:e,customers:F}=await this.fetchJSON("GET","/api/1/me");return this.userInfo={name:e.name,email:e.email,group:e.group,customers:F},this.logger?.info(`Authenticated as ${this.userInfo.name}`),this.userInfo}catch(e){throw new Error(`Authentication failed: ${e instanceof Error?e.message:String(e)}`)}}getUserInfo(){return this.userInfo}async uploadDevTag(e,F){this.logger?.info(`Uploading development tag ${e}...`);let{applid:i}=await this.fetchJSON("POST",`/api/1/app-center/__dev/${e}`,F);return this.logger?.info(`Development tag uploaded, application ID: ${i}`),i}async getCustomer(e){let{_uid:F,name:i}=await this.fetchJSON("GET",`/api/1/customers/${e}`);return{_uid:F,name:i}}async getCustomers(){return this.fetchJSON("GET","/api/1/customers")}async getDeviceSite(e){try{return await this.fetchJSON("GET",`/api/1/devices/${e}/site`)}catch{return null}}async getDevice(e){try{return await this.fetchJSON("GET",`/api/1/devices/${e}`)}catch{return null}}async getSite(e,F){try{return await this.fetchJSON("GET",`/api/1/customers/${e}/sites/${F}`)}catch{return null}}async createDevelopmentSite(e,F,i){if(this.logger?.info(`Creating development site "${F.name}"...`),F.serialNumber){let E=await this.getSite(e,F.name.toLowerCase());if(E)try{return await this.fetchJSON("POST",`/api/1/customers/${e}/sites/${E._uid}/cn-attach-device`,{device_id:F.serialNumber,allow_overwrite:!0,detach_from_old_site:!0,acquire:!0,create:!0}),this.logger?.info(`Device attached to existing site ${E._uid}`),E._uid}catch(o){if(o.message&&!o.message.includes("304"))this.logger?.warn(`Could not attach device to existing site: ${o.message}`);else return E._uid}}let{_uid:a}=await this.fetchJSON("POST",`/api/1/customers/${e}/sites`,{name:F.name,create:!0,force:!0,note:"This is a Studio development site",applid:F.applicationId,device_id:F.serialNumber,reg_code:i,servicetariff:"0000000000000000",servicetariff_indiv_cost:0});return this.logger?.info(`Development site created: ${a}`),a}async updateSiteName(e,F){try{await this.fetchJSON("PUT",`/api/1/sites/${e}`,{name:F})}catch{}}};function qe(t){return(0,jn.v5)(t,ps)}async function pn(t,e,F,i,a,E,o){let C=await U.read(t,e),c=a.replaceAll(" ","_").replace(/[^a-zA-Z0-9-]+/g,""),j=C.name.replaceAll(" ","_").replace(/[^a-zA-Z0-9-]+/g,""),u=await U.isApmPartEnabled(t,e,t0.Part.dlo,C),p=u&&i,k=p?i.toUpperCase():`${j}_${c}`,w=p?i:k,b=o||k;return b.length>50&&(F.warn(`Site name "${b}" is too long. Truncating to 50 characters.`),b=b.substring(0,50)),{apmId:qe(w),applicationId:null,name:b,version:1,serialNumber:u?i:void 0,siteUid:null,customerUid:E}}async function us(t,e,F,i,a,E,o=!1){if(E.length>0)for(let C of E){let[c,j]=C.split("@");await _0.installDependency(t,e,F,i,a,c,j||null,o)}else await _0.installDependencies(t,e,F,i,a);await _0.installNpmInApmParts(t,e,F)}async function bs(t,e,F,i,a=null,E=!0,o){return await U.validateBasicManifest(t,e,null),V0.buildAll(t,e,F,i,a,E,o)}async function ms(t){let e=null;if(t){e=t==="*"?t:t.split(";");let F=await U.validateRegistryAllowedBackends(e);if(F)throw new Error(F)}return e}async function hs(t,e,F,i,a,E,o,C){F.info("Publishing package...");let c=await ms(E);if(C)await V0.publishArchive(t,e,F,a,i,C,o,c);else return await V0.validatePublishSettings(t,e,a,i),V0.release(t,e,F,i,a,o,c)}async function gs(t,e,F,i,a,E){return V0.pack(t,e,F,i,a,E)}0&&(module.exports={APM,DDE,DDE_Core,DFILES,DLO,DefaultFiles,Dependencies,DeviceProfiles,Diagnostics,ENV,Globals,Helper,HttpMethod,Library,Log,Manifest,MyDatanetClient,Package,Registry,build,buildDevelopmentInstallInfo,generateDevApmId,install,pack,publish});