polyscript
Advanced tools
Comparing version
@@ -8,3 +8,3 @@ /* c8 ignore start */ | ||
const { Worker } = coincident({ encoder, transfer: false }); | ||
export default (...args) => new Worker(URL.createObjectURL(new Blob(['/*@*/'+"const{assign:e}=Object,t=\"entries\",n=\"readonly\",r=\"readwrite\",s={durability:\"default\",prefix:\"IDBMap\"},o=({target:{result:e}})=>e;class a extends EventTarget{#e;#t;#n;async#r(n,r){const s=(await this.#e).transaction(t,r,this.#t);return new Promise(((r,o)=>e(n(s.objectStore(t)),{onsuccess:r,onerror:o})))}constructor(n,{durability:r=s.durability,prefix:a=s.prefix}=s){super(),this.#n=a,this.#t={durability:r},this.#e=new Promise(((r,s)=>{e(indexedDB.open(`${this.#n}/${n}`),{onupgradeneeded({target:{result:e,transaction:n}}){e.objectStoreNames.length||e.createObjectStore(t),n.oncomplete=()=>r(e)},onsuccess(e){r(o(e))},onerror(e){s(e),this.dispatchEvent(e)}})})).then((e=>{const t=this.dispatchEvent.bind(this);for(const n in e)n.startsWith(\"on\")&&(e[n]=t);return e}))}dispatchEvent(t){const{type:n,message:r,isTrusted:s}=t;return super.dispatchEvent(s?e(new Event(n),{message:r}):t)}async close(){(await this.#e).close()}get size(){return this.#r((e=>e.count()),n).then(o)}async clear(){await this.#r((e=>e.clear()),r)}async delete(e){await this.#r((t=>t.delete(e)),r)}async entries(){const e=await this.keys();return Promise.all(e.map((e=>this.get(e).then((t=>[e,t])))))}async forEach(e,t=this){for(const[n,r]of await this.entries())await e.call(t,r,n,this)}async get(e){return await this.#r((t=>t.get(e)),n).then(o)}async has(e){return void 0!==await this.#r((t=>t.getKey(e)),n).then(o)}async keys(){return await this.#r((e=>e.getAllKeys()),n).then(o)}async set(e,t){return await this.#r((n=>n.put(t,e)),r),this}async values(){const e=await this.keys();return Promise.all(e.map((e=>this.get(e))))}get[Symbol.toStringTag](){return this.#n}}class i extends Map{#s;#o;constructor(...e){super(),this.#s=new a(...e),this.#o=this.#s.entries().then((e=>{for(const[t,n]of e)super.set(t,n)}))}async close(){await this.#o,await this.#s.close()}async sync(){await this.#o}clear(){return this.#o=this.#o.then((()=>this.#s.clear())),super.clear()}delete(e){return this.#o=this.#o.then((()=>this.#s.delete(e))),super.delete(e)}set(e,t){return this.#o=this.#o.then((()=>this.#s.set(e,t))),super.set(e,t)}}let c=\"coincident-\";try{new SharedArrayBuffer(4,{maxByteLength:8}),c+=crypto.randomUUID()}catch(kn){c+=Math.random().toString(36).substring(2)}const{fromCharCode:l}=String,{min:u}=Math;const{defineProperty:p}=Object,d=e=>{switch(e[y++]){case 1:{const t=e[y++],n=[];e[y-2]=n;for(let r=0;r<t;r++)n[r]=d(e);return n}case 2:{const t=e[y++],n={};e[y-2]=n;for(let r=0;r<t;r++)n[d(e)]=d(e);return n}case 4:{const t=e[y++];return e[y-2]=t,t}case 0:return e[e[y++]];case 3:return e[y++];case 12:return BigInt(e[y++]);case 5:return!0;case 6:return!1;case 7:return null;case 13:return;case 8:{const t=e[y++],n=e[y++],r=[t];n&&r.push({maxByteLength:n});const s=new ArrayBuffer(...r);e[y-3]=s;const o=new Uint8Array(s,0,t);for(let n=0;n<t;n++)o[n]=e[y++];return s}case 9:{const t=e[y++],n=e[y++],r=e[y++],s=y-4,o=[d(e),n];r&&o.push(r);const a=new globalThis[t](...o);return e[s]=a,a}case 10:return(t=e[y++]).startsWith(\"Symbol.\")?Symbol[t.slice(t.indexOf(\".\")+1)]:Symbol.for(t);case 11:{const t=new Date(e[y++]);return e[y-2]=t,t}case 14:{const t=e[y++],n=new Map;e[y-2]=n;for(let r=0;r<t;r++){const t=d(e),r=d(e);void 0!==t&&n.set(t,r)}return n}case 15:{const t=e[y++],n=new Set;e[y-2]=n;for(let r=0;r<t;r++){const t=d(e);void 0!==t&&n.add(t)}return n}case 16:{const t=e[y++],n=e[y++],r=new RegExp(t,n);return e[y-3]=r,r}case 17:{const t=globalThis[e[y++]]||Error,n=e[y++],r=e[y++],s=new t(n,{cause:e[y++]});return e[y-5]=p(s,\"stack\",{value:r}),s}default:throw new TypeError(`Unknown type: ${e[y-1]}`)}var t},{parse:f}=JSON;let y=0;const h=(e=>({byteOffset:t=0}={})=>(n,r)=>{const s=new Uint16Array(r,t,n);let o=\"\",a=0;for(;a<n;){const e=u(a+32767,n);o+=l.apply(null,s.subarray(a,e)),a=e}return e(o)})((e=>(e=>(y=0,e.length?d(e):void 0))(f(e)))),m=\"59a4de78\",w=\"=\"+m,g=\"-\"+m,{create:b}=Object;let _=\"coincident-\",A=!0;try{new SharedArrayBuffer(4,{maxByteLength:8}),_+=crypto.randomUUID()}catch(e){A=!1,_+=Math.random().toString(36).substring(2)}const E=2*Int32Array.BYTES_PER_ELEMENT,v={byteOffset:E,useUTF16:!0,circular:!0},S=(e,t,n)=>{const r=\"then\"!==t;return r&&(e[t]=n),r},{fromCharCode:k}=String,{min:x}=Math;var B=e=>({byteOffset:t=0}={})=>(n,r)=>{const s=new Uint16Array(r,t,n);let o=\"\",a=0;for(;a<n;){const e=x(a+32767,n);o+=k.apply(null,s.subarray(a,e)),a=e}return e(o)};const{parse:j}=JSON,P=B(j),$=\"array\",T=\"bigint\",F=\"boolean\",O=\"function\",R=\"null\",M=\"number\",D=\"object\",L=\"string\",C=\"symbol\",I=\"undefined\";var N={[$]:0,[T]:1,[F]:2,[O]:3,[R]:4,[M]:5,[D]:6,[L]:7,[C]:8,[I]:9,view:10};const{parse:U}=JSON,H=B((e=>{const t=U(e);switch(t[0]){case N.view:{const[e,n]=t[1],r=new Uint8Array(n);t[1]=new globalThis[e](r.buffer);break}case N[I]:t[1]=void 0;break;case N[T]:t[1]=BigInt(t[1])}return t}));var W=Promise.withResolvers.bind(Promise);const J=[],q=new WeakSet,z=(...e)=>(q.add(e),e),K=Promise.withResolvers();addEventListener(\"message\",(e=>{(e=>{e.stopImmediatePropagation(),e.preventDefault()})(e),K.resolve([e.data,e.ports[0]])}),{once:!0});var G=async e=>{const[t,n]=await K.promise,r=A&&!!t,s=e?.transform,o=(e?.decoder||P)(v),a=!1!==e?.transfer;let i,c,l;if(A){const t=new SharedArrayBuffer(e?.minByteLength||32767,{maxByteLength:e?.maxByteLength||16777216});i=new Int32Array(t),({pause:c,wait:l}=Atomics),!c||t instanceof ArrayBuffer||(l=(e,t)=>{for(;e[t]<1;)c()})}const[u,p]=((e=e=>e)=>{const t=new Map;let n=0;return[()=>{let r;do{r=e(n++)}while(t.has(r));const s=W();return t.set(r,s),[r,s.promise]},(e,n,r)=>{const s=t.get(e);t.delete(e),r?s?.reject(r):s?.resolve(n)}]})(String),d=new Map,f=b(null),y=new Proxy(f,{get(e,c){if(\"then\"===c)return;let p=d.get(c);return p||d.set(c,p=(...e)=>{const p=((e,t)=>{let n=J;return e&&q.has(t.at(-1)||J)&&(n=t.pop(),q.delete(n)),n})(a,e),d=[i,c,s?e.map(s):e];if(A){r?postMessage({ID:t,data:d},p):n.postMessage(d,p),l(i,0),i[0]=0;const e=i[1]?o(i[1],i.buffer):void 0;if(e instanceof Error)throw e;return e}{const[e,t]=u();return d[0]=e,n.postMessage(d,p),t}}),p},set:S});return n.onmessage=async({data:e})=>{\"string\"==typeof e[0]?p.apply(null,e):(await(async(e,t,n)=>{try{const r=await t[e[1]].apply(null,e[2]);e[1]=n?n(r):r,e[2]=null}catch(t){e[2]=t}})(e,f,s),n.postMessage(e))},{native:A,proxy:y,transfer:z}};const Y=\"apply\",V=\"construct\",X=\"defineProperty\",Z=\"deleteProperty\",Q=\"get\",ee=\"getOwnPropertyDescriptor\",te=\"getPrototypeOf\",ne=\"has\",re=\"isExtensible\",se=\"ownKeys\",oe=\"preventExtensions\",ae=\"set\",ie=\"setPrototypeOf\";var ce=Object.freeze({__proto__:null,APPLY:Y,CONSTRUCT:V,DEFINE_PROPERTY:X,DELETE_PROPERTY:Z,GET:Q,GET_OWN_PROPERTY_DESCRIPTOR:ee,GET_PROTOTYPE_OF:te,HAS:ne,IS_EXTENSIBLE:re,OWN_KEYS:se,PREVENT_EXTENSION:oe,SET:ae,SET_PROTOTYPE_OF:ie});const le=\"destruct\";function ue(){return this}const pe=new FinalizationRegistry((([e,t,n])=>{n&&console.debug(`%c${String(t)}`,\"font-weight:bold\",\"collected\"),e(t)})),de=Object.create(null),fe=(e,t,{debug:n,handler:r,return:s,token:o=e}=de)=>{const a=s||new Proxy(e,r||de),i=[a,[t,e,!!n]];return!1!==o&&i.push(o),pe.register(...i),a},{Object:ye,Proxy:he,Reflect:me}=globalThis,{isArray:we}=Array,{ownKeys:ge}=me,{create:be,hasOwn:_e,values:Ae}=ye,Ee=(e,t)=>t===$?e[0]:t===O?e():t===D?e.$:e,ve=(e,t,n,r)=>{const s={type:{value:t}},o=_e(e,\"valueOf\");for(const a of Ae(ce)){let i=r(e[a]||me[a]);if(o&&a===Q){const{valueOf:r}=e,{value:s}=i;i={value(e,o,...a){return o===n?r.call(this,Ee(e,t)):s.call(this,e,o,...a)}}}s[a]=i}return be(e,s)},Se=(e,t,n,r=e)=>{if(r===e)switch(typeof e){case D:case I:r||(r=!1);case O:break;default:r=!1,t===e&&(t=ye(e))}const s=new he(t,n),{destruct:o}=n;return o?fe(e,o,{token:r,return:s}):s},ke=e=>t=>{const n=typeof t;return n===D?t?e.get(t)?.[0]??(e=>we(e)?$:D)(t):R:n},xe=e=>t=>{let n=typeof t;switch(n){case D:if(!t){n=R;break}case O:const r=e.get(t);r&&([n,t]=r)}return[n,t]},Be=e=>((e=>{pe.unregister(e)})(e),e);var je=e=>{const t=new WeakMap,n=Symbol(),r={},s=(e,n,r)=>(t.set(e,[n,r]),e),o={proxy:r,release:Be,pair:xe(t),typeOf:ke(t),isProxy:e=>t.has(e),valueOf:e=>e[n]??e.valueOf()};for(const t of ge(e)){if(_e(o,t))continue;const a=e[t];switch(t){case $:{const e=ve(a,t,n,(e=>({value([t],...n){return e.call(this,t,...n)}})));r[t]=(t,...n)=>s(Se(t,[t],e,...n),$,t);break}case O:{const e=ve(a,t,n,(e=>({value(t,...n){return e.call(this,t(),...n)}})));r[t]=(t,...n)=>{return s(Se(t,(r=t,ue.bind(r)),e,...n),O,t);var r};break}case D:{const e=ve(a,t,n,(e=>({value({$:t},...n){return e.call(this,t,...n)}})));r[t]=(t,...n)=>s(Se(t,{$:t},e,...n),D,t);break}default:{const e=ve(a,t,n,(e=>({value:e})));r[t]=(n,...r)=>s(Se(n,n,e,...r),t,n);break}}}return o};const{drop:Pe,get:$e,hold:Te}=(()=>{const e=new Map,t=new Map;let n=0;return{clear:()=>{e.clear(),t.clear()},drop:n=>{const[r,s]=typeof n===M?[t,e]:[e,t],o=r.has(n);return o&&(s.delete(r.get(n)),r.delete(n)),o},get:e=>t.get(e),hold:r=>{if(!e.has(r)){let s;for(;t.has(s=n++););e.set(r,s),t.set(s,r)}return e.get(r)}}})(),Fe=new Map;for(const e of Reflect.ownKeys(Symbol))typeof Symbol[e]===C&&(Fe.set(Symbol[e],e),Fe.set(e,Symbol[e]));const Oe=e=>Fe.get(e)||`.${Symbol.keyFor(e)||\"\"}`,{isArray:Re}=Array,{isView:Me}=ArrayBuffer,{[Y]:De}=Reflect;var Le=(e,t)=>{const n=new Map,r=(e,t)=>{let r=n.get(e)?.deref();return r||n.set(e,new WeakRef(r=t(e))),r},s=([e,t])=>{switch(e){case N[D]:return null==t?globalThis:typeof t===M?r(t,l.object):t;case N[$]:return typeof t===M?r(t,l.array):t;case N[O]:return typeof t===M?r(t,l.function):$e(parseInt(t));case N[C]:return(e=>Fe.get(e)||Symbol.for(e.slice(1)))(t);default:return t}},o=e=>{let[n,r]=p(e);switch(n){case D:if(r==globalThis||null==r)r=null;else if(typeof r===D){if(r=t(r),Re(r))return[N[$],r.map(o)];if(Me(r))return[N.view,r];{const e={};for(const t in r)e[t]=o(r[t]);r=e}}return[N[D],r];case $:return[N[$],typeof r===M?r:t(r).map(o)];case O:return[N[O],typeof r===O?String(Te(t(r))):r];case C:return[N[C],Oe(e)];default:return[N[n],r]}},a=(...t)=>s(e(...t)),i={[X]:(e,t,n)=>a(X,e,o(t),o(n)),[Z]:(e,t)=>a(Z,e,o(t)),[Q]:(e,t)=>a(Q,e,o(t)),[te]:e=>a(te,e),[ee]:(e,t)=>{const n=a(ee,e,o(t));if(n){const{get:e,set:t,value:r}=n;e&&(n.get=s(e)),t&&(n.set=s(t)),r&&(n.value=s(r))}return n},[ne]:(e,t)=>a(ne,e,o(t)),[re]:e=>a(re,e),[se]:e=>a(se,e).map(s),[oe]:e=>a(oe,e),[ae]:(e,t,n)=>a(ae,e,o(t),o(n)),[ie]:(e,t)=>a(ie,e,o(t)),[le](t){n.delete(t),e(le,t)}},c={[D]:i,[$]:i,[O]:{...i,[Y]:(e,...t)=>a(Y,e,...t.map(o)),[V]:(e,...t)=>a(V,e,...t.map(o))}},{proxy:l,isProxy:u,pair:p}=je(c);return{isProxy:u,global:l.object(null),method:async(e,t,...n)=>{const r=parseInt(t);switch(e){case Y:{const[e,t]=n;return o(await De($e(r),s(e),t.map(s)))}case le:Pe(r)}}}};const Ce={object(...e){return this.string(function(e){for(var t=e[0],n=1,r=arguments.length;n<r;n++)t+=arguments[n]+e[n];return t}(...e))},string(e){for(const t of e.split(/[\\r\\n]+/))if(t.trim().length){/^(\\s+)/.test(t)&&(e=e.replace(new RegExp(\"^\"+RegExp.$1,\"gm\"),\"\"));break}return e}},Ie=new WeakMap,Ne=e=>{const t=e||console,n={buffered:He,stderr:(t.stderr||console.error).bind(t),stdout:(t.stdout||console.log).bind(t)};return{stderr:(...e)=>n.stderr(...e),stdout:(...e)=>n.stdout(...e),async get(e){const t=await e;return Ie.set(t,n),t}}},Ue=new TextDecoder,He=(e,t=10)=>{const n=[];return r=>{if(r instanceof Uint8Array)for(const s of r)s===t?e(Ue.decode(new Uint8Array(n.splice(0)))):n.push(s);else e(r)}},We=(e,...t)=>Ce[typeof e](e,...t),{isArray:Je}=Array,{assign:qe,create:ze,defineProperty:Ke,entries:Ge}=Object,{all:Ye,resolve:Ve}=new Proxy(Promise,{get:(e,t)=>e[t].bind(e)}),Xe=(e,t=location.href)=>new URL(e,t.replace(/^blob:/,\"\")).href;function Ze(e){return e.startsWith(\".\")?Xe(e,this):e}const Qe=(e,t,n,r=!1,s=CustomEvent)=>{e.dispatchEvent(new s(`${t}:${n}`,{bubbles:!0,detail:{worker:r}}))},et=e=>Function(`'use strict';return (${e})`)(),tt=e=>e.replace(/^(?:\\n|\\r\\n)/,\"\"),nt=Symbol.for(\"polyscript.js_modules\"),rt=new Map;Ke(globalThis,nt,{value:rt}),new Proxy(rt,{get:(e,t)=>e.get(t),has:(e,t)=>e.has(t),ownKeys:e=>[...e.keys()]});const st=(e,t)=>!t.startsWith(\"_\"),ot=(e,t)=>new Proxy(e,{has:st,get:(e,n)=>e[t][n]}),at=(e,t)=>import(e).then((e=>{rt.set(t,{...e})})),it=e=>new Promise(((t,n)=>{document.querySelector(`link[rel=\"stylesheet\"][href=\"${e}\"]`)?t():document.head.append(qe(document.createElement(\"link\"),{rel:\"stylesheet\",href:e,onload:t,onerror:n}))})),ct=e=>/\\.css$/i.test(new URL(e).pathname),lt=(e,t)=>e.has(t),ut=e=>[...e.keys()];var pt=(e,t,n,r)=>{const s=globalThis[nt];if(n)for(let[e,t]of Ge(n)){let n=s.get(t);n&&!Je(n)||(s.set(t,n||(n=[])),n.push(e))}return((e,t,n,r)=>new Proxy(e,{has:lt,ownKeys:ut,get:(e,s)=>{let o=e.get(s);if(Je(o)){let a=o;o=null;for(let e of a)e=Xe(e,r),ct(e)?n.importCSS(e):(n.importJS(e,s),o=t[nt].get(s));e.set(s,o)}return o}}))(s,e,t,r)};const dt=new Map,ft=e=>dt.get(e),yt=(e,t)=>{try{return Function(\"require\",t)(ft)}catch(t){Ie.get(e).stderr(t)}};var ht={type:\"dummy\",module:()=>\"data:text/javascript,\",engine:e=>Ne().get(e),registerJSModule(e,t,n){dt.set(t,n)},run:yt,runAsync:yt,runEvent:async(e,t,n)=>{try{await Function(\"require\",\"e\",`return ${t}(e)`)(ft,n)}catch(t){Ie.get(e).stderr(t)}},transform:(e,t)=>t,writeFile(){}};const mt=Object.getOwnPropertyDescriptors(Response.prototype),wt=e=>\"function\"==typeof e,gt={get:(e,t)=>mt.hasOwnProperty(t)?((e,t,{get:n,value:r})=>n||!wt(r)?e.then((e=>e[t])):(...n)=>e.then((e=>e[t](...n))))(e,t,mt[t]):((e,t)=>wt(t)?t.bind(e):t)(e,e[t])};var bt=(e,...t)=>new Proxy(fetch(e,...t),gt);const _t=!globalThis.window,At=({FS:e,PATH:t,PATH_FS:n},r,s)=>{const o=n.resolve(r),a=t.dirname(o);return e.mkdirTree?e.mkdirTree(a):vt(e,a),e.writeFile(o,new Uint8Array(s),{canOwn:!0})},Et=e=>{const t=e.split(\"/\");return t.pop(),t.join(\"/\")},vt=(e,t)=>{const n=[];for(const r of t.split(\"/\"))\".\"!==r&&\"..\"!==r&&(n.push(r),r&&e.mkdir(n.join(\"/\")))},St=(e,t)=>{const n=[];for(const e of t.split(\"/\"))switch(e){case\"\":case\".\":break;case\"..\":n.pop();break;default:n.push(e)}return[e.cwd()].concat(n).join(\"/\").replace(/^\\/+/,\"/\")},kt=e=>{const t=e.map((e=>e.trim().replace(/(^[/]*|[/]*$)/g,\"\"))).filter((e=>\"\"!==e&&\".\"!==e)).join(\"/\");return e[0].startsWith(\"/\")?`/${t}`:t},xt=(e,t)=>bt(Xe(e,t)).arrayBuffer(),Bt=(e,t,n,r)=>Ye((e=>{for(const{files:t,to_file:n,from:r=\"\"}of e){if(void 0!==t&&void 0!==n)throw new Error(\"Cannot use 'to_file' and 'files' parameters together!\");if(void 0===t&&void 0===n&&r.endsWith(\"/\"))throw new Error(`Couldn't determine the filename from the path ${r}, please supply 'to_file' parameter.`)}return e.flatMap((({from:e=\"\",to_folder:t=\".\",to_file:n,files:r})=>{if(Je(r))return r.map((n=>({url:kt([e,n]),path:kt([t,n])})));const s=n||e.slice(1+e.lastIndexOf(\"/\"));return[{url:e,path:kt([t,s])}]}))})(n).map((({url:n,path:s})=>xt(n,r).then((n=>e.writeFile(t,s,n)))))),jt=(e,t)=>t.endsWith(\"/\")?`${t}${e.split(\"/\").pop()}`:t,Pt=(e,t)=>e.replace(/\\{.+?\\}/g,(e=>{if(!t.has(e))throw new SyntaxError(`Invalid template: ${e}`);return t.get(e)})),$t=(e,t,n,r)=>Ye((e=>{const t=new Map,n=new Set,r=[];for(const[s,o]of Ge(e))if(/^\\{.+\\}$/.test(s)){if(t.has(s))throw new SyntaxError(`Duplicated template: ${s}`);t.set(s,Pt(o,t))}else{const e=Pt(s,t),a=jt(e,Pt(o||\"./\",t));if(n.has(a)&&!a.endsWith(\"/*\"))throw new SyntaxError(`Duplicated destination: ${a}`);n.add(a),r.push({url:e,path:a})}return r})(n).map((({url:n,path:s})=>xt(n,r).then((r=>e.writeFile(t,s,r,n)))))),Tt=({main:e,worker:t},n)=>{const r=[];if(t&&_t)for(let[e,s]of Ge(t))e=Xe(e,n),r.push(at(e,s));if(e&&!_t)for(let[t,s]of Ge(e))t=Xe(t,n),ct(t)?it(t):r.push(at(t,s));return Ye(r)},Ft=e=>t=>{dispatchEvent(new CustomEvent(`${e}:progress`,{detail:t}))},{getPrototypeOf:Ot}=Object,Rt=e=>{const t=typeof e;switch(t){case\"function\":case\"undefined\":return\"\";case\"object\":return null===e?\"null\":\"object\";default:return t}};let Mt=\"coincident-\";try{new SharedArrayBuffer(4,{maxByteLength:8}),Mt+=crypto.randomUUID()}catch(Ot){Mt+=Math.random().toString(36).substring(2)}var Dt={ref:0,array:1,object:2,number:3,string:4,true:5,false:6,null:7,buffer:8,view:9,symbol:10,date:11,bigint:12,undefined:13,map:14,set:15,regexp:16,error:17};const{defineProperty:Lt}=Object,Ct=e=>{switch(e[Nt++]){case Dt.array:{const t=e[Nt++],n=[];e[Nt-2]=n;for(let r=0;r<t;r++)n[r]=Ct(e);return n}case Dt.object:{const t=e[Nt++],n={};e[Nt-2]=n;for(let r=0;r<t;r++)n[Ct(e)]=Ct(e);return n}case Dt.string:{const t=e[Nt++];return e[Nt-2]=t,t}case Dt.ref:return e[e[Nt++]];case Dt.number:return e[Nt++];case Dt.bigint:return BigInt(e[Nt++]);case Dt.true:return!0;case Dt.false:return!1;case Dt.null:return null;case Dt.undefined:return;case Dt.buffer:{const t=e[Nt++],n=e[Nt++],r=[t];n&&r.push({maxByteLength:n});const s=new ArrayBuffer(...r);e[Nt-3]=s;const o=new Uint8Array(s,0,t);for(let n=0;n<t;n++)o[n]=e[Nt++];return s}case Dt.view:{const t=e[Nt++],n=e[Nt++],r=e[Nt++],s=Nt-4,o=[Ct(e),n];r&&o.push(r);const a=new globalThis[t](...o);return e[s]=a,a}case Dt.symbol:return(t=e[Nt++]).startsWith(\"Symbol.\")?Symbol[t.slice(t.indexOf(\".\")+1)]:Symbol.for(t);case Dt.date:{const t=new Date(e[Nt++]);return e[Nt-2]=t,t}case Dt.map:{const t=e[Nt++],n=new Map;e[Nt-2]=n;for(let r=0;r<t;r++){const t=Ct(e),r=Ct(e);void 0!==t&&n.set(t,r)}return n}case Dt.set:{const t=e[Nt++],n=new Set;e[Nt-2]=n;for(let r=0;r<t;r++){const t=Ct(e);void 0!==t&&n.add(t)}return n}case Dt.regexp:{const t=e[Nt++],n=e[Nt++],r=new RegExp(t,n);return e[Nt-3]=r,r}case Dt.error:{const t=globalThis[e[Nt++]]||Error,n=e[Nt++],r=e[Nt++],s=new t(n,{cause:e[Nt++]});return e[Nt-5]=Lt(s,\"stack\",{value:r}),s}default:throw new TypeError(`Unknown type: ${e[Nt-1]}`)}var t},{parse:It}=JSON;let Nt=0;const{isArray:Ut}=Array,{isView:Ht}=ArrayBuffer,{stringify:Wt}=JSON,Jt=(e,t,n)=>{const r=t.get(n);return\"number\"==typeof r?(e.push(Dt.ref,r),!0):(t.set(n,e.length),!1)},qt=(e,t,n,r=Rt(n))=>{switch(r){case\"null\":e.push(Dt.null);break;case\"object\":if(Jt(e,t,n))break;switch(!0){case Ut(n):{const r=n.length;e.push(Dt.array,r);for(let s=0;s<r;s++)qt(e,t,n[s]);break}case Ht(n):{const{BYTES_PER_ELEMENT:r,buffer:s,byteOffset:o,length:a}=n;if(e.push(Dt.view,(e=>{for(;!(e.name in globalThis);)e=Ot(e);return e.name})(n.constructor),o,a!==(s.byteLength-o)/r?a:0),Jt(e,t,s))break;n=s}case n instanceof ArrayBuffer:{const t=n.byteLength,r=n.resizable?n.maxByteLength:0;if(e.push(Dt.buffer,t,r),t){const r=new Uint8Array(n,0,t);for(let t=0;t<r.length;t+=32767)e.push.apply(e,r.subarray(t,t+32767))}break}case n instanceof Date:e.push(Dt.date,+n);break;case n instanceof Map:{const r=e.push(Dt.map,0);let s=0;for(const[r,o]of n){const n=Rt(r),a=Rt(o);n&&a&&(qt(e,t,r,n),qt(e,t,o,a),s++)}e[r-1]=s;break}case n instanceof Set:{const r=e.push(Dt.set,0);let s=0;for(const r of n){const n=Rt(r);n&&(qt(e,t,r,n),s++)}e[r-1]=s;break}case n instanceof RegExp:e.push(Dt.regexp,n.source,n.flags);break;case n instanceof Error:e.push(Dt.error,n.name,n.message,n.stack,n.cause);break;default:{if(\"toJSON\"in n){const r=n.toJSON();if(r===n){e.push(Dt.object,0);break}if(Jt(e,t,n=r))break}const r=e.push(Dt.object,0);let s=0;for(const r in n){const o=n[r],a=Rt(o);a&&(qt(e,t,r,\"string\"),qt(e,t,o,a),s++)}e[r-1]=s;break}}break;case\"boolean\":e.push(n?Dt.true:Dt.false);break;case\"string\":if(Jt(e,t,n))break;e.push(Dt.string,n);break;case\"bigint\":e.push(Dt[r],n.toString());break;case\"symbol\":{const t=(e=>{const t=String(e).slice(7,-1);return t.startsWith(\"Symbol.\")||Symbol.keyFor(e)?t:\"\"})(n);if(t){e.push(Dt[r],t);break}}case\"\":e.push(Dt.undefined);break;default:e.push(Dt[r],n)}},zt={parse:e=>{return t=It(e),Nt=0,t.length?Ct(t):void 0;var t},stringify:e=>Wt((e=>{const t=[];return qt(t,new Map,e),t})(e))},Kt=new WeakMap,Gt=async(e,t,n,r,s)=>{r.files&&(t(\"Loading files\"),await $t(e,n,r.files,s),t(\"Loaded files\")),r.fetch&&(t(\"Loading fetch\"),await Bt(e,n,r.fetch,s),t(\"Loaded fetch\")),r.js_modules&&(t(\"Loading JS modules\"),await Tt(r.js_modules,s),t(\"Loaded JS modules\"))},Yt=(e,t,n)=>{\"polyscript\"===t&&(n.lazy_py_modules=async(...t)=>(await Kt.get(e)(t),t.map((t=>e.pyimport(t)))),n.storage=async e=>{const t=new i(e);return await t.sync(),t},n.JSON=zt),e.registerJsModule(t,n)},Vt=(e,t)=>{if(e.endsWith(\"/*\")){if(/\\.(zip|whl|tgz|tar(?:\\.gz)?)$/.test(t))return RegExp.$1;throw new Error(`Unsupported archive ${t}`)}return\"\"},Xt=(e,t,...n)=>{try{return e.runPython(We(t),...n)}catch(t){Ie.get(e).stderr(t)}},Zt=async(e,t,...n)=>{try{return await e.runPythonAsync(We(t),...n)}catch(t){Ie.get(e).stderr(t)}},Qt=async(e,t,n)=>{const[r,...s]=t.split(\".\");let o,a=e.globals.get(r);for(const e of s)[o,a]=[a,a[e]];try{await a.call(o,n)}catch(t){Ie.get(e).stderr(t)}};var en=(new TextEncoder).encode(\"_F='github:'\\n_E='user-agent'\\n_D=True\\n_C=False\\n_B='/'\\n_A=None\\nfrom uio import StringIO\\nimport sys\\nclass Response:\\n\\tdef __init__(A,f):A.raw=f;A.encoding='utf-8';A._cached=_A\\n\\tdef close(A):\\n\\t\\tif A.raw:A.raw.close();A.raw=_A\\n\\t\\tA._cached=_A\\n\\t@property\\n\\tdef content(self):\\n\\t\\tA=self\\n\\t\\tif A._cached is _A:\\n\\t\\t\\ttry:A._cached=A.raw.read()\\n\\t\\t\\tfinally:A.raw.close();A.raw=_A\\n\\t\\treturn A._cached\\n\\t@property\\n\\tdef text(self):return str(self.content,self.encoding)\\n\\tdef json(A):import ujson;return ujson.loads(A.content)\\nHEADERS_TO_IGNORE=_E,\\ntry:import js\\nexcept Exception as err:raise OSError('This version of urequests can only be used in the browser')\\nHEADERS_TO_IGNORE=_E,\\ndef request(method,url,data=_A,json=_A,headers={},stream=_A,auth=_A,timeout=_A,parse_headers=_D):\\n\\tE=timeout;D=method;C=data;from js import XMLHttpRequest as G;A=G.new();A.withCredentials=_C\\n\\tif auth is not _A:import ubinascii;H,I=auth;A.open(D,url,_C,H,I)\\n\\telse:A.open(D,url,_C)\\n\\tfor(F,J)in headers.items():\\n\\t\\tif F.lower()not in HEADERS_TO_IGNORE:A.setRequestHeader(F,J)\\n\\tif E:A.timeout=int(E*1000)\\n\\tif json is not _A:assert C is _A;import ujson;C=ujson.dumps(json);A.setRequestHeader('Content-Type','application/json')\\n\\tA.send(C);B=Response(StringIO(A.responseText));B.status_code=A.status;B.reason=A.statusText;B.headers=A.getAllResponseHeaders();return B\\ndef get(url,**A):return request('GET',url,**A)\\n_PACKAGE_INDEX=const('https://micropython.org/pi/v2')\\n_CHUNK_SIZE=128\\ndef _ensure_path_exists(path):\\n\\timport os;A=path.split(_B)\\n\\tif not A[0]:A.pop(0);A[0]=_B+A[0]\\n\\tB=''\\n\\tfor C in range(len(A)-1):\\n\\t\\tB+=A[C]\\n\\t\\ttry:os.stat(B)\\n\\t\\texcept:os.mkdir(B)\\n\\t\\tB+=_B\\ndef _chunk(src,dest):\\n\\tA=memoryview(bytearray(_CHUNK_SIZE))\\n\\twhile _D:\\n\\t\\tB=src.readinto(A)\\n\\t\\tif B==0:break\\n\\t\\tdest(A if B==_CHUNK_SIZE else A[:B])\\ndef _check_exists(path,short_hash):\\n\\tA=short_hash;import os\\n\\ttry:\\n\\t\\timport binascii as C,hashlib as D\\n\\t\\twith open(path,'rb')as E:B=D.sha256();_chunk(E,B.update);F=str(C.hexlify(B.digest())[:len(A)],'utf-8');return F==A\\n\\texcept:return _C\\ndef _rewrite_url(url,branch=_A):\\n\\tB=branch;A=url\\n\\tif not B:B='HEAD'\\n\\tif A.startswith(_F):A=A[7:].split(_B);A='https://raw.githubusercontent.com/'+A[0]+_B+A[1]+_B+B+_B+_B.join(A[2:])\\n\\treturn A\\ndef _download_file(url,dest):\\n\\tB=dest;A=get(url)\\n\\ttry:\\n\\t\\tif A.status_code!=200:print('Error',A.status_code,'requesting',url);return _C\\n\\t\\tprint('Copying:',B);_ensure_path_exists(B)\\n\\t\\twith open(B,'wb')as C:_chunk(A.raw,C.write)\\n\\t\\treturn _D\\n\\tfinally:A.close()\\ndef _install_json(package_json_url,index,target,version,mpy):\\n\\tK='File not found: {} {}';I=version;H=index;G=package_json_url;D=target;E=get(_rewrite_url(G,I))\\n\\ttry:\\n\\t\\tif E.status_code!=200:print('Package not found:',G);return _C\\n\\t\\tF=E.json()\\n\\tfinally:E.close()\\n\\tfor(A,C)in F.get('hashes',()):\\n\\t\\tB=D+_B+A\\n\\t\\tif _check_exists(B,C):print('Exists:',B)\\n\\t\\telse:\\n\\t\\t\\tL='{}/file/{}/{}'.format(H,C[:2],C)\\n\\t\\t\\tif not _download_file(L,B):print(K.format(A,C));return _C\\n\\tfor(A,J)in F.get('urls',()):\\n\\t\\tB=D+_B+A\\n\\t\\tif not _download_file(_rewrite_url(J,I),B):print(K.format(A,J));return _C\\n\\tfor(M,N)in F.get('deps',()):\\n\\t\\tif not _install_package(M,H,D,N,mpy):return _C\\n\\treturn _D\\ndef _install_package(package,index,target,version,mpy):\\n\\tD=index;C=target;B=version;A=package\\n\\tif A.startswith('http://')or A.startswith('https://')or A.startswith(_F):\\n\\t\\tif A.endswith('.py')or A.endswith('.mpy'):print('Downloading {} to {}'.format(A,C));return _download_file(_rewrite_url(A,B),C+_B+A.rsplit(_B)[-1])\\n\\t\\telse:\\n\\t\\t\\tif not A.endswith('.json'):\\n\\t\\t\\t\\tif not A.endswith(_B):A+=_B\\n\\t\\t\\t\\tA+='package.json'\\n\\t\\t\\tprint('Installing {} to {}'.format(A,C))\\n\\telse:\\n\\t\\tif not B:B='latest'\\n\\t\\tprint('Installing {} ({}) from {} to {}'.format(A,B,D,C));E=sys.implementation._mpy&255 if mpy and hasattr(sys.implementation,'_mpy')else'py';A='{}/package/{}/{}/{}.json'.format(D,'py',A,B)\\n\\treturn _install_json(A,D,C,B,mpy)\\ndef install(package,index=_A,target=_A,version=_A,mpy=_D):\\n\\tB=target;A=index\\n\\tif not B:\\n\\t\\tfor C in sys.path:\\n\\t\\t\\tif C.endswith('/lib'):B=C;break\\n\\t\\telse:print('Unable to find lib dir in sys.path');return\\n\\tif not A:A=_PACKAGE_INDEX\\n\\tif _install_package(package,A.rstrip(_B),B,version,mpy):print('Done')\\n\\telse:print('Package may be partially installed')\");const tn=async e=>(await import(\"./toml-DiUM0_qs.js\")).parse(e);async function nn(e,t){return new Promise(((n,r)=>{e.syncfs(t,(e=>{e?r(e):n()}))}))}function rn(e){const t=e.FS,n=e.FS.filesystems.MEMFS,r=e.PATH,s={DIR_MODE:16895,FILE_MODE:33279,mount:function(e){if(!e.opts.fileSystemHandle)throw new Error(\"opts.fileSystemHandle is required\");return n.mount.apply(null,arguments)},syncfs:async(e,t,n)=>{try{const r=s.getLocalSet(e),o=await s.getRemoteSet(e),a=t?o:r,i=t?r:o;await s.reconcile(e,a,i),n(null)}catch(e){n(e)}},getLocalSet:e=>{let n=Object.create(null);function s(e){return\".\"!==e&&\"..\"!==e}function o(e){return t=>r.join2(e,t)}let a=t.readdir(e.mountpoint).filter(s).map(o(e.mountpoint));for(;a.length;){let e=a.pop(),r=t.stat(e);t.isDir(r.mode)&&a.push.apply(a,t.readdir(e).filter(s).map(o(e))),n[e]={timestamp:r.mtime,mode:r.mode}}return{type:\"local\",entries:n}},getRemoteSet:async e=>{const t=Object.create(null),n=await sn(e.opts.fileSystemHandle);for(const[o,a]of n)\".\"!==o&&(t[r.join2(e.mountpoint,o)]={timestamp:\"file\"===a.kind?(await a.getFile()).lastModifiedDate:new Date,mode:\"file\"===a.kind?s.FILE_MODE:s.DIR_MODE});return{type:\"remote\",entries:t,handles:n}},loadLocalEntry:e=>{const r=t.lookupPath(e).node,s=t.stat(e);if(t.isDir(s.mode))return{timestamp:s.mtime,mode:s.mode};if(t.isFile(s.mode))return r.contents=n.getFileDataAsTypedArray(r),{timestamp:s.mtime,mode:s.mode,contents:r.contents};throw new Error(\"node type not supported\")},storeLocalEntry:(e,n)=>{if(t.isDir(n.mode))t.mkdirTree(e,n.mode);else{if(!t.isFile(n.mode))throw new Error(\"node type not supported\");t.writeFile(e,n.contents,{canOwn:!0})}t.chmod(e,n.mode),t.utime(e,n.timestamp,n.timestamp)},removeLocalEntry:e=>{var n=t.stat(e);t.isDir(n.mode)?t.rmdir(e):t.isFile(n.mode)&&t.unlink(e)},loadRemoteEntry:async e=>{if(\"file\"===e.kind){const t=await e.getFile();return{contents:new Uint8Array(await t.arrayBuffer()),mode:s.FILE_MODE,timestamp:t.lastModifiedDate}}if(\"directory\"===e.kind)return{mode:s.DIR_MODE,timestamp:new Date};throw new Error(\"unknown kind: \"+e.kind)},storeRemoteEntry:async(e,n,s)=>{const o=e.get(r.dirname(n)),a=t.isFile(s.mode)?await o.getFileHandle(r.basename(n),{create:!0}):await o.getDirectoryHandle(r.basename(n),{create:!0});if(\"file\"===a.kind){const e=await a.createWritable();await e.write(s.contents),await e.close()}e.set(n,a)},removeRemoteEntry:async(e,t)=>{const n=e.get(r.dirname(t));await n.removeEntry(r.basename(t)),e.delete(t)},reconcile:async(e,n,o)=>{let a=0;const i=[];Object.keys(n.entries).forEach((function(e){const r=n.entries[e],s=o.entries[e];(!s||t.isFile(r.mode)&&r.timestamp.getTime()>s.timestamp.getTime())&&(i.push(e),a++)})),i.sort();const c=[];if(Object.keys(o.entries).forEach((function(e){n.entries[e]||(c.push(e),a++)})),c.sort().reverse(),!a)return;const l=\"remote\"===n.type?n.handles:o.handles;for(const t of i){const n=r.normalize(t.replace(e.mountpoint,\"/\")).substring(1);if(\"local\"===o.type){const e=l.get(n),r=await s.loadRemoteEntry(e);s.storeLocalEntry(t,r)}else{const e=s.loadLocalEntry(t);await s.storeRemoteEntry(l,n,e)}}for(const t of c)if(\"local\"===o.type)s.removeLocalEntry(t);else{const n=r.normalize(t.replace(e.mountpoint,\"/\")).substring(1);await s.removeRemoteEntry(l,n)}}};return e.FS.filesystems.NATIVEFS_ASYNC=s,async function(e,n){if(\"FileSystemDirectoryHandle\"!==n.constructor.name)throw new TypeError(\"Expected argument 'fileSystemHandle' to be a FileSystemDirectoryHandle\");return function(e){t.mkdirTree?t.mkdirTree(e):vt(t,e);const{node:n}=t.lookupPath(e,{follow_mount:!1});if(t.isMountpoint(n))throw new Error(`path '${e}' is already a file system mount point`);if(!t.isDir(n.mode))throw new Error(`path '${e}' points to a file not a directory`);for(const t in n.contents)throw new Error(`directory '${e}' is not empty`)}(e),t.mount(t.filesystems.NATIVEFS_ASYNC,{fileSystemHandle:n},e),await nn(t,!0),{syncfs:async()=>await nn(t,!1)}}}const sn=async e=>{const t=[];await async function e(n){for await(const r of n.values())t.push(r),\"directory\"===r.kind&&await e(r)}(e);const n=new Map;n.set(\".\",e);for(const r of t){const t=(await e.resolve(r)).join(\"/\");n.set(t,r)}return n},on=(e,t)=>{try{e.mkdir(t)}catch(e){}},an=Ft(\"mpy\");var cn={type:\"micropython\",module:(e=\"1.25.0\")=>`https://cdn.jsdelivr.net/npm/@micropython/micropython-webassembly-pyscript@${e}/micropython.mjs`,async engine({loadMicroPython:e},t,n,r){const{stderr:s,stdout:o,get:a}=Ne({stderr:He(console.error),stdout:He(console.log)});n=n.replace(/\\.m?js$/,\".wasm\"),an(\"Loading MicroPython\");const i=await a(e({linebuffer:!1,stderr:s,stdout:o,url:n})),c=ln.bind(this,i,r);return Kt.set(i,c),await Gt(this,an,i,t,r),this.writeFile(i,\"./mip.py\",en),t.packages&&(an(\"Loading packages\"),await c(t.packages.map(Ze,r)),an(\"Loaded packages\")),an(\"Loaded MicroPython\"),i.mountNativeFS||(i.mountNativeFS=rn(i._module)),i},registerJSModule:Yt,run:Xt,runAsync:Zt,runEvent:Qt,transform:(e,t)=>e.PyProxy.toJs(t),writeFile:(e,t,n,r)=>{const{FS:s,_module:{PATH:o,PATH_FS:a}}=e,i={FS:s,PATH:o,PATH_FS:a},c=Vt(t,r);if(c){const r=t.slice(0,-1);switch(\"./\"!==r&&s.mkdir(r),c){case\"whl\":case\"zip\":{const e=new Blob([n],{type:\"application/zip\"});return import(\"./zip-DxlTOqbw.js\").then((async({BlobReader:t,Uint8ArrayWriter:n,ZipReader:a})=>{const i=new a(new t(e));for(const e of await i.getEntries()){const{directory:t,filename:a}=e,i=r+a;if(t)on(s,i);else{on(s,o.dirname(i));const t=await e.getData(new n);s.writeFile(i,t,{canOwn:!0})}}i.close()}))}case\"tgz\":case\"tar.gz\":{const t=\"./_.tar.gz\";return At(i,t,n),void e.runPython(`\\n import os, gzip, tarfile\\n tar = tarfile.TarFile(fileobj=gzip.GzipFile(fileobj=open(\"${t}\", \"rb\")))\\n for f in tar:\\n name = f\"${r}{f.name}\"\\n if f.type == tarfile.DIRTYPE:\\n if f.name != \"./\":\\n os.mkdir(name.strip(\"/\"))\\n else:\\n dir = os.path.dirname(name)\\n if not os.path.exists(dir):\\n os.mkdir(dir)\\n source = tar.extractfile(f)\\n with open(name, \"wb\") as dest:\\n dest.write(source.read())\\n dest.close()\\n tar.close()\\n os.remove(\"${t}\")\\n `)}}}return At(i,t,n)}};async function ln(e,t,n){let r;for(const s of n)if(s.endsWith(\".whl\")){const n=Xe(s,t),r=await bt(n).arrayBuffer();await this.writeFile(e,\"./*\",r,n)}else r||(r=e.pyimport(\"mip\")),r.install(s)}const un={dict_converter:Object.fromEntries},{stringify:pn}=JSON;let dn=!1;const fn=e=>(...t)=>{try{return dn=!0,e(...t)}finally{dn=!1}};let yn=!1;const hn=()=>{if(yn)return;yn=!0;const e=new WeakMap,t=e=>e.destroy(),n=n=>{for(let r=0;r<n.length;r++){const s=n[r];if(\"function\"==typeof s&&\"copy\"in s){dn=!1;let o=e.get(s)?.deref();if(!o)try{o=fe(s.copy(),t),e.set(s,new WeakRef(o))}catch(e){console.error(e)}o&&(n[r]=o),dn=!0}}},{call:r}=Function,s=r.bind(r,r.apply);Object.defineProperties(Function.prototype,{apply:{value(e,t){return dn&&n(t),s(this,e,t)}},call:{value(e,...t){return dn&&n(t),s(this,e,t)}}})},mn=Ft(\"py\"),wn=new WeakMap;var gn={type:\"pyodide\",module:(e=\"0.27.5\")=>`https://cdn.jsdelivr.net/pyodide/v${e}/full/pyodide.mjs`,async engine({loadPyodide:e},t,n,r){_t||\"auto\"!==t.experimental_create_proxy||hn(),mn(\"Loading Pyodide\");let{packages:s,index_urls:o}=t;s&&(s=s.map(Ze,r)),mn(\"Loading Storage\");const a=n.slice(0,n.lastIndexOf(\"/\")),c=new i(a),l={indexURL:a},u=\"never\"!==t.packages_cache;if(await c.sync(),u){if(s){s=s.sort();const e=pn(s);if(c.has(e)){const t=new Blob([c.get(e)],{type:\"application/json\"});l.lockFileURL=URL.createObjectURL(t),l.packages=s.map((e=>e.split(/[>=<]=/)[0])),s=null}}}else c.clear();mn(\"Loaded Storage\");const{stderr:p,stdout:d,get:f}=Ne(),y=await f(e({stderr:p,stdout:d,...l})),h=_n.bind(y);return o&&wn.set(y,o),Kt.set(y,h),await Gt(this,mn,y,t,r),s&&await h(s,c,u),await c.close(),l.lockFileURL&&URL.revokeObjectURL(l.lockFileURL),mn(\"Loaded Pyodide\"),y},registerJSModule:Yt,run:fn(Xt),runAsync:fn(Zt),runEvent:fn(Qt),transform:(e,t)=>bn.call(e,t),writeFile:(e,t,n,r)=>{const s=Vt(t,r);if(s)return e.unpackArchive(n,s,{extractDir:t.slice(0,-1)});const{FS:o,PATH:a,_module:{PATH_FS:i}}=e;return At({FS:o,PATH:a,PATH_FS:i},t,n)}};function bn(e){const{ffi:{PyProxy:t}}=this;if(e&&\"object\"==typeof e){if(e instanceof t)return e.toJs(un);if(e instanceof Map)return new Map([...e.entries()]);if(Je(e))return e.map(bn,this)}return e}async function _n(e,t,n=!1){const{log:r}=console,s=(e,...t)=>{r(e,...t),console.log=r,mn(e),console.log=s};console.log=s,await this.loadPackage(\"micropip\");const o=this.pyimport(\"micropip\");if(wn.has(this)&&o.set_index_urls(wn.get(this)),await o.install(e,{keep_going:!0}),console.log=r,n&&t instanceof i){const n=o.freeze();t.set(pn(e),n)}o.destroy()}const An=\"ruby-wasm-wasi\",En=An.replace(/\\W+/g,\"_\");var vn={type:An,experimental:!0,module:(e=\"2.7.1\")=>`https://cdn.jsdelivr.net/npm/@ruby/3.2-wasm-wasi@${e}/dist/browser/+esm`,async engine({DefaultRubyVM:e},t,n,r){n=n.replace(/\\/browser\\/\\+esm$/,\"/ruby.wasm\");const s=await bt(n).arrayBuffer(),o=await WebAssembly.compile(s),{vm:a}=await e(o);return t.files&&await $t(this,a,t.files,r),t.fetch&&await Bt(this,a,t.fetch,r),t.js_modules&&await Tt(t.js_modules,r),a},registerJSModule(e,t,n){t=t.replace(/\\W+/g,\"__\");const r=`__module_${En}_${t}`;globalThis[r]=n,this.run(e,`require \"js\";$${t}=JS.global[:${r}]`),delete globalThis[r]},run:(e,t,...n)=>e.eval(We(t),...n),runAsync:(e,t,...n)=>e.evalAsync(We(t),...n),async runEvent(e,t,n){if(/^xworker\\.(on\\w+)$/.test(t)){const{$1:t}=RegExp,r=`__module_${En}_event`;globalThis[r]=n,this.run(e,`require \"js\";$xworker.call(\"${t}\",JS.global[:${r}])`),delete globalThis[r]}else{const r=this.run(e,`method(:${t})`);await r.call(t,e.wrap(n))}},transform:(e,t)=>t,writeFile:()=>{throw new Error(`writeFile is not supported in ${An}`)}};var Sn={type:\"wasmoon\",module:(e=\"1.16.0\")=>`https://cdn.jsdelivr.net/npm/wasmoon@${e}/+esm`,async engine({LuaFactory:e,LuaLibraries:t},n,r,s){const{stderr:o,stdout:a,get:i}=Ne(),c=await i((new e).createEngine());return c.global.getTable(t.Base,(e=>{c.global.setField(e,\"print\",a),c.global.setField(e,\"printErr\",o)})),n.files&&await $t(this,c,n.files,s),n.fetch&&await Bt(this,c,n.fetch,s),n.js_modules&&await Tt(n.js_modules,s),c},registerJSModule:(e,t,n)=>{e.global.set(t,n)},run:(e,t,...n)=>{try{return e.doStringSync(We(t),...n)}catch(t){Ie.get(e).stderr(t)}},runAsync:async(e,t,...n)=>{try{return await e.doString(We(t),...n)}catch(t){Ie.get(e).stderr(t)}},runEvent:async(e,t,n)=>{const[r,...s]=t.split(\".\");let o,a=e.global.get(r);for(const e of s)[o,a]=[a,a[e]];try{await a.call(o,n)}catch(t){Ie.get(e).stderr(t)}},transform:(e,t)=>t,writeFile:({cmodule:{module:{FS:e}}},t,n)=>((e,t,n)=>(vt(e,Et(t)),t=St(e,t),e.writeFile(t,new Uint8Array(n),{canOwn:!0})))(e,t,n)};const kn=new WeakMap,xn=async(e,t)=>{const{shelter:n,destroy:r,io:s}=kn.get(e),{output:o,result:a}=await n.captureR(We(t));for(const{type:e,data:t}of o)s[e](t);return fe(a,r,{token:!1})};var Bn={type:\"webr\",experimental:!0,module:(e=\"0.4.2\")=>`https://cdn.jsdelivr.net/npm/webr@${e}/dist/webr.mjs`,async engine(e,t,n,r){const{get:s}=Ne(),o=new e.WebR;await s(o.init().then((()=>o)));const a=await new o.Shelter;return kn.set(o,{module:e,shelter:a,destroy:a.destroy.bind(a),io:Ie.get(o)}),t.files&&await $t(this,o,t.files,r),t.fetch&&await Bt(this,o,t.fetch,r),t.js_modules&&await Tt(t.js_modules,r),o},registerJSModule(e,t){console.warn(`Experimental interpreter: module ${t} is not supported (yet)`)},run:xn,runAsync:xn,async runEvent(e,t,n){await e.evalRVoid(`${t}(event)`,{env:{event:{type:[n.type]}}})},transform:(e,t)=>(console.log(\"transforming\",t),t),writeFile:()=>{}};const jn=new Map,Pn=new Map,$n=new Proxy(new Map,{get(e,t){if(!e.has(t)){const[n,...r]=t.split(\"@\"),s=jn.get(n),o=/^(?:\\.?\\.?\\/|[a-z0-9-]+:\\/\\/)/i.test(r)?r.join(\"@\"):s.module(...r);e.set(t,{url:o,module:import(o),engine:s.engine.bind(s)})}const{url:n,module:r,engine:s}=e.get(t);return(e,o)=>r.then((r=>(Pn.set(t,e),s(r,e,n,o))))}}),Tn=e=>{for(const t of[].concat(e.type))jn.set(t,e)};for(const e of[ht,cn,gn,vn,Sn,Bn])Tn(e);const{parse:Fn}=JSON,On=(e,t,n={})=>{const[r,s]=((e,t=\"./config.txt\")=>{let n=typeof e;return\"string\"===n&&/\\.(json|toml|txt)$/.test(e)?n=RegExp.$1:e=t,[Xe(e),n]})(e,t);return\"json\"===s?n=bt(r).json():\"toml\"===s?n=bt(r).text().then(tn):\"string\"===s?n=Rn(e):\"object\"===s&&e?n=e:\"txt\"===s&&\"string\"==typeof n&&(n=Rn(n)),[n,e=r]},Rn=e=>{try{return Fn(e)}catch(t){return tn(e)}},Mn=\"BeforeRun\",Dn=\"AfterRun\",Ln=[`code${Mn}`,`code${Mn}Async`,`code${Dn}`,`code${Dn}Async`],Cn=[\"onWorker\",\"onReady\",`on${Mn}`,`on${Mn}Async`,`on${Dn}`,`on${Dn}Async`];function In(e,t){const{run:n,runAsync:r}=jn.get(this.type);return{...e,run:n.bind(this,t),runAsync:r.bind(this,t)}}const Nn=(e,t,n,r,s,o)=>{if(s||o){const a=In.bind(e,t),i=r?\"runAsync\":\"run\",c=e[i];e[i]=r?async function(e,t,...r){s&&await s.call(this,a(e),n);const i=await c.call(this,e,t,...r);return o&&await o.call(this,a(e),n),i}:function(e,t,...r){s&&s.call(this,a(e),n);const i=c.call(this,e,t,...r);return o&&o.call(this,a(e),n),i}}};let Un,Hn,Wn;const Jn=(e,t)=>{addEventListener(e,t||(async t=>{try{await Un,Hn(`xworker.on${e}`,t)}catch(e){postMessage(e)}}),!!t&&{once:!0})},{proxy:qn,native:zn,window:Kn,isWindowProxy:Gn}=await(async e=>{let t=!1;const n=e?.decoder||P,r=await G({...e,decoder(e){const r=n(e),s=H(e);return(e,n)=>t?(t=!1,s(e,n)):r(e,n)}}),s=r.proxy[w],{isProxy:o,global:a,method:i}=Le((function(...e){return t=!0,s.apply(this,e)}),e?.transform||(e=>e));return r.proxy[g]=i,{...r,window:a,isWindowProxy:o}})({decoder:h,transfer:!1,transform:e=>Wn?Wn(e):e}),Yn={polyfill:!zn,sync:qn,window:zn?Kn:null,isWindowProxy:Gn,onmessage:console.info,onerror:console.error,onmessageerror:console.warn,postMessage:postMessage.bind(self)};Jn(\"message\",(({data:{options:e,config:t,configURL:n,code:r,hooks:s}})=>{Un=(async()=>{try{const{id:o,tag:c,type:l,custom:u,version:p,config:d,async:f}=e,y=((e,t=\"\")=>`${e}@${t}`.replace(/@$/,\"\"))(l,p),h=await((e,t,n,r={})=>(t&&([r,t]=On(t,n,r)),Ve(r).then((n=>$n[e](n,t)))))(y,t,n,d),{js_modules:m}=Pn.get(y),w=m?.main,g=ze(jn.get(l)),b=((e,t,n,r)=>({type:t,config:n,interpreter:r,io:Ie.get(r),run:(t,...n)=>e.run(r,t,...n),runAsync:(t,...n)=>e.runAsync(r,t,...n),runEvent:(...t)=>e.runEvent(r,...t)}))(g,u||l,d||{},h);let _=\"run\";if(f&&(_+=\"Async\"),s){let e,t,n=\"\",r=\"\";for(const e of Ln){const t=s[e];if(t){const s=e.endsWith(\"Async\");(s&&f||!s&&!f)&&(e.startsWith(\"codeBefore\")?n=t:r=t)}}(n||r)&&((e,t,n,r)=>{const s=e[t].bind(e);e[t]=\"run\"===t?(e,t,...o)=>{n&&s(e,n,...o);const a=s(e,tt(t),...o);return r&&s(e,r,...o),a}:async(e,t,...o)=>{n&&await s(e,n,...o);const a=await s(e,tt(t),...o);return r&&await s(e,r,...o),a}})(g,_,n,r);for(const n of Cn.slice(2)){const r=s[n];if(r){const s=n.endsWith(\"Async\");if(s&&f||!s&&!f){const s=et(r);n.startsWith(\"onBefore\")?e=s:t=s}}}Nn(g,b,Yn,f,e,t)}let A,E,v,S=null,k=\"\";zn&&(({CustomEvent:A,document:E}=Kn),S=o&&E.getElementById(o)||null,v=e=>Qe(S,u||l,e,!0,A));const x=pt(Kn,qn,w,t);if(((e,t,n,r)=>{if(\"pyodide\"===e)return;const s=\"polyscript.js_modules\";for(const e of Reflect.ownKeys(r))t.registerJSModule(n,`${s}.${e}`,ot(r,e));t.registerJSModule(n,s,r)})(l,g,h,x),g.registerJSModule(h,\"polyscript\",{IDBMap:a,IDBMapSync:i,xworker:Yn,currentScript:S,config:b.config,js_modules:x,get target(){return!k&&S&&(\"SCRIPT\"===c?S.after(qe(Kn.document.createElement(`script-${u||l}`),{id:k=`${o}-target`})):(k=o,S.replaceChildren(),S.style.display=\"block\")),k}}),Hn=g.runEvent.bind(g,h),Wn=g.transform.bind(g,h),S&&v(\"ready\"),s?.onReady&&et(s?.onReady).call(g,In.call(g,b,h),Yn),await g[_](h,r),[\"micropython\",\"pyodide\"].includes(g.type)){const e=\"polyscript\",t=`__${e}_workers__`,n=\"__export__\";h.runPython([`import js as ${t}`,`${t}.${t} = \"${n}\" in locals() and ${n} or []`,`del ${t}`].join(\"\\n\"));const r=[...globalThis[t]];delete globalThis[t],r.length&&h.runPython([`from ${e} import xworker as ${t}`,...r.map((e=>`${t}.sync.${e} = ${e}`)),`del ${t}`].join(\"\\n\"))}return S&&v(\"done\"),postMessage(\"polyscript:done\"),h}catch(e){postMessage(e)}})(),Jn(\"error\"),Jn(\"message\"),Jn(\"messageerror\"),zn&&addEventListener(\"py:progress\",(({type:e,detail:t})=>{Kn.dispatchEvent(new Kn.CustomEvent(e,{detail:t}))}))}));\n".replace(re,place)],{type:'text/javascript'})), ...args) | ||
export default (...args) => new Worker(URL.createObjectURL(new Blob(['/*@*/'+"const{assign:e}=Object,t=\"entries\",n=\"readonly\",r=\"readwrite\",s={durability:\"default\",prefix:\"IDBMap\"},o=({target:{result:e}})=>e;class a extends EventTarget{#e;#t;#n;async#r(n,r){const s=(await this.#e).transaction(t,r,this.#t);return new Promise(((r,o)=>e(n(s.objectStore(t)),{onsuccess:r,onerror:o})))}constructor(n,{durability:r=s.durability,prefix:a=s.prefix}=s){super(),this.#n=a,this.#t={durability:r},this.#e=new Promise(((r,s)=>{e(indexedDB.open(`${this.#n}/${n}`),{onupgradeneeded({target:{result:e,transaction:n}}){e.objectStoreNames.length||e.createObjectStore(t),n.oncomplete=()=>r(e)},onsuccess(e){r(o(e))},onerror(e){s(e),this.dispatchEvent(e)}})})).then((e=>{const t=this.dispatchEvent.bind(this);for(const n in e)n.startsWith(\"on\")&&(e[n]=t);return e}))}dispatchEvent(t){const{type:n,message:r,isTrusted:s}=t;return super.dispatchEvent(s?e(new Event(n),{message:r}):t)}async close(){(await this.#e).close()}get size(){return this.#r((e=>e.count()),n).then(o)}async clear(){await this.#r((e=>e.clear()),r)}async delete(e){await this.#r((t=>t.delete(e)),r)}async entries(){const e=await this.keys();return Promise.all(e.map((e=>this.get(e).then((t=>[e,t])))))}async forEach(e,t=this){for(const[n,r]of await this.entries())await e.call(t,r,n,this)}async get(e){return await this.#r((t=>t.get(e)),n).then(o)}async has(e){return void 0!==await this.#r((t=>t.getKey(e)),n).then(o)}async keys(){return await this.#r((e=>e.getAllKeys()),n).then(o)}async set(e,t){return await this.#r((n=>n.put(t,e)),r),this}async values(){const e=await this.keys();return Promise.all(e.map((e=>this.get(e))))}get[Symbol.toStringTag](){return this.#n}}class i extends Map{#s;#o;constructor(...e){super(),this.#s=new a(...e),this.#o=this.#s.entries().then((e=>{for(const[t,n]of e)super.set(t,n)}))}async close(){await this.#o,await this.#s.close()}async sync(){await this.#o}clear(){return this.#o=this.#o.then((()=>this.#s.clear())),super.clear()}delete(e){return this.#o=this.#o.then((()=>this.#s.delete(e))),super.delete(e)}set(e,t){return this.#o=this.#o.then((()=>this.#s.set(e,t))),super.set(e,t)}}let c=\"coincident-\";try{new SharedArrayBuffer(4,{maxByteLength:8}),c+=crypto.randomUUID()}catch(kn){c+=Math.random().toString(36).substring(2)}const{fromCharCode:l}=String,{min:u}=Math;const{defineProperty:p}=Object,d=e=>{switch(e[y++]){case 1:{const t=e[y++],n=[];e[y-2]=n;for(let r=0;r<t;r++)n[r]=d(e);return n}case 2:{const t=e[y++],n={};e[y-2]=n;for(let r=0;r<t;r++)n[d(e)]=d(e);return n}case 4:{const t=e[y++];return e[y-2]=t,t}case 0:return e[e[y++]];case 3:return e[y++];case 12:return BigInt(e[y++]);case 5:return!0;case 6:return!1;case 7:return null;case 13:return;case 8:{const t=e[y++],n=e[y++],r=[t];n&&r.push({maxByteLength:n});const s=new ArrayBuffer(...r);e[y-3]=s;const o=new Uint8Array(s,0,t);for(let n=0;n<t;n++)o[n]=e[y++];return s}case 9:{const t=e[y++],n=e[y++],r=e[y++],s=y-4,o=[d(e),n];r&&o.push(r);const a=new globalThis[t](...o);return e[s]=a,a}case 10:return(t=e[y++]).startsWith(\"Symbol.\")?Symbol[t.slice(t.indexOf(\".\")+1)]:Symbol.for(t);case 11:{const t=new Date(e[y++]);return e[y-2]=t,t}case 14:{const t=e[y++],n=new Map;e[y-2]=n;for(let r=0;r<t;r++){const t=d(e),r=d(e);void 0!==t&&n.set(t,r)}return n}case 15:{const t=e[y++],n=new Set;e[y-2]=n;for(let r=0;r<t;r++){const t=d(e);void 0!==t&&n.add(t)}return n}case 16:{const t=e[y++],n=e[y++],r=new RegExp(t,n);return e[y-3]=r,r}case 17:{const t=globalThis[e[y++]]||Error,n=e[y++],r=e[y++],s=new t(n,{cause:e[y++]});return e[y-5]=p(s,\"stack\",{value:r}),s}default:throw new TypeError(`Unknown type: ${e[y-1]}`)}var t},{parse:f}=JSON;let y=0;const h=(e=>({byteOffset:t=0}={})=>(n,r)=>{const s=new Uint16Array(r,t,n);let o=\"\",a=0;for(;a<n;){const e=u(a+32767,n);o+=l.apply(null,s.subarray(a,e)),a=e}return e(o)})((e=>(e=>(y=0,e.length?d(e):void 0))(f(e)))),m=\"de5dbea0\",w=\"=\"+m,g=\"-\"+m,{create:b}=Object;let _=\"coincident-\",A=!0;try{new SharedArrayBuffer(4,{maxByteLength:8}),_+=crypto.randomUUID()}catch(e){A=!1,_+=Math.random().toString(36).substring(2)}const E=2*Int32Array.BYTES_PER_ELEMENT,v={byteOffset:E,useUTF16:!0,circular:!0},S=(e,t,n)=>{const r=\"then\"!==t;return r&&(e[t]=n),r},{fromCharCode:k}=String,{min:x}=Math;var B=e=>({byteOffset:t=0}={})=>(n,r)=>{const s=new Uint16Array(r,t,n);let o=\"\",a=0;for(;a<n;){const e=x(a+32767,n);o+=k.apply(null,s.subarray(a,e)),a=e}return e(o)};const{parse:j}=JSON,P=B(j),$=\"array\",T=\"bigint\",F=\"boolean\",O=\"function\",R=\"null\",M=\"number\",D=\"object\",L=\"string\",C=\"symbol\",I=\"undefined\";var N={[$]:0,[T]:1,[F]:2,[O]:3,[R]:4,[M]:5,[D]:6,[L]:7,[C]:8,[I]:9,view:10};const{parse:U}=JSON,H=B((e=>{const t=U(e);switch(t[0]){case N.view:{const[e,n]=t[1],r=new Uint8Array(n);t[1]=new globalThis[e](r.buffer);break}case N[I]:t[1]=void 0;break;case N[T]:t[1]=BigInt(t[1])}return t}));var W=Promise.withResolvers.bind(Promise);const J=[],q=new WeakSet,z=(...e)=>(q.add(e),e),K=Promise.withResolvers();addEventListener(\"message\",(e=>{(e=>{e.stopImmediatePropagation(),e.preventDefault()})(e),K.resolve([e.data,e.ports[0]])}),{once:!0});var G=async e=>{const[t,n]=await K.promise,r=A&&!!t,s=e?.transform,o=(e?.decoder||P)(v),a=!1!==e?.transfer;let i,c,l;if(A){const t=new SharedArrayBuffer(e?.minByteLength||32767,{maxByteLength:e?.maxByteLength||16777216});i=new Int32Array(t),({pause:c,wait:l}=Atomics),!c||r||t instanceof ArrayBuffer||(l=(e,t)=>{for(;e[t]<1;)c()})}const[u,p]=((e=e=>e)=>{const t=new Map;let n=0;return[()=>{let r;do{r=e(n++)}while(t.has(r));const s=W();return t.set(r,s),[r,s.promise]},(e,n,r)=>{const s=t.get(e);t.delete(e),r?s?.reject(r):s?.resolve(n)}]})(String),d=new Map,f=b(null),y=new Proxy(f,{get(e,c){if(\"then\"===c)return;let p=d.get(c);return p||d.set(c,p=(...e)=>{const p=((e,t)=>{let n=J;return e&&q.has(t.at(-1)||J)&&(n=t.pop(),q.delete(n)),n})(a,e),d=[i,c,s?e.map(s):e];if(A){r?postMessage({ID:t,data:d},p):n.postMessage(d,p),l(i,0),i[0]=0;const e=i[1]?o(i[1],i.buffer):void 0;if(e instanceof Error)throw e;return e}{const[e,t]=u();return d[0]=e,n.postMessage(d,p),t}}),p},set:S});return n.onmessage=async({data:e})=>{\"string\"==typeof e[0]?p.apply(null,e):(await(async(e,t,n)=>{try{const r=await t[e[1]].apply(null,e[2]);e[1]=n?n(r):r,e[2]=null}catch(t){e[2]=t}})(e,f,s),n.postMessage(e))},{native:A,proxy:y,transfer:z}};const Y=\"apply\",V=\"construct\",X=\"defineProperty\",Z=\"deleteProperty\",Q=\"get\",ee=\"getOwnPropertyDescriptor\",te=\"getPrototypeOf\",ne=\"has\",re=\"isExtensible\",se=\"ownKeys\",oe=\"preventExtensions\",ae=\"set\",ie=\"setPrototypeOf\";var ce=Object.freeze({__proto__:null,APPLY:Y,CONSTRUCT:V,DEFINE_PROPERTY:X,DELETE_PROPERTY:Z,GET:Q,GET_OWN_PROPERTY_DESCRIPTOR:ee,GET_PROTOTYPE_OF:te,HAS:ne,IS_EXTENSIBLE:re,OWN_KEYS:se,PREVENT_EXTENSION:oe,SET:ae,SET_PROTOTYPE_OF:ie});const le=\"destruct\";function ue(){return this}const pe=new FinalizationRegistry((([e,t,n])=>{n&&console.debug(`%c${String(t)}`,\"font-weight:bold\",\"collected\"),e(t)})),de=Object.create(null),fe=(e,t,{debug:n,handler:r,return:s,token:o=e}=de)=>{const a=s||new Proxy(e,r||de),i=[a,[t,e,!!n]];return!1!==o&&i.push(o),pe.register(...i),a},{Object:ye,Proxy:he,Reflect:me}=globalThis,{isArray:we}=Array,{ownKeys:ge}=me,{create:be,hasOwn:_e,values:Ae}=ye,Ee=(e,t)=>t===$?e[0]:t===O?e():t===D?e.$:e,ve=(e,t,n,r)=>{const s={type:{value:t}},o=_e(e,\"valueOf\");for(const a of Ae(ce)){let i=r(e[a]||me[a]);if(o&&a===Q){const{valueOf:r}=e,{value:s}=i;i={value(e,o,...a){return o===n?r.call(this,Ee(e,t)):s.call(this,e,o,...a)}}}s[a]=i}return be(e,s)},Se=(e,t,n,r=e)=>{if(r===e)switch(typeof e){case D:case I:r||(r=!1);case O:break;default:r=!1,t===e&&(t=ye(e))}const s=new he(t,n),{destruct:o}=n;return o?fe(e,o,{token:r,return:s}):s},ke=e=>t=>{const n=typeof t;return n===D?t?e.get(t)?.[0]??(e=>we(e)?$:D)(t):R:n},xe=e=>t=>{let n=typeof t;switch(n){case D:if(!t){n=R;break}case O:const r=e.get(t);r&&([n,t]=r)}return[n,t]},Be=e=>((e=>{pe.unregister(e)})(e),e);var je=e=>{const t=new WeakMap,n=Symbol(),r={},s=(e,n,r)=>(t.set(e,[n,r]),e),o={proxy:r,release:Be,pair:xe(t),typeOf:ke(t),isProxy:e=>t.has(e),valueOf:e=>e[n]??e.valueOf()};for(const t of ge(e)){if(_e(o,t))continue;const a=e[t];switch(t){case $:{const e=ve(a,t,n,(e=>({value([t],...n){return e.call(this,t,...n)}})));r[t]=(t,...n)=>s(Se(t,[t],e,...n),$,t);break}case O:{const e=ve(a,t,n,(e=>({value(t,...n){return e.call(this,t(),...n)}})));r[t]=(t,...n)=>{return s(Se(t,(r=t,ue.bind(r)),e,...n),O,t);var r};break}case D:{const e=ve(a,t,n,(e=>({value({$:t},...n){return e.call(this,t,...n)}})));r[t]=(t,...n)=>s(Se(t,{$:t},e,...n),D,t);break}default:{const e=ve(a,t,n,(e=>({value:e})));r[t]=(n,...r)=>s(Se(n,n,e,...r),t,n);break}}}return o};const{drop:Pe,get:$e,hold:Te}=(()=>{const e=new Map,t=new Map;let n=0;return{clear:()=>{e.clear(),t.clear()},drop:n=>{const[r,s]=typeof n===M?[t,e]:[e,t],o=r.has(n);return o&&(s.delete(r.get(n)),r.delete(n)),o},get:e=>t.get(e),hold:r=>{if(!e.has(r)){let s;for(;t.has(s=n++););e.set(r,s),t.set(s,r)}return e.get(r)}}})(),Fe=new Map;for(const e of Reflect.ownKeys(Symbol))typeof Symbol[e]===C&&(Fe.set(Symbol[e],e),Fe.set(e,Symbol[e]));const Oe=e=>Fe.get(e)||`.${Symbol.keyFor(e)||\"\"}`,{isArray:Re}=Array,{isView:Me}=ArrayBuffer,{[Y]:De}=Reflect;var Le=(e,t)=>{const n=new Map,r=(e,t)=>{let r=n.get(e)?.deref();return r||n.set(e,new WeakRef(r=t(e))),r},s=([e,t])=>{switch(e){case N[D]:return null==t?globalThis:typeof t===M?r(t,l.object):t;case N[$]:return typeof t===M?r(t,l.array):t;case N[O]:return typeof t===M?r(t,l.function):$e(parseInt(t));case N[C]:return(e=>Fe.get(e)||Symbol.for(e.slice(1)))(t);default:return t}},o=e=>{let[n,r]=p(e);switch(n){case D:if(r==globalThis||null==r)r=null;else if(typeof r===D){if(r=t(r),Re(r))return[N[$],r.map(o)];if(Me(r))return[N.view,r];{const e={};for(const t in r)e[t]=o(r[t]);r=e}}return[N[D],r];case $:return[N[$],typeof r===M?r:t(r).map(o)];case O:return[N[O],typeof r===O?String(Te(t(r))):r];case C:return[N[C],Oe(e)];default:return[N[n],r]}},a=(...t)=>s(e(...t)),i={[X]:(e,t,n)=>a(X,e,o(t),o(n)),[Z]:(e,t)=>a(Z,e,o(t)),[Q]:(e,t)=>a(Q,e,o(t)),[te]:e=>a(te,e),[ee]:(e,t)=>{const n=a(ee,e,o(t));if(n){const{get:e,set:t,value:r}=n;e&&(n.get=s(e)),t&&(n.set=s(t)),r&&(n.value=s(r))}return n},[ne]:(e,t)=>a(ne,e,o(t)),[re]:e=>a(re,e),[se]:e=>a(se,e).map(s),[oe]:e=>a(oe,e),[ae]:(e,t,n)=>a(ae,e,o(t),o(n)),[ie]:(e,t)=>a(ie,e,o(t)),[le](t){n.delete(t),e(le,t)}},c={[D]:i,[$]:i,[O]:{...i,[Y]:(e,...t)=>a(Y,e,...t.map(o)),[V]:(e,...t)=>a(V,e,...t.map(o))}},{proxy:l,isProxy:u,pair:p}=je(c);return{isProxy:u,global:l.object(null),method:async(e,t,...n)=>{const r=parseInt(t);switch(e){case Y:{const[e,t]=n;return o(await De($e(r),s(e),t.map(s)))}case le:Pe(r)}}}};const Ce={object(...e){return this.string(function(e){for(var t=e[0],n=1,r=arguments.length;n<r;n++)t+=arguments[n]+e[n];return t}(...e))},string(e){for(const t of e.split(/[\\r\\n]+/))if(t.trim().length){/^(\\s+)/.test(t)&&(e=e.replace(new RegExp(\"^\"+RegExp.$1,\"gm\"),\"\"));break}return e}},Ie=new WeakMap,Ne=e=>{const t=e||console,n={buffered:He,stderr:(t.stderr||console.error).bind(t),stdout:(t.stdout||console.log).bind(t)};return{stderr:(...e)=>n.stderr(...e),stdout:(...e)=>n.stdout(...e),async get(e){const t=await e;return Ie.set(t,n),t}}},Ue=new TextDecoder,He=(e,t=10)=>{const n=[];return r=>{if(r instanceof Uint8Array)for(const s of r)s===t?e(Ue.decode(new Uint8Array(n.splice(0)))):n.push(s);else e(r)}},We=(e,...t)=>Ce[typeof e](e,...t),{isArray:Je}=Array,{assign:qe,create:ze,defineProperty:Ke,entries:Ge}=Object,{all:Ye,resolve:Ve}=new Proxy(Promise,{get:(e,t)=>e[t].bind(e)}),Xe=(e,t=location.href)=>new URL(e,t.replace(/^blob:/,\"\")).href;function Ze(e){return e.startsWith(\".\")?Xe(e,this):e}const Qe=(e,t,n,r=!1,s=CustomEvent)=>{e.dispatchEvent(new s(`${t}:${n}`,{bubbles:!0,detail:{worker:r}}))},et=e=>Function(`'use strict';return (${e})`)(),tt=e=>e.replace(/^(?:\\n|\\r\\n)/,\"\"),nt=Symbol.for(\"polyscript.js_modules\"),rt=new Map;Ke(globalThis,nt,{value:rt}),new Proxy(rt,{get:(e,t)=>e.get(t),has:(e,t)=>e.has(t),ownKeys:e=>[...e.keys()]});const st=(e,t)=>!t.startsWith(\"_\"),ot=(e,t)=>new Proxy(e,{has:st,get:(e,n)=>e[t][n]}),at=(e,t)=>import(e).then((e=>{rt.set(t,{...e})})),it=e=>new Promise(((t,n)=>{document.querySelector(`link[rel=\"stylesheet\"][href=\"${e}\"]`)?t():document.head.append(qe(document.createElement(\"link\"),{rel:\"stylesheet\",href:e,onload:t,onerror:n}))})),ct=e=>/\\.css$/i.test(new URL(e).pathname),lt=(e,t)=>e.has(t),ut=e=>[...e.keys()];var pt=(e,t,n,r)=>{const s=globalThis[nt];if(n)for(let[e,t]of Ge(n)){let n=s.get(t);n&&!Je(n)||(s.set(t,n||(n=[])),n.push(e))}return((e,t,n,r)=>new Proxy(e,{has:lt,ownKeys:ut,get:(e,s)=>{let o=e.get(s);if(Je(o)){let a=o;o=null;for(let e of a)e=Xe(e,r),ct(e)?n.importCSS(e):(n.importJS(e,s),o=t[nt].get(s));e.set(s,o)}return o}}))(s,e,t,r)};const dt=new Map,ft=e=>dt.get(e),yt=(e,t)=>{try{return Function(\"require\",t)(ft)}catch(t){Ie.get(e).stderr(t)}};var ht={type:\"dummy\",module:()=>\"data:text/javascript,\",engine:e=>Ne().get(e),registerJSModule(e,t,n){dt.set(t,n)},run:yt,runAsync:yt,runEvent:async(e,t,n)=>{try{await Function(\"require\",\"e\",`return ${t}(e)`)(ft,n)}catch(t){Ie.get(e).stderr(t)}},transform:(e,t)=>t,writeFile(){}};const mt=Object.getOwnPropertyDescriptors(Response.prototype),wt=e=>\"function\"==typeof e,gt={get:(e,t)=>mt.hasOwnProperty(t)?((e,t,{get:n,value:r})=>n||!wt(r)?e.then((e=>e[t])):(...n)=>e.then((e=>e[t](...n))))(e,t,mt[t]):((e,t)=>wt(t)?t.bind(e):t)(e,e[t])};var bt=(e,...t)=>new Proxy(fetch(e,...t),gt);const _t=!globalThis.window,At=({FS:e,PATH:t,PATH_FS:n},r,s)=>{const o=n.resolve(r),a=t.dirname(o);return e.mkdirTree?e.mkdirTree(a):vt(e,a),e.writeFile(o,new Uint8Array(s),{canOwn:!0})},Et=e=>{const t=e.split(\"/\");return t.pop(),t.join(\"/\")},vt=(e,t)=>{const n=[];for(const r of t.split(\"/\"))\".\"!==r&&\"..\"!==r&&(n.push(r),r&&e.mkdir(n.join(\"/\")))},St=(e,t)=>{const n=[];for(const e of t.split(\"/\"))switch(e){case\"\":case\".\":break;case\"..\":n.pop();break;default:n.push(e)}return[e.cwd()].concat(n).join(\"/\").replace(/^\\/+/,\"/\")},kt=e=>{const t=e.map((e=>e.trim().replace(/(^[/]*|[/]*$)/g,\"\"))).filter((e=>\"\"!==e&&\".\"!==e)).join(\"/\");return e[0].startsWith(\"/\")?`/${t}`:t},xt=(e,t)=>bt(Xe(e,t)).arrayBuffer(),Bt=(e,t,n,r)=>Ye((e=>{for(const{files:t,to_file:n,from:r=\"\"}of e){if(void 0!==t&&void 0!==n)throw new Error(\"Cannot use 'to_file' and 'files' parameters together!\");if(void 0===t&&void 0===n&&r.endsWith(\"/\"))throw new Error(`Couldn't determine the filename from the path ${r}, please supply 'to_file' parameter.`)}return e.flatMap((({from:e=\"\",to_folder:t=\".\",to_file:n,files:r})=>{if(Je(r))return r.map((n=>({url:kt([e,n]),path:kt([t,n])})));const s=n||e.slice(1+e.lastIndexOf(\"/\"));return[{url:e,path:kt([t,s])}]}))})(n).map((({url:n,path:s})=>xt(n,r).then((n=>e.writeFile(t,s,n)))))),jt=(e,t)=>t.endsWith(\"/\")?`${t}${e.split(\"/\").pop()}`:t,Pt=(e,t)=>e.replace(/\\{.+?\\}/g,(e=>{if(!t.has(e))throw new SyntaxError(`Invalid template: ${e}`);return t.get(e)})),$t=(e,t,n,r)=>Ye((e=>{const t=new Map,n=new Set,r=[];for(const[s,o]of Ge(e))if(/^\\{.+\\}$/.test(s)){if(t.has(s))throw new SyntaxError(`Duplicated template: ${s}`);t.set(s,Pt(o,t))}else{const e=Pt(s,t),a=jt(e,Pt(o||\"./\",t));if(n.has(a)&&!a.endsWith(\"/*\"))throw new SyntaxError(`Duplicated destination: ${a}`);n.add(a),r.push({url:e,path:a})}return r})(n).map((({url:n,path:s})=>xt(n,r).then((r=>e.writeFile(t,s,r,n)))))),Tt=({main:e,worker:t},n)=>{const r=[];if(t&&_t)for(let[e,s]of Ge(t))e=Xe(e,n),r.push(at(e,s));if(e&&!_t)for(let[t,s]of Ge(e))t=Xe(t,n),ct(t)?it(t):r.push(at(t,s));return Ye(r)},Ft=e=>t=>{dispatchEvent(new CustomEvent(`${e}:progress`,{detail:t}))},{getPrototypeOf:Ot}=Object,Rt=e=>{const t=typeof e;switch(t){case\"function\":case\"undefined\":return\"\";case\"object\":return null===e?\"null\":\"object\";default:return t}};let Mt=\"coincident-\";try{new SharedArrayBuffer(4,{maxByteLength:8}),Mt+=crypto.randomUUID()}catch(Ot){Mt+=Math.random().toString(36).substring(2)}var Dt={ref:0,array:1,object:2,number:3,string:4,true:5,false:6,null:7,buffer:8,view:9,symbol:10,date:11,bigint:12,undefined:13,map:14,set:15,regexp:16,error:17};const{defineProperty:Lt}=Object,Ct=e=>{switch(e[Nt++]){case Dt.array:{const t=e[Nt++],n=[];e[Nt-2]=n;for(let r=0;r<t;r++)n[r]=Ct(e);return n}case Dt.object:{const t=e[Nt++],n={};e[Nt-2]=n;for(let r=0;r<t;r++)n[Ct(e)]=Ct(e);return n}case Dt.string:{const t=e[Nt++];return e[Nt-2]=t,t}case Dt.ref:return e[e[Nt++]];case Dt.number:return e[Nt++];case Dt.bigint:return BigInt(e[Nt++]);case Dt.true:return!0;case Dt.false:return!1;case Dt.null:return null;case Dt.undefined:return;case Dt.buffer:{const t=e[Nt++],n=e[Nt++],r=[t];n&&r.push({maxByteLength:n});const s=new ArrayBuffer(...r);e[Nt-3]=s;const o=new Uint8Array(s,0,t);for(let n=0;n<t;n++)o[n]=e[Nt++];return s}case Dt.view:{const t=e[Nt++],n=e[Nt++],r=e[Nt++],s=Nt-4,o=[Ct(e),n];r&&o.push(r);const a=new globalThis[t](...o);return e[s]=a,a}case Dt.symbol:return(t=e[Nt++]).startsWith(\"Symbol.\")?Symbol[t.slice(t.indexOf(\".\")+1)]:Symbol.for(t);case Dt.date:{const t=new Date(e[Nt++]);return e[Nt-2]=t,t}case Dt.map:{const t=e[Nt++],n=new Map;e[Nt-2]=n;for(let r=0;r<t;r++){const t=Ct(e),r=Ct(e);void 0!==t&&n.set(t,r)}return n}case Dt.set:{const t=e[Nt++],n=new Set;e[Nt-2]=n;for(let r=0;r<t;r++){const t=Ct(e);void 0!==t&&n.add(t)}return n}case Dt.regexp:{const t=e[Nt++],n=e[Nt++],r=new RegExp(t,n);return e[Nt-3]=r,r}case Dt.error:{const t=globalThis[e[Nt++]]||Error,n=e[Nt++],r=e[Nt++],s=new t(n,{cause:e[Nt++]});return e[Nt-5]=Lt(s,\"stack\",{value:r}),s}default:throw new TypeError(`Unknown type: ${e[Nt-1]}`)}var t},{parse:It}=JSON;let Nt=0;const{isArray:Ut}=Array,{isView:Ht}=ArrayBuffer,{stringify:Wt}=JSON,Jt=(e,t,n)=>{const r=t.get(n);return\"number\"==typeof r?(e.push(Dt.ref,r),!0):(t.set(n,e.length),!1)},qt=(e,t,n,r=Rt(n))=>{switch(r){case\"null\":e.push(Dt.null);break;case\"object\":if(Jt(e,t,n))break;switch(!0){case Ut(n):{const r=n.length;e.push(Dt.array,r);for(let s=0;s<r;s++)qt(e,t,n[s]);break}case Ht(n):{const{BYTES_PER_ELEMENT:r,buffer:s,byteOffset:o,length:a}=n;if(e.push(Dt.view,(e=>{for(;!(e.name in globalThis);)e=Ot(e);return e.name})(n.constructor),o,a!==(s.byteLength-o)/r?a:0),Jt(e,t,s))break;n=s}case n instanceof ArrayBuffer:{const t=n.byteLength,r=n.resizable?n.maxByteLength:0;if(e.push(Dt.buffer,t,r),t){const r=new Uint8Array(n,0,t);for(let t=0;t<r.length;t+=32767)e.push.apply(e,r.subarray(t,t+32767))}break}case n instanceof Date:e.push(Dt.date,+n);break;case n instanceof Map:{const r=e.push(Dt.map,0);let s=0;for(const[r,o]of n){const n=Rt(r),a=Rt(o);n&&a&&(qt(e,t,r,n),qt(e,t,o,a),s++)}e[r-1]=s;break}case n instanceof Set:{const r=e.push(Dt.set,0);let s=0;for(const r of n){const n=Rt(r);n&&(qt(e,t,r,n),s++)}e[r-1]=s;break}case n instanceof RegExp:e.push(Dt.regexp,n.source,n.flags);break;case n instanceof Error:e.push(Dt.error,n.name,n.message,n.stack,n.cause);break;default:{if(\"toJSON\"in n){const r=n.toJSON();if(r===n){e.push(Dt.object,0);break}if(Jt(e,t,n=r))break}const r=e.push(Dt.object,0);let s=0;for(const r in n){const o=n[r],a=Rt(o);a&&(qt(e,t,r,\"string\"),qt(e,t,o,a),s++)}e[r-1]=s;break}}break;case\"boolean\":e.push(n?Dt.true:Dt.false);break;case\"string\":if(Jt(e,t,n))break;e.push(Dt.string,n);break;case\"bigint\":e.push(Dt[r],n.toString());break;case\"symbol\":{const t=(e=>{const t=String(e).slice(7,-1);return t.startsWith(\"Symbol.\")||Symbol.keyFor(e)?t:\"\"})(n);if(t){e.push(Dt[r],t);break}}case\"\":e.push(Dt.undefined);break;default:e.push(Dt[r],n)}},zt={parse:e=>{return t=It(e),Nt=0,t.length?Ct(t):void 0;var t},stringify:e=>Wt((e=>{const t=[];return qt(t,new Map,e),t})(e))},Kt=new WeakMap,Gt=async(e,t,n,r,s)=>{r.files&&(t(\"Loading files\"),await $t(e,n,r.files,s),t(\"Loaded files\")),r.fetch&&(t(\"Loading fetch\"),await Bt(e,n,r.fetch,s),t(\"Loaded fetch\")),r.js_modules&&(t(\"Loading JS modules\"),await Tt(r.js_modules,s),t(\"Loaded JS modules\"))},Yt=(e,t,n)=>{\"polyscript\"===t&&(n.lazy_py_modules=async(...t)=>(await Kt.get(e)(t),t.map((t=>e.pyimport(t)))),n.storage=async e=>{const t=new i(e);return await t.sync(),t},n.JSON=zt),e.registerJsModule(t,n)},Vt=(e,t)=>{if(e.endsWith(\"/*\")){if(/\\.(zip|whl|tgz|tar(?:\\.gz)?)$/.test(t))return RegExp.$1;throw new Error(`Unsupported archive ${t}`)}return\"\"},Xt=(e,t,...n)=>{try{return e.runPython(We(t),...n)}catch(t){Ie.get(e).stderr(t)}},Zt=async(e,t,...n)=>{try{return await e.runPythonAsync(We(t),...n)}catch(t){Ie.get(e).stderr(t)}},Qt=async(e,t,n)=>{const[r,...s]=t.split(\".\");let o,a=e.globals.get(r);for(const e of s)[o,a]=[a,a[e]];try{await a.call(o,n)}catch(t){Ie.get(e).stderr(t)}};var en=(new TextEncoder).encode(\"_F='github:'\\n_E='user-agent'\\n_D=True\\n_C=False\\n_B='/'\\n_A=None\\nfrom uio import StringIO\\nimport sys\\nclass Response:\\n\\tdef __init__(A,f):A.raw=f;A.encoding='utf-8';A._cached=_A\\n\\tdef close(A):\\n\\t\\tif A.raw:A.raw.close();A.raw=_A\\n\\t\\tA._cached=_A\\n\\t@property\\n\\tdef content(self):\\n\\t\\tA=self\\n\\t\\tif A._cached is _A:\\n\\t\\t\\ttry:A._cached=A.raw.read()\\n\\t\\t\\tfinally:A.raw.close();A.raw=_A\\n\\t\\treturn A._cached\\n\\t@property\\n\\tdef text(self):return str(self.content,self.encoding)\\n\\tdef json(A):import ujson;return ujson.loads(A.content)\\nHEADERS_TO_IGNORE=_E,\\ntry:import js\\nexcept Exception as err:raise OSError('This version of urequests can only be used in the browser')\\nHEADERS_TO_IGNORE=_E,\\ndef request(method,url,data=_A,json=_A,headers={},stream=_A,auth=_A,timeout=_A,parse_headers=_D):\\n\\tE=timeout;D=method;C=data;from js import XMLHttpRequest as G;A=G.new();A.withCredentials=_C\\n\\tif auth is not _A:import ubinascii;H,I=auth;A.open(D,url,_C,H,I)\\n\\telse:A.open(D,url,_C)\\n\\tfor(F,J)in headers.items():\\n\\t\\tif F.lower()not in HEADERS_TO_IGNORE:A.setRequestHeader(F,J)\\n\\tif E:A.timeout=int(E*1000)\\n\\tif json is not _A:assert C is _A;import ujson;C=ujson.dumps(json);A.setRequestHeader('Content-Type','application/json')\\n\\tA.send(C);B=Response(StringIO(A.responseText));B.status_code=A.status;B.reason=A.statusText;B.headers=A.getAllResponseHeaders();return B\\ndef get(url,**A):return request('GET',url,**A)\\n_PACKAGE_INDEX=const('https://micropython.org/pi/v2')\\n_CHUNK_SIZE=128\\ndef _ensure_path_exists(path):\\n\\timport os;A=path.split(_B)\\n\\tif not A[0]:A.pop(0);A[0]=_B+A[0]\\n\\tB=''\\n\\tfor C in range(len(A)-1):\\n\\t\\tB+=A[C]\\n\\t\\ttry:os.stat(B)\\n\\t\\texcept:os.mkdir(B)\\n\\t\\tB+=_B\\ndef _chunk(src,dest):\\n\\tA=memoryview(bytearray(_CHUNK_SIZE))\\n\\twhile _D:\\n\\t\\tB=src.readinto(A)\\n\\t\\tif B==0:break\\n\\t\\tdest(A if B==_CHUNK_SIZE else A[:B])\\ndef _check_exists(path,short_hash):\\n\\tA=short_hash;import os\\n\\ttry:\\n\\t\\timport binascii as C,hashlib as D\\n\\t\\twith open(path,'rb')as E:B=D.sha256();_chunk(E,B.update);F=str(C.hexlify(B.digest())[:len(A)],'utf-8');return F==A\\n\\texcept:return _C\\ndef _rewrite_url(url,branch=_A):\\n\\tB=branch;A=url\\n\\tif not B:B='HEAD'\\n\\tif A.startswith(_F):A=A[7:].split(_B);A='https://raw.githubusercontent.com/'+A[0]+_B+A[1]+_B+B+_B+_B.join(A[2:])\\n\\treturn A\\ndef _download_file(url,dest):\\n\\tB=dest;A=get(url)\\n\\ttry:\\n\\t\\tif A.status_code!=200:print('Error',A.status_code,'requesting',url);return _C\\n\\t\\tprint('Copying:',B);_ensure_path_exists(B)\\n\\t\\twith open(B,'wb')as C:_chunk(A.raw,C.write)\\n\\t\\treturn _D\\n\\tfinally:A.close()\\ndef _install_json(package_json_url,index,target,version,mpy):\\n\\tK='File not found: {} {}';I=version;H=index;G=package_json_url;D=target;E=get(_rewrite_url(G,I))\\n\\ttry:\\n\\t\\tif E.status_code!=200:print('Package not found:',G);return _C\\n\\t\\tF=E.json()\\n\\tfinally:E.close()\\n\\tfor(A,C)in F.get('hashes',()):\\n\\t\\tB=D+_B+A\\n\\t\\tif _check_exists(B,C):print('Exists:',B)\\n\\t\\telse:\\n\\t\\t\\tL='{}/file/{}/{}'.format(H,C[:2],C)\\n\\t\\t\\tif not _download_file(L,B):print(K.format(A,C));return _C\\n\\tfor(A,J)in F.get('urls',()):\\n\\t\\tB=D+_B+A\\n\\t\\tif not _download_file(_rewrite_url(J,I),B):print(K.format(A,J));return _C\\n\\tfor(M,N)in F.get('deps',()):\\n\\t\\tif not _install_package(M,H,D,N,mpy):return _C\\n\\treturn _D\\ndef _install_package(package,index,target,version,mpy):\\n\\tD=index;C=target;B=version;A=package\\n\\tif A.startswith('http://')or A.startswith('https://')or A.startswith(_F):\\n\\t\\tif A.endswith('.py')or A.endswith('.mpy'):print('Downloading {} to {}'.format(A,C));return _download_file(_rewrite_url(A,B),C+_B+A.rsplit(_B)[-1])\\n\\t\\telse:\\n\\t\\t\\tif not A.endswith('.json'):\\n\\t\\t\\t\\tif not A.endswith(_B):A+=_B\\n\\t\\t\\t\\tA+='package.json'\\n\\t\\t\\tprint('Installing {} to {}'.format(A,C))\\n\\telse:\\n\\t\\tif not B:B='latest'\\n\\t\\tprint('Installing {} ({}) from {} to {}'.format(A,B,D,C));E=sys.implementation._mpy&255 if mpy and hasattr(sys.implementation,'_mpy')else'py';A='{}/package/{}/{}/{}.json'.format(D,'py',A,B)\\n\\treturn _install_json(A,D,C,B,mpy)\\ndef install(package,index=_A,target=_A,version=_A,mpy=_D):\\n\\tB=target;A=index\\n\\tif not B:\\n\\t\\tfor C in sys.path:\\n\\t\\t\\tif C.endswith('/lib'):B=C;break\\n\\t\\telse:print('Unable to find lib dir in sys.path');return\\n\\tif not A:A=_PACKAGE_INDEX\\n\\tif _install_package(package,A.rstrip(_B),B,version,mpy):print('Done')\\n\\telse:print('Package may be partially installed')\");const tn=async e=>(await import(\"./toml-DiUM0_qs.js\")).parse(e);async function nn(e,t){return new Promise(((n,r)=>{e.syncfs(t,(e=>{e?r(e):n()}))}))}function rn(e){const t=e.FS,n=e.FS.filesystems.MEMFS,r=e.PATH,s={DIR_MODE:16895,FILE_MODE:33279,mount:function(e){if(!e.opts.fileSystemHandle)throw new Error(\"opts.fileSystemHandle is required\");return n.mount.apply(null,arguments)},syncfs:async(e,t,n)=>{try{const r=s.getLocalSet(e),o=await s.getRemoteSet(e),a=t?o:r,i=t?r:o;await s.reconcile(e,a,i),n(null)}catch(e){n(e)}},getLocalSet:e=>{let n=Object.create(null);function s(e){return\".\"!==e&&\"..\"!==e}function o(e){return t=>r.join2(e,t)}let a=t.readdir(e.mountpoint).filter(s).map(o(e.mountpoint));for(;a.length;){let e=a.pop(),r=t.stat(e);t.isDir(r.mode)&&a.push.apply(a,t.readdir(e).filter(s).map(o(e))),n[e]={timestamp:r.mtime,mode:r.mode}}return{type:\"local\",entries:n}},getRemoteSet:async e=>{const t=Object.create(null),n=await sn(e.opts.fileSystemHandle);for(const[o,a]of n)\".\"!==o&&(t[r.join2(e.mountpoint,o)]={timestamp:\"file\"===a.kind?(await a.getFile()).lastModifiedDate:new Date,mode:\"file\"===a.kind?s.FILE_MODE:s.DIR_MODE});return{type:\"remote\",entries:t,handles:n}},loadLocalEntry:e=>{const r=t.lookupPath(e).node,s=t.stat(e);if(t.isDir(s.mode))return{timestamp:s.mtime,mode:s.mode};if(t.isFile(s.mode))return r.contents=n.getFileDataAsTypedArray(r),{timestamp:s.mtime,mode:s.mode,contents:r.contents};throw new Error(\"node type not supported\")},storeLocalEntry:(e,n)=>{if(t.isDir(n.mode))t.mkdirTree(e,n.mode);else{if(!t.isFile(n.mode))throw new Error(\"node type not supported\");t.writeFile(e,n.contents,{canOwn:!0})}t.chmod(e,n.mode),t.utime(e,n.timestamp,n.timestamp)},removeLocalEntry:e=>{var n=t.stat(e);t.isDir(n.mode)?t.rmdir(e):t.isFile(n.mode)&&t.unlink(e)},loadRemoteEntry:async e=>{if(\"file\"===e.kind){const t=await e.getFile();return{contents:new Uint8Array(await t.arrayBuffer()),mode:s.FILE_MODE,timestamp:t.lastModifiedDate}}if(\"directory\"===e.kind)return{mode:s.DIR_MODE,timestamp:new Date};throw new Error(\"unknown kind: \"+e.kind)},storeRemoteEntry:async(e,n,s)=>{const o=e.get(r.dirname(n)),a=t.isFile(s.mode)?await o.getFileHandle(r.basename(n),{create:!0}):await o.getDirectoryHandle(r.basename(n),{create:!0});if(\"file\"===a.kind){const e=await a.createWritable();await e.write(s.contents),await e.close()}e.set(n,a)},removeRemoteEntry:async(e,t)=>{const n=e.get(r.dirname(t));await n.removeEntry(r.basename(t)),e.delete(t)},reconcile:async(e,n,o)=>{let a=0;const i=[];Object.keys(n.entries).forEach((function(e){const r=n.entries[e],s=o.entries[e];(!s||t.isFile(r.mode)&&r.timestamp.getTime()>s.timestamp.getTime())&&(i.push(e),a++)})),i.sort();const c=[];if(Object.keys(o.entries).forEach((function(e){n.entries[e]||(c.push(e),a++)})),c.sort().reverse(),!a)return;const l=\"remote\"===n.type?n.handles:o.handles;for(const t of i){const n=r.normalize(t.replace(e.mountpoint,\"/\")).substring(1);if(\"local\"===o.type){const e=l.get(n),r=await s.loadRemoteEntry(e);s.storeLocalEntry(t,r)}else{const e=s.loadLocalEntry(t);await s.storeRemoteEntry(l,n,e)}}for(const t of c)if(\"local\"===o.type)s.removeLocalEntry(t);else{const n=r.normalize(t.replace(e.mountpoint,\"/\")).substring(1);await s.removeRemoteEntry(l,n)}}};return e.FS.filesystems.NATIVEFS_ASYNC=s,async function(e,n){if(\"FileSystemDirectoryHandle\"!==n.constructor.name)throw new TypeError(\"Expected argument 'fileSystemHandle' to be a FileSystemDirectoryHandle\");return function(e){t.mkdirTree?t.mkdirTree(e):vt(t,e);const{node:n}=t.lookupPath(e,{follow_mount:!1});if(t.isMountpoint(n))throw new Error(`path '${e}' is already a file system mount point`);if(!t.isDir(n.mode))throw new Error(`path '${e}' points to a file not a directory`);for(const t in n.contents)throw new Error(`directory '${e}' is not empty`)}(e),t.mount(t.filesystems.NATIVEFS_ASYNC,{fileSystemHandle:n},e),await nn(t,!0),{syncfs:async()=>await nn(t,!1)}}}const sn=async e=>{const t=[];await async function e(n){for await(const r of n.values())t.push(r),\"directory\"===r.kind&&await e(r)}(e);const n=new Map;n.set(\".\",e);for(const r of t){const t=(await e.resolve(r)).join(\"/\");n.set(t,r)}return n},on=(e,t)=>{try{e.mkdir(t)}catch(e){}},an=Ft(\"mpy\");var cn={type:\"micropython\",module:(e=\"1.25.0\")=>`https://cdn.jsdelivr.net/npm/@micropython/micropython-webassembly-pyscript@${e}/micropython.mjs`,async engine({loadMicroPython:e},t,n,r){const{stderr:s,stdout:o,get:a}=Ne({stderr:He(console.error),stdout:He(console.log)});n=n.replace(/\\.m?js$/,\".wasm\"),an(\"Loading MicroPython\");const i=await a(e({linebuffer:!1,stderr:s,stdout:o,url:n})),c=ln.bind(this,i,r);return Kt.set(i,c),await Gt(this,an,i,t,r),this.writeFile(i,\"./mip.py\",en),t.packages&&(an(\"Loading packages\"),await c(t.packages.map(Ze,r)),an(\"Loaded packages\")),an(\"Loaded MicroPython\"),i.mountNativeFS||(i.mountNativeFS=rn(i._module)),i},registerJSModule:Yt,run:Xt,runAsync:Zt,runEvent:Qt,transform:(e,t)=>e.PyProxy.toJs(t),writeFile:(e,t,n,r)=>{const{FS:s,_module:{PATH:o,PATH_FS:a}}=e,i={FS:s,PATH:o,PATH_FS:a},c=Vt(t,r);if(c){const r=t.slice(0,-1);switch(\"./\"!==r&&s.mkdir(r),c){case\"whl\":case\"zip\":{const e=new Blob([n],{type:\"application/zip\"});return import(\"./zip-DxlTOqbw.js\").then((async({BlobReader:t,Uint8ArrayWriter:n,ZipReader:a})=>{const i=new a(new t(e));for(const e of await i.getEntries()){const{directory:t,filename:a}=e,i=r+a;if(t)on(s,i);else{on(s,o.dirname(i));const t=await e.getData(new n);s.writeFile(i,t,{canOwn:!0})}}i.close()}))}case\"tgz\":case\"tar.gz\":{const t=\"./_.tar.gz\";return At(i,t,n),void e.runPython(`\\n import os, gzip, tarfile\\n tar = tarfile.TarFile(fileobj=gzip.GzipFile(fileobj=open(\"${t}\", \"rb\")))\\n for f in tar:\\n name = f\"${r}{f.name}\"\\n if f.type == tarfile.DIRTYPE:\\n if f.name != \"./\":\\n os.mkdir(name.strip(\"/\"))\\n else:\\n dir = os.path.dirname(name)\\n if not os.path.exists(dir):\\n os.mkdir(dir)\\n source = tar.extractfile(f)\\n with open(name, \"wb\") as dest:\\n dest.write(source.read())\\n dest.close()\\n tar.close()\\n os.remove(\"${t}\")\\n `)}}}return At(i,t,n)}};async function ln(e,t,n){let r;for(const s of n)if(s.endsWith(\".whl\")){const n=Xe(s,t),r=await bt(n).arrayBuffer();await this.writeFile(e,\"./*\",r,n)}else r||(r=e.pyimport(\"mip\")),r.install(s)}const un={dict_converter:Object.fromEntries},{stringify:pn}=JSON;let dn=!1;const fn=e=>(...t)=>{try{return dn=!0,e(...t)}finally{dn=!1}};let yn=!1;const hn=()=>{if(yn)return;yn=!0;const e=new WeakMap,t=e=>e.destroy(),n=n=>{for(let r=0;r<n.length;r++){const s=n[r];if(\"function\"==typeof s&&\"copy\"in s){dn=!1;let o=e.get(s)?.deref();if(!o)try{o=fe(s.copy(),t),e.set(s,new WeakRef(o))}catch(e){console.error(e)}o&&(n[r]=o),dn=!0}}},{call:r}=Function,s=r.bind(r,r.apply);Object.defineProperties(Function.prototype,{apply:{value(e,t){return dn&&n(t),s(this,e,t)}},call:{value(e,...t){return dn&&n(t),s(this,e,t)}}})},mn=Ft(\"py\"),wn=new WeakMap;var gn={type:\"pyodide\",module:(e=\"0.27.5\")=>`https://cdn.jsdelivr.net/pyodide/v${e}/full/pyodide.mjs`,async engine({loadPyodide:e},t,n,r){_t||\"auto\"!==t.experimental_create_proxy||hn(),mn(\"Loading Pyodide\");let{packages:s,index_urls:o}=t;s&&(s=s.map(Ze,r)),mn(\"Loading Storage\");const a=n.slice(0,n.lastIndexOf(\"/\")),c=new i(a),l={indexURL:a},u=\"never\"!==t.packages_cache;if(await c.sync(),u){if(s){s=s.sort();const e=pn(s);if(c.has(e)){const t=new Blob([c.get(e)],{type:\"application/json\"});l.lockFileURL=URL.createObjectURL(t),l.packages=s.map((e=>e.split(/[>=<]=/)[0])),s=null}}}else c.clear();mn(\"Loaded Storage\");const{stderr:p,stdout:d,get:f}=Ne(),y=await f(e({stderr:p,stdout:d,...l})),h=_n.bind(y);return o&&wn.set(y,o),Kt.set(y,h),await Gt(this,mn,y,t,r),s&&await h(s,c,u),await c.close(),l.lockFileURL&&URL.revokeObjectURL(l.lockFileURL),mn(\"Loaded Pyodide\"),y},registerJSModule:Yt,run:fn(Xt),runAsync:fn(Zt),runEvent:fn(Qt),transform:(e,t)=>bn.call(e,t),writeFile:(e,t,n,r)=>{const s=Vt(t,r);if(s)return e.unpackArchive(n,s,{extractDir:t.slice(0,-1)});const{FS:o,PATH:a,_module:{PATH_FS:i}}=e;return At({FS:o,PATH:a,PATH_FS:i},t,n)}};function bn(e){const{ffi:{PyProxy:t}}=this;if(e&&\"object\"==typeof e){if(e instanceof t)return e.toJs(un);if(e instanceof Map)return new Map([...e.entries()]);if(Je(e))return e.map(bn,this)}return e}async function _n(e,t,n=!1){const{log:r}=console,s=(e,...t)=>{r(e,...t),console.log=r,mn(e),console.log=s};console.log=s,await this.loadPackage(\"micropip\");const o=this.pyimport(\"micropip\");if(wn.has(this)&&o.set_index_urls(wn.get(this)),await o.install(e,{keep_going:!0}),console.log=r,n&&t instanceof i){const n=o.freeze();t.set(pn(e),n)}o.destroy()}const An=\"ruby-wasm-wasi\",En=An.replace(/\\W+/g,\"_\");var vn={type:An,experimental:!0,module:(e=\"2.7.1\")=>`https://cdn.jsdelivr.net/npm/@ruby/3.2-wasm-wasi@${e}/dist/browser/+esm`,async engine({DefaultRubyVM:e},t,n,r){n=n.replace(/\\/browser\\/\\+esm$/,\"/ruby.wasm\");const s=await bt(n).arrayBuffer(),o=await WebAssembly.compile(s),{vm:a}=await e(o);return t.files&&await $t(this,a,t.files,r),t.fetch&&await Bt(this,a,t.fetch,r),t.js_modules&&await Tt(t.js_modules,r),a},registerJSModule(e,t,n){t=t.replace(/\\W+/g,\"__\");const r=`__module_${En}_${t}`;globalThis[r]=n,this.run(e,`require \"js\";$${t}=JS.global[:${r}]`),delete globalThis[r]},run:(e,t,...n)=>e.eval(We(t),...n),runAsync:(e,t,...n)=>e.evalAsync(We(t),...n),async runEvent(e,t,n){if(/^xworker\\.(on\\w+)$/.test(t)){const{$1:t}=RegExp,r=`__module_${En}_event`;globalThis[r]=n,this.run(e,`require \"js\";$xworker.call(\"${t}\",JS.global[:${r}])`),delete globalThis[r]}else{const r=this.run(e,`method(:${t})`);await r.call(t,e.wrap(n))}},transform:(e,t)=>t,writeFile:()=>{throw new Error(`writeFile is not supported in ${An}`)}};var Sn={type:\"wasmoon\",module:(e=\"1.16.0\")=>`https://cdn.jsdelivr.net/npm/wasmoon@${e}/+esm`,async engine({LuaFactory:e,LuaLibraries:t},n,r,s){const{stderr:o,stdout:a,get:i}=Ne(),c=await i((new e).createEngine());return c.global.getTable(t.Base,(e=>{c.global.setField(e,\"print\",a),c.global.setField(e,\"printErr\",o)})),n.files&&await $t(this,c,n.files,s),n.fetch&&await Bt(this,c,n.fetch,s),n.js_modules&&await Tt(n.js_modules,s),c},registerJSModule:(e,t,n)=>{e.global.set(t,n)},run:(e,t,...n)=>{try{return e.doStringSync(We(t),...n)}catch(t){Ie.get(e).stderr(t)}},runAsync:async(e,t,...n)=>{try{return await e.doString(We(t),...n)}catch(t){Ie.get(e).stderr(t)}},runEvent:async(e,t,n)=>{const[r,...s]=t.split(\".\");let o,a=e.global.get(r);for(const e of s)[o,a]=[a,a[e]];try{await a.call(o,n)}catch(t){Ie.get(e).stderr(t)}},transform:(e,t)=>t,writeFile:({cmodule:{module:{FS:e}}},t,n)=>((e,t,n)=>(vt(e,Et(t)),t=St(e,t),e.writeFile(t,new Uint8Array(n),{canOwn:!0})))(e,t,n)};const kn=new WeakMap,xn=async(e,t)=>{const{shelter:n,destroy:r,io:s}=kn.get(e),{output:o,result:a}=await n.captureR(We(t));for(const{type:e,data:t}of o)s[e](t);return fe(a,r,{token:!1})};var Bn={type:\"webr\",experimental:!0,module:(e=\"0.4.2\")=>`https://cdn.jsdelivr.net/npm/webr@${e}/dist/webr.mjs`,async engine(e,t,n,r){const{get:s}=Ne(),o=new e.WebR;await s(o.init().then((()=>o)));const a=await new o.Shelter;return kn.set(o,{module:e,shelter:a,destroy:a.destroy.bind(a),io:Ie.get(o)}),t.files&&await $t(this,o,t.files,r),t.fetch&&await Bt(this,o,t.fetch,r),t.js_modules&&await Tt(t.js_modules,r),o},registerJSModule(e,t){console.warn(`Experimental interpreter: module ${t} is not supported (yet)`)},run:xn,runAsync:xn,async runEvent(e,t,n){await e.evalRVoid(`${t}(event)`,{env:{event:{type:[n.type]}}})},transform:(e,t)=>(console.log(\"transforming\",t),t),writeFile:()=>{}};const jn=new Map,Pn=new Map,$n=new Proxy(new Map,{get(e,t){if(!e.has(t)){const[n,...r]=t.split(\"@\"),s=jn.get(n),o=/^(?:\\.?\\.?\\/|[a-z0-9-]+:\\/\\/)/i.test(r)?r.join(\"@\"):s.module(...r);e.set(t,{url:o,module:import(o),engine:s.engine.bind(s)})}const{url:n,module:r,engine:s}=e.get(t);return(e,o)=>r.then((r=>(Pn.set(t,e),s(r,e,n,o))))}}),Tn=e=>{for(const t of[].concat(e.type))jn.set(t,e)};for(const e of[ht,cn,gn,vn,Sn,Bn])Tn(e);const{parse:Fn}=JSON,On=(e,t,n={})=>{const[r,s]=((e,t=\"./config.txt\")=>{let n=typeof e;return\"string\"===n&&/\\.(json|toml|txt)$/.test(e)?n=RegExp.$1:e=t,[Xe(e),n]})(e,t);return\"json\"===s?n=bt(r).json():\"toml\"===s?n=bt(r).text().then(tn):\"string\"===s?n=Rn(e):\"object\"===s&&e?n=e:\"txt\"===s&&\"string\"==typeof n&&(n=Rn(n)),[n,e=r]},Rn=e=>{try{return Fn(e)}catch(t){return tn(e)}},Mn=\"BeforeRun\",Dn=\"AfterRun\",Ln=[`code${Mn}`,`code${Mn}Async`,`code${Dn}`,`code${Dn}Async`],Cn=[\"onWorker\",\"onReady\",`on${Mn}`,`on${Mn}Async`,`on${Dn}`,`on${Dn}Async`];function In(e,t){const{run:n,runAsync:r}=jn.get(this.type);return{...e,run:n.bind(this,t),runAsync:r.bind(this,t)}}const Nn=(e,t,n,r,s,o)=>{if(s||o){const a=In.bind(e,t),i=r?\"runAsync\":\"run\",c=e[i];e[i]=r?async function(e,t,...r){s&&await s.call(this,a(e),n);const i=await c.call(this,e,t,...r);return o&&await o.call(this,a(e),n),i}:function(e,t,...r){s&&s.call(this,a(e),n);const i=c.call(this,e,t,...r);return o&&o.call(this,a(e),n),i}}};let Un,Hn,Wn;const Jn=(e,t)=>{addEventListener(e,t||(async t=>{try{await Un,Hn(`xworker.on${e}`,t)}catch(e){postMessage(e)}}),!!t&&{once:!0})},{proxy:qn,native:zn,window:Kn,isWindowProxy:Gn}=await(async e=>{let t=!1;const n=e?.decoder||P,r=await G({...e,decoder(e){const r=n(e),s=H(e);return(e,n)=>t?(t=!1,s(e,n)):r(e,n)}}),s=r.proxy[w],{isProxy:o,global:a,method:i}=Le((function(...e){return t=!0,s.apply(this,e)}),e?.transform||(e=>e));return r.proxy[g]=i,{...r,window:a,isWindowProxy:o}})({decoder:h,transfer:!1,transform:e=>Wn?Wn(e):e}),Yn={polyfill:!zn,sync:qn,window:zn?Kn:null,isWindowProxy:Gn,onmessage:console.info,onerror:console.error,onmessageerror:console.warn,postMessage:postMessage.bind(self)};Jn(\"message\",(({data:{options:e,config:t,configURL:n,code:r,hooks:s}})=>{Un=(async()=>{try{const{id:o,tag:c,type:l,custom:u,version:p,config:d,async:f}=e,y=((e,t=\"\")=>`${e}@${t}`.replace(/@$/,\"\"))(l,p),h=await((e,t,n,r={})=>(t&&([r,t]=On(t,n,r)),Ve(r).then((n=>$n[e](n,t)))))(y,t,n,d),{js_modules:m}=Pn.get(y),w=m?.main,g=ze(jn.get(l)),b=((e,t,n,r)=>({type:t,config:n,interpreter:r,io:Ie.get(r),run:(t,...n)=>e.run(r,t,...n),runAsync:(t,...n)=>e.runAsync(r,t,...n),runEvent:(...t)=>e.runEvent(r,...t)}))(g,u||l,d||{},h);let _=\"run\";if(f&&(_+=\"Async\"),s){let e,t,n=\"\",r=\"\";for(const e of Ln){const t=s[e];if(t){const s=e.endsWith(\"Async\");(s&&f||!s&&!f)&&(e.startsWith(\"codeBefore\")?n=t:r=t)}}(n||r)&&((e,t,n,r)=>{const s=e[t].bind(e);e[t]=\"run\"===t?(e,t,...o)=>{n&&s(e,n,...o);const a=s(e,tt(t),...o);return r&&s(e,r,...o),a}:async(e,t,...o)=>{n&&await s(e,n,...o);const a=await s(e,tt(t),...o);return r&&await s(e,r,...o),a}})(g,_,n,r);for(const n of Cn.slice(2)){const r=s[n];if(r){const s=n.endsWith(\"Async\");if(s&&f||!s&&!f){const s=et(r);n.startsWith(\"onBefore\")?e=s:t=s}}}Nn(g,b,Yn,f,e,t)}let A,E,v,S=null,k=\"\";zn&&(({CustomEvent:A,document:E}=Kn),S=o&&E.getElementById(o)||null,v=e=>Qe(S,u||l,e,!0,A));const x=pt(Kn,qn,w,t);if(((e,t,n,r)=>{if(\"pyodide\"===e)return;const s=\"polyscript.js_modules\";for(const e of Reflect.ownKeys(r))t.registerJSModule(n,`${s}.${e}`,ot(r,e));t.registerJSModule(n,s,r)})(l,g,h,x),g.registerJSModule(h,\"polyscript\",{IDBMap:a,IDBMapSync:i,xworker:Yn,currentScript:S,config:b.config,js_modules:x,get target(){return!k&&S&&(\"SCRIPT\"===c?S.after(qe(Kn.document.createElement(`script-${u||l}`),{id:k=`${o}-target`})):(k=o,S.replaceChildren(),S.style.display=\"block\")),k}}),Hn=g.runEvent.bind(g,h),Wn=g.transform.bind(g,h),S&&v(\"ready\"),s?.onReady&&et(s?.onReady).call(g,In.call(g,b,h),Yn),await g[_](h,r),[\"micropython\",\"pyodide\"].includes(g.type)){const e=\"polyscript\",t=`__${e}_workers__`,n=\"__export__\";h.runPython([`import js as ${t}`,`${t}.${t} = \"${n}\" in locals() and ${n} or []`,`del ${t}`].join(\"\\n\"));const r=[...globalThis[t]];delete globalThis[t],r.length&&h.runPython([`from ${e} import xworker as ${t}`,...r.map((e=>`${t}.sync.${e} = ${e}`)),`del ${t}`].join(\"\\n\"))}return S&&v(\"done\"),postMessage(\"polyscript:done\"),h}catch(e){postMessage(e)}})(),Jn(\"error\"),Jn(\"message\"),Jn(\"messageerror\"),zn&&addEventListener(\"py:progress\",(({type:e,detail:t})=>{Kn.dispatchEvent(new Kn.CustomEvent(e,{detail:t}))}))}));\n".replace(re,place)],{type:'text/javascript'})), ...args) | ||
/* c8 ignore stop */ |
{ | ||
"name": "polyscript", | ||
"version": "0.17.14", | ||
"version": "0.17.15", | ||
"description": "PyScript single core to rule them all", | ||
@@ -91,3 +91,3 @@ "main": "./esm/index.js", | ||
"codedent": "^0.1.2", | ||
"coincident": "^3.0.3", | ||
"coincident": "^3.0.4", | ||
"gc-hook": "^0.4.1", | ||
@@ -100,4 +100,4 @@ "html-escaper": "^3.0.3", | ||
"worker": { | ||
"blob": "sha256-FqSJE1Ov06KP87tvWc/GU+HPjpxbA3YFkGzEhFDW+Jk=" | ||
"blob": "sha256-xlgyKcR1rQj2E2TB4Pp07IZjwgkIyN9uf8HfcuUXwro=" | ||
} | ||
} |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
1208860
0Updated