diff --git a/docs/index.js b/docs/index.js index d0001c7c..5464e7ef 100644 --- a/docs/index.js +++ b/docs/index.js @@ -1,2 +1,2 @@ -const e=(e,t=document)=>[...t.querySelectorAll(e)],t=(e,t=document)=>{const n=(new XPathEvaluator).createExpression(e).evaluate(t,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE),r=[];for(let e=0,{snapshotLength:t}=n;e<t;e++)r.push(n.snapshotItem(e));return r},n=Object.getOwnPropertyDescriptors(Response.prototype),r=e=>"function"==typeof e,s={get:(e,t)=>n.hasOwnProperty(t)?((e,t,{get:n,value:s})=>n||!r(s)?e.then(e=>e[t]):(...n)=>e.then(e=>e[t](...n)))(e,t,n[t]):((e,t)=>r(t)?t.bind(e):t)(e,e[t])};var o=(e,...t)=>new Proxy(fetch(e,...t),s);const{assign:a}=Object,i="entries",c="readonly",l="readwrite",u={durability:"default",prefix:"IDBMap"},p=({target:{result:e}})=>e;class f extends EventTarget{#e;#t;#n;async#r(e,t){const n=(await this.#e).transaction(i,t,this.#t);return new Promise((t,r)=>a(e(n.objectStore(i)),{onsuccess:t,onerror:r}))}constructor(e,{durability:t=u.durability,prefix:n=u.prefix}=u){super(),this.#n=n,this.#t={durability:t},this.#e=new Promise((t,n)=>{a(indexedDB.open(`${this.#n}/${e}`),{onupgradeneeded({target:{result:e,transaction:n}}){e.objectStoreNames.length||e.createObjectStore(i),n.oncomplete=()=>t(e)},onsuccess(e){t(p(e))},onerror(e){n(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(e){const{type:t,message:n,isTrusted:r}=e;return super.dispatchEvent(r?a(new Event(t),{message:n}):e)}async close(){(await this.#e).close()}get size(){return this.#r(e=>e.count(),c).then(p)}async clear(){await this.#r(e=>e.clear(),l)}async delete(e){await this.#r(t=>t.delete(e),l)}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),c).then(p)}async has(e){return void 0!==await this.#r(t=>t.getKey(e),c).then(p)}async keys(){return await this.#r(e=>e.getAllKeys(),c).then(p)}async set(e,t){return await this.#r(n=>n.put(t,e),l),this}async values(){const e=await this.keys();return Promise.all(e.map(e=>this.get(e)))}get[Symbol.toStringTag](){return this.#n}}class d extends Map{#s;#o;constructor(...e){super(),this.#s=new f(...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)}}var y=Promise.withResolvers.bind(Promise);const h=new Proxy(new Map,{get:(e,t)=>(e.has(t)||e.set(t,y()),e.get(t))}),m=new Set(["__dict__","constructor","get","has","includes","next","set","then"]),g=new Proxy(Object.freeze({}),{get:(e,t)=>"string"!=typeof t||m.has(t)?void 0:h[t].promise.then(e=>e.sync)});var w={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};let b="coincident-";try{new SharedArrayBuffer(4,{maxByteLength:8}),b+=crypto.randomUUID()}catch(kt){b+=Math.random().toString(36).substring(2)}const{getPrototypeOf:_}=Object,A=e=>{const t=typeof e;switch(t){case"function":case"undefined":return"";case"object":return null===e?"null":"object";default:return t}},{isArray:v}=Array,{isView:E}=ArrayBuffer,{stringify:k}=JSON,S=(e,t,n)=>{const r=t.get(n);return"number"==typeof r?(e.push(w.ref,r),!0):(t.set(n,e.length),!1)},x=(e,t,n,r=A(n))=>{switch(r){case"null":e.push(w.null);break;case"object":if(S(e,t,n))break;switch(!0){case v(n):{const r=n.length;e.push(w.array,r);for(let s=0;s<r;s++)x(e,t,n[s]);break}case E(n):{const{BYTES_PER_ELEMENT:r,buffer:s,byteOffset:o,length:a}=n;if(e.push(w.view,(e=>{for(;!(e.name in globalThis);)e=_(e);return e.name})(n.constructor),o,a!==(s.byteLength-o)/r?a:0),S(e,t,s))break;n=s}case n instanceof ArrayBuffer:{const t=n.byteLength,r=n.resizable?n.maxByteLength:0;if(e.push(w.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(w.date,+n);break;case n instanceof Map:{const r=e.push(w.map,0);let s=0;for(const[r,o]of n){const n=A(r),a=A(o);n&&a&&(x(e,t,r,n),x(e,t,o,a),s++)}e[r-1]=s;break}case n instanceof Set:{const r=e.push(w.set,0);let s=0;for(const r of n){const n=A(r);n&&(x(e,t,r,n),s++)}e[r-1]=s;break}case n instanceof RegExp:e.push(w.regexp,n.source,n.flags);break;case n instanceof Error:e.push(w.error,n.name,n.message,n.stack,n.cause);break;default:{if("toJSON"in n){const r=n.toJSON();if(r===n){e.push(w.object,0);break}if(S(e,t,n=r))break}const r=e.push(w.object,0);let s=0;for(const r in n){const o=n[r],a=A(o);a&&(x(e,t,r,"string"),x(e,t,o,a),s++)}e[r-1]=s;break}}break;case"boolean":e.push(n?w.true:w.false);break;case"string":if(S(e,t,n))break;e.push(w.string,n);break;case"bigint":e.push(w.bigint,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(w.symbol,t);break}}case"":e.push(w.undefined);break;default:e.push(w[r],n)}},j=(e=>({byteOffset:t=0}={})=>(n,r)=>{const s=e(n),o=s.length,a=2*o+t;r.byteLength<a&&r.grow(a);const i=new Uint16Array(r,t,o);for(let e=0;e<o;e++)i[e]=s.charCodeAt(e);return o})(e=>k((e=>{const t=[];return x(t,new Map,e),t})(e))),$="destroy";var M=e=>({byteOffset:t=0}={})=>(n,r)=>{const s=e(n),o=s.length,a=2*o+t;r.byteLength<a&&r.grow(a);const i=new Uint16Array(r,t,o);for(let e=0;e<o;e++)i[e]=s.charCodeAt(e);return o};const{stringify:B}=JSON,R=M(B),P="array",T="bigint",O="boolean",F="function",D="null",L="number",N="object",C="string",I="symbol",W="undefined",{getPrototypeOf:U}=Object,H=e=>{for(;!(e.name in globalThis);)e=U(e);return e.name};var J={[P]:0,[T]:1,[O]:2,[F]:3,[D]:4,[L]:5,[N]:6,[C]:7,[I]:8,[W]:9,view:10};const{stringify:q}=JSON,z=M(e=>{switch(e[0]){case J.view:{const{constructor:t,buffer:n}=e[1];e[1]=[H(t),[...new Uint8Array(n)]];break}case J[T]:e[1]=e[1].toString()}return q(e)}),K="940beb37",G="="+K,Y="-"+K;const X=[],V=new WeakSet,Z=(...e)=>(V.add(e),e),{assign:Q,create:ee}=Object;let te="coincident-",ne=!0;try{new SharedArrayBuffer(4,{maxByteLength:8}),te+=crypto.randomUUID()}catch(e){ne=!1,te+=Math.random().toString(36).substring(2)}const re={byteOffset:2*Int32Array.BYTES_PER_ELEMENT,useUTF16:!0,circular:!0},se=(e,t,n)=>{const r="then"!==t;return r&&(e[t]=n),r},oe="InstallTrigger"in globalThis?te:"",{notify:ae}=Atomics,ie=e=>e;var ce=e=>{const t=e?.transform,n=(e?.encoder||R)(re),r=!1!==e?.transfer;class s extends globalThis.Worker{constructor(e,s){const{port1:o,port2:a}=new MessageChannel,[i,c]=((e=e=>e)=>{const t=new Map;let n=0;return[()=>{let r;do{r=e(n++)}while(t.has(r));const s=y();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)}]})(ie),l=new Map,u=ee(null);let p="";super(e,Q({type:"module"},s)).proxy=new Proxy(u,{get:(e,n)=>{if("then"===n)return;let s=l.get(n);return s||l.set(n,s=(...e)=>{const s=((e,t)=>{let n=X;return e&&V.has(t.at(-1)||X)&&(n=t.pop(),V.delete(n)),n})(r,e),[a,c]=i();return o.postMessage([a,n,t?e.map(t):e],s),((e,t)=>{if(p){const n=setTimeout(console.warn,3e3,`💀🔒 - is proxy.${p}() awaiting proxy.${t}() ?`);e=e.then(e=>(clearTimeout(n),e),e=>(clearTimeout(n),Promise.reject(e)))}return e})(c,n)}),s},set:se}),super.postMessage(oe,[a]),ne&&oe&&super.addEventListener("message",e=>{const{data:t}=e;t?.ID===oe&&((e=>{e.stopImmediatePropagation(),e.preventDefault()})(e),o.onmessage(t))}),o.onmessage=async({data:e})=>{const r=e[0],s=typeof r;if("number"===s)c.apply(null,e);else if(p=e[1],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,u,t),p="","string"===s)o.postMessage(e);else{const t=e[2]||e[1];r[1]=void 0===t?0:n(t,r.buffer),r[0]=1,ae(r,0)}}}}return{Worker:s,native:ne,transfer:Z}};const le="destruct",ue=new Map;for(const e of Reflect.ownKeys(Symbol))typeof Symbol[e]===I&&(ue.set(Symbol[e],e),ue.set(e,Symbol[e]));const pe=e=>ue.get(e)||`.${Symbol.keyFor(e)||""}`,fe=new FinalizationRegistry(([e,t,n])=>{n&&console.debug(`%c${String(t)}`,"font-weight:bold","collected"),e(t)}),de=Object.create(null),ye=(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),fe.register(...i),a},{addEventListener:he}=EventTarget.prototype,me=new WeakMap;Reflect.defineProperty(EventTarget.prototype,"addEventListener",{value(e,t,...n){const r=n.at(0)?.invoke;if(r){let t=me.get(this);t||(t=new Map,me.set(this,t)),t.set(e,[].concat(r)),delete n[0].invoke}return he.call(this,e,t,...n)}});const{isArray:ge}=Array,{isView:we}=ArrayBuffer;var be=(e,t)=>{const{clear:n,drop:r,get:s,hold:o}=(()=>{const e=new Map,t=new Map;let n=0;return{clear:()=>{e.clear(),t.clear()},drop:n=>{const[r,s]=typeof n===L?[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)}}})(),a=new Map,i=e=>{a.delete(e),t(le,e)},c=e=>{const t=typeof e;switch(t){case N:return null===e?[J[D],e]:e===globalThis?[J[N],null]:ge(e)?[J[P],o(e)]:we(e)?[J.view,e]:[J[N],o(e)];case F:return[J[F],o(e)];case I:return[J[I],pe(e)];default:return[J[t],e]}},l=([e,n])=>{switch(e){case J[N]:if(null===n)return globalThis;if(typeof n===L)return s(n);for(const e in n)n[e]=l(n[e]);return n;case J[P]:return typeof n===L?s(n):n.map(l);case J[F]:switch(typeof n){case L:return s(n);case C:{let e=a.get(n)?.deref();return e||(e=ye(n,i,{token:!1,return:function(...e){return e.length&&e[0]instanceof Event&&(e=>{const{currentTarget:t,target:n,type:r}=e,s=me.get(t||n)?.get(r);if(s)for(const t of s)e[t]()})(e[0]),t("apply",n,c(this),e.map(c)).then(l)}}),a.set(n,new WeakRef(e))),e}}case J[I]:return(e=>ue.get(e)||Symbol.for(e.slice(1)))(n);default:return n}},u=(e,t,n)=>c(e(t,...n.map(l))),p=t=>import(e(t)),f=new Set;return(e,t,...o)=>{if(e===$)n();else if(e===le)f.has(t)||r(t);else{const n=Reflect[e],r=null==t?globalThis:s(t);switch(e){case"defineProperty":{const[e,t]=o.map(l);return c(n(r,e,t))}case"getOwnPropertyDescriptor":{const e=n(r,...o.map(l));if(e){const{get:t,set:n,value:r}=e;t&&(e.get=c(t)),n&&(e.set=c(n)),r&&(e.value=c(r))}return[J[e?N:W],e]}case"ownKeys":return[J[P],n(r).map(c)];case"get":if(null==t){const e="import"===o[0][1]?c(p):u(n,r,o);return f.add(e[1]),e}default:return u(n,r,o)}}return[J[W],void 0]}};const{url:_e}=import.meta,Ae=/import\((['"])([^)]+?\.js)\1\)/g,ve=(e,t,n)=>`import(${t}${new URL(n,_e).href}${t})`,{Worker:Ee}=(e=>{let t=!1;const n=e?.import,r=e?.encoder||R,s=ce({...e,encoder(e){const n=r(e),s=z(e);return(e,r)=>t?(t=!1,s(e,r)):n(e,r)}});class o extends s.Worker{constructor(e,r){const{proxy:s}=super(e,r),o=be(r?.import||n||(e=>new URL(e,location.href)),s[Y]);s[G]=function(...e){return t=!0,o.apply(this,e)}}terminate(){this.proxy[G]($),super.terminate()}}return{...s,Worker:o}})({encoder:j,transfer:!1});const ke=new WeakMap,Se=e=>{const t=e||console,n={buffered:je,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 ke.set(t,n),t}}},xe=new TextDecoder,je=(e,t=10)=>{const n=[];return r=>{if(r instanceof Uint8Array)for(const s of r)s===t?e(xe.decode(new Uint8Array(n.splice(0)))):n.push(s);else e(r)}},$e=new Map,Me=e=>$e.get(e),Be=(e,t)=>{try{return Function("require",t)(Me)}catch(t){ke.get(e).stderr(t)}};var Re={type:"dummy",module:()=>"data:text/javascript,",engine:e=>Se().get(e),registerJSModule(e,t,n){$e.set(t,n)},run:Be,runAsync:Be,runEvent:async(e,t,n)=>{try{await Function("require","e",`return ${t}(e)`)(Me,n)}catch(t){ke.get(e).stderr(t)}},transform:(e,t)=>t,writeFile(){}};const Pe={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}},{replace:Te}="",Oe=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34);/g,Fe={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'},De=e=>Fe[e],Le=(e,...t)=>Pe[typeof e](e,...t),Ne=e=>Te.call(e,Oe,De),{isArray:Ce}=Array,{assign:Ie,create:We,defineProperties:Ue,defineProperty:He,entries:Je}=Object,{all:qe,resolve:ze}=new Proxy(Promise,{get:(e,t)=>e[t].bind(e)}),Ke=(e,t=location.href)=>new URL(e,t.replace(/^blob:/,"")).href;function Ge(e){return e.startsWith(".")?Ke(e,this):e}let Ye=0;const Xe=(e,t)=>({id:e.id||(e.id=`${t}-w${Ye++}`),tag:e.tagName}),Ve=(e,t,n,r=!1,s=CustomEvent)=>{e.dispatchEvent(new s(`${t}:${n}`,{bubbles:!0,detail:{worker:r}}))},Ze=(e,t,n,r)=>({type:t,config:n,interpreter:r,io:ke.get(r),run:(t,...n)=>e.run(r,t,...n),runAsync:(t,...n)=>e.runAsync(r,t,...n),runEvent:(...t)=>e.runEvent(r,...t)}),Qe=e=>e.replace(/^(?:\n|\r\n)/,""),et=(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,Qe(t),...o);return r&&s(e,r,...o),a}:async(e,t,...o)=>{n&&await s(e,n,...o);const a=await s(e,Qe(t),...o);return r&&await s(e,r,...o),a}},tt=Symbol.for("polyscript.js_modules"),nt=new Map;He(globalThis,tt,{value:nt});const rt=new Proxy(nt,{get:(e,t)=>e.get(t),has:(e,t)=>e.has(t),ownKeys:e=>[...e.keys()]}),st=(e,t)=>!t.startsWith("_"),ot=(e,t)=>new Proxy(e,{has:st,get:(e,n)=>e[t][n]}),at=(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)},it=(e,t)=>import(e).then(e=>{nt.set(t,{...e})}),ct=e=>new Promise((t,n)=>{document.querySelector(`link[rel="stylesheet"][href="${e}"]`)?t():document.head.append(Ie(document.createElement("link"),{rel:"stylesheet",href:e,onload:t,onerror:n}))}),lt=e=>/\.css$/i.test(new URL(e).pathname),ut=e=>/^(?:false|0|no)$/i.test(e.getAttribute("async")),pt=!globalThis.window,ft=({FS:e,PATH:t,PATH_FS:n},r,s)=>{const o=n.resolve(r),a=t.dirname(o);return e.mkdirTree?e.mkdirTree(a):yt(e,a),e.writeFile(o,new Uint8Array(s),{canOwn:!0})},dt=e=>{const t=e.split("/");return t.pop(),t.join("/")},yt=(e,t)=>{const n=[];for(const r of t.split("/"))"."!==r&&".."!==r&&(n.push(r),r&&e.mkdir(n.join("/")))},ht=(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(/^\/+/,"/")},mt=e=>{const t=e.map(e=>e.trim().replace(/(^[/]*|[/]*$)/g,"")).filter(e=>""!==e&&"."!==e).join("/");return e[0].startsWith("/")?`/${t}`:t},gt=(e,t)=>o(Ke(e,t)).arrayBuffer(),wt=(e,t,n,r)=>qe((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(Ce(r))return r.map(n=>({url:mt([e,n]),path:mt([t,n])}));const s=n||e.slice(1+e.lastIndexOf("/"));return[{url:e,path:mt([t,s])}]})})(n).map(({url:n,path:s})=>gt(n,r).then(n=>e.writeFile(t,s,n)))),bt=(e,t)=>t.endsWith("/")?`${t}${e.split("/").pop()}`:t,_t=(e,t)=>e.replace(/\{.+?\}/g,e=>{if(!t.has(e))throw new SyntaxError(`Invalid template: ${e}`);return t.get(e)}),At=(e,t,n,r)=>qe((e=>{const t=new Map,n=new Set,r=[];for(const[s,o]of Je(e))if(/^\{.+\}$/.test(s)){if(t.has(s))throw new SyntaxError(`Duplicated template: ${s}`);t.set(s,_t(o,t))}else{const e=_t(s,t),a=bt(e,_t(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})=>gt(n,r).then(r=>e.writeFile(t,s,r,n)))),vt=({main:e,worker:t},n)=>{const r=[];if(t&&pt)for(let[e,s]of Je(t))e=Ke(e,n),r.push(it(e,s));if(e&&!pt)for(let[t,s]of Je(e))t=Ke(t,n),lt(t)?ct(t):r.push(it(t,s));return qe(r)},Et=e=>t=>{dispatchEvent(new CustomEvent(`${e}:progress`,{detail:t}))},{getPrototypeOf:kt}=Object,St=e=>{const t=typeof e;switch(t){case"function":case"undefined":return"";case"object":return null===e?"null":"object";default:return t}};let xt="coincident-";try{new SharedArrayBuffer(4,{maxByteLength:8}),xt+=crypto.randomUUID()}catch(kt){xt+=Math.random().toString(36).substring(2)}var jt={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:$t}=Object,Mt=e=>{switch(e[Rt++]){case jt.array:{const t=e[Rt++],n=[];e[Rt-2]=n;for(let r=0;r<t;r++)n[r]=Mt(e);return n}case jt.object:{const t=e[Rt++],n={};e[Rt-2]=n;for(let r=0;r<t;r++)n[Mt(e)]=Mt(e);return n}case jt.string:{const t=e[Rt++];return e[Rt-2]=t,t}case jt.number:return e[Rt++];case jt.true:return!0;case jt.false:return!1;case jt.null:return null;case jt.undefined:return;case jt.bigint:return BigInt(e[Rt++]);case jt.buffer:{const t=e[Rt++],n=e[Rt++],r=[t];n&&r.push({maxByteLength:n});const s=new ArrayBuffer(...r);e[Rt-3]=s;const o=new Uint8Array(s,0,t);for(let n=0;n<t;n++)o[n]=e[Rt++];return s}case jt.view:{const t=e[Rt++],n=e[Rt++],r=e[Rt++],s=Rt-4,o=[Mt(e),n];r&&o.push(r);const a=new globalThis[t](...o);return e[s]=a,a}case jt.date:{const t=new Date(e[Rt++]);return e[Rt-2]=t,t}case jt.map:{const t=e[Rt++],n=new Map;e[Rt-2]=n;for(let r=0;r<t;r++){const t=Mt(e),r=Mt(e);void 0!==t&&n.set(t,r)}return n}case jt.set:{const t=e[Rt++],n=new Set;e[Rt-2]=n;for(let r=0;r<t;r++){const t=Mt(e);void 0!==t&&n.add(t)}return n}case jt.regexp:{const t=e[Rt++],n=e[Rt++],r=new RegExp(t,n);return e[Rt-3]=r,r}case jt.error:{const t=globalThis[e[Rt++]]||Error,n=e[Rt++],r=e[Rt++],s=new t(n,{cause:e[Rt++]});return e[Rt-5]=$t(s,"stack",{value:r}),s}case jt.symbol:return(t=e[Rt++]).startsWith("Symbol.")?Symbol[t.slice(t.indexOf(".")+1)]:Symbol.for(t);case jt.ref:return e[e[Rt++]];default:throw new TypeError(`Unknown type: ${e[Rt-1]}`)}var t},{parse:Bt}=JSON;let Rt=0;const{isArray:Pt}=Array,{isView:Tt}=ArrayBuffer,{stringify:Ot}=JSON,Ft=(e,t,n)=>{const r=t.get(n);return"number"==typeof r?(e.push(jt.ref,r),!0):(t.set(n,e.length),!1)},Dt=(e,t,n,r=St(n))=>{switch(r){case"null":e.push(jt.null);break;case"object":if(Ft(e,t,n))break;switch(!0){case Pt(n):{const r=n.length;e.push(jt.array,r);for(let s=0;s<r;s++)Dt(e,t,n[s]);break}case Tt(n):{const{BYTES_PER_ELEMENT:r,buffer:s,byteOffset:o,length:a}=n;if(e.push(jt.view,(e=>{for(;!(e.name in globalThis);)e=kt(e);return e.name})(n.constructor),o,a!==(s.byteLength-o)/r?a:0),Ft(e,t,s))break;n=s}case n instanceof ArrayBuffer:{const t=n.byteLength,r=n.resizable?n.maxByteLength:0;if(e.push(jt.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(jt.date,+n);break;case n instanceof Map:{const r=e.push(jt.map,0);let s=0;for(const[r,o]of n){const n=St(r),a=St(o);n&&a&&(Dt(e,t,r,n),Dt(e,t,o,a),s++)}e[r-1]=s;break}case n instanceof Set:{const r=e.push(jt.set,0);let s=0;for(const r of n){const n=St(r);n&&(Dt(e,t,r,n),s++)}e[r-1]=s;break}case n instanceof RegExp:e.push(jt.regexp,n.source,n.flags);break;case n instanceof Error:e.push(jt.error,n.name,n.message,n.stack,n.cause);break;default:{if("toJSON"in n){const r=n.toJSON();if(r===n){e.push(jt.object,0);break}if(Ft(e,t,n=r))break}const r=e.push(jt.object,0);let s=0;for(const r in n){const o=n[r],a=St(o);a&&(Dt(e,t,r,"string"),Dt(e,t,o,a),s++)}e[r-1]=s;break}}break;case"boolean":e.push(n?jt.true:jt.false);break;case"string":if(Ft(e,t,n))break;e.push(jt.string,n);break;case"bigint":e.push(jt.bigint,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(jt.symbol,t);break}}case"":e.push(jt.undefined);break;default:e.push(jt[r],n)}},Lt={parse:e=>{return t=Bt(e),Rt=0,t.length?Mt(t):void 0;var t},stringify:e=>Ot((e=>{const t=[];return Dt(t,new Map,e),t})(e))},Nt=new WeakMap,Ct=async(e,t,n,r,s)=>{r.files&&(t("Loading files"),await At(e,n,r.files,s),t("Loaded files")),r.fetch&&(t("Loading fetch"),await wt(e,n,r.fetch,s),t("Loaded fetch")),r.js_modules&&(t("Loading JS modules"),await vt(r.js_modules,s),t("Loaded JS modules"))},It=(e,t,n)=>{"polyscript"===t&&(n.lazy_py_modules=async(...t)=>(await Nt.get(e)(t),t.map(t=>e.pyimport(t))),n.storage=async e=>{const t=new d(e);return await t.sync(),t},n.JSON=Lt),e.registerJsModule(t,n)},Wt=(e,t)=>{if(e.endsWith("/*")){if(/\.(zip|whl|tgz|tar(?:\.gz)?)$/.test(t))return RegExp.$1;throw new Error(`Unsupported archive ${t}`)}return""},Ut=(e,t,...n)=>{try{return e.runPython(Le(t),...n)}catch(t){ke.get(e).stderr(t)}},Ht=async(e,t,...n)=>{try{return await e.runPythonAsync(Le(t),...n)}catch(t){ke.get(e).stderr(t)}},Jt=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){ke.get(e).stderr(t)}};var qt=(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 zt=async e=>(await import("./toml-BK2RWy-G.js")).parse(e);async function Kt(e,t){return new Promise((n,r)=>{e.syncfs(t,e=>{e?r(e):n()})})}function Gt(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 Yt(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):yt(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 Kt(t,!0),{syncfs:async()=>await Kt(t,!1)}}}const Yt=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},Xt=(e,t)=>{try{e.mkdir(t)}catch(e){}},Vt=Et("mpy");var Zt={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}=Se({stderr:je(console.error),stdout:je(console.log)});n=n.replace(/\.m?js$/,".wasm"),Vt("Loading MicroPython");const i=await a(e({linebuffer:!1,stderr:s,stdout:o,url:n})),c=Qt.bind(this,i,r);return Nt.set(i,c),await Ct(this,Vt,i,t,r),this.writeFile(i,"./mip.py",qt),t.packages&&(Vt("Loading packages"),await c(t.packages.map(Ge,r)),Vt("Loaded packages")),Vt("Loaded MicroPython"),i.mountNativeFS||(i.mountNativeFS=Gt(i._module)),i},registerJSModule:It,run:Ut,runAsync:Ht,runEvent:Jt,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=Wt(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-BKVoQflw.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)Xt(s,i);else{Xt(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 ft(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 ft(i,t,n)}};async function Qt(e,t,n){let r;for(const s of n)if(s.endsWith(".whl")){const n=Ke(s,t),r=await o(n).arrayBuffer();await this.writeFile(e,"./*",r,n)}else r||(r=e.pyimport("mip")),r.install(s)}const en={dict_converter:Object.fromEntries},{stringify:tn}=JSON,{apply:nn}=Reflect,rn=Function.prototype,sn=e=>function(...t){return nn(e,this,t)};let on,an;const cn=e=>{const t=new WeakMap,n=n=>{for(let r,s=0;s<n.length;s++)switch(typeof(r=n[s])){case"object":if(null===r)break;case"function":if(on in r&&!r[on].shared?.gcRegistered){e=!1;let o=t.get(r)?.deref();if(!o){o=an(r);const e=new WeakRef(o);t.set(r,e),t.set(o,e)}n[s]=o,e=!0}}};Object.defineProperties(rn,{apply:{value(t,r){return e&&n(r),nn(this,t,r)}},call:{value(t,...r){return e&&n(r),nn(this,t,r)}}})},ln=Et("py"),un=new WeakMap;var pn={type:"pyodide",module:(e="0.27.7")=>`https://cdn.jsdelivr.net/pyodide/v${e}/full/pyodide.mjs`,async engine({loadPyodide:e,version:t},n,r,s){ln("Loading Pyodide");let{packages:o,index_urls:a}=n;o&&(o=o.map(Ge,s)),ln("Loading Storage");const i=r.slice(0,r.lastIndexOf("/")),c=new d(`${i}@${t}`),l={indexURL:i},u="never"!==n.packages_cache;if(await c.sync(),u){if(o)if("passthrough"===n.packages_cache)l.packages=o,o=null,c.clear();else{o=o.sort();const e=tn(o);if(c.has(e)){const t=new Blob([c.get(e)],{type:"application/json"});l.lockFileURL=URL.createObjectURL(t),l.packages=o.map(e=>e.split(/[>=<]=/)[0]),o=null}}}else c.clear();ln("Loaded Storage");const{stderr:p,stdout:f,get:y}=Se(),h=await y(e({stderr:p,stdout:f,...l}));n.debug&&h.setDebug(!0);const m=dn.bind(h);return a&&un.set(h,a),Nt.set(h,m),await Ct(this,ln,h,n,s),o&&await m(o,c,u),await c.close(),l.lockFileURL&&URL.revokeObjectURL(l.lockFileURL),ln("Loaded Pyodide"),"auto"===n.experimental_create_proxy&&(h.runPython(["import js","from pyodide.ffi import to_js","o=js.Object.fromEntries","js.experimental_create_proxy=lambda r:to_js(r,dict_converter=o)"].join(";"),{globals:h.toPy({})}),an=globalThis.experimental_create_proxy,delete globalThis.experimental_create_proxy,[on]=Reflect.ownKeys(an).filter(e=>"symbol"==typeof e&&"Symbol(pyproxy.attrs)"===String(e)),cn(!0)),h},registerJSModule:It,run:sn(Ut),runAsync:sn(Ht),runEvent:sn(Jt),transform:(e,t)=>nn(fn,e,[t]),writeFile:(e,t,n,r)=>{const s=Wt(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 ft({FS:o,PATH:a,PATH_FS:i},t,n)}};function fn(e){const{ffi:{PyProxy:t}}=this;if(e&&"object"==typeof e){if(e instanceof t)return e.toJs(en);if(e instanceof Map)return new Map([...e.entries()]);if(Ce(e))return e.map(fn,this)}return e}async function dn(e,t,n=!1){const{log:r}=console,s=(e,...t)=>{r(e,...t),console.log=r,ln(e),console.log=s};console.log=s,await this.loadPackage("micropip");const o=this.pyimport("micropip");if(un.has(this)&&o.set_index_urls(un.get(this)),await o.install(e,{keep_going:!0}),console.log=r,n&&t instanceof d){const n=o.freeze();t.set(tn(e),n)}o.destroy()}const yn="ruby-wasm-wasi",hn=yn.replace(/\W+/g,"_");var mn={type:yn,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 o(n).arrayBuffer(),a=await WebAssembly.compile(s),{vm:i}=await e(a);return t.files&&await At(this,i,t.files,r),t.fetch&&await wt(this,i,t.fetch,r),t.js_modules&&await vt(t.js_modules,r),i},registerJSModule(e,t,n){t=t.replace(/\W+/g,"__");const r=`__module_${hn}_${t}`;globalThis[r]=n,this.run(e,`require "js";$${t}=JS.global[:${r}]`),delete globalThis[r]},run:(e,t,...n)=>e.eval(Le(t),...n),runAsync:(e,t,...n)=>e.evalAsync(Le(t),...n),async runEvent(e,t,n){if(/^xworker\.(on\w+)$/.test(t)){const{$1:t}=RegExp,r=`__module_${hn}_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 ${yn}`)}};var gn={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}=Se(),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 At(this,c,n.files,s),n.fetch&&await wt(this,c,n.fetch,s),n.js_modules&&await vt(n.js_modules,s),c},registerJSModule:(e,t,n)=>{e.global.set(t,n)},run:(e,t,...n)=>{try{return e.doStringSync(Le(t),...n)}catch(t){ke.get(e).stderr(t)}},runAsync:async(e,t,...n)=>{try{return await e.doString(Le(t),...n)}catch(t){ke.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){ke.get(e).stderr(t)}},transform:(e,t)=>t,writeFile:({cmodule:{module:{FS:e}}},t,n)=>((e,t,n)=>(yt(e,dt(t)),t=ht(e,t),e.writeFile(t,new Uint8Array(n),{canOwn:!0})))(e,t,n)};const wn=new WeakMap,bn=async(e,t)=>{const{shelter:n,destroy:r,io:s}=wn.get(e),{output:o,result:a}=await n.captureR(Le(t));for(const{type:e,data:t}of o)s[e](t);return ye(a,r,{token:!1})};var _n={type:"webr",experimental:!0,module:(e="0.4.4")=>`https://cdn.jsdelivr.net/npm/webr@${e}/dist/webr.mjs`,async engine(e,t,n,r){const{get:s}=Se(),o=new e.WebR;await s(o.init().then(()=>o));const a=await new o.Shelter;return wn.set(o,{module:e,shelter:a,destroy:a.destroy.bind(a),io:ke.get(o)}),t.files&&await At(this,o,t.files,r),t.fetch&&await wt(this,o,t.fetch,r),t.js_modules&&await vt(t.js_modules,r),o},registerJSModule(e,t){console.warn(`Experimental interpreter: module ${t} is not supported (yet)`)},run:bn,runAsync:bn,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 An=new Map,vn=new Map,En=[],kn=[],Sn=new Proxy(new Map,{get(e,t){if(!e.has(t)){const[n,...r]=t.split("@"),s=An.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=>(vn.set(t,e),s(r,e,n,o)))}}),xn=e=>{for(const t of[].concat(e.type))An.set(t,e),En.push(`script[type="${t}"]`),kn.push(`${t}-`)};for(const e of[Re,Zt,pn,mn,gn,_n])xn(e);const{parse:jn}=JSON,$n=(e,t="./config.txt")=>{let n=typeof e;return"string"===n&&/\.(json|toml|txt)$/.test(e)?n=RegExp.$1:e=t,[Ke(e),n]},Mn=(e,t,n={})=>{const[r,s]=$n(e,t);return"json"===s?n=o(r).json():"toml"===s?n=o(r).text().then(zt):"string"===s?n=Bn(e):"object"===s&&e?n=e:"txt"===s&&"string"==typeof n&&(n=Bn(n)),[n,e=r]},Bn=e=>{try{return jn(e)}catch(t){return zt(e)}},Rn=(e,t,n,r={})=>(t&&([r,t]=Mn(t,n,r)),ze(r).then(n=>Sn[e](n,t))),Pn=(e,t="")=>`${e}@${t}`.replace(/@$/,"");function Tn(e=this){return String(e).replace(/^(async\s*)?(\bfunction\b)?(.*?)\(/,(e,t,n,r)=>r&&!n?`${t||""}function ${r}(`:e)}const On="BeforeRun",Fn="AfterRun",Dn=[`code${On}`,`code${On}Async`,`code${Fn}`,`code${Fn}Async`],Ln=["onWorker","onReady",`on${On}`,`on${On}Async`,`on${Fn}`,`on${Fn}Async`];function Nn(e,t){const{run:n,runAsync:r}=An.get(this.type);return{...e,run:n.bind(this,t),runAsync:r.bind(this,t)}}const Cn=(e,t,n,r,s,o)=>{if(s||o){const a=Nn.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 In=class{constructor(e,t={}){const{main:n,worker:r}=t;this.interpreter=e,this.onWorker=n?.onWorker;for(const e of Ln.slice(1))this[e]=r?.[e];for(const e of Dn)this[e]=r?.[e]}toJSON(){const e={};for(const t of Ln.slice(1))this[t]&&(e[t]=Tn(this[t]));for(const t of Dn)this[t]&&(e[t]=Le(this[t]()));return e}};var Wn=(...e)=>function(t,n){if(e.length){const[t,r]=e;(n=Ie({},n||{type:t,version:r})).type||(n.type=t)}const[r]=$n(n.config,n.configURL),s=((...e)=>new Ee(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(jn){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 3:return e[y++];case 5:return!0;case 6:return!1;case 7:return null;case 13:return;case 12:return BigInt(e[y++]);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 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}case 10:return(t=e[y++]).startsWith("Symbol.")?Symbol[t.slice(t.indexOf(".")+1)]:Symbol.for(t);case 0:return e[e[y++]];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="940beb37",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 j=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:B}=JSON,P=j(B),$="array",T="bigint",O="boolean",R="function",F="null",D="number",M="object",L="string",C="symbol",I="undefined";var N={[$]:0,[T]:1,[O]:2,[R]:3,[F]:4,[D]:5,[M]:6,[L]:7,[C]:8,[I]:9,view:10};const{parse:U}=JSON,H=j(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===R?e():t===M?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 M:case I:r||(r=!1);case R: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===M?t?e.get(t)?.[0]??(e=>we(e)?$:M)(t):F:n},xe=e=>t=>{let n=typeof t;switch(n){case M:if(!t){n=F;break}case R:const r=e.get(t);r&&([n,t]=r)}return[n,t]},je=e=>((e=>{pe.unregister(e)})(e),e);var Be=e=>{const t=new WeakMap,n=Symbol(),r={},s=(e,n,r)=>(t.set(e,[n,r]),e),o={proxy:r,release:je,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 R:{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),R,t);var r};break}case M:{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),M,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===D?[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)}}})(),Oe=new Map;for(const e of Reflect.ownKeys(Symbol))typeof Symbol[e]===C&&(Oe.set(Symbol[e],e),Oe.set(e,Symbol[e]));const Re=e=>Oe.get(e)||`.${Symbol.keyFor(e)||""}`,{isArray:Fe}=Array,{isView:De}=ArrayBuffer,{[Y]:Me}=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[M]:return null==t?globalThis:typeof t===D?r(t,l.object):t;case N[$]:return typeof t===D?r(t,l.array):t;case N[R]:return typeof t===D?r(t,l.function):$e(parseInt(t));case N[C]:return(e=>Oe.get(e)||Symbol.for(e.slice(1)))(t);default:return t}},o=e=>{let[n,r]=p(e);switch(n){case M:if(r==globalThis||null==r)r=null;else if(typeof r===M){if(r=t(r),Fe(r))return[N[$],r.map(o)];if(De(r))return[N.view,r];{const e={};for(const t in r)e[t]=o(r[t]);r=e}}return[N[M],r];case $:return[N[$],typeof r===D?r:t(r).map(o)];case R:return[N[R],typeof r===R?String(Te(t(r))):r];case C:return[N[C],Re(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={[M]:i,[$]:i,[R]:{...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}=Be(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 Me($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(),jt=(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)))),Bt=(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=Bt(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)},Ot=e=>t=>{dispatchEvent(new CustomEvent(`${e}:progress`,{detail:t}))},{getPrototypeOf:Rt}=Object,Ft=e=>{const t=typeof e;switch(t){case"function":case"undefined":return"";case"object":return null===e?"null":"object";default:return t}};let Dt="coincident-";try{new SharedArrayBuffer(4,{maxByteLength:8}),Dt+=crypto.randomUUID()}catch(Rt){Dt+=Math.random().toString(36).substring(2)}var Mt={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 Mt.array:{const t=e[Nt++],n=[];e[Nt-2]=n;for(let r=0;r<t;r++)n[r]=Ct(e);return n}case Mt.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 Mt.string:{const t=e[Nt++];return e[Nt-2]=t,t}case Mt.number:return e[Nt++];case Mt.true:return!0;case Mt.false:return!1;case Mt.null:return null;case Mt.undefined:return;case Mt.bigint:return BigInt(e[Nt++]);case Mt.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 Mt.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 Mt.date:{const t=new Date(e[Nt++]);return e[Nt-2]=t,t}case Mt.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 Mt.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 Mt.regexp:{const t=e[Nt++],n=e[Nt++],r=new RegExp(t,n);return e[Nt-3]=r,r}case Mt.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}case Mt.symbol:return(t=e[Nt++]).startsWith("Symbol.")?Symbol[t.slice(t.indexOf(".")+1)]:Symbol.for(t);case Mt.ref:return e[e[Nt++]];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(Mt.ref,r),!0):(t.set(n,e.length),!1)},qt=(e,t,n,r=Ft(n))=>{switch(r){case"null":e.push(Mt.null);break;case"object":if(Jt(e,t,n))break;switch(!0){case Ut(n):{const r=n.length;e.push(Mt.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(Mt.view,(e=>{for(;!(e.name in globalThis);)e=Rt(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(Mt.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(Mt.date,+n);break;case n instanceof Map:{const r=e.push(Mt.map,0);let s=0;for(const[r,o]of n){const n=Ft(r),a=Ft(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(Mt.set,0);let s=0;for(const r of n){const n=Ft(r);n&&(qt(e,t,r,n),s++)}e[r-1]=s;break}case n instanceof RegExp:e.push(Mt.regexp,n.source,n.flags);break;case n instanceof Error:e.push(Mt.error,n.name,n.message,n.stack,n.cause);break;default:{if("toJSON"in n){const r=n.toJSON();if(r===n){e.push(Mt.object,0);break}if(Jt(e,t,n=r))break}const r=e.push(Mt.object,0);let s=0;for(const r in n){const o=n[r],a=Ft(o);a&&(qt(e,t,r,"string"),qt(e,t,o,a),s++)}e[r-1]=s;break}}break;case"boolean":e.push(n?Mt.true:Mt.false);break;case"string":if(Jt(e,t,n))break;e.push(Mt.string,n);break;case"bigint":e.push(Mt.bigint,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(Mt.symbol,t);break}}case"":e.push(Mt.undefined);break;default:e.push(Mt[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 jt(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-BK2RWy-G.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=Ot("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-BKVoQflw.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,{apply:dn}=Reflect,fn=Function.prototype,yn=e=>function(...t){return dn(e,this,t)};let hn,mn;const wn=e=>{const t=new WeakMap,n=n=>{for(let r,s=0;s<n.length;s++)switch(typeof(r=n[s])){case"object":if(null===r)break;case"function":if(hn in r&&!r[hn].shared?.gcRegistered){e=!1;let o=t.get(r)?.deref();if(!o){o=mn(r);const e=new WeakRef(o);t.set(r,e),t.set(o,e)}n[s]=o,e=!0}}};Object.defineProperties(fn,{apply:{value(t,r){return e&&n(r),dn(this,t,r)}},call:{value(t,...r){return e&&n(r),dn(this,t,r)}}})},gn=Ot("py"),bn=new WeakMap;var _n={type:"pyodide",module:(e="0.27.7")=>`https://cdn.jsdelivr.net/pyodide/v${e}/full/pyodide.mjs`,async engine({loadPyodide:e,version:t},n,r,s){gn("Loading Pyodide");let{packages:o,index_urls:a}=n;o&&(o=o.map(Ze,s)),gn("Loading Storage");const c=r.slice(0,r.lastIndexOf("/")),l=new i(`${c}@${t}`),u={indexURL:c},p="never"!==n.packages_cache;if(await l.sync(),p){if(o)if("passthrough"===n.packages_cache)u.packages=o,o=null,l.clear();else{o=o.sort();const e=pn(o);if(l.has(e)){const t=new Blob([l.get(e)],{type:"application/json"});u.lockFileURL=URL.createObjectURL(t),u.packages=o.map(e=>e.split(/[>=<]=/)[0]),o=null}}}else l.clear();gn("Loaded Storage");const{stderr:d,stdout:f,get:y}=Ne(),h=await y(e({stderr:d,stdout:f,...u}));n.debug&&h.setDebug(!0);const m=En.bind(h);return a&&bn.set(h,a),Kt.set(h,m),await Gt(this,gn,h,n,s),o&&await m(o,l,p),await l.close(),u.lockFileURL&&URL.revokeObjectURL(u.lockFileURL),gn("Loaded Pyodide"),"auto"===n.experimental_create_proxy&&(h.runPython(["import js","from pyodide.ffi import to_js","o=js.Object.fromEntries","js.experimental_create_proxy=lambda r:to_js(r,dict_converter=o)"].join(";"),{globals:h.toPy({})}),mn=globalThis.experimental_create_proxy,delete globalThis.experimental_create_proxy,[hn]=Reflect.ownKeys(mn).filter(e=>"symbol"==typeof e&&"Symbol(pyproxy.attrs)"===String(e)),wn(!0)),h},registerJSModule:Yt,run:yn(Xt),runAsync:yn(Zt),runEvent:yn(Qt),transform:(e,t)=>dn(An,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 An(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(An,this)}return e}async function En(e,t,n=!1){const{log:r}=console,s=(e,...t)=>{r(e,...t),console.log=r,gn(e),console.log=s};console.log=s,await this.loadPackage("micropip");const o=this.pyimport("micropip");if(bn.has(this)&&o.set_index_urls(bn.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 vn="ruby-wasm-wasi",Sn=vn.replace(/\\W+/g,"_");var kn={type:vn,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 jt(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_${Sn}_${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_${Sn}_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 ${vn}`)}};var xn={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 jt(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 jn=new WeakMap,Bn=async(e,t)=>{const{shelter:n,destroy:r,io:s}=jn.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 Pn={type:"webr",experimental:!0,module:(e="0.4.4")=>`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 jn.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 jt(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:Bn,runAsync:Bn,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 $n=new Map,Tn=new Map,On=new Proxy(new Map,{get(e,t){if(!e.has(t)){const[n,...r]=t.split("@"),s=$n.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=>(Tn.set(t,e),s(r,e,n,o)))}}),Rn=e=>{for(const t of[].concat(e.type))$n.set(t,e)};for(const e of[ht,cn,_n,kn,xn,Pn])Rn(e);const{parse:Fn}=JSON,Dn=(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=Mn(e):"object"===s&&e?n=e:"txt"===s&&"string"==typeof n&&(n=Mn(n)),[n,e=r]},Mn=e=>{try{return Fn(e)}catch(t){return tn(e)}},Ln="BeforeRun",Cn="AfterRun",In=[`code${Ln}`,`code${Ln}Async`,`code${Cn}`,`code${Cn}Async`],Nn=["onWorker","onReady",`on${Ln}`,`on${Ln}Async`,`on${Cn}`,`on${Cn}Async`];function Un(e,t){const{run:n,runAsync:r}=$n.get(this.type);return{...e,run:n.bind(this,t),runAsync:r.bind(this,t)}}const Hn=(e,t,n,r,s,o)=>{if(s||o){const a=Un.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 Wn,Jn,qn;const zn=(e,t)=>{addEventListener(e,t||(async t=>{try{await Wn,Jn(`xworker.on${e}`,t)}catch(e){postMessage(e)}}),!!t&&{once:!0})},{proxy:Kn,native:Gn,window:Yn,isWindowProxy:Vn}=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=>qn?qn(e):e}),Xn={polyfill:!Gn,sync:Kn,window:Gn?Yn:null,isWindowProxy:Vn,onmessage:console.info,onerror:console.error,onmessageerror:console.warn,postMessage:postMessage.bind(self)};zn("message",({data:{options:e,config:t,configURL:n,code:r,hooks:s}})=>{Wn=(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]=Dn(t,n,r)),Ve(r).then(n=>On[e](n,t))))(y,t,n,d),{js_modules:m}=Tn.get(y),w=m?.main,g=ze($n.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 In){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 Nn.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}}}Hn(g,b,Xn,f,e,t)}let A,E,v,S=null,k="";Gn&&(({CustomEvent:A,document:E}=Yn),S=o&&E.getElementById(o)||null,v=e=>Qe(S,u||l,e,!0,A));const x=pt(Yn,Kn,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:Xn,currentScript:S,config:b.config,js_modules:x,get target(){return!k&&S&&("SCRIPT"===c?S.after(qe(Yn.document.createElement(`script-${u||l}`),{id:k=`${o}-target`})):(k=o,S.replaceChildren(),S.style.display="block")),k}}),Jn=g.runEvent.bind(g,h),qn=g.transform.bind(g,h),S&&v("ready"),s?.onReady&&et(s?.onReady).call(g,Un.call(g,b,h),Xn),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)}})(),zn("error"),zn("message"),zn("messageerror"),Gn&&addEventListener("py:progress",({type:e,detail:t})=>{Yn.dispatchEvent(new Yn.CustomEvent(e,{detail:t}))})});\n'.replace(Ae,ve)],{type:"text/javascript"})),...e))({serviceWorker:n?.serviceWorker||n?.service_worker}),{postMessage:a}=s,i=this instanceof In,c=Ie(s.proxy,{importJS:it,importCSS:ct}),l=y();let u=o(t).text().then(e=>{const t=i?this.toJSON():void 0;a.call(s,{options:n,config:r,code:e,hooks:t})}).then(()=>{u={then:e=>e()}});return Ue(s,{sync:{value:c},ready:{value:l.promise},postMessage:{value:(e,...t)=>u.then(()=>a.call(s,e,...t))},onerror:{writable:!0,configurable:!0,value:console.error}}),s.addEventListener("message",e=>{const{data:t}=e,n=t instanceof Error;(n||"polyscript:done"===t)&&(e.stopImmediatePropagation(),n?(l.reject(t),s.onerror(We(e,{type:{value:"error"},error:{value:t}}))):l.resolve(s))}),i&&this.onWorker?.(this.interpreter,s),s};const Un="Invalid content",Hn="Invalid worker attribute",Jn="Invalid worker attribute";var qn=e=>{const{src:t,worker:n}=e.attributes;if(n){let{value:r}=n;if(r)throw new SyntaxError(Jn);if(r=t?.value,!r){if(t)throw new SyntaxError(Hn);if(e.childElementCount){const{innerHTML:t,localName:n,type:s}=e,o=s||n.replace(/-script$/,"");r=Ne(t),console.warn(`Deprecated: use <script type="${o}"> for an always safe content parsing:\n`,r)}else r=e.textContent;return URL.createObjectURL(new Blob([Le(r)],{type:"text/plain"}))}return r}if(t&&e.textContent.replace(/\/\*[\s\S]*?\*\//g,"").replace(/^\s*(?:\/\/|#).*/gm,"").trim())throw new SyntaxError(Un)};const zn=(e,t)=>{const n=(e=>{let t=e;for(;t.parentNode;)t=t.parentNode;return t})(e);return n.getElementById(t)||((e,t=document)=>t.querySelector(e))(t,n)},Kn=new WeakMap,Gn={get(){let e=Kn.get(this);return e||(e=document.createElement(`${this.type}-script`),Kn.set(this,e),Qn(this)),e},set(e){"string"==typeof e?Kn.set(this,zn(this,e)):(Kn.set(this,e),Qn(this))}},Yn=new WeakMap,Xn=new Map,Vn=(e,t)=>{const n=e?.value;return n?t+n:""},Zn=(e,t,n,r,s,o,a=e)=>{if(!Xn.has(t)){const i={interpreter:Rn(n,s,o),queue:ze(),XWorker:Wn(e,r)};Xn.set(t,i),Xn.has(e)||Xn.set(e,i),Xn.has(a)||Xn.set(a,i)}return Xn.get(t)},Qn=async e=>{if(Yn.has(e)){const{target:t}=e;t&&(e.closest("head")?document.body.append(t):e.after(t))}else{const{attributes:{config:t,env:n,name:r,target:s,version:a,"service-worker":i},src:c,type:l}=e,u=!ut(e),p=a?.value,y=Pn(l,p);let m=Vn(t,"|");const w=Vn(n,"")||`${y}${m}`;m=m.slice(1);const b=qn(e);if(b){const t=new(Wn(l,p))(b,{...Xe(e,l),version:p,async:u,config:m,serviceWorker:i?.value});Yn.set(He(e,"xworker",{value:t}),{xworker:t});const n=r?.value;return void(n&&h[n].resolve(t.ready))}const _=Vn(s,""),A=Zn(l,w,y,p,m);Yn.set(He(e,"target",Gn),A),_&&Kn.set(e,zn(e,_));const v=c?o(c).text():e.textContent;A.queue=A.queue.then(()=>(async(e,t,n,r)=>{const{type:s}=e,o=An.get(s);o.experimental&&console.warn(`The ${s} interpreter is experimental`);const[a,i]=await qe([Yn.get(e).interpreter,t]);try{at(s,o,a,rt),o.registerJSModule(a,"polyscript",{IDBMap:f,IDBMapSync:d,XWorker:n,currentScript:e,js_modules:rt,workers:g}),Ve(e,s,"ready"),He(document,"currentScript",{configurable:!0,get:()=>e});const t=Ve.bind(null,e,s,"done");let c=o[r?"runAsync":"run"](a,i);return r&&(c=await c),t(),c}finally{delete document.currentScript}})(e,v,A.XWorker,u))}},er=new Proxy(We(null),{get:(e,t)=>new Promise(queueMicrotask).then(()=>tr(t))}),tr=async e=>{if(Xn.has(e)){const{interpreter:t,queue:n}=Xn.get(e);return(await qe([t,n]))[0]}const t=Xn.size?`Available interpreters are: ${[...Xn.keys()].map(e=>`"${e}"`).join(", ")}.`:"There are no interpreters in this page.";throw new Error(`The interpreter "${e}" was not found. ${t}`)},nr=async e=>{const{type:n,currentTarget:r}=e;if(kn.length)for(let{name:s,value:o,ownerElement:a}of t(`./@*[${kn.map(e=>`name()="${e}${n}"`).join(" or ")}]`,r)){s=s.slice(0,-(n.length+1));const t=await tr(a.getAttribute(`${s}-env`)||s);An.get(s).runEvent(t,o,e)}},rr=e=>{if(kn.length)for(let{name:n,ownerElement:r}of t(`.//@*[${kn.map(e=>`starts-with(name(),"${e}")`).join(" or ")}]`,e)){const e=n.lastIndexOf("-"),t=n.slice(e+1);"env"!==t&&(r.addEventListener(t,nr),"disabled"in r&&!r.disabled&&(r.disabled=!0,er[n.slice(0,e)].then(()=>{r.disabled=!1})))}},sr=Wn(),or=[],ar=new Map,ir=new Map,cr=new Map,lr=async e=>{for(const t of or)if(e.matches(t)){const n=ir.get(t),r=ur.get(n),{resolve:s}=cr.get(n),{options:o,known:a}=r;if(a.has(e))return;a.add(e);for(const[t,n]of ar)e.matches(t)&&await n(e);const{interpreter:i,configURL:c,config:l,version:u,env:p,onerror:y,hooks:m}=o;let w;try{const t=qn(e);if(t){let r=u,o=c,a=e.getAttribute("config")||l||{};if(!r||!a){const[e,t]=Mn(a,c);a=await e,o=t,r=a.version||a.interpreter,r&&/\.m?js$/.test(r)&&(r=new URL(r,o).href)}const p=sr.call(new In(null,m),t,{...Xe(e,n),configURL:o,version:r,type:i,custom:n,config:a,async:!ut(e),serviceWorker:e.getAttribute("service-worker")});He(e,"xworker",{value:p}),s({type:n,xworker:p});const f=e.getAttribute("name");return void(f&&h[f].resolve(p.ready))}}catch(e){w=e}const b=Pn(i,u),_=p||`${b}${l?`|${l}`:""}`,{interpreter:A,XWorker:v}=Zn(n,_,b,u,l,c,i),E=await A,k=We(An.get(i)),S=new In(E,m),x=function(...e){return v.apply(S,e)},j={...Ze(k,n,structuredClone(vn.get(b)),E),XWorker:x};at(i,k,E,rt),k.registerJSModule(E,"polyscript",{IDBMap:f,IDBMapSync:d,XWorker:x,config:j.config,currentScript:n.startsWith("_")?null:e,js_modules:rt,workers:g});for(const t of["Run","RunAsync"]){let n,r,s="",o="";for(const e of Dn){const n=m?.main?.[e];n&&e.endsWith(t)&&(e.startsWith("codeBefore")?s=Le(n()):o=Le(n()))}(s||o)&&et(k,`r${t.slice(1)}`,s,o);for(let e=2;e<Ln.length;e++){const s=Ln[e],o=m?.main?.[s];o&&s.endsWith(t)&&(s.startsWith("onBefore")?n=o:r=o)}Cn(k,j,e,t.endsWith("Async"),n,r)}r.queue=r.queue.then(()=>(s(j),w&&y?.(w,e),m?.main?.onReady?.(j,e)))}},ur=new Map;let pr=0;const fr=e=>(cr.has(e)||cr.set(e,y()),cr.get(e).promise),[{customObserver:dr,define:yr,whenDefined:hr,env:mr,Hook:gr,XWorker:wr},br]=((e,t,n=globalThis)=>{const r=Symbol.for(e),s=r in n;return[s?n[r]:Object.defineProperty(n,r,{value:t})[r],s]})("polyscript",{customObserver:ar,define:(t,n)=>{let r=null==t;if(r)t="_ps"+pr++;else if(An.has(t)||ur.has(t))throw new Error(`<script type="${t}"> already registered`);if(!An.has(n?.interpreter))throw new Error("Unspecified interpreter");An.set(t,An.get(n.interpreter));const s=[`script[type="${t}"]`];if(fr(t),r){const{hooks:e}=n,r=e?.main?.onReady;n={...n,hooks:{...e,main:{...e?.main,onReady(e,n){or.splice(or.indexOf(t),1),An.delete(t),ur.delete(t),cr.delete(t),n.remove(),r?.(e)}}}},document.head.append(Ie(document.createElement("script"),{type:t}))}else s.push(`${t}-script`),kn.push(`${t}-`);for(const e of s)ir.set(e,t);or.push(...s),ur.set(t,{options:Ie({env:t},n),known:new WeakSet,queue:Promise.resolve()}),r||rr(document),e(s.join(",")).forEach(lr)},whenDefined:fr,env:er,Hook:In,XWorker:sr});if(!br){const t=new MutationObserver(e=>{const t=En.join(",");for(const{type:r,target:s,attributeName:o,addedNodes:a}of e){if("attributes"===r){const e=o.lastIndexOf("-")+1;if(e){const t=o.slice(0,e);for(const n of kn)if(t===n){const t=o.slice(e);if("env"!==t){const e=s.hasAttribute(o)?"add":"remove";s[`${e}EventListener`](t,nr)}break}}continue}for(const e of a)1===e.nodeType&&(rr(e),t&&e.matches(t)?Qn(e):n(t,e,!0))}}),n=(t,n,r)=>{t&&e(t,n).forEach(Qn),(t=or.join(","))&&(r&&lr(n),e(t,n).forEach(lr))},r=e=>(t.observe(e,{childList:!0,subtree:!0,attributes:!0}),e),{attachShadow:s}=Element.prototype;Ie(Element.prototype,{attachShadow(e){return r(s.call(this,e))}}),queueMicrotask(()=>{rr(r(document)),n(En.join(","),document,!1)})}export{gr as Hook,Un as INVALID_CONTENT,Hn as INVALID_SRC_ATTR,Jn as INVALID_WORKER_ATTR,wr as XWorker,dr as customObserver,yr as define,mr as env,hr as whenDefined}; +const e=(e,t=document)=>[...t.querySelectorAll(e)],t=(e,t=document)=>{const n=(new XPathEvaluator).createExpression(e).evaluate(t,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE),r=[];for(let e=0,{snapshotLength:t}=n;e<t;e++)r.push(n.snapshotItem(e));return r},n=Object.getOwnPropertyDescriptors(Response.prototype),r=e=>"function"==typeof e,s={get:(e,t)=>n.hasOwnProperty(t)?((e,t,{get:n,value:s})=>n||!r(s)?e.then(e=>e[t]):(...n)=>e.then(e=>e[t](...n)))(e,t,n[t]):((e,t)=>r(t)?t.bind(e):t)(e,e[t])};var o=(e,...t)=>new Proxy(fetch(e,...t),s);const{assign:a}=Object,i="entries",c="readonly",l="readwrite",u={durability:"default",prefix:"IDBMap"},p=({target:{result:e}})=>e;class f extends EventTarget{#e;#t;#n;async#r(e,t){const n=(await this.#e).transaction(i,t,this.#t);return new Promise((t,r)=>a(e(n.objectStore(i)),{onsuccess:t,onerror:r}))}constructor(e,{durability:t=u.durability,prefix:n=u.prefix}=u){super(),this.#n=n,this.#t={durability:t},this.#e=new Promise((t,n)=>{a(indexedDB.open(`${this.#n}/${e}`),{onupgradeneeded({target:{result:e,transaction:n}}){e.objectStoreNames.length||e.createObjectStore(i),n.oncomplete=()=>t(e)},onsuccess(e){t(p(e))},onerror(e){n(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(e){const{type:t,message:n,isTrusted:r}=e;return super.dispatchEvent(r?a(new Event(t),{message:n}):e)}async close(){(await this.#e).close()}get size(){return this.#r(e=>e.count(),c).then(p)}async clear(){await this.#r(e=>e.clear(),l)}async delete(e){await this.#r(t=>t.delete(e),l)}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),c).then(p)}async has(e){return void 0!==await this.#r(t=>t.getKey(e),c).then(p)}async keys(){return await this.#r(e=>e.getAllKeys(),c).then(p)}async set(e,t){return await this.#r(n=>n.put(t,e),l),this}async values(){const e=await this.keys();return Promise.all(e.map(e=>this.get(e)))}get[Symbol.toStringTag](){return this.#n}}class d extends Map{#s;#o;constructor(...e){super(),this.#s=new f(...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)}}var h=Promise.withResolvers.bind(Promise);const y=new Proxy(new Map,{get:(e,t)=>(e.has(t)||e.set(t,h()),e.get(t))}),m=new Set(["__dict__","constructor","get","has","includes","next","set","then"]),g=new Proxy(Object.freeze({}),{get:(e,t)=>"string"!=typeof t||m.has(t)?void 0:y[t].promise.then(e=>e.sync)});let w=0;const _=w++,b=w++,A=w++,v=w++,E=w++,k=w++,S=w++,x=w++,$=w++,j=w++,B=w++,M=w++,R=w++,T=w++,P=w++,F=w++,D=w++,O=w++,L=new Map(Reflect.ownKeys(Symbol).map(e=>[Symbol[e],`@${String(e)}`])),C=e=>{switch(e[0]){case"@":return Symbol[e.slice(1)];case"#":return Symbol.for(e.slice(1));case"!":return Symbol(e.slice(1));default:return Symbol()}},I=e=>L.get(e)||((e,t)=>void 0===t?"?":void 0===Symbol.keyFor(e)?`!${t}`:`#${t}`)(e,e.description),W=Object.defineProperty,H=Object.assign,U=Array.from,N=Array.isArray,q=ArrayBuffer.isView,z=(e,t)=>[e,t],J=e=>e,K={},G=e=>(t,n=new Map)=>{for(let r=0,s=t.length;r<s;r++)t[r]=e(t[r],n);return t},Y=([e,t])=>0===e?t:C(t),X=e=>"string"==typeof e?z(0,e):z(16,I(e)),V=(e,t)=>{for(let n=e.push,r=0,s=t.length;r<s;r+=32767)n.apply(e,t.subarray(r,r+32767))},{getPrototypeOf:Z}=Object,{construct:Q}=Reflect,{toStringTag:ee}=Symbol,{toString:te}=K,ne=(e,t=e[ee])=>t in globalThis?t:ne(Q(Z(e.constructor),[0])),re=(e,t)=>[t?e:U(new Uint8Array(e)),e.resizable?e.maxByteLength:0],se=/\[('|")?(.+?)\1\]/g,oe=(e,t)=>e?.[t];var ae=(e,t)=>t.replace(se,".$2").split(".").reduce(oe,e),ie=(e,...t)=>t.map(ce,e);function ce(e){return"string"==typeof e?ae(this,e):this[e]}const le=globalThis.Node||class{},{apply:ue,construct:pe,defineProperty:fe,deleteProperty:de,get:he,getOwnPropertyDescriptor:ye,getPrototypeOf:me,has:ge,isExtensible:we,ownKeys:_e,preventExtensions:be,set:Ae,setPrototypeOf:ve}=Reflect;var Ee=({reflect:e=J,transform:t=J,remote:n=J,module:r=e=>import(e),buffer:s=!1,timeout:o=-1}=K)=>{const a=(t,r=new Map)=>{if(!N(t))return t;const[s,o]=t;switch(s){case 2:{if(null===o)return globalThis;let e=r.get(t);if(!e){e=o,r.set(t,o);for(const e in o)o[e]=a(o[e],r)}return e}case 4:return r.get(t)||(r.set(t,o),c(o,r));case 8:{let t=g.get(o),r=t?.deref();return r||(t&&L.unregister(t),r=function(...t){n.apply(this,t);for(let e=0,n=t.length;e<n;e++)t[e]=i(t[e]);const r=e(k,o,i(this),t);return r instanceof Promise?r.then(a):a(r)},t=new WeakRef(r),g.set(o,t),L.register(r,o,t)),r}case 16:return C(o);default:return 1&s?d(o):o}},i=e=>{switch(typeof e){case"object":{if(null===e)break;if(e===globalThis)return w;const n=t(e);return U&&W.has(n)?z(0,n):q(n)?z(68,((e,t)=>{const{BYTES_PER_ELEMENT:n,byteOffset:r,buffer:s,length:o}=e;return[ne(e),re(s,t),r,o!==(s.byteLength-r)/n?o:0]})(n,s)):n instanceof ArrayBuffer?z(64,re(n,s)):z(N(n)?5:3,f(n))}case"function":return z(9,f(t(e)));case"symbol":return z(16,I(e));case"bigint":return z(32,e.toString())}return e},c=G(a),l=G(Y),u=G(X),{clear:p,id:f,ref:d,unref:h}=((e=0,t=new Map,n=new Map)=>({clear:()=>{t.clear(),n.clear()},id:r=>{let s=n.get(r);if(void 0===s){for(;t.has(s=e++););t.set(s,r),n.set(r,s)}return s},ref:e=>t.get(e),unref:e=>(n.delete(t.get(e)),t.delete(e))}))(),y=/^(?:[0-9]+|length)$/,m=-1<o,g=new Map,w=z(2,null),L=new FinalizationRegistry(t=>{g.delete(t),e(_,t)});let W,U=!1;return{assign:H,gather:ie,query:ae,direct:e=>(U||(U=!0,W=new WeakSet),W.add(e),e),evaluate:(e,...t)=>ue(e,null,t),reflect(e,t,...n){const s=null===t,o=s?globalThis:d(t);switch(e){case j:{const e=Y(n[0]),t=s&&"import"===e,a=t?r:he(o,e),c=i(a);if(!m)return c;let l,u=t,p=o;if(!t&&!(p instanceof le||N(p)&&"string"==typeof e&&y.test(e)))if(e in o){for(;!(l=ye(p,e))&&(p=me(p),p););u=!!l&&"value"in l}else u=!0;return[u,c]}case k:{const e=new Map;return i(ue(o,a(n[0],e),c(n[1],e)))}case D:return Ae(o,Y(n[0]),a(n[1]));case R:return ge(o,Y(n[0]));case P:return u(_e(o),g);case S:return i(pe(o,c(n[0])));case B:{const e=ye(o,Y(n[0]));if(e)for(const t in e)e[t]=i(e[t]);return e}case x:return fe(o,Y(n[0]),a(n[1]));case $:return de(o,Y(n[0]));case M:return i(me(o));case O:return ve(o,a(n[0]));case b:return void H(o,a(n[0]));case A:{const e=a(n[0]),t=Function(`return(${e}).apply(null,arguments)`);return i(ue(t,null,c(n[1])))}case v:for(let e,t=0,r=(n=l(n[0],g)).length;t<r;t++)e=n[t],n[t]=i("string"==typeof e?ae(o,e):o[e]);return n;case E:return i(ae(o,n[0]));case _:return h(t);case T:return we(o);case F:return be(o)}},terminate(){for(const e of g.values())L.unregister(e);g.clear(),p()}}};const{addEventListener:ke}=EventTarget.prototype,Se=new WeakMap;Reflect.defineProperty(EventTarget.prototype,"addEventListener",{value(e,t,n){const r=n?.invoke;if(r){let t=Se.get(this);t||Se.set(this,t=new Map),t.set(e,[].concat(r)),delete n.invoke}return ke.apply(this,arguments)}});let xe=0;const $e=xe++,je=xe++,Be=xe++,Me=xe++,Re=xe++,Te=xe++,Pe=xe++,Fe=xe++,De=xe++,Oe=xe++,Le=xe++,Ce=xe++,Ie=xe++,We=xe++,He=xe++,Ue=xe++,Ne=xe++,qe=xe++,ze=xe++,Je=xe++,Ke=xe++,Ge=xe++,Ye=xe++,Xe=xe++,Ve=xe++;class Ze{static push(e,t){e.sync(!1),e._(t,t.length)}constructor(e,t){const n=[];this.l=0,this.o=n,this.v=new Uint8Array(e,t),this.push=n.push.bind(n)}get length(){return this.l+this.o.length}sync(e){const t=this.o,n=t.length;n&&this._(e?t:t.splice(0),n)}_(e,t){const{buffer:n,byteOffset:r}=this.v,s=this.l;this.l+=t,t+=r+s,n.byteLength<t&&n.grow(t),this.v.set(e,s)}}const Qe=new TextDecoder,et=new TextEncoder,tt=new ArrayBuffer(8),nt=new DataView(tt),rt=new Uint8Array(tt),{isNaN:st,isFinite:ot,isInteger:at}=Number,{ownKeys:it}=Reflect,{is:ct}=Object,lt=(e,t,n)=>{const r=n.get(e),s=!r;return s?(nt.setUint32(0,t.length,!0),n.set(e,[rt[0],rt[1],rt[2],rt[3]])):t.push(Ve,r[0],r[1],r[2],r[3]),s},ut=(e,t,n)=>{nt.setUint32(0,n,!0),e.push(t,rt[0],rt[1],rt[2],rt[3])},pt=(e,t,n)=>{switch(typeof e){case"number":e&&ot(e)?at(e)&&e<256&&-1<e?t.push(Te,e):(nt.setFloat64(0,e,!0),t.push(Re,rt[0],rt[1],rt[2],rt[3],rt[4],rt[5],rt[6],rt[7])):st(e)?t.push(Pe):e?t.push(e<0?De:Fe):t.push(ct(e,0)?Oe:Le);break;case"object":switch(!0){case null===e:t.push(Me);break;case!lt(e,t,n):break;case N(e):{const r=e.length;ut(t,Ue,r);for(let s=0;s<r;s++)pt(e[s],t,n);break}case q(e):if(t.push(Xe),pt(ne(e),t,n),e=e.buffer,!lt(e,t,n))break;case e instanceof ArrayBuffer:{const n=new Uint8Array(e);ut(t,Ne,n.length),ft(t,n);break}case e instanceof Date:t.push(qe),pt(e.getTime(),t,n);break;case e instanceof Map:ut(t,Je,e.size);for(const[r,s]of e)pt(r,t,n),pt(s,t,n);break;case e instanceof Set:ut(t,Ye,e.size);for(const r of e)pt(r,t,n);break;case e instanceof Error:t.push(ze),pt(e.name,t,n),pt(e.message,t,n),pt(e.stack,t,n);break;case e instanceof RegExp:t.push(Ge),pt(e.source,t,n),pt(e.flags,t,n);break;default:if("toJSON"in e){const r=e.toJSON();pt(r===e?null:r,t,n)}else{const r=it(e),s=r.length;ut(t,Ke,s);for(let o=0;o<s;o++){const s=r[o];pt(s,t,n),pt(e[s],t,n)}}}break;case"string":if(lt(e,t,n)){const n=et.encode(e);ut(t,We,n.length),ft(t,n)}break;case"boolean":t.push(e?je:$e);break;case"symbol":t.push(He),pt(I(e),t,n);break;case"bigint":{let n=Ce;9223372036854775807n<e?(nt.setBigUint64(0,e,!0),n=Ie):nt.setBigInt64(0,e,!0),t.push(n,rt[0],rt[1],rt[2],rt[3],rt[4],rt[5],rt[6],rt[7]);break}default:t.push(Be)}};let ft=V;const dt=({byteOffset:e=0,Array:t=Ze}={})=>(n,r)=>{const s=new t(r,e);ft=t.push,pt(n,s,new Map);const o=s.length;return s.sync(!0),o},ht="677caa6a",yt="="+ht,mt="-"+ht;var gt=(e=e=>e)=>{const t=new Map;let n=0;return[()=>{let r;do{r=e(n++)}while(t.has(r));const s=h();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)}]};const wt=[],_t=new WeakSet,bt=(...e)=>(_t.add(e),e);let{SharedArrayBuffer:At}=globalThis,vt=!0;try{new At(4,{maxByteLength:8})}catch(e){vt=!1,At=class extends ArrayBuffer{get growable(){return super.resizable}grow(e){super.resize(e)}}}const{assign:Et,create:kt}=Object,St=`coincident-${vt?crypto.randomUUID():Math.random().toString(36).substring(2)}`,xt={byteOffset:2*Int32Array.BYTES_PER_ELEMENT},$t=(e,t,n)=>{const r="then"!==t;return r&&(e[t]=n),r},jt=e=>{e.stopImmediatePropagation(),e.preventDefault()},Bt=(e,t=-1)=>e?.reflected_ffi_timeout??t,{defineProperty:Mt}=Object,[Rt,Tt]=gt();let[Pt,Ft]=Rt(),Dt=()=>Ft,{Atomics:Ot,MessageChannel:Lt,Worker:Ct}=globalThis;if(vt)Tt(Pt);else{const e=new Map,t=(e,...t)=>{e.addEventListener(...t)};if("importScripts"in globalThis){t(globalThis,"message",e=>{jt(e),Tt(Pt,e.data)},{once:!0});const{wait:n}=Ot,{parse:r}=JSON,s=t=>{const n=new XMLHttpRequest;return n.open("POST",`${i}?sabayon`,!1),n.setRequestHeader("Content-Type","application/json"),n.send(`["${a}",${e.get(t)}]`),n},o=(e,t)=>(e.set(r(t.responseText)),"ok");let a,i;Ot={wait:(t,...r)=>e.has(t)?o(t,s(t)):n(t,...r)},Ft=Ft.then(e=>{[a,i]=e})}else{const n=[St,Math.random()].join("-").replace(/\W/g,"-"),r=new BroadcastChannel("dc78209b-186c-4f83-80e9-406becb7d9f3");r.onmessage=async t=>{const[s,o,a]=t.data;if(o===n)for(const[t,[n,o]]of e)if(n===a){await o.promise;let e=t.length;for(;e--&&!t[e];);r.postMessage([s,t.slice(0,e+1)]);break}};const s=t=>{const[n,r,s]=t.data;e.set(r,[n,h()]),Mt(t,"data",{value:s})};Lt=class extends Lt{constructor(){super(),t(this.port1,"message",s)}},Ct=class extends Ct{constructor(e,t){super(e,t),super.postMessage([n,a])}};const{notify:o}=Ot;Ot={notify(t,...n){const r=e.get(t);return r?(r[1].resolve(),0):o(t,...n)}};let a="",i=null;const c=(e,n)=>{let r,s=!0;e.getRegistration(a).then(t=>t??e.register(a,n)).then(function n(o){const{controller:i}=e;if(s=s&&!!i,r=o.installing||o.waiting||o.active,"activated"===r.state){if(s){if(i.scriptURL===a)return Tt(Pt);o.unregister()}location.reload()}else t(r,"statechange",()=>n(o),{once:!0})})};Dt=(e,t)=>(i||(a=new URL(e,location.href).href,c(navigator.serviceWorker,t),i=Ft),i)}}const It="InstallTrigger"in globalThis?St:"",Wt=e=>e,Ht=e=>e===yt?"main":e===mt?"worker":e;class Ut extends Event{#a;constructor(e){super("message"),this.#a=e}get data(){return this.#a}}var Nt=e=>{const t=e?.transform,n=Bt(e),r=(e?.encoder||dt)(xt),s=!1!==e?.transfer;return{Worker:class extends Ct{constructor(e,o){const a=vt?"":o?.serviceWorker||"",{notify:i}=a?Ot:Atomics,{port1:c,port2:l}=new(a?Lt:MessageChannel),[u,p]=gt(Wt),f=new Map,d=kt(null);a&&Dt(a);let h="";super(e,Et({type:"module"},o)),this.proxy=new Proxy(d,{get:(e,n)=>{if("then"===n)return;let r=f.get(n);return r||f.set(n,r=(...e)=>{const r=((e,t)=>{let n=wt;return e&&_t.has(t.at(-1)||wt)&&(n=t.pop(),_t.delete(n)),n})(s,e),[o,a]=u();return c.postMessage([o,n,t?e.map(t):e],r),((e,t)=>{if(h){const n=setTimeout(console.warn,3e3,`💀🔒 - is proxy.${Ht(h)}() awaiting proxy.${Ht(t)}() ?`);e=e.then(e=>(clearTimeout(n),e),e=>(clearTimeout(n),Promise.reject(e)))}return e})(a,n)}),r},set:$t}),It&&(vt||a)&&super.addEventListener("message",e=>{const{data:t}=e;t?.ID===It&&(jt(e),c.dispatchEvent(new Ut(t.data)))}),super.postMessage([It,a,Bt(o,n)],[l]),c.addEventListener("message",async({data:e})=>{const n=e[0],s=typeof n;if("number"===s)p.apply(null,e);else if(h=e[1],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,d,t),h="","string"===s)c.postMessage(e);else{const t=e[2]||e[1];n[1]=void 0===t?0:r(t,n.buffer),n[0]=1,i(n,0)}}),c.start()}},native:vt,transfer:bt}};const{url:qt}=import.meta,zt=/import\((['"])([^)]+?\.js)\1\)/g,Jt=(e,t,n)=>`import(${t}${new URL(n,qt).href}${t})`,{Worker:Kt}=(e=>{const t=e?.import,n=Bt(e),r=Nt({...e,encoder:e?.encoder||dt});class s extends r.Worker{#i;constructor(e,r){const{proxy:s}=super(e,r),o=Ee({...r,buffer:!0,reflect:s[mt],timeout:Bt(r,n),remote(e){e instanceof Event&&(e=>{const{currentTarget:t,target:n,type:r}=e,s=Se.get(t||n)?.get(r);if(s)for(const t of s)e[t]()})(e)},module:r?.import||t||(e=>import(new URL(e,location).href))});this.#i=o.terminate,this.ffi={assign:o.assign,direct:o.direct,evaluate:o.evaluate,gather:o.gather,query:o.query},s[yt]=o.reflect}terminate(){this.#i(),super.terminate()}}return{...r,Worker:s}})({transfer:!1});const Gt=new WeakMap,Yt=e=>{const t=e||console,n={buffered:Vt,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 Gt.set(t,n),t}}},Xt=new TextDecoder,Vt=(e,t=10)=>{const n=[];return r=>{if(r instanceof Uint8Array)for(const s of r)s===t?e(Xt.decode(new Uint8Array(n.splice(0)))):n.push(s);else e(r)}},Zt=new Map,Qt=e=>Zt.get(e),en=(e,t)=>{try{return Function("require",t)(Qt)}catch(t){Gt.get(e).stderr(t)}};var tn={type:"dummy",module:()=>"data:text/javascript,",engine:e=>Yt().get(e),registerJSModule(e,t,n){Zt.set(t,n)},run:en,runAsync:en,runEvent:async(e,t,n)=>{try{await Function("require","e",`return ${t}(e)`)(Qt,n)}catch(t){Gt.get(e).stderr(t)}},transform:(e,t)=>t,writeFile(){}};const nn={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}},{replace:rn}="",sn=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34);/g,on={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'},an=e=>on[e],cn=(e,...t)=>nn[typeof e](e,...t),ln=e=>rn.call(e,sn,an),{isArray:un}=Array,{assign:pn,create:fn,defineProperties:dn,defineProperty:hn,entries:yn}=Object,{all:mn,resolve:gn}=new Proxy(Promise,{get:(e,t)=>e[t].bind(e)}),wn=(e,t=location.href)=>new URL(e,t.replace(/^blob:/,"")).href;function _n(e){return e.startsWith(".")?wn(e,this):e}let bn=0;const An=(e,t)=>({id:e.id||(e.id=`${t}-w${bn++}`),tag:e.tagName}),vn=(e,t,n,r=!1,s=CustomEvent)=>{e.dispatchEvent(new s(`${t}:${n}`,{bubbles:!0,detail:{worker:r}}))},En=(e,t,n,r)=>({type:t,config:n,interpreter:r,io:Gt.get(r),run:(t,...n)=>e.run(r,t,...n),runAsync:(t,...n)=>e.runAsync(r,t,...n),runEvent:(...t)=>e.runEvent(r,...t)}),kn=e=>e.replace(/^(?:\n|\r\n)/,""),Sn=(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,kn(t),...o);return r&&s(e,r,...o),a}:async(e,t,...o)=>{n&&await s(e,n,...o);const a=await s(e,kn(t),...o);return r&&await s(e,r,...o),a}},xn=Symbol.for("polyscript.js_modules"),$n=new Map;hn(globalThis,xn,{value:$n});const jn=new Proxy($n,{get:(e,t)=>e.get(t),has:(e,t)=>e.has(t),ownKeys:e=>[...e.keys()]}),Bn=(e,t)=>!t.startsWith("_"),Mn=(e,t)=>new Proxy(e,{has:Bn,get:(e,n)=>e[t][n]}),Rn=(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}`,Mn(r,e));t.registerJSModule(n,s,r)},Tn=(e,t)=>import(e).then(e=>{$n.set(t,{...e})}),Pn=e=>new Promise((t,n)=>{document.querySelector(`link[rel="stylesheet"][href="${e}"]`)?t():document.head.append(pn(document.createElement("link"),{rel:"stylesheet",href:e,onload:t,onerror:n}))}),Fn=e=>/\.css$/i.test(new URL(e).pathname),Dn=e=>/^(?:false|0|no)$/i.test(e.getAttribute("async")),On=!globalThis.window,Ln=({FS:e,PATH:t,PATH_FS:n},r,s)=>{const o=n.resolve(r),a=t.dirname(o);return e.mkdirTree?e.mkdirTree(a):In(e,a),e.writeFile(o,new Uint8Array(s),{canOwn:!0})},Cn=e=>{const t=e.split("/");return t.pop(),t.join("/")},In=(e,t)=>{const n=[];for(const r of t.split("/"))"."!==r&&".."!==r&&(n.push(r),r&&e.mkdir(n.join("/")))},Wn=(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(/^\/+/,"/")},Hn=e=>{const t=e.map(e=>e.trim().replace(/(^[/]*|[/]*$)/g,"")).filter(e=>""!==e&&"."!==e).join("/");return e[0].startsWith("/")?`/${t}`:t},Un=(e,t)=>o(wn(e,t)).arrayBuffer(),Nn=(e,t,n,r)=>mn((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(un(r))return r.map(n=>({url:Hn([e,n]),path:Hn([t,n])}));const s=n||e.slice(1+e.lastIndexOf("/"));return[{url:e,path:Hn([t,s])}]})})(n).map(({url:n,path:s})=>Un(n,r).then(n=>e.writeFile(t,s,n)))),qn=(e,t)=>t.endsWith("/")?`${t}${e.split("/").pop()}`:t,zn=(e,t)=>e.replace(/\{.+?\}/g,e=>{if(!t.has(e))throw new SyntaxError(`Invalid template: ${e}`);return t.get(e)}),Jn=(e,t,n,r)=>mn((e=>{const t=new Map,n=new Set,r=[];for(const[s,o]of yn(e))if(/^\{.+\}$/.test(s)){if(t.has(s))throw new SyntaxError(`Duplicated template: ${s}`);t.set(s,zn(o,t))}else{const e=zn(s,t),a=qn(e,zn(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})=>Un(n,r).then(r=>e.writeFile(t,s,r,n)))),Kn=({main:e,worker:t},n)=>{const r=[];if(t&&On)for(let[e,s]of yn(t))e=wn(e,n),r.push(Tn(e,s));if(e&&!On)for(let[t,s]of yn(e))t=wn(t,n),Fn(t)?Pn(t):r.push(Tn(t,s));return mn(r)},Gn=e=>t=>{dispatchEvent(new CustomEvent(`${e}:progress`,{detail:t}))},Yn=(e,t,n)=>(e.set(t,n),n),Xn=e=>{rt[0]=e[Qn++],rt[1]=e[Qn++],rt[2]=e[Qn++],rt[3]=e[Qn++],rt[4]=e[Qn++],rt[5]=e[Qn++],rt[6]=e[Qn++],rt[7]=e[Qn++]},Vn=e=>(rt[0]=e[Qn++],rt[1]=e[Qn++],rt[2]=e[Qn++],rt[3]=e[Qn++],nt.getUint32(0,!0)),Zn=(e,t)=>{switch(e[Qn++]){case Re:return Xn(e),nt.getFloat64(0,!0);case Te:return e[Qn++];case Ke:{const n=Yn(t,Qn-1,{});for(let r=0,s=Vn(e);r<s;r++)n[Zn(e,t)]=Zn(e,t);return n}case Ue:{const n=Yn(t,Qn-1,[]);for(let r=0,s=Vn(e);r<s;r++)n.push(Zn(e,t));return n}case Xe:{const n=Qn-1,r=Zn(e,t);return Yn(t,n,new globalThis[r](Zn(e,t)))}case Ne:{const n=Qn-1,r=Vn(e);return Yn(t,n,e.slice(Qn,Qn+=r).buffer)}case We:{const n=Qn-1,r=Vn(e);return Yn(t,n,Qe.decode(e.slice(Qn,Qn+=r)))}case qe:return Yn(t,Qn-1,new Date(Zn(e,t)));case Je:{const n=Yn(t,Qn-1,new Map);for(let r=0,s=Vn(e);r<s;r++)n.set(Zn(e,t),Zn(e,t));return n}case Ye:{const n=Yn(t,Qn-1,new Set);for(let r=0,s=Vn(e);r<s;r++)n.add(Zn(e,t));return n}case ze:{const n=Zn(e,t),r=Zn(e,t),s=Zn(e,t),o=new(globalThis[n]||Error)(r);return Yn(t,Qn-1,W(o,"stack",{value:s}))}case Ge:{const n=Zn(e,t),r=Zn(e,t);return Yn(t,Qn-1,new RegExp(n,r))}case $e:return!1;case je:return!0;case Pe:return NaN;case Fe:return 1/0;case De:return-1/0;case Oe:return 0;case Le:return-0;case Me:return null;case Ce:return Xn(e),nt.getBigInt64(0,!0);case Ie:return Xn(e),nt.getBigUint64(0,!0);case He:return C(Zn(e,t));case Ve:return t.get(Vn(e));default:return}};let Qn=0;const er={parse:e=>(Qn=0,Zn(e,new Map)),stringify:e=>{const t=[];return ft=V,pt(e,t,new Map),t}},tr=new WeakMap,nr=async(e,t,n,r,s)=>{r.files&&(t("Loading files"),await Jn(e,n,r.files,s),t("Loaded files")),r.fetch&&(t("Loading fetch"),await Nn(e,n,r.fetch,s),t("Loaded fetch")),r.js_modules&&(t("Loading JS modules"),await Kn(r.js_modules,s),t("Loaded JS modules"))},rr=(e,t,n)=>{"polyscript"===t&&(n.lazy_py_modules=async(...t)=>(await tr.get(e)(t),t.map(t=>e.pyimport(t))),n.storage=async e=>{const t=new d(e);return await t.sync(),t},n.JSON=er),e.registerJsModule(t,n)},sr=(e,t)=>{if(e.endsWith("/*")){if(/\.(zip|whl|tgz|tar(?:\.gz)?)$/.test(t))return RegExp.$1;throw new Error(`Unsupported archive ${t}`)}return""},or=(e,t,...n)=>{try{return e.runPython(cn(t),...n)}catch(t){Gt.get(e).stderr(t)}},ar=async(e,t,...n)=>{try{return await e.runPythonAsync(cn(t),...n)}catch(t){Gt.get(e).stderr(t)}},ir=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){Gt.get(e).stderr(t)}};var cr=(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 lr=async e=>(await import("./toml-BK2RWy-G.js")).parse(e);async function ur(e,t){return new Promise((n,r)=>{e.syncfs(t,e=>{e?r(e):n()})})}function pr(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 fr(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):In(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 ur(t,!0),{syncfs:async()=>await ur(t,!1)}}}const fr=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},dr=(e,t)=>{try{e.mkdir(t)}catch(e){}},hr=Gn("mpy");var yr={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}=Yt({stderr:Vt(console.error),stdout:Vt(console.log)});n=n.replace(/\.m?js$/,".wasm"),hr("Loading MicroPython");const i=await a(e({linebuffer:!1,stderr:s,stdout:o,url:n})),c=mr.bind(this,i,r);return tr.set(i,c),await nr(this,hr,i,t,r),this.writeFile(i,"./mip.py",cr),t.packages&&(hr("Loading packages"),await c(t.packages.map(_n,r)),hr("Loaded packages")),hr("Loaded MicroPython"),i.mountNativeFS||(i.mountNativeFS=pr(i._module)),i},registerJSModule:rr,run:or,runAsync:ar,runEvent:ir,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=sr(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-BKVoQflw.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)dr(s,i);else{dr(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 Ln(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 Ln(i,t,n)}};async function mr(e,t,n){let r;for(const s of n)if(s.endsWith(".whl")){const n=wn(s,t),r=await o(n).arrayBuffer();await this.writeFile(e,"./*",r,n)}else r||(r=e.pyimport("mip")),r.install(s)}const gr={dict_converter:Object.fromEntries},{stringify:wr}=JSON,{apply:_r}=Reflect,br=Function.prototype,Ar=e=>function(...t){return _r(e,this,t)};let vr,Er;const kr=e=>{const t=new WeakMap,n=n=>{for(let r,s=0;s<n.length;s++)switch(typeof(r=n[s])){case"object":if(null===r)break;case"function":if(vr in r&&!r[vr].shared?.gcRegistered){e=!1;let o=t.get(r)?.deref();if(!o){o=Er(r);const e=new WeakRef(o);t.set(r,e),t.set(o,e)}n[s]=o,e=!0}}};Object.defineProperties(br,{apply:{value(t,r){return e&&n(r),_r(this,t,r)}},call:{value(t,...r){return e&&n(r),_r(this,t,r)}}})},Sr=Gn("py"),xr=new WeakMap;var $r={type:"pyodide",module:(e="0.27.7")=>`https://cdn.jsdelivr.net/pyodide/v${e}/full/pyodide.mjs`,async engine({loadPyodide:e,version:t},n,r,s){Sr("Loading Pyodide");let{packages:o,index_urls:a}=n;o&&(o=o.map(_n,s)),Sr("Loading Storage");const i=r.slice(0,r.lastIndexOf("/")),c=new d(`${i}@${t}`),l={indexURL:i},u="never"!==n.packages_cache;if(await c.sync(),u){if(o)if("passthrough"===n.packages_cache)l.packages=o,o=null,c.clear();else{o=o.sort();const e=wr(o);if(c.has(e)){const t=new Blob([c.get(e)],{type:"application/json"});l.lockFileURL=URL.createObjectURL(t),l.packages=o.map(e=>e.split(/[>=<]=/)[0]),o=null}}}else c.clear();Sr("Loaded Storage");const{stderr:p,stdout:f,get:h}=Yt(),y=await h(e({stderr:p,stdout:f,...l}));n.debug&&y.setDebug(!0);const m=Br.bind(y);return a&&xr.set(y,a),tr.set(y,m),await nr(this,Sr,y,n,s),o&&await m(o,c,u),await c.close(),l.lockFileURL&&URL.revokeObjectURL(l.lockFileURL),Sr("Loaded Pyodide"),"auto"===n.experimental_create_proxy&&(y.runPython(["import js","from pyodide.ffi import to_js","o=js.Object.fromEntries","js.experimental_create_proxy=lambda r:to_js(r,dict_converter=o)"].join(";"),{globals:y.toPy({})}),Er=globalThis.experimental_create_proxy,delete globalThis.experimental_create_proxy,[vr]=Reflect.ownKeys(Er).filter(e=>"symbol"==typeof e&&"Symbol(pyproxy.attrs)"===String(e)),kr(!0)),y},registerJSModule:rr,run:Ar(or),runAsync:Ar(ar),runEvent:Ar(ir),transform:(e,t)=>_r(jr,e,[t]),writeFile:(e,t,n,r)=>{const s=sr(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 Ln({FS:o,PATH:a,PATH_FS:i},t,n)}};function jr(e){const{ffi:{PyProxy:t}}=this;if(e&&"object"==typeof e){if(e instanceof t)return e.toJs(gr);if(e instanceof Map)return new Map([...e.entries()]);if(un(e))return e.map(jr,this)}return e}async function Br(e,t,n=!1){const{log:r}=console,s=(e,...t)=>{r(e,...t),console.log=r,Sr(e),console.log=s};console.log=s,await this.loadPackage("micropip");const o=this.pyimport("micropip");if(xr.has(this)&&o.set_index_urls(xr.get(this)),await o.install(e,{keep_going:!0}),console.log=r,n&&t instanceof d){const n=o.freeze();t.set(wr(e),n)}o.destroy()}const Mr="ruby-wasm-wasi",Rr=Mr.replace(/\W+/g,"_");var Tr={type:Mr,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 o(n).arrayBuffer(),a=await WebAssembly.compile(s),{vm:i}=await e(a);return t.files&&await Jn(this,i,t.files,r),t.fetch&&await Nn(this,i,t.fetch,r),t.js_modules&&await Kn(t.js_modules,r),i},registerJSModule(e,t,n){t=t.replace(/\W+/g,"__");const r=`__module_${Rr}_${t}`;globalThis[r]=n,this.run(e,`require "js";$${t}=JS.global[:${r}]`),delete globalThis[r]},run:(e,t,...n)=>e.eval(cn(t),...n),runAsync:(e,t,...n)=>e.evalAsync(cn(t),...n),async runEvent(e,t,n){if(/^xworker\.(on\w+)$/.test(t)){const{$1:t}=RegExp,r=`__module_${Rr}_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 ${Mr}`)}};var Pr={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}=Yt(),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 Jn(this,c,n.files,s),n.fetch&&await Nn(this,c,n.fetch,s),n.js_modules&&await Kn(n.js_modules,s),c},registerJSModule:(e,t,n)=>{e.global.set(t,n)},run:(e,t,...n)=>{try{return e.doStringSync(cn(t),...n)}catch(t){Gt.get(e).stderr(t)}},runAsync:async(e,t,...n)=>{try{return await e.doString(cn(t),...n)}catch(t){Gt.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){Gt.get(e).stderr(t)}},transform:(e,t)=>t,writeFile:({cmodule:{module:{FS:e}}},t,n)=>((e,t,n)=>(In(e,Cn(t)),t=Wn(e,t),e.writeFile(t,new Uint8Array(n),{canOwn:!0})))(e,t,n)};const Fr=new WeakMap,Dr=new FinalizationRegistry(e=>e()),Or=async(e,t)=>{const{shelter:n,destroy:r,io:s}=Fr.get(e),{output:o,result:a}=await n.captureR(cn(t));for(const{type:e,data:t}of o)s[e](t);return Dr.register(a,r),a};var Lr={type:"webr",experimental:!0,module:(e="0.4.4")=>`https://cdn.jsdelivr.net/npm/webr@${e}/dist/webr.mjs`,async engine(e,t,n,r){const{get:s}=Yt(),o=new e.WebR;await s(o.init().then(()=>o));const a=await new o.Shelter;return Fr.set(o,{module:e,shelter:a,destroy:a.destroy.bind(a),io:Gt.get(o)}),t.files&&await Jn(this,o,t.files,r),t.fetch&&await Nn(this,o,t.fetch,r),t.js_modules&&await Kn(t.js_modules,r),o},registerJSModule(e,t){console.warn(`Experimental interpreter: module ${t} is not supported (yet)`)},run:Or,runAsync:Or,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 Cr=new Map,Ir=new Map,Wr=[],Hr=[],Ur=new Proxy(new Map,{get(e,t){if(!e.has(t)){const[n,...r]=t.split("@"),s=Cr.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=>(Ir.set(t,e),s(r,e,n,o)))}}),Nr=e=>{for(const t of[].concat(e.type))Cr.set(t,e),Wr.push(`script[type="${t}"]`),Hr.push(`${t}-`)};for(const e of[tn,yr,$r,Tr,Pr,Lr])Nr(e);const{parse:qr}=JSON,zr=(e,t="./config.txt")=>{let n=typeof e;return"string"===n&&/\.(json|toml|txt)$/.test(e)?n=RegExp.$1:e=t,[wn(e),n]},Jr=(e,t,n={})=>{const[r,s]=zr(e,t);return"json"===s?n=o(r).json():"toml"===s?n=o(r).text().then(lr):"string"===s?n=Kr(e):"object"===s&&e?n=e:"txt"===s&&"string"==typeof n&&(n=Kr(n)),[n,e=r]},Kr=e=>{try{return qr(e)}catch(t){return lr(e)}},Gr=(e,t,n,r={})=>(t&&([r,t]=Jr(t,n,r)),gn(r).then(n=>Ur[e](n,t))),Yr=(e,t="")=>`${e}@${t}`.replace(/@$/,"");function Xr(e=this){return String(e).replace(/^(async\s*)?(\bfunction\b)?(.*?)\(/,(e,t,n,r)=>r&&!n?`${t||""}function ${r}(`:e)}const Vr="BeforeRun",Zr="AfterRun",Qr=[`code${Vr}`,`code${Vr}Async`,`code${Zr}`,`code${Zr}Async`],es=["onWorker","onReady",`on${Vr}`,`on${Vr}Async`,`on${Zr}`,`on${Zr}Async`];function ts(e,t){const{run:n,runAsync:r}=Cr.get(this.type);return{...e,run:n.bind(this,t),runAsync:r.bind(this,t)}}const ns=(e,t,n,r,s,o)=>{if(s||o){const a=ts.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 rs=class{constructor(e,t={}){const{main:n,worker:r}=t;this.interpreter=e,this.onWorker=n?.onWorker;for(const e of es.slice(1))this[e]=r?.[e];for(const e of Qr)this[e]=r?.[e]}toJSON(){const e={};for(const t of es.slice(1))this[t]&&(e[t]=Xr(this[t]));for(const t of Qr)this[t]&&(e[t]=cn(this[t]()));return e}};var ss=(...e)=>function(t,n){if(e.length){const[t,r]=e;(n=pn({},n||{type:t,version:r})).type||(n.type=t)}const[r]=zr(n.config,n.configURL),s=((...e)=>new Kt(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)}}const c="677caa6a",l="="+c,u="-"+c;let p=0;const d=p++,f=p++,h=p++,y=p++,m=p++,g=p++,w=p++,_=p++,b=p++,A=p++,E=p++,k=p++,v=p++,S=p++,x=p++,$=p++,j=p++,B=p++,M=p++,F=p++,P=p++,R=p++,D=p++,T=p++,O=p++,L=new TextDecoder,C=new TextEncoder,I=new Map(Reflect.ownKeys(Symbol).map(e=>[Symbol[e],`@${String(e)}`])),H=e=>{switch(e[0]){case"@":return Symbol[e.slice(1)];case"#":return Symbol.for(e.slice(1));case"!":return Symbol(e.slice(1));default:return Symbol()}},U=e=>I.get(e)||((e,t)=>void 0===t?"?":void 0===Symbol.keyFor(e)?`!${t}`:`#${t}`)(e,e.description),W=Object.defineProperty,N=Object.assign,q=Array.isArray,J=ArrayBuffer.isView,z=(e,t)=>[e,t],K=e=>e,G={},V=e=>(t,n=new Map)=>{for(let r=0,s=t.length;r<s;r++)t[r]=e(t[r],n);return t},X=([e,t])=>0===e?t:H(t),Y=e=>"string"==typeof e?z(0,e):z(16,U(e)),Z=(e,t)=>{for(let n=e.push,r=0,s=t.length;r<s;r+=32767)n.apply(e,t.subarray(r,r+32767))},Q=new ArrayBuffer(8),ee=new DataView(Q),te=new Uint8Array(Q),ne=(e,t,n)=>(e.set(t,n),n),re=e=>{te[0]=e[ae++],te[1]=e[ae++],te[2]=e[ae++],te[3]=e[ae++],te[4]=e[ae++],te[5]=e[ae++],te[6]=e[ae++],te[7]=e[ae++]},se=e=>(te[0]=e[ae++],te[1]=e[ae++],te[2]=e[ae++],te[3]=e[ae++],ee.getUint32(0,!0)),oe=(e,t)=>{switch(e[ae++]){case m:return re(e),ee.getFloat64(0,!0);case g:return e[ae++];case P:{const n=ne(t,ae-1,{});for(let r=0,s=se(e);r<s;r++)n[oe(e,t)]=oe(e,t);return n}case $:{const n=ne(t,ae-1,[]);for(let r=0,s=se(e);r<s;r++)n.push(oe(e,t));return n}case T:{const n=ae-1,r=oe(e,t);return ne(t,n,new globalThis[r](oe(e,t)))}case j:{const n=ae-1,r=se(e);return ne(t,n,e.slice(ae,ae+=r).buffer)}case S:{const n=ae-1,r=se(e);return ne(t,n,L.decode(e.slice(ae,ae+=r)))}case B:return ne(t,ae-1,new Date(oe(e,t)));case F:{const n=ne(t,ae-1,new Map);for(let r=0,s=se(e);r<s;r++)n.set(oe(e,t),oe(e,t));return n}case D:{const n=ne(t,ae-1,new Set);for(let r=0,s=se(e);r<s;r++)n.add(oe(e,t));return n}case M:{const n=oe(e,t),r=oe(e,t),s=oe(e,t),o=new(globalThis[n]||Error)(r);return ne(t,ae-1,W(o,"stack",{value:s}))}case R:{const n=oe(e,t),r=oe(e,t);return ne(t,ae-1,new RegExp(n,r))}case d:return!1;case f:return!0;case w:return NaN;case _:return 1/0;case b:return-1/0;case A:return 0;case E:return-0;case y:return null;case k:return re(e),ee.getBigInt64(0,!0);case v:return re(e),ee.getBigUint64(0,!0);case x:return H(oe(e,t));case O:return t.get(se(e));default:return}};let ae=0;const ie=e=>(ae=0,oe(e,new Map)),ce=({byteOffset:e=0}={})=>(t,n)=>ie(new Uint8Array(n,e,t));let le=0;const ue=le++,pe=le++,de=le++,fe=le++,he=le++,ye=le++,me=le++,ge=le++,we=le++,_e=le++,be=le++,Ae=le++,Ee=le++,ke=le++,ve=le++,Se=le++,xe=le++,$e=le++,{getPrototypeOf:je}=Object,{construct:Be}=Reflect,{toStringTag:Me}=Symbol,{toString:Fe}=G,Pe=(e,t=Fe.call(e).slice(8,-1))=>t in globalThis?t:Pe(je(e)||G),Re=(e,t=e[Me])=>t in globalThis?t:Re(Be(je(e.constructor),[0])),De=(e,t)=>new ArrayBuffer(e,{maxByteLength:t}),Te=([e,t],n)=>{const r=n?e.byteLength:e.length;if(n){if(t){const n=De(r,t);new Uint8Array(n).set(new Uint8Array(e)),e=n}}else{const n=t?De(r,t):new ArrayBuffer(r);new Uint8Array(n).set(e),e=n}return e};const Oe=/\\[(\'|")?(.+?)\\1\\]/g,Le=(e,t)=>e?.[t];var Ce=e=>{const t=[],n=e=>{const n=t.splice(e);for(;e<n.length;)n[e++].delete(n[e++])};return class r extends Map{static keys=Symbol();static proto=Symbol();drop(e,t){return e!==r.proto&&super.delete(r.keys),super.delete(e),t}set(r,s){return((r,s)=>{t.push(r,s)<3&&setTimeout(n,e,0)})(super.set(r,s),r),s}}};const{preventExtensions:Ie}=Object;var He=({reflect:e=K,transform:t=K,released:n=K,buffer:r=!1,timeout:s=-1}=G)=>{const o=V(X),a=V(Y),i=e=>{if(!q(e))return e;const[t,n]=e;if(1&t)return u(e,t,n);switch(t){case 2:return j;case 0:return n;case 16:return H(n);case 32:return BigInt(n);case 68:return(([e,t,n,r],s)=>{const o=Te(t,s),a=globalThis[e];return r?new a(o,n,r):new a(o,n)})(n,r);case 64:return Te(n,r)}},c=(e,n=new Map)=>{switch(typeof e){case"object":{if(null===e)break;if(e===globalThis)return x;if($ in e)return b;let r=n.get(e);if(!r){const s=t(e);if(A||!_.has(s)){if(q(s)){const t=[];r=z(4,t),n.set(e,r);for(let e=0,r=s.length;e<r;e++)t[e]=c(s[e],n);return r}if(!(J(s)||s instanceof ArrayBuffer||"Object"!==Pe(s))){const t={};r=z(2,t),n.set(e,r);for(const e in s)t[e]=c(s[e],n);return r}}r=z(0,s),n.set(e,r)}return r}case"function":{if($ in e)return b;let r=n.get(e);if(!r){const s=t(e);r=z(8,E(s)),n.set(e,r)}return r}case"symbol":return z(16,U(e))}return e},l=V(c),u=(e,t,n)=>{let r=S.get(n),s=r?.deref();return s||(r&&B.unregister(r),s=new(3===t?m:5===t?g:w)(e,n),r=new WeakRef(s),S.set(n,r),B.register(s,n,r)),s},p=e=>{switch(typeof e){case"object":if(null===e)break;case"function":return $ in e;default:return!1}},d=-1<s,f=d?Ce(s):Map;class h{constructor(e){this._=e,d&&(this.$=new f)}get(t,n){if(d&&this.$.has(n))return this.$.get(n);const r=e(_e,this._,Y(n));return d?r[0]?this.$.set(n,i(r[1])):i(r[1]):i(r)}set(t,n,r){const s=e(xe,this._,Y(n),c(r));return d?this.$.drop(n,s):s}_oK(){return o(e(ve,this._),S)}ownKeys(e){return d?this.$.has(f.keys)?this.$.get(f.keys):this.$.set(f.keys,this._oK()):this._oK()}getOwnPropertyDescriptor(t,n){const r=i(e(be,this._,Y(n)));if(r)for(const e in r)r[e]=i(r[e]);return r}defineProperty(t,n,r){const s=e(ge,this._,Y(n),c(r));return d?this.$.drop(n,s):s}deleteProperty(t,n){const r=e(we,this._,Y(n));return d?this.$.drop(n,r):r}_gPO(){return i(e(Ae,this._))}getPrototypeOf(e){return d?this.$.has(f.proto)?this.$.get(f.proto):this.$.set(f.proto,this._gPO()):this._gPO()}setPrototypeOf(t,n){const r=e($e,this._,c(n));return d?this.$.drop(f.proto,r):r}isExtensible(t){return e(ke,this._)}preventExtensions(t){return Ie(t)&&e(Se,this._)}}const y=(t,n,r)=>r===$?!!(b=t):e(Ee,n,Y(r));class m extends h{constructor(e,t){return new Proxy({_:e},super(t))}has(e,t){return y(e._,this._,t)}}class g extends h{constructor(e,t){return new Proxy(e,super(t))}has(e,t){return y(e,this._,t)}}class w extends h{constructor(e,t){return new Proxy(Ue.bind(e),super(t))}has(e,t){return y(e(),this._,t)}construct(t,n){return i(e(me,this._,l(n)))}apply(t,n,r){const s=new Map;return i(e(ye,this._,c(n,s),l(r,s)))}get(e,t){switch(t){case"apply":return(t,n)=>this.apply(e,t,n);case"call":return(t,...n)=>this.apply(e,t,n);default:return super.get(e,t)}}}let _,b,A=!0;const{id:E,ref:k,unref:v}=((e=0,t=new Map,n=new Map)=>({clear:()=>{t.clear(),n.clear()},id:r=>{let s=n.get(r);if(void 0===s){for(;t.has(s=e++););t.set(s,r),n.set(r,s)}return s},ref:e=>t.get(e),unref:e=>(n.delete(t.get(e)),t.delete(e))}))(),S=new Map,x=z(2,null),$=Symbol("reflected-ffi"),j=new m(x,null),B=new FinalizationRegistry(t=>{S.delete(t),e(ue,t)});return{global:j,isProxy:p,assign(t,...n){const r=p(t),s=N(r?{}:t,...n);return r&&e(pe,b[1],c(s)),t},direct:e=>(A&&(A=!1,_=new WeakSet),_.add(e),e),evaluate:(t,...n)=>i(e(de,null,function(e=this){return String(e).replace(/^(async\\s*)?(\\bfunction\\b)?(.*?)\\(/,(e,t,n,r)=>r&&!n?`${t||""}function ${r}(`:e)}(t),l(n))),gather(t,...n){const r=p(t),s=r?i:e=>t[e];r&&(n=e(fe,b[1],a(n,S)));for(let e=0;e<n.length;e++)n[e]=s(n[e]);return n},query:(t,n)=>p(t)?i(e(he,b[1],n)):((e,t)=>t.replace(Oe,".$2").split(".").reduce(Le,e))(t,n),reflect(e,t,...r){switch(e){case ye:{const[e,n]=r;for(let e=0,t=n.length;e<t;e++)n[e]=i(n[e]);return c(Reflect.apply(k(t),i(e),n))}case ue:return n(k(t)),v(t)}}}};function Ue(){return this}var We=Promise.withResolvers.bind(Promise),Ne=(e=e=>e)=>{const t=new Map;let n=0;return[()=>{let r;do{r=e(n++)}while(t.has(r));const s=We();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)}]};const qe=[],Je=new WeakSet,ze=(...e)=>(Je.add(e),e);let{SharedArrayBuffer:Ke}=globalThis,Ge=!0;try{new Ke(4,{maxByteLength:8})}catch(e){Ge=!1,Ke=class extends ArrayBuffer{get growable(){return super.resizable}grow(e){super.resize(e)}}}const{create:Ve}=Object,Xe=`coincident-${Ge?crypto.randomUUID():Math.random().toString(36).substring(2)}`,Ye=2*Int32Array.BYTES_PER_ELEMENT,Ze={byteOffset:Ye},Qe=(e,t,n)=>{const r="then"!==t;return r&&(e[t]=n),r},et=e=>{e.stopImmediatePropagation(),e.preventDefault()},[tt,nt]=Ne();let[rt,st]=tt(),ot=()=>st,at=()=>{},{Atomics:it,MessagePort:ct,SharedArrayBuffer:lt,postMessage:ut}=globalThis;if(Ge)nt(rt);else{lt=Ke;const e=new Map,t=(e,...t)=>{e.addEventListener(...t)};if("importScripts"in globalThis){at=t=>{e.set(t,null)};const n=t=>{const n=t[0],r=p++;return e.set(n,r),[r,n,t]},r=ut;ut=function(e,t){if(u){const s={ID:e.ID,data:n(e.data)};r(s,t)}else st.then(()=>this.postMessage(e,t))},ct=class extends ct{postMessage(e,t){u?super.postMessage(n(e),t):st.then(()=>this.postMessage(e,t))}},t(globalThis,"message",e=>{et(e),nt(rt,e.data)},{once:!0});const{wait:s}=it,{parse:o}=JSON,a=t=>{const n=new XMLHttpRequest;return n.open("POST",`${l}?sabayon`,!1),n.setRequestHeader("Content-Type","application/json"),n.send(`["${c}",${e.get(t)}]`),n},i=(e,t)=>(e.set(o(t.responseText)),"ok");it={wait:(t,...n)=>e.has(t)?i(t,a(t)):s(t,...n)};let c,l,u=!1,p=Math.random();st=st.then(e=>{[c,l]=e,u=!0})}else{const n=[Xe,Math.random()].join("-").replace(/\\W/g,"-"),r=new BroadcastChannel("dc78209b-186c-4f83-80e9-406becb7d9f3");r.onmessage=async t=>{const[s,o,a]=t.data;if(o===n)for(const[t,[n,o]]of e)if(n===a){await o.promise;let e=t.length;for(;e--&&!t[e];);r.postMessage([s,t.slice(0,e+1)]);break}};const{notify:s}=it;it={notify(t,...n){const r=e.get(t);return r?(r[1].resolve(),0):s(t,...n)}};let o="",a=null;const i=(e,n)=>{let r,s=!0;e.getRegistration(o).then(t=>t??e.register(o,n)).then(function n(a){const{controller:i}=e;if(s=s&&!!i,r=a.installing||a.waiting||a.active,"activated"===r.state){if(s){if(i.scriptURL===o)return nt(rt);a.unregister()}location.reload()}else t(r,"statechange",()=>n(a),{once:!0})})};ot=(e,t)=>(a||(o=new URL(e,location.href).href,i(navigator.serviceWorker,t),a=st),a)}}const{setPrototypeOf:pt}=Reflect;let{postMessage:dt}=globalThis;const ft=We(),ht=ct.prototype;addEventListener("message",e=>{et(e);const[t,n,r]=e.data,[s]=e.ports;n&&(pt(s,ht),t&&(dt=ut)),ft.resolve([t,n,r,s])},{once:!0});var yt=async e=>{const[t,n,r,s]=await ot().then(()=>ft.promise),o=!!t,a=Ge||!!n,i=e?.transform,c=(e?.decoder||ce)(Ze),l=!1!==e?.transfer;let u,p,d;if(a){const t=new(n?lt:SharedArrayBuffer)(e?.minByteLength||32767,{maxByteLength:e?.maxByteLength||16777216});u=new Int32Array(t),n?(({wait:d}=it),at(u)):(({pause:p,wait:d}=Atomics),p&&!o&&(d=(e,t)=>{for(;e[t]<1;)p()}))}const[f,h]=Ne(String),y=new Map,m=Ve(null),g=new Proxy(m,{get(e,n){if("then"===n)return;let r=y.get(n);return r||y.set(n,r=(...e)=>{const r=((e,t)=>{let n=qe;return e&&Je.has(t.at(-1)||qe)&&(n=t.pop(),Je.delete(n)),n})(l,e),p=[u,n,i?e.map(i):e];if(a){o?dt({ID:t,data:p},r):s.postMessage(p,r),d(u,0),u[0]=0;const e=u[1]?c(u[1],u.buffer):void 0;if(e instanceof Error)throw e;return e}{const[e,t]=f();return p[0]=e,s.postMessage(p,r),t}}),r},set:Qe});return s.addEventListener("message",async({data:e})=>{"string"==typeof e[0]?h.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,m,i),s.postMessage(e))}),s.start(),{native:Ge,proxy:g,ffi_timeout:r,sync:a,transfer:ze}};const mt={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}},gt=new WeakMap,wt=e=>{const t=e||console,n={buffered:bt,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 gt.set(t,n),t}}},_t=new TextDecoder,bt=(e,t=10)=>{const n=[];return r=>{if(r instanceof Uint8Array)for(const s of r)s===t?e(_t.decode(new Uint8Array(n.splice(0)))):n.push(s);else e(r)}},At=(e,...t)=>mt[typeof e](e,...t),{isArray:Et}=Array,{assign:kt,create:vt,defineProperty:St,entries:xt}=Object,{all:$t,resolve:jt}=new Proxy(Promise,{get:(e,t)=>e[t].bind(e)}),Bt=(e,t=location.href)=>new URL(e,t.replace(/^blob:/,"")).href;function Mt(e){return e.startsWith(".")?Bt(e,this):e}const Ft=(e,t,n,r=!1,s=CustomEvent)=>{e.dispatchEvent(new s(`${t}:${n}`,{bubbles:!0,detail:{worker:r}}))},Pt=e=>Function(`\'use strict\';return (${e})`)(),Rt=e=>e.replace(/^(?:\\n|\\r\\n)/,""),Dt=Symbol.for("polyscript.js_modules"),Tt=new Map;St(globalThis,Dt,{value:Tt}),new Proxy(Tt,{get:(e,t)=>e.get(t),has:(e,t)=>e.has(t),ownKeys:e=>[...e.keys()]});const Ot=(e,t)=>!t.startsWith("_"),Lt=(e,t)=>new Proxy(e,{has:Ot,get:(e,n)=>e[t][n]}),Ct=(e,t)=>import(e).then(e=>{Tt.set(t,{...e})}),It=e=>new Promise((t,n)=>{document.querySelector(`link[rel="stylesheet"][href="${e}"]`)?t():document.head.append(kt(document.createElement("link"),{rel:"stylesheet",href:e,onload:t,onerror:n}))}),Ht=e=>/\\.css$/i.test(new URL(e).pathname),Ut=(e,t)=>e.has(t),Wt=e=>[...e.keys()];var Nt=(e,t,n,r)=>{const s=globalThis[Dt];if(n)for(let[e,t]of xt(n)){let n=s.get(t);n&&!Et(n)||(s.set(t,n||(n=[])),n.push(e))}return((e,t,n,r)=>new Proxy(e,{has:Ut,ownKeys:Wt,get:(e,s)=>{let o=e.get(s);if(Et(o)){let a=o;o=null;for(let e of a)e=Bt(e,r),Ht(e)?n.importCSS(e):(n.importJS(e,s),o=t[Dt].get(s));e.set(s,o)}return o}}))(s,e,t,r)};const qt=new Map,Jt=e=>qt.get(e),zt=(e,t)=>{try{return Function("require",t)(Jt)}catch(t){gt.get(e).stderr(t)}};var Kt={type:"dummy",module:()=>"data:text/javascript,",engine:e=>wt().get(e),registerJSModule(e,t,n){qt.set(t,n)},run:zt,runAsync:zt,runEvent:async(e,t,n)=>{try{await Function("require","e",`return ${t}(e)`)(Jt,n)}catch(t){gt.get(e).stderr(t)}},transform:(e,t)=>t,writeFile(){}};const Gt=Object.getOwnPropertyDescriptors(Response.prototype),Vt=e=>"function"==typeof e,Xt={get:(e,t)=>Gt.hasOwnProperty(t)?((e,t,{get:n,value:r})=>n||!Vt(r)?e.then(e=>e[t]):(...n)=>e.then(e=>e[t](...n)))(e,t,Gt[t]):((e,t)=>Vt(t)?t.bind(e):t)(e,e[t])};var Yt=(e,...t)=>new Proxy(fetch(e,...t),Xt);const Zt=!globalThis.window,Qt=({FS:e,PATH:t,PATH_FS:n},r,s)=>{const o=n.resolve(r),a=t.dirname(o);return e.mkdirTree?e.mkdirTree(a):tn(e,a),e.writeFile(o,new Uint8Array(s),{canOwn:!0})},en=e=>{const t=e.split("/");return t.pop(),t.join("/")},tn=(e,t)=>{const n=[];for(const r of t.split("/"))"."!==r&&".."!==r&&(n.push(r),r&&e.mkdir(n.join("/")))},nn=(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(/^\\/+/,"/")},rn=e=>{const t=e.map(e=>e.trim().replace(/(^[/]*|[/]*$)/g,"")).filter(e=>""!==e&&"."!==e).join("/");return e[0].startsWith("/")?`/${t}`:t},sn=(e,t)=>Yt(Bt(e,t)).arrayBuffer(),on=(e,t,n,r)=>$t((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(Et(r))return r.map(n=>({url:rn([e,n]),path:rn([t,n])}));const s=n||e.slice(1+e.lastIndexOf("/"));return[{url:e,path:rn([t,s])}]})})(n).map(({url:n,path:s})=>sn(n,r).then(n=>e.writeFile(t,s,n)))),an=(e,t)=>t.endsWith("/")?`${t}${e.split("/").pop()}`:t,cn=(e,t)=>e.replace(/\\{.+?\\}/g,e=>{if(!t.has(e))throw new SyntaxError(`Invalid template: ${e}`);return t.get(e)}),ln=(e,t,n,r)=>$t((e=>{const t=new Map,n=new Set,r=[];for(const[s,o]of xt(e))if(/^\\{.+\\}$/.test(s)){if(t.has(s))throw new SyntaxError(`Duplicated template: ${s}`);t.set(s,cn(o,t))}else{const e=cn(s,t),a=an(e,cn(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})=>sn(n,r).then(r=>e.writeFile(t,s,r,n)))),un=({main:e,worker:t},n)=>{const r=[];if(t&&Zt)for(let[e,s]of xt(t))e=Bt(e,n),r.push(Ct(e,s));if(e&&!Zt)for(let[t,s]of xt(e))t=Bt(t,n),Ht(t)?It(t):r.push(Ct(t,s));return $t(r)},pn=e=>t=>{dispatchEvent(new CustomEvent(`${e}:progress`,{detail:t}))},{isNaN:dn,isFinite:fn,isInteger:hn}=Number,{ownKeys:yn}=Reflect,{is:mn}=Object,gn=(e,t,n)=>{const r=n.get(e),s=!r;return s?(ee.setUint32(0,t.length,!0),n.set(e,[te[0],te[1],te[2],te[3]])):t.push(O,r[0],r[1],r[2],r[3]),s},wn=(e,t,n)=>{ee.setUint32(0,n,!0),e.push(t,te[0],te[1],te[2],te[3])},_n=(e,t,n)=>{switch(typeof e){case"number":e&&fn(e)?hn(e)&&e<256&&-1<e?t.push(g,e):(ee.setFloat64(0,e,!0),t.push(m,te[0],te[1],te[2],te[3],te[4],te[5],te[6],te[7])):dn(e)?t.push(w):e?t.push(e<0?b:_):t.push(mn(e,0)?A:E);break;case"object":switch(!0){case null===e:t.push(y);break;case!gn(e,t,n):break;case q(e):{const r=e.length;wn(t,$,r);for(let s=0;s<r;s++)_n(e[s],t,n);break}case J(e):if(t.push(T),_n(Re(e),t,n),e=e.buffer,!gn(e,t,n))break;case e instanceof ArrayBuffer:{const n=new Uint8Array(e);wn(t,j,n.length),bn(t,n);break}case e instanceof Date:t.push(B),_n(e.getTime(),t,n);break;case e instanceof Map:wn(t,F,e.size);for(const[r,s]of e)_n(r,t,n),_n(s,t,n);break;case e instanceof Set:wn(t,D,e.size);for(const r of e)_n(r,t,n);break;case e instanceof Error:t.push(M),_n(e.name,t,n),_n(e.message,t,n),_n(e.stack,t,n);break;case e instanceof RegExp:t.push(R),_n(e.source,t,n),_n(e.flags,t,n);break;default:if("toJSON"in e){const r=e.toJSON();_n(r===e?null:r,t,n)}else{const r=yn(e),s=r.length;wn(t,P,s);for(let o=0;o<s;o++){const s=r[o];_n(s,t,n),_n(e[s],t,n)}}}break;case"string":if(gn(e,t,n)){const n=C.encode(e);wn(t,S,n.length),bn(t,n)}break;case"boolean":t.push(e?f:d);break;case"symbol":t.push(x),_n(U(e),t,n);break;case"bigint":{let n=k;9223372036854775807n<e?(ee.setBigUint64(0,e,!0),n=v):ee.setBigInt64(0,e,!0),t.push(n,te[0],te[1],te[2],te[3],te[4],te[5],te[6],te[7]);break}default:t.push(h)}};let bn=Z;const An={parse:ie,stringify:e=>{const t=[];return bn=Z,_n(e,t,new Map),t}},En=new WeakMap,kn=async(e,t,n,r,s)=>{r.files&&(t("Loading files"),await ln(e,n,r.files,s),t("Loaded files")),r.fetch&&(t("Loading fetch"),await on(e,n,r.fetch,s),t("Loaded fetch")),r.js_modules&&(t("Loading JS modules"),await un(r.js_modules,s),t("Loaded JS modules"))},vn=(e,t,n)=>{"polyscript"===t&&(n.lazy_py_modules=async(...t)=>(await En.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=An),e.registerJsModule(t,n)},Sn=(e,t)=>{if(e.endsWith("/*")){if(/\\.(zip|whl|tgz|tar(?:\\.gz)?)$/.test(t))return RegExp.$1;throw new Error(`Unsupported archive ${t}`)}return""},xn=(e,t,...n)=>{try{return e.runPython(At(t),...n)}catch(t){gt.get(e).stderr(t)}},$n=async(e,t,...n)=>{try{return await e.runPythonAsync(At(t),...n)}catch(t){gt.get(e).stderr(t)}},jn=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){gt.get(e).stderr(t)}};var Bn=(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 Mn=async e=>(await import("./toml-BK2RWy-G.js")).parse(e);async function Fn(e,t){return new Promise((n,r)=>{e.syncfs(t,e=>{e?r(e):n()})})}function Pn(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 Rn(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):tn(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 Fn(t,!0),{syncfs:async()=>await Fn(t,!1)}}}const Rn=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},Dn=(e,t)=>{try{e.mkdir(t)}catch(e){}},Tn=pn("mpy");var On={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}=wt({stderr:bt(console.error),stdout:bt(console.log)});n=n.replace(/\\.m?js$/,".wasm"),Tn("Loading MicroPython");const i=await a(e({linebuffer:!1,stderr:s,stdout:o,url:n})),c=Ln.bind(this,i,r);return En.set(i,c),await kn(this,Tn,i,t,r),this.writeFile(i,"./mip.py",Bn),t.packages&&(Tn("Loading packages"),await c(t.packages.map(Mt,r)),Tn("Loaded packages")),Tn("Loaded MicroPython"),i.mountNativeFS||(i.mountNativeFS=Pn(i._module)),i},registerJSModule:vn,run:xn,runAsync:$n,runEvent:jn,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=Sn(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-BKVoQflw.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)Dn(s,i);else{Dn(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 Qt(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 Qt(i,t,n)}};async function Ln(e,t,n){let r;for(const s of n)if(s.endsWith(".whl")){const n=Bt(s,t),r=await Yt(n).arrayBuffer();await this.writeFile(e,"./*",r,n)}else r||(r=e.pyimport("mip")),r.install(s)}const Cn={dict_converter:Object.fromEntries},{stringify:In}=JSON,{apply:Hn}=Reflect,Un=Function.prototype,Wn=e=>function(...t){return Hn(e,this,t)};let Nn,qn;const Jn=e=>{const t=new WeakMap,n=n=>{for(let r,s=0;s<n.length;s++)switch(typeof(r=n[s])){case"object":if(null===r)break;case"function":if(Nn in r&&!r[Nn].shared?.gcRegistered){e=!1;let o=t.get(r)?.deref();if(!o){o=qn(r);const e=new WeakRef(o);t.set(r,e),t.set(o,e)}n[s]=o,e=!0}}};Object.defineProperties(Un,{apply:{value(t,r){return e&&n(r),Hn(this,t,r)}},call:{value(t,...r){return e&&n(r),Hn(this,t,r)}}})},zn=pn("py"),Kn=new WeakMap;var Gn={type:"pyodide",module:(e="0.27.7")=>`https://cdn.jsdelivr.net/pyodide/v${e}/full/pyodide.mjs`,async engine({loadPyodide:e,version:t},n,r,s){zn("Loading Pyodide");let{packages:o,index_urls:a}=n;o&&(o=o.map(Mt,s)),zn("Loading Storage");const c=r.slice(0,r.lastIndexOf("/")),l=new i(`${c}@${t}`),u={indexURL:c},p="never"!==n.packages_cache;if(await l.sync(),p){if(o)if("passthrough"===n.packages_cache)u.packages=o,o=null,l.clear();else{o=o.sort();const e=In(o);if(l.has(e)){const t=new Blob([l.get(e)],{type:"application/json"});u.lockFileURL=URL.createObjectURL(t),u.packages=o.map(e=>e.split(/[>=<]=/)[0]),o=null}}}else l.clear();zn("Loaded Storage");const{stderr:d,stdout:f,get:h}=wt(),y=await h(e({stderr:d,stdout:f,...u}));n.debug&&y.setDebug(!0);const m=Xn.bind(y);return a&&Kn.set(y,a),En.set(y,m),await kn(this,zn,y,n,s),o&&await m(o,l,p),await l.close(),u.lockFileURL&&URL.revokeObjectURL(u.lockFileURL),zn("Loaded Pyodide"),"auto"===n.experimental_create_proxy&&(y.runPython(["import js","from pyodide.ffi import to_js","o=js.Object.fromEntries","js.experimental_create_proxy=lambda r:to_js(r,dict_converter=o)"].join(";"),{globals:y.toPy({})}),qn=globalThis.experimental_create_proxy,delete globalThis.experimental_create_proxy,[Nn]=Reflect.ownKeys(qn).filter(e=>"symbol"==typeof e&&"Symbol(pyproxy.attrs)"===String(e)),Jn(!0)),y},registerJSModule:vn,run:Wn(xn),runAsync:Wn($n),runEvent:Wn(jn),transform:(e,t)=>Hn(Vn,e,[t]),writeFile:(e,t,n,r)=>{const s=Sn(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 Qt({FS:o,PATH:a,PATH_FS:i},t,n)}};function Vn(e){const{ffi:{PyProxy:t}}=this;if(e&&"object"==typeof e){if(e instanceof t)return e.toJs(Cn);if(e instanceof Map)return new Map([...e.entries()]);if(Et(e))return e.map(Vn,this)}return e}async function Xn(e,t,n=!1){const{log:r}=console,s=(e,...t)=>{r(e,...t),console.log=r,zn(e),console.log=s};console.log=s,await this.loadPackage("micropip");const o=this.pyimport("micropip");if(Kn.has(this)&&o.set_index_urls(Kn.get(this)),await o.install(e,{keep_going:!0}),console.log=r,n&&t instanceof i){const n=o.freeze();t.set(In(e),n)}o.destroy()}const Yn="ruby-wasm-wasi",Zn=Yn.replace(/\\W+/g,"_");var Qn={type:Yn,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 Yt(n).arrayBuffer(),o=await WebAssembly.compile(s),{vm:a}=await e(o);return t.files&&await ln(this,a,t.files,r),t.fetch&&await on(this,a,t.fetch,r),t.js_modules&&await un(t.js_modules,r),a},registerJSModule(e,t,n){t=t.replace(/\\W+/g,"__");const r=`__module_${Zn}_${t}`;globalThis[r]=n,this.run(e,`require "js";$${t}=JS.global[:${r}]`),delete globalThis[r]},run:(e,t,...n)=>e.eval(At(t),...n),runAsync:(e,t,...n)=>e.evalAsync(At(t),...n),async runEvent(e,t,n){if(/^xworker\\.(on\\w+)$/.test(t)){const{$1:t}=RegExp,r=`__module_${Zn}_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 ${Yn}`)}};var er={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}=wt(),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 ln(this,c,n.files,s),n.fetch&&await on(this,c,n.fetch,s),n.js_modules&&await un(n.js_modules,s),c},registerJSModule:(e,t,n)=>{e.global.set(t,n)},run:(e,t,...n)=>{try{return e.doStringSync(At(t),...n)}catch(t){gt.get(e).stderr(t)}},runAsync:async(e,t,...n)=>{try{return await e.doString(At(t),...n)}catch(t){gt.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){gt.get(e).stderr(t)}},transform:(e,t)=>t,writeFile:({cmodule:{module:{FS:e}}},t,n)=>((e,t,n)=>(tn(e,en(t)),t=nn(e,t),e.writeFile(t,new Uint8Array(n),{canOwn:!0})))(e,t,n)};const tr=new WeakMap,nr=new FinalizationRegistry(e=>e()),rr=async(e,t)=>{const{shelter:n,destroy:r,io:s}=tr.get(e),{output:o,result:a}=await n.captureR(At(t));for(const{type:e,data:t}of o)s[e](t);return nr.register(a,r),a};var sr={type:"webr",experimental:!0,module:(e="0.4.4")=>`https://cdn.jsdelivr.net/npm/webr@${e}/dist/webr.mjs`,async engine(e,t,n,r){const{get:s}=wt(),o=new e.WebR;await s(o.init().then(()=>o));const a=await new o.Shelter;return tr.set(o,{module:e,shelter:a,destroy:a.destroy.bind(a),io:gt.get(o)}),t.files&&await ln(this,o,t.files,r),t.fetch&&await on(this,o,t.fetch,r),t.js_modules&&await un(t.js_modules,r),o},registerJSModule(e,t){console.warn(`Experimental interpreter: module ${t} is not supported (yet)`)},run:rr,runAsync:rr,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 or=new Map,ar=new Map,ir=new Proxy(new Map,{get(e,t){if(!e.has(t)){const[n,...r]=t.split("@"),s=or.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=>(ar.set(t,e),s(r,e,n,o)))}}),cr=e=>{for(const t of[].concat(e.type))or.set(t,e)};for(const e of[Kt,On,Gn,Qn,er,sr])cr(e);const{parse:lr}=JSON,ur=(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,[Bt(e),n]})(e,t);return"json"===s?n=Yt(r).json():"toml"===s?n=Yt(r).text().then(Mn):"string"===s?n=pr(e):"object"===s&&e?n=e:"txt"===s&&"string"==typeof n&&(n=pr(n)),[n,e=r]},pr=e=>{try{return lr(e)}catch(t){return Mn(e)}},dr="BeforeRun",fr="AfterRun",hr=[`code${dr}`,`code${dr}Async`,`code${fr}`,`code${fr}Async`],yr=["onWorker","onReady",`on${dr}`,`on${dr}Async`,`on${fr}`,`on${fr}Async`];function mr(e,t){const{run:n,runAsync:r}=or.get(this.type);return{...e,run:n.bind(this,t),runAsync:r.bind(this,t)}}const gr=(e,t,n,r,s,o)=>{if(s||o){const a=mr.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 wr,_r,br;const Ar=(e,t)=>{addEventListener(e,t||(async t=>{try{await wr,_r(`xworker.on${e}`,t)}catch(e){postMessage(e)}}),!!t&&{once:!0})},{proxy:Er,sync:kr,native:vr,window:Sr,isWindowProxy:xr,ffi:$r}=await(async e=>{const t=await yt({...e,decoder:e?.decoder||ce}),n=He({...e,buffer:!0,reflect:t.proxy[l],timeout:t.ffi_timeout});return t.proxy[u]=n.reflect,{...t,window:n.global,isWindowProxy:n.isProxy,ffi:{assign:n.assign,direct:n.direct,evaluate:n.evaluate,gather:n.gather,query:n.query}}})({transfer:!1,transform:e=>br?br(e):e}),jr={polyfill:kr,sync:Er,window:vr||kr?Sr:null,isWindowProxy:xr,onmessage:console.info,onerror:console.error,onmessageerror:console.warn,postMessage:postMessage.bind(self)};Ar("message",({data:{options:e,config:t,configURL:n,code:r,hooks:s}})=>{wr=(async()=>{try{const{id:o,tag:c,type:l,custom:u,version:p,config:d,async:f}=e,h=((e,t="")=>`${e}@${t}`.replace(/@$/,""))(l,p),y=await((e,t,n,r={})=>(t&&([r,t]=ur(t,n,r)),jt(r).then(n=>ir[e](n,t))))(h,t,n,d),{js_modules:m}=ar.get(h),g=m?.main,w=vt(or.get(l)),_=((e,t,n,r)=>({type:t,config:n,interpreter:r,io:gt.get(r),run:(t,...n)=>e.run(r,t,...n),runAsync:(t,...n)=>e.runAsync(r,t,...n),runEvent:(...t)=>e.runEvent(r,...t)}))(w,u||l,d||{},y);let b="run";if(f&&(b+="Async"),s){let e,t,n="",r="";for(const e of hr){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,Rt(t),...o);return r&&s(e,r,...o),a}:async(e,t,...o)=>{n&&await s(e,n,...o);const a=await s(e,Rt(t),...o);return r&&await s(e,r,...o),a}})(w,b,n,r);for(const n of yr.slice(2)){const r=s[n];if(r){const s=n.endsWith("Async");if(s&&f||!s&&!f){const s=Pt(r);n.startsWith("onBefore")?e=s:t=s}}}gr(w,_,jr,f,e,t)}let A,E,k,v=null,S="";(vr||kr)&&(({CustomEvent:A,document:E}=Sr),v=o&&E.getElementById(o)||null,k=e=>Ft(v,u||l,e,!0,A));const x=Nt(Sr,Er,g,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}`,Lt(r,e));t.registerJSModule(n,s,r)})(l,w,y,x),w.registerJSModule(y,"polyscript",{IDBMap:a,IDBMapSync:i,xworker:jr,currentScript:v,config:_.config,js_modules:x,ffi:$r,get target(){return!S&&v&&("SCRIPT"===c?v.after(kt(Sr.document.createElement(`script-${u||l}`),{id:S=`${o}-target`})):(S=o,v.replaceChildren(),v.style.display="block")),S}}),_r=w.runEvent.bind(w,y),br=w.transform.bind(w,y),v&&k("ready"),s?.onReady&&Pt(s?.onReady).call(w,mr.call(w,_,y),jr),await w[b](y,r),["micropython","pyodide"].includes(w.type)){const e="polyscript",t=`__${e}_workers__`,n="__export__";y.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&&y.runPython([`from ${e} import xworker as ${t}`,...r.map(e=>`${t}.sync.${e} = ${e}`),`del ${t}`].join("\\n"))}return v&&k("done"),postMessage("polyscript:done"),y}catch(e){postMessage(e)}})(),Ar("error"),Ar("message"),Ar("messageerror"),(vr||kr)&&addEventListener("py:progress",({type:e,detail:t})=>{Sr.dispatchEvent(new Sr.CustomEvent(e,{detail:t}))})});\n'.replace(zt,Jt)],{type:"text/javascript"})),...e))({serviceWorker:n?.serviceWorker||n?.service_worker,reflected_ffi_timeout:globalThis.reflected_ffi_timeout??-1}),{postMessage:a}=s,i=this instanceof rs,c=pn(s.proxy,{importJS:Tn,importCSS:Pn}),l=h();let u=o(t).text().then(e=>{const t=i?this.toJSON():void 0;a.call(s,{options:n,config:r,code:e,hooks:t})}).then(()=>{u={then:e=>e()}});return dn(s,{sync:{value:c},ready:{value:l.promise},ffi:{direct:s.direct},postMessage:{value:(e,...t)=>u.then(()=>a.call(s,e,...t))},onerror:{writable:!0,configurable:!0,value:console.error}}),s.addEventListener("message",e=>{const{data:t}=e,n=t instanceof Error;(n||"polyscript:done"===t)&&(e.stopImmediatePropagation(),n?(l.reject(t),s.onerror(fn(e,{type:{value:"error"},error:{value:t}}))):l.resolve(s))}),i&&this.onWorker?.(this.interpreter,s),s};const os="Invalid content",as="Invalid worker attribute",is="Invalid worker attribute";var cs=e=>{const{src:t,worker:n}=e.attributes;if(n){let{value:r}=n;if(r)throw new SyntaxError(is);if(r=t?.value,!r){if(t)throw new SyntaxError(as);if(e.childElementCount){const{innerHTML:t,localName:n,type:s}=e,o=s||n.replace(/-script$/,"");r=ln(t),console.warn(`Deprecated: use <script type="${o}"> for an always safe content parsing:\n`,r)}else r=e.textContent;return URL.createObjectURL(new Blob([cn(r)],{type:"text/plain"}))}return r}if(t&&e.textContent.replace(/\/\*[\s\S]*?\*\//g,"").replace(/^\s*(?:\/\/|#).*/gm,"").trim())throw new SyntaxError(os)};const ls=(e,t)=>{const n=(e=>{let t=e;for(;t.parentNode;)t=t.parentNode;return t})(e);return n.getElementById(t)||((e,t=document)=>t.querySelector(e))(t,n)},us=new WeakMap,ps={get(){let e=us.get(this);return e||(e=document.createElement(`${this.type}-script`),us.set(this,e),ms(this)),e},set(e){"string"==typeof e?us.set(this,ls(this,e)):(us.set(this,e),ms(this))}},fs=new WeakMap,ds=new Map,hs=(e,t)=>{const n=e?.value;return n?t+n:""},ys=(e,t,n,r,s,o,a=e)=>{if(!ds.has(t)){const i={interpreter:Gr(n,s,o),queue:gn(),XWorker:ss(e,r)};ds.set(t,i),ds.has(e)||ds.set(e,i),ds.has(a)||ds.set(a,i)}return ds.get(t)},ms=async e=>{if(fs.has(e)){const{target:t}=e;t&&(e.closest("head")?document.body.append(t):e.after(t))}else{const{attributes:{config:t,env:n,name:r,target:s,version:a,"service-worker":i},src:c,type:l}=e,u=!Dn(e),p=a?.value,h=Yr(l,p);let m=hs(t,"|");const w=hs(n,"")||`${h}${m}`;m=m.slice(1);const _=cs(e);if(_){const t=new(ss(l,p))(_,{...An(e,l),version:p,async:u,config:m,serviceWorker:i?.value});fs.set(hn(e,"xworker",{value:t}),{xworker:t});const n=r?.value;return void(n&&y[n].resolve(t.ready))}const b=hs(s,""),A=ys(l,w,h,p,m);fs.set(hn(e,"target",ps),A),b&&us.set(e,ls(e,b));const v=c?o(c).text():e.textContent;A.queue=A.queue.then(()=>(async(e,t,n,r)=>{const{type:s}=e,o=Cr.get(s);o.experimental&&console.warn(`The ${s} interpreter is experimental`);const[a,i]=await mn([fs.get(e).interpreter,t]);try{Rn(s,o,a,jn),o.registerJSModule(a,"polyscript",{IDBMap:f,IDBMapSync:d,XWorker:n,currentScript:e,js_modules:jn,workers:g}),vn(e,s,"ready"),hn(document,"currentScript",{configurable:!0,get:()=>e});const t=vn.bind(null,e,s,"done");let c=o[r?"runAsync":"run"](a,i);return r&&(c=await c),t(),c}finally{delete document.currentScript}})(e,v,A.XWorker,u))}},gs=new Proxy(fn(null),{get:(e,t)=>new Promise(queueMicrotask).then(()=>ws(t))}),ws=async e=>{if(ds.has(e)){const{interpreter:t,queue:n}=ds.get(e);return(await mn([t,n]))[0]}const t=ds.size?`Available interpreters are: ${[...ds.keys()].map(e=>`"${e}"`).join(", ")}.`:"There are no interpreters in this page.";throw new Error(`The interpreter "${e}" was not found. ${t}`)},_s=async e=>{const{type:n,currentTarget:r}=e;if(Hr.length)for(let{name:s,value:o,ownerElement:a}of t(`./@*[${Hr.map(e=>`name()="${e}${n}"`).join(" or ")}]`,r)){s=s.slice(0,-(n.length+1));const t=await ws(a.getAttribute(`${s}-env`)||s);Cr.get(s).runEvent(t,o,e)}},bs=e=>{if(Hr.length)for(let{name:n,ownerElement:r}of t(`.//@*[${Hr.map(e=>`starts-with(name(),"${e}")`).join(" or ")}]`,e)){const e=n.lastIndexOf("-"),t=n.slice(e+1);"env"!==t&&(r.addEventListener(t,_s),"disabled"in r&&!r.disabled&&(r.disabled=!0,gs[n.slice(0,e)].then(()=>{r.disabled=!1})))}},As=ss(),vs=[],Es=new Map,ks=new Map,Ss=new Map,xs=async e=>{for(const t of vs)if(e.matches(t)){const n=ks.get(t),r=$s.get(n),{resolve:s}=Ss.get(n),{options:o,known:a}=r;if(a.has(e))return;a.add(e);for(const[t,n]of Es)e.matches(t)&&await n(e);const{interpreter:i,configURL:c,config:l,version:u,env:p,onerror:h,hooks:m}=o;let w;try{const t=cs(e);if(t){let r=u,o=c,a=e.getAttribute("config")||l||{};if(!r||!a){const[e,t]=Jr(a,c);a=await e,o=t,r=a.version||a.interpreter,r&&/\.m?js$/.test(r)&&(r=new URL(r,o).href)}const p=As.call(new rs(null,m),t,{...An(e,n),configURL:o,version:r,type:i,custom:n,config:a,async:!Dn(e),serviceWorker:e.getAttribute("service-worker")});hn(e,"xworker",{value:p}),s({type:n,xworker:p});const f=e.getAttribute("name");return void(f&&y[f].resolve(p.ready))}}catch(e){w=e}const _=Yr(i,u),b=p||`${_}${l?`|${l}`:""}`,{interpreter:A,XWorker:v}=ys(n,b,_,u,l,c,i),E=await A,k=fn(Cr.get(i)),S=new rs(E,m),x=function(...e){return v.apply(S,e)},$={...En(k,n,structuredClone(Ir.get(_)),E),XWorker:x};Rn(i,k,E,jn),k.registerJSModule(E,"polyscript",{IDBMap:f,IDBMapSync:d,XWorker:x,config:$.config,currentScript:n.startsWith("_")?null:e,js_modules:jn,workers:g});for(const t of["Run","RunAsync"]){let n,r,s="",o="";for(const e of Qr){const n=m?.main?.[e];n&&e.endsWith(t)&&(e.startsWith("codeBefore")?s=cn(n()):o=cn(n()))}(s||o)&&Sn(k,`r${t.slice(1)}`,s,o);for(let e=2;e<es.length;e++){const s=es[e],o=m?.main?.[s];o&&s.endsWith(t)&&(s.startsWith("onBefore")?n=o:r=o)}ns(k,$,e,t.endsWith("Async"),n,r)}r.queue=r.queue.then(()=>(s($),w&&h?.(w,e),m?.main?.onReady?.($,e)))}},$s=new Map;let js=0;const Bs=e=>(Ss.has(e)||Ss.set(e,h()),Ss.get(e).promise),[{customObserver:Ms,define:Rs,whenDefined:Ts,env:Ps,Hook:Fs,XWorker:Ds},Os]=((e,t,n=globalThis)=>{const r=Symbol.for(e),s=r in n;return[s?n[r]:Object.defineProperty(n,r,{value:t})[r],s]})("polyscript",{customObserver:Es,define:(t,n)=>{let r=null==t;if(r)t="_ps"+js++;else if(Cr.has(t)||$s.has(t))throw new Error(`<script type="${t}"> already registered`);if(!Cr.has(n?.interpreter))throw new Error("Unspecified interpreter");Cr.set(t,Cr.get(n.interpreter));const s=[`script[type="${t}"]`];if(Bs(t),r){const{hooks:e}=n,r=e?.main?.onReady;n={...n,hooks:{...e,main:{...e?.main,onReady(e,n){vs.splice(vs.indexOf(t),1),Cr.delete(t),$s.delete(t),Ss.delete(t),n.remove(),r?.(e)}}}},document.head.append(pn(document.createElement("script"),{type:t}))}else s.push(`${t}-script`),Hr.push(`${t}-`);for(const e of s)ks.set(e,t);vs.push(...s),$s.set(t,{options:pn({env:t},n),known:new WeakSet,queue:Promise.resolve()}),r||bs(document),e(s.join(",")).forEach(xs)},whenDefined:Bs,env:gs,Hook:rs,XWorker:As});if(!Os){const t=new MutationObserver(e=>{const t=Wr.join(",");for(const{type:r,target:s,attributeName:o,addedNodes:a}of e){if("attributes"===r){const e=o.lastIndexOf("-")+1;if(e){const t=o.slice(0,e);for(const n of Hr)if(t===n){const t=o.slice(e);if("env"!==t){const e=s.hasAttribute(o)?"add":"remove";s[`${e}EventListener`](t,_s)}break}}continue}for(const e of a)1===e.nodeType&&(bs(e),t&&e.matches(t)?ms(e):n(t,e,!0))}}),n=(t,n,r)=>{t&&e(t,n).forEach(ms),(t=vs.join(","))&&(r&&xs(n),e(t,n).forEach(xs))},r=e=>(t.observe(e,{childList:!0,subtree:!0,attributes:!0}),e),{attachShadow:s}=Element.prototype;pn(Element.prototype,{attachShadow(e){return r(s.call(this,e))}}),queueMicrotask(()=>{bs(r(document)),n(Wr.join(","),document,!1)})}export{Fs as Hook,os as INVALID_CONTENT,as as INVALID_SRC_ATTR,is as INVALID_WORKER_ATTR,Ds as XWorker,Ms as customObserver,Rs as define,Ps as env,Ts as whenDefined}; //# sourceMappingURL=index.js.map diff --git a/docs/index.js.map b/docs/index.js.map index 0d06e0ad..84b50842 100644 --- a/docs/index.js.map +++ b/docs/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../node_modules/sticky-module/esm/index.js","../node_modules/basic-devtools/esm/index.js","../node_modules/@webreflection/fetch/esm/index.js","../node_modules/@webreflection/idb-map/index.js","../node_modules/@webreflection/idb-map/sync.js","../node_modules/@webreflection/utils/src/with-resolvers.js","../esm/workers.js","../node_modules/coincident/dist/flatted_encoder.js","../node_modules/coincident/src/proxy/traps.js","../node_modules/coincident/src/utils/encoder.js","../node_modules/coincident/src/json/encoder.js","../node_modules/proxy-target/esm/types.js","../node_modules/coincident/src/utils/shared.js","../node_modules/coincident/src/window/types.js","../node_modules/coincident/src/proxy/encoder.js","../node_modules/coincident/src/window/constants.js","../node_modules/coincident/src/transfer.js","../node_modules/coincident/src/utils.js","../node_modules/coincident/src/main.js","../node_modules/next-resolver/index.js","../node_modules/proxy-target/esm/traps.js","../node_modules/js-proxy/esm/traps.js","../node_modules/coincident/src/window/symbol.js","../node_modules/gc-hook/esm/index.js","../node_modules/coincident/src/window/events.js","../node_modules/coincident/src/proxy/main.js","../node_modules/js-proxy/esm/heap.js","../esm/worker/xworker.js","../node_modules/coincident/src/window/main.js","../esm/interpreter/_io.js","../esm/interpreter/dummy.js","../node_modules/codedent/esm/index.js","../node_modules/plain-tag/esm/index.js","../node_modules/html-escaper/esm/index.js","../esm/utils.js","../esm/interpreter/_utils.js","../node_modules/coincident/dist/flatted.js","../esm/interpreter/_python.js","../esm/python/mip.js","../esm/3rd-party.js","../esm/interpreter/_nativefs.js","../esm/interpreter/micropython.js","../esm/interpreter/pyodide.js","../esm/interpreter/ruby-wasm-wasi.js","../esm/interpreter/wasmoon.js","../esm/interpreter/webr.js","../esm/interpreters.js","../esm/loader.js","../node_modules/to-json-callback/esm/index.js","../esm/hooks.js","../esm/worker/hook.js","../esm/worker/class.js","../esm/errors.js","../esm/worker/url.js","../esm/script-handler.js","../esm/listeners.js","../esm/xworker.js","../esm/custom.js","../esm/index.js"],"sourcesContent":["/**\n * Allow leaking a module globally to help avoid conflicting exports\n * if the module might have been re-bundled in other projects.\n * @template T\n * @param {string} name the module name to save or retrieve\n * @param {T} value the module as value to save if not known\n * @param {globalThis} [global=globalThis] the reference where modules are saved where `globalThis` is the default\n * @returns {[T, boolean]} the passed `value` or the previous one as first entry, a boolean indicating if it was known or not\n */\nconst stickyModule = (name, value, global = globalThis) => {\n const symbol = Symbol.for(name);\n const known = symbol in global;\n return [\n known ?\n global[symbol] :\n Object.defineProperty(global, symbol, { value })[symbol],\n known\n ];\n};\n\nexport default stickyModule;\n","/**\n * Given a CSS selector, returns the first matching node, if any.\n * @param {string} css the CSS selector to query\n * @param {Document | DocumentFragment | Element} [root] the optional parent node to query\n * @returns {Element?} the found element, if any\n */\nconst $ = (css, root = document) => root.querySelector(css);\n\n/**\n * Given a CSS selector, returns a list of all matching nodes.\n * @param {string} css the CSS selector to query\n * @param {Document | DocumentFragment | Element} [root] the optional parent node to query\n * @returns {Element[]} a list of found nodes\n */\nconst $$ = (css, root = document) => [...root.querySelectorAll(css)];\n\n/**\n * Given a XPath selector, returns a list of all matching nodes.\n * @param {string} path the XPath selector to evaluate\n * @param {Document | DocumentFragment | Element} [root] the optional parent node to query\n * @returns {Node[]} a list of found nodes (elements, attributes, text, comments)\n */\nconst $x = (path, root = document) => {\n const expression = (new XPathEvaluator).createExpression(path);\n const xpath = expression.evaluate(root, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE);\n const result = [];\n for (let i = 0, {snapshotLength} = xpath; i < snapshotLength; i++)\n result.push(xpath.snapshotItem(i));\n return result;\n};\n\nexport {$, $$, $x};\n","// a bit terser code than I usually write but it's 10 LOC within 80 cols\n// if you are struggling to follow the code you can replace 1-char\n// references around with the following one, hoping that helps :-)\n\n// d => descriptors\n// k => key\n// p => promise\n// r => response\n\nconst d = Object.getOwnPropertyDescriptors(Response.prototype);\n\nconst isFunction = value => typeof value === 'function';\n\nconst bypass = (p, k, { get, value }) => get || !isFunction(value) ?\n p.then(r => r[k]) :\n (...args) => p.then(r => r[k](...args));\n\nconst direct = (p, value) => isFunction(value) ? value.bind(p) : value;\n\nconst handler = {\n get: (p, k) => d.hasOwnProperty(k) ? bypass(p, k, d[k]) : direct(p, p[k])\n};\n\n/**\n * @param {RequestInfo | URL} input\n * @param {...RequestInit} init\n * @returns {Promise<Response> & Response}\n */\nexport default (input, ...init) => new Proxy(fetch(input, ...init), handler);\n","const { assign } = Object;\n\nconst STORAGE = 'entries';\nconst READONLY = 'readonly';\nconst READWRITE = 'readwrite';\n\n/**\n * @typedef {Object} IDBMapOptions\n * @prop {'strict' | 'relaxed' | 'default'} [durability]\n * @prop {string} [prefix]\n */\n\n/** @typedef {[IDBValidKey, unknown]} IDBMapEntry */\n\n/** @type {IDBMapOptions} */\nconst defaultOptions = { durability: 'default', prefix: 'IDBMap' };\n\n/**\n * @template T\n * @param {{ target: IDBRequest<T> }} event\n * @returns {T}\n */\nconst result = ({ target: { result } }) => result;\n\nexport default class IDBMap extends EventTarget {\n // Privates\n /** @type {Promise<IDBDatabase>} */ #db;\n /** @type {IDBMapOptions} */ #options;\n /** @type {string} */ #prefix;\n\n /**\n * @template T\n * @param {(store: IDBObjectStore) => IDBRequest<T>} what\n * @param {'readonly' | 'readwrite'} how\n * @returns {Promise<T>}\n */\n async #transaction(what, how) {\n const db = await this.#db;\n const t = db.transaction(STORAGE, how, this.#options);\n return new Promise((onsuccess, onerror) => assign(\n what(t.objectStore(STORAGE)),\n {\n onsuccess,\n onerror,\n }\n ));\n }\n\n /**\n * @param {string} name\n * @param {IDBMapOptions} options\n */\n constructor(\n name,\n {\n durability = defaultOptions.durability,\n prefix = defaultOptions.prefix,\n } = defaultOptions\n ) {\n super();\n this.#prefix = prefix;\n this.#options = { durability };\n this.#db = new Promise((resolve, reject) => {\n assign(\n indexedDB.open(`${this.#prefix}/${name}`),\n {\n onupgradeneeded({ target: { result, transaction } }) {\n if (!result.objectStoreNames.length)\n result.createObjectStore(STORAGE);\n transaction.oncomplete = () => resolve(result);\n },\n onsuccess(event) {\n resolve(result(event));\n },\n onerror(event) {\n reject(event);\n this.dispatchEvent(event);\n },\n },\n );\n }).then(result => {\n const boundDispatch = this.dispatchEvent.bind(this);\n for (const key in result) {\n if (key.startsWith('on'))\n result[key] = boundDispatch;\n }\n return result;\n });\n }\n\n // EventTarget Forwards\n /**\n * @param {Event} event\n * @returns \n */\n dispatchEvent(event) {\n const { type, message, isTrusted } = event;\n return super.dispatchEvent(\n // avoid re-dispatching of the same event\n isTrusted ?\n assign(new Event(type), { message }) :\n event\n );\n }\n\n // IDBDatabase Forwards\n async close() {\n (await this.#db).close();\n }\n\n // Map async API\n get size() {\n return this.#transaction(\n store => store.count(),\n READONLY,\n ).then(result);\n }\n\n async clear() {\n await this.#transaction(\n store => store.clear(),\n READWRITE,\n );\n }\n\n /**\n * @param {IDBValidKey} key\n */\n async delete(key) {\n await this.#transaction(\n store => store.delete(key),\n READWRITE,\n );\n }\n\n /**\n * @returns {Promise<IDBMapEntry[]>}\n */\n async entries() {\n const keys = await this.keys();\n return Promise.all(keys.map(key => this.get(key).then(value => [key, value])));\n }\n\n /**\n * @param {(unknown, IDBValidKey, IDBMap) => void} callback\n * @param {unknown} [context]\n */\n async forEach(callback, context = this) {\n for (const [key, value] of await this.entries())\n await callback.call(context, value, key, this);\n }\n\n /**\n * @param {IDBValidKey} key\n * @returns {Promise<unknown | undefined>}\n */\n async get(key) {\n const value = await this.#transaction(\n store => store.get(key),\n READONLY,\n ).then(result);\n return value;\n }\n\n /**\n * @param {IDBValidKey} key\n */\n async has(key) {\n const k = await this.#transaction(\n store => store.getKey(key),\n READONLY,\n ).then(result);\n return k !== void 0;\n }\n\n async keys() {\n const keys = await this.#transaction(\n store => store.getAllKeys(),\n READONLY,\n ).then(result);\n return keys;\n }\n\n /**\n * @param {IDBValidKey} key\n * @param {unknown} value\n */\n async set(key, value) {\n await this.#transaction(\n store => store.put(value, key),\n READWRITE,\n );\n return this;\n }\n\n async values() {\n const keys = await this.keys();\n return Promise.all(keys.map(key => this.get(key)));\n }\n\n get [Symbol.toStringTag]() {\n return this.#prefix;\n }\n}\n","import IDBMap from './index.js';\n\nexport default class IDBMapSync extends Map {\n #map;\n #queue;\n constructor(...args) {\n super();\n this.#map = new IDBMap(...args);\n this.#queue = this.#map.entries().then(entries => {\n for (const [key, value] of entries)\n super.set(key, value);\n });\n }\n async close() {\n await this.#queue;\n await this.#map.close();\n }\n async sync() {\n await this.#queue;\n }\n clear() {\n this.#queue = this.#queue.then(() => this.#map.clear());\n return super.clear();\n }\n delete(key) {\n this.#queue = this.#queue.then(() => this.#map.delete(key));\n return super.delete(key);\n }\n set(key, value) {\n this.#queue = this.#queue.then(() => this.#map.set(key, value));\n return super.set(key, value);\n }\n}\n","//@ts-check\r\n\r\n/**\r\n * @template T\r\n * @typedef {{promise: Promise<T>, resolve: (value: T) => void, reject: (reason?: any) => void}} Resolvers\r\n */\r\n\r\n//@ts-ignore\r\nconst withResolvers = Promise.withResolvers;\r\n\r\n/**\r\n * @template T\r\n * @type {() => Resolvers<T>}\r\n */\r\nexport default withResolvers.bind(Promise);\r\n","import withResolvers from '@webreflection/utils/with-resolvers';\n\n// REQUIRES INTEGRATION TEST\n/* c8 ignore start */\nexport const workers = new Proxy(new Map, {\n get(map, name) {\n if (!map.has(name))\n map.set(name, withResolvers());\n return map.get(name);\n },\n});\n\n// filter out forever pending Promises in Pyodide\n// @issue https://github.com/pyscript/pyscript/issues/2106\nconst ignore = new Set(['__dict__', 'constructor', 'get', 'has', 'includes', 'next', 'set', 'then']);\n\nexport const workersHandler = new Proxy(Object.freeze({}), {\n // guard against forever pending Promises in Pyodide\n // @issue https://github.com/pyscript/pyscript/issues/2106\n get: (_, name) => (typeof name === 'string' && !ignore.has(name)) ?\n workers[name].promise.then(w => w.sync) :\n void 0,\n});\n/* c8 ignore stop */\n","var e={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};let t=\"coincident-\";try{new SharedArrayBuffer(4,{maxByteLength:8}),t+=crypto.randomUUID()}catch(e){t+=Math.random().toString(36).substring(2)}const{getPrototypeOf:r}=Object,s=e=>{const t=typeof e;switch(t){case\"function\":case\"undefined\":return\"\";case\"object\":return null===e?\"null\":\"object\";default:return t}},{isArray:n}=Array,{isView:a}=ArrayBuffer,{stringify:o}=JSON,c=(t,r,s)=>{const n=r.get(s);return\"number\"==typeof n?(t.push(e.ref,n),!0):(r.set(s,t.length),!1)},f=(t,o,u,i=s(u))=>{switch(i){case\"null\":t.push(e.null);break;case\"object\":if(c(t,o,u))break;switch(!0){case n(u):{const r=u.length;t.push(e.array,r);for(let e=0;e<r;e++)f(t,o,u[e]);break}case a(u):{const{BYTES_PER_ELEMENT:s,buffer:n,byteOffset:a,length:f}=u;if(t.push(e.view,(e=>{for(;!(e.name in globalThis);)e=r(e);return e.name})(u.constructor),a,f!==(n.byteLength-a)/s?f:0),c(t,o,n))break;u=n}case u instanceof ArrayBuffer:{const r=u.byteLength,s=u.resizable?u.maxByteLength:0;if(t.push(e.buffer,r,s),r){const e=new Uint8Array(u,0,r);for(let r=0;r<e.length;r+=32767)t.push.apply(t,e.subarray(r,r+32767))}break}case u instanceof Date:t.push(e.date,+u);break;case u instanceof Map:{const r=t.push(e.map,0);let n=0;for(const[e,r]of u){const a=s(e),c=s(r);a&&c&&(f(t,o,e,a),f(t,o,r,c),n++)}t[r-1]=n;break}case u instanceof Set:{const r=t.push(e.set,0);let n=0;for(const e of u){const r=s(e);r&&(f(t,o,e,r),n++)}t[r-1]=n;break}case u instanceof RegExp:t.push(e.regexp,u.source,u.flags);break;case u instanceof Error:t.push(e.error,u.name,u.message,u.stack,u.cause);break;default:{if(\"toJSON\"in u){const r=u.toJSON();if(r===u){t.push(e.object,0);break}if(c(t,o,u=r))break}const r=t.push(e.object,0);let n=0;for(const e in u){const r=u[e],a=s(r);a&&(f(t,o,e,\"string\"),f(t,o,r,a),n++)}t[r-1]=n;break}}break;case\"boolean\":t.push(u?e.true:e.false);break;case\"string\":if(c(t,o,u))break;t.push(e.string,u);break;case\"bigint\":t.push(e.bigint,u.toString());break;case\"symbol\":{const r=(e=>{const t=String(e).slice(7,-1);return t.startsWith(\"Symbol.\")||Symbol.keyFor(e)?t:\"\"})(u);if(r){t.push(e.symbol,r);break}}case\"\":t.push(e.undefined);break;default:t.push(e[i],u)}},u=e=>{const t=[];return f(t,new Map,e),t},i=e=>o(u(e)),b=(e=>({byteOffset:t=0}={})=>(r,s)=>{const n=e(r),a=n.length,o=2*a+t;s.byteLength<o&&s.grow(o);const c=new Uint16Array(s,t,a);for(let e=0;e<a;e++)c[e]=n.charCodeAt(e);return a})(i);export{i as encode,b as encoder,u as raw};\n","export const DESTROY = 'destroy';\n","export default encode => ({ byteOffset = 0 } = {}) => (value, buffer) => {\r\n const string = encode(value);\r\n const length = string.length;\r\n const size = length * 2 + byteOffset;\r\n if (buffer.byteLength < size) buffer.grow(size);\r\n const ui16a = new Uint16Array(buffer, byteOffset, length);\r\n for (let i = 0; i < length; i++)\r\n ui16a[i] = string.charCodeAt(i);\r\n return length;\r\n};\r\n","import createEncoder from '../utils/encoder.js';\r\n\r\nconst { stringify } = JSON;\r\n\r\nexport const encode = value => stringify(value);\r\n\r\nexport const encoder = createEncoder(stringify);\r\n","export const ARRAY = 'array';\nexport const BIGINT = 'bigint';\nexport const BOOLEAN = 'boolean';\nexport const FUNCTION = 'function';\nexport const NULL = 'null';\nexport const NUMBER = 'number';\nexport const OBJECT = 'object';\nexport const STRING = 'string';\nexport const SYMBOL = 'symbol';\nexport const UNDEFINED = 'undefined';\n","const { getPrototypeOf } = Object;\r\nexport const toConstructorName = constructor => {\r\n while (!(constructor.name in globalThis))\r\n constructor = getPrototypeOf(constructor);\r\n return constructor.name;\r\n};\r\n\r\nexport const toSymbolName = value => {\r\n const name = String(value).slice(7, -1);\r\n return name.startsWith('Symbol.') || Symbol.keyFor(value) ? name : '';\r\n};\r\n\r\nexport const toSymbolValue = name => name.startsWith('Symbol.') ?\r\n Symbol[name.slice(name.indexOf('.') + 1)] :\r\n Symbol.for(name)\r\n;\r\n\r\nexport const toType = value => {\r\n const type = typeof value;\r\n switch (type) {\r\n case 'function':\r\n case 'undefined':\r\n return '';\r\n case 'object':\r\n return value === null ? 'null' : 'object';\r\n default:\r\n return type;\r\n }\r\n};\r\n","import {\n ARRAY,\n BIGINT,\n BOOLEAN,\n FUNCTION,\n NULL,\n NUMBER,\n OBJECT,\n STRING,\n SYMBOL,\n UNDEFINED,\n} from 'js-proxy/types';\n\n// this literal allows mapping right away\n// string types into numeric values so that\n// the transported and transformed arrays\n// would use less bytes to satisfy te same\n// contract while exchanging information.\n// basically this is an home-made ENUM like\n// object literal ... that's it.\n// TBD: should this be part of js-proxy? it feels\n// to me like it would rather belong in there.\nexport default {\n [ARRAY]: 0,\n [BIGINT]: 1,\n [BOOLEAN]: 2,\n [FUNCTION]: 3,\n [NULL]: 4,\n [NUMBER]: 5,\n [OBJECT]: 6,\n [STRING]: 7,\n [SYMBOL]: 8,\n [UNDEFINED]: 9,\n view: 10,\n};\n","import { BIGINT } from 'js-proxy/types';\r\n\r\nimport { toConstructorName } from '../utils/shared.js';\r\nimport createEncoder from '../utils/encoder.js';\r\nimport numeric from '../window/types.js';\r\n\r\nconst { stringify } = JSON;\r\n\r\nexport const encode = value => {\r\n switch (value[0]) {\r\n case numeric.view: {\r\n const { constructor, buffer } = value[1];\r\n value[1] = [toConstructorName(constructor), [...new Uint8Array(buffer)]];\r\n break;\r\n }\r\n case numeric[BIGINT]: {\r\n value[1] = value[1].toString();\r\n break;\r\n }\r\n }\r\n return stringify(value);\r\n};\r\n\r\nexport const encoder = createEncoder(encode);\r\n","// ⚠️ AUTOMATICALLY GENERATED - DO NOT CHANGE\nconst CHANNEL = '940beb37';\nexport const MAIN = '=' + CHANNEL;\nexport const WORKER = '-' + CHANNEL;\n","//@ts-check\r\n\r\n/** @type {ArrayBuffer[]} */\r\nconst nothing = [];\r\n\r\n/** @type {WeakSet<ArrayBuffer[]>} */\r\nconst buffers = new WeakSet;\r\n\r\n/**\r\n * @param {boolean} check\r\n * @param {any[]} args\r\n * @returns\r\n */\r\nexport const get = (check, args) => {\r\n let transfer = nothing;\r\n if (check && buffers.has(args.at(-1) || nothing)) {\r\n transfer = args.pop();\r\n buffers.delete(transfer);\r\n }\r\n return transfer;\r\n};\r\n\r\n/**\r\n * @param {...ArrayBuffer} args\r\n * @returns\r\n */\r\nexport const set = (...args) => (buffers.add(args), args);\r\n","const {\r\n assign,\r\n create,\r\n} = Object;\r\n\r\n/* c8 ignore start */\r\nlet ID = 'coincident-', native = true;\r\ntry {\r\n new SharedArrayBuffer(4, { maxByteLength: 8 });\r\n ID += crypto.randomUUID();\r\n}\r\ncatch (_) {\r\n native = false;\r\n ID += Math.random().toString(36).substring(2);\r\n}\r\n/* c8 ignore end */\r\n\r\nconst byteOffset = 2 * Int32Array.BYTES_PER_ELEMENT;\r\nconst minByteLength = 0x7FFF; // throws at 0xFFFF via .apply(...)\r\nconst maxByteLength = 0x1000000;\r\n\r\nconst defaults = {\r\n // ⚠️ mandatory: first int32 to notify, second one to store the written length\r\n byteOffset,\r\n // ⚠️ mandatory: to encode *into* a SharedArrayBuffer\r\n useUTF16: true,\r\n // ⚠️ mandatory: to satisfy circular/cyclic data\r\n circular: true,\r\n};\r\n\r\nconst result = async (data, proxied, transform) => {\r\n try {\r\n const result = await proxied[data[1]].apply(null, data[2]);\r\n data[1] = transform ? transform(result) : result;\r\n data[2] = null;\r\n }\r\n catch (error) { data[2] = error }\r\n};\r\n\r\nconst set = (proxied, name, callback) => {\r\n const ok = name !== 'then';\r\n if (ok) proxied[name] = callback;\r\n return ok;\r\n};\r\n\r\n/** @param {Event} event */\r\nconst stop = event => {\r\n event.stopImmediatePropagation();\r\n event.preventDefault();\r\n};\r\n\r\nexport {\r\n ID,\r\n assign,\r\n create,\r\n defaults,\r\n maxByteLength,\r\n minByteLength,\r\n native,\r\n result,\r\n set,\r\n stop,\r\n};\r\n","import nextResolver from 'next-resolver';\r\n\r\nimport { encoder } from './json/encoder.js';\r\n\r\nimport * as transferred from './transfer.js';\r\n\r\nimport {\r\n ID,\r\n assign,\r\n create,\r\n defaults,\r\n native,\r\n result,\r\n set,\r\n stop,\r\n} from './utils.js';\r\n\r\n// @bug https://bugzilla.mozilla.org/show_bug.cgi?id=1956778\r\n// Note: InstallTrigger is deprecated so once it's gone I do hope\r\n// this workaround would be gone too!\r\nconst UID = 'InstallTrigger' in globalThis ? ID : '';\r\n\r\nconst { notify } = Atomics;\r\n\r\nconst Number = value => value;\r\n\r\nexport default options => {\r\n const transform = options?.transform;\r\n const encode = (options?.encoder || encoder)(defaults);\r\n const checkTransferred = options?.transfer !== false;\r\n\r\n class Worker extends globalThis.Worker {\r\n constructor(url, options) {\r\n const { port1: channel, port2 } = new MessageChannel;\r\n const [ next, resolve ] = nextResolver(Number);\r\n const callbacks = new Map;\r\n const proxied = create(null);\r\n\r\n let resolving = '';\r\n\r\n const deadlock = (promise, name) => {\r\n if (resolving) {\r\n const t = setTimeout(\r\n console.warn,\r\n 3e3,\r\n `💀🔒 - is proxy.${resolving}() awaiting proxy.${name}() ?`\r\n );\r\n promise = promise.then(\r\n result => {\r\n clearTimeout(t);\r\n return result;\r\n },\r\n error => {\r\n clearTimeout(t);\r\n return Promise.reject(error);\r\n },\r\n );\r\n }\r\n return promise;\r\n };\r\n\r\n super(url, assign({ type: 'module' }, options)).proxy = new Proxy(proxied, {\r\n get: (_, name) => {\r\n // the curse of potentially awaiting proxies in the wild\r\n // requires this ugly guard around `then`\r\n if (name === 'then') return;\r\n let cb = callbacks.get(name);\r\n if (!cb) {\r\n callbacks.set(name, cb = (...args) => {\r\n const transfer = transferred.get(checkTransferred, args);\r\n const [uid, promise] = next();\r\n channel.postMessage(\r\n [uid, name, transform ? args.map(transform) : args],\r\n transfer\r\n );\r\n return deadlock(promise, name);\r\n });\r\n }\r\n return cb;\r\n },\r\n set\r\n });\r\n\r\n super.postMessage(UID, [port2]);\r\n\r\n // @bug https://bugzilla.mozilla.org/show_bug.cgi?id=1956778\r\n if (native && UID) {\r\n super.addEventListener('message', event => {\r\n const { data } = event;\r\n if (data?.ID === UID) {\r\n stop(event);\r\n channel.onmessage(data);\r\n }\r\n });\r\n }\r\n\r\n channel.onmessage = async ({ data }) => {\r\n const i32 = data[0];\r\n const type = typeof i32;\r\n if (type === 'number')\r\n resolve.apply(null, data);\r\n else {\r\n resolving = data[1];\r\n await result(data, proxied, transform);\r\n resolving = '';\r\n if (type === 'string')\r\n channel.postMessage(data);\r\n else {\r\n const result = data[2] || data[1];\r\n // at index 1 we store the written length or 0, if undefined\r\n i32[1] = result === void 0 ? 0 : encode(result, i32.buffer);\r\n // at index 0 we set the SharedArrayBuffer as ready\r\n i32[0] = 1;\r\n notify(i32, 0);\r\n }\r\n }\r\n };\r\n }\r\n }\r\n\r\n return {\r\n Worker,\r\n native,\r\n transfer: transferred.set,\r\n };\r\n};\r\n","//@ts-check\r\n\r\nimport withResolvers from '@webreflection/utils/with-resolvers';\r\n\r\n/**\r\n * @template V\r\n * @callback Resolve\r\n * @param {V?} [value]\r\n * @returns {void}\r\n */\r\n\r\n/**\r\n * @callback Reject\r\n * @param {any?} [error]\r\n * @returns {void}\r\n */\r\n\r\n/**\r\n * @template V\r\n * @typedef {object} Resolvers\r\n * @prop {Promise<V>} promise\r\n * @prop {Resolve<V>} resolve\r\n * @prop {Reject} reject\r\n */\r\n\r\n/**\r\n * @template K,V\r\n * @typedef {() => [K, Promise<V>]} Next\r\n */\r\n\r\n/**\r\n * @template K,V\r\n * @callback Resolver\r\n * @param {K} uid\r\n * @param {V?} [value]\r\n * @param {any?} [error]\r\n */\r\n\r\n/**\r\n * @template K,V\r\n * @typedef {[Next<K,V>, Resolver<K,V>]} NextResolver\r\n */\r\n\r\n/**\r\n * @template K,V\r\n * @param {(id: number) => K} [as]\r\n * @returns\r\n */\r\nexport default (as = (id => /** @type {K} */(id))) => {\r\n /** @type {Map<K,Resolvers<V>>} */\r\n const map = new Map;\r\n let id = 0;\r\n return /** @type {NextResolver<K,V>} */([\r\n /** @type {Next<K,V>} */\r\n () => {\r\n let uid;\r\n do { uid = as(id++) }\r\n while (map.has(uid));\r\n const wr = /** @type {Resolvers<V>} */(/** @type {unknown} */(withResolvers()));\r\n map.set(uid, wr);\r\n return [uid, wr.promise];\r\n },\r\n /** @type {Resolver<K,V>} */\r\n (uid, value, error) => {\r\n const wr = map.get(uid);\r\n map.delete(uid);\r\n if (error) wr?.reject(error);\r\n else wr?.resolve(value);\r\n },\r\n ]);\r\n};\r\n","export const APPLY = 'apply';\nexport const CONSTRUCT = 'construct';\nexport const DEFINE_PROPERTY = 'defineProperty';\nexport const DELETE_PROPERTY = 'deleteProperty';\nexport const GET = 'get';\nexport const GET_OWN_PROPERTY_DESCRIPTOR = 'getOwnPropertyDescriptor';\nexport const GET_PROTOTYPE_OF = 'getPrototypeOf';\nexport const HAS = 'has';\nexport const IS_EXTENSIBLE = 'isExtensible';\nexport const OWN_KEYS = 'ownKeys';\nexport const PREVENT_EXTENSION = 'preventExtensions';\nexport const SET = 'set';\nexport const SET_PROTOTYPE_OF = 'setPrototypeOf';\n","export * from 'proxy-target/traps';\nexport const DESTRUCT = 'destruct';\nexport const VALUE_OF = 'valueOf';\n","import { SYMBOL } from 'js-proxy/types';\n\nconst symbols = new Map;\n\nfor (const s of Reflect.ownKeys(Symbol)) {\n if (typeof Symbol[s] === SYMBOL) {\n symbols.set(Symbol[s], s);\n symbols.set(s, Symbol[s]);\n }\n}\n\nexport const fromSymbol = value => (\n symbols.get(value) ||\n Symbol.for(value.slice(1))\n);\n\nexport const toSymbol = value => (\n symbols.get(value) ||\n `.${Symbol.keyFor(value) || ''}`\n);\n","// (c) Andrea Giammarchi - ISC\n\nconst registry = new FinalizationRegistry(\n ([onGarbageCollected, held, debug]) => {\n // \"%cThis is a green text\", \"color:green\"\n if (debug) console.debug(`%c${String(held)}`, 'font-weight:bold', 'collected');\n onGarbageCollected(held);\n }\n);\n\nconst nullHandler = Object.create(null);\n\n/**\n * @template {unknown} H\n * @typedef {Object} GCHookOptions\n * @prop {boolean} [debug=false] if `true`, logs values once these can get collected.\n * @prop {ProxyHandler<object>} [handler] optional proxy handler to use instead of the default one.\n * @prop {H} [return=H] if specified, overrides the returned proxy with its value.\n * @prop {unknown} [token=H] it's the held value by default, but it can be any other token except the returned value itself.\n */\n\n/**\n * @template {unknown} H\n * @param {H} hold the reference to hold behind the scene and passed along the callback once it triggers.\n * @param {(held:H) => void} onGarbageCollected the callback that will receive the held value once its wrapper or indirect reference is no longer needed.\n * @param {GCHookOptions<H>} [options] an optional configuration object to change some default behavior.\n */\nexport const create = (\n hold,\n onGarbageCollected,\n { debug, handler, return: r, token = hold } = nullHandler\n) => {\n // if no reference to return is defined,\n // create a proxy for the held one and register that instead.\n /** @type {H} */\n const target = r || new Proxy(hold, handler || nullHandler);\n const args = [target, [onGarbageCollected, hold, !!debug]];\n if (token !== false) args.push(token);\n // register the target reference in a way that\n // the `onGarbageCollected(held)` callback will eventually notify.\n registry.register(...args);\n return target;\n};\n\n/**\n * If previously registered as either `token` or `hold` value, allow explicit removal of the entry in the registry.\n * @param {unknown} token the token used during registration. If no `token` was passed, this can be the same `hold` reference.\n * @returns {boolean} `true` if successfully unregistered.\n */\nexport const drop = token => registry.unregister(token);\n","const { addEventListener } = EventTarget.prototype;\nconst eventsHandler = new WeakMap;\nReflect.defineProperty(EventTarget.prototype, 'addEventListener', {\n value(type, listener, ...options) {\n const invoke = options.at(0)?.invoke;\n if (invoke) {\n let map = eventsHandler.get(this);\n if (!map) {\n map = new Map;\n eventsHandler.set(this, map);\n }\n map.set(type, [].concat(invoke));\n delete options[0].invoke;\n }\n return addEventListener.call(this, type, listener, ...options);\n },\n});\n\nexport default event => {\n const { currentTarget, target, type } = event;\n const methods = eventsHandler.get(currentTarget || target)?.get(type);\n if (methods) for (const method of methods) event[method]();\n};\n","import {\n APPLY,\n DEFINE_PROPERTY,\n GET,\n GET_OWN_PROPERTY_DESCRIPTOR,\n OWN_KEYS,\n DESTRUCT,\n} from 'js-proxy/traps';\n\nimport {\n ARRAY,\n FUNCTION,\n NULL,\n NUMBER,\n OBJECT,\n STRING,\n SYMBOL,\n UNDEFINED,\n} from 'js-proxy/types';\n\nimport DEBUG from '../debug.js';\nimport { DESTROY } from './traps.js';\n\nimport { create as heap } from 'js-proxy/heap';\n\nimport numeric from '../window/types.js';\nimport { fromSymbol, toSymbol } from '../window/symbol.js';\n\nimport { create } from 'gc-hook';\n\nimport handleEvent from '../window/events.js';\n\nconst { isArray } = Array;\nconst { isView } = ArrayBuffer;\n\nexport default (resolve, __worker__) => {\n const { clear, drop, get, hold } = heap();\n const proxies = new Map;\n\n const onGC = ref => {\n if (DEBUG) console.info('main collecting', ref);\n proxies.delete(ref);\n __worker__(DESTRUCT, ref);\n }\n\n const toEntry = value => {\n const TYPE = typeof value;\n if (DEBUG) console.log('toEntry', TYPE, TYPE === 'function' ? value.name : '');\n switch (TYPE) {\n case OBJECT: {\n if (value === null) return [numeric[NULL], value];\n if (value === globalThis) return [numeric[OBJECT], null];\n if (isArray(value)) return [numeric[ARRAY], hold(value)];\n if (isView(value)) return [numeric.view, value];\n return [numeric[OBJECT], hold(value)];\n }\n case FUNCTION: return [numeric[FUNCTION], hold(value)];\n case SYMBOL: return [numeric[SYMBOL], toSymbol(value)];\n default: return [numeric[TYPE], value];\n }\n };\n\n const fromEntry = ([numericTYPE, value]) => {\n switch (numericTYPE) {\n case numeric[OBJECT]: {\n if (value === null) return globalThis;\n if (typeof value === NUMBER) return get(value);\n for (const key in value)\n value[key] = fromEntry(value[key]);\n return value;\n };\n case numeric[ARRAY]: {\n if (typeof value === NUMBER) return get(value);\n return value.map(fromEntry);\n };\n case numeric[FUNCTION]: {\n switch (typeof value) {\n case NUMBER: return get(value);\n case STRING: {\n let fn = proxies.get(value)?.deref();\n if (!fn) {\n fn = create(value, onGC, {\n token: false,\n return: function (...args) {\n if (args.length && args[0] instanceof Event) handleEvent(args[0]);\n return __worker__(APPLY, value, toEntry(this), args.map(toEntry)).then(fromEntry);\n }\n });\n proxies.set(value, new WeakRef(fn));\n }\n return fn;\n }\n }\n };\n case numeric[SYMBOL]: return fromSymbol(value);\n default: return value;\n }\n };\n\n const asEntry = (method, target, args) => toEntry(method(target, ...args.map(fromEntry)));\n const asImport = name => import(resolve(name));\n const globals = new Set;\n\n return (TRAP, ref, ...args) => {\n if (TRAP === DESTROY) {\n if (DEBUG) console.warn('HEAP erased');\n clear();\n }\n else if (TRAP === DESTRUCT) {\n if (DEBUG) console.info(`Main ${globals.has(ref) ? 'ignoring' : 'dropping'}`, ref);\n if (!globals.has(ref)) drop(ref);\n }\n else {\n const method = Reflect[TRAP];\n const target = ref == null ? globalThis : get(ref);\n switch (TRAP) {\n case DEFINE_PROPERTY: {\n const [name, descriptor] = args.map(fromEntry);\n return toEntry(method(target, name, descriptor));\n }\n case GET_OWN_PROPERTY_DESCRIPTOR: {\n const descriptor = method(target, ...args.map(fromEntry));\n if (descriptor) {\n const { get, set, value } = descriptor;\n if (get) descriptor.get = toEntry(get);\n if (set) descriptor.set = toEntry(set);\n if (value) descriptor.value = toEntry(value);\n }\n return [numeric[descriptor ? OBJECT : UNDEFINED], descriptor];\n }\n case OWN_KEYS: return [numeric[ARRAY], method(target).map(toEntry)];\n case GET: {\n // global references should not be proxied more than once\n // and should not ever be dropped from the main cache\n // @see https://github.com/pyscript/pyscript/issues/2185\n if (ref == null) {\n const result = args[0][1] === 'import' ?\n toEntry(asImport) :\n asEntry(method, target, args)\n ;\n globals.add(result[1]);\n if (DEBUG) console.info('Global', args[0][1], result[1]);\n return result;\n }\n }\n default: return asEntry(method, target, args);\n }\n }\n return [numeric[UNDEFINED], void 0];\n };\n};\n","import { NUMBER } from 'proxy-target/types';\n\nexport const create = () => {\n const ids = new Map;\n const values = new Map;\n let uid = 0;\n return {\n /**\n * Clear all references retained in the current heap.\n */\n clear: () => {\n ids.clear();\n values.clear();\n },\n\n /**\n * Remove by id or value any previously stored reference.\n * @param {number | unknown} id the held value by id or the value itself.\n * @returns {boolean} `true` if the operation was successful, `false` otherwise.\n */\n drop: id => {\n const [a, b] = typeof id === NUMBER ? [values, ids] : [ids, values];\n const had = a.has(id);\n if (had) {\n b.delete(a.get(id));\n a.delete(id);\n }\n return had;\n },\n\n /**\n * Return the held value reference by its unique identifier.\n * @param {number} id the unique identifier for the value reference.\n * @returns {unknown} the related value / reference or undefined.\n */\n get: id => values.get(id),\n\n /**\n * Create once a unique number id for a generic value reference.\n * @param {unknown} value a reference used to create a unique identifier.\n * @returns {number} a unique identifier for that reference.\n */\n hold: value => {\n if (!ids.has(value)) {\n let id;\n // a bit apocalyptic scenario but if this thread runs forever\n // and the id does a whole int32 roundtrip we might have still\n // some reference dangling around\n while (/* c8 ignore next */ values.has(id = uid++));\n ids.set(value, id);\n values.set(id, value);\n }\n return ids.get(value);\n },\n };\n};\n\n// globally shared heap\nconst { clear, drop, get, hold } = create();\nexport { clear, drop, get, hold };\n","/* c8 ignore start */\nconst {url} = import.meta;\nconst re = /import\\((['\"])([^)]+?\\.js)\\1\\)/g;\nconst place = (_,q,f) => `import(${q}${new URL(f,url).href}${q})`;\nimport { encoder } from 'coincident/flatted/encoder';\nimport coincident from 'coincident/window/main';\nconst { Worker } = coincident({ encoder, transfer: false });\nexport 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(jn){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 3:return e[y++];case 5:return!0;case 6:return!1;case 7:return null;case 13:return;case 12:return BigInt(e[y++]);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 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}case 10:return(t=e[y++]).startsWith(\\\"Symbol.\\\")?Symbol[t.slice(t.indexOf(\\\".\\\")+1)]:Symbol.for(t);case 0:return e[e[y++]];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=\\\"940beb37\\\",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 j=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:B}=JSON,P=j(B),$=\\\"array\\\",T=\\\"bigint\\\",O=\\\"boolean\\\",R=\\\"function\\\",F=\\\"null\\\",D=\\\"number\\\",M=\\\"object\\\",L=\\\"string\\\",C=\\\"symbol\\\",I=\\\"undefined\\\";var N={[$]:0,[T]:1,[O]:2,[R]:3,[F]:4,[D]:5,[M]:6,[L]:7,[C]:8,[I]:9,view:10};const{parse:U}=JSON,H=j(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===R?e():t===M?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 M:case I:r||(r=!1);case R: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===M?t?e.get(t)?.[0]??(e=>we(e)?$:M)(t):F:n},xe=e=>t=>{let n=typeof t;switch(n){case M:if(!t){n=F;break}case R:const r=e.get(t);r&&([n,t]=r)}return[n,t]},je=e=>((e=>{pe.unregister(e)})(e),e);var Be=e=>{const t=new WeakMap,n=Symbol(),r={},s=(e,n,r)=>(t.set(e,[n,r]),e),o={proxy:r,release:je,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 R:{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),R,t);var r};break}case M:{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),M,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===D?[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)}}})(),Oe=new Map;for(const e of Reflect.ownKeys(Symbol))typeof Symbol[e]===C&&(Oe.set(Symbol[e],e),Oe.set(e,Symbol[e]));const Re=e=>Oe.get(e)||`.${Symbol.keyFor(e)||\\\"\\\"}`,{isArray:Fe}=Array,{isView:De}=ArrayBuffer,{[Y]:Me}=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[M]:return null==t?globalThis:typeof t===D?r(t,l.object):t;case N[$]:return typeof t===D?r(t,l.array):t;case N[R]:return typeof t===D?r(t,l.function):$e(parseInt(t));case N[C]:return(e=>Oe.get(e)||Symbol.for(e.slice(1)))(t);default:return t}},o=e=>{let[n,r]=p(e);switch(n){case M:if(r==globalThis||null==r)r=null;else if(typeof r===M){if(r=t(r),Fe(r))return[N[$],r.map(o)];if(De(r))return[N.view,r];{const e={};for(const t in r)e[t]=o(r[t]);r=e}}return[N[M],r];case $:return[N[$],typeof r===D?r:t(r).map(o)];case R:return[N[R],typeof r===R?String(Te(t(r))):r];case C:return[N[C],Re(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={[M]:i,[$]:i,[R]:{...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}=Be(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 Me($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(),jt=(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)))),Bt=(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=Bt(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)},Ot=e=>t=>{dispatchEvent(new CustomEvent(`${e}:progress`,{detail:t}))},{getPrototypeOf:Rt}=Object,Ft=e=>{const t=typeof e;switch(t){case\\\"function\\\":case\\\"undefined\\\":return\\\"\\\";case\\\"object\\\":return null===e?\\\"null\\\":\\\"object\\\";default:return t}};let Dt=\\\"coincident-\\\";try{new SharedArrayBuffer(4,{maxByteLength:8}),Dt+=crypto.randomUUID()}catch(Rt){Dt+=Math.random().toString(36).substring(2)}var Mt={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 Mt.array:{const t=e[Nt++],n=[];e[Nt-2]=n;for(let r=0;r<t;r++)n[r]=Ct(e);return n}case Mt.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 Mt.string:{const t=e[Nt++];return e[Nt-2]=t,t}case Mt.number:return e[Nt++];case Mt.true:return!0;case Mt.false:return!1;case Mt.null:return null;case Mt.undefined:return;case Mt.bigint:return BigInt(e[Nt++]);case Mt.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 Mt.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 Mt.date:{const t=new Date(e[Nt++]);return e[Nt-2]=t,t}case Mt.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 Mt.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 Mt.regexp:{const t=e[Nt++],n=e[Nt++],r=new RegExp(t,n);return e[Nt-3]=r,r}case Mt.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}case Mt.symbol:return(t=e[Nt++]).startsWith(\\\"Symbol.\\\")?Symbol[t.slice(t.indexOf(\\\".\\\")+1)]:Symbol.for(t);case Mt.ref:return e[e[Nt++]];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(Mt.ref,r),!0):(t.set(n,e.length),!1)},qt=(e,t,n,r=Ft(n))=>{switch(r){case\\\"null\\\":e.push(Mt.null);break;case\\\"object\\\":if(Jt(e,t,n))break;switch(!0){case Ut(n):{const r=n.length;e.push(Mt.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(Mt.view,(e=>{for(;!(e.name in globalThis);)e=Rt(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(Mt.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(Mt.date,+n);break;case n instanceof Map:{const r=e.push(Mt.map,0);let s=0;for(const[r,o]of n){const n=Ft(r),a=Ft(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(Mt.set,0);let s=0;for(const r of n){const n=Ft(r);n&&(qt(e,t,r,n),s++)}e[r-1]=s;break}case n instanceof RegExp:e.push(Mt.regexp,n.source,n.flags);break;case n instanceof Error:e.push(Mt.error,n.name,n.message,n.stack,n.cause);break;default:{if(\\\"toJSON\\\"in n){const r=n.toJSON();if(r===n){e.push(Mt.object,0);break}if(Jt(e,t,n=r))break}const r=e.push(Mt.object,0);let s=0;for(const r in n){const o=n[r],a=Ft(o);a&&(qt(e,t,r,\\\"string\\\"),qt(e,t,o,a),s++)}e[r-1]=s;break}}break;case\\\"boolean\\\":e.push(n?Mt.true:Mt.false);break;case\\\"string\\\":if(Jt(e,t,n))break;e.push(Mt.string,n);break;case\\\"bigint\\\":e.push(Mt.bigint,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(Mt.symbol,t);break}}case\\\"\\\":e.push(Mt.undefined);break;default:e.push(Mt[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 jt(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-BK2RWy-G.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=Ot(\\\"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-BKVoQflw.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,{apply:dn}=Reflect,fn=Function.prototype,yn=e=>function(...t){return dn(e,this,t)};let hn,mn;const wn=e=>{const t=new WeakMap,n=n=>{for(let r,s=0;s<n.length;s++)switch(typeof(r=n[s])){case\\\"object\\\":if(null===r)break;case\\\"function\\\":if(hn in r&&!r[hn].shared?.gcRegistered){e=!1;let o=t.get(r)?.deref();if(!o){o=mn(r);const e=new WeakRef(o);t.set(r,e),t.set(o,e)}n[s]=o,e=!0}}};Object.defineProperties(fn,{apply:{value(t,r){return e&&n(r),dn(this,t,r)}},call:{value(t,...r){return e&&n(r),dn(this,t,r)}}})},gn=Ot(\\\"py\\\"),bn=new WeakMap;var _n={type:\\\"pyodide\\\",module:(e=\\\"0.27.7\\\")=>`https://cdn.jsdelivr.net/pyodide/v${e}/full/pyodide.mjs`,async engine({loadPyodide:e,version:t},n,r,s){gn(\\\"Loading Pyodide\\\");let{packages:o,index_urls:a}=n;o&&(o=o.map(Ze,s)),gn(\\\"Loading Storage\\\");const c=r.slice(0,r.lastIndexOf(\\\"/\\\")),l=new i(`${c}@${t}`),u={indexURL:c},p=\\\"never\\\"!==n.packages_cache;if(await l.sync(),p){if(o)if(\\\"passthrough\\\"===n.packages_cache)u.packages=o,o=null,l.clear();else{o=o.sort();const e=pn(o);if(l.has(e)){const t=new Blob([l.get(e)],{type:\\\"application/json\\\"});u.lockFileURL=URL.createObjectURL(t),u.packages=o.map(e=>e.split(/[>=<]=/)[0]),o=null}}}else l.clear();gn(\\\"Loaded Storage\\\");const{stderr:d,stdout:f,get:y}=Ne(),h=await y(e({stderr:d,stdout:f,...u}));n.debug&&h.setDebug(!0);const m=En.bind(h);return a&&bn.set(h,a),Kt.set(h,m),await Gt(this,gn,h,n,s),o&&await m(o,l,p),await l.close(),u.lockFileURL&&URL.revokeObjectURL(u.lockFileURL),gn(\\\"Loaded Pyodide\\\"),\\\"auto\\\"===n.experimental_create_proxy&&(h.runPython([\\\"import js\\\",\\\"from pyodide.ffi import to_js\\\",\\\"o=js.Object.fromEntries\\\",\\\"js.experimental_create_proxy=lambda r:to_js(r,dict_converter=o)\\\"].join(\\\";\\\"),{globals:h.toPy({})}),mn=globalThis.experimental_create_proxy,delete globalThis.experimental_create_proxy,[hn]=Reflect.ownKeys(mn).filter(e=>\\\"symbol\\\"==typeof e&&\\\"Symbol(pyproxy.attrs)\\\"===String(e)),wn(!0)),h},registerJSModule:Yt,run:yn(Xt),runAsync:yn(Zt),runEvent:yn(Qt),transform:(e,t)=>dn(An,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 An(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(An,this)}return e}async function En(e,t,n=!1){const{log:r}=console,s=(e,...t)=>{r(e,...t),console.log=r,gn(e),console.log=s};console.log=s,await this.loadPackage(\\\"micropip\\\");const o=this.pyimport(\\\"micropip\\\");if(bn.has(this)&&o.set_index_urls(bn.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 vn=\\\"ruby-wasm-wasi\\\",Sn=vn.replace(/\\\\W+/g,\\\"_\\\");var kn={type:vn,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 jt(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_${Sn}_${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_${Sn}_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 ${vn}`)}};var xn={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 jt(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 jn=new WeakMap,Bn=async(e,t)=>{const{shelter:n,destroy:r,io:s}=jn.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 Pn={type:\\\"webr\\\",experimental:!0,module:(e=\\\"0.4.4\\\")=>`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 jn.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 jt(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:Bn,runAsync:Bn,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 $n=new Map,Tn=new Map,On=new Proxy(new Map,{get(e,t){if(!e.has(t)){const[n,...r]=t.split(\\\"@\\\"),s=$n.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=>(Tn.set(t,e),s(r,e,n,o)))}}),Rn=e=>{for(const t of[].concat(e.type))$n.set(t,e)};for(const e of[ht,cn,_n,kn,xn,Pn])Rn(e);const{parse:Fn}=JSON,Dn=(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=Mn(e):\\\"object\\\"===s&&e?n=e:\\\"txt\\\"===s&&\\\"string\\\"==typeof n&&(n=Mn(n)),[n,e=r]},Mn=e=>{try{return Fn(e)}catch(t){return tn(e)}},Ln=\\\"BeforeRun\\\",Cn=\\\"AfterRun\\\",In=[`code${Ln}`,`code${Ln}Async`,`code${Cn}`,`code${Cn}Async`],Nn=[\\\"onWorker\\\",\\\"onReady\\\",`on${Ln}`,`on${Ln}Async`,`on${Cn}`,`on${Cn}Async`];function Un(e,t){const{run:n,runAsync:r}=$n.get(this.type);return{...e,run:n.bind(this,t),runAsync:r.bind(this,t)}}const Hn=(e,t,n,r,s,o)=>{if(s||o){const a=Un.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 Wn,Jn,qn;const zn=(e,t)=>{addEventListener(e,t||(async t=>{try{await Wn,Jn(`xworker.on${e}`,t)}catch(e){postMessage(e)}}),!!t&&{once:!0})},{proxy:Kn,native:Gn,window:Yn,isWindowProxy:Vn}=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=>qn?qn(e):e}),Xn={polyfill:!Gn,sync:Kn,window:Gn?Yn:null,isWindowProxy:Vn,onmessage:console.info,onerror:console.error,onmessageerror:console.warn,postMessage:postMessage.bind(self)};zn(\\\"message\\\",({data:{options:e,config:t,configURL:n,code:r,hooks:s}})=>{Wn=(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]=Dn(t,n,r)),Ve(r).then(n=>On[e](n,t))))(y,t,n,d),{js_modules:m}=Tn.get(y),w=m?.main,g=ze($n.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 In){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 Nn.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}}}Hn(g,b,Xn,f,e,t)}let A,E,v,S=null,k=\\\"\\\";Gn&&(({CustomEvent:A,document:E}=Yn),S=o&&E.getElementById(o)||null,v=e=>Qe(S,u||l,e,!0,A));const x=pt(Yn,Kn,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:Xn,currentScript:S,config:b.config,js_modules:x,get target(){return!k&&S&&(\\\"SCRIPT\\\"===c?S.after(qe(Yn.document.createElement(`script-${u||l}`),{id:k=`${o}-target`})):(k=o,S.replaceChildren(),S.style.display=\\\"block\\\")),k}}),Jn=g.runEvent.bind(g,h),qn=g.transform.bind(g,h),S&&v(\\\"ready\\\"),s?.onReady&&et(s?.onReady).call(g,Un.call(g,b,h),Xn),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)}})(),zn(\\\"error\\\"),zn(\\\"message\\\"),zn(\\\"messageerror\\\"),Gn&&addEventListener(\\\"py:progress\\\",({type:e,detail:t})=>{Yn.dispatchEvent(new Yn.CustomEvent(e,{detail:t}))})});\\n\".replace(re,place)],{type:'text/javascript'})), ...args)\n/* c8 ignore stop */\n","import { DESTROY } from '../proxy/traps.js';\n\nimport { encoder as jsonEncoder } from '../json/encoder.js';\nimport { encoder as minimalEncoder } from '../proxy/encoder.js';\n\nimport { MAIN, WORKER } from './constants.js';\n\nimport coincident from '../main.js';\nimport callback from '../proxy/main.js';\n\nexport default options => {\n let tracking = false;\n const esm = options?.import;\n const defaultEncoder = options?.encoder || jsonEncoder;\n const exports = coincident({\n ...options,\n encoder(options) {\n const original = defaultEncoder(options);\n const minimal = minimalEncoder(options);\n return (value, buffer) => {\n if (tracking) {\n tracking = false;\n return minimal(value, buffer);\n }\n return original(value, buffer);\n };\n }\n });\n\n class Worker extends exports.Worker {\n constructor(url, options) {\n const { proxy } = super(url, options);\n\n const main = callback(\n options?.import || esm || (name => new URL(name, location.href)),\n proxy[WORKER]\n );\n\n proxy[MAIN] = function (...args) {\n tracking = true;\n return main.apply(this, args);\n };\n }\n terminate() {\n this.proxy[MAIN](DESTROY);\n super.terminate();\n }\n }\n\n return { ...exports, Worker };\n};\n","// REQUIRES INTEGRATION TEST\n/* c8 ignore start */\nexport const io = new WeakMap();\nexport const stdio = (init) => {\n const context = init || console;\n const localIO = {\n // allow plugins or other io manipulating logic to reuse\n // the buffered utility exposed in here (see py-editor)\n buffered,\n stderr: (context.stderr || console.error).bind(context),\n stdout: (context.stdout || console.log).bind(context),\n };\n return {\n stderr: (...args) => localIO.stderr(...args),\n stdout: (...args) => localIO.stdout(...args),\n async get(engine) {\n const interpreter = await engine;\n io.set(interpreter, localIO);\n return interpreter;\n },\n };\n};\n\nconst decoder = new TextDecoder();\nexport const buffered = (callback, EOL = 10) => {\n const buffer = [];\n return (maybeUI8) => {\n if (maybeUI8 instanceof Uint8Array) {\n for (const c of maybeUI8) {\n if (c === EOL)\n callback(decoder.decode(new Uint8Array(buffer.splice(0))));\n else\n buffer.push(c);\n }\n }\n // if io.stderr(error) is passed instead\n // or any io.stdout(\"thing\") this should\n // still work as expected\n else {\n callback(maybeUI8);\n }\n };\n};\n/* c8 ignore stop */\n","import { io, stdio } from './_io.js';\n\nconst registry = new Map;\n\nconst type = 'dummy';\n\n// REQUIRES INTEGRATION TEST\n/* c8 ignore start */\nconst require = name => registry.get(name);\n\nconst run = (interpreter, code) => {\n try {\n return Function('require', code)(require);\n }\n catch (error) {\n io.get(interpreter).stderr(error);\n }\n};\n\nexport default {\n type,\n module: () => 'data:text/javascript,',\n engine: module => stdio().get(module),\n registerJSModule(_, name, value) {\n registry.set(name, value);\n },\n run,\n runAsync: run,\n runEvent: async (interpreter, code, event) => {\n try {\n await Function('require', 'e', `return ${code}(e)`)(require, event);\n }\n catch (error) {\n io.get(interpreter).stderr(error);\n }\n },\n transform: (_, value) => value,\n writeFile() {},\n};\n","import content from 'plain-tag';\n\nconst dedent = {\n object(...args) {\n return this.string(content(...args));\n },\n string(content) {\n for (const line of content.split(/[\\r\\n]+/)) {\n // skip initial empty lines\n if (line.trim().length) {\n // trap indentation at the very first line of code\n if (/^(\\s+)/.test(line))\n content = content.replace(new RegExp('^' + RegExp.$1, 'gm'), '');\n // no indentation? all good: get out of here!\n break;\n }\n }\n return content;\n }\n};\n\n/**\n * Usable both as template literal tag or just as callback for strings, removes all spaces found\n * at the very first line of code encountered while sanitizing, keeping everything else around.\n * @param {string | TemplateStringsArray} tpl either code as string or as template, when used as tag\n * @param {...any} values the template interpolations, when used as tag\n * @returns {string} code without undesired indentation\n */\nconst codedent = (tpl, ...values) => dedent[typeof tpl](tpl, ...values);\n\nexport default codedent;\n","export default function (t) {\n for (var s = t[0], i = 1, l = arguments.length; i < l; i++)\n s += arguments[i] + t[i];\n return s;\n};\n","/**\n * Copyright (C) 2017-present by Andrea Giammarchi - @WebReflection\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst {replace} = '';\n\n// escape\nconst es = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34);/g;\nconst ca = /[&<>'\"]/g;\n\nconst esca = {\n '&': '&',\n '<': '<',\n '>': '>',\n \"'\": ''',\n '\"': '"'\n};\nconst pe = m => esca[m];\n\n/**\n * Safely escape HTML entities such as `&`, `<`, `>`, `\"`, and `'`.\n * @param {string} es the input to safely escape\n * @returns {string} the escaped input, and it **throws** an error if\n * the input type is unexpected, except for boolean and numbers,\n * converted as string.\n */\nexport const escape = es => replace.call(es, ca, pe);\n\n\n// unescape\nconst unes = {\n '&': '&',\n '&': '&',\n '<': '<',\n '<': '<',\n '>': '>',\n '>': '>',\n ''': \"'\",\n ''': \"'\",\n '"': '\"',\n '"': '\"'\n};\nconst cape = m => unes[m];\n\n/**\n * Safely unescape previously escaped entities such as `&`, `<`, `>`, `\"`,\n * and `'`.\n * @param {string} un a previously escaped string\n * @returns {string} the unescaped input, and it **throws** an error if\n * the input type is unexpected, except for boolean and numbers,\n * converted as string.\n */\nexport const unescape = un => replace.call(un, es, cape);\n","import IDBMapSync from '@webreflection/idb-map/sync';\nimport $dedent from 'codedent';\nimport { unescape as $unescape } from 'html-escaper';\nimport { io } from './interpreter/_io.js';\n\n/** @type {(tpl: string | TemplateStringsArray, ...values:any[]) => string} */\nconst dedent = $dedent;\n\n/** @type {(value:string) => string} */\nconst unescape = $unescape;\n\nconst { isArray } = Array;\n\nconst { assign, create, defineProperties, defineProperty, entries } = Object;\n\nconst { all, resolve } = new Proxy(Promise, {\n get: ($, name) => $[name].bind($),\n});\n\nconst absoluteURL = (path, base = location.href) =>\n new URL(path, base.replace(/^blob:/, '')).href;\n\nfunction fixedRelative(path) {\n 'use strict';\n return path.startsWith('.') ? absoluteURL(path, this) : path;\n}\n\n/* c8 ignore start */\nlet id = 0;\nconst nodeInfo = (node, type) => ({\n id: node.id || (node.id = `${type}-w${id++}`),\n tag: node.tagName\n});\n\n/**\n * Notify the main thread about element \"readiness\".\n * @param {HTMLScriptElement | HTMLElement} target the script or custom-type element\n * @param {string} type the custom/type as event prefix\n * @param {string} what the kind of event to dispatch, i.e. `ready` or `done`\n * @param {boolean} [worker = false] `true` if dispatched form a worker, `false` by default if in main\n * @param {globalThis.CustomEvent} [CustomEvent = globalThis.CustomEvent] the `CustomEvent` to use\n */\nconst dispatch = (target, type, what, worker = false, CE = CustomEvent) => {\n target.dispatchEvent(\n new CE(`${type}:${what}`, {\n bubbles: true,\n detail: { worker },\n })\n );\n};\n\nexport const createFunction = value => Function(`'use strict';return (${value})`)();\n\nexport const createResolved = (module, type, config, interpreter) => ({\n type,\n config,\n interpreter,\n io: io.get(interpreter),\n run: (code, ...args) => module.run(interpreter, code, ...args),\n runAsync: (code, ...args) => module.runAsync(interpreter, code, ...args),\n runEvent: (...args) => module.runEvent(interpreter, ...args),\n});\n\nconst dropLine0 = code => code.replace(/^(?:\\n|\\r\\n)/, '');\n\nexport const createOverload = (module, name, before, after) => {\n const method = module[name].bind(module);\n module[name] = name === 'run' ?\n // patch the sync method\n (interpreter, code, ...args) => {\n if (before) method(interpreter, before, ...args);\n const result = method(interpreter, dropLine0(code), ...args);\n if (after) method(interpreter, after, ...args);\n return result;\n } :\n // patch the async one\n async (interpreter, code, ...args) => {\n if (before) await method(interpreter, before, ...args);\n const result = await method(interpreter, dropLine0(code), ...args);\n if (after) await method(interpreter, after, ...args);\n return result;\n };\n};\n\nexport const js_modules = Symbol.for('polyscript.js_modules');\n\nconst jsModules = new Map;\ndefineProperty(globalThis, js_modules, { value: jsModules });\n\nexport const JSModules = new Proxy(jsModules, {\n get: (map, name) => map.get(name),\n has: (map, name) => map.has(name),\n ownKeys: map => [...map.keys()],\n});\n\nconst has = (_, field) => !field.startsWith('_');\n\nconst proxy = (modules, name) => new Proxy(\n modules,\n { has, get: (modules, field) => modules[name][field] }\n);\n\nexport const registerJSModules = (type, module, interpreter, modules) => {\n // Pyodide resolves JS modules magically\n if (type === 'pyodide') return;\n\n // other runtimes need this pretty ugly dance (it works though)\n const jsModules = 'polyscript.js_modules';\n for (const name of Reflect.ownKeys(modules))\n module.registerJSModule(interpreter, `${jsModules}.${name}`, proxy(modules, name));\n module.registerJSModule(interpreter, jsModules, modules);\n};\n\nexport const importJS = (source, name) => import(source).then(esm => {\n jsModules.set(name, { ...esm });\n});\n\nexport const importCSS = href => new Promise((onload, onerror) => {\n if (document.querySelector(`link[rel=\"stylesheet\"][href=\"${href}\"]`)) {\n onload();\n }\n else {\n document.head.append(\n assign(\n document.createElement('link'),\n { rel: 'stylesheet', href, onload, onerror },\n )\n );\n }\n});\n\nexport const isCSS = source => /\\.css$/i.test(new URL(source).pathname);\n\nexport const isSync = element =>\n /^(?:false|0|no)$/i.test(element.getAttribute('async'));\n\n/* c8 ignore stop */\n\nexport {\n IDBMapSync,\n dedent, unescape,\n dispatch,\n isArray,\n assign,\n create,\n defineProperties,\n defineProperty,\n entries,\n all,\n resolve,\n absoluteURL,\n fixedRelative,\n nodeInfo,\n};\n","import fetch from '@webreflection/fetch';\n\nimport { absoluteURL, all, entries, importCSS, importJS, isArray, isCSS } from '../utils.js';\n\nexport const RUNNING_IN_WORKER = !globalThis.window;\n\n// REQUIRES INTEGRATION TEST\n/* c8 ignore start */\n\n// This should be the only helper needed for all Emscripten based FS exports\nexport const writeFile = ({ FS, PATH, PATH_FS }, path, buffer) => {\n const absPath = PATH_FS.resolve(path);\n const dirPath = PATH.dirname(absPath);\n if (FS.mkdirTree) FS.mkdirTree(dirPath);\n else mkdirTree(FS, dirPath);\n return FS.writeFile(absPath, new Uint8Array(buffer), {\n canOwn: true,\n });\n};\n\n// This is instead a fallback for Lua or others\nexport const writeFileShim = (FS, path, buffer) => {\n mkdirTree(FS, dirname(path));\n path = resolve(FS, path);\n return FS.writeFile(path, new Uint8Array(buffer), { canOwn: true });\n};\n\nconst dirname = (path) => {\n const tree = path.split('/');\n tree.pop();\n return tree.join('/');\n};\n\nexport const mkdirTree = (FS, path) => {\n const current = [];\n for (const branch of path.split('/')) {\n if (branch === '.' || branch === '..') continue;\n current.push(branch);\n if (branch) FS.mkdir(current.join('/'));\n }\n};\n\nconst resolve = (FS, path) => {\n const tree = [];\n for (const branch of path.split('/')) {\n switch (branch) {\n case '':\n break;\n case '.':\n break;\n case '..':\n tree.pop();\n break;\n default:\n tree.push(branch);\n }\n }\n return [FS.cwd()].concat(tree).join('/').replace(/^\\/+/, '/');\n};\n\nconst calculateFetchPaths = (config_fetch) => {\n for (const { files, to_file, from = '' } of config_fetch) {\n if (files !== undefined && to_file !== undefined)\n throw new Error(\n 'Cannot use \\'to_file\\' and \\'files\\' parameters together!',\n );\n if (files === undefined && to_file === undefined && from.endsWith('/'))\n throw new Error(\n `Couldn't determine the filename from the path ${from}, please supply 'to_file' parameter.`,\n );\n }\n return config_fetch.flatMap(\n ({ from = '', to_folder = '.', to_file, files }) => {\n if (isArray(files))\n return files.map((file) => ({\n url: joinPaths([from, file]),\n path: joinPaths([to_folder, file]),\n }));\n const filename = to_file || from.slice(1 + from.lastIndexOf('/'));\n return [{ url: from, path: joinPaths([to_folder, filename]) }];\n },\n );\n};\n\nconst joinPaths = (parts) => {\n const res = parts\n .map((part) => part.trim().replace(/(^[/]*|[/]*$)/g, ''))\n .filter((p) => p !== '' && p !== '.')\n .join('/');\n\n return parts[0].startsWith('/') ? `/${res}` : res;\n};\n\nconst fetchBuffer = (url, baseURL) =>\n fetch(absoluteURL(url, baseURL)).arrayBuffer();\n\nexport const fetchPaths = (module, interpreter, config_fetch, baseURL) =>\n all(\n calculateFetchPaths(config_fetch).map(({ url, path }) =>\n fetchBuffer(url, baseURL)\n .then((buffer) => module.writeFile(interpreter, path, buffer)),\n ),\n );\n\n const fillName = (source, dest) => dest.endsWith('/') ?\n `${dest}${source.split('/').pop()}` : dest;\n\nconst parseTemplate = (src, map) => src.replace(\n /\\{.+?\\}/g,\n k => {\n if (!map.has(k))\n throw new SyntaxError(`Invalid template: ${k}`);\n return map.get(k);\n }\n);\n\nconst calculateFilesPaths = files => {\n const map = new Map;\n const targets = new Set;\n const sourceDest = [];\n for (const [source, dest] of entries(files)) {\n if (/^\\{.+\\}$/.test(source)) {\n if (map.has(source))\n throw new SyntaxError(`Duplicated template: ${source}`);\n map.set(source, parseTemplate(dest, map));\n }\n else {\n const url = parseTemplate(source, map);\n const path = fillName(url, parseTemplate(dest || './', map));\n if (targets.has(path) && !path.endsWith('/*'))\n throw new SyntaxError(`Duplicated destination: ${path}`);\n targets.add(path);\n sourceDest.push({ url, path });\n }\n }\n return sourceDest;\n};\n\nexport const fetchFiles = (module, interpreter, config_files, baseURL) =>\n all(\n calculateFilesPaths(config_files).map(({ url, path }) =>\n fetchBuffer(url, baseURL)\n .then((buffer) => module.writeFile(\n interpreter,\n path,\n buffer,\n url,\n )),\n ),\n );\n\nexport const fetchJSModules = ({ main, worker }, baseURL) => {\n const promises = [];\n if (worker && RUNNING_IN_WORKER) {\n for (let [source, name] of entries(worker)) {\n source = absoluteURL(source, baseURL);\n promises.push(importJS(source, name));\n }\n }\n if (main && !RUNNING_IN_WORKER) {\n for (let [source, name] of entries(main)) {\n source = absoluteURL(source, baseURL);\n if (isCSS(source)) importCSS(source);\n else promises.push(importJS(source, name));\n }\n }\n return all(promises);\n};\n\nexport const createProgress = prefix => detail => {\n dispatchEvent(new CustomEvent(`${prefix}:progress`, { detail }));\n};\n/* c8 ignore stop */\n","const{getPrototypeOf:e}=Object,r=e=>{const r=typeof e;switch(r){case\"function\":case\"undefined\":return\"\";case\"object\":return null===e?\"null\":\"object\";default:return r}};let t=\"coincident-\";try{new SharedArrayBuffer(4,{maxByteLength:8}),t+=crypto.randomUUID()}catch(e){t+=Math.random().toString(36).substring(2)}var n={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:s}=Object,a=e=>{switch(e[c++]){case n.array:{const r=e[c++],t=[];e[c-2]=t;for(let n=0;n<r;n++)t[n]=a(e);return t}case n.object:{const r=e[c++],t={};e[c-2]=t;for(let n=0;n<r;n++)t[a(e)]=a(e);return t}case n.string:{const r=e[c++];return e[c-2]=r,r}case n.number:return e[c++];case n.true:return!0;case n.false:return!1;case n.null:return null;case n.undefined:return;case n.bigint:return BigInt(e[c++]);case n.buffer:{const r=e[c++],t=e[c++],n=[r];t&&n.push({maxByteLength:t});const s=new ArrayBuffer(...n);e[c-3]=s;const a=new Uint8Array(s,0,r);for(let t=0;t<r;t++)a[t]=e[c++];return s}case n.view:{const r=e[c++],t=e[c++],n=e[c++],s=c-4,o=[a(e),t];n&&o.push(n);const u=new globalThis[r](...o);return e[s]=u,u}case n.date:{const r=new Date(e[c++]);return e[c-2]=r,r}case n.map:{const r=e[c++],t=new Map;e[c-2]=t;for(let n=0;n<r;n++){const r=a(e),n=a(e);void 0!==r&&t.set(r,n)}return t}case n.set:{const r=e[c++],t=new Set;e[c-2]=t;for(let n=0;n<r;n++){const r=a(e);void 0!==r&&t.add(r)}return t}case n.regexp:{const r=e[c++],t=e[c++],n=new RegExp(r,t);return e[c-3]=n,n}case n.error:{const r=globalThis[e[c++]]||Error,t=e[c++],n=e[c++],a=new r(t,{cause:e[c++]});return e[c-5]=s(a,\"stack\",{value:n}),a}case n.symbol:return(r=e[c++]).startsWith(\"Symbol.\")?Symbol[r.slice(r.indexOf(\".\")+1)]:Symbol.for(r);case n.ref:return e[e[c++]];default:throw new TypeError(`Unknown type: ${e[c-1]}`)}var r},{parse:o}=JSON;let c=0;const u=e=>{return r=o(e),c=0,r.length?a(r):void 0;var r},{isArray:i}=Array,{isView:f}=ArrayBuffer,{stringify:l}=JSON,b=(e,r,t)=>{const s=r.get(t);return\"number\"==typeof s?(e.push(n.ref,s),!0):(r.set(t,e.length),!1)},h=(t,s,a,o=r(a))=>{switch(o){case\"null\":t.push(n.null);break;case\"object\":if(b(t,s,a))break;switch(!0){case i(a):{const e=a.length;t.push(n.array,e);for(let r=0;r<e;r++)h(t,s,a[r]);break}case f(a):{const{BYTES_PER_ELEMENT:r,buffer:o,byteOffset:c,length:u}=a;if(t.push(n.view,(r=>{for(;!(r.name in globalThis);)r=e(r);return r.name})(a.constructor),c,u!==(o.byteLength-c)/r?u:0),b(t,s,o))break;a=o}case a instanceof ArrayBuffer:{const e=a.byteLength,r=a.resizable?a.maxByteLength:0;if(t.push(n.buffer,e,r),e){const r=new Uint8Array(a,0,e);for(let e=0;e<r.length;e+=32767)t.push.apply(t,r.subarray(e,e+32767))}break}case a instanceof Date:t.push(n.date,+a);break;case a instanceof Map:{const e=t.push(n.map,0);let o=0;for(const[e,n]of a){const a=r(e),c=r(n);a&&c&&(h(t,s,e,a),h(t,s,n,c),o++)}t[e-1]=o;break}case a instanceof Set:{const e=t.push(n.set,0);let o=0;for(const e of a){const n=r(e);n&&(h(t,s,e,n),o++)}t[e-1]=o;break}case a instanceof RegExp:t.push(n.regexp,a.source,a.flags);break;case a instanceof Error:t.push(n.error,a.name,a.message,a.stack,a.cause);break;default:{if(\"toJSON\"in a){const e=a.toJSON();if(e===a){t.push(n.object,0);break}if(b(t,s,a=e))break}const e=t.push(n.object,0);let o=0;for(const e in a){const n=a[e],c=r(n);c&&(h(t,s,e,\"string\"),h(t,s,n,c),o++)}t[e-1]=o;break}}break;case\"boolean\":t.push(a?n.true:n.false);break;case\"string\":if(b(t,s,a))break;t.push(n.string,a);break;case\"bigint\":t.push(n.bigint,a.toString());break;case\"symbol\":{const e=(e=>{const r=String(e).slice(7,-1);return r.startsWith(\"Symbol.\")||Symbol.keyFor(e)?r:\"\"})(a);if(e){t.push(n.symbol,e);break}}case\"\":t.push(n.undefined);break;default:t.push(n[o],a)}},p=e=>l((e=>{const r=[];return h(r,new Map,e),r})(e));export{u as decode,p as encode};\n","import * as FLATTED from 'coincident/flatted';\nconst JSON = { parse: FLATTED.decode, stringify: FLATTED.encode };\n\nimport { fetchFiles, fetchJSModules, fetchPaths } from './_utils.js';\nimport { IDBMapSync, dedent } from '../utils.js';\nimport { io } from './_io.js';\n\nexport const loader = new WeakMap();\n\n// REQUIRES INTEGRATION TEST\n/* c8 ignore start */\nexport const loadProgress = async (self, progress, interpreter, config, baseURL) => {\n if (config.files) {\n progress('Loading files');\n await fetchFiles(self, interpreter, config.files, baseURL);\n progress('Loaded files');\n }\n if (config.fetch) {\n progress('Loading fetch');\n await fetchPaths(self, interpreter, config.fetch, baseURL);\n progress('Loaded fetch');\n }\n if (config.js_modules) {\n progress('Loading JS modules');\n await fetchJSModules(config.js_modules, baseURL);\n progress('Loaded JS modules');\n }\n};\n\nexport const registerJSModule = (interpreter, name, value) => {\n if (name === 'polyscript') {\n value.lazy_py_modules = async (...packages) => {\n await loader.get(interpreter)(packages);\n return packages.map(name => interpreter.pyimport(name));\n };\n value.storage = async (name) => {\n const storage = new IDBMapSync(name);\n await storage.sync();\n return storage;\n };\n value.JSON = JSON;\n }\n interpreter.registerJsModule(name, value);\n};\n\nexport const getFormat = (path, url) => {\n if (path.endsWith('/*')) {\n if (/\\.(zip|whl|tgz|tar(?:\\.gz)?)$/.test(url))\n return RegExp.$1;\n throw new Error(`Unsupported archive ${url}`);\n }\n return '';\n};\n\nexport const run = (interpreter, code, ...args) => {\n try {\n return interpreter.runPython(dedent(code), ...args);\n }\n catch (error) {\n io.get(interpreter).stderr(error);\n }\n};\n\nexport const runAsync = async (interpreter, code, ...args) => {\n try {\n return await interpreter.runPythonAsync(dedent(code), ...args);\n }\n catch (error) {\n io.get(interpreter).stderr(error);\n }\n};\n\nexport const runEvent = async (interpreter, code, event) => {\n // allows method(event) as well as namespace.method(event)\n // it does not allow fancy brackets names for now\n const [name, ...keys] = code.split('.');\n let target = interpreter.globals.get(name);\n let context;\n for (const key of keys) [context, target] = [target, target[key]];\n try {\n await target.call(context, event);\n }\n catch (error) {\n io.get(interpreter).stderr(error);\n }\n};\n/* c8 ignore stop */\n","// ⚠️ DO NOT MODIFY - SOURCE FILE: \"../../python/mip.py\"\nexport default 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')\");","/* c8 ignore start */\n\n// toml\nexport const toml = async (text) => (\n await import(/* webpackIgnore: true */'./3rd-party/toml.js')\n).parse(text);\n\n// zip\nexport const zip = () => import(/* webpackIgnore: true */'./3rd-party/zip.js');\n\n/* c8 ignore stop */\n","import { mkdirTree } from './_utils.js';\n\nasync function syncfs(FS, direction) {\n return new Promise((resolve, reject) => {\n FS.syncfs(direction, err => {\n if (err) reject(err);\n else resolve();\n });\n });\n}\n\n// (C) Pyodide https://github.com/pyodide/pyodide - Mozilla Public License Version 2.0\n// JS port of https://github.com/pyodide/pyodide/blob/34fcd02172895d75db369994011409324f9e3cce/src/js/nativefs.ts\nexport function initializeNativeFS(module) {\n const FS = module.FS;\n const MEMFS = module.FS.filesystems.MEMFS;\n const PATH = module.PATH;\n\n const nativeFSAsync = {\n // DIR_MODE: {{{ cDefine('S_IFDIR') }}} | 511 /* 0777 */,\n // FILE_MODE: {{{ cDefine('S_IFREG') }}} | 511 /* 0777 */,\n DIR_MODE: 16384 | 511,\n FILE_MODE: 32768 | 511,\n mount: function (mount) {\n if (!mount.opts.fileSystemHandle) {\n throw new Error('opts.fileSystemHandle is required');\n }\n\n // reuse all of the core MEMFS functionality\n return MEMFS.mount.apply(null, arguments);\n },\n syncfs: async (mount, populate, callback) => {\n try {\n const local = nativeFSAsync.getLocalSet(mount);\n const remote = await nativeFSAsync.getRemoteSet(mount);\n const src = populate ? remote : local;\n const dst = populate ? local : remote;\n await nativeFSAsync.reconcile(mount, src, dst);\n callback(null);\n } catch (e) {\n callback(e);\n }\n },\n // Returns file set of emscripten's filesystem at the mountpoint.\n getLocalSet: (mount) => {\n let entries = Object.create(null);\n\n function isRealDir(p) {\n return p !== '.' && p !== '..';\n }\n\n function toAbsolute(root) {\n return (p) => {\n return PATH.join2(root, p);\n };\n }\n\n let check = FS.readdir(mount.mountpoint)\n .filter(isRealDir)\n .map(toAbsolute(mount.mountpoint));\n\n while (check.length) {\n let path = check.pop();\n let stat = FS.stat(path);\n\n if (FS.isDir(stat.mode)) {\n check.push.apply(\n check,\n FS.readdir(path).filter(isRealDir).map(toAbsolute(path)),\n );\n }\n\n entries[path] = { timestamp: stat.mtime, mode: stat.mode };\n }\n\n return { type: 'local', entries: entries };\n },\n // Returns file set of the real, on-disk filesystem at the mountpoint.\n getRemoteSet: async (mount) => {\n // TODO: this should be a map.\n const entries = Object.create(null);\n\n const handles = await getFsHandles(mount.opts.fileSystemHandle);\n for (const [path, handle] of handles) {\n if (path === '.') continue;\n\n entries[PATH.join2(mount.mountpoint, path)] = {\n timestamp:\n handle.kind === 'file'\n ? (await handle.getFile()).lastModifiedDate\n : new Date(),\n mode:\n handle.kind === 'file'\n ? nativeFSAsync.FILE_MODE\n : nativeFSAsync.DIR_MODE,\n };\n }\n\n return { type: 'remote', entries, handles };\n },\n loadLocalEntry: (path) => {\n const lookup = FS.lookupPath(path);\n const node = lookup.node;\n const stat = FS.stat(path);\n\n if (FS.isDir(stat.mode)) {\n return { timestamp: stat.mtime, mode: stat.mode };\n } else if (FS.isFile(stat.mode)) {\n node.contents = MEMFS.getFileDataAsTypedArray(node);\n return {\n timestamp: stat.mtime,\n mode: stat.mode,\n contents: node.contents,\n };\n } else {\n throw new Error('node type not supported');\n }\n },\n storeLocalEntry: (path, entry) => {\n if (FS.isDir(entry['mode'])) {\n FS.mkdirTree(path, entry['mode']);\n } else if (FS.isFile(entry['mode'])) {\n FS.writeFile(path, entry['contents'], { canOwn: true });\n } else {\n throw new Error('node type not supported');\n }\n\n FS.chmod(path, entry['mode']);\n FS.utime(path, entry['timestamp'], entry['timestamp']);\n },\n removeLocalEntry: (path) => {\n var stat = FS.stat(path);\n\n if (FS.isDir(stat.mode)) {\n FS.rmdir(path);\n } else if (FS.isFile(stat.mode)) {\n FS.unlink(path);\n }\n },\n loadRemoteEntry: async (handle) => {\n if (handle.kind === 'file') {\n const file = await handle.getFile();\n return {\n contents: new Uint8Array(await file.arrayBuffer()),\n mode: nativeFSAsync.FILE_MODE,\n timestamp: file.lastModifiedDate,\n };\n } else if (handle.kind === 'directory') {\n return {\n mode: nativeFSAsync.DIR_MODE,\n timestamp: new Date(),\n };\n } else {\n throw new Error('unknown kind: ' + handle.kind);\n }\n },\n storeRemoteEntry: async (handles, path, entry) => {\n const parentDirHandle = handles.get(PATH.dirname(path));\n const handle = FS.isFile(entry.mode)\n ? await parentDirHandle.getFileHandle(PATH.basename(path), {\n create: true,\n })\n : await parentDirHandle.getDirectoryHandle(PATH.basename(path), {\n create: true,\n });\n if (handle.kind === 'file') {\n const writable = await handle.createWritable();\n await writable.write(entry.contents);\n await writable.close();\n }\n handles.set(path, handle);\n },\n removeRemoteEntry: async (handles, path) => {\n const parentDirHandle = handles.get(PATH.dirname(path));\n await parentDirHandle.removeEntry(PATH.basename(path));\n handles.delete(path);\n },\n reconcile: async (mount, src, dst) => {\n let total = 0;\n\n const create = [];\n Object.keys(src.entries).forEach(function (key) {\n const e = src.entries[key];\n const e2 = dst.entries[key];\n if (\n !e2 ||\n (FS.isFile(e.mode) &&\n e['timestamp'].getTime() > e2['timestamp'].getTime())\n ) {\n create.push(key);\n total++;\n }\n });\n // sort paths in ascending order so directory entries are created\n // before the files inside them\n create.sort();\n\n const remove = [];\n Object.keys(dst.entries).forEach(function (key) {\n if (!src.entries[key]) {\n remove.push(key);\n total++;\n }\n });\n // sort paths in descending order so files are deleted before their\n // parent directories\n remove.sort().reverse();\n\n if (!total) {\n return;\n }\n\n const handles = src.type === 'remote' ? src.handles : dst.handles;\n\n for (const path of create) {\n const relPath = PATH.normalize(\n path.replace(mount.mountpoint, '/'),\n ).substring(1);\n if (dst.type === 'local') {\n const handle = handles.get(relPath);\n const entry = await nativeFSAsync.loadRemoteEntry(handle);\n nativeFSAsync.storeLocalEntry(path, entry);\n } else {\n const entry = nativeFSAsync.loadLocalEntry(path);\n await nativeFSAsync.storeRemoteEntry(handles, relPath, entry);\n }\n }\n\n for (const path of remove) {\n if (dst.type === 'local') {\n nativeFSAsync.removeLocalEntry(path);\n } else {\n const relPath = PATH.normalize(\n path.replace(mount.mountpoint, '/'),\n ).substring(1);\n await nativeFSAsync.removeRemoteEntry(handles, relPath);\n }\n }\n },\n };\n\n module.FS.filesystems.NATIVEFS_ASYNC = nativeFSAsync;\n\n function ensureMountPathExists(path) {\n if (FS.mkdirTree) FS.mkdirTree(path);\n else mkdirTree(FS, path);\n\n const { node } = FS.lookupPath(path, {\n follow_mount: false,\n });\n\n if (FS.isMountpoint(node)) {\n throw new Error(`path '${path}' is already a file system mount point`);\n }\n if (!FS.isDir(node.mode)) {\n throw new Error(`path '${path}' points to a file not a directory`);\n }\n // eslint-disable-next-line\n for (const _ in node.contents) {\n throw new Error(`directory '${path}' is not empty`);\n }\n }\n\n return async function mountNativeFS(path, fileSystemHandle) {\n if (fileSystemHandle.constructor.name !== 'FileSystemDirectoryHandle') {\n throw new TypeError(\n 'Expected argument \\'fileSystemHandle\\' to be a FileSystemDirectoryHandle',\n );\n }\n ensureMountPathExists(path);\n \n FS.mount(\n FS.filesystems.NATIVEFS_ASYNC,\n { fileSystemHandle },\n path,\n );\n\n // sync native ==> browser\n await syncfs(FS, true);\n\n return {\n // sync browser ==> native\n syncfs: async () => await syncfs(FS, false),\n };\n };\n}\n\nconst getFsHandles = async (dirHandle) => {\n const handles = [];\n\n async function collect(curDirHandle) {\n for await (const entry of curDirHandle.values()) {\n handles.push(entry);\n if (entry.kind === 'directory') {\n await collect(entry);\n }\n }\n }\n\n await collect(dirHandle);\n\n const result = new Map();\n result.set('.', dirHandle);\n for (const handle of handles) {\n const relativePath = (await dirHandle.resolve(handle)).join('/');\n result.set(relativePath, handle);\n }\n return result;\n};\n","import fetch from '@webreflection/fetch';\n\nimport { createProgress, writeFile } from './_utils.js';\nimport { getFormat, loader, loadProgress, registerJSModule, run, runAsync, runEvent } from './_python.js';\nimport { stdio, buffered } from './_io.js';\nimport { absoluteURL, fixedRelative } from '../utils.js';\nimport mip from '../python/mip.js';\nimport { zip } from '../3rd-party.js';\n\nimport { initializeNativeFS } from './_nativefs.js';\n\nconst type = 'micropython';\n\n// REQUIRES INTEGRATION TEST\n/* c8 ignore start */\nconst mkdir = (FS, path) => {\n try {\n FS.mkdir(path);\n }\n // eslint-disable-next-line no-unused-vars\n catch (_) {\n // ignore as there's no path.exists here\n }\n};\n\nconst progress = createProgress('mpy');\n\nexport default {\n type,\n module: (version = '1.25.0') =>\n `https://cdn.jsdelivr.net/npm/@micropython/micropython-webassembly-pyscript@${version}/micropython.mjs`,\n async engine({ loadMicroPython }, config, url, baseURL) {\n const { stderr, stdout, get } = stdio({\n stderr: buffered(console.error),\n stdout: buffered(console.log),\n });\n url = url.replace(/\\.m?js$/, '.wasm');\n progress('Loading MicroPython');\n const interpreter = await get(loadMicroPython({ linebuffer: false, stderr, stdout, url }));\n const py_imports = importPackages.bind(this, interpreter, baseURL);\n loader.set(interpreter, py_imports);\n await loadProgress(this, progress, interpreter, config, baseURL);\n // Install Micropython Package\n this.writeFile(interpreter, './mip.py', mip);\n if (config.packages) {\n progress('Loading packages');\n await py_imports(config.packages.map(fixedRelative, baseURL));\n progress('Loaded packages');\n }\n progress('Loaded MicroPython');\n if (!interpreter.mountNativeFS)\n interpreter.mountNativeFS = initializeNativeFS(interpreter._module);\n return interpreter;\n },\n registerJSModule,\n run,\n runAsync,\n runEvent,\n transform: (interpreter, value) => interpreter.PyProxy.toJs(value),\n writeFile: (interpreter, path, buffer, url) => {\n const { FS, _module: { PATH, PATH_FS } } = interpreter;\n const fs = { FS, PATH, PATH_FS };\n const format = getFormat(path, url);\n if (format) {\n const extractDir = path.slice(0, -1);\n if (extractDir !== './') FS.mkdir(extractDir);\n switch (format) {\n case 'whl':\n case 'zip': {\n const blob = new Blob([buffer], { type: 'application/zip' });\n return zip().then(async ({ BlobReader, Uint8ArrayWriter, ZipReader }) => {\n const zipFileReader = new BlobReader(blob);\n const zipReader = new ZipReader(zipFileReader);\n for (const entry of await zipReader.getEntries()) {\n const { directory, filename } = entry;\n const name = extractDir + filename;\n if (directory) mkdir(FS, name);\n else {\n mkdir(FS, PATH.dirname(name));\n const buffer = await entry.getData(new Uint8ArrayWriter);\n FS.writeFile(name, buffer, {\n canOwn: true,\n });\n }\n }\n zipReader.close();\n });\n }\n case 'tgz':\n case 'tar.gz': {\n const TMP = './_.tar.gz';\n writeFile(fs, TMP, buffer);\n interpreter.runPython(`\n import os, gzip, tarfile\n tar = tarfile.TarFile(fileobj=gzip.GzipFile(fileobj=open(\"${TMP}\", \"rb\")))\n for f in tar:\n name = f\"${extractDir}{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(\"${TMP}\")\n `);\n return;\n }\n }\n }\n return writeFile(fs, path, buffer);\n },\n};\n\nasync function importPackages(interpreter, baseURL, packages) {\n let mip;\n for (const mpyPackage of packages) {\n if (mpyPackage.endsWith('.whl')) {\n const url = absoluteURL(mpyPackage, baseURL);\n const buffer = await fetch(url).arrayBuffer();\n await this.writeFile(interpreter, './*', buffer, url);\n }\n else {\n if (!mip) mip = interpreter.pyimport('mip');\n mip.install(mpyPackage);\n }\n }\n}\n/* c8 ignore stop */\n","import { createProgress, writeFile } from './_utils.js';\nimport { getFormat, loader, loadProgress, registerJSModule, run, runAsync, runEvent } from './_python.js';\nimport { stdio } from './_io.js';\nimport { IDBMapSync, isArray, fixedRelative } from '../utils.js';\n\nconst type = 'pyodide';\nconst toJsOptions = { dict_converter: Object.fromEntries };\n\nconst { stringify } = JSON;\n\nconst { apply } = Reflect;\nconst FunctionPrototype = Function.prototype;\n\n// REQUIRES INTEGRATION TEST\n/* c8 ignore start */\nconst overrideMethod = method => function (...args) {\n return apply(method, this, args);\n};\n\nlet pyproxy, to_js;\nconst override = intercept => {\n\n const proxies = new WeakMap;\n\n const patch = args => {\n for (let arg, i = 0; i < args.length; i++) {\n switch (typeof(arg = args[i])) {\n case 'object':\n if (arg === null) break;\n // falls through\n case 'function': {\n if (pyproxy in arg && !arg[pyproxy].shared?.gcRegistered) {\n intercept = false;\n let proxy = proxies.get(arg)?.deref();\n if (!proxy) {\n proxy = to_js(arg);\n const wr = new WeakRef(proxy);\n proxies.set(arg, wr);\n proxies.set(proxy, wr);\n }\n args[i] = proxy;\n intercept = true;\n }\n break;\n }\n }\n }\n };\n\n // the patch\n Object.defineProperties(FunctionPrototype, {\n apply: {\n value(context, args) {\n if (intercept) patch(args);\n return apply(this, context, args);\n }\n },\n call: {\n value(context, ...args) {\n if (intercept) patch(args);\n return apply(this, context, args);\n }\n }\n });\n};\n\nconst progress = createProgress('py');\nconst indexURLs = new WeakMap();\n\nexport default {\n type,\n module: (version = '0.27.7') =>\n `https://cdn.jsdelivr.net/pyodide/v${version}/full/pyodide.mjs`,\n async engine({ loadPyodide, version }, config, url, baseURL) {\n progress('Loading Pyodide');\n let { packages, index_urls } = config;\n if (packages) packages = packages.map(fixedRelative, baseURL);\n progress('Loading Storage');\n const indexURL = url.slice(0, url.lastIndexOf('/'));\n // each pyodide version shares its own cache\n const storage = new IDBMapSync(`${indexURL}@${version}`);\n const options = { indexURL };\n const save = config.packages_cache !== 'never';\n await storage.sync();\n // packages_cache = 'never' means: erase the whole DB\n if (!save) storage.clear();\n // otherwise check if cache is known\n else if (packages) {\n // packages_cache = 'passthrough' means: do not use micropip.install\n if (config.packages_cache === 'passthrough') {\n options.packages = packages;\n packages = null;\n storage.clear();\n }\n else {\n packages = packages.sort();\n // packages are uniquely stored as JSON key\n const key = stringify(packages);\n if (storage.has(key)) {\n const blob = new Blob(\n [storage.get(key)],\n { type: 'application/json' },\n );\n // this should be used to bootstrap loadPyodide\n options.lockFileURL = URL.createObjectURL(blob);\n // versions are not currently understood by pyodide when\n // a lockFileURL is used instead of micropip.install(packages)\n // https://github.com/pyodide/pyodide/issues/5135#issuecomment-2441038644\n // https://github.com/pyscript/pyscript/issues/2245\n options.packages = packages.map(name => name.split(/[>=<]=/)[0]);\n packages = null;\n }\n }\n }\n progress('Loaded Storage');\n const { stderr, stdout, get } = stdio();\n const interpreter = await get(\n loadPyodide({ stderr, stdout, ...options }),\n );\n if (config.debug) interpreter.setDebug(true);\n const py_imports = importPackages.bind(interpreter);\n if (index_urls) indexURLs.set(interpreter, index_urls);\n loader.set(interpreter, py_imports);\n await loadProgress(this, progress, interpreter, config, baseURL);\n // if cache wasn't know, import and freeze it for the next time\n if (packages) await py_imports(packages, storage, save);\n await storage.close();\n if (options.lockFileURL) URL.revokeObjectURL(options.lockFileURL);\n progress('Loaded Pyodide');\n if (config.experimental_create_proxy === 'auto') {\n interpreter.runPython([\n 'import js',\n 'from pyodide.ffi import to_js',\n 'o=js.Object.fromEntries',\n 'js.experimental_create_proxy=lambda r:to_js(r,dict_converter=o)'\n ].join(';'), { globals: interpreter.toPy({}) });\n to_js = globalThis.experimental_create_proxy;\n delete globalThis.experimental_create_proxy;\n [pyproxy] = Reflect.ownKeys(to_js).filter(\n k => (\n typeof k === 'symbol' &&\n String(k) === 'Symbol(pyproxy.attrs)'\n )\n );\n override(true);\n }\n return interpreter;\n },\n registerJSModule,\n run: overrideMethod(run),\n runAsync: overrideMethod(runAsync),\n runEvent: overrideMethod(runEvent),\n transform: (interpreter, value) => apply(transform, interpreter, [value]),\n writeFile: (interpreter, path, buffer, url) => {\n const format = getFormat(path, url);\n if (format) {\n return interpreter.unpackArchive(buffer, format, {\n extractDir: path.slice(0, -1)\n });\n }\n const { FS, PATH, _module: { PATH_FS } } = interpreter;\n return writeFile({ FS, PATH, PATH_FS }, path, buffer);\n },\n};\n\nfunction transform(value) {\n const { ffi: { PyProxy } } = this;\n if (value && typeof value === 'object') {\n if (value instanceof PyProxy) return value.toJs(toJsOptions);\n // I believe this case is for LiteralMap which is not a PyProxy\n // and yet it needs to be re-converted to something useful.\n if (value instanceof Map) return new Map([...value.entries()]);\n if (isArray(value)) return value.map(transform, this);\n }\n return value;\n}\n\n// exposed utility to import packages via polyscript.lazy_py_modules\nasync function importPackages(packages, storage, save = false) {\n // temporary patch/fix console.log which is used\n // not only by Pyodide but by micropip too and there's\n // no way to intercept those calls otherwise\n const { log } = console;\n const _log = (detail, ...rest) => {\n log(detail, ...rest);\n console.log = log;\n progress(detail);\n console.log = _log;\n };\n console.log = _log;\n await this.loadPackage('micropip');\n const micropip = this.pyimport('micropip');\n if (indexURLs.has(this)) micropip.set_index_urls(indexURLs.get(this));\n await micropip.install(packages, { keep_going: true });\n console.log = log;\n if (save && (storage instanceof IDBMapSync)) {\n const frozen = micropip.freeze();\n storage.set(stringify(packages), frozen);\n }\n micropip.destroy();\n}\n/* c8 ignore stop */\n","import fetch from '@webreflection/fetch';\n\nimport { dedent } from '../utils.js';\nimport { fetchFiles, fetchJSModules, fetchPaths } from './_utils.js';\n\nconst type = 'ruby-wasm-wasi';\nconst jsType = type.replace(/\\W+/g, '_');\n\n// MISSING:\n// * there is no VFS apparently or I couldn't reach any\n// * I've no idea how to override the stderr and stdout\n// * I've no idea how to import packages\n\n// REQUIRES INTEGRATION TEST\n/* c8 ignore start */\nexport default {\n type,\n experimental: true,\n module: (version = '2.7.1') =>\n `https://cdn.jsdelivr.net/npm/@ruby/3.2-wasm-wasi@${version}/dist/browser/+esm`,\n async engine({ DefaultRubyVM }, config, url, baseURL) {\n url = url.replace(/\\/browser\\/\\+esm$/, '/ruby.wasm');\n const buffer = await fetch(url).arrayBuffer();\n const module = await WebAssembly.compile(buffer);\n const { vm: interpreter } = await DefaultRubyVM(module);\n if (config.files) await fetchFiles(this, interpreter, config.files, baseURL);\n if (config.fetch) await fetchPaths(this, interpreter, config.fetch, baseURL);\n if (config.js_modules) await fetchJSModules(config.js_modules, baseURL);\n return interpreter;\n },\n // Fallback to globally defined module fields (i.e. $xworker)\n registerJSModule(interpreter, name, value) {\n name = name.replace(/\\W+/g, '__');\n const id = `__module_${jsType}_${name}`;\n globalThis[id] = value;\n this.run(interpreter, `require \"js\";$${name}=JS.global[:${id}]`);\n delete globalThis[id];\n },\n run: (interpreter, code, ...args) => interpreter.eval(dedent(code), ...args),\n runAsync: (interpreter, code, ...args) => interpreter.evalAsync(dedent(code), ...args),\n async runEvent(interpreter, code, event) {\n // patch common xworker.onmessage/onerror cases\n if (/^xworker\\.(on\\w+)$/.test(code)) {\n const { $1: name } = RegExp;\n const id = `__module_${jsType}_event`;\n globalThis[id] = event;\n this.run(\n interpreter,\n `require \"js\";$xworker.call(\"${name}\",JS.global[:${id}])`,\n );\n delete globalThis[id];\n } else {\n // Experimental: allows only events by fully qualified method name\n const method = this.run(interpreter, `method(:${code})`);\n await method.call(code, interpreter.wrap(event));\n }\n },\n transform: (_, value) => value,\n writeFile: () => {\n throw new Error(`writeFile is not supported in ${type}`);\n },\n};\n/* c8 ignore stop */\n","import { dedent } from '../utils.js';\nimport { fetchFiles, fetchJSModules, fetchPaths, writeFileShim } from './_utils.js';\nimport { io, stdio } from './_io.js';\n\nconst type = 'wasmoon';\n\n// MISSING:\n// * I've no idea how to import packages\n\n// REQUIRES INTEGRATION TEST\n/* c8 ignore start */\nexport default {\n type,\n module: (version = '1.16.0') =>\n `https://cdn.jsdelivr.net/npm/wasmoon@${version}/+esm`,\n async engine({ LuaFactory, LuaLibraries }, config, _, baseURL) {\n const { stderr, stdout, get } = stdio();\n const interpreter = await get(new LuaFactory().createEngine());\n interpreter.global.getTable(LuaLibraries.Base, (index) => {\n interpreter.global.setField(index, 'print', stdout);\n interpreter.global.setField(index, 'printErr', stderr);\n });\n if (config.files) await fetchFiles(this, interpreter, config.files, baseURL);\n if (config.fetch) await fetchPaths(this, interpreter, config.fetch, baseURL);\n if (config.js_modules) await fetchJSModules(config.js_modules, baseURL);\n return interpreter;\n },\n // Fallback to globally defined module fields\n registerJSModule: (interpreter, name, value) => {\n interpreter.global.set(name, value);\n },\n run: (interpreter, code, ...args) => {\n try {\n return interpreter.doStringSync(dedent(code), ...args);\n }\n catch (error) {\n io.get(interpreter).stderr(error);\n }\n },\n runAsync: async (interpreter, code, ...args) => {\n try {\n return await interpreter.doString(dedent(code), ...args);\n }\n catch (error) {\n io.get(interpreter).stderr(error);\n }\n },\n runEvent: async (interpreter, code, event) => {\n // allows method(event) as well as namespace.method(event)\n // it does not allow fancy brackets names for now\n const [name, ...keys] = code.split('.');\n let target = interpreter.global.get(name);\n let context;\n for (const key of keys) [context, target] = [target, target[key]];\n try {\n await target.call(context, event);\n }\n catch (error) {\n io.get(interpreter).stderr(error);\n }\n },\n transform: (_, value) => value,\n writeFile: (\n {\n cmodule: {\n module: { FS },\n },\n },\n path,\n buffer,\n ) => writeFileShim(FS, path, buffer),\n};\n/* c8 ignore stop */\n","import { create } from 'gc-hook';\nimport { dedent } from '../utils.js';\nimport { fetchFiles, fetchJSModules, fetchPaths } from './_utils.js';\nimport { io, stdio } from './_io.js';\n\nconst type = 'webr';\nconst r = new WeakMap();\n\n// REQUIRES INTEGRATION TEST\n/* c8 ignore start */\nconst run = async (interpreter, code) => {\n const { shelter, destroy, io } = r.get(interpreter);\n const { output, result } = await shelter.captureR(dedent(code));\n for (const { type, data } of output) io[type](data);\n // this is a double proxy but it's OK as the consumer\n // of the result here needs to invoke explicitly a conversion\n // or trust the `(await p.toJs()).values` returns what's expected.\n return create(result, destroy, { token: false });\n};\n\nexport default {\n type,\n experimental: true,\n module: (version = '0.4.4') =>\n `https://cdn.jsdelivr.net/npm/webr@${version}/dist/webr.mjs`,\n async engine(module, config, _, baseURL) {\n const { get } = stdio();\n const interpreter = new module.WebR();\n await get(interpreter.init().then(() => interpreter));\n const shelter = await new interpreter.Shelter();\n r.set(interpreter, {\n module,\n shelter,\n destroy: shelter.destroy.bind(shelter),\n io: io.get(interpreter),\n });\n if (config.files) await fetchFiles(this, interpreter, config.files, baseURL);\n if (config.fetch) await fetchPaths(this, interpreter, config.fetch, baseURL);\n if (config.js_modules) await fetchJSModules(config.js_modules, baseURL);\n return interpreter;\n },\n // Fallback to globally defined module fields (i.e. $xworker)\n registerJSModule(_, name) {\n console.warn(`Experimental interpreter: module ${name} is not supported (yet)`);\n // TODO: as complex JS objects / modules are not allowed\n // it's not clear how we can bind anything or import a module\n // in a context that doesn't understand methods from JS\n // https://docs.r-wasm.org/webr/latest/convert-js-to-r.html#constructing-r-objects-from-javascript-objects\n },\n run,\n runAsync: run,\n async runEvent(interpreter, code, event) {\n // TODO: WebR cannot convert exoteric objects or any literal\n // to an easy to reason about data/frame ... that conversion\n // is reserved for the future:\n // https://docs.r-wasm.org/webr/latest/convert-js-to-r.html#constructing-r-objects-from-javascript-objects\n await interpreter.evalRVoid(`${code}(event)`, {\n env: { event: { type: [ event.type ] } }\n });\n },\n transform: (_, value) => {\n console.log('transforming', value);\n return value;\n },\n writeFile: () => {\n // MAYBE ???\n },\n};\n/* c8 ignore stop */\n","// ⚠️ Part of this file is automatically generated\n// The :RUNTIMES comment is a delimiter and no code should be written/changed after\n// See rollup/build_interpreters.cjs to know more\n\n/** @type {Map<string, object>} */\nexport const registry = new Map();\n\n/** @type {Map<string, object>} */\nexport const configs = new Map();\n\n/** @type {string[]} */\nexport const selectors = [];\n\n/** @type {string[]} */\nexport const prefixes = [];\n\n/* c8 ignore start */\nexport const interpreter = new Proxy(new Map(), {\n get(map, id) {\n if (!map.has(id)) {\n const [type, ...rest] = id.split('@');\n const interpreter = registry.get(type);\n const url = /^(?:\\.?\\.?\\/|[a-z0-9-]+:\\/\\/)/i.test(rest)\n ? rest.join('@')\n : interpreter.module(...rest);\n map.set(id, {\n url,\n module: import(/* webpackIgnore: true */url),\n engine: interpreter.engine.bind(interpreter),\n });\n }\n const { url, module, engine } = map.get(id);\n return (config, baseURL) =>\n module.then((module) => {\n configs.set(id, config);\n return engine(module, config, url, baseURL);\n });\n },\n});\n/* c8 ignore stop */\n\nconst register = (interpreter) => {\n for (const type of [].concat(interpreter.type)) {\n registry.set(type, interpreter);\n selectors.push(`script[type=\"${type}\"]`);\n prefixes.push(`${type}-`);\n }\n};\n\n//:RUNTIMES\nimport dummy from './interpreter/dummy.js';\nimport micropython from './interpreter/micropython.js';\nimport pyodide from './interpreter/pyodide.js';\nimport ruby_wasm_wasi from './interpreter/ruby-wasm-wasi.js';\nimport wasmoon from './interpreter/wasmoon.js';\nimport webr from './interpreter/webr.js';\nfor (const interpreter of [dummy, micropython, pyodide, ruby_wasm_wasi, wasmoon, webr])\n register(interpreter);\n","import fetch from '@webreflection/fetch';\n\nimport { interpreter } from './interpreters.js';\nimport { absoluteURL, resolve } from './utils.js';\nimport { toml } from './3rd-party.js';\n\nconst { parse } = JSON;\n\n// REQUIRES INTEGRATION TEST\n/* c8 ignore start */\nexport const getConfigURLAndType = (config, configURL = './config.txt') => {\n let type = typeof config;\n if (type === 'string' && /\\.(json|toml|txt)$/.test(config))\n type = RegExp.$1;\n else\n config = configURL;\n return [absoluteURL(config), type];\n};\n\nexport const resolveConfig = (config, configURL, options = {}) => {\n const [absolute, type] = getConfigURLAndType(config, configURL);\n if (type === 'json') {\n options = fetch(absolute).json();\n } else if (type === 'toml') {\n options = fetch(absolute).text().then(toml);\n } else if (type === 'string') {\n options = parseString(config);\n } else if (type === 'object' && config) {\n options = config;\n } else if (type === 'txt' && typeof options === 'string') {\n options = parseString(options);\n }\n config = absolute;\n return [options, config];\n};\n\nconst parseString = config => {\n try {\n return parse(config);\n }\n // eslint-disable-next-line no-unused-vars\n catch (_) {\n return toml(config);\n }\n};\n/* c8 ignore stop */\n\n/**\n * Parse a generic config if it came from an attribute either as URL\n * or as a serialized string. In XWorker case, accepts a pre-defined\n * options to use as it is to avoid needing at all a fetch operation.\n * In latter case, config will be suffixed as `config.txt`.\n * @param {string} id the interpreter name @ version identifier\n * @param {string | object} config optional config file to parse\n * @param {string} [configURL] optional config URL if config is not string\n * @param {object} [options] optional options used to bootstrap XWorker\n * @returns\n */\nexport const getRuntime = (id, config, configURL, options = {}) => {\n if (config) {\n // REQUIRES INTEGRATION TEST\n /* c8 ignore start */\n [options, config] = resolveConfig(config, configURL, options);\n /* c8 ignore stop */\n }\n return resolve(options).then(options => interpreter[id](options, config));\n};\n\n/**\n * @param {string} type the interpreter type\n * @param {string} [version] the optional interpreter version\n * @returns\n */\nexport const getRuntimeID = (type, version = '') =>\n `${type}@${version}`.replace(/@$/, '');\n","export default function (callback = this) {\n return String(callback).replace(\n /^(async\\s*)?(\\bfunction\\b)?(.*?)\\(/,\n (_, isAsync, fn, name) => (\n name && !fn ?\n `${isAsync || \"\"}function ${name}(` :\n _\n ),\n );\n};\n","import { registry } from './interpreters.js';\n\nconst beforeRun = 'BeforeRun';\nconst afterRun = 'AfterRun';\n\nexport const code = [\n `code${beforeRun}`,\n `code${beforeRun}Async`,\n `code${afterRun}`,\n `code${afterRun}Async`,\n];\n\nexport const js = [\n 'onWorker',\n 'onReady',\n `on${beforeRun}`,\n `on${beforeRun}Async`,\n `on${afterRun}`,\n `on${afterRun}Async`,\n];\n\n/* c8 ignore start */\n// create a copy of the resolved wrapper with the original\n// run and runAsync so that, if used within onBeforeRun/Async\n// or onAfterRun/Async polluted entries won't matter and just\n// the native utilities will be available without seppuku.\n// The same applies if called within `onReady` worker hook.\nexport function patch(resolved, interpreter) {\n const { run, runAsync } = registry.get(this.type);\n return {\n ...resolved,\n run: run.bind(this, interpreter),\n runAsync: runAsync.bind(this, interpreter)\n };\n}\n\n/**\n * Created the wrapper to pass along hooked callbacks.\n * @param {object} module the details module\n * @param {object} ref the node or reference to pass as second argument\n * @param {boolean} isAsync if run should be async\n * @param {function?} before callback to run before\n * @param {function?} after callback to run after\n * @returns {object}\n */\nexport const polluteJS = (module, resolved, ref, isAsync, before, after) => {\n if (before || after) {\n const patched = patch.bind(module, resolved);\n const name = isAsync ? 'runAsync' : 'run';\n const method = module[name];\n module[name] = isAsync ?\n async function (interpreter, code, ...args) {\n if (before) await before.call(this, patched(interpreter), ref);\n const result = await method.call(\n this,\n interpreter,\n code,\n ...args\n );\n if (after) await after.call(this, patched(interpreter), ref);\n return result;\n } :\n function (interpreter, code, ...args) {\n if (before) before.call(this, patched(interpreter), ref);\n const result = method.call(this, interpreter, code, ...args);\n if (after) after.call(this, patched(interpreter), ref);\n return result;\n }\n ;\n }\n};\n/* c8 ignore stop */\n","import toJSONCallback from 'to-json-callback';\n\nimport { dedent } from '../utils.js';\nimport { js as jsHooks, code as codeHooks } from '../hooks.js';\n\n// REQUIRES INTEGRATION TEST\n/* c8 ignore start */\nexport default class Hook {\n constructor(interpreter, hooks = {}) {\n const { main, worker } = hooks;\n this.interpreter = interpreter;\n this.onWorker = main?.onWorker;\n // ignore onWorker as that's main only\n for (const key of jsHooks.slice(1))\n this[key] = worker?.[key];\n for (const key of codeHooks)\n this[key] = worker?.[key];\n }\n toJSON() {\n const hooks = {};\n // ignore onWorker as that's main only\n for (const key of jsHooks.slice(1)) {\n if (this[key]) hooks[key] = toJSONCallback(this[key]);\n }\n // code related: exclude `onReady` callback\n for (const key of codeHooks) {\n if (this[key]) hooks[key] = dedent(this[key]());\n }\n return hooks;\n }\n}\n/* c8 ignore stop */\n","import withResolvers from '@webreflection/utils/with-resolvers';\nimport fetch from '@webreflection/fetch';\nimport xworker from './xworker.js';\nimport { getConfigURLAndType } from '../loader.js';\nimport { assign, create, defineProperties, importCSS, importJS } from '../utils.js';\nimport Hook from './hook.js';\n\n/**\n * @typedef {Object} WorkerOptions custom configuration\n * @prop {string} type the interpreter type to use\n * @prop {string} [version] the optional interpreter version to use\n * @prop {string | object} [config] the optional config to use within such interpreter\n * @prop {string} [configURL] the optional configURL used to resolve config entries\n * @prop {string} [serviceWorker] the optional Service Worker for SharedArrayBuffer fallback\n * @prop {string} [service_worker] alias for `serviceWorker`\n */\n\n// REQUIRES INTEGRATION TEST\n/* c8 ignore start */\nexport default (...args) =>\n /**\n * A XWorker is a Worker facade able to bootstrap a channel with any desired interpreter.\n * @param {string} url the remote file to evaluate on bootstrap\n * @param {WorkerOptions} [options] optional arguments to define the interpreter to use\n * @returns {Worker}\n */\n function XWorker(url, options) {\n if (args.length) {\n const [type, version] = args;\n options = assign({}, options || { type, version });\n if (!options.type) options.type = type;\n }\n\n // provide a base url to fetch or load config files from a Worker\n // because there's no location at all in the Worker as it's embedded.\n // fallback to a generic, ignored, config.txt file to still provide a URL.\n const [ config ] = getConfigURLAndType(options.config, options.configURL);\n\n const serviceWorker = options?.serviceWorker || options?.service_worker;\n const worker = xworker({ serviceWorker });\n const { postMessage } = worker;\n const isHook = this instanceof Hook;\n\n const sync = assign(\n worker.proxy,\n { importJS, importCSS },\n );\n\n const resolver = withResolvers();\n\n let bootstrap = fetch(url)\n .text()\n .then(code => {\n const hooks = isHook ? this.toJSON() : void 0;\n postMessage.call(worker, { options, config, code, hooks });\n })\n .then(() => {\n // boost postMessage performance\n bootstrap = { then: fn => fn() };\n });\n\n defineProperties(worker, {\n sync: { value: sync },\n ready: { value: resolver.promise },\n postMessage: {\n value: (data, ...rest) => bootstrap.then(\n () => postMessage.call(worker, data, ...rest),\n ),\n },\n onerror: {\n writable: true,\n configurable: true,\n value: console.error\n }\n });\n\n worker.addEventListener('message', event => {\n const { data } = event;\n const isError = data instanceof Error;\n if (isError || data === 'polyscript:done') {\n event.stopImmediatePropagation();\n if (isError) {\n resolver.reject(data);\n worker.onerror(create(event, {\n type: { value: 'error' },\n error: { value: data }\n }));\n }\n else resolver.resolve(worker);\n }\n });\n\n if (isHook) this.onWorker?.(this.interpreter, worker);\n\n return worker;\n };\n\n/* c8 ignore stop */","export const INVALID_CONTENT = 'Invalid content';\nexport const INVALID_SRC_ATTR = 'Invalid worker attribute';\nexport const INVALID_WORKER_ATTR = 'Invalid worker attribute';\n","import { INVALID_CONTENT, INVALID_SRC_ATTR, INVALID_WORKER_ATTR } from '../errors.js';\n\nimport { dedent, unescape } from '../utils.js';\n\nconst hasCommentsOnly = text => !text\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '')\n .replace(/^\\s*(?:\\/\\/|#).*/gm, '')\n .trim()\n;\n\n/* c8 ignore start */ // tested via integration\nexport default element => {\n const { src, worker } = element.attributes;\n if (worker) {\n let { value } = worker;\n // throw on worker values as ambiguous\n // @see https://github.com/pyscript/polyscript/issues/43\n if (value) throw new SyntaxError(INVALID_WORKER_ATTR);\n value = src?.value;\n if (!value) {\n // throw on empty src attributes\n if (src) throw new SyntaxError(INVALID_SRC_ATTR);\n if (!element.childElementCount)\n value = element.textContent;\n else {\n const { innerHTML, localName, type } = element;\n const name = type || localName.replace(/-script$/, '');\n value = unescape(innerHTML);\n console.warn(\n `Deprecated: use <script type=\"${name}\"> for an always safe content parsing:\\n`,\n value,\n );\n }\n\n const url = URL.createObjectURL(new Blob([dedent(value)], { type: 'text/plain' }));\n // TODO: should we really clean up this? debugging non-existent resources\n // at distance might be very problematic if the url is revoked.\n // setTimeout(URL.revokeObjectURL, 5000, url);\n return url;\n }\n return value;\n }\n // validate ambiguous cases with src and not empty/commented content\n if (src && !hasCommentsOnly(element.textContent))\n throw new SyntaxError(INVALID_CONTENT);\n};\n/* c8 ignore stop */\n","import fetch from '@webreflection/fetch';\nimport { $ } from 'basic-devtools';\n\nimport IDBMap from '@webreflection/idb-map';\nimport IDBMapSync from '@webreflection/idb-map/sync';\n\nimport { workers, workersHandler } from './workers.js';\nimport $xworker from './worker/class.js';\nimport workerURL from './worker/url.js';\nimport { getRuntime, getRuntimeID } from './loader.js';\nimport { registry } from './interpreters.js';\nimport { JSModules, isSync, all, dispatch, resolve, defineProperty, nodeInfo, registerJSModules } from './utils.js';\n\nconst getRoot = (script) => {\n let parent = script;\n while (parent.parentNode) parent = parent.parentNode;\n return parent;\n};\n\nexport const queryTarget = (script, idOrSelector) => {\n const root = getRoot(script);\n return root.getElementById(idOrSelector) || $(idOrSelector, root);\n};\n\nconst targets = new WeakMap();\nconst targetDescriptor = {\n get() {\n let target = targets.get(this);\n if (!target) {\n target = document.createElement(`${this.type}-script`);\n targets.set(this, target);\n handle(this);\n }\n return target;\n },\n set(target) {\n if (typeof target === 'string')\n targets.set(this, queryTarget(this, target));\n else {\n targets.set(this, target);\n handle(this);\n }\n },\n};\n\nconst handled = new WeakMap();\n\nexport const interpreters = new Map();\n\nconst execute = async (currentScript, source, XWorker, isAsync) => {\n const { type } = currentScript;\n const module = registry.get(type);\n /* c8 ignore start */\n if (module.experimental)\n console.warn(`The ${type} interpreter is experimental`);\n const [interpreter, content] = await all([\n handled.get(currentScript).interpreter,\n source,\n ]);\n try {\n registerJSModules(type, module, interpreter, JSModules);\n module.registerJSModule(interpreter, 'polyscript', {\n IDBMap,\n IDBMapSync,\n XWorker,\n currentScript,\n js_modules: JSModules,\n workers: workersHandler,\n });\n dispatch(currentScript, type, 'ready');\n // temporarily override inherited document.currentScript in a non writable way\n // but it deletes it right after to preserve native behavior (as it's sync: no trouble)\n defineProperty(document, 'currentScript', {\n configurable: true,\n get: () => currentScript,\n });\n const done = dispatch.bind(null, currentScript, type, 'done');\n let result = module[isAsync ? 'runAsync' : 'run'](interpreter, content);\n if (isAsync) result = await result;\n done();\n return result;\n } finally {\n delete document.currentScript;\n }\n /* c8 ignore stop */\n};\n\nconst getValue = (ref, prefix) => {\n const value = ref?.value;\n return value ? prefix + value : '';\n};\n\nexport const getDetails = (type, id, name, version, config, configURL, runtime = type) => {\n if (!interpreters.has(id)) {\n const details = {\n interpreter: getRuntime(name, config, configURL),\n queue: resolve(),\n XWorker: $xworker(type, version),\n };\n interpreters.set(id, details);\n // enable sane defaults when single interpreter *of kind* is used in the page\n // this allows `xxx-*` attributes to refer to such interpreter without `env` around\n /* c8 ignore start *//* this is tested very well in PyScript */\n if (!interpreters.has(type)) interpreters.set(type, details);\n if (!interpreters.has(runtime)) interpreters.set(runtime, details);\n /* c8 ignore stopt */\n }\n return interpreters.get(id);\n};\n\n/**\n * @param {HTMLScriptElement} script a special type of <script>\n */\nexport const handle = async (script) => {\n // known node, move its companion target after\n // vDOM or other use cases where the script is a tracked element\n if (handled.has(script)) {\n const { target } = script;\n if (target) {\n // if the script is in the head just append target to the body\n if (script.closest('head')) document.body.append(target);\n // in any other case preserve the script position\n else script.after(target);\n }\n }\n // new script to handle ... allow newly created scripts to work\n // just exactly like any other script would\n else {\n // allow a shared config among scripts, beside interpreter,\n // and/or source code with different config or interpreter\n const {\n attributes: {\n config,\n env,\n name: wn,\n target,\n version,\n ['service-worker']: sw,\n },\n src,\n type,\n } = script;\n\n /* c8 ignore start */\n const isAsync = !isSync(script);\n\n const versionValue = version?.value;\n const name = getRuntimeID(type, versionValue);\n let configValue = getValue(config, '|');\n const id = getValue(env, '') || `${name}${configValue}`;\n configValue = configValue.slice(1);\n\n const url = workerURL(script);\n if (url) {\n const XWorker = $xworker(type, versionValue);\n const xworker = new XWorker(url, {\n ...nodeInfo(script, type),\n version: versionValue,\n async: isAsync,\n config: configValue,\n serviceWorker: sw?.value,\n });\n handled.set(\n defineProperty(script, 'xworker', { value: xworker }),\n { xworker },\n );\n const workerName = wn?.value;\n if (workerName) workers[workerName].resolve(xworker.ready);\n return;\n }\n /* c8 ignore stop */\n\n const targetValue = getValue(target, '');\n const details = getDetails(type, id, name, versionValue, configValue);\n\n handled.set(\n defineProperty(script, 'target', targetDescriptor),\n details,\n );\n\n if (targetValue) targets.set(script, queryTarget(script, targetValue));\n\n // start fetching external resources ASAP\n const source = src ? fetch(src).text() : script.textContent;\n details.queue = details.queue.then(() =>\n execute(script, source, details.XWorker, isAsync),\n );\n }\n};\n","import { $x } from 'basic-devtools';\n\nimport { interpreters } from './script-handler.js';\nimport { all, create } from './utils.js';\nimport { registry, prefixes } from './interpreters.js';\n\n/* c8 ignore start */\nexport const env = new Proxy(create(null), {\n get: (_, name) => new Promise(queueMicrotask).then(\n () => awaitInterpreter(name)\n ),\n});\n\n// attributes are tested via integration / e2e\n// ensure both interpreter and its queue are awaited then returns the interpreter\nconst awaitInterpreter = async (key) => {\n if (interpreters.has(key)) {\n const { interpreter, queue } = interpreters.get(key);\n return (await all([interpreter, queue]))[0];\n }\n\n const available = interpreters.size\n ? `Available interpreters are: ${[...interpreters.keys()]\n .map((r) => `\"${r}\"`)\n .join(', ')}.`\n : 'There are no interpreters in this page.';\n\n throw new Error(`The interpreter \"${key}\" was not found. ${available}`);\n};\n\nexport const listener = async (event) => {\n const { type, currentTarget } = event;\n if (!prefixes.length) return;\n for (let { name, value, ownerElement: el } of $x(\n `./@*[${prefixes.map((p) => `name()=\"${p}${type}\"`).join(' or ')}]`,\n currentTarget,\n )) {\n name = name.slice(0, -(type.length + 1));\n const interpreter = await awaitInterpreter(\n el.getAttribute(`${name}-env`) || name,\n );\n const handler = registry.get(name);\n handler.runEvent(interpreter, value, event);\n }\n};\n\n/**\n * Look for known prefixes and add related listeners.\n * @param {Document | Element} root\n */\nexport const addAllListeners = (root) => {\n if (!prefixes.length) return;\n for (let { name, ownerElement: el } of $x(\n `.//@*[${prefixes\n .map((p) => `starts-with(name(),\"${p}\")`)\n .join(' or ')}]`,\n root,\n )) {\n const i = name.lastIndexOf('-');\n const type = name.slice(i + 1);\n if (type !== 'env') {\n el.addEventListener(type, listener);\n // automatically disable form controls that are not disabled already\n if ('disabled' in el && !el.disabled) {\n el.disabled = true;\n // set these to enable once the interpreter is known (registered + loaded)\n env[name.slice(0, i)].then(() => {\n el.disabled = false;\n });\n }\n }\n }\n};\n/* c8 ignore stop */\n","import xworker from './worker/class.js';\nimport Hook from './worker/hook.js';\n\nconst XWorker = xworker();\n\nexport { Hook, XWorker };\n","import withResolvers from '@webreflection/utils/with-resolvers';\nimport { $$ } from 'basic-devtools';\n\nimport IDBMap from '@webreflection/idb-map';\nimport IDBMapSync from '@webreflection/idb-map/sync';\n\nimport { JSModules, isSync, assign, create, createOverload, createResolved, dedent, defineProperty, nodeInfo, registerJSModules } from './utils.js';\nimport { getDetails } from './script-handler.js';\nimport { registry as defaultRegistry, prefixes, configs } from './interpreters.js';\nimport { getRuntimeID, resolveConfig } from './loader.js';\nimport { addAllListeners } from './listeners.js';\nimport { Hook, XWorker as XW } from './xworker.js';\nimport { workers, workersHandler } from './workers.js';\nimport { polluteJS, js as jsHooks, code as codeHooks } from './hooks.js';\nimport workerURL from './worker/url.js';\n\nexport const CUSTOM_SELECTORS = [];\n\nexport const customObserver = new Map();\n\n/**\n * @typedef {Object} Runtime custom configuration\n * @prop {object} interpreter the bootstrapped interpreter\n * @prop {(url:string, options?: object) => Worker} XWorker an XWorker constructor that defaults to same interpreter on the Worker.\n * @prop {object} config a cloned config used to bootstrap the interpreter\n * @prop {(code:string) => any} run an utility to run code within the interpreter\n * @prop {(code:string) => Promise<any>} runAsync an utility to run code asynchronously within the interpreter\n * @prop {(path:string, data:ArrayBuffer) => void} writeFile an utility to write a file in the virtual FS, if available\n */\n\nconst types = new Map();\nconst waitList = new Map();\n\n// REQUIRES INTEGRATION TEST\n/* c8 ignore start */\n/**\n * @param {Element} node any DOM element registered via define.\n */\nexport const handleCustomType = async (node) => {\n for (const selector of CUSTOM_SELECTORS) {\n if (node.matches(selector)) {\n const type = types.get(selector);\n const details = registry.get(type);\n const { resolve } = waitList.get(type);\n const { options, known } = details;\n\n if (known.has(node)) return;\n known.add(node);\n\n for (const [selector, callback] of customObserver) {\n if (node.matches(selector)) await callback(node);\n }\n\n const {\n interpreter: runtime,\n configURL,\n config,\n version,\n env,\n onerror,\n hooks,\n } = options;\n\n let error;\n try {\n const worker = workerURL(node);\n if (worker) {\n let v = version;\n let url = configURL;\n let cfg = node.getAttribute('config') || config || {};\n if (!v || !cfg) {\n const [o, u] = resolveConfig(cfg, configURL);\n cfg = await o;\n url = u;\n v = cfg.version || cfg.interpreter;\n if (v && /\\.m?js$/.test(v))\n v = new URL(v, url).href;\n }\n const xworker = XW.call(new Hook(null, hooks), worker, {\n ...nodeInfo(node, type),\n configURL: url,\n version: v,\n type: runtime,\n custom: type,\n config: cfg,\n async: !isSync(node),\n serviceWorker: node.getAttribute('service-worker'),\n });\n defineProperty(node, 'xworker', { value: xworker });\n resolve({ type, xworker });\n const workerName = node.getAttribute('name');\n if (workerName) workers[workerName].resolve(xworker.ready);\n return;\n }\n }\n // let the custom type handle errors via its `io`\n catch (workerError) {\n error = workerError;\n }\n\n const name = getRuntimeID(runtime, version);\n const id = env || `${name}${config ? `|${config}` : ''}`;\n const { interpreter: engine, XWorker: Worker } = getDetails(\n type,\n id,\n name,\n version,\n config,\n configURL,\n runtime\n );\n\n const interpreter = await engine;\n\n const module = create(defaultRegistry.get(runtime));\n\n const hook = new Hook(interpreter, hooks);\n\n const XWorker = function XWorker(...args) {\n return Worker.apply(hook, args);\n };\n\n const resolved = {\n ...createResolved(\n module,\n type,\n structuredClone(configs.get(name)),\n interpreter,\n ),\n XWorker,\n };\n\n registerJSModules(runtime, module, interpreter, JSModules);\n module.registerJSModule(interpreter, 'polyscript', {\n IDBMap,\n IDBMapSync,\n XWorker,\n config: resolved.config,\n currentScript: type.startsWith('_') ? null : node,\n js_modules: JSModules,\n workers: workersHandler,\n });\n\n // patch methods accordingly to hooks (and only if needed)\n for (const suffix of ['Run', 'RunAsync']) {\n let before = '';\n let after = '';\n\n for (const key of codeHooks) {\n const value = hooks?.main?.[key];\n if (value && key.endsWith(suffix)) {\n if (key.startsWith('codeBefore'))\n before = dedent(value());\n else\n after = dedent(value());\n }\n }\n\n if (before || after) {\n createOverload(\n module,\n `r${suffix.slice(1)}`,\n before,\n after,\n );\n }\n\n let beforeCB, afterCB;\n // ignore onReady and onWorker\n for (let i = 2; i < jsHooks.length; i++) {\n const key = jsHooks[i];\n const value = hooks?.main?.[key];\n if (value && key.endsWith(suffix)) {\n if (key.startsWith('onBefore'))\n beforeCB = value;\n else\n afterCB = value;\n }\n }\n polluteJS(module, resolved, node, suffix.endsWith('Async'), beforeCB, afterCB);\n }\n\n details.queue = details.queue.then(() => {\n resolve(resolved);\n if (error) onerror?.(error, node);\n return hooks?.main?.onReady?.(resolved, node);\n });\n }\n }\n};\n\n/**\n * @type {Map<string, {options:object, known:WeakSet<Element>}>}\n */\nconst registry = new Map();\n\n/**\n * @typedef {Object} CustomOptions custom configuration\n * @prop {'pyodide' | 'micropython' | 'ruby-wasm-wasi' | 'wasmoon'} interpreter the interpreter to use\n * @prop {string} [version] the optional interpreter version to use\n * @prop {string} [config] the optional config to use within such interpreter\n */\n\nlet dontBotherCount = 0;\n\n/**\n * Allows custom types and components on the page to receive interpreters to execute any code\n * @param {string} type the unique `<script type=\"...\">` identifier\n * @param {CustomOptions} options the custom type configuration\n */\nexport const define = (type, options) => {\n // allow no-type to be bootstrapped out of the box\n let dontBother = type == null;\n\n if (dontBother)\n type = `_ps${dontBotherCount++}`;\n else if (defaultRegistry.has(type) || registry.has(type))\n throw new Error(`<script type=\"${type}\"> already registered`);\n\n if (!defaultRegistry.has(options?.interpreter))\n throw new Error('Unspecified interpreter');\n\n // allows reaching out the interpreter helpers on events\n defaultRegistry.set(type, defaultRegistry.get(options.interpreter));\n\n // allows selector -> registry by type\n const selectors = [`script[type=\"${type}\"]`];\n\n // ensure a Promise can resolve once a custom type has been bootstrapped\n whenDefined(type);\n\n if (dontBother) {\n // add a script then cleanup everything once that's ready\n const { hooks } = options;\n const onReady = hooks?.main?.onReady;\n options = {\n ...options,\n hooks: {\n ...hooks,\n main: {\n ...hooks?.main,\n onReady(resolved, node) {\n CUSTOM_SELECTORS.splice(CUSTOM_SELECTORS.indexOf(type), 1);\n defaultRegistry.delete(type);\n registry.delete(type);\n waitList.delete(type);\n node.remove();\n onReady?.(resolved);\n }\n }\n },\n };\n document.head.append(\n assign(document.createElement('script'), { type })\n );\n }\n else {\n selectors.push(`${type}-script`);\n prefixes.push(`${type}-`);\n }\n\n for (const selector of selectors) types.set(selector, type);\n CUSTOM_SELECTORS.push(...selectors);\n\n // ensure always same env for this custom type\n registry.set(type, {\n options: assign({ env: type }, options),\n known: new WeakSet(),\n queue: Promise.resolve(),\n });\n\n if (!dontBother) addAllListeners(document);\n $$(selectors.join(',')).forEach(handleCustomType);\n};\n\n/**\n * Resolves whenever a defined custom type is bootstrapped on the page\n * @param {string} type the unique `<script type=\"...\">` identifier\n * @returns {Promise<object>}\n */\nexport const whenDefined = (type) => {\n if (!waitList.has(type)) waitList.set(type, withResolvers());\n return waitList.get(type).promise;\n};\n/* c8 ignore stop */\n","/** @typedef {(type: string, options: import(\"./custom.js\").CustomOptions) => void} CustomOptions */\n\nimport stickyModule from 'sticky-module';\nimport { $$ } from 'basic-devtools';\n\nimport { handle } from './script-handler.js';\nimport { assign } from './utils.js';\nimport { selectors, prefixes } from './interpreters.js';\nimport { listener, addAllListeners } from './listeners.js';\n\nimport {\n CUSTOM_SELECTORS,\n handleCustomType,\n customObserver as $customObserver,\n define as $define,\n whenDefined as $whenDefined\n} from './custom.js';\n\nimport { env as $env } from './listeners.js';\nimport { Hook as $Hook, XWorker as $XWorker } from './xworker.js';\n\n// avoid multiple initialization of the same library\nconst [\n {\n customObserver,\n define,\n whenDefined,\n env,\n Hook,\n XWorker\n },\n alreadyLive\n] = stickyModule(\n 'polyscript',\n {\n customObserver: $customObserver,\n define: $define,\n whenDefined: $whenDefined,\n env: $env,\n Hook: $Hook,\n XWorker: $XWorker\n }\n);\n\nexport {\n customObserver,\n define,\n whenDefined,\n env,\n Hook,\n XWorker\n};\n\nexport * from './errors.js';\n\n\nif (!alreadyLive) {\n const mo = new MutationObserver((records) => {\n const selector = selectors.join(',');\n for (const { type, target, attributeName, addedNodes } of records) {\n // attributes are tested via integration / e2e\n /* c8 ignore start */\n if (type === 'attributes') {\n const i = attributeName.lastIndexOf('-') + 1;\n if (i) {\n const prefix = attributeName.slice(0, i);\n for (const p of prefixes) {\n if (prefix === p) {\n const type = attributeName.slice(i);\n if (type !== 'env') {\n const method = target.hasAttribute(attributeName)\n ? 'add'\n : 'remove';\n target[`${method}EventListener`](type, listener);\n }\n break;\n }\n }\n }\n continue;\n }\n for (const node of addedNodes) {\n if (node.nodeType === 1) {\n addAllListeners(node);\n if (selector && node.matches(selector)) handle(node);\n else bootstrap(selector, node, true);\n }\n }\n /* c8 ignore stop */\n }\n });\n\n /* c8 ignore start */\n const bootstrap = (selector, node, shouldHandle) => {\n if (selector) $$(selector, node).forEach(handle);\n selector = CUSTOM_SELECTORS.join(',');\n if (selector) {\n if (shouldHandle) handleCustomType(node);\n $$(selector, node).forEach(handleCustomType);\n }\n };\n /* c8 ignore stop */\n\n const observe = (root) => {\n mo.observe(root, { childList: true, subtree: true, attributes: true });\n return root;\n };\n\n const { attachShadow } = Element.prototype;\n assign(Element.prototype, {\n attachShadow(init) {\n return observe(attachShadow.call(this, init));\n },\n });\n\n // give 3rd party a chance to apply changes before this happens\n queueMicrotask(() => {\n addAllListeners(observe(document));\n bootstrap(selectors.join(','), document, false);\n });\n\n}\n"],"names":["$$","css","root","document","querySelectorAll","$x","path","xpath","XPathEvaluator","createExpression","evaluate","XPathResult","ORDERED_NODE_SNAPSHOT_TYPE","result","i","snapshotLength","push","snapshotItem","d","Object","getOwnPropertyDescriptors","Response","prototype","isFunction","value","handler","get","p","k","hasOwnProperty","then","r","args","bypass","bind","direct","fetch$1","input","init","Proxy","fetch","assign","STORAGE","READONLY","READWRITE","defaultOptions","durability","prefix","target","IDBMap","EventTarget","db","options","transaction","what","how","t","this","Promise","onsuccess","onerror","objectStore","constructor","name","super","resolve","reject","indexedDB","open","onupgradeneeded","objectStoreNames","length","createObjectStore","oncomplete","event","dispatchEvent","boundDispatch","key","startsWith","type","message","isTrusted","Event","close","size","store","count","clear","delete","entries","keys","all","map","forEach","callback","context","call","has","getKey","getAllKeys","set","put","values","Symbol","toStringTag","IDBMapSync","Map","queue","sync","withResolvers$1","withResolvers","workers","ignore","Set","workersHandler","freeze","_","promise","w","e","ref","array","object","number","string","true","false","null","buffer","view","symbol","date","bigint","undefined","regexp","error","SharedArrayBuffer","maxByteLength","crypto","randomUUID","Math","random","toString","substring","getPrototypeOf","s","isArray","n","Array","isView","a","ArrayBuffer","stringify","o","JSON","c","f","u","BYTES_PER_ELEMENT","byteOffset","globalThis","byteLength","resizable","Uint8Array","apply","subarray","Date","RegExp","source","flags","Error","stack","cause","toJSON","String","slice","keyFor","b","grow","Uint16Array","charCodeAt","DESTROY","createEncoder","encode","ui16a","encoder","ARRAY","BIGINT","BOOLEAN","FUNCTION","NULL","NUMBER","OBJECT","STRING","SYMBOL","UNDEFINED","toConstructorName","numeric","CHANNEL","MAIN","WORKER","nothing","buffers","WeakSet","add","create","ID","native","defaults","Int32Array","useUTF16","circular","proxied","ok","UID","notify","Atomics","Number","coincident$1","transform","checkTransferred","transfer","Worker","url","port1","channel","port2","MessageChannel","next","as","id","uid","wr","nextResolver","callbacks","resolving","proxy","cb","check","at","pop","transferred.get","postMessage","setTimeout","console","warn","clearTimeout","deadlock","addEventListener","data","stopImmediatePropagation","preventDefault","stop","onmessage","async","i32","transferred.set","DESTRUCT","symbols","Reflect","ownKeys","toSymbol","registry","FinalizationRegistry","onGarbageCollected","held","debug","nullHandler","hold","return","token","register","eventsHandler","WeakMap","defineProperty","listener","invoke","concat","__worker__","drop","ids","had","heap","proxies","onGC","toEntry","TYPE","fromEntry","numericTYPE","fn","deref","currentTarget","methods","method","handleEvent","WeakRef","for","fromSymbol","asEntry","asImport","import","globals","TRAP","descriptor","re","place","q","URL","href","tracking","esm","defaultEncoder","jsonEncoder","exports","coincident","original","minimal","minimalEncoder","main","location","terminate","io","stdio","localIO","buffered","stderr","stdout","log","engine","interpreter","decoder","TextDecoder","EOL","maybeUI8","decode","splice","require","run","code","Function","dummy","module","registerJSModule","runAsync","runEvent","writeFile","dedent","l","arguments","content","line","split","trim","test","replace","$1","es","unes","cape","m","tpl","unescape","un","defineProperties","$","absoluteURL","base","fixedRelative","nodeInfo","node","tag","tagName","dispatch","worker","CE","CustomEvent","bubbles","detail","createResolved","config","dropLine0","createOverload","before","after","js_modules","jsModules","JSModules","field","modules","registerJSModules","importJS","importCSS","onload","querySelector","head","append","createElement","rel","isCSS","pathname","isSync","element","getAttribute","RUNNING_IN_WORKER","window","FS","PATH","PATH_FS","absPath","dirPath","dirname","mkdirTree","canOwn","tree","join","current","branch","mkdir","cwd","joinPaths","parts","res","part","filter","fetchBuffer","baseURL","arrayBuffer","fetchPaths","config_fetch","files","to_file","from","endsWith","flatMap","to_folder","file","filename","lastIndexOf","calculateFetchPaths","fillName","dest","parseTemplate","src","SyntaxError","fetchFiles","config_files","targets","sourceDest","calculateFilesPaths","fetchJSModules","promises","createProgress","BigInt","indexOf","TypeError","parse","h","loader","loadProgress","self","progress","lazy_py_modules","packages","pyimport","storage","registerJsModule","getFormat","runPython","runPythonAsync","mip","TextEncoder","toml","text","syncfs","direction","err","initializeNativeFS","MEMFS","filesystems","nativeFSAsync","DIR_MODE","FILE_MODE","mount","opts","fileSystemHandle","populate","local","getLocalSet","remote","getRemoteSet","dst","reconcile","isRealDir","toAbsolute","join2","readdir","mountpoint","stat","isDir","mode","timestamp","mtime","handles","getFsHandles","handle","kind","getFile","lastModifiedDate","loadLocalEntry","lookupPath","isFile","contents","getFileDataAsTypedArray","storeLocalEntry","entry","chmod","utime","removeLocalEntry","rmdir","unlink","loadRemoteEntry","storeRemoteEntry","parentDirHandle","getFileHandle","basename","getDirectoryHandle","writable","createWritable","write","removeRemoteEntry","removeEntry","total","e2","getTime","sort","remove","reverse","relPath","normalize","NATIVEFS_ASYNC","follow_mount","isMountpoint","ensureMountPathExists","dirHandle","collect","curDirHandle","relativePath","micropython","version","loadMicroPython","linebuffer","py_imports","importPackages","mountNativeFS","_module","PyProxy","toJs","fs","format","extractDir","blob","Blob","BlobReader","Uint8ArrayWriter","ZipReader","zipReader","getEntries","directory","getData","TMP","mpyPackage","install","toJsOptions","dict_converter","fromEntries","FunctionPrototype","overrideMethod","pyproxy","to_js","override","intercept","patch","arg","shared","gcRegistered","indexURLs","pyodide","loadPyodide","index_urls","indexURL","save","packages_cache","lockFileURL","createObjectURL","setDebug","revokeObjectURL","experimental_create_proxy","toPy","unpackArchive","ffi","_log","rest","loadPackage","micropip","set_index_urls","keep_going","frozen","destroy","jsType","ruby_wasm_wasi","experimental","DefaultRubyVM","WebAssembly","compile","vm","eval","evalAsync","wrap","wasmoon","LuaFactory","LuaLibraries","createEngine","global","getTable","Base","index","setField","doStringSync","doString","cmodule","writeFileShim","shelter","output","captureR","webr","WebR","Shelter","evalRVoid","env","configs","selectors","prefixes","getConfigURLAndType","configURL","resolveConfig","absolute","json","parseString","getRuntime","getRuntimeID","toJSONCallback","isAsync","beforeRun","afterRun","js","resolved","polluteJS","patched","Hook$1","hooks","onWorker","jsHooks","codeHooks","xworker","serviceWorker","service_worker","isHook","Hook","resolver","bootstrap","ready","configurable","isError","INVALID_CONTENT","INVALID_SRC_ATTR","INVALID_WORKER_ATTR","workerURL","attributes","childElementCount","innerHTML","localName","textContent","queryTarget","script","idOrSelector","parent","parentNode","getRoot","getElementById","targetDescriptor","handled","interpreters","getValue","getDetails","runtime","details","XWorker","$xworker","closest","body","wn","sw","versionValue","configValue","workerName","targetValue","currentScript","done","execute","queueMicrotask","awaitInterpreter","available","ownerElement","el","addAllListeners","disabled","CUSTOM_SELECTORS","customObserver","types","waitList","handleCustomType","selector","matches","known","v","cfg","XW","custom","workerError","defaultRegistry","hook","structuredClone","suffix","beforeCB","afterCB","onReady","dontBotherCount","whenDefined","define","alreadyLive","stickyModule","$customObserver","dontBother","$whenDefined","$env","$Hook","$XWorker","mo","MutationObserver","records","attributeName","addedNodes","hasAttribute","nodeType","shouldHandle","observe","childList","subtree","attachShadow","Element"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,31,32,33,36,48]} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../node_modules/sticky-module/esm/index.js","../node_modules/basic-devtools/esm/index.js","../node_modules/@webreflection/fetch/esm/index.js","../node_modules/@webreflection/idb-map/index.js","../node_modules/@webreflection/idb-map/sync.js","../node_modules/@webreflection/utils/src/with-resolvers.js","../esm/workers.js","../node_modules/reflected-ffi/src/utils/traps.js","../node_modules/reflected-ffi/src/utils/symbol.js","../node_modules/reflected-ffi/src/utils/index.js","../node_modules/reflected-ffi/src/types.js","../node_modules/reflected-ffi/src/utils/global.js","../node_modules/reflected-ffi/src/utils/typed.js","../node_modules/reflected-ffi/src/utils/query.js","../node_modules/reflected-ffi/src/utils/gather.js","../node_modules/reflected-ffi/src/local.js","../node_modules/reflected-ffi/src/utils/heap.js","../node_modules/reflected-ffi/src/utils/events.js","../node_modules/reflected-ffi/src/direct/types.js","../node_modules/reflected-ffi/src/direct/array.js","../node_modules/reflected-ffi/src/utils/text.js","../node_modules/reflected-ffi/src/direct/views.js","../node_modules/reflected-ffi/src/direct/encoder.js","../node_modules/coincident/src/window/constants.js","../node_modules/next-resolver/index.js","../node_modules/coincident/src/transfer.js","../node_modules/@webreflection/utils/src/shared-array-buffer.js","../node_modules/coincident/src/utils.js","../node_modules/coincident/src/sabayon/index.js","../node_modules/coincident/src/sabayon/bid.js","../node_modules/coincident/src/main.js","../esm/worker/xworker.js","../node_modules/coincident/src/window/main.js","../esm/interpreter/_io.js","../esm/interpreter/dummy.js","../node_modules/codedent/esm/index.js","../node_modules/plain-tag/esm/index.js","../node_modules/html-escaper/esm/index.js","../esm/utils.js","../esm/interpreter/_utils.js","../node_modules/reflected-ffi/src/direct/decoder.js","../esm/interpreter/_python.js","../esm/python/mip.js","../esm/3rd-party.js","../esm/interpreter/_nativefs.js","../esm/interpreter/micropython.js","../esm/interpreter/pyodide.js","../esm/interpreter/ruby-wasm-wasi.js","../esm/interpreter/wasmoon.js","../esm/interpreter/webr.js","../esm/interpreters.js","../esm/loader.js","../node_modules/reflected-ffi/src/utils/to-json-callback.js","../esm/hooks.js","../esm/worker/hook.js","../esm/worker/class.js","../esm/errors.js","../esm/worker/url.js","../esm/script-handler.js","../esm/listeners.js","../esm/xworker.js","../esm/custom.js","../esm/index.js"],"sourcesContent":["/**\n * Allow leaking a module globally to help avoid conflicting exports\n * if the module might have been re-bundled in other projects.\n * @template T\n * @param {string} name the module name to save or retrieve\n * @param {T} value the module as value to save if not known\n * @param {globalThis} [global=globalThis] the reference where modules are saved where `globalThis` is the default\n * @returns {[T, boolean]} the passed `value` or the previous one as first entry, a boolean indicating if it was known or not\n */\nconst stickyModule = (name, value, global = globalThis) => {\n const symbol = Symbol.for(name);\n const known = symbol in global;\n return [\n known ?\n global[symbol] :\n Object.defineProperty(global, symbol, { value })[symbol],\n known\n ];\n};\n\nexport default stickyModule;\n","/**\n * Given a CSS selector, returns the first matching node, if any.\n * @param {string} css the CSS selector to query\n * @param {Document | DocumentFragment | Element} [root] the optional parent node to query\n * @returns {Element?} the found element, if any\n */\nconst $ = (css, root = document) => root.querySelector(css);\n\n/**\n * Given a CSS selector, returns a list of all matching nodes.\n * @param {string} css the CSS selector to query\n * @param {Document | DocumentFragment | Element} [root] the optional parent node to query\n * @returns {Element[]} a list of found nodes\n */\nconst $$ = (css, root = document) => [...root.querySelectorAll(css)];\n\n/**\n * Given a XPath selector, returns a list of all matching nodes.\n * @param {string} path the XPath selector to evaluate\n * @param {Document | DocumentFragment | Element} [root] the optional parent node to query\n * @returns {Node[]} a list of found nodes (elements, attributes, text, comments)\n */\nconst $x = (path, root = document) => {\n const expression = (new XPathEvaluator).createExpression(path);\n const xpath = expression.evaluate(root, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE);\n const result = [];\n for (let i = 0, {snapshotLength} = xpath; i < snapshotLength; i++)\n result.push(xpath.snapshotItem(i));\n return result;\n};\n\nexport {$, $$, $x};\n","// a bit terser code than I usually write but it's 10 LOC within 80 cols\n// if you are struggling to follow the code you can replace 1-char\n// references around with the following one, hoping that helps :-)\n\n// d => descriptors\n// k => key\n// p => promise\n// r => response\n\nconst d = Object.getOwnPropertyDescriptors(Response.prototype);\n\nconst isFunction = value => typeof value === 'function';\n\nconst bypass = (p, k, { get, value }) => get || !isFunction(value) ?\n p.then(r => r[k]) :\n (...args) => p.then(r => r[k](...args));\n\nconst direct = (p, value) => isFunction(value) ? value.bind(p) : value;\n\nconst handler = {\n get: (p, k) => d.hasOwnProperty(k) ? bypass(p, k, d[k]) : direct(p, p[k])\n};\n\n/**\n * @param {RequestInfo | URL} input\n * @param {...RequestInit} init\n * @returns {Promise<Response> & Response}\n */\nexport default (input, ...init) => new Proxy(fetch(input, ...init), handler);\n","const { assign } = Object;\n\nconst STORAGE = 'entries';\nconst READONLY = 'readonly';\nconst READWRITE = 'readwrite';\n\n/**\n * @typedef {Object} IDBMapOptions\n * @prop {'strict' | 'relaxed' | 'default'} [durability]\n * @prop {string} [prefix]\n */\n\n/** @typedef {[IDBValidKey, unknown]} IDBMapEntry */\n\n/** @type {IDBMapOptions} */\nconst defaultOptions = { durability: 'default', prefix: 'IDBMap' };\n\n/**\n * @template T\n * @param {{ target: IDBRequest<T> }} event\n * @returns {T}\n */\nconst result = ({ target: { result } }) => result;\n\nexport default class IDBMap extends EventTarget {\n // Privates\n /** @type {Promise<IDBDatabase>} */ #db;\n /** @type {IDBMapOptions} */ #options;\n /** @type {string} */ #prefix;\n\n /**\n * @template T\n * @param {(store: IDBObjectStore) => IDBRequest<T>} what\n * @param {'readonly' | 'readwrite'} how\n * @returns {Promise<T>}\n */\n async #transaction(what, how) {\n const db = await this.#db;\n const t = db.transaction(STORAGE, how, this.#options);\n return new Promise((onsuccess, onerror) => assign(\n what(t.objectStore(STORAGE)),\n {\n onsuccess,\n onerror,\n }\n ));\n }\n\n /**\n * @param {string} name\n * @param {IDBMapOptions} options\n */\n constructor(\n name,\n {\n durability = defaultOptions.durability,\n prefix = defaultOptions.prefix,\n } = defaultOptions\n ) {\n super();\n this.#prefix = prefix;\n this.#options = { durability };\n this.#db = new Promise((resolve, reject) => {\n assign(\n indexedDB.open(`${this.#prefix}/${name}`),\n {\n onupgradeneeded({ target: { result, transaction } }) {\n if (!result.objectStoreNames.length)\n result.createObjectStore(STORAGE);\n transaction.oncomplete = () => resolve(result);\n },\n onsuccess(event) {\n resolve(result(event));\n },\n onerror(event) {\n reject(event);\n this.dispatchEvent(event);\n },\n },\n );\n }).then(result => {\n const boundDispatch = this.dispatchEvent.bind(this);\n for (const key in result) {\n if (key.startsWith('on'))\n result[key] = boundDispatch;\n }\n return result;\n });\n }\n\n // EventTarget Forwards\n /**\n * @param {Event} event\n * @returns \n */\n dispatchEvent(event) {\n const { type, message, isTrusted } = event;\n return super.dispatchEvent(\n // avoid re-dispatching of the same event\n isTrusted ?\n assign(new Event(type), { message }) :\n event\n );\n }\n\n // IDBDatabase Forwards\n async close() {\n (await this.#db).close();\n }\n\n // Map async API\n get size() {\n return this.#transaction(\n store => store.count(),\n READONLY,\n ).then(result);\n }\n\n async clear() {\n await this.#transaction(\n store => store.clear(),\n READWRITE,\n );\n }\n\n /**\n * @param {IDBValidKey} key\n */\n async delete(key) {\n await this.#transaction(\n store => store.delete(key),\n READWRITE,\n );\n }\n\n /**\n * @returns {Promise<IDBMapEntry[]>}\n */\n async entries() {\n const keys = await this.keys();\n return Promise.all(keys.map(key => this.get(key).then(value => [key, value])));\n }\n\n /**\n * @param {(unknown, IDBValidKey, IDBMap) => void} callback\n * @param {unknown} [context]\n */\n async forEach(callback, context = this) {\n for (const [key, value] of await this.entries())\n await callback.call(context, value, key, this);\n }\n\n /**\n * @param {IDBValidKey} key\n * @returns {Promise<unknown | undefined>}\n */\n async get(key) {\n const value = await this.#transaction(\n store => store.get(key),\n READONLY,\n ).then(result);\n return value;\n }\n\n /**\n * @param {IDBValidKey} key\n */\n async has(key) {\n const k = await this.#transaction(\n store => store.getKey(key),\n READONLY,\n ).then(result);\n return k !== void 0;\n }\n\n async keys() {\n const keys = await this.#transaction(\n store => store.getAllKeys(),\n READONLY,\n ).then(result);\n return keys;\n }\n\n /**\n * @param {IDBValidKey} key\n * @param {unknown} value\n */\n async set(key, value) {\n await this.#transaction(\n store => store.put(value, key),\n READWRITE,\n );\n return this;\n }\n\n async values() {\n const keys = await this.keys();\n return Promise.all(keys.map(key => this.get(key)));\n }\n\n get [Symbol.toStringTag]() {\n return this.#prefix;\n }\n}\n","import IDBMap from './index.js';\n\nexport default class IDBMapSync extends Map {\n #map;\n #queue;\n constructor(...args) {\n super();\n this.#map = new IDBMap(...args);\n this.#queue = this.#map.entries().then(entries => {\n for (const [key, value] of entries)\n super.set(key, value);\n });\n }\n async close() {\n await this.#queue;\n await this.#map.close();\n }\n async sync() {\n await this.#queue;\n }\n clear() {\n this.#queue = this.#queue.then(() => this.#map.clear());\n return super.clear();\n }\n delete(key) {\n this.#queue = this.#queue.then(() => this.#map.delete(key));\n return super.delete(key);\n }\n set(key, value) {\n this.#queue = this.#queue.then(() => this.#map.set(key, value));\n return super.set(key, value);\n }\n}\n","//@ts-check\r\n\r\n/**\r\n * @template T\r\n * @typedef {{promise: Promise<T>, resolve: (value: T) => void, reject: (reason?: any) => void}} Resolvers\r\n */\r\n\r\n//@ts-ignore\r\nconst withResolvers = Promise.withResolvers;\r\n\r\n/**\r\n * @template T\r\n * @type {() => Resolvers<T>}\r\n */\r\nexport default withResolvers.bind(Promise);\r\n","import withResolvers from '@webreflection/utils/with-resolvers';\n\n// REQUIRES INTEGRATION TEST\n/* c8 ignore start */\nexport const workers = new Proxy(new Map, {\n get(map, name) {\n if (!map.has(name))\n map.set(name, withResolvers());\n return map.get(name);\n },\n});\n\n// filter out forever pending Promises in Pyodide\n// @issue https://github.com/pyscript/pyscript/issues/2106\nconst ignore = new Set(['__dict__', 'constructor', 'get', 'has', 'includes', 'next', 'set', 'then']);\n\nexport const workersHandler = new Proxy(Object.freeze({}), {\n // guard against forever pending Promises in Pyodide\n // @issue https://github.com/pyscript/pyscript/issues/2106\n get: (_, name) => (typeof name === 'string' && !ignore.has(name)) ?\n workers[name].promise.then(w => w.sync) :\n void 0,\n});\n/* c8 ignore stop */\n","let i = 0;\r\n\r\n// extras\r\nexport const UNREF = i++;\r\nexport const ASSIGN = i++;\r\nexport const EVALUATE = i++;\r\nexport const GATHER = i++;\r\nexport const QUERY = i++;\r\n\r\n// traps\r\nexport const APPLY = i++;\r\nexport const CONSTRUCT = i++;\r\nexport const DEFINE_PROPERTY = i++;\r\nexport const DELETE_PROPERTY = i++;\r\nexport const GET = i++;\r\nexport const GET_OWN_PROPERTY_DESCRIPTOR = i++;\r\nexport const GET_PROTOTYPE_OF = i++;\r\nexport const HAS = i++;\r\nexport const IS_EXTENSIBLE = i++;\r\nexport const OWN_KEYS = i++;\r\nexport const PREVENT_EXTENSIONS = i++;\r\nexport const SET = i++;\r\nexport const SET_PROTOTYPE_OF = i++;\r\n","/** @type {Map<symbol, string>} */\r\nconst symbols = new Map(\r\n Reflect.ownKeys(Symbol).map(\r\n key => [Symbol[key], `@${String(key)}`]\r\n )\r\n);\r\n\r\n/**\r\n * @param {symbol} value\r\n * @param {string} description\r\n * @returns {string}\r\n */\r\nconst asSymbol = (value, description) => (\r\n description === void 0 ? '?' :\r\n (Symbol.keyFor(value) === void 0 ? `!${description}` : `#${description}`)\r\n);\r\n\r\n/**\r\n * Extract the value from a pair of type and value.\r\n * @param {string} name\r\n * @returns {symbol}\r\n */\r\nexport const fromSymbol = name => {\r\n switch (name[0]) {\r\n case '@': return Symbol[name.slice(1)];\r\n case '#': return Symbol.for(name.slice(1));\r\n case '!': return Symbol(name.slice(1));\r\n default: return Symbol();\r\n }\r\n};\r\n\r\n/**\r\n * Create the name of a symbol.\r\n * @param {symbol} value\r\n * @returns {string}\r\n */\r\nexport const toSymbol = value => symbols.get(value) || asSymbol(value, value.description);\r\n","import {\r\n DIRECT,\r\n SYMBOL,\r\n} from '../types.js';\r\n\r\nimport { fromSymbol, toSymbol } from './symbol.js';\r\n\r\nexport const defineProperty = Object.defineProperty;\r\n\r\nexport const assign = Object.assign;\r\n\r\nexport const fromArray = Array.from;\r\n\r\nexport const isArray = Array.isArray;\r\n\r\nexport const isView = ArrayBuffer.isView;\r\n\r\n/**\r\n * A type/value pair.\r\n * @typedef {[number, any]} TypeValue\r\n */\r\n\r\n/**\r\n * Create a type/value pair.\r\n * @param {number} type\r\n * @param {any} value\r\n * @returns {TypeValue}\r\n */\r\nexport const tv = (type, value) => [type, value];\r\n\r\nexport const identity = value => value;\r\n\r\nexport const object = {};\r\n\r\n/**\r\n * Create a function that loops through an array and applies a function to each value.\r\n * @param {(value:any, cache?:Map<any, any>) => any} asValue\r\n * @returns\r\n */\r\nexport const loopValues = asValue => (\r\n /**\r\n * Loop through an array and apply a function to each value.\r\n * @param {any[]} arr\r\n * @param {Map} [cache]\r\n * @returns\r\n */\r\n (arr, cache = new Map) => {\r\n for (let i = 0, length = arr.length; i < length; i++)\r\n arr[i] = asValue(arr[i], cache);\r\n return arr;\r\n }\r\n);\r\n\r\n/**\r\n * Extract the value from a pair of type and value.\r\n * @param {TypeValue} pair\r\n * @returns {string|symbol}\r\n */\r\nexport const fromKey = ([type, value]) => type === DIRECT ? value : fromSymbol(value);\r\n\r\n/**\r\n * Associate a key with an optionally transformed value.\r\n * @param {string|symbol} value\r\n * @returns {TypeValue}\r\n */\r\nexport const toKey = value => typeof value === 'string' ?\r\n tv(DIRECT, value) : tv(SYMBOL, toSymbol(value))\r\n;\r\n\r\nconst MAX_ARGS = 0x7FFF;\r\n\r\n/**\r\n * @param {number[]} output\r\n * @param {Uint8Array} value \r\n */\r\nexport const push = (output, value) => {\r\n for (let $ = output.push, i = 0, length = value.length; i < length; i += MAX_ARGS)\r\n $.apply(output, value.subarray(i, i + MAX_ARGS));\r\n};\r\n","export const DIRECT = 0;\r\nexport const REMOTE = 1 << 0;\r\nexport const OBJECT = 1 << 1;\r\nexport const ARRAY = 1 << 2;\r\nexport const FUNCTION = 1 << 3;\r\nexport const SYMBOL = 1 << 4;\r\nexport const BIGINT = 1 << 5;\r\nexport const BUFFER = 1 << 6;\r\nexport const STRING = 1 << 7;\r\nexport const ERROR = (1 << 8) + ~REMOTE;\r\n\r\nexport const VIEW = BUFFER | ARRAY;\r\nexport const REMOTE_OBJECT = REMOTE | OBJECT;\r\nexport const REMOTE_ARRAY = REMOTE | ARRAY;\r\nexport const REMOTE_FUNCTION = REMOTE | FUNCTION;\r\n","import { object } from './index.js';\r\n\r\nconst { getPrototypeOf } = Object;\r\nconst { construct } = Reflect;\r\nconst { toStringTag } = Symbol;\r\nconst { toString } = object;\r\n\r\nexport const toName = (ref, name = toString.call(ref).slice(8, -1)) =>\r\n name in globalThis ? name : toName(getPrototypeOf(ref) || object);\r\n\r\nexport const toTag = (ref, name = ref[toStringTag]) =>\r\n name in globalThis ? name : toTag(construct(getPrototypeOf(ref.constructor),[0]));\r\n","import { toTag } from './global.js';\r\nimport { fromArray } from './index.js';\r\n\r\n/** @typedef {[ArrayBufferLike|number[], number]} BufferDetails */\r\n/** @typedef {[string, BufferDetails, number, number]} ViewDetails */\r\n\r\n/**\r\n * @param {number} length\r\n * @param {number} maxByteLength\r\n * @returns {ArrayBufferLike}\r\n */\r\nconst resizable = (length, maxByteLength) => new ArrayBuffer(length, { maxByteLength });\r\n\r\n/**\r\n * @param {BufferDetails} details \r\n * @param {boolean} direct\r\n * @returns {ArrayBufferLike}\r\n */\r\nexport const fromBuffer = ([value, maxByteLength], direct) => {\r\n const length = direct ? /** @type {ArrayBufferLike} */ (value).byteLength : /** @type {number[]} */ (value).length;\r\n if (direct) {\r\n if (maxByteLength) {\r\n const buffer = resizable(length, maxByteLength);\r\n new Uint8Array(buffer).set(new Uint8Array(/** @type {ArrayBufferLike} */ (value)));\r\n value = buffer;\r\n }\r\n }\r\n else {\r\n const buffer = maxByteLength ? resizable(length, maxByteLength) : new ArrayBuffer(length);\r\n new Uint8Array(buffer).set(/** @type {number[]} */ (value));\r\n value = buffer;\r\n }\r\n return /** @type {ArrayBufferLike} */ (value);\r\n};\r\n\r\n/**\r\n * @param {ViewDetails} details\r\n * @param {boolean} direct\r\n */\r\nexport const fromView = ([name, args, byteOffset, length], direct) => {\r\n const buffer = fromBuffer(args, direct);\r\n const Class = globalThis[name];\r\n return length ? new Class(buffer, byteOffset, length) : new Class(buffer, byteOffset);\r\n};\r\n\r\n/**\r\n * @param {ArrayBufferLike} value\r\n * @param {boolean} direct\r\n * @returns {BufferDetails}\r\n */\r\nexport const toBuffer = (value, direct) => [\r\n direct ? value : fromArray(new Uint8Array(value)),\r\n //@ts-ignore\r\n value.resizable ? value.maxByteLength : 0\r\n];\r\n\r\n/**\r\n * @param {ArrayBufferView} value\r\n * @param {boolean} direct\r\n * @returns {ViewDetails}\r\n */\r\nexport const toView = (value, direct) => {\r\n //@ts-ignore\r\n const { BYTES_PER_ELEMENT, byteOffset, buffer, length } = value;\r\n return [\r\n toTag(value),\r\n toBuffer(buffer, direct),\r\n byteOffset,\r\n length !== ((buffer.byteLength - byteOffset) / BYTES_PER_ELEMENT) ? length : 0,\r\n ];\r\n};\r\n","const brackets = /\\[('|\")?(.+?)\\1\\]/g;\r\n\r\nconst keys = (target, key) => target?.[key];\r\n\r\n/**\r\n * Parses the given path and returns the value at the given target.\r\n * @param {any} target\r\n * @param {string} path\r\n * @returns {any}\r\n */\r\nexport default (target, path) => path.replace(brackets, '.$2').split('.').reduce(keys, target);\r\n","import query from './query.js';\r\n\r\n/**\r\n * Parses each given path and returns each value at the given target.\r\n * @param {any} target\r\n * @param {...(string|symbol)[]} keys\r\n * @returns {any[]}\r\n */\r\nexport default (target, ...keys) => keys.map(asResult, target);\r\n\r\nfunction asResult(key) {\r\n return typeof key === 'string' ? query(this, key) : this[key];\r\n}\r\n","// import DEBUG from './utils/debug.js';\r\n\r\nimport {\r\n UNREF,\r\n ASSIGN,\r\n EVALUATE,\r\n GATHER,\r\n QUERY,\r\n\r\n APPLY,\r\n CONSTRUCT,\r\n DEFINE_PROPERTY,\r\n DELETE_PROPERTY,\r\n GET,\r\n GET_OWN_PROPERTY_DESCRIPTOR,\r\n GET_PROTOTYPE_OF,\r\n HAS,\r\n IS_EXTENSIBLE,\r\n OWN_KEYS,\r\n PREVENT_EXTENSIONS,\r\n SET,\r\n SET_PROTOTYPE_OF,\r\n} from './utils/traps.js';\r\n\r\nimport {\r\n DIRECT,\r\n OBJECT,\r\n ARRAY,\r\n FUNCTION,\r\n REMOTE,\r\n SYMBOL,\r\n BIGINT,\r\n VIEW,\r\n BUFFER,\r\n\r\n REMOTE_OBJECT,\r\n REMOTE_ARRAY,\r\n REMOTE_FUNCTION,\r\n} from './types.js';\r\n\r\nimport {\r\n fromSymbol,\r\n toSymbol,\r\n} from './utils/symbol.js';\r\n\r\nimport {\r\n toBuffer,\r\n toView,\r\n} from './utils/typed.js';\r\n\r\nimport {\r\n assign,\r\n isArray,\r\n isView,\r\n fromKey,\r\n toKey,\r\n identity,\r\n loopValues,\r\n object,\r\n tv,\r\n} from './utils/index.js';\r\n\r\nimport gather from './utils/gather.js';\r\nimport query from './utils/query.js';\r\n\r\nimport heap from './utils/heap.js';\r\n\r\nconst Node = globalThis.Node || class Node {};\r\n\r\nconst {\r\n apply,\r\n construct,\r\n defineProperty,\r\n deleteProperty,\r\n get,\r\n getOwnPropertyDescriptor,\r\n getPrototypeOf,\r\n has,\r\n isExtensible,\r\n ownKeys,\r\n preventExtensions,\r\n set,\r\n setPrototypeOf,\r\n} = Reflect;\r\n\r\n/**\r\n * @typedef {Object} LocalOptions Optional utilities used to orchestrate local <-> remote communication.\r\n * @property {Function} [reflect=identity] The function used to reflect operations via the remote receiver. Currently only `apply` and `unref` are supported.\r\n * @property {Function} [transform=identity] The function used to transform local values into simpler references that the remote side can understand.\r\n * @property {Function} [remote=identity] The function used to intercept remote invokes *before* these happen. Usable to sync `events` or do other tasks.\r\n * @property {Function} [module] The function used to import modules when remote asks to `import(...)` something.\r\n * @property {boolean} [buffer=false] Optionally allows direct buffer serialization breaking JSON compatibility.\r\n * @property {number} [timeout=-1] Optionally allows remote values to be cached when possible for a `timeout` milliseconds value. `-1` means no timeout.\r\n */\r\n\r\n/**\r\n * @param {LocalOptions} options\r\n * @returns\r\n */\r\nexport default ({\r\n reflect = identity,\r\n transform = identity,\r\n remote = identity,\r\n module = name => import(name),\r\n buffer = false,\r\n timeout = -1,\r\n} = object) => {\r\n // received values arrive via postMessage so are compatible\r\n // with the structured clone algorithm\r\n const fromValue = (value, cache = new Map) => {\r\n if (!isArray(value)) return value;\r\n const [t, v] = value;\r\n switch (t) {\r\n case OBJECT: {\r\n if (v === null) return globalThis;\r\n let cached = cache.get(value);\r\n if (!cached) {\r\n cached = v;\r\n cache.set(value, v);\r\n for (const k in v) v[k] = fromValue(v[k], cache);\r\n }\r\n return cached;\r\n }\r\n case ARRAY: {\r\n return cache.get(value) || (\r\n cache.set(value, v),\r\n fromValues(v, cache)\r\n );\r\n }\r\n case FUNCTION: {\r\n let wr = weakRefs.get(v), fn = wr?.deref();\r\n if (!fn) {\r\n /* c8 ignore start */\r\n if (wr) fr.unregister(wr);\r\n /* c8 ignore stop */\r\n fn = function (...args) {\r\n remote.apply(this, args);\r\n\r\n // values reflected asynchronously are not passed stringified\r\n // because it makes no sense to use Atomics and SharedArrayBuffer\r\n // to transfer these ... yet these must reflect the current state\r\n // on this local side of affairs.\r\n for (let i = 0, length = args.length; i < length; i++)\r\n args[i] = toValue(args[i]);\r\n\r\n const result = reflect(APPLY, v, toValue(this), args);\r\n /* c8 ignore start */\r\n return result instanceof Promise ? result.then(fromValue) : fromValue(result);\r\n /* c8 ignore stop */\r\n };\r\n wr = new WeakRef(fn);\r\n weakRefs.set(v, wr);\r\n fr.register(fn, v, wr);\r\n }\r\n return fn;\r\n }\r\n case SYMBOL: return fromSymbol(v);\r\n default: return (t & REMOTE) ? ref(v) : v;\r\n }\r\n };\r\n\r\n // OBJECT, DIRECT, VIEW, BUFFER, REMOTE_ARRAY, REMOTE_OBJECT, REMOTE_FUNCTION, SYMBOL, BIGINT\r\n /**\r\n * Converts values into TypeValue pairs when these\r\n * are not JSON compatible (symbol, bigint) or\r\n * local (functions, arrays, objects, globalThis).\r\n * @param {any} value the current value\r\n * @returns {any} the value as is or its TypeValue counterpart\r\n */\r\n const toValue = value => {\r\n switch (typeof value) {\r\n case 'object': {\r\n if (value === null) break;\r\n if (value === globalThis) return globalTarget;\r\n const $ = transform(value);\r\n return (hasDirect && direct.has($)) ?\r\n tv(DIRECT, $) : (\r\n isView($) ?\r\n tv(VIEW, toView($, buffer)) : (\r\n $ instanceof ArrayBuffer ?\r\n tv(BUFFER, toBuffer($, buffer)) :\r\n tv(isArray($) ? REMOTE_ARRAY : REMOTE_OBJECT, id($))\r\n )\r\n );\r\n }\r\n case 'function': return tv(REMOTE_FUNCTION, id(transform(value)));\r\n case 'symbol': return tv(SYMBOL, toSymbol(value));\r\n case 'bigint': return tv(BIGINT, value.toString());\r\n }\r\n return value;\r\n };\r\n\r\n const fromValues = loopValues(fromValue);\r\n const fromKeys = loopValues(fromKey);\r\n const toKeys = loopValues(toKey);\r\n\r\n const { clear, id, ref, unref } = heap();\r\n\r\n const arrayKey = /^(?:[0-9]+|length)$/;\r\n const memoize = -1 < timeout;\r\n const weakRefs = new Map;\r\n const globalTarget = tv(OBJECT, null);\r\n const fr = new FinalizationRegistry(v => {\r\n weakRefs.delete(v);\r\n reflect(UNREF, v);\r\n });\r\n\r\n let hasDirect = false, direct;\r\n\r\n return {\r\n assign,\r\n gather,\r\n query,\r\n\r\n /**\r\n * Alows local references to be passed directly to the remote receiver,\r\n * either as copy or serliazied values (it depends on the implementation).\r\n * @template {WeakKey} T\r\n * @param {T} value\r\n * @returns {T}\r\n */\r\n direct(value) {\r\n if (!hasDirect) {\r\n // if (DEBUG) console.debug('DIRECT');\r\n hasDirect = true;\r\n direct = new WeakSet;\r\n }\r\n direct.add(value);\r\n return value;\r\n },\r\n\r\n /**\r\n * Provide a portable API that just invokes the given callback with the given arguments.\r\n * @param {Function} callback\r\n * @param {...any} args\r\n * @returns {any}\r\n */\r\n evaluate: (callback, ...args) => apply(callback, null, args),\r\n\r\n /**\r\n * This callback reflects locally every remote call.\r\n * It accepts TypeValue pairs but it always returns a string\r\n * to make it possible to use Atomics and SharedArrayBuffer.\r\n * @param {number} method\r\n * @param {number?} uid\r\n * @param {...any} args\r\n * @returns\r\n */\r\n reflect(method, uid, ...args) {\r\n // if (DEBUG) console.debug(method === UNREF ? 'GC' : 'ROUNDTRIP');\r\n const isGlobal = uid === null;\r\n const target = isGlobal ? globalThis : ref(uid);\r\n // the order is by most common use cases\r\n switch (method) {\r\n case GET: {\r\n const key = fromKey(args[0]);\r\n const asModule = isGlobal && key === 'import';\r\n const value = asModule ? module : get(target, key);\r\n const result = toValue(value);\r\n if (!memoize) return result;\r\n let cache = asModule, t = target, d;\r\n if (!asModule && !(\r\n // avoid caching DOM related stuff (all accessors)\r\n (t instanceof Node) ||\r\n // avoid also caching Array length or index accessors\r\n (isArray(t) && typeof key === 'string' && arrayKey.test(key))\r\n )) {\r\n // cache unknown properties but ...\r\n if (key in target) {\r\n // ... avoid caching accessors!\r\n while (!(d = getOwnPropertyDescriptor(t, key))) {\r\n t = getPrototypeOf(t);\r\n /* c8 ignore start */\r\n // this is an emergency case for \"unknown\" values\r\n if (!t) break;\r\n /* c8 ignore stop */\r\n }\r\n cache = !!d && 'value' in d;\r\n }\r\n // accessing non existent properties could be repeated\r\n // for no reason whatsoever and it gets removed once\r\n // the property is eventually set so ...\r\n else cache = true;\r\n }\r\n return [cache, result];\r\n }\r\n case APPLY: {\r\n const map = new Map;\r\n return toValue(apply(target, fromValue(args[0], map), fromValues(args[1], map)));\r\n }\r\n case SET: return set(target, fromKey(args[0]), fromValue(args[1]));\r\n case HAS: return has(target, fromKey(args[0]));\r\n case OWN_KEYS: return toKeys(ownKeys(target), weakRefs);\r\n case CONSTRUCT: return toValue(construct(target, fromValues(args[0])));\r\n case GET_OWN_PROPERTY_DESCRIPTOR: {\r\n const descriptor = getOwnPropertyDescriptor(target, fromKey(args[0]));\r\n if (descriptor) {\r\n for (const k in descriptor)\r\n descriptor[k] = toValue(descriptor[k]);\r\n }\r\n return descriptor;\r\n }\r\n case DEFINE_PROPERTY: return defineProperty(target, fromKey(args[0]), fromValue(args[1]));\r\n case DELETE_PROPERTY: return deleteProperty(target, fromKey(args[0]));\r\n case GET_PROTOTYPE_OF: return toValue(getPrototypeOf(target));\r\n case SET_PROTOTYPE_OF: return setPrototypeOf(target, fromValue(args[0]));\r\n case ASSIGN: {\r\n assign(target, fromValue(args[0]));\r\n return;\r\n }\r\n case EVALUATE: {\r\n const body = fromValue(args[0]);\r\n const fn = Function(`return(${body}).apply(null,arguments)`);\r\n return toValue(apply(fn, null, fromValues(args[1])));\r\n }\r\n case GATHER: {\r\n args = fromKeys(args[0], weakRefs);\r\n for (let k, i = 0, length = args.length; i < length; i++) {\r\n k = args[i];\r\n args[i] = toValue(typeof k === 'string' ? query(target, k) : target[k]);\r\n }\r\n return args;\r\n }\r\n case QUERY: return toValue(query(target, args[0]));\r\n case UNREF: return unref(uid);\r\n case IS_EXTENSIBLE: return isExtensible(target);\r\n case PREVENT_EXTENSIONS: return preventExtensions(target);\r\n }\r\n },\r\n\r\n /**\r\n * Terminates the local side of the communication,\r\n * erasing and unregistering all the cached references.\r\n */\r\n terminate() {\r\n for (const wr of weakRefs.values()) fr.unregister(wr);\r\n weakRefs.clear();\r\n clear();\r\n },\r\n };\r\n};\r\n","/**\r\n * @template T\r\n * @typedef {Object} Heap\r\n * @property {() => void} clear\r\n * @property {(ref:T) => number} id\r\n * @property {(id:number) => T} ref\r\n * @property {(id:number) => boolean} unref\r\n */\r\n\r\n/**\r\n * Create a heap-like utility to hold references in memory.\r\n * @param {number} [id=0] The initial `id` which is `0` by default.\r\n * @param {Map<number, any>} [ids=new Map] The used map of ids to references.\r\n * @param {Map<any, number>} [refs=new Map] The used map of references to ids.\r\n * @returns {Heap<any>}\r\n */\r\nexport default (id = 0, ids = new Map, refs = new Map) => ({\r\n clear: () => {\r\n ids.clear();\r\n refs.clear();\r\n },\r\n id: ref => {\r\n let uid = refs.get(ref);\r\n if (uid === void 0) {\r\n /* c8 ignore next */\r\n while (ids.has(uid = id++));\r\n ids.set(uid, ref);\r\n refs.set(ref, uid);\r\n }\r\n return uid;\r\n },\r\n ref: id => ids.get(id),\r\n unref: id => {\r\n refs.delete(ids.get(id));\r\n return ids.delete(id);\r\n },\r\n});\r\n","// This is an optional utility that needs to patch `addEventListener`.\r\n// Its `default` return value can be used as `remote` field when\r\n// the `local({ remote: ... })` is invoked.\r\n\r\nconst { addEventListener } = EventTarget.prototype;\r\nconst eventsHandler = new WeakMap;\r\nReflect.defineProperty(EventTarget.prototype, 'addEventListener', {\r\n /**\r\n * Intercepts `options` with an `invoke` field that could contain\r\n * `preventDefault`, `stopPropagation` or `stopImmediatePropagation`\r\n * strings so that when the event will be triggered locally,\r\n * the remote side can still enforce one of those operations, even if\r\n * invoked asynchronously (those calls will happen on the local thread).\r\n * \r\n * @param {string} type\r\n * @param {EventListenerOrEventListenerObject?} callback\r\n * @param {AddEventListenerOptions & { invoke?: string|string[]} | boolean} options\r\n * @returns {void}\r\n */\r\n value(type, callback, options) {\r\n //@ts-ignore\r\n const invoke = options?.invoke;\r\n if (invoke) {\r\n let map = eventsHandler.get(this);\r\n if (!map) eventsHandler.set(this, (map = new Map));\r\n map.set(type, [].concat(invoke));\r\n //@ts-ignore\r\n delete options.invoke;\r\n }\r\n return addEventListener.apply(this, arguments);\r\n },\r\n});\r\n\r\n/**\r\n * This utility is used to perform `preventDefault` or `stopPropagation`\r\n * on events that are triggered via functions defined on the remote side.\r\n * It is meant to be passed as `remote`, or as part of `remote` field when\r\n * the `local({ remote: ... })` is invoked, meaning it happens right before\r\n * the *remote* event handler is requested to be called.\r\n * @param {Event} event\r\n */\r\nexport default event => {\r\n const { currentTarget, target, type } = event;\r\n const methods = eventsHandler.get(currentTarget || target)?.get(type);\r\n if (methods) for (const method of methods) event[method]();\r\n};\r\n","let i = 0;\r\n\r\nexport const FALSE = i++;\r\nexport const TRUE = i++;\r\n\r\nexport const UNDEFINED = i++;\r\nexport const NULL = i++;\r\n\r\nexport const NUMBER = i++;\r\nexport const UI8 = i++;\r\nexport const NAN = i++;\r\nexport const INFINITY = i++;\r\nexport const N_INFINITY = i++;\r\nexport const ZERO = i++;\r\nexport const N_ZERO = i++;\r\n\r\nexport const BIGINT = i++;\r\nexport const BIGUINT = i++;\r\n\r\nexport const STRING = i++;\r\n\r\nexport const SYMBOL = i++;\r\n\r\nexport const ARRAY = i++;\r\nexport const BUFFER = i++;\r\nexport const DATE = i++;\r\nexport const ERROR = i++;\r\nexport const MAP = i++;\r\nexport const OBJECT = i++;\r\nexport const REGEXP = i++;\r\nexport const SET = i++;\r\nexport const VIEW = i++;\r\n\r\nexport const RECURSION = i++;\r\n","// This is an Array facade for the encoder.\r\n\r\nexport default class Stack {\r\n /**\r\n * @param {Stack} self\r\n * @param {Uint8Array} value\r\n */\r\n static push(self, value) {\r\n self.sync(false);\r\n self._(value, value.length);\r\n }\r\n\r\n /**\r\n * @param {ArrayBufferLike} buffer\r\n * @param {number} offset\r\n */\r\n constructor(buffer, offset) {\r\n /** @type {number[]} */\r\n const output = [];\r\n\r\n /** @private length */\r\n this.l = 0;\r\n\r\n /** @private output */\r\n this.o = output;\r\n\r\n /** @private view */\r\n this.v = new Uint8Array(buffer, offset);\r\n\r\n /** @type {typeof Array.prototype.push} */\r\n this.push = output.push.bind(output);\r\n }\r\n\r\n /**\r\n * @readonly\r\n * @type {number}\r\n */\r\n get length() {\r\n return this.l + this.o.length;\r\n }\r\n\r\n /**\r\n * Sync all entries in the output to the buffer.\r\n * @param {boolean} last `true` if it's the last sync.\r\n */\r\n sync(last) {\r\n const output = this.o;\r\n const length = output.length;\r\n if (length) this._(last ? output : output.splice(0), length);\r\n }\r\n\r\n /**\r\n * Set a value to the buffer\r\n * @private\r\n * @param {Uint8Array|number[]} value\r\n * @param {number} byteLength\r\n */\r\n _(value, byteLength) {\r\n const { buffer, byteOffset } = this.v;\r\n const offset = this.l;\r\n this.l += byteLength;\r\n byteLength += byteOffset + offset;\r\n if (buffer.byteLength < byteLength)\r\n /** @type {SharedArrayBuffer} */(buffer).grow(byteLength);\r\n this.v.set(value, offset);\r\n }\r\n}\r\n","export const decoder = new TextDecoder;\r\n\r\nexport const encoder = new TextEncoder;\r\n","const buffer = new ArrayBuffer(8);\r\nexport const dv = new DataView(buffer);\r\nexport const u8a8 = new Uint8Array(buffer);\r\n","//@ts-check\r\n\r\nimport {\r\n FALSE,\r\n TRUE,\r\n\r\n UNDEFINED,\r\n NULL,\r\n\r\n NUMBER,\r\n UI8,\r\n NAN,\r\n INFINITY,\r\n N_INFINITY,\r\n ZERO,\r\n N_ZERO,\r\n\r\n BIGINT,\r\n BIGUINT,\r\n STRING,\r\n SYMBOL,\r\n\r\n ARRAY,\r\n BUFFER,\r\n DATE,\r\n ERROR,\r\n MAP,\r\n OBJECT,\r\n REGEXP,\r\n SET,\r\n VIEW,\r\n\r\n RECURSION,\r\n} from './types.js';\r\n\r\nimport Stack from './array.js';\r\nimport { isArray, isView, push } from '../utils/index.js';\r\nimport { encoder as textEncoder } from '../utils/text.js';\r\nimport { toSymbol } from '../utils/symbol.js';\r\nimport { dv, u8a8 } from './views.js';\r\nimport { toTag } from '../utils/global.js';\r\n\r\n/** @typedef {Map<number, number[]>} Cache */\r\n\r\nconst { isNaN, isFinite, isInteger } = Number;\r\nconst { ownKeys } = Reflect;\r\nconst { is } = Object;\r\n\r\n/**\r\n * @param {any} input\r\n * @param {number[]|Stack} output\r\n * @param {Cache} cache\r\n * @returns {boolean}\r\n */\r\nconst process = (input, output, cache) => {\r\n const value = cache.get(input);\r\n const unknown = !value;\r\n if (unknown) {\r\n dv.setUint32(0, output.length, true);\r\n cache.set(input, [u8a8[0], u8a8[1], u8a8[2], u8a8[3]]);\r\n }\r\n else\r\n output.push(RECURSION, value[0], value[1], value[2], value[3]);\r\n return unknown;\r\n};\r\n\r\n/**\r\n * @param {number[]|Stack} output\r\n * @param {number} type\r\n * @param {number} length\r\n */\r\nconst set = (output, type, length) => {\r\n dv.setUint32(0, length, true);\r\n output.push(type, u8a8[0], u8a8[1], u8a8[2], u8a8[3]);\r\n};\r\n\r\n/**\r\n * @param {any} input\r\n * @param {number[]|Stack} output\r\n * @param {Cache} cache\r\n */\r\nconst inflate = (input, output, cache) => {\r\n switch (typeof input) {\r\n case 'number': {\r\n if (input && isFinite(input)) {\r\n if (isInteger(input) && input < 256 && -1 < input)\r\n output.push(UI8, input);\r\n else {\r\n dv.setFloat64(0, input, true);\r\n output.push(NUMBER, u8a8[0], u8a8[1], u8a8[2], u8a8[3], u8a8[4], u8a8[5], u8a8[6], u8a8[7]);\r\n }\r\n }\r\n else if (isNaN(input)) output.push(NAN);\r\n else if (!input) output.push(is(input, 0) ? ZERO : N_ZERO);\r\n else output.push(input < 0 ? N_INFINITY : INFINITY);\r\n break;\r\n }\r\n case 'object': {\r\n switch (true) {\r\n case input === null:\r\n output.push(NULL);\r\n break;\r\n case !process(input, output, cache): break;\r\n case isArray(input): {\r\n const length = input.length;\r\n set(output, ARRAY, length);\r\n for (let i = 0; i < length; i++)\r\n inflate(input[i], output, cache);\r\n break;\r\n }\r\n case isView(input): {\r\n output.push(VIEW);\r\n inflate(toTag(input), output, cache);\r\n input = input.buffer;\r\n if (!process(input, output, cache)) break;\r\n // fallthrough\r\n }\r\n case input instanceof ArrayBuffer: {\r\n const ui8a = new Uint8Array(input);\r\n set(output, BUFFER, ui8a.length);\r\n //@ts-ignore\r\n pushView(output, ui8a);\r\n break;\r\n }\r\n case input instanceof Date:\r\n output.push(DATE);\r\n inflate(input.getTime(), output, cache);\r\n break;\r\n case input instanceof Map: {\r\n set(output, MAP, input.size);\r\n for (const [key, value] of input) {\r\n inflate(key, output, cache);\r\n inflate(value, output, cache);\r\n }\r\n break;\r\n }\r\n case input instanceof Set: {\r\n set(output, SET, input.size);\r\n for (const value of input)\r\n inflate(value, output, cache);\r\n break;\r\n }\r\n case input instanceof Error:\r\n output.push(ERROR);\r\n inflate(input.name, output, cache);\r\n inflate(input.message, output, cache);\r\n inflate(input.stack, output, cache);\r\n break;\r\n case input instanceof RegExp:\r\n output.push(REGEXP);\r\n inflate(input.source, output, cache);\r\n inflate(input.flags, output, cache);\r\n break;\r\n default: {\r\n if ('toJSON' in input) {\r\n const json = input.toJSON();\r\n inflate(json === input ? null : json, output, cache);\r\n }\r\n else {\r\n const keys = ownKeys(input);\r\n const length = keys.length;\r\n set(output, OBJECT, length);\r\n for (let i = 0; i < length; i++) {\r\n const key = keys[i];\r\n inflate(key, output, cache);\r\n inflate(input[key], output, cache);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n case 'string': {\r\n if (process(input, output, cache)) {\r\n const encoded = textEncoder.encode(input);\r\n set(output, STRING, encoded.length);\r\n //@ts-ignore\r\n pushView(output, encoded);\r\n }\r\n break;\r\n }\r\n case 'boolean': {\r\n output.push(input ? TRUE : FALSE);\r\n break;\r\n }\r\n case 'symbol': {\r\n output.push(SYMBOL);\r\n inflate(toSymbol(input), output, cache);\r\n break;\r\n }\r\n case 'bigint': {\r\n let type = BIGINT;\r\n if (9223372036854775807n < input) {\r\n dv.setBigUint64(0, input, true);\r\n type = BIGUINT;\r\n }\r\n else dv.setBigInt64(0, input, true);\r\n output.push(type, u8a8[0], u8a8[1], u8a8[2], u8a8[3], u8a8[4], u8a8[5], u8a8[6], u8a8[7]);\r\n break;\r\n }\r\n // this covers functions too\r\n default: {\r\n output.push(UNDEFINED);\r\n break;\r\n }\r\n }\r\n};\r\n\r\n/** @type {typeof push|typeof Stack.push} */\r\nlet pushView = push;\r\n\r\n/**\r\n * @param {any} value\r\n * @returns {number[]}\r\n */\r\nexport const encode = value => {\r\n const output = [];\r\n pushView = push;\r\n inflate(value, output, new Map);\r\n return output;\r\n};\r\n\r\n/**\r\n * @param {{ byteOffset?: number, Array?: typeof Stack }} [options]\r\n * @returns {(value: any, buffer: ArrayBufferLike) => number}\r\n */\r\nexport const encoder = ({ byteOffset = 0, Array = Stack } = {}) => (value, buffer) => {\r\n const output = new Array(buffer, byteOffset);\r\n pushView = Array.push;\r\n inflate(value, output, new Map);\r\n const length = output.length;\r\n output.sync(true);\r\n return length;\r\n};\r\n","// ⚠️ AUTOMATICALLY GENERATED - DO NOT CHANGE\nconst CHANNEL = '677caa6a';\nexport const MAIN = '=' + CHANNEL;\nexport const WORKER = '-' + CHANNEL;\n","//@ts-check\r\n\r\nimport withResolvers from '@webreflection/utils/with-resolvers';\r\n\r\n/**\r\n * @template V\r\n * @callback Resolve\r\n * @param {V?} [value]\r\n * @returns {void}\r\n */\r\n\r\n/**\r\n * @callback Reject\r\n * @param {any?} [error]\r\n * @returns {void}\r\n */\r\n\r\n/**\r\n * @template V\r\n * @typedef {object} Resolvers\r\n * @prop {Promise<V>} promise\r\n * @prop {Resolve<V>} resolve\r\n * @prop {Reject} reject\r\n */\r\n\r\n/**\r\n * @template K,V\r\n * @typedef {() => [K, Promise<V>]} Next\r\n */\r\n\r\n/**\r\n * @template K,V\r\n * @callback Resolver\r\n * @param {K} uid\r\n * @param {V?} [value]\r\n * @param {any?} [error]\r\n */\r\n\r\n/**\r\n * @template K,V\r\n * @typedef {[Next<K,V>, Resolver<K,V>]} NextResolver\r\n */\r\n\r\n/**\r\n * @template K,V\r\n * @param {(id: number) => K} [as]\r\n * @returns\r\n */\r\nexport default (as = (id => /** @type {K} */(id))) => {\r\n /** @type {Map<K,Resolvers<V>>} */\r\n const map = new Map;\r\n let id = 0;\r\n return /** @type {NextResolver<K,V>} */([\r\n /** @type {Next<K,V>} */\r\n () => {\r\n let uid;\r\n do { uid = as(id++) }\r\n while (map.has(uid));\r\n const wr = /** @type {Resolvers<V>} */(/** @type {unknown} */(withResolvers()));\r\n map.set(uid, wr);\r\n return [uid, wr.promise];\r\n },\r\n /** @type {Resolver<K,V>} */\r\n (uid, value, error) => {\r\n const wr = map.get(uid);\r\n map.delete(uid);\r\n if (error) wr?.reject(error);\r\n else wr?.resolve(value);\r\n },\r\n ]);\r\n};\r\n","//@ts-check\r\n\r\n/** @type {ArrayBuffer[]} */\r\nconst nothing = [];\r\n\r\n/** @type {WeakSet<ArrayBuffer[]>} */\r\nconst buffers = new WeakSet;\r\n\r\n/**\r\n * @param {boolean} check\r\n * @param {any[]} args\r\n * @returns\r\n */\r\nexport const get = (check, args) => {\r\n let transfer = nothing;\r\n if (check && buffers.has(args.at(-1) || nothing)) {\r\n transfer = args.pop();\r\n buffers.delete(transfer);\r\n }\r\n return transfer;\r\n};\r\n\r\n/**\r\n * @param {...ArrayBuffer} args\r\n * @returns\r\n */\r\nexport const set = (...args) => {\r\n buffers.add(args);\r\n return args;\r\n};\r\n","//@ts-check\r\n\r\nlet { SharedArrayBuffer: SAB } = globalThis, native = true;\r\n\r\ntry {\r\n //@ts-ignore due valid options not recognized\r\n new SAB(4, { maxByteLength: 8 });\r\n}\r\ncatch (_) {\r\n native = false;\r\n SAB = /** @type {SharedArrayBufferConstructor} */(\r\n /** @type {unknown} */(\r\n class SharedArrayBuffer extends ArrayBuffer {\r\n get growable() {\r\n //@ts-ignore due valid property not recognized\r\n return super.resizable;\r\n }\r\n /** @param {number} newLength */\r\n grow(newLength) {\r\n //@ts-ignore due valid method not recognized\r\n super.resize(newLength);\r\n }\r\n }\r\n )\r\n );\r\n}\r\n\r\nexport { SAB as SharedArrayBuffer, native };\r\n","import { native } from '@webreflection/utils/shared-array-buffer';\r\n\r\nconst {\r\n assign,\r\n create,\r\n} = Object;\r\n\r\n/* c8 ignore start */\r\nconst ID = `coincident-${native ? crypto.randomUUID() : Math.random().toString(36).substring(2)}`;\r\n/* c8 ignore end */\r\n\r\nconst byteOffset = 2 * Int32Array.BYTES_PER_ELEMENT;\r\nconst minByteLength = 0x7FFF; // throws at 0xFFFF via .apply(...)\r\nconst maxByteLength = 0x1000000;\r\n\r\nconst defaults = {\r\n // ⚠️ mandatory: first int32 to notify, second one to store the written length\r\n byteOffset,\r\n};\r\n\r\nconst result = async (data, proxied, transform) => {\r\n try {\r\n const result = await proxied[data[1]].apply(null, data[2]);\r\n data[1] = transform ? transform(result) : result;\r\n data[2] = null;\r\n }\r\n catch (error) { data[2] = error }\r\n};\r\n\r\nconst set = (proxied, name, callback) => {\r\n const ok = name !== 'then';\r\n if (ok) proxied[name] = callback;\r\n return ok;\r\n};\r\n\r\n/** @param {Event} event */\r\nconst stop = event => {\r\n event.stopImmediatePropagation();\r\n event.preventDefault();\r\n};\r\n\r\nexport const ffi_timeout = (options, fallback = -1) => (\r\n options?.reflected_ffi_timeout ?? fallback\r\n);\r\n\r\nexport {\r\n ID,\r\n assign,\r\n create,\r\n defaults,\r\n maxByteLength,\r\n minByteLength,\r\n native,\r\n result,\r\n set,\r\n stop,\r\n};\r\n","import BROADCAST_CHANNEL_UID from './bid.js';\r\n\r\nimport { SharedArrayBuffer as SAB, native } from '@webreflection/utils/shared-array-buffer';\r\nimport withResolvers from '@webreflection/utils/with-resolvers';\r\nimport nextResolver from 'next-resolver';\r\nimport { ID, stop } from '../utils.js';\r\n\r\nconst { defineProperty } = Object;\r\n\r\nconst [next, resolve] = nextResolver();\r\nlet [bootstrap, promise] = next();\r\n\r\n/**\r\n * @callback sabayon\r\n * @param {string|URL} [serviceWorkerURL] - The URL of the service worker to register on the main thread.\r\n * @returns {Promise<void>} - A promise that resolves when the polyfill is ready.\r\n */\r\n\r\nlet register = /** @type {sabayon} */(() => promise);\r\n\r\nlet track = () => {};\r\n\r\nlet {\r\n Atomics,\r\n MessageChannel,\r\n MessagePort,\r\n SharedArrayBuffer,\r\n Worker,\r\n postMessage,\r\n} = globalThis;\r\n\r\nif (native) resolve(bootstrap);\r\nelse {\r\n SharedArrayBuffer = SAB;\r\n\r\n const views = new Map;\r\n\r\n const addListener = (target, ...args) => {\r\n target.addEventListener(...args);\r\n };\r\n\r\n // Web Worker\r\n if ('importScripts' in globalThis) {\r\n track = view => {\r\n views.set(view, null);\r\n };\r\n\r\n const transform = data => {\r\n const view = data[0];\r\n const id = ids++;\r\n views.set(view, id);\r\n return [id, view, data];\r\n };\r\n\r\n const _postMessage = postMessage;\r\n postMessage = function $postMessage(data, transfer) {\r\n if (ready) {\r\n const details = { ID: data.ID, data: transform(data.data) };\r\n _postMessage(details, transfer);\r\n }\r\n else promise.then(() => this.postMessage(data, transfer));\r\n }\r\n\r\n MessagePort = class extends MessagePort {\r\n postMessage(data, transfer) {\r\n if (ready) super.postMessage(transform(data), transfer);\r\n else promise.then(() => this.postMessage(data, transfer));\r\n }\r\n }\r\n\r\n addListener(\r\n globalThis,\r\n 'message',\r\n event => {\r\n stop(event);\r\n resolve(bootstrap, event.data);\r\n },\r\n { once: true }\r\n );\r\n\r\n // <Atomics Patch>\r\n const { wait } = Atomics;\r\n const { parse } = JSON;\r\n\r\n const Request = view => {\r\n const xhr = new XMLHttpRequest;\r\n xhr.open('POST', `${SW}?sabayon`, false);\r\n xhr.setRequestHeader('Content-Type', 'application/json');\r\n xhr.send(`[\"${UID}\",${views.get(view)}]`);\r\n return xhr;\r\n };\r\n\r\n const Response = (view, xhr) => {\r\n view.set(parse(xhr.responseText));\r\n return 'ok';\r\n };\r\n\r\n Atomics = {\r\n wait: (view, ..._) => views.has(view) ?\r\n Response(view, Request(view)) :\r\n wait(view, ..._)\r\n ,\r\n };\r\n\r\n let UID, SW, ready = false, ids = Math.random();\r\n\r\n promise = promise.then(data => {\r\n [UID, SW] = data;\r\n ready = true;\r\n });\r\n }\r\n // Main\r\n else {\r\n const UID = [ID, Math.random()].join('-').replace(/\\W/g, '-');\r\n\r\n const bc = new BroadcastChannel(BROADCAST_CHANNEL_UID);\r\n bc.onmessage = async event => {\r\n const [swid, wid, vid] = event.data;\r\n if (wid === UID) {\r\n for (const [view, [id, wr]] of views) {\r\n if (id === vid) {\r\n await wr.promise;\r\n let length = view.length;\r\n while (length-- && !view[length]);\r\n bc.postMessage([swid, view.slice(0, length + 1)]);\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n\r\n const intercept = event => {\r\n const [id, view, value] = event.data;\r\n views.set(view, [id, withResolvers()]);\r\n defineProperty(event, 'data', { value });\r\n };\r\n\r\n MessageChannel = class extends MessageChannel {\r\n constructor() {\r\n super();\r\n addListener(this.port1, 'message', intercept);\r\n }\r\n };\r\n\r\n Worker = class extends Worker {\r\n /**\r\n * @param {string | URL} scriptURL \r\n * @param {WorkerOptions} options \r\n */\r\n constructor(scriptURL, options) {\r\n super(scriptURL, options);\r\n super.postMessage([UID, SW]);\r\n }\r\n };\r\n\r\n const { notify } = Atomics;\r\n Atomics = {\r\n notify(view, ..._) {\r\n const details = views.get(view);\r\n if (details) {\r\n details[1].resolve();\r\n return 0;\r\n }\r\n // this will throw with a proper error\r\n return notify(view, ..._);\r\n },\r\n };\r\n\r\n let SW = '';\r\n let serviceWorker = null;\r\n\r\n /**\r\n * @param {ServiceWorkerContainer} swc\r\n * @param {RegistrationOptions} [options]\r\n */\r\n const activate = (swc, options) => {\r\n let w, c = true;\r\n swc.getRegistration(SW)\r\n .then(r => (r ?? swc.register(SW, options)))\r\n .then(function ready(r) {\r\n const { controller } = swc;\r\n c = c && !!controller;\r\n w = (r.installing || r.waiting || r.active);\r\n if (w.state === 'activated') {\r\n if (c) {\r\n // allow ServiceWorker swap on different URL\r\n if (controller.scriptURL === SW)\r\n return resolve(bootstrap);\r\n r.unregister();\r\n }\r\n location.reload();\r\n }\r\n else {\r\n addListener(w, 'statechange', () => ready(r), { once: true });\r\n }\r\n });\r\n };\r\n\r\n register = /** @type {sabayon} */((serviceWorkerURL, options) => {\r\n if (!serviceWorker) {\r\n // resolve the fully qualified URL for Blob based workers\r\n SW = new URL(serviceWorkerURL, location.href).href;\r\n activate(navigator.serviceWorker, options);\r\n serviceWorker = promise;\r\n }\r\n return serviceWorker;\r\n });\r\n }\r\n}\r\n\r\nexport {\r\n Atomics,\r\n MessageChannel,\r\n MessagePort,\r\n SharedArrayBuffer,\r\n Worker,\r\n postMessage,\r\n register,\r\n track,\r\n};\r\n","// ⚠️ AUTOMATED ⚠️\r\nexport default 'dc78209b-186c-4f83-80e9-406becb7d9f3';\r\n","import { MAIN, WORKER } from './window/constants.js';\r\n\r\nimport nextResolver from 'next-resolver';\r\n\r\nimport { encoder } from 'reflected-ffi/encoder';\r\n\r\nimport * as transferred from './transfer.js';\r\n\r\nimport * as sabayon from './sabayon/index.js';\r\n\r\nimport {\r\n ID,\r\n assign,\r\n create,\r\n defaults,\r\n native,\r\n result,\r\n set,\r\n stop,\r\n ffi_timeout,\r\n} from './utils.js';\r\n\r\n// @bug https://bugzilla.mozilla.org/show_bug.cgi?id=1956778\r\n// Note: InstallTrigger is deprecated so once it's gone I do hope\r\n// this workaround would be gone too!\r\nconst UID = 'InstallTrigger' in globalThis ? ID : '';\r\n\r\nconst Number = value => value;\r\n\r\nconst info = name => {\r\n if (name === MAIN) return 'main';\r\n if (name === WORKER) return 'worker';\r\n return name;\r\n};\r\n\r\n// @bug https://bugzilla.mozilla.org/show_bug.cgi?id=1956778\r\nclass MessageEvent extends Event {\r\n #data;\r\n constructor(data) {\r\n super('message');\r\n this.#data = data;\r\n }\r\n get data() {\r\n return this.#data;\r\n }\r\n}\r\n\r\nexport default options => {\r\n const transform = options?.transform;\r\n const timeout = ffi_timeout(options);\r\n const encode = (options?.encoder || encoder)(defaults);\r\n const checkTransferred = options?.transfer !== false;\r\n\r\n /** @type {Worker & { proxy: Record<string, function> }} */\r\n class Worker extends sabayon.Worker {\r\n constructor(url, options) {\r\n const serviceWorker = native ? '' : (options?.serviceWorker || '');\r\n const { notify } = (serviceWorker ? sabayon.Atomics : Atomics);\r\n const { port1: channel, port2 } = new (\r\n serviceWorker ? sabayon.MessageChannel : MessageChannel\r\n );\r\n const [ next, resolve ] = nextResolver(Number);\r\n const callbacks = new Map;\r\n const proxied = create(null);\r\n\r\n if (serviceWorker) sabayon.register(serviceWorker);\r\n\r\n let resolving = '';\r\n\r\n const deadlock = (promise, name) => {\r\n if (resolving) {\r\n const t = setTimeout(\r\n console.warn,\r\n 3e3,\r\n `💀🔒 - is proxy.${info(resolving)}() awaiting proxy.${info(name)}() ?`\r\n );\r\n promise = promise.then(\r\n result => {\r\n clearTimeout(t);\r\n return result;\r\n },\r\n error => {\r\n clearTimeout(t);\r\n return Promise.reject(error);\r\n },\r\n );\r\n }\r\n return promise;\r\n };\r\n\r\n super(url, assign({ type: 'module' }, options));\r\n\r\n this.proxy = new Proxy(proxied, {\r\n get: (_, name) => {\r\n // the curse of potentially awaiting proxies in the wild\r\n // requires this ugly guard around `then`\r\n if (name === 'then') return;\r\n let cb = callbacks.get(name);\r\n if (!cb) {\r\n callbacks.set(name, cb = (...args) => {\r\n const transfer = transferred.get(checkTransferred, args);\r\n const [uid, promise] = next();\r\n channel.postMessage(\r\n [uid, name, transform ? args.map(transform) : args],\r\n transfer\r\n );\r\n return deadlock(promise, name);\r\n });\r\n }\r\n return cb;\r\n },\r\n set\r\n });\r\n\r\n // @bug https://bugzilla.mozilla.org/show_bug.cgi?id=1956778\r\n if (UID && (native || serviceWorker)) {\r\n super.addEventListener('message', event => {\r\n const { data } = event;\r\n if (data?.ID === UID) {\r\n stop(event);\r\n channel.dispatchEvent(new MessageEvent(data.data));\r\n }\r\n });\r\n }\r\n\r\n super.postMessage([UID, serviceWorker, ffi_timeout(options, timeout)], [port2]);\r\n\r\n channel.addEventListener('message', async ({ data }) => {\r\n const i32 = data[0];\r\n const type = typeof i32;\r\n if (type === 'number')\r\n resolve.apply(null, data);\r\n else {\r\n resolving = data[1];\r\n await result(data, proxied, transform);\r\n resolving = '';\r\n if (type === 'string')\r\n channel.postMessage(data);\r\n else {\r\n const result = data[2] || data[1];\r\n // at index 1 we store the written length or 0, if undefined\r\n i32[1] = result === void 0 ? 0 : encode(result, i32.buffer);\r\n // at index 0 we set the SharedArrayBuffer as ready\r\n i32[0] = 1;\r\n notify(i32, 0);\r\n }\r\n }\r\n });\r\n\r\n channel.start();\r\n }\r\n }\r\n\r\n return {\r\n Worker,\r\n native,\r\n transfer: transferred.set,\r\n };\r\n};\r\n","/* c8 ignore start */\nconst {url} = import.meta;\nconst re = /import\\((['\"])([^)]+?\\.js)\\1\\)/g;\nconst place = (_,q,f) => `import(${q}${new URL(f,url).href}${q})`;\nimport coincident from 'coincident/window/main';\nconst { Worker } = coincident({ transfer: false });\nexport 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)}}const c=\\\"677caa6a\\\",l=\\\"=\\\"+c,u=\\\"-\\\"+c;let p=0;const d=p++,f=p++,h=p++,y=p++,m=p++,g=p++,w=p++,_=p++,b=p++,A=p++,E=p++,k=p++,v=p++,S=p++,x=p++,$=p++,j=p++,B=p++,M=p++,F=p++,P=p++,R=p++,D=p++,T=p++,O=p++,L=new TextDecoder,C=new TextEncoder,I=new Map(Reflect.ownKeys(Symbol).map(e=>[Symbol[e],`@${String(e)}`])),H=e=>{switch(e[0]){case\\\"@\\\":return Symbol[e.slice(1)];case\\\"#\\\":return Symbol.for(e.slice(1));case\\\"!\\\":return Symbol(e.slice(1));default:return Symbol()}},U=e=>I.get(e)||((e,t)=>void 0===t?\\\"?\\\":void 0===Symbol.keyFor(e)?`!${t}`:`#${t}`)(e,e.description),W=Object.defineProperty,N=Object.assign,q=Array.isArray,J=ArrayBuffer.isView,z=(e,t)=>[e,t],K=e=>e,G={},V=e=>(t,n=new Map)=>{for(let r=0,s=t.length;r<s;r++)t[r]=e(t[r],n);return t},X=([e,t])=>0===e?t:H(t),Y=e=>\\\"string\\\"==typeof e?z(0,e):z(16,U(e)),Z=(e,t)=>{for(let n=e.push,r=0,s=t.length;r<s;r+=32767)n.apply(e,t.subarray(r,r+32767))},Q=new ArrayBuffer(8),ee=new DataView(Q),te=new Uint8Array(Q),ne=(e,t,n)=>(e.set(t,n),n),re=e=>{te[0]=e[ae++],te[1]=e[ae++],te[2]=e[ae++],te[3]=e[ae++],te[4]=e[ae++],te[5]=e[ae++],te[6]=e[ae++],te[7]=e[ae++]},se=e=>(te[0]=e[ae++],te[1]=e[ae++],te[2]=e[ae++],te[3]=e[ae++],ee.getUint32(0,!0)),oe=(e,t)=>{switch(e[ae++]){case m:return re(e),ee.getFloat64(0,!0);case g:return e[ae++];case P:{const n=ne(t,ae-1,{});for(let r=0,s=se(e);r<s;r++)n[oe(e,t)]=oe(e,t);return n}case $:{const n=ne(t,ae-1,[]);for(let r=0,s=se(e);r<s;r++)n.push(oe(e,t));return n}case T:{const n=ae-1,r=oe(e,t);return ne(t,n,new globalThis[r](oe(e,t)))}case j:{const n=ae-1,r=se(e);return ne(t,n,e.slice(ae,ae+=r).buffer)}case S:{const n=ae-1,r=se(e);return ne(t,n,L.decode(e.slice(ae,ae+=r)))}case B:return ne(t,ae-1,new Date(oe(e,t)));case F:{const n=ne(t,ae-1,new Map);for(let r=0,s=se(e);r<s;r++)n.set(oe(e,t),oe(e,t));return n}case D:{const n=ne(t,ae-1,new Set);for(let r=0,s=se(e);r<s;r++)n.add(oe(e,t));return n}case M:{const n=oe(e,t),r=oe(e,t),s=oe(e,t),o=new(globalThis[n]||Error)(r);return ne(t,ae-1,W(o,\\\"stack\\\",{value:s}))}case R:{const n=oe(e,t),r=oe(e,t);return ne(t,ae-1,new RegExp(n,r))}case d:return!1;case f:return!0;case w:return NaN;case _:return 1/0;case b:return-1/0;case A:return 0;case E:return-0;case y:return null;case k:return re(e),ee.getBigInt64(0,!0);case v:return re(e),ee.getBigUint64(0,!0);case x:return H(oe(e,t));case O:return t.get(se(e));default:return}};let ae=0;const ie=e=>(ae=0,oe(e,new Map)),ce=({byteOffset:e=0}={})=>(t,n)=>ie(new Uint8Array(n,e,t));let le=0;const ue=le++,pe=le++,de=le++,fe=le++,he=le++,ye=le++,me=le++,ge=le++,we=le++,_e=le++,be=le++,Ae=le++,Ee=le++,ke=le++,ve=le++,Se=le++,xe=le++,$e=le++,{getPrototypeOf:je}=Object,{construct:Be}=Reflect,{toStringTag:Me}=Symbol,{toString:Fe}=G,Pe=(e,t=Fe.call(e).slice(8,-1))=>t in globalThis?t:Pe(je(e)||G),Re=(e,t=e[Me])=>t in globalThis?t:Re(Be(je(e.constructor),[0])),De=(e,t)=>new ArrayBuffer(e,{maxByteLength:t}),Te=([e,t],n)=>{const r=n?e.byteLength:e.length;if(n){if(t){const n=De(r,t);new Uint8Array(n).set(new Uint8Array(e)),e=n}}else{const n=t?De(r,t):new ArrayBuffer(r);new Uint8Array(n).set(e),e=n}return e};const Oe=/\\\\[('|\\\")?(.+?)\\\\1\\\\]/g,Le=(e,t)=>e?.[t];var Ce=e=>{const t=[],n=e=>{const n=t.splice(e);for(;e<n.length;)n[e++].delete(n[e++])};return class r extends Map{static keys=Symbol();static proto=Symbol();drop(e,t){return e!==r.proto&&super.delete(r.keys),super.delete(e),t}set(r,s){return((r,s)=>{t.push(r,s)<3&&setTimeout(n,e,0)})(super.set(r,s),r),s}}};const{preventExtensions:Ie}=Object;var He=({reflect:e=K,transform:t=K,released:n=K,buffer:r=!1,timeout:s=-1}=G)=>{const o=V(X),a=V(Y),i=e=>{if(!q(e))return e;const[t,n]=e;if(1&t)return u(e,t,n);switch(t){case 2:return j;case 0:return n;case 16:return H(n);case 32:return BigInt(n);case 68:return(([e,t,n,r],s)=>{const o=Te(t,s),a=globalThis[e];return r?new a(o,n,r):new a(o,n)})(n,r);case 64:return Te(n,r)}},c=(e,n=new Map)=>{switch(typeof e){case\\\"object\\\":{if(null===e)break;if(e===globalThis)return x;if($ in e)return b;let r=n.get(e);if(!r){const s=t(e);if(A||!_.has(s)){if(q(s)){const t=[];r=z(4,t),n.set(e,r);for(let e=0,r=s.length;e<r;e++)t[e]=c(s[e],n);return r}if(!(J(s)||s instanceof ArrayBuffer||\\\"Object\\\"!==Pe(s))){const t={};r=z(2,t),n.set(e,r);for(const e in s)t[e]=c(s[e],n);return r}}r=z(0,s),n.set(e,r)}return r}case\\\"function\\\":{if($ in e)return b;let r=n.get(e);if(!r){const s=t(e);r=z(8,E(s)),n.set(e,r)}return r}case\\\"symbol\\\":return z(16,U(e))}return e},l=V(c),u=(e,t,n)=>{let r=S.get(n),s=r?.deref();return s||(r&&B.unregister(r),s=new(3===t?m:5===t?g:w)(e,n),r=new WeakRef(s),S.set(n,r),B.register(s,n,r)),s},p=e=>{switch(typeof e){case\\\"object\\\":if(null===e)break;case\\\"function\\\":return $ in e;default:return!1}},d=-1<s,f=d?Ce(s):Map;class h{constructor(e){this._=e,d&&(this.$=new f)}get(t,n){if(d&&this.$.has(n))return this.$.get(n);const r=e(_e,this._,Y(n));return d?r[0]?this.$.set(n,i(r[1])):i(r[1]):i(r)}set(t,n,r){const s=e(xe,this._,Y(n),c(r));return d?this.$.drop(n,s):s}_oK(){return o(e(ve,this._),S)}ownKeys(e){return d?this.$.has(f.keys)?this.$.get(f.keys):this.$.set(f.keys,this._oK()):this._oK()}getOwnPropertyDescriptor(t,n){const r=i(e(be,this._,Y(n)));if(r)for(const e in r)r[e]=i(r[e]);return r}defineProperty(t,n,r){const s=e(ge,this._,Y(n),c(r));return d?this.$.drop(n,s):s}deleteProperty(t,n){const r=e(we,this._,Y(n));return d?this.$.drop(n,r):r}_gPO(){return i(e(Ae,this._))}getPrototypeOf(e){return d?this.$.has(f.proto)?this.$.get(f.proto):this.$.set(f.proto,this._gPO()):this._gPO()}setPrototypeOf(t,n){const r=e($e,this._,c(n));return d?this.$.drop(f.proto,r):r}isExtensible(t){return e(ke,this._)}preventExtensions(t){return Ie(t)&&e(Se,this._)}}const y=(t,n,r)=>r===$?!!(b=t):e(Ee,n,Y(r));class m extends h{constructor(e,t){return new Proxy({_:e},super(t))}has(e,t){return y(e._,this._,t)}}class g extends h{constructor(e,t){return new Proxy(e,super(t))}has(e,t){return y(e,this._,t)}}class w extends h{constructor(e,t){return new Proxy(Ue.bind(e),super(t))}has(e,t){return y(e(),this._,t)}construct(t,n){return i(e(me,this._,l(n)))}apply(t,n,r){const s=new Map;return i(e(ye,this._,c(n,s),l(r,s)))}get(e,t){switch(t){case\\\"apply\\\":return(t,n)=>this.apply(e,t,n);case\\\"call\\\":return(t,...n)=>this.apply(e,t,n);default:return super.get(e,t)}}}let _,b,A=!0;const{id:E,ref:k,unref:v}=((e=0,t=new Map,n=new Map)=>({clear:()=>{t.clear(),n.clear()},id:r=>{let s=n.get(r);if(void 0===s){for(;t.has(s=e++););t.set(s,r),n.set(r,s)}return s},ref:e=>t.get(e),unref:e=>(n.delete(t.get(e)),t.delete(e))}))(),S=new Map,x=z(2,null),$=Symbol(\\\"reflected-ffi\\\"),j=new m(x,null),B=new FinalizationRegistry(t=>{S.delete(t),e(ue,t)});return{global:j,isProxy:p,assign(t,...n){const r=p(t),s=N(r?{}:t,...n);return r&&e(pe,b[1],c(s)),t},direct:e=>(A&&(A=!1,_=new WeakSet),_.add(e),e),evaluate:(t,...n)=>i(e(de,null,function(e=this){return String(e).replace(/^(async\\\\s*)?(\\\\bfunction\\\\b)?(.*?)\\\\(/,(e,t,n,r)=>r&&!n?`${t||\\\"\\\"}function ${r}(`:e)}(t),l(n))),gather(t,...n){const r=p(t),s=r?i:e=>t[e];r&&(n=e(fe,b[1],a(n,S)));for(let e=0;e<n.length;e++)n[e]=s(n[e]);return n},query:(t,n)=>p(t)?i(e(he,b[1],n)):((e,t)=>t.replace(Oe,\\\".$2\\\").split(\\\".\\\").reduce(Le,e))(t,n),reflect(e,t,...r){switch(e){case ye:{const[e,n]=r;for(let e=0,t=n.length;e<t;e++)n[e]=i(n[e]);return c(Reflect.apply(k(t),i(e),n))}case ue:return n(k(t)),v(t)}}}};function Ue(){return this}var We=Promise.withResolvers.bind(Promise),Ne=(e=e=>e)=>{const t=new Map;let n=0;return[()=>{let r;do{r=e(n++)}while(t.has(r));const s=We();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)}]};const qe=[],Je=new WeakSet,ze=(...e)=>(Je.add(e),e);let{SharedArrayBuffer:Ke}=globalThis,Ge=!0;try{new Ke(4,{maxByteLength:8})}catch(e){Ge=!1,Ke=class extends ArrayBuffer{get growable(){return super.resizable}grow(e){super.resize(e)}}}const{create:Ve}=Object,Xe=`coincident-${Ge?crypto.randomUUID():Math.random().toString(36).substring(2)}`,Ye=2*Int32Array.BYTES_PER_ELEMENT,Ze={byteOffset:Ye},Qe=(e,t,n)=>{const r=\\\"then\\\"!==t;return r&&(e[t]=n),r},et=e=>{e.stopImmediatePropagation(),e.preventDefault()},[tt,nt]=Ne();let[rt,st]=tt(),ot=()=>st,at=()=>{},{Atomics:it,MessagePort:ct,SharedArrayBuffer:lt,postMessage:ut}=globalThis;if(Ge)nt(rt);else{lt=Ke;const e=new Map,t=(e,...t)=>{e.addEventListener(...t)};if(\\\"importScripts\\\"in globalThis){at=t=>{e.set(t,null)};const n=t=>{const n=t[0],r=p++;return e.set(n,r),[r,n,t]},r=ut;ut=function(e,t){if(u){const s={ID:e.ID,data:n(e.data)};r(s,t)}else st.then(()=>this.postMessage(e,t))},ct=class extends ct{postMessage(e,t){u?super.postMessage(n(e),t):st.then(()=>this.postMessage(e,t))}},t(globalThis,\\\"message\\\",e=>{et(e),nt(rt,e.data)},{once:!0});const{wait:s}=it,{parse:o}=JSON,a=t=>{const n=new XMLHttpRequest;return n.open(\\\"POST\\\",`${l}?sabayon`,!1),n.setRequestHeader(\\\"Content-Type\\\",\\\"application/json\\\"),n.send(`[\\\"${c}\\\",${e.get(t)}]`),n},i=(e,t)=>(e.set(o(t.responseText)),\\\"ok\\\");it={wait:(t,...n)=>e.has(t)?i(t,a(t)):s(t,...n)};let c,l,u=!1,p=Math.random();st=st.then(e=>{[c,l]=e,u=!0})}else{const n=[Xe,Math.random()].join(\\\"-\\\").replace(/\\\\W/g,\\\"-\\\"),r=new BroadcastChannel(\\\"dc78209b-186c-4f83-80e9-406becb7d9f3\\\");r.onmessage=async t=>{const[s,o,a]=t.data;if(o===n)for(const[t,[n,o]]of e)if(n===a){await o.promise;let e=t.length;for(;e--&&!t[e];);r.postMessage([s,t.slice(0,e+1)]);break}};const{notify:s}=it;it={notify(t,...n){const r=e.get(t);return r?(r[1].resolve(),0):s(t,...n)}};let o=\\\"\\\",a=null;const i=(e,n)=>{let r,s=!0;e.getRegistration(o).then(t=>t??e.register(o,n)).then(function n(a){const{controller:i}=e;if(s=s&&!!i,r=a.installing||a.waiting||a.active,\\\"activated\\\"===r.state){if(s){if(i.scriptURL===o)return nt(rt);a.unregister()}location.reload()}else t(r,\\\"statechange\\\",()=>n(a),{once:!0})})};ot=(e,t)=>(a||(o=new URL(e,location.href).href,i(navigator.serviceWorker,t),a=st),a)}}const{setPrototypeOf:pt}=Reflect;let{postMessage:dt}=globalThis;const ft=We(),ht=ct.prototype;addEventListener(\\\"message\\\",e=>{et(e);const[t,n,r]=e.data,[s]=e.ports;n&&(pt(s,ht),t&&(dt=ut)),ft.resolve([t,n,r,s])},{once:!0});var yt=async e=>{const[t,n,r,s]=await ot().then(()=>ft.promise),o=!!t,a=Ge||!!n,i=e?.transform,c=(e?.decoder||ce)(Ze),l=!1!==e?.transfer;let u,p,d;if(a){const t=new(n?lt:SharedArrayBuffer)(e?.minByteLength||32767,{maxByteLength:e?.maxByteLength||16777216});u=new Int32Array(t),n?(({wait:d}=it),at(u)):(({pause:p,wait:d}=Atomics),p&&!o&&(d=(e,t)=>{for(;e[t]<1;)p()}))}const[f,h]=Ne(String),y=new Map,m=Ve(null),g=new Proxy(m,{get(e,n){if(\\\"then\\\"===n)return;let r=y.get(n);return r||y.set(n,r=(...e)=>{const r=((e,t)=>{let n=qe;return e&&Je.has(t.at(-1)||qe)&&(n=t.pop(),Je.delete(n)),n})(l,e),p=[u,n,i?e.map(i):e];if(a){o?dt({ID:t,data:p},r):s.postMessage(p,r),d(u,0),u[0]=0;const e=u[1]?c(u[1],u.buffer):void 0;if(e instanceof Error)throw e;return e}{const[e,t]=f();return p[0]=e,s.postMessage(p,r),t}}),r},set:Qe});return s.addEventListener(\\\"message\\\",async({data:e})=>{\\\"string\\\"==typeof e[0]?h.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,m,i),s.postMessage(e))}),s.start(),{native:Ge,proxy:g,ffi_timeout:r,sync:a,transfer:ze}};const mt={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}},gt=new WeakMap,wt=e=>{const t=e||console,n={buffered:bt,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 gt.set(t,n),t}}},_t=new TextDecoder,bt=(e,t=10)=>{const n=[];return r=>{if(r instanceof Uint8Array)for(const s of r)s===t?e(_t.decode(new Uint8Array(n.splice(0)))):n.push(s);else e(r)}},At=(e,...t)=>mt[typeof e](e,...t),{isArray:Et}=Array,{assign:kt,create:vt,defineProperty:St,entries:xt}=Object,{all:$t,resolve:jt}=new Proxy(Promise,{get:(e,t)=>e[t].bind(e)}),Bt=(e,t=location.href)=>new URL(e,t.replace(/^blob:/,\\\"\\\")).href;function Mt(e){return e.startsWith(\\\".\\\")?Bt(e,this):e}const Ft=(e,t,n,r=!1,s=CustomEvent)=>{e.dispatchEvent(new s(`${t}:${n}`,{bubbles:!0,detail:{worker:r}}))},Pt=e=>Function(`'use strict';return (${e})`)(),Rt=e=>e.replace(/^(?:\\\\n|\\\\r\\\\n)/,\\\"\\\"),Dt=Symbol.for(\\\"polyscript.js_modules\\\"),Tt=new Map;St(globalThis,Dt,{value:Tt}),new Proxy(Tt,{get:(e,t)=>e.get(t),has:(e,t)=>e.has(t),ownKeys:e=>[...e.keys()]});const Ot=(e,t)=>!t.startsWith(\\\"_\\\"),Lt=(e,t)=>new Proxy(e,{has:Ot,get:(e,n)=>e[t][n]}),Ct=(e,t)=>import(e).then(e=>{Tt.set(t,{...e})}),It=e=>new Promise((t,n)=>{document.querySelector(`link[rel=\\\"stylesheet\\\"][href=\\\"${e}\\\"]`)?t():document.head.append(kt(document.createElement(\\\"link\\\"),{rel:\\\"stylesheet\\\",href:e,onload:t,onerror:n}))}),Ht=e=>/\\\\.css$/i.test(new URL(e).pathname),Ut=(e,t)=>e.has(t),Wt=e=>[...e.keys()];var Nt=(e,t,n,r)=>{const s=globalThis[Dt];if(n)for(let[e,t]of xt(n)){let n=s.get(t);n&&!Et(n)||(s.set(t,n||(n=[])),n.push(e))}return((e,t,n,r)=>new Proxy(e,{has:Ut,ownKeys:Wt,get:(e,s)=>{let o=e.get(s);if(Et(o)){let a=o;o=null;for(let e of a)e=Bt(e,r),Ht(e)?n.importCSS(e):(n.importJS(e,s),o=t[Dt].get(s));e.set(s,o)}return o}}))(s,e,t,r)};const qt=new Map,Jt=e=>qt.get(e),zt=(e,t)=>{try{return Function(\\\"require\\\",t)(Jt)}catch(t){gt.get(e).stderr(t)}};var Kt={type:\\\"dummy\\\",module:()=>\\\"data:text/javascript,\\\",engine:e=>wt().get(e),registerJSModule(e,t,n){qt.set(t,n)},run:zt,runAsync:zt,runEvent:async(e,t,n)=>{try{await Function(\\\"require\\\",\\\"e\\\",`return ${t}(e)`)(Jt,n)}catch(t){gt.get(e).stderr(t)}},transform:(e,t)=>t,writeFile(){}};const Gt=Object.getOwnPropertyDescriptors(Response.prototype),Vt=e=>\\\"function\\\"==typeof e,Xt={get:(e,t)=>Gt.hasOwnProperty(t)?((e,t,{get:n,value:r})=>n||!Vt(r)?e.then(e=>e[t]):(...n)=>e.then(e=>e[t](...n)))(e,t,Gt[t]):((e,t)=>Vt(t)?t.bind(e):t)(e,e[t])};var Yt=(e,...t)=>new Proxy(fetch(e,...t),Xt);const Zt=!globalThis.window,Qt=({FS:e,PATH:t,PATH_FS:n},r,s)=>{const o=n.resolve(r),a=t.dirname(o);return e.mkdirTree?e.mkdirTree(a):tn(e,a),e.writeFile(o,new Uint8Array(s),{canOwn:!0})},en=e=>{const t=e.split(\\\"/\\\");return t.pop(),t.join(\\\"/\\\")},tn=(e,t)=>{const n=[];for(const r of t.split(\\\"/\\\"))\\\".\\\"!==r&&\\\"..\\\"!==r&&(n.push(r),r&&e.mkdir(n.join(\\\"/\\\")))},nn=(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(/^\\\\/+/,\\\"/\\\")},rn=e=>{const t=e.map(e=>e.trim().replace(/(^[/]*|[/]*$)/g,\\\"\\\")).filter(e=>\\\"\\\"!==e&&\\\".\\\"!==e).join(\\\"/\\\");return e[0].startsWith(\\\"/\\\")?`/${t}`:t},sn=(e,t)=>Yt(Bt(e,t)).arrayBuffer(),on=(e,t,n,r)=>$t((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(Et(r))return r.map(n=>({url:rn([e,n]),path:rn([t,n])}));const s=n||e.slice(1+e.lastIndexOf(\\\"/\\\"));return[{url:e,path:rn([t,s])}]})})(n).map(({url:n,path:s})=>sn(n,r).then(n=>e.writeFile(t,s,n)))),an=(e,t)=>t.endsWith(\\\"/\\\")?`${t}${e.split(\\\"/\\\").pop()}`:t,cn=(e,t)=>e.replace(/\\\\{.+?\\\\}/g,e=>{if(!t.has(e))throw new SyntaxError(`Invalid template: ${e}`);return t.get(e)}),ln=(e,t,n,r)=>$t((e=>{const t=new Map,n=new Set,r=[];for(const[s,o]of xt(e))if(/^\\\\{.+\\\\}$/.test(s)){if(t.has(s))throw new SyntaxError(`Duplicated template: ${s}`);t.set(s,cn(o,t))}else{const e=cn(s,t),a=an(e,cn(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})=>sn(n,r).then(r=>e.writeFile(t,s,r,n)))),un=({main:e,worker:t},n)=>{const r=[];if(t&&Zt)for(let[e,s]of xt(t))e=Bt(e,n),r.push(Ct(e,s));if(e&&!Zt)for(let[t,s]of xt(e))t=Bt(t,n),Ht(t)?It(t):r.push(Ct(t,s));return $t(r)},pn=e=>t=>{dispatchEvent(new CustomEvent(`${e}:progress`,{detail:t}))},{isNaN:dn,isFinite:fn,isInteger:hn}=Number,{ownKeys:yn}=Reflect,{is:mn}=Object,gn=(e,t,n)=>{const r=n.get(e),s=!r;return s?(ee.setUint32(0,t.length,!0),n.set(e,[te[0],te[1],te[2],te[3]])):t.push(O,r[0],r[1],r[2],r[3]),s},wn=(e,t,n)=>{ee.setUint32(0,n,!0),e.push(t,te[0],te[1],te[2],te[3])},_n=(e,t,n)=>{switch(typeof e){case\\\"number\\\":e&&fn(e)?hn(e)&&e<256&&-1<e?t.push(g,e):(ee.setFloat64(0,e,!0),t.push(m,te[0],te[1],te[2],te[3],te[4],te[5],te[6],te[7])):dn(e)?t.push(w):e?t.push(e<0?b:_):t.push(mn(e,0)?A:E);break;case\\\"object\\\":switch(!0){case null===e:t.push(y);break;case!gn(e,t,n):break;case q(e):{const r=e.length;wn(t,$,r);for(let s=0;s<r;s++)_n(e[s],t,n);break}case J(e):if(t.push(T),_n(Re(e),t,n),e=e.buffer,!gn(e,t,n))break;case e instanceof ArrayBuffer:{const n=new Uint8Array(e);wn(t,j,n.length),bn(t,n);break}case e instanceof Date:t.push(B),_n(e.getTime(),t,n);break;case e instanceof Map:wn(t,F,e.size);for(const[r,s]of e)_n(r,t,n),_n(s,t,n);break;case e instanceof Set:wn(t,D,e.size);for(const r of e)_n(r,t,n);break;case e instanceof Error:t.push(M),_n(e.name,t,n),_n(e.message,t,n),_n(e.stack,t,n);break;case e instanceof RegExp:t.push(R),_n(e.source,t,n),_n(e.flags,t,n);break;default:if(\\\"toJSON\\\"in e){const r=e.toJSON();_n(r===e?null:r,t,n)}else{const r=yn(e),s=r.length;wn(t,P,s);for(let o=0;o<s;o++){const s=r[o];_n(s,t,n),_n(e[s],t,n)}}}break;case\\\"string\\\":if(gn(e,t,n)){const n=C.encode(e);wn(t,S,n.length),bn(t,n)}break;case\\\"boolean\\\":t.push(e?f:d);break;case\\\"symbol\\\":t.push(x),_n(U(e),t,n);break;case\\\"bigint\\\":{let n=k;9223372036854775807n<e?(ee.setBigUint64(0,e,!0),n=v):ee.setBigInt64(0,e,!0),t.push(n,te[0],te[1],te[2],te[3],te[4],te[5],te[6],te[7]);break}default:t.push(h)}};let bn=Z;const An={parse:ie,stringify:e=>{const t=[];return bn=Z,_n(e,t,new Map),t}},En=new WeakMap,kn=async(e,t,n,r,s)=>{r.files&&(t(\\\"Loading files\\\"),await ln(e,n,r.files,s),t(\\\"Loaded files\\\")),r.fetch&&(t(\\\"Loading fetch\\\"),await on(e,n,r.fetch,s),t(\\\"Loaded fetch\\\")),r.js_modules&&(t(\\\"Loading JS modules\\\"),await un(r.js_modules,s),t(\\\"Loaded JS modules\\\"))},vn=(e,t,n)=>{\\\"polyscript\\\"===t&&(n.lazy_py_modules=async(...t)=>(await En.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=An),e.registerJsModule(t,n)},Sn=(e,t)=>{if(e.endsWith(\\\"/*\\\")){if(/\\\\.(zip|whl|tgz|tar(?:\\\\.gz)?)$/.test(t))return RegExp.$1;throw new Error(`Unsupported archive ${t}`)}return\\\"\\\"},xn=(e,t,...n)=>{try{return e.runPython(At(t),...n)}catch(t){gt.get(e).stderr(t)}},$n=async(e,t,...n)=>{try{return await e.runPythonAsync(At(t),...n)}catch(t){gt.get(e).stderr(t)}},jn=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){gt.get(e).stderr(t)}};var Bn=(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 Mn=async e=>(await import(\\\"./toml-BK2RWy-G.js\\\")).parse(e);async function Fn(e,t){return new Promise((n,r)=>{e.syncfs(t,e=>{e?r(e):n()})})}function Pn(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 Rn(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):tn(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 Fn(t,!0),{syncfs:async()=>await Fn(t,!1)}}}const Rn=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},Dn=(e,t)=>{try{e.mkdir(t)}catch(e){}},Tn=pn(\\\"mpy\\\");var On={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}=wt({stderr:bt(console.error),stdout:bt(console.log)});n=n.replace(/\\\\.m?js$/,\\\".wasm\\\"),Tn(\\\"Loading MicroPython\\\");const i=await a(e({linebuffer:!1,stderr:s,stdout:o,url:n})),c=Ln.bind(this,i,r);return En.set(i,c),await kn(this,Tn,i,t,r),this.writeFile(i,\\\"./mip.py\\\",Bn),t.packages&&(Tn(\\\"Loading packages\\\"),await c(t.packages.map(Mt,r)),Tn(\\\"Loaded packages\\\")),Tn(\\\"Loaded MicroPython\\\"),i.mountNativeFS||(i.mountNativeFS=Pn(i._module)),i},registerJSModule:vn,run:xn,runAsync:$n,runEvent:jn,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=Sn(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-BKVoQflw.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)Dn(s,i);else{Dn(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 Qt(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 Qt(i,t,n)}};async function Ln(e,t,n){let r;for(const s of n)if(s.endsWith(\\\".whl\\\")){const n=Bt(s,t),r=await Yt(n).arrayBuffer();await this.writeFile(e,\\\"./*\\\",r,n)}else r||(r=e.pyimport(\\\"mip\\\")),r.install(s)}const Cn={dict_converter:Object.fromEntries},{stringify:In}=JSON,{apply:Hn}=Reflect,Un=Function.prototype,Wn=e=>function(...t){return Hn(e,this,t)};let Nn,qn;const Jn=e=>{const t=new WeakMap,n=n=>{for(let r,s=0;s<n.length;s++)switch(typeof(r=n[s])){case\\\"object\\\":if(null===r)break;case\\\"function\\\":if(Nn in r&&!r[Nn].shared?.gcRegistered){e=!1;let o=t.get(r)?.deref();if(!o){o=qn(r);const e=new WeakRef(o);t.set(r,e),t.set(o,e)}n[s]=o,e=!0}}};Object.defineProperties(Un,{apply:{value(t,r){return e&&n(r),Hn(this,t,r)}},call:{value(t,...r){return e&&n(r),Hn(this,t,r)}}})},zn=pn(\\\"py\\\"),Kn=new WeakMap;var Gn={type:\\\"pyodide\\\",module:(e=\\\"0.27.7\\\")=>`https://cdn.jsdelivr.net/pyodide/v${e}/full/pyodide.mjs`,async engine({loadPyodide:e,version:t},n,r,s){zn(\\\"Loading Pyodide\\\");let{packages:o,index_urls:a}=n;o&&(o=o.map(Mt,s)),zn(\\\"Loading Storage\\\");const c=r.slice(0,r.lastIndexOf(\\\"/\\\")),l=new i(`${c}@${t}`),u={indexURL:c},p=\\\"never\\\"!==n.packages_cache;if(await l.sync(),p){if(o)if(\\\"passthrough\\\"===n.packages_cache)u.packages=o,o=null,l.clear();else{o=o.sort();const e=In(o);if(l.has(e)){const t=new Blob([l.get(e)],{type:\\\"application/json\\\"});u.lockFileURL=URL.createObjectURL(t),u.packages=o.map(e=>e.split(/[>=<]=/)[0]),o=null}}}else l.clear();zn(\\\"Loaded Storage\\\");const{stderr:d,stdout:f,get:h}=wt(),y=await h(e({stderr:d,stdout:f,...u}));n.debug&&y.setDebug(!0);const m=Xn.bind(y);return a&&Kn.set(y,a),En.set(y,m),await kn(this,zn,y,n,s),o&&await m(o,l,p),await l.close(),u.lockFileURL&&URL.revokeObjectURL(u.lockFileURL),zn(\\\"Loaded Pyodide\\\"),\\\"auto\\\"===n.experimental_create_proxy&&(y.runPython([\\\"import js\\\",\\\"from pyodide.ffi import to_js\\\",\\\"o=js.Object.fromEntries\\\",\\\"js.experimental_create_proxy=lambda r:to_js(r,dict_converter=o)\\\"].join(\\\";\\\"),{globals:y.toPy({})}),qn=globalThis.experimental_create_proxy,delete globalThis.experimental_create_proxy,[Nn]=Reflect.ownKeys(qn).filter(e=>\\\"symbol\\\"==typeof e&&\\\"Symbol(pyproxy.attrs)\\\"===String(e)),Jn(!0)),y},registerJSModule:vn,run:Wn(xn),runAsync:Wn($n),runEvent:Wn(jn),transform:(e,t)=>Hn(Vn,e,[t]),writeFile:(e,t,n,r)=>{const s=Sn(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 Qt({FS:o,PATH:a,PATH_FS:i},t,n)}};function Vn(e){const{ffi:{PyProxy:t}}=this;if(e&&\\\"object\\\"==typeof e){if(e instanceof t)return e.toJs(Cn);if(e instanceof Map)return new Map([...e.entries()]);if(Et(e))return e.map(Vn,this)}return e}async function Xn(e,t,n=!1){const{log:r}=console,s=(e,...t)=>{r(e,...t),console.log=r,zn(e),console.log=s};console.log=s,await this.loadPackage(\\\"micropip\\\");const o=this.pyimport(\\\"micropip\\\");if(Kn.has(this)&&o.set_index_urls(Kn.get(this)),await o.install(e,{keep_going:!0}),console.log=r,n&&t instanceof i){const n=o.freeze();t.set(In(e),n)}o.destroy()}const Yn=\\\"ruby-wasm-wasi\\\",Zn=Yn.replace(/\\\\W+/g,\\\"_\\\");var Qn={type:Yn,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 Yt(n).arrayBuffer(),o=await WebAssembly.compile(s),{vm:a}=await e(o);return t.files&&await ln(this,a,t.files,r),t.fetch&&await on(this,a,t.fetch,r),t.js_modules&&await un(t.js_modules,r),a},registerJSModule(e,t,n){t=t.replace(/\\\\W+/g,\\\"__\\\");const r=`__module_${Zn}_${t}`;globalThis[r]=n,this.run(e,`require \\\"js\\\";$${t}=JS.global[:${r}]`),delete globalThis[r]},run:(e,t,...n)=>e.eval(At(t),...n),runAsync:(e,t,...n)=>e.evalAsync(At(t),...n),async runEvent(e,t,n){if(/^xworker\\\\.(on\\\\w+)$/.test(t)){const{$1:t}=RegExp,r=`__module_${Zn}_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 ${Yn}`)}};var er={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}=wt(),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 ln(this,c,n.files,s),n.fetch&&await on(this,c,n.fetch,s),n.js_modules&&await un(n.js_modules,s),c},registerJSModule:(e,t,n)=>{e.global.set(t,n)},run:(e,t,...n)=>{try{return e.doStringSync(At(t),...n)}catch(t){gt.get(e).stderr(t)}},runAsync:async(e,t,...n)=>{try{return await e.doString(At(t),...n)}catch(t){gt.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){gt.get(e).stderr(t)}},transform:(e,t)=>t,writeFile:({cmodule:{module:{FS:e}}},t,n)=>((e,t,n)=>(tn(e,en(t)),t=nn(e,t),e.writeFile(t,new Uint8Array(n),{canOwn:!0})))(e,t,n)};const tr=new WeakMap,nr=new FinalizationRegistry(e=>e()),rr=async(e,t)=>{const{shelter:n,destroy:r,io:s}=tr.get(e),{output:o,result:a}=await n.captureR(At(t));for(const{type:e,data:t}of o)s[e](t);return nr.register(a,r),a};var sr={type:\\\"webr\\\",experimental:!0,module:(e=\\\"0.4.4\\\")=>`https://cdn.jsdelivr.net/npm/webr@${e}/dist/webr.mjs`,async engine(e,t,n,r){const{get:s}=wt(),o=new e.WebR;await s(o.init().then(()=>o));const a=await new o.Shelter;return tr.set(o,{module:e,shelter:a,destroy:a.destroy.bind(a),io:gt.get(o)}),t.files&&await ln(this,o,t.files,r),t.fetch&&await on(this,o,t.fetch,r),t.js_modules&&await un(t.js_modules,r),o},registerJSModule(e,t){console.warn(`Experimental interpreter: module ${t} is not supported (yet)`)},run:rr,runAsync:rr,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 or=new Map,ar=new Map,ir=new Proxy(new Map,{get(e,t){if(!e.has(t)){const[n,...r]=t.split(\\\"@\\\"),s=or.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=>(ar.set(t,e),s(r,e,n,o)))}}),cr=e=>{for(const t of[].concat(e.type))or.set(t,e)};for(const e of[Kt,On,Gn,Qn,er,sr])cr(e);const{parse:lr}=JSON,ur=(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,[Bt(e),n]})(e,t);return\\\"json\\\"===s?n=Yt(r).json():\\\"toml\\\"===s?n=Yt(r).text().then(Mn):\\\"string\\\"===s?n=pr(e):\\\"object\\\"===s&&e?n=e:\\\"txt\\\"===s&&\\\"string\\\"==typeof n&&(n=pr(n)),[n,e=r]},pr=e=>{try{return lr(e)}catch(t){return Mn(e)}},dr=\\\"BeforeRun\\\",fr=\\\"AfterRun\\\",hr=[`code${dr}`,`code${dr}Async`,`code${fr}`,`code${fr}Async`],yr=[\\\"onWorker\\\",\\\"onReady\\\",`on${dr}`,`on${dr}Async`,`on${fr}`,`on${fr}Async`];function mr(e,t){const{run:n,runAsync:r}=or.get(this.type);return{...e,run:n.bind(this,t),runAsync:r.bind(this,t)}}const gr=(e,t,n,r,s,o)=>{if(s||o){const a=mr.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 wr,_r,br;const Ar=(e,t)=>{addEventListener(e,t||(async t=>{try{await wr,_r(`xworker.on${e}`,t)}catch(e){postMessage(e)}}),!!t&&{once:!0})},{proxy:Er,sync:kr,native:vr,window:Sr,isWindowProxy:xr,ffi:$r}=await(async e=>{const t=await yt({...e,decoder:e?.decoder||ce}),n=He({...e,buffer:!0,reflect:t.proxy[l],timeout:t.ffi_timeout});return t.proxy[u]=n.reflect,{...t,window:n.global,isWindowProxy:n.isProxy,ffi:{assign:n.assign,direct:n.direct,evaluate:n.evaluate,gather:n.gather,query:n.query}}})({transfer:!1,transform:e=>br?br(e):e}),jr={polyfill:kr,sync:Er,window:vr||kr?Sr:null,isWindowProxy:xr,onmessage:console.info,onerror:console.error,onmessageerror:console.warn,postMessage:postMessage.bind(self)};Ar(\\\"message\\\",({data:{options:e,config:t,configURL:n,code:r,hooks:s}})=>{wr=(async()=>{try{const{id:o,tag:c,type:l,custom:u,version:p,config:d,async:f}=e,h=((e,t=\\\"\\\")=>`${e}@${t}`.replace(/@$/,\\\"\\\"))(l,p),y=await((e,t,n,r={})=>(t&&([r,t]=ur(t,n,r)),jt(r).then(n=>ir[e](n,t))))(h,t,n,d),{js_modules:m}=ar.get(h),g=m?.main,w=vt(or.get(l)),_=((e,t,n,r)=>({type:t,config:n,interpreter:r,io:gt.get(r),run:(t,...n)=>e.run(r,t,...n),runAsync:(t,...n)=>e.runAsync(r,t,...n),runEvent:(...t)=>e.runEvent(r,...t)}))(w,u||l,d||{},y);let b=\\\"run\\\";if(f&&(b+=\\\"Async\\\"),s){let e,t,n=\\\"\\\",r=\\\"\\\";for(const e of hr){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,Rt(t),...o);return r&&s(e,r,...o),a}:async(e,t,...o)=>{n&&await s(e,n,...o);const a=await s(e,Rt(t),...o);return r&&await s(e,r,...o),a}})(w,b,n,r);for(const n of yr.slice(2)){const r=s[n];if(r){const s=n.endsWith(\\\"Async\\\");if(s&&f||!s&&!f){const s=Pt(r);n.startsWith(\\\"onBefore\\\")?e=s:t=s}}}gr(w,_,jr,f,e,t)}let A,E,k,v=null,S=\\\"\\\";(vr||kr)&&(({CustomEvent:A,document:E}=Sr),v=o&&E.getElementById(o)||null,k=e=>Ft(v,u||l,e,!0,A));const x=Nt(Sr,Er,g,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}`,Lt(r,e));t.registerJSModule(n,s,r)})(l,w,y,x),w.registerJSModule(y,\\\"polyscript\\\",{IDBMap:a,IDBMapSync:i,xworker:jr,currentScript:v,config:_.config,js_modules:x,ffi:$r,get target(){return!S&&v&&(\\\"SCRIPT\\\"===c?v.after(kt(Sr.document.createElement(`script-${u||l}`),{id:S=`${o}-target`})):(S=o,v.replaceChildren(),v.style.display=\\\"block\\\")),S}}),_r=w.runEvent.bind(w,y),br=w.transform.bind(w,y),v&&k(\\\"ready\\\"),s?.onReady&&Pt(s?.onReady).call(w,mr.call(w,_,y),jr),await w[b](y,r),[\\\"micropython\\\",\\\"pyodide\\\"].includes(w.type)){const e=\\\"polyscript\\\",t=`__${e}_workers__`,n=\\\"__export__\\\";y.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&&y.runPython([`from ${e} import xworker as ${t}`,...r.map(e=>`${t}.sync.${e} = ${e}`),`del ${t}`].join(\\\"\\\\n\\\"))}return v&&k(\\\"done\\\"),postMessage(\\\"polyscript:done\\\"),y}catch(e){postMessage(e)}})(),Ar(\\\"error\\\"),Ar(\\\"message\\\"),Ar(\\\"messageerror\\\"),(vr||kr)&&addEventListener(\\\"py:progress\\\",({type:e,detail:t})=>{Sr.dispatchEvent(new Sr.CustomEvent(e,{detail:t}))})});\\n\".replace(re,place)],{type:'text/javascript'})), ...args)\n/* c8 ignore stop */\n","import local from 'reflected-ffi/local';\nimport patchEvent from 'reflected-ffi/utils/events';\nimport { encoder as directEncoder } from 'reflected-ffi/encoder';\n\nimport { MAIN, WORKER } from './constants.js';\n\nimport coincident from '../main.js';\nimport { ffi_timeout } from '../utils.js';\n\nexport default options => {\n const esm = options?.import;\n const timeout = ffi_timeout(options);\n const exports = coincident({\n ...options,\n encoder: options?.encoder || directEncoder,\n });\n\n /** @type {Worker & { proxy: Record<string, function> }} */\n class Worker extends exports.Worker {\n #terminate;\n\n constructor(url, options) {\n const { proxy } = super(url, options);\n const ffi = local({\n ...options,\n buffer: true,\n reflect: proxy[WORKER],\n timeout: ffi_timeout(options, timeout),\n remote(event) { if (event instanceof Event) patchEvent(event); },\n module: options?.import || esm || (name => import(new URL(name, location).href)),\n });\n\n this.#terminate = ffi.terminate;\n\n this.ffi = { \n assign: ffi.assign,\n direct: ffi.direct,\n evaluate: ffi.evaluate,\n gather: ffi.gather,\n query: ffi.query,\n };\n\n proxy[MAIN] = ffi.reflect;\n }\n\n terminate() {\n this.#terminate();\n super.terminate();\n }\n }\n\n return { ...exports, Worker };\n};\n","// REQUIRES INTEGRATION TEST\n/* c8 ignore start */\nexport const io = new WeakMap();\nexport const stdio = (init) => {\n const context = init || console;\n const localIO = {\n // allow plugins or other io manipulating logic to reuse\n // the buffered utility exposed in here (see py-editor)\n buffered,\n stderr: (context.stderr || console.error).bind(context),\n stdout: (context.stdout || console.log).bind(context),\n };\n return {\n stderr: (...args) => localIO.stderr(...args),\n stdout: (...args) => localIO.stdout(...args),\n async get(engine) {\n const interpreter = await engine;\n io.set(interpreter, localIO);\n return interpreter;\n },\n };\n};\n\nconst decoder = new TextDecoder();\nexport const buffered = (callback, EOL = 10) => {\n const buffer = [];\n return (maybeUI8) => {\n if (maybeUI8 instanceof Uint8Array) {\n for (const c of maybeUI8) {\n if (c === EOL)\n callback(decoder.decode(new Uint8Array(buffer.splice(0))));\n else\n buffer.push(c);\n }\n }\n // if io.stderr(error) is passed instead\n // or any io.stdout(\"thing\") this should\n // still work as expected\n else {\n callback(maybeUI8);\n }\n };\n};\n/* c8 ignore stop */\n","import { io, stdio } from './_io.js';\n\nconst registry = new Map;\n\nconst type = 'dummy';\n\n// REQUIRES INTEGRATION TEST\n/* c8 ignore start */\nconst require = name => registry.get(name);\n\nconst run = (interpreter, code) => {\n try {\n return Function('require', code)(require);\n }\n catch (error) {\n io.get(interpreter).stderr(error);\n }\n};\n\nexport default {\n type,\n module: () => 'data:text/javascript,',\n engine: module => stdio().get(module),\n registerJSModule(_, name, value) {\n registry.set(name, value);\n },\n run,\n runAsync: run,\n runEvent: async (interpreter, code, event) => {\n try {\n await Function('require', 'e', `return ${code}(e)`)(require, event);\n }\n catch (error) {\n io.get(interpreter).stderr(error);\n }\n },\n transform: (_, value) => value,\n writeFile() {},\n};\n","import content from 'plain-tag';\n\nconst dedent = {\n object(...args) {\n return this.string(content(...args));\n },\n string(content) {\n for (const line of content.split(/[\\r\\n]+/)) {\n // skip initial empty lines\n if (line.trim().length) {\n // trap indentation at the very first line of code\n if (/^(\\s+)/.test(line))\n content = content.replace(new RegExp('^' + RegExp.$1, 'gm'), '');\n // no indentation? all good: get out of here!\n break;\n }\n }\n return content;\n }\n};\n\n/**\n * Usable both as template literal tag or just as callback for strings, removes all spaces found\n * at the very first line of code encountered while sanitizing, keeping everything else around.\n * @param {string | TemplateStringsArray} tpl either code as string or as template, when used as tag\n * @param {...any} values the template interpolations, when used as tag\n * @returns {string} code without undesired indentation\n */\nconst codedent = (tpl, ...values) => dedent[typeof tpl](tpl, ...values);\n\nexport default codedent;\n","export default function (t) {\n for (var s = t[0], i = 1, l = arguments.length; i < l; i++)\n s += arguments[i] + t[i];\n return s;\n};\n","/**\n * Copyright (C) 2017-present by Andrea Giammarchi - @WebReflection\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst {replace} = '';\n\n// escape\nconst es = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34);/g;\nconst ca = /[&<>'\"]/g;\n\nconst esca = {\n '&': '&',\n '<': '<',\n '>': '>',\n \"'\": ''',\n '\"': '"'\n};\nconst pe = m => esca[m];\n\n/**\n * Safely escape HTML entities such as `&`, `<`, `>`, `\"`, and `'`.\n * @param {string} es the input to safely escape\n * @returns {string} the escaped input, and it **throws** an error if\n * the input type is unexpected, except for boolean and numbers,\n * converted as string.\n */\nexport const escape = es => replace.call(es, ca, pe);\n\n\n// unescape\nconst unes = {\n '&': '&',\n '&': '&',\n '<': '<',\n '<': '<',\n '>': '>',\n '>': '>',\n ''': \"'\",\n ''': \"'\",\n '"': '\"',\n '"': '\"'\n};\nconst cape = m => unes[m];\n\n/**\n * Safely unescape previously escaped entities such as `&`, `<`, `>`, `\"`,\n * and `'`.\n * @param {string} un a previously escaped string\n * @returns {string} the unescaped input, and it **throws** an error if\n * the input type is unexpected, except for boolean and numbers,\n * converted as string.\n */\nexport const unescape = un => replace.call(un, es, cape);\n","import IDBMapSync from '@webreflection/idb-map/sync';\nimport $dedent from 'codedent';\nimport { unescape as $unescape } from 'html-escaper';\nimport { io } from './interpreter/_io.js';\n\n/** @type {(tpl: string | TemplateStringsArray, ...values:any[]) => string} */\nconst dedent = $dedent;\n\n/** @type {(value:string) => string} */\nconst unescape = $unescape;\n\nconst { isArray } = Array;\n\nconst { assign, create, defineProperties, defineProperty, entries } = Object;\n\nconst { all, resolve } = new Proxy(Promise, {\n get: ($, name) => $[name].bind($),\n});\n\nconst absoluteURL = (path, base = location.href) =>\n new URL(path, base.replace(/^blob:/, '')).href;\n\nfunction fixedRelative(path) {\n 'use strict';\n return path.startsWith('.') ? absoluteURL(path, this) : path;\n}\n\n/* c8 ignore start */\nlet id = 0;\nconst nodeInfo = (node, type) => ({\n id: node.id || (node.id = `${type}-w${id++}`),\n tag: node.tagName\n});\n\n/**\n * Notify the main thread about element \"readiness\".\n * @param {HTMLScriptElement | HTMLElement} target the script or custom-type element\n * @param {string} type the custom/type as event prefix\n * @param {string} what the kind of event to dispatch, i.e. `ready` or `done`\n * @param {boolean} [worker = false] `true` if dispatched form a worker, `false` by default if in main\n * @param {globalThis.CustomEvent} [CustomEvent = globalThis.CustomEvent] the `CustomEvent` to use\n */\nconst dispatch = (target, type, what, worker = false, CE = CustomEvent) => {\n target.dispatchEvent(\n new CE(`${type}:${what}`, {\n bubbles: true,\n detail: { worker },\n })\n );\n};\n\nexport const createFunction = value => Function(`'use strict';return (${value})`)();\n\nexport const createResolved = (module, type, config, interpreter) => ({\n type,\n config,\n interpreter,\n io: io.get(interpreter),\n run: (code, ...args) => module.run(interpreter, code, ...args),\n runAsync: (code, ...args) => module.runAsync(interpreter, code, ...args),\n runEvent: (...args) => module.runEvent(interpreter, ...args),\n});\n\nconst dropLine0 = code => code.replace(/^(?:\\n|\\r\\n)/, '');\n\nexport const createOverload = (module, name, before, after) => {\n const method = module[name].bind(module);\n module[name] = name === 'run' ?\n // patch the sync method\n (interpreter, code, ...args) => {\n if (before) method(interpreter, before, ...args);\n const result = method(interpreter, dropLine0(code), ...args);\n if (after) method(interpreter, after, ...args);\n return result;\n } :\n // patch the async one\n async (interpreter, code, ...args) => {\n if (before) await method(interpreter, before, ...args);\n const result = await method(interpreter, dropLine0(code), ...args);\n if (after) await method(interpreter, after, ...args);\n return result;\n };\n};\n\nexport const js_modules = Symbol.for('polyscript.js_modules');\n\nconst jsModules = new Map;\ndefineProperty(globalThis, js_modules, { value: jsModules });\n\nexport const JSModules = new Proxy(jsModules, {\n get: (map, name) => map.get(name),\n has: (map, name) => map.has(name),\n ownKeys: map => [...map.keys()],\n});\n\nconst has = (_, field) => !field.startsWith('_');\n\nconst proxy = (modules, name) => new Proxy(\n modules,\n { has, get: (modules, field) => modules[name][field] }\n);\n\nexport const registerJSModules = (type, module, interpreter, modules) => {\n // Pyodide resolves JS modules magically\n if (type === 'pyodide') return;\n\n // other runtimes need this pretty ugly dance (it works though)\n const jsModules = 'polyscript.js_modules';\n for (const name of Reflect.ownKeys(modules))\n module.registerJSModule(interpreter, `${jsModules}.${name}`, proxy(modules, name));\n module.registerJSModule(interpreter, jsModules, modules);\n};\n\nexport const importJS = (source, name) => import(source).then(esm => {\n jsModules.set(name, { ...esm });\n});\n\nexport const importCSS = href => new Promise((onload, onerror) => {\n if (document.querySelector(`link[rel=\"stylesheet\"][href=\"${href}\"]`)) {\n onload();\n }\n else {\n document.head.append(\n assign(\n document.createElement('link'),\n { rel: 'stylesheet', href, onload, onerror },\n )\n );\n }\n});\n\nexport const isCSS = source => /\\.css$/i.test(new URL(source).pathname);\n\nexport const isSync = element =>\n /^(?:false|0|no)$/i.test(element.getAttribute('async'));\n\n/* c8 ignore stop */\n\nexport {\n IDBMapSync,\n dedent, unescape,\n dispatch,\n isArray,\n assign,\n create,\n defineProperties,\n defineProperty,\n entries,\n all,\n resolve,\n absoluteURL,\n fixedRelative,\n nodeInfo,\n};\n","import fetch from '@webreflection/fetch';\n\nimport { absoluteURL, all, entries, importCSS, importJS, isArray, isCSS } from '../utils.js';\n\nexport const RUNNING_IN_WORKER = !globalThis.window;\n\n// REQUIRES INTEGRATION TEST\n/* c8 ignore start */\n\n// This should be the only helper needed for all Emscripten based FS exports\nexport const writeFile = ({ FS, PATH, PATH_FS }, path, buffer) => {\n const absPath = PATH_FS.resolve(path);\n const dirPath = PATH.dirname(absPath);\n if (FS.mkdirTree) FS.mkdirTree(dirPath);\n else mkdirTree(FS, dirPath);\n return FS.writeFile(absPath, new Uint8Array(buffer), {\n canOwn: true,\n });\n};\n\n// This is instead a fallback for Lua or others\nexport const writeFileShim = (FS, path, buffer) => {\n mkdirTree(FS, dirname(path));\n path = resolve(FS, path);\n return FS.writeFile(path, new Uint8Array(buffer), { canOwn: true });\n};\n\nconst dirname = (path) => {\n const tree = path.split('/');\n tree.pop();\n return tree.join('/');\n};\n\nexport const mkdirTree = (FS, path) => {\n const current = [];\n for (const branch of path.split('/')) {\n if (branch === '.' || branch === '..') continue;\n current.push(branch);\n if (branch) FS.mkdir(current.join('/'));\n }\n};\n\nconst resolve = (FS, path) => {\n const tree = [];\n for (const branch of path.split('/')) {\n switch (branch) {\n case '':\n break;\n case '.':\n break;\n case '..':\n tree.pop();\n break;\n default:\n tree.push(branch);\n }\n }\n return [FS.cwd()].concat(tree).join('/').replace(/^\\/+/, '/');\n};\n\nconst calculateFetchPaths = (config_fetch) => {\n for (const { files, to_file, from = '' } of config_fetch) {\n if (files !== undefined && to_file !== undefined)\n throw new Error(\n 'Cannot use \\'to_file\\' and \\'files\\' parameters together!',\n );\n if (files === undefined && to_file === undefined && from.endsWith('/'))\n throw new Error(\n `Couldn't determine the filename from the path ${from}, please supply 'to_file' parameter.`,\n );\n }\n return config_fetch.flatMap(\n ({ from = '', to_folder = '.', to_file, files }) => {\n if (isArray(files))\n return files.map((file) => ({\n url: joinPaths([from, file]),\n path: joinPaths([to_folder, file]),\n }));\n const filename = to_file || from.slice(1 + from.lastIndexOf('/'));\n return [{ url: from, path: joinPaths([to_folder, filename]) }];\n },\n );\n};\n\nconst joinPaths = (parts) => {\n const res = parts\n .map((part) => part.trim().replace(/(^[/]*|[/]*$)/g, ''))\n .filter((p) => p !== '' && p !== '.')\n .join('/');\n\n return parts[0].startsWith('/') ? `/${res}` : res;\n};\n\nconst fetchBuffer = (url, baseURL) =>\n fetch(absoluteURL(url, baseURL)).arrayBuffer();\n\nexport const fetchPaths = (module, interpreter, config_fetch, baseURL) =>\n all(\n calculateFetchPaths(config_fetch).map(({ url, path }) =>\n fetchBuffer(url, baseURL)\n .then((buffer) => module.writeFile(interpreter, path, buffer)),\n ),\n );\n\n const fillName = (source, dest) => dest.endsWith('/') ?\n `${dest}${source.split('/').pop()}` : dest;\n\nconst parseTemplate = (src, map) => src.replace(\n /\\{.+?\\}/g,\n k => {\n if (!map.has(k))\n throw new SyntaxError(`Invalid template: ${k}`);\n return map.get(k);\n }\n);\n\nconst calculateFilesPaths = files => {\n const map = new Map;\n const targets = new Set;\n const sourceDest = [];\n for (const [source, dest] of entries(files)) {\n if (/^\\{.+\\}$/.test(source)) {\n if (map.has(source))\n throw new SyntaxError(`Duplicated template: ${source}`);\n map.set(source, parseTemplate(dest, map));\n }\n else {\n const url = parseTemplate(source, map);\n const path = fillName(url, parseTemplate(dest || './', map));\n if (targets.has(path) && !path.endsWith('/*'))\n throw new SyntaxError(`Duplicated destination: ${path}`);\n targets.add(path);\n sourceDest.push({ url, path });\n }\n }\n return sourceDest;\n};\n\nexport const fetchFiles = (module, interpreter, config_files, baseURL) =>\n all(\n calculateFilesPaths(config_files).map(({ url, path }) =>\n fetchBuffer(url, baseURL)\n .then((buffer) => module.writeFile(\n interpreter,\n path,\n buffer,\n url,\n )),\n ),\n );\n\nexport const fetchJSModules = ({ main, worker }, baseURL) => {\n const promises = [];\n if (worker && RUNNING_IN_WORKER) {\n for (let [source, name] of entries(worker)) {\n source = absoluteURL(source, baseURL);\n promises.push(importJS(source, name));\n }\n }\n if (main && !RUNNING_IN_WORKER) {\n for (let [source, name] of entries(main)) {\n source = absoluteURL(source, baseURL);\n if (isCSS(source)) importCSS(source);\n else promises.push(importJS(source, name));\n }\n }\n return all(promises);\n};\n\nexport const createProgress = prefix => detail => {\n dispatchEvent(new CustomEvent(`${prefix}:progress`, { detail }));\n};\n/* c8 ignore stop */\n","//@ts-check\r\n\r\nimport {\r\n FALSE,\r\n TRUE,\r\n\r\n NULL,\r\n\r\n NUMBER,\r\n UI8,\r\n NAN,\r\n INFINITY,\r\n N_INFINITY,\r\n ZERO,\r\n N_ZERO,\r\n\r\n BIGINT,\r\n BIGUINT,\r\n STRING,\r\n SYMBOL,\r\n\r\n ARRAY,\r\n BUFFER,\r\n DATE,\r\n ERROR,\r\n MAP,\r\n OBJECT,\r\n REGEXP,\r\n SET,\r\n VIEW,\r\n\r\n RECURSION\r\n} from './types.js';\r\n\r\nimport { decoder as textDecoder } from '../utils/text.js';\r\nimport { defineProperty } from '../utils/index.js';\r\nimport { fromSymbol } from '../utils/symbol.js';\r\nimport { dv, u8a8 } from './views.js';\r\n\r\n/** @typedef {Map<number, any>} Cache */\r\n\r\n/**\r\n * @param {Cache} cache\r\n * @param {number} index\r\n * @param {any} value\r\n * @returns {any}\r\n */\r\nconst $ = (cache, index, value) => {\r\n cache.set(index, value);\r\n return value;\r\n};\r\n\r\n/**\r\n * @param {Uint8Array} input\r\n */\r\nconst number = input => {\r\n u8a8[0] = input[i++];\r\n u8a8[1] = input[i++];\r\n u8a8[2] = input[i++];\r\n u8a8[3] = input[i++];\r\n u8a8[4] = input[i++];\r\n u8a8[5] = input[i++];\r\n u8a8[6] = input[i++];\r\n u8a8[7] = input[i++];\r\n};\r\n\r\n/**\r\n * @param {Uint8Array} input\r\n * @returns {number}\r\n */\r\nconst size = input => {\r\n u8a8[0] = input[i++];\r\n u8a8[1] = input[i++];\r\n u8a8[2] = input[i++];\r\n u8a8[3] = input[i++];\r\n return dv.getUint32(0, true);\r\n};\r\n\r\n/**\r\n * @param {Uint8Array} input\r\n * @param {Cache} cache\r\n * @returns {any}\r\n */\r\nconst deflate = (input, cache) => {\r\n switch (input[i++]) {\r\n case NUMBER: {\r\n number(input);\r\n return dv.getFloat64(0, true);\r\n }\r\n case UI8: return input[i++];\r\n case OBJECT: {\r\n const object = $(cache, i - 1, {});\r\n for (let j = 0, length = size(input); j < length; j++)\r\n object[deflate(input, cache)] = deflate(input, cache);\r\n return object;\r\n }\r\n case ARRAY: {\r\n const array = $(cache, i - 1, []);\r\n for (let j = 0, length = size(input); j < length; j++)\r\n array.push(deflate(input, cache));\r\n return array;\r\n }\r\n case VIEW: {\r\n const index = i - 1;\r\n const name = deflate(input, cache);\r\n return $(cache, index, new globalThis[name](deflate(input, cache)));\r\n }\r\n case BUFFER: {\r\n const index = i - 1;\r\n const length = size(input);\r\n return $(cache, index, input.slice(i, i += length).buffer);\r\n }\r\n case STRING: {\r\n const index = i - 1;\r\n const length = size(input);\r\n // this could be a subarray but it's not supported on the Web and\r\n // it wouldn't work with arrays instead of typed arrays.\r\n return $(cache, index, textDecoder.decode(input.slice(i, i += length)));\r\n }\r\n case DATE: {\r\n return $(cache, i - 1, new Date(deflate(input, cache)));\r\n }\r\n case MAP: {\r\n const map = $(cache, i - 1, new Map);\r\n for (let j = 0, length = size(input); j < length; j++)\r\n map.set(deflate(input, cache), deflate(input, cache));\r\n return map;\r\n }\r\n case SET: {\r\n const set = $(cache, i - 1, new Set);\r\n for (let j = 0, length = size(input); j < length; j++)\r\n set.add(deflate(input, cache));\r\n return set;\r\n }\r\n case ERROR: {\r\n const name = deflate(input, cache);\r\n const message = deflate(input, cache);\r\n const stack = deflate(input, cache);\r\n const Class = globalThis[name] || Error;\r\n const error = new Class(message);\r\n return $(cache, i - 1, defineProperty(error, 'stack', { value: stack }));\r\n }\r\n case REGEXP: {\r\n const source = deflate(input, cache);\r\n const flags = deflate(input, cache);\r\n return $(cache, i - 1, new RegExp(source, flags));\r\n }\r\n case FALSE: return false;\r\n case TRUE: return true;\r\n case NAN: return NaN;\r\n case INFINITY: return Infinity;\r\n case N_INFINITY: return -Infinity;\r\n case ZERO: return 0;\r\n case N_ZERO: return -0;\r\n case NULL: return null;\r\n case BIGINT: return (number(input), dv.getBigInt64(0, true));\r\n case BIGUINT: return (number(input), dv.getBigUint64(0, true));\r\n case SYMBOL: return fromSymbol(deflate(input, cache));\r\n case RECURSION: return cache.get(size(input));\r\n // this covers functions too\r\n default: return undefined;\r\n }\r\n};\r\n\r\nlet i = 0;\r\n\r\n/**\r\n * @param {Uint8Array} value\r\n * @returns {any}\r\n */\r\nexport const decode = value => {\r\n i = 0;\r\n return deflate(value, new Map);\r\n};\r\n\r\n/**\r\n * @param {{ byteOffset?: number }} [options]\r\n * @returns {(length: number, buffer: ArrayBufferLike) => any}\r\n */\r\nexport const decoder = ({ byteOffset = 0 } = {}) => (length, buffer) => decode(\r\n new Uint8Array(buffer, byteOffset, length)\r\n);\r\n","import * as DIRECT from 'reflected-ffi/direct';\nconst JSON = { parse: DIRECT.decode, stringify: DIRECT.encode };\n\nimport { fetchFiles, fetchJSModules, fetchPaths } from './_utils.js';\nimport { IDBMapSync, dedent } from '../utils.js';\nimport { io } from './_io.js';\n\nexport const loader = new WeakMap();\n\n// REQUIRES INTEGRATION TEST\n/* c8 ignore start */\nexport const loadProgress = async (self, progress, interpreter, config, baseURL) => {\n if (config.files) {\n progress('Loading files');\n await fetchFiles(self, interpreter, config.files, baseURL);\n progress('Loaded files');\n }\n if (config.fetch) {\n progress('Loading fetch');\n await fetchPaths(self, interpreter, config.fetch, baseURL);\n progress('Loaded fetch');\n }\n if (config.js_modules) {\n progress('Loading JS modules');\n await fetchJSModules(config.js_modules, baseURL);\n progress('Loaded JS modules');\n }\n};\n\nexport const registerJSModule = (interpreter, name, value) => {\n if (name === 'polyscript') {\n value.lazy_py_modules = async (...packages) => {\n await loader.get(interpreter)(packages);\n return packages.map(name => interpreter.pyimport(name));\n };\n value.storage = async (name) => {\n const storage = new IDBMapSync(name);\n await storage.sync();\n return storage;\n };\n value.JSON = JSON;\n }\n interpreter.registerJsModule(name, value);\n};\n\nexport const getFormat = (path, url) => {\n if (path.endsWith('/*')) {\n if (/\\.(zip|whl|tgz|tar(?:\\.gz)?)$/.test(url))\n return RegExp.$1;\n throw new Error(`Unsupported archive ${url}`);\n }\n return '';\n};\n\nexport const run = (interpreter, code, ...args) => {\n try {\n return interpreter.runPython(dedent(code), ...args);\n }\n catch (error) {\n io.get(interpreter).stderr(error);\n }\n};\n\nexport const runAsync = async (interpreter, code, ...args) => {\n try {\n return await interpreter.runPythonAsync(dedent(code), ...args);\n }\n catch (error) {\n io.get(interpreter).stderr(error);\n }\n};\n\nexport const runEvent = async (interpreter, code, event) => {\n // allows method(event) as well as namespace.method(event)\n // it does not allow fancy brackets names for now\n const [name, ...keys] = code.split('.');\n let target = interpreter.globals.get(name);\n let context;\n for (const key of keys) [context, target] = [target, target[key]];\n try {\n await target.call(context, event);\n }\n catch (error) {\n io.get(interpreter).stderr(error);\n }\n};\n/* c8 ignore stop */\n","// ⚠️ DO NOT MODIFY - SOURCE FILE: \"../../python/mip.py\"\nexport default 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')\");","/* c8 ignore start */\n\n// toml\nexport const toml = async (text) => (\n await import(/* webpackIgnore: true */'./3rd-party/toml.js')\n).parse(text);\n\n// zip\nexport const zip = () => import(/* webpackIgnore: true */'./3rd-party/zip.js');\n\n/* c8 ignore stop */\n","import { mkdirTree } from './_utils.js';\n\nasync function syncfs(FS, direction) {\n return new Promise((resolve, reject) => {\n FS.syncfs(direction, err => {\n if (err) reject(err);\n else resolve();\n });\n });\n}\n\n// (C) Pyodide https://github.com/pyodide/pyodide - Mozilla Public License Version 2.0\n// JS port of https://github.com/pyodide/pyodide/blob/34fcd02172895d75db369994011409324f9e3cce/src/js/nativefs.ts\nexport function initializeNativeFS(module) {\n const FS = module.FS;\n const MEMFS = module.FS.filesystems.MEMFS;\n const PATH = module.PATH;\n\n const nativeFSAsync = {\n // DIR_MODE: {{{ cDefine('S_IFDIR') }}} | 511 /* 0777 */,\n // FILE_MODE: {{{ cDefine('S_IFREG') }}} | 511 /* 0777 */,\n DIR_MODE: 16384 | 511,\n FILE_MODE: 32768 | 511,\n mount: function (mount) {\n if (!mount.opts.fileSystemHandle) {\n throw new Error('opts.fileSystemHandle is required');\n }\n\n // reuse all of the core MEMFS functionality\n return MEMFS.mount.apply(null, arguments);\n },\n syncfs: async (mount, populate, callback) => {\n try {\n const local = nativeFSAsync.getLocalSet(mount);\n const remote = await nativeFSAsync.getRemoteSet(mount);\n const src = populate ? remote : local;\n const dst = populate ? local : remote;\n await nativeFSAsync.reconcile(mount, src, dst);\n callback(null);\n } catch (e) {\n callback(e);\n }\n },\n // Returns file set of emscripten's filesystem at the mountpoint.\n getLocalSet: (mount) => {\n let entries = Object.create(null);\n\n function isRealDir(p) {\n return p !== '.' && p !== '..';\n }\n\n function toAbsolute(root) {\n return (p) => {\n return PATH.join2(root, p);\n };\n }\n\n let check = FS.readdir(mount.mountpoint)\n .filter(isRealDir)\n .map(toAbsolute(mount.mountpoint));\n\n while (check.length) {\n let path = check.pop();\n let stat = FS.stat(path);\n\n if (FS.isDir(stat.mode)) {\n check.push.apply(\n check,\n FS.readdir(path).filter(isRealDir).map(toAbsolute(path)),\n );\n }\n\n entries[path] = { timestamp: stat.mtime, mode: stat.mode };\n }\n\n return { type: 'local', entries: entries };\n },\n // Returns file set of the real, on-disk filesystem at the mountpoint.\n getRemoteSet: async (mount) => {\n // TODO: this should be a map.\n const entries = Object.create(null);\n\n const handles = await getFsHandles(mount.opts.fileSystemHandle);\n for (const [path, handle] of handles) {\n if (path === '.') continue;\n\n entries[PATH.join2(mount.mountpoint, path)] = {\n timestamp:\n handle.kind === 'file'\n ? (await handle.getFile()).lastModifiedDate\n : new Date(),\n mode:\n handle.kind === 'file'\n ? nativeFSAsync.FILE_MODE\n : nativeFSAsync.DIR_MODE,\n };\n }\n\n return { type: 'remote', entries, handles };\n },\n loadLocalEntry: (path) => {\n const lookup = FS.lookupPath(path);\n const node = lookup.node;\n const stat = FS.stat(path);\n\n if (FS.isDir(stat.mode)) {\n return { timestamp: stat.mtime, mode: stat.mode };\n } else if (FS.isFile(stat.mode)) {\n node.contents = MEMFS.getFileDataAsTypedArray(node);\n return {\n timestamp: stat.mtime,\n mode: stat.mode,\n contents: node.contents,\n };\n } else {\n throw new Error('node type not supported');\n }\n },\n storeLocalEntry: (path, entry) => {\n if (FS.isDir(entry['mode'])) {\n FS.mkdirTree(path, entry['mode']);\n } else if (FS.isFile(entry['mode'])) {\n FS.writeFile(path, entry['contents'], { canOwn: true });\n } else {\n throw new Error('node type not supported');\n }\n\n FS.chmod(path, entry['mode']);\n FS.utime(path, entry['timestamp'], entry['timestamp']);\n },\n removeLocalEntry: (path) => {\n var stat = FS.stat(path);\n\n if (FS.isDir(stat.mode)) {\n FS.rmdir(path);\n } else if (FS.isFile(stat.mode)) {\n FS.unlink(path);\n }\n },\n loadRemoteEntry: async (handle) => {\n if (handle.kind === 'file') {\n const file = await handle.getFile();\n return {\n contents: new Uint8Array(await file.arrayBuffer()),\n mode: nativeFSAsync.FILE_MODE,\n timestamp: file.lastModifiedDate,\n };\n } else if (handle.kind === 'directory') {\n return {\n mode: nativeFSAsync.DIR_MODE,\n timestamp: new Date(),\n };\n } else {\n throw new Error('unknown kind: ' + handle.kind);\n }\n },\n storeRemoteEntry: async (handles, path, entry) => {\n const parentDirHandle = handles.get(PATH.dirname(path));\n const handle = FS.isFile(entry.mode)\n ? await parentDirHandle.getFileHandle(PATH.basename(path), {\n create: true,\n })\n : await parentDirHandle.getDirectoryHandle(PATH.basename(path), {\n create: true,\n });\n if (handle.kind === 'file') {\n const writable = await handle.createWritable();\n await writable.write(entry.contents);\n await writable.close();\n }\n handles.set(path, handle);\n },\n removeRemoteEntry: async (handles, path) => {\n const parentDirHandle = handles.get(PATH.dirname(path));\n await parentDirHandle.removeEntry(PATH.basename(path));\n handles.delete(path);\n },\n reconcile: async (mount, src, dst) => {\n let total = 0;\n\n const create = [];\n Object.keys(src.entries).forEach(function (key) {\n const e = src.entries[key];\n const e2 = dst.entries[key];\n if (\n !e2 ||\n (FS.isFile(e.mode) &&\n e['timestamp'].getTime() > e2['timestamp'].getTime())\n ) {\n create.push(key);\n total++;\n }\n });\n // sort paths in ascending order so directory entries are created\n // before the files inside them\n create.sort();\n\n const remove = [];\n Object.keys(dst.entries).forEach(function (key) {\n if (!src.entries[key]) {\n remove.push(key);\n total++;\n }\n });\n // sort paths in descending order so files are deleted before their\n // parent directories\n remove.sort().reverse();\n\n if (!total) {\n return;\n }\n\n const handles = src.type === 'remote' ? src.handles : dst.handles;\n\n for (const path of create) {\n const relPath = PATH.normalize(\n path.replace(mount.mountpoint, '/'),\n ).substring(1);\n if (dst.type === 'local') {\n const handle = handles.get(relPath);\n const entry = await nativeFSAsync.loadRemoteEntry(handle);\n nativeFSAsync.storeLocalEntry(path, entry);\n } else {\n const entry = nativeFSAsync.loadLocalEntry(path);\n await nativeFSAsync.storeRemoteEntry(handles, relPath, entry);\n }\n }\n\n for (const path of remove) {\n if (dst.type === 'local') {\n nativeFSAsync.removeLocalEntry(path);\n } else {\n const relPath = PATH.normalize(\n path.replace(mount.mountpoint, '/'),\n ).substring(1);\n await nativeFSAsync.removeRemoteEntry(handles, relPath);\n }\n }\n },\n };\n\n module.FS.filesystems.NATIVEFS_ASYNC = nativeFSAsync;\n\n function ensureMountPathExists(path) {\n if (FS.mkdirTree) FS.mkdirTree(path);\n else mkdirTree(FS, path);\n\n const { node } = FS.lookupPath(path, {\n follow_mount: false,\n });\n\n if (FS.isMountpoint(node)) {\n throw new Error(`path '${path}' is already a file system mount point`);\n }\n if (!FS.isDir(node.mode)) {\n throw new Error(`path '${path}' points to a file not a directory`);\n }\n // eslint-disable-next-line\n for (const _ in node.contents) {\n throw new Error(`directory '${path}' is not empty`);\n }\n }\n\n return async function mountNativeFS(path, fileSystemHandle) {\n if (fileSystemHandle.constructor.name !== 'FileSystemDirectoryHandle') {\n throw new TypeError(\n 'Expected argument \\'fileSystemHandle\\' to be a FileSystemDirectoryHandle',\n );\n }\n ensureMountPathExists(path);\n \n FS.mount(\n FS.filesystems.NATIVEFS_ASYNC,\n { fileSystemHandle },\n path,\n );\n\n // sync native ==> browser\n await syncfs(FS, true);\n\n return {\n // sync browser ==> native\n syncfs: async () => await syncfs(FS, false),\n };\n };\n}\n\nconst getFsHandles = async (dirHandle) => {\n const handles = [];\n\n async function collect(curDirHandle) {\n for await (const entry of curDirHandle.values()) {\n handles.push(entry);\n if (entry.kind === 'directory') {\n await collect(entry);\n }\n }\n }\n\n await collect(dirHandle);\n\n const result = new Map();\n result.set('.', dirHandle);\n for (const handle of handles) {\n const relativePath = (await dirHandle.resolve(handle)).join('/');\n result.set(relativePath, handle);\n }\n return result;\n};\n","import fetch from '@webreflection/fetch';\n\nimport { createProgress, writeFile } from './_utils.js';\nimport { getFormat, loader, loadProgress, registerJSModule, run, runAsync, runEvent } from './_python.js';\nimport { stdio, buffered } from './_io.js';\nimport { absoluteURL, fixedRelative } from '../utils.js';\nimport mip from '../python/mip.js';\nimport { zip } from '../3rd-party.js';\n\nimport { initializeNativeFS } from './_nativefs.js';\n\nconst type = 'micropython';\n\n// REQUIRES INTEGRATION TEST\n/* c8 ignore start */\nconst mkdir = (FS, path) => {\n try {\n FS.mkdir(path);\n }\n // eslint-disable-next-line no-unused-vars\n catch (_) {\n // ignore as there's no path.exists here\n }\n};\n\nconst progress = createProgress('mpy');\n\nexport default {\n type,\n module: (version = '1.25.0') =>\n `https://cdn.jsdelivr.net/npm/@micropython/micropython-webassembly-pyscript@${version}/micropython.mjs`,\n async engine({ loadMicroPython }, config, url, baseURL) {\n const { stderr, stdout, get } = stdio({\n stderr: buffered(console.error),\n stdout: buffered(console.log),\n });\n url = url.replace(/\\.m?js$/, '.wasm');\n progress('Loading MicroPython');\n const interpreter = await get(loadMicroPython({ linebuffer: false, stderr, stdout, url }));\n const py_imports = importPackages.bind(this, interpreter, baseURL);\n loader.set(interpreter, py_imports);\n await loadProgress(this, progress, interpreter, config, baseURL);\n // Install Micropython Package\n this.writeFile(interpreter, './mip.py', mip);\n if (config.packages) {\n progress('Loading packages');\n await py_imports(config.packages.map(fixedRelative, baseURL));\n progress('Loaded packages');\n }\n progress('Loaded MicroPython');\n if (!interpreter.mountNativeFS)\n interpreter.mountNativeFS = initializeNativeFS(interpreter._module);\n return interpreter;\n },\n registerJSModule,\n run,\n runAsync,\n runEvent,\n transform: (interpreter, value) => interpreter.PyProxy.toJs(value),\n writeFile: (interpreter, path, buffer, url) => {\n const { FS, _module: { PATH, PATH_FS } } = interpreter;\n const fs = { FS, PATH, PATH_FS };\n const format = getFormat(path, url);\n if (format) {\n const extractDir = path.slice(0, -1);\n if (extractDir !== './') FS.mkdir(extractDir);\n switch (format) {\n case 'whl':\n case 'zip': {\n const blob = new Blob([buffer], { type: 'application/zip' });\n return zip().then(async ({ BlobReader, Uint8ArrayWriter, ZipReader }) => {\n const zipFileReader = new BlobReader(blob);\n const zipReader = new ZipReader(zipFileReader);\n for (const entry of await zipReader.getEntries()) {\n const { directory, filename } = entry;\n const name = extractDir + filename;\n if (directory) mkdir(FS, name);\n else {\n mkdir(FS, PATH.dirname(name));\n const buffer = await entry.getData(new Uint8ArrayWriter);\n FS.writeFile(name, buffer, {\n canOwn: true,\n });\n }\n }\n zipReader.close();\n });\n }\n case 'tgz':\n case 'tar.gz': {\n const TMP = './_.tar.gz';\n writeFile(fs, TMP, buffer);\n interpreter.runPython(`\n import os, gzip, tarfile\n tar = tarfile.TarFile(fileobj=gzip.GzipFile(fileobj=open(\"${TMP}\", \"rb\")))\n for f in tar:\n name = f\"${extractDir}{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(\"${TMP}\")\n `);\n return;\n }\n }\n }\n return writeFile(fs, path, buffer);\n },\n};\n\nasync function importPackages(interpreter, baseURL, packages) {\n let mip;\n for (const mpyPackage of packages) {\n if (mpyPackage.endsWith('.whl')) {\n const url = absoluteURL(mpyPackage, baseURL);\n const buffer = await fetch(url).arrayBuffer();\n await this.writeFile(interpreter, './*', buffer, url);\n }\n else {\n if (!mip) mip = interpreter.pyimport('mip');\n mip.install(mpyPackage);\n }\n }\n}\n/* c8 ignore stop */\n","import { createProgress, writeFile } from './_utils.js';\nimport { getFormat, loader, loadProgress, registerJSModule, run, runAsync, runEvent } from './_python.js';\nimport { stdio } from './_io.js';\nimport { IDBMapSync, isArray, fixedRelative } from '../utils.js';\n\nconst type = 'pyodide';\nconst toJsOptions = { dict_converter: Object.fromEntries };\n\nconst { stringify } = JSON;\n\nconst { apply } = Reflect;\nconst FunctionPrototype = Function.prototype;\n\n// REQUIRES INTEGRATION TEST\n/* c8 ignore start */\nconst overrideMethod = method => function (...args) {\n return apply(method, this, args);\n};\n\nlet pyproxy, to_js;\nconst override = intercept => {\n\n const proxies = new WeakMap;\n\n const patch = args => {\n for (let arg, i = 0; i < args.length; i++) {\n switch (typeof(arg = args[i])) {\n case 'object':\n if (arg === null) break;\n // falls through\n case 'function': {\n if (pyproxy in arg && !arg[pyproxy].shared?.gcRegistered) {\n intercept = false;\n let proxy = proxies.get(arg)?.deref();\n if (!proxy) {\n proxy = to_js(arg);\n const wr = new WeakRef(proxy);\n proxies.set(arg, wr);\n proxies.set(proxy, wr);\n }\n args[i] = proxy;\n intercept = true;\n }\n break;\n }\n }\n }\n };\n\n // the patch\n Object.defineProperties(FunctionPrototype, {\n apply: {\n value(context, args) {\n if (intercept) patch(args);\n return apply(this, context, args);\n }\n },\n call: {\n value(context, ...args) {\n if (intercept) patch(args);\n return apply(this, context, args);\n }\n }\n });\n};\n\nconst progress = createProgress('py');\nconst indexURLs = new WeakMap();\n\nexport default {\n type,\n module: (version = '0.27.7') =>\n `https://cdn.jsdelivr.net/pyodide/v${version}/full/pyodide.mjs`,\n async engine({ loadPyodide, version }, config, url, baseURL) {\n progress('Loading Pyodide');\n let { packages, index_urls } = config;\n if (packages) packages = packages.map(fixedRelative, baseURL);\n progress('Loading Storage');\n const indexURL = url.slice(0, url.lastIndexOf('/'));\n // each pyodide version shares its own cache\n const storage = new IDBMapSync(`${indexURL}@${version}`);\n const options = { indexURL };\n const save = config.packages_cache !== 'never';\n await storage.sync();\n // packages_cache = 'never' means: erase the whole DB\n if (!save) storage.clear();\n // otherwise check if cache is known\n else if (packages) {\n // packages_cache = 'passthrough' means: do not use micropip.install\n if (config.packages_cache === 'passthrough') {\n options.packages = packages;\n packages = null;\n storage.clear();\n }\n else {\n packages = packages.sort();\n // packages are uniquely stored as JSON key\n const key = stringify(packages);\n if (storage.has(key)) {\n const blob = new Blob(\n [storage.get(key)],\n { type: 'application/json' },\n );\n // this should be used to bootstrap loadPyodide\n options.lockFileURL = URL.createObjectURL(blob);\n // versions are not currently understood by pyodide when\n // a lockFileURL is used instead of micropip.install(packages)\n // https://github.com/pyodide/pyodide/issues/5135#issuecomment-2441038644\n // https://github.com/pyscript/pyscript/issues/2245\n options.packages = packages.map(name => name.split(/[>=<]=/)[0]);\n packages = null;\n }\n }\n }\n progress('Loaded Storage');\n const { stderr, stdout, get } = stdio();\n const interpreter = await get(\n loadPyodide({ stderr, stdout, ...options }),\n );\n if (config.debug) interpreter.setDebug(true);\n const py_imports = importPackages.bind(interpreter);\n if (index_urls) indexURLs.set(interpreter, index_urls);\n loader.set(interpreter, py_imports);\n await loadProgress(this, progress, interpreter, config, baseURL);\n // if cache wasn't know, import and freeze it for the next time\n if (packages) await py_imports(packages, storage, save);\n await storage.close();\n if (options.lockFileURL) URL.revokeObjectURL(options.lockFileURL);\n progress('Loaded Pyodide');\n if (config.experimental_create_proxy === 'auto') {\n interpreter.runPython([\n 'import js',\n 'from pyodide.ffi import to_js',\n 'o=js.Object.fromEntries',\n 'js.experimental_create_proxy=lambda r:to_js(r,dict_converter=o)'\n ].join(';'), { globals: interpreter.toPy({}) });\n to_js = globalThis.experimental_create_proxy;\n delete globalThis.experimental_create_proxy;\n [pyproxy] = Reflect.ownKeys(to_js).filter(\n k => (\n typeof k === 'symbol' &&\n String(k) === 'Symbol(pyproxy.attrs)'\n )\n );\n override(true);\n }\n return interpreter;\n },\n registerJSModule,\n run: overrideMethod(run),\n runAsync: overrideMethod(runAsync),\n runEvent: overrideMethod(runEvent),\n transform: (interpreter, value) => apply(transform, interpreter, [value]),\n writeFile: (interpreter, path, buffer, url) => {\n const format = getFormat(path, url);\n if (format) {\n return interpreter.unpackArchive(buffer, format, {\n extractDir: path.slice(0, -1)\n });\n }\n const { FS, PATH, _module: { PATH_FS } } = interpreter;\n return writeFile({ FS, PATH, PATH_FS }, path, buffer);\n },\n};\n\nfunction transform(value) {\n const { ffi: { PyProxy } } = this;\n if (value && typeof value === 'object') {\n if (value instanceof PyProxy) return value.toJs(toJsOptions);\n // I believe this case is for LiteralMap which is not a PyProxy\n // and yet it needs to be re-converted to something useful.\n if (value instanceof Map) return new Map([...value.entries()]);\n if (isArray(value)) return value.map(transform, this);\n }\n return value;\n}\n\n// exposed utility to import packages via polyscript.lazy_py_modules\nasync function importPackages(packages, storage, save = false) {\n // temporary patch/fix console.log which is used\n // not only by Pyodide but by micropip too and there's\n // no way to intercept those calls otherwise\n const { log } = console;\n const _log = (detail, ...rest) => {\n log(detail, ...rest);\n console.log = log;\n progress(detail);\n console.log = _log;\n };\n console.log = _log;\n await this.loadPackage('micropip');\n const micropip = this.pyimport('micropip');\n if (indexURLs.has(this)) micropip.set_index_urls(indexURLs.get(this));\n await micropip.install(packages, { keep_going: true });\n console.log = log;\n if (save && (storage instanceof IDBMapSync)) {\n const frozen = micropip.freeze();\n storage.set(stringify(packages), frozen);\n }\n micropip.destroy();\n}\n/* c8 ignore stop */\n","import fetch from '@webreflection/fetch';\n\nimport { dedent } from '../utils.js';\nimport { fetchFiles, fetchJSModules, fetchPaths } from './_utils.js';\n\nconst type = 'ruby-wasm-wasi';\nconst jsType = type.replace(/\\W+/g, '_');\n\n// MISSING:\n// * there is no VFS apparently or I couldn't reach any\n// * I've no idea how to override the stderr and stdout\n// * I've no idea how to import packages\n\n// REQUIRES INTEGRATION TEST\n/* c8 ignore start */\nexport default {\n type,\n experimental: true,\n module: (version = '2.7.1') =>\n `https://cdn.jsdelivr.net/npm/@ruby/3.2-wasm-wasi@${version}/dist/browser/+esm`,\n async engine({ DefaultRubyVM }, config, url, baseURL) {\n url = url.replace(/\\/browser\\/\\+esm$/, '/ruby.wasm');\n const buffer = await fetch(url).arrayBuffer();\n const module = await WebAssembly.compile(buffer);\n const { vm: interpreter } = await DefaultRubyVM(module);\n if (config.files) await fetchFiles(this, interpreter, config.files, baseURL);\n if (config.fetch) await fetchPaths(this, interpreter, config.fetch, baseURL);\n if (config.js_modules) await fetchJSModules(config.js_modules, baseURL);\n return interpreter;\n },\n // Fallback to globally defined module fields (i.e. $xworker)\n registerJSModule(interpreter, name, value) {\n name = name.replace(/\\W+/g, '__');\n const id = `__module_${jsType}_${name}`;\n globalThis[id] = value;\n this.run(interpreter, `require \"js\";$${name}=JS.global[:${id}]`);\n delete globalThis[id];\n },\n run: (interpreter, code, ...args) => interpreter.eval(dedent(code), ...args),\n runAsync: (interpreter, code, ...args) => interpreter.evalAsync(dedent(code), ...args),\n async runEvent(interpreter, code, event) {\n // patch common xworker.onmessage/onerror cases\n if (/^xworker\\.(on\\w+)$/.test(code)) {\n const { $1: name } = RegExp;\n const id = `__module_${jsType}_event`;\n globalThis[id] = event;\n this.run(\n interpreter,\n `require \"js\";$xworker.call(\"${name}\",JS.global[:${id}])`,\n );\n delete globalThis[id];\n } else {\n // Experimental: allows only events by fully qualified method name\n const method = this.run(interpreter, `method(:${code})`);\n await method.call(code, interpreter.wrap(event));\n }\n },\n transform: (_, value) => value,\n writeFile: () => {\n throw new Error(`writeFile is not supported in ${type}`);\n },\n};\n/* c8 ignore stop */\n","import { dedent } from '../utils.js';\nimport { fetchFiles, fetchJSModules, fetchPaths, writeFileShim } from './_utils.js';\nimport { io, stdio } from './_io.js';\n\nconst type = 'wasmoon';\n\n// MISSING:\n// * I've no idea how to import packages\n\n// REQUIRES INTEGRATION TEST\n/* c8 ignore start */\nexport default {\n type,\n module: (version = '1.16.0') =>\n `https://cdn.jsdelivr.net/npm/wasmoon@${version}/+esm`,\n async engine({ LuaFactory, LuaLibraries }, config, _, baseURL) {\n const { stderr, stdout, get } = stdio();\n const interpreter = await get(new LuaFactory().createEngine());\n interpreter.global.getTable(LuaLibraries.Base, (index) => {\n interpreter.global.setField(index, 'print', stdout);\n interpreter.global.setField(index, 'printErr', stderr);\n });\n if (config.files) await fetchFiles(this, interpreter, config.files, baseURL);\n if (config.fetch) await fetchPaths(this, interpreter, config.fetch, baseURL);\n if (config.js_modules) await fetchJSModules(config.js_modules, baseURL);\n return interpreter;\n },\n // Fallback to globally defined module fields\n registerJSModule: (interpreter, name, value) => {\n interpreter.global.set(name, value);\n },\n run: (interpreter, code, ...args) => {\n try {\n return interpreter.doStringSync(dedent(code), ...args);\n }\n catch (error) {\n io.get(interpreter).stderr(error);\n }\n },\n runAsync: async (interpreter, code, ...args) => {\n try {\n return await interpreter.doString(dedent(code), ...args);\n }\n catch (error) {\n io.get(interpreter).stderr(error);\n }\n },\n runEvent: async (interpreter, code, event) => {\n // allows method(event) as well as namespace.method(event)\n // it does not allow fancy brackets names for now\n const [name, ...keys] = code.split('.');\n let target = interpreter.global.get(name);\n let context;\n for (const key of keys) [context, target] = [target, target[key]];\n try {\n await target.call(context, event);\n }\n catch (error) {\n io.get(interpreter).stderr(error);\n }\n },\n transform: (_, value) => value,\n writeFile: (\n {\n cmodule: {\n module: { FS },\n },\n },\n path,\n buffer,\n ) => writeFileShim(FS, path, buffer),\n};\n/* c8 ignore stop */\n","import { dedent } from '../utils.js';\nimport { fetchFiles, fetchJSModules, fetchPaths } from './_utils.js';\nimport { io, stdio } from './_io.js';\n\nconst type = 'webr';\nconst r = new WeakMap();\nconst fr = new FinalizationRegistry(fn => fn());\n\n// REQUIRES INTEGRATION TEST\n/* c8 ignore start */\nconst run = async (interpreter, code) => {\n const { shelter, destroy, io } = r.get(interpreter);\n const { output, result } = await shelter.captureR(dedent(code));\n for (const { type, data } of output) io[type](data);\n fr.register(result, destroy);\n return result;\n};\n\nexport default {\n type,\n experimental: true,\n module: (version = '0.4.4') =>\n `https://cdn.jsdelivr.net/npm/webr@${version}/dist/webr.mjs`,\n async engine(module, config, _, baseURL) {\n const { get } = stdio();\n const interpreter = new module.WebR();\n await get(interpreter.init().then(() => interpreter));\n const shelter = await new interpreter.Shelter();\n r.set(interpreter, {\n module,\n shelter,\n destroy: shelter.destroy.bind(shelter),\n io: io.get(interpreter),\n });\n if (config.files) await fetchFiles(this, interpreter, config.files, baseURL);\n if (config.fetch) await fetchPaths(this, interpreter, config.fetch, baseURL);\n if (config.js_modules) await fetchJSModules(config.js_modules, baseURL);\n return interpreter;\n },\n // Fallback to globally defined module fields (i.e. $xworker)\n registerJSModule(_, name) {\n console.warn(`Experimental interpreter: module ${name} is not supported (yet)`);\n // TODO: as complex JS objects / modules are not allowed\n // it's not clear how we can bind anything or import a module\n // in a context that doesn't understand methods from JS\n // https://docs.r-wasm.org/webr/latest/convert-js-to-r.html#constructing-r-objects-from-javascript-objects\n },\n run,\n runAsync: run,\n async runEvent(interpreter, code, event) {\n // TODO: WebR cannot convert exoteric objects or any literal\n // to an easy to reason about data/frame ... that conversion\n // is reserved for the future:\n // https://docs.r-wasm.org/webr/latest/convert-js-to-r.html#constructing-r-objects-from-javascript-objects\n await interpreter.evalRVoid(`${code}(event)`, {\n env: { event: { type: [ event.type ] } }\n });\n },\n transform: (_, value) => {\n console.log('transforming', value);\n return value;\n },\n writeFile: () => {\n // MAYBE ???\n },\n};\n/* c8 ignore stop */\n","// ⚠️ Part of this file is automatically generated\n// The :RUNTIMES comment is a delimiter and no code should be written/changed after\n// See rollup/build_interpreters.cjs to know more\n\n/** @type {Map<string, object>} */\nexport const registry = new Map();\n\n/** @type {Map<string, object>} */\nexport const configs = new Map();\n\n/** @type {string[]} */\nexport const selectors = [];\n\n/** @type {string[]} */\nexport const prefixes = [];\n\n/* c8 ignore start */\nexport const interpreter = new Proxy(new Map(), {\n get(map, id) {\n if (!map.has(id)) {\n const [type, ...rest] = id.split('@');\n const interpreter = registry.get(type);\n const url = /^(?:\\.?\\.?\\/|[a-z0-9-]+:\\/\\/)/i.test(rest)\n ? rest.join('@')\n : interpreter.module(...rest);\n map.set(id, {\n url,\n module: import(/* webpackIgnore: true */url),\n engine: interpreter.engine.bind(interpreter),\n });\n }\n const { url, module, engine } = map.get(id);\n return (config, baseURL) =>\n module.then((module) => {\n configs.set(id, config);\n return engine(module, config, url, baseURL);\n });\n },\n});\n/* c8 ignore stop */\n\nconst register = (interpreter) => {\n for (const type of [].concat(interpreter.type)) {\n registry.set(type, interpreter);\n selectors.push(`script[type=\"${type}\"]`);\n prefixes.push(`${type}-`);\n }\n};\n\n//:RUNTIMES\nimport dummy from './interpreter/dummy.js';\nimport micropython from './interpreter/micropython.js';\nimport pyodide from './interpreter/pyodide.js';\nimport ruby_wasm_wasi from './interpreter/ruby-wasm-wasi.js';\nimport wasmoon from './interpreter/wasmoon.js';\nimport webr from './interpreter/webr.js';\nfor (const interpreter of [dummy, micropython, pyodide, ruby_wasm_wasi, wasmoon, webr])\n register(interpreter);\n","import fetch from '@webreflection/fetch';\n\nimport { interpreter } from './interpreters.js';\nimport { absoluteURL, resolve } from './utils.js';\nimport { toml } from './3rd-party.js';\n\nconst { parse } = JSON;\n\n// REQUIRES INTEGRATION TEST\n/* c8 ignore start */\nexport const getConfigURLAndType = (config, configURL = './config.txt') => {\n let type = typeof config;\n if (type === 'string' && /\\.(json|toml|txt)$/.test(config))\n type = RegExp.$1;\n else\n config = configURL;\n return [absoluteURL(config), type];\n};\n\nexport const resolveConfig = (config, configURL, options = {}) => {\n const [absolute, type] = getConfigURLAndType(config, configURL);\n if (type === 'json') {\n options = fetch(absolute).json();\n } else if (type === 'toml') {\n options = fetch(absolute).text().then(toml);\n } else if (type === 'string') {\n options = parseString(config);\n } else if (type === 'object' && config) {\n options = config;\n } else if (type === 'txt' && typeof options === 'string') {\n options = parseString(options);\n }\n config = absolute;\n return [options, config];\n};\n\nconst parseString = config => {\n try {\n return parse(config);\n }\n // eslint-disable-next-line no-unused-vars\n catch (_) {\n return toml(config);\n }\n};\n/* c8 ignore stop */\n\n/**\n * Parse a generic config if it came from an attribute either as URL\n * or as a serialized string. In XWorker case, accepts a pre-defined\n * options to use as it is to avoid needing at all a fetch operation.\n * In latter case, config will be suffixed as `config.txt`.\n * @param {string} id the interpreter name @ version identifier\n * @param {string | object} config optional config file to parse\n * @param {string} [configURL] optional config URL if config is not string\n * @param {object} [options] optional options used to bootstrap XWorker\n * @returns\n */\nexport const getRuntime = (id, config, configURL, options = {}) => {\n if (config) {\n // REQUIRES INTEGRATION TEST\n /* c8 ignore start */\n [options, config] = resolveConfig(config, configURL, options);\n /* c8 ignore stop */\n }\n return resolve(options).then(options => interpreter[id](options, config));\n};\n\n/**\n * @param {string} type the interpreter type\n * @param {string} [version] the optional interpreter version\n * @returns\n */\nexport const getRuntimeID = (type, version = '') =>\n `${type}@${version}`.replace(/@$/, '');\n","// (c) https://github.com/WebReflection/to-json-callback\r\n// brought in here to avoid a dependency for quick testing\r\n\r\n/**\r\n * @param {Function} [callback=this]\r\n * @returns {string}\r\n */\r\nexport default function (callback = this) {\r\n return String(callback).replace(\r\n /^(async\\s*)?(\\bfunction\\b)?(.*?)\\(/,\r\n (_, isAsync, fn, name) => (\r\n name && !fn ?\r\n `${isAsync || \"\"}function ${name}(` :\r\n _\r\n ),\r\n );\r\n};\r\n","import { registry } from './interpreters.js';\n\nconst beforeRun = 'BeforeRun';\nconst afterRun = 'AfterRun';\n\nexport const code = [\n `code${beforeRun}`,\n `code${beforeRun}Async`,\n `code${afterRun}`,\n `code${afterRun}Async`,\n];\n\nexport const js = [\n 'onWorker',\n 'onReady',\n `on${beforeRun}`,\n `on${beforeRun}Async`,\n `on${afterRun}`,\n `on${afterRun}Async`,\n];\n\n/* c8 ignore start */\n// create a copy of the resolved wrapper with the original\n// run and runAsync so that, if used within onBeforeRun/Async\n// or onAfterRun/Async polluted entries won't matter and just\n// the native utilities will be available without seppuku.\n// The same applies if called within `onReady` worker hook.\nexport function patch(resolved, interpreter) {\n const { run, runAsync } = registry.get(this.type);\n return {\n ...resolved,\n run: run.bind(this, interpreter),\n runAsync: runAsync.bind(this, interpreter)\n };\n}\n\n/**\n * Created the wrapper to pass along hooked callbacks.\n * @param {object} module the details module\n * @param {object} ref the node or reference to pass as second argument\n * @param {boolean} isAsync if run should be async\n * @param {function?} before callback to run before\n * @param {function?} after callback to run after\n * @returns {object}\n */\nexport const polluteJS = (module, resolved, ref, isAsync, before, after) => {\n if (before || after) {\n const patched = patch.bind(module, resolved);\n const name = isAsync ? 'runAsync' : 'run';\n const method = module[name];\n module[name] = isAsync ?\n async function (interpreter, code, ...args) {\n if (before) await before.call(this, patched(interpreter), ref);\n const result = await method.call(\n this,\n interpreter,\n code,\n ...args\n );\n if (after) await after.call(this, patched(interpreter), ref);\n return result;\n } :\n function (interpreter, code, ...args) {\n if (before) before.call(this, patched(interpreter), ref);\n const result = method.call(this, interpreter, code, ...args);\n if (after) after.call(this, patched(interpreter), ref);\n return result;\n }\n ;\n }\n};\n/* c8 ignore stop */\n","import toJSONCallback from 'reflected-ffi/to-json-callback';\n\nimport { dedent } from '../utils.js';\nimport { js as jsHooks, code as codeHooks } from '../hooks.js';\n\n// REQUIRES INTEGRATION TEST\n/* c8 ignore start */\nexport default class Hook {\n constructor(interpreter, hooks = {}) {\n const { main, worker } = hooks;\n this.interpreter = interpreter;\n this.onWorker = main?.onWorker;\n // ignore onWorker as that's main only\n for (const key of jsHooks.slice(1))\n this[key] = worker?.[key];\n for (const key of codeHooks)\n this[key] = worker?.[key];\n }\n toJSON() {\n const hooks = {};\n // ignore onWorker as that's main only\n for (const key of jsHooks.slice(1)) {\n if (this[key]) hooks[key] = toJSONCallback(this[key]);\n }\n // code related: exclude `onReady` callback\n for (const key of codeHooks) {\n if (this[key]) hooks[key] = dedent(this[key]());\n }\n return hooks;\n }\n}\n/* c8 ignore stop */\n","import withResolvers from '@webreflection/utils/with-resolvers';\nimport fetch from '@webreflection/fetch';\nimport xworker from './xworker.js';\nimport { getConfigURLAndType } from '../loader.js';\nimport { assign, create, defineProperties, importCSS, importJS } from '../utils.js';\nimport Hook from './hook.js';\n\n/**\n * @typedef {Object} WorkerOptions custom configuration\n * @prop {string} type the interpreter type to use\n * @prop {string} [version] the optional interpreter version to use\n * @prop {string | object} [config] the optional config to use within such interpreter\n * @prop {string} [configURL] the optional configURL used to resolve config entries\n * @prop {string} [serviceWorker] the optional Service Worker for SharedArrayBuffer fallback\n * @prop {string} [service_worker] alias for `serviceWorker`\n */\n\n// REQUIRES INTEGRATION TEST\n/* c8 ignore start */\nexport default (...args) =>\n /**\n * A XWorker is a Worker facade able to bootstrap a channel with any desired interpreter.\n * @param {string} url the remote file to evaluate on bootstrap\n * @param {WorkerOptions} [options] optional arguments to define the interpreter to use\n * @returns {Worker}\n */\n function XWorker(url, options) {\n if (args.length) {\n const [type, version] = args;\n options = assign({}, options || { type, version });\n if (!options.type) options.type = type;\n }\n\n // provide a base url to fetch or load config files from a Worker\n // because there's no location at all in the Worker as it's embedded.\n // fallback to a generic, ignored, config.txt file to still provide a URL.\n const [ config ] = getConfigURLAndType(options.config, options.configURL);\n\n const serviceWorker = options?.serviceWorker || options?.service_worker;\n const worker = xworker({\n serviceWorker,\n reflected_ffi_timeout: globalThis.reflected_ffi_timeout ?? -1,\n });\n const { postMessage } = worker;\n const isHook = this instanceof Hook;\n\n const sync = assign(\n worker.proxy,\n { importJS, importCSS },\n );\n\n const resolver = withResolvers();\n\n let bootstrap = fetch(url)\n .text()\n .then(code => {\n const hooks = isHook ? this.toJSON() : void 0;\n postMessage.call(worker, { options, config, code, hooks });\n })\n .then(() => {\n // boost postMessage performance\n bootstrap = { then: fn => fn() };\n });\n\n defineProperties(worker, {\n sync: { value: sync },\n ready: { value: resolver.promise },\n ffi: {\n direct: worker.direct,\n },\n postMessage: {\n value: (data, ...rest) => bootstrap.then(\n () => postMessage.call(worker, data, ...rest),\n ),\n },\n onerror: {\n writable: true,\n configurable: true,\n value: console.error\n }\n });\n\n worker.addEventListener('message', event => {\n const { data } = event;\n const isError = data instanceof Error;\n if (isError || data === 'polyscript:done') {\n event.stopImmediatePropagation();\n if (isError) {\n resolver.reject(data);\n worker.onerror(create(event, {\n type: { value: 'error' },\n error: { value: data }\n }));\n }\n else resolver.resolve(worker);\n }\n });\n\n if (isHook) this.onWorker?.(this.interpreter, worker);\n\n return worker;\n };\n\n/* c8 ignore stop */","export const INVALID_CONTENT = 'Invalid content';\nexport const INVALID_SRC_ATTR = 'Invalid worker attribute';\nexport const INVALID_WORKER_ATTR = 'Invalid worker attribute';\n","import { INVALID_CONTENT, INVALID_SRC_ATTR, INVALID_WORKER_ATTR } from '../errors.js';\n\nimport { dedent, unescape } from '../utils.js';\n\nconst hasCommentsOnly = text => !text\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '')\n .replace(/^\\s*(?:\\/\\/|#).*/gm, '')\n .trim()\n;\n\n/* c8 ignore start */ // tested via integration\nexport default element => {\n const { src, worker } = element.attributes;\n if (worker) {\n let { value } = worker;\n // throw on worker values as ambiguous\n // @see https://github.com/pyscript/polyscript/issues/43\n if (value) throw new SyntaxError(INVALID_WORKER_ATTR);\n value = src?.value;\n if (!value) {\n // throw on empty src attributes\n if (src) throw new SyntaxError(INVALID_SRC_ATTR);\n if (!element.childElementCount)\n value = element.textContent;\n else {\n const { innerHTML, localName, type } = element;\n const name = type || localName.replace(/-script$/, '');\n value = unescape(innerHTML);\n console.warn(\n `Deprecated: use <script type=\"${name}\"> for an always safe content parsing:\\n`,\n value,\n );\n }\n\n const url = URL.createObjectURL(new Blob([dedent(value)], { type: 'text/plain' }));\n // TODO: should we really clean up this? debugging non-existent resources\n // at distance might be very problematic if the url is revoked.\n // setTimeout(URL.revokeObjectURL, 5000, url);\n return url;\n }\n return value;\n }\n // validate ambiguous cases with src and not empty/commented content\n if (src && !hasCommentsOnly(element.textContent))\n throw new SyntaxError(INVALID_CONTENT);\n};\n/* c8 ignore stop */\n","import fetch from '@webreflection/fetch';\nimport { $ } from 'basic-devtools';\n\nimport IDBMap from '@webreflection/idb-map';\nimport IDBMapSync from '@webreflection/idb-map/sync';\n\nimport { workers, workersHandler } from './workers.js';\nimport $xworker from './worker/class.js';\nimport workerURL from './worker/url.js';\nimport { getRuntime, getRuntimeID } from './loader.js';\nimport { registry } from './interpreters.js';\nimport { JSModules, isSync, all, dispatch, resolve, defineProperty, nodeInfo, registerJSModules } from './utils.js';\n\nconst getRoot = (script) => {\n let parent = script;\n while (parent.parentNode) parent = parent.parentNode;\n return parent;\n};\n\nexport const queryTarget = (script, idOrSelector) => {\n const root = getRoot(script);\n return root.getElementById(idOrSelector) || $(idOrSelector, root);\n};\n\nconst targets = new WeakMap();\nconst targetDescriptor = {\n get() {\n let target = targets.get(this);\n if (!target) {\n target = document.createElement(`${this.type}-script`);\n targets.set(this, target);\n handle(this);\n }\n return target;\n },\n set(target) {\n if (typeof target === 'string')\n targets.set(this, queryTarget(this, target));\n else {\n targets.set(this, target);\n handle(this);\n }\n },\n};\n\nconst handled = new WeakMap();\n\nexport const interpreters = new Map();\n\nconst execute = async (currentScript, source, XWorker, isAsync) => {\n const { type } = currentScript;\n const module = registry.get(type);\n /* c8 ignore start */\n if (module.experimental)\n console.warn(`The ${type} interpreter is experimental`);\n const [interpreter, content] = await all([\n handled.get(currentScript).interpreter,\n source,\n ]);\n try {\n registerJSModules(type, module, interpreter, JSModules);\n module.registerJSModule(interpreter, 'polyscript', {\n IDBMap,\n IDBMapSync,\n XWorker,\n currentScript,\n js_modules: JSModules,\n workers: workersHandler,\n });\n dispatch(currentScript, type, 'ready');\n // temporarily override inherited document.currentScript in a non writable way\n // but it deletes it right after to preserve native behavior (as it's sync: no trouble)\n defineProperty(document, 'currentScript', {\n configurable: true,\n get: () => currentScript,\n });\n const done = dispatch.bind(null, currentScript, type, 'done');\n let result = module[isAsync ? 'runAsync' : 'run'](interpreter, content);\n if (isAsync) result = await result;\n done();\n return result;\n } finally {\n delete document.currentScript;\n }\n /* c8 ignore stop */\n};\n\nconst getValue = (ref, prefix) => {\n const value = ref?.value;\n return value ? prefix + value : '';\n};\n\nexport const getDetails = (type, id, name, version, config, configURL, runtime = type) => {\n if (!interpreters.has(id)) {\n const details = {\n interpreter: getRuntime(name, config, configURL),\n queue: resolve(),\n XWorker: $xworker(type, version),\n };\n interpreters.set(id, details);\n // enable sane defaults when single interpreter *of kind* is used in the page\n // this allows `xxx-*` attributes to refer to such interpreter without `env` around\n /* c8 ignore start *//* this is tested very well in PyScript */\n if (!interpreters.has(type)) interpreters.set(type, details);\n if (!interpreters.has(runtime)) interpreters.set(runtime, details);\n /* c8 ignore stopt */\n }\n return interpreters.get(id);\n};\n\n/**\n * @param {HTMLScriptElement} script a special type of <script>\n */\nexport const handle = async (script) => {\n // known node, move its companion target after\n // vDOM or other use cases where the script is a tracked element\n if (handled.has(script)) {\n const { target } = script;\n if (target) {\n // if the script is in the head just append target to the body\n if (script.closest('head')) document.body.append(target);\n // in any other case preserve the script position\n else script.after(target);\n }\n }\n // new script to handle ... allow newly created scripts to work\n // just exactly like any other script would\n else {\n // allow a shared config among scripts, beside interpreter,\n // and/or source code with different config or interpreter\n const {\n attributes: {\n config,\n env,\n name: wn,\n target,\n version,\n ['service-worker']: sw,\n },\n src,\n type,\n } = script;\n\n /* c8 ignore start */\n const isAsync = !isSync(script);\n\n const versionValue = version?.value;\n const name = getRuntimeID(type, versionValue);\n let configValue = getValue(config, '|');\n const id = getValue(env, '') || `${name}${configValue}`;\n configValue = configValue.slice(1);\n\n const url = workerURL(script);\n if (url) {\n const XWorker = $xworker(type, versionValue);\n const xworker = new XWorker(url, {\n ...nodeInfo(script, type),\n version: versionValue,\n async: isAsync,\n config: configValue,\n serviceWorker: sw?.value,\n });\n handled.set(\n defineProperty(script, 'xworker', { value: xworker }),\n { xworker },\n );\n const workerName = wn?.value;\n if (workerName) workers[workerName].resolve(xworker.ready);\n return;\n }\n /* c8 ignore stop */\n\n const targetValue = getValue(target, '');\n const details = getDetails(type, id, name, versionValue, configValue);\n\n handled.set(\n defineProperty(script, 'target', targetDescriptor),\n details,\n );\n\n if (targetValue) targets.set(script, queryTarget(script, targetValue));\n\n // start fetching external resources ASAP\n const source = src ? fetch(src).text() : script.textContent;\n details.queue = details.queue.then(() =>\n execute(script, source, details.XWorker, isAsync),\n );\n }\n};\n","import { $x } from 'basic-devtools';\n\nimport { interpreters } from './script-handler.js';\nimport { all, create } from './utils.js';\nimport { registry, prefixes } from './interpreters.js';\n\n/* c8 ignore start */\nexport const env = new Proxy(create(null), {\n get: (_, name) => new Promise(queueMicrotask).then(\n () => awaitInterpreter(name)\n ),\n});\n\n// attributes are tested via integration / e2e\n// ensure both interpreter and its queue are awaited then returns the interpreter\nconst awaitInterpreter = async (key) => {\n if (interpreters.has(key)) {\n const { interpreter, queue } = interpreters.get(key);\n return (await all([interpreter, queue]))[0];\n }\n\n const available = interpreters.size\n ? `Available interpreters are: ${[...interpreters.keys()]\n .map((r) => `\"${r}\"`)\n .join(', ')}.`\n : 'There are no interpreters in this page.';\n\n throw new Error(`The interpreter \"${key}\" was not found. ${available}`);\n};\n\nexport const listener = async (event) => {\n const { type, currentTarget } = event;\n if (!prefixes.length) return;\n for (let { name, value, ownerElement: el } of $x(\n `./@*[${prefixes.map((p) => `name()=\"${p}${type}\"`).join(' or ')}]`,\n currentTarget,\n )) {\n name = name.slice(0, -(type.length + 1));\n const interpreter = await awaitInterpreter(\n el.getAttribute(`${name}-env`) || name,\n );\n const handler = registry.get(name);\n handler.runEvent(interpreter, value, event);\n }\n};\n\n/**\n * Look for known prefixes and add related listeners.\n * @param {Document | Element} root\n */\nexport const addAllListeners = (root) => {\n if (!prefixes.length) return;\n for (let { name, ownerElement: el } of $x(\n `.//@*[${prefixes\n .map((p) => `starts-with(name(),\"${p}\")`)\n .join(' or ')}]`,\n root,\n )) {\n const i = name.lastIndexOf('-');\n const type = name.slice(i + 1);\n if (type !== 'env') {\n el.addEventListener(type, listener);\n // automatically disable form controls that are not disabled already\n if ('disabled' in el && !el.disabled) {\n el.disabled = true;\n // set these to enable once the interpreter is known (registered + loaded)\n env[name.slice(0, i)].then(() => {\n el.disabled = false;\n });\n }\n }\n }\n};\n/* c8 ignore stop */\n","import xworker from './worker/class.js';\nimport Hook from './worker/hook.js';\n\nconst XWorker = xworker();\n\nexport { Hook, XWorker };\n","import withResolvers from '@webreflection/utils/with-resolvers';\nimport { $$ } from 'basic-devtools';\n\nimport IDBMap from '@webreflection/idb-map';\nimport IDBMapSync from '@webreflection/idb-map/sync';\n\nimport { JSModules, isSync, assign, create, createOverload, createResolved, dedent, defineProperty, nodeInfo, registerJSModules } from './utils.js';\nimport { getDetails } from './script-handler.js';\nimport { registry as defaultRegistry, prefixes, configs } from './interpreters.js';\nimport { getRuntimeID, resolveConfig } from './loader.js';\nimport { addAllListeners } from './listeners.js';\nimport { Hook, XWorker as XW } from './xworker.js';\nimport { workers, workersHandler } from './workers.js';\nimport { polluteJS, js as jsHooks, code as codeHooks } from './hooks.js';\nimport workerURL from './worker/url.js';\n\nexport const CUSTOM_SELECTORS = [];\n\nexport const customObserver = new Map();\n\n/**\n * @typedef {Object} Runtime custom configuration\n * @prop {object} interpreter the bootstrapped interpreter\n * @prop {(url:string, options?: object) => Worker} XWorker an XWorker constructor that defaults to same interpreter on the Worker.\n * @prop {object} config a cloned config used to bootstrap the interpreter\n * @prop {(code:string) => any} run an utility to run code within the interpreter\n * @prop {(code:string) => Promise<any>} runAsync an utility to run code asynchronously within the interpreter\n * @prop {(path:string, data:ArrayBuffer) => void} writeFile an utility to write a file in the virtual FS, if available\n */\n\nconst types = new Map();\nconst waitList = new Map();\n\n// REQUIRES INTEGRATION TEST\n/* c8 ignore start */\n/**\n * @param {Element} node any DOM element registered via define.\n */\nexport const handleCustomType = async (node) => {\n for (const selector of CUSTOM_SELECTORS) {\n if (node.matches(selector)) {\n const type = types.get(selector);\n const details = registry.get(type);\n const { resolve } = waitList.get(type);\n const { options, known } = details;\n\n if (known.has(node)) return;\n known.add(node);\n\n for (const [selector, callback] of customObserver) {\n if (node.matches(selector)) await callback(node);\n }\n\n const {\n interpreter: runtime,\n configURL,\n config,\n version,\n env,\n onerror,\n hooks,\n } = options;\n\n let error;\n try {\n const worker = workerURL(node);\n if (worker) {\n let v = version;\n let url = configURL;\n let cfg = node.getAttribute('config') || config || {};\n if (!v || !cfg) {\n const [o, u] = resolveConfig(cfg, configURL);\n cfg = await o;\n url = u;\n v = cfg.version || cfg.interpreter;\n if (v && /\\.m?js$/.test(v))\n v = new URL(v, url).href;\n }\n const xworker = XW.call(new Hook(null, hooks), worker, {\n ...nodeInfo(node, type),\n configURL: url,\n version: v,\n type: runtime,\n custom: type,\n config: cfg,\n async: !isSync(node),\n serviceWorker: node.getAttribute('service-worker'),\n });\n defineProperty(node, 'xworker', { value: xworker });\n resolve({ type, xworker });\n const workerName = node.getAttribute('name');\n if (workerName) workers[workerName].resolve(xworker.ready);\n return;\n }\n }\n // let the custom type handle errors via its `io`\n catch (workerError) {\n error = workerError;\n }\n\n const name = getRuntimeID(runtime, version);\n const id = env || `${name}${config ? `|${config}` : ''}`;\n const { interpreter: engine, XWorker: Worker } = getDetails(\n type,\n id,\n name,\n version,\n config,\n configURL,\n runtime\n );\n\n const interpreter = await engine;\n\n const module = create(defaultRegistry.get(runtime));\n\n const hook = new Hook(interpreter, hooks);\n\n const XWorker = function XWorker(...args) {\n return Worker.apply(hook, args);\n };\n\n const resolved = {\n ...createResolved(\n module,\n type,\n structuredClone(configs.get(name)),\n interpreter,\n ),\n XWorker,\n };\n\n registerJSModules(runtime, module, interpreter, JSModules);\n module.registerJSModule(interpreter, 'polyscript', {\n IDBMap,\n IDBMapSync,\n XWorker,\n config: resolved.config,\n currentScript: type.startsWith('_') ? null : node,\n js_modules: JSModules,\n workers: workersHandler,\n });\n\n // patch methods accordingly to hooks (and only if needed)\n for (const suffix of ['Run', 'RunAsync']) {\n let before = '';\n let after = '';\n\n for (const key of codeHooks) {\n const value = hooks?.main?.[key];\n if (value && key.endsWith(suffix)) {\n if (key.startsWith('codeBefore'))\n before = dedent(value());\n else\n after = dedent(value());\n }\n }\n\n if (before || after) {\n createOverload(\n module,\n `r${suffix.slice(1)}`,\n before,\n after,\n );\n }\n\n let beforeCB, afterCB;\n // ignore onReady and onWorker\n for (let i = 2; i < jsHooks.length; i++) {\n const key = jsHooks[i];\n const value = hooks?.main?.[key];\n if (value && key.endsWith(suffix)) {\n if (key.startsWith('onBefore'))\n beforeCB = value;\n else\n afterCB = value;\n }\n }\n polluteJS(module, resolved, node, suffix.endsWith('Async'), beforeCB, afterCB);\n }\n\n details.queue = details.queue.then(() => {\n resolve(resolved);\n if (error) onerror?.(error, node);\n return hooks?.main?.onReady?.(resolved, node);\n });\n }\n }\n};\n\n/**\n * @type {Map<string, {options:object, known:WeakSet<Element>}>}\n */\nconst registry = new Map();\n\n/**\n * @typedef {Object} CustomOptions custom configuration\n * @prop {'pyodide' | 'micropython' | 'ruby-wasm-wasi' | 'wasmoon'} interpreter the interpreter to use\n * @prop {string} [version] the optional interpreter version to use\n * @prop {string} [config] the optional config to use within such interpreter\n */\n\nlet dontBotherCount = 0;\n\n/**\n * Allows custom types and components on the page to receive interpreters to execute any code\n * @param {string} type the unique `<script type=\"...\">` identifier\n * @param {CustomOptions} options the custom type configuration\n */\nexport const define = (type, options) => {\n // allow no-type to be bootstrapped out of the box\n let dontBother = type == null;\n\n if (dontBother)\n type = `_ps${dontBotherCount++}`;\n else if (defaultRegistry.has(type) || registry.has(type))\n throw new Error(`<script type=\"${type}\"> already registered`);\n\n if (!defaultRegistry.has(options?.interpreter))\n throw new Error('Unspecified interpreter');\n\n // allows reaching out the interpreter helpers on events\n defaultRegistry.set(type, defaultRegistry.get(options.interpreter));\n\n // allows selector -> registry by type\n const selectors = [`script[type=\"${type}\"]`];\n\n // ensure a Promise can resolve once a custom type has been bootstrapped\n whenDefined(type);\n\n if (dontBother) {\n // add a script then cleanup everything once that's ready\n const { hooks } = options;\n const onReady = hooks?.main?.onReady;\n options = {\n ...options,\n hooks: {\n ...hooks,\n main: {\n ...hooks?.main,\n onReady(resolved, node) {\n CUSTOM_SELECTORS.splice(CUSTOM_SELECTORS.indexOf(type), 1);\n defaultRegistry.delete(type);\n registry.delete(type);\n waitList.delete(type);\n node.remove();\n onReady?.(resolved);\n }\n }\n },\n };\n document.head.append(\n assign(document.createElement('script'), { type })\n );\n }\n else {\n selectors.push(`${type}-script`);\n prefixes.push(`${type}-`);\n }\n\n for (const selector of selectors) types.set(selector, type);\n CUSTOM_SELECTORS.push(...selectors);\n\n // ensure always same env for this custom type\n registry.set(type, {\n options: assign({ env: type }, options),\n known: new WeakSet(),\n queue: Promise.resolve(),\n });\n\n if (!dontBother) addAllListeners(document);\n $$(selectors.join(',')).forEach(handleCustomType);\n};\n\n/**\n * Resolves whenever a defined custom type is bootstrapped on the page\n * @param {string} type the unique `<script type=\"...\">` identifier\n * @returns {Promise<object>}\n */\nexport const whenDefined = (type) => {\n if (!waitList.has(type)) waitList.set(type, withResolvers());\n return waitList.get(type).promise;\n};\n/* c8 ignore stop */\n","/** @typedef {(type: string, options: import(\"./custom.js\").CustomOptions) => void} CustomOptions */\n\nimport stickyModule from 'sticky-module';\nimport { $$ } from 'basic-devtools';\n\nimport { handle } from './script-handler.js';\nimport { assign } from './utils.js';\nimport { selectors, prefixes } from './interpreters.js';\nimport { listener, addAllListeners } from './listeners.js';\n\nimport {\n CUSTOM_SELECTORS,\n handleCustomType,\n customObserver as $customObserver,\n define as $define,\n whenDefined as $whenDefined\n} from './custom.js';\n\nimport { env as $env } from './listeners.js';\nimport { Hook as $Hook, XWorker as $XWorker } from './xworker.js';\n\n// avoid multiple initialization of the same library\nconst [\n {\n customObserver,\n define,\n whenDefined,\n env,\n Hook,\n XWorker\n },\n alreadyLive\n] = stickyModule(\n 'polyscript',\n {\n customObserver: $customObserver,\n define: $define,\n whenDefined: $whenDefined,\n env: $env,\n Hook: $Hook,\n XWorker: $XWorker\n }\n);\n\nexport {\n customObserver,\n define,\n whenDefined,\n env,\n Hook,\n XWorker\n};\n\nexport * from './errors.js';\n\n\nif (!alreadyLive) {\n const mo = new MutationObserver((records) => {\n const selector = selectors.join(',');\n for (const { type, target, attributeName, addedNodes } of records) {\n // attributes are tested via integration / e2e\n /* c8 ignore start */\n if (type === 'attributes') {\n const i = attributeName.lastIndexOf('-') + 1;\n if (i) {\n const prefix = attributeName.slice(0, i);\n for (const p of prefixes) {\n if (prefix === p) {\n const type = attributeName.slice(i);\n if (type !== 'env') {\n const method = target.hasAttribute(attributeName)\n ? 'add'\n : 'remove';\n target[`${method}EventListener`](type, listener);\n }\n break;\n }\n }\n }\n continue;\n }\n for (const node of addedNodes) {\n if (node.nodeType === 1) {\n addAllListeners(node);\n if (selector && node.matches(selector)) handle(node);\n else bootstrap(selector, node, true);\n }\n }\n /* c8 ignore stop */\n }\n });\n\n /* c8 ignore start */\n const bootstrap = (selector, node, shouldHandle) => {\n if (selector) $$(selector, node).forEach(handle);\n selector = CUSTOM_SELECTORS.join(',');\n if (selector) {\n if (shouldHandle) handleCustomType(node);\n $$(selector, node).forEach(handleCustomType);\n }\n };\n /* c8 ignore stop */\n\n const observe = (root) => {\n mo.observe(root, { childList: true, subtree: true, attributes: true });\n return root;\n };\n\n const { attachShadow } = Element.prototype;\n assign(Element.prototype, {\n attachShadow(init) {\n return observe(attachShadow.call(this, init));\n },\n });\n\n // give 3rd party a chance to apply changes before this happens\n queueMicrotask(() => {\n addAllListeners(observe(document));\n bootstrap(selectors.join(','), document, false);\n });\n\n}\n"],"names":["$$","css","root","document","querySelectorAll","$x","path","xpath","XPathEvaluator","createExpression","evaluate","XPathResult","ORDERED_NODE_SNAPSHOT_TYPE","result","i","snapshotLength","push","snapshotItem","d","Object","getOwnPropertyDescriptors","Response","prototype","isFunction","value","handler","get","p","k","hasOwnProperty","then","r","args","bypass","bind","direct","fetch$1","input","init","Proxy","fetch","assign","STORAGE","READONLY","READWRITE","defaultOptions","durability","prefix","target","IDBMap","EventTarget","db","options","transaction","what","how","t","this","Promise","onsuccess","onerror","objectStore","constructor","name","super","resolve","reject","indexedDB","open","onupgradeneeded","objectStoreNames","length","createObjectStore","oncomplete","event","dispatchEvent","boundDispatch","key","startsWith","type","message","isTrusted","Event","close","size","store","count","clear","delete","entries","keys","all","map","forEach","callback","context","call","has","getKey","getAllKeys","set","put","values","Symbol","toStringTag","IDBMapSync","Map","queue","sync","withResolvers$1","withResolvers","workers","ignore","Set","workersHandler","freeze","_","promise","w","UNREF","ASSIGN","EVALUATE","GATHER","QUERY","APPLY","CONSTRUCT","DEFINE_PROPERTY","DELETE_PROPERTY","GET","GET_OWN_PROPERTY_DESCRIPTOR","GET_PROTOTYPE_OF","HAS","IS_EXTENSIBLE","OWN_KEYS","PREVENT_EXTENSIONS","SET","SET_PROTOTYPE_OF","symbols","Reflect","ownKeys","String","fromSymbol","slice","for","toSymbol","description","keyFor","asSymbol","defineProperty","fromArray","Array","from","isArray","isView","ArrayBuffer","tv","identity","object","loopValues","asValue","arr","cache","fromKey","toKey","output","$","apply","subarray","getPrototypeOf","construct","toString","toTag","ref","globalThis","toBuffer","Uint8Array","resizable","maxByteLength","brackets","query","replace","split","reduce","gather","asResult","Node","deleteProperty","getOwnPropertyDescriptor","isExtensible","preventExtensions","setPrototypeOf","local","reflect","transform","remote","module","import","buffer","timeout","fromValue","v","cached","fromValues","wr","weakRefs","fn","deref","fr","unregister","toValue","WeakRef","register","globalTarget","hasDirect","BUFFER","BYTES_PER_ELEMENT","byteOffset","byteLength","toView","REMOTE","id","fromKeys","toKeys","unref","ids","refs","uid","heap","arrayKey","memoize","FinalizationRegistry","WeakSet","add","method","isGlobal","asModule","test","descriptor","body","Function","terminate","addEventListener","eventsHandler","WeakMap","invoke","concat","arguments","FALSE","TRUE","UNDEFINED","NULL","NUMBER","UI8","NAN","INFINITY","N_INFINITY","ZERO","N_ZERO","BIGINT","BIGUINT","STRING","SYMBOL","ARRAY","DATE","ERROR","MAP","OBJECT","REGEXP","VIEW","RECURSION","Stack","self","offset","l","o","last","splice","grow","decoder","TextDecoder","encoder","TextEncoder","dv","DataView","u8a8","isNaN","isFinite","isInteger","Number","is","process","unknown","setUint32","inflate","setFloat64","ui8a","pushView","Date","getTime","Error","stack","RegExp","source","flags","json","toJSON","encoded","textEncoder","encode","setBigUint64","setBigInt64","CHANNEL","MAIN","WORKER","nextResolver","as","error","nothing","buffers","SharedArrayBuffer","SAB","native","growable","newLength","resize","create","ID","crypto","randomUUID","Math","random","substring","defaults","Int32Array","proxied","ok","stop","stopImmediatePropagation","preventDefault","ffi_timeout","fallback","reflected_ffi_timeout","next","bootstrap","Atomics","MessageChannel","Worker","views","addListener","data","once","wait","parse","JSON","Request","view","xhr","XMLHttpRequest","SW","setRequestHeader","send","UID","responseText","join","bc","BroadcastChannel","onmessage","async","swid","wid","vid","postMessage","intercept","port1","scriptURL","notify","details","serviceWorker","activate","swc","c","getRegistration","ready","controller","installing","waiting","active","state","location","reload","serviceWorkerURL","URL","href","navigator","info","MessageEvent","coincident$1","checkTransferred","transfer","sabayon.Worker","url","sabayon.Atomics","channel","port2","sabayon.MessageChannel","callbacks","sabayon.register","resolving","proxy","cb","check","at","pop","transferred.get","setTimeout","console","warn","clearTimeout","deadlock","i32","start","transferred.set","re","place","q","f","esm","exports","coincident","directEncoder","ffi","currentTarget","methods","patchEvent","io","stdio","localIO","buffered","stderr","stdout","log","engine","interpreter","EOL","maybeUI8","decode","registry","require","run","code","dummy","registerJSModule","runAsync","runEvent","writeFile","dedent","string","s","content","line","trim","$1","es","unes","cape","m","tpl","unescape","un","defineProperties","absoluteURL","base","fixedRelative","nodeInfo","node","tag","tagName","dispatch","worker","CE","CustomEvent","bubbles","detail","createResolved","config","dropLine0","createOverload","before","after","js_modules","jsModules","JSModules","field","modules","registerJSModules","importJS","importCSS","onload","querySelector","head","append","createElement","rel","isCSS","pathname","isSync","element","getAttribute","RUNNING_IN_WORKER","window","FS","PATH","PATH_FS","absPath","dirPath","dirname","mkdirTree","canOwn","tree","current","branch","mkdir","cwd","joinPaths","parts","res","part","filter","fetchBuffer","baseURL","arrayBuffer","fetchPaths","config_fetch","files","to_file","undefined","endsWith","flatMap","to_folder","file","filename","lastIndexOf","calculateFetchPaths","fillName","dest","parseTemplate","src","SyntaxError","fetchFiles","config_files","targets","sourceDest","calculateFilesPaths","fetchJSModules","main","promises","createProgress","index","number","getUint32","deflate","getFloat64","j","array","textDecoder","NaN","Infinity","getBigInt64","getBigUint64","stringify","loader","loadProgress","progress","lazy_py_modules","packages","pyimport","storage","registerJsModule","getFormat","runPython","runPythonAsync","globals","mip","toml","text","syncfs","direction","err","initializeNativeFS","MEMFS","filesystems","nativeFSAsync","DIR_MODE","FILE_MODE","mount","opts","fileSystemHandle","populate","getLocalSet","getRemoteSet","dst","reconcile","e","isRealDir","toAbsolute","join2","readdir","mountpoint","stat","isDir","mode","timestamp","mtime","handles","getFsHandles","handle","kind","getFile","lastModifiedDate","loadLocalEntry","lookupPath","isFile","contents","getFileDataAsTypedArray","storeLocalEntry","entry","chmod","utime","removeLocalEntry","rmdir","unlink","loadRemoteEntry","storeRemoteEntry","parentDirHandle","getFileHandle","basename","getDirectoryHandle","writable","createWritable","write","removeRemoteEntry","removeEntry","total","e2","sort","remove","reverse","relPath","normalize","NATIVEFS_ASYNC","TypeError","follow_mount","isMountpoint","ensureMountPathExists","dirHandle","collect","curDirHandle","relativePath","micropython","version","loadMicroPython","linebuffer","py_imports","importPackages","mountNativeFS","_module","PyProxy","toJs","fs","format","extractDir","blob","Blob","BlobReader","Uint8ArrayWriter","ZipReader","zipReader","getEntries","directory","getData","TMP","mpyPackage","install","toJsOptions","dict_converter","fromEntries","FunctionPrototype","overrideMethod","pyproxy","to_js","override","proxies","patch","arg","shared","gcRegistered","indexURLs","pyodide","loadPyodide","index_urls","indexURL","save","packages_cache","lockFileURL","createObjectURL","debug","setDebug","revokeObjectURL","experimental_create_proxy","toPy","unpackArchive","_log","rest","loadPackage","micropip","set_index_urls","keep_going","frozen","destroy","jsType","ruby_wasm_wasi","experimental","DefaultRubyVM","WebAssembly","compile","vm","eval","evalAsync","wrap","wasmoon","LuaFactory","LuaLibraries","createEngine","global","getTable","Base","setField","doStringSync","doString","cmodule","writeFileShim","shelter","captureR","webr","WebR","Shelter","evalRVoid","env","configs","selectors","prefixes","getConfigURLAndType","configURL","resolveConfig","absolute","parseString","getRuntime","getRuntimeID","toJSONCallback","isAsync","beforeRun","afterRun","js","resolved","polluteJS","patched","Hook$1","hooks","onWorker","jsHooks","codeHooks","xworker","service_worker","isHook","Hook","resolver","configurable","isError","INVALID_CONTENT","INVALID_SRC_ATTR","INVALID_WORKER_ATTR","workerURL","attributes","childElementCount","innerHTML","localName","textContent","queryTarget","script","idOrSelector","parent","parentNode","getRoot","getElementById","targetDescriptor","handled","interpreters","getValue","getDetails","runtime","XWorker","$xworker","closest","wn","sw","versionValue","configValue","workerName","targetValue","currentScript","done","execute","queueMicrotask","awaitInterpreter","available","listener","ownerElement","el","addAllListeners","disabled","CUSTOM_SELECTORS","customObserver","types","waitList","handleCustomType","selector","matches","known","cfg","u","XW","custom","workerError","defaultRegistry","hook","structuredClone","suffix","beforeCB","afterCB","onReady","dontBotherCount","whenDefined","define","alreadyLive","symbol","stickyModule","$customObserver","dontBother","indexOf","$whenDefined","$env","$Hook","$XWorker","mo","MutationObserver","records","attributeName","addedNodes","hasAttribute","nodeType","shouldHandle","observe","childList","subtree","attachShadow","Element"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,35,36,37,40,52]} \ No newline at end of file diff --git a/docs/service-worker.js b/docs/service-worker.js index 16ddca5a..8b137891 100644 --- a/docs/service-worker.js +++ b/docs/service-worker.js @@ -1 +1 @@ -import s from"https://cdn.jsdelivr.net/npm/sabayon/dist/polyfill.js";if(!globalThis.crossOriginIsolated){const{isArray:r}=Array,t=s=>s.length&&"object"==typeof s[0]&&null!==s[0];globalThis.Blob=class extends Blob{constructor(s,...e){t(e)&&"text/javascript"===e[0].type&&r(s)&&"string"==typeof s.at(0)&&(s[0]=s[0].replace(/^\/\*@\*\//,'import "https://cdn.jsdelivr.net/npm/sabayon/dist/polyfill.js";')),super(s,...e)}},globalThis.Worker=class extends Worker{constructor(r,...e){if(t(e)){const r=e[0].serviceWorker||e[0].service_worker;r&&s(r)}super(r,...e)}}} + diff --git a/docs/toml-CkEFU7ly.js b/docs/toml-CkEFU7ly.js index 980574fd..2cf2245e 100644 --- a/docs/toml-CkEFU7ly.js +++ b/docs/toml-CkEFU7ly.js @@ -100,4 +100,3 @@ const parse = toml => { /* c8 ignore stop */ export { parse }; -//# sourceMappingURL=toml-CkEFU7ly.js.map diff --git a/docs/toml-DiUM0_qs.js.map b/docs/toml-DiUM0_qs.js.map index c1563bba..da7ad50c 100644 --- a/docs/toml-DiUM0_qs.js.map +++ b/docs/toml-DiUM0_qs.js.map @@ -1 +1 @@ -{"version":3,"file":"toml-DiUM0_qs.js","sources":["../esm/3rd-party/toml.js"],"sourcesContent":["/* c8 ignore start */\n/*! (c) Andrea Giammarchi - ISC */\n\nconst {isArray} = Array;\nconst {parse: jsonParse} = JSON;\n\n/** @typedef {{s: string[], d: Date[]}} Foreign foreign strings and dates */\n\n/**\n * Transform quoted keys into regular keys.\n * @param {string} str the key to eventually normalize\n * @param {Foreign} foreign foreign strings and dates\n * @returns \n */\nconst getKey = (str, {s}) => str.replace(/\"s(\\d+)\"/g, (_, $1) => s[$1]);\n\n/**\n * Given a `'string'` or a `\"string\"` returns a JSON compatible string.\n * @param {string} str a TOML entry to parse\n * @param {Foreign} foreign foreign strings and dates\n * @returns {string}\n */\nconst getValue = (str, foreign) => jsonParse(\n str.replace(/(\\S+?)\\s*=/g, '\"$1\":'),\n (_, value) => typeof value === 'string' ?\n foreign[value[0]][value.slice(1)] :\n value\n);\n\n/**\n * Crawl the `json` object via the given array of keys and handle array entries.\n * @param {string[]} keys a path with all keys to reach the entry\n * @param {Foreign} foreign foreign strings and dates\n * @param {object} entry the root entry of the TOML\n * @param {boolean} asArray handle array entries\n * @returns {object} the current entry to handle\n */\nconst getPath = (keys, foreign, entry, asArray) => {\n for (let i = 0, {length} = keys, last = length - 1; i < length; i++) {\n const key = getKey(keys[i], foreign);\n entry = entry[key] || (entry[key] = (asArray && (i === last) ? [] : {}));\n if (isArray(entry)) {\n if ((i === last) || !entry.length)\n entry.push({});\n entry = entry.at(-1);\n }\n }\n return entry;\n};\n\n/**\n * Given a TOML text, removes stirngs and dates for easier parsing +\n * remove multi-line arrays to not need evaluation.\n * @param {string} toml the TOML text to map\n * @param {string[]} strings mapped strings\n * @param {Date[]} dates mapped Dates\n * @returns {[string, Foreign]}\n */\nconst mapForeign = (toml, strings, dates) => [\n toml\n // map strings in the TOML\n .replace(\n /([\"'])(?:(?=(\\\\?))\\2.)*?\\1/g,\n value => `\"s${strings.push(value.slice(1, -1)) - 1}\"`\n )\n // map dates in the TOML\n .replace(\n /\\d{2,}([:-]\\d{2}){2}([ T:-][\\dZ:-]+)?/g,\n value => `\"d${dates.push(new Date(value)) - 1}\"`\n )\n // avoid multi-line array entries\n .replace(/,\\s*[\\r\\n]+/g, ', ')\n .replace(/\\[\\s*[\\r\\n]+/g, '[')\n .replace(/[\\r\\n]+\\s*]/g, ']'),\n {s: strings, d: dates}\n];\n\n/**\n * Given a simple subset of a TOML file, returns its JS equivalent.\n * @param {string} toml the TOML text to parse\n * @returns {object} the TOML equivalent as JSON serializable\n */\nconst parse = toml => {\n const [text, foreign] = mapForeign(toml, [], []);\n const json = {};\n let entry = json;\n for (let line of text.split(/[\\r\\n]+/)) {\n if ((line = line.trim()) && !line.startsWith('#')) {\n if (/^(\\[+)(.*?)\\]+/.test(line))\n entry = getPath(RegExp.$2.trim().split('.'), foreign, json, RegExp.$1 !== '[');\n else if (/^(\\S+?)\\s*=([^#]+)/.test(line)) {\n const {$1: key, $2: value} = RegExp;\n entry[getKey(key, foreign)] = getValue(value.trim(), foreign);\n }\n }\n }\n return json;\n};\n\nexport { parse };\n\n/* c8 ignore stop */\n"],"names":["isArray","Array","parse","jsonParse","JSON","getKey","str","s","replace","_","$1","getValue","foreign","value","slice","getPath","keys","entry","asArray","i","length","last","key","push","at","toml","text","strings","dates","Date","d","mapForeign","json","line","split","trim","startsWith","test","RegExp","$2"],"mappings":";AAGA,MAAMA,QAACA,GAAWC,OACXC,MAAOC,GAAaC,KAUrBC,EAAS,CAACC,GAAMC,OAAOD,EAAIE,QAAQ,aAAa,CAACC,EAAGC,IAAOH,EAAEG,KAQ7DC,EAAW,CAACL,EAAKM,IAAYT,EACjCG,EAAIE,QAAQ,cAAe,UAC3B,CAACC,EAAGI,IAA2B,iBAAVA,EACnBD,EAAQC,EAAM,IAAIA,EAAMC,MAAM,IAC9BD,IAWEE,EAAU,CAACC,EAAMJ,EAASK,EAAOC,KACrC,IAAK,IAAIC,EAAI,GAAGC,OAACA,GAAUJ,EAAMK,EAAOD,EAAS,EAAGD,EAAIC,EAAQD,IAAK,CACnE,MAAMG,EAAMjB,EAAOW,EAAKG,GAAIP,GAC5BK,EAAQA,EAAMK,KAASL,EAAMK,GAAQJ,GAAYC,IAAME,EAAQ,GAAK,CAAE,GAClErB,EAAQiB,KACLE,IAAME,GAAUJ,EAAMG,QACzBH,EAAMM,KAAK,IACbN,EAAQA,EAAMO,OAEpB,CACE,OAAOP,CAAK,EAmCRf,EAAQuB,IACZ,MAAOC,EAAMd,GAzBI,EAACa,EAAME,EAASC,IAAU,CAC3CH,EAEGjB,QACC,+BACAK,GAAS,KAAKc,EAAQJ,KAAKV,EAAMC,MAAM,GAAG,IAAO,OAGlDN,QACC,0CACAK,GAAS,KAAKe,EAAML,KAAK,IAAIM,KAAKhB,IAAU,OAG7CL,QAAQ,eAAgB,MACxBA,QAAQ,gBAAiB,KACzBA,QAAQ,eAAgB,KAC3B,CAACD,EAAGoB,EAASG,EAAGF,IASQG,CAAWN,EAAM,GAAI,IACvCO,EAAO,CAAE,EACf,IAAIf,EAAQe,EACZ,IAAK,IAAIC,KAAQP,EAAKQ,MAAM,WAC1B,IAAKD,EAAOA,EAAKE,UAAYF,EAAKG,WAAW,KAC3C,GAAI,iBAAiBC,KAAKJ,GACxBhB,EAAQF,EAAQuB,OAAOC,GAAGJ,OAAOD,MAAM,KAAMtB,EAASoB,EAAoB,MAAdM,OAAO5B,SAChE,GAAI,qBAAqB2B,KAAKJ,GAAO,CACxC,MAAOvB,GAAIY,EAAKiB,GAAI1B,GAASyB,OAC7BrB,EAAMZ,EAAOiB,EAAKV,IAAYD,EAASE,EAAMsB,OAAQvB,EAC7D,CAGE,OAAOoB,CAAI"} \ No newline at end of file +{"version":3,"file":"toml-DiUM0_qs.js","sources":["../esm/3rd-party/toml.js"],"sourcesContent":["/* c8 ignore start */\n/*! (c) Andrea Giammarchi - ISC */\n\nconst {isArray} = Array;\nconst {parse: jsonParse} = JSON;\n\n/** @typedef {{s: string[], d: Date[]}} Foreign foreign strings and dates */\n\n/**\n * Transform quoted keys into regular keys.\n * @param {string} str the key to eventually normalize\n * @param {Foreign} foreign foreign strings and dates\n * @returns \n */\nconst getKey = (str, {s}) => str.replace(/\"s(\\d+)\"/g, (_, $1) => s[$1]);\n\n/**\n * Given a `'string'` or a `\"string\"` returns a JSON compatible string.\n * @param {string} str a TOML entry to parse\n * @param {Foreign} foreign foreign strings and dates\n * @returns {string}\n */\nconst getValue = (str, foreign) => jsonParse(\n str.replace(/(\\S+?)\\s*=/g, '\"$1\":'),\n (_, value) => typeof value === 'string' ?\n foreign[value[0]][value.slice(1)] :\n value\n);\n\n/**\n * Crawl the `json` object via the given array of keys and handle array entries.\n * @param {string[]} keys a path with all keys to reach the entry\n * @param {Foreign} foreign foreign strings and dates\n * @param {object} entry the root entry of the TOML\n * @param {boolean} asArray handle array entries\n * @returns {object} the current entry to handle\n */\nconst getPath = (keys, foreign, entry, asArray) => {\n for (let i = 0, {length} = keys, last = length - 1; i < length; i++) {\n const key = getKey(keys[i], foreign);\n entry = entry[key] || (entry[key] = (asArray && (i === last) ? [] : {}));\n if (isArray(entry)) {\n if ((i === last) || !entry.length)\n entry.push({});\n entry = entry.at(-1);\n }\n }\n return entry;\n};\n\n/**\n * Given a TOML text, removes stirngs and dates for easier parsing +\n * remove multi-line arrays to not need evaluation.\n * @param {string} toml the TOML text to map\n * @param {string[]} strings mapped strings\n * @param {Date[]} dates mapped Dates\n * @returns {[string, Foreign]}\n */\nconst mapForeign = (toml, strings, dates) => [\n toml\n // map strings in the TOML\n .replace(\n /([\"'])(?:(?=(\\\\?))\\2.)*?\\1/g,\n value => `\"s${strings.push(value.slice(1, -1)) - 1}\"`\n )\n // map dates in the TOML\n .replace(\n /\\d{2,}([:-]\\d{2}){2}([ T:-][\\dZ:-]+)?/g,\n value => `\"d${dates.push(new Date(value)) - 1}\"`\n )\n // avoid multi-line array entries\n .replace(/,\\s*[\\r\\n]+/g, ', ')\n .replace(/\\[\\s*[\\r\\n]+/g, '[')\n .replace(/[\\r\\n]+\\s*]/g, ']'),\n {s: strings, d: dates}\n];\n\n/**\n * Given a simple subset of a TOML file, returns its JS equivalent.\n * @param {string} toml the TOML text to parse\n * @returns {object} the TOML equivalent as JSON serializable\n */\nconst parse = toml => {\n const [text, foreign] = mapForeign(toml, [], []);\n const json = {};\n let entry = json;\n for (let line of text.split(/[\\r\\n]+/)) {\n if ((line = line.trim()) && !line.startsWith('#')) {\n if (/^(\\[+)(.*?)\\]+/.test(line))\n entry = getPath(RegExp.$2.trim().split('.'), foreign, json, RegExp.$1 !== '[');\n else if (/^(\\S+?)\\s*=([^#]+)/.test(line)) {\n const {$1: key, $2: value} = RegExp;\n entry[getKey(key, foreign)] = getValue(value.trim(), foreign);\n }\n }\n }\n return json;\n};\n\nexport { parse };\n\n/* c8 ignore stop */\n"],"names":["isArray","Array","parse","jsonParse","JSON","getKey","str","s","replace","_","$1","getValue","foreign","value","slice","getPath","keys","entry","asArray","i","length","last","key","push","at","toml","text","strings","dates","Date","d","mapForeign","json","line","split","trim","startsWith","test","RegExp","$2"],"mappings":";AAGA,MAAMA,QAACA,GAAWC,OACXC,MAAOC,GAAaC,KAUrBC,EAAS,CAACC,GAAMC,OAAOD,EAAIE,QAAQ,aAAa,CAACC,EAAGC,IAAOH,EAAEG,KAQ7DC,EAAW,CAACL,EAAKM,IAAYT,EACjCG,EAAIE,QAAQ,cAAe,UAC3B,CAACC,EAAGI,IAA2B,iBAAVA,EACnBD,EAAQC,EAAM,IAAIA,EAAMC,MAAM,IAC9BD,IAWEE,EAAU,CAACC,EAAMJ,EAASK,EAAOC,KACrC,IAAK,IAAIC,EAAI,GAAGC,OAACA,GAAUJ,EAAMK,EAAOD,EAAS,EAAGD,EAAIC,EAAQD,IAAK,CACnE,MAAMG,EAAMjB,EAAOW,EAAKG,GAAIP,GAC5BK,EAAQA,EAAMK,KAASL,EAAMK,GAAQJ,GAAYC,IAAME,EAAQ,GAAK,CAAE,GAClErB,EAAQiB,KACLE,IAAME,GAAUJ,EAAMG,QACzBH,EAAMM,KAAK,IACbN,EAAQA,EAAMO,OAEpB,CACE,OAAOP,GAmCHf,EAAQuB,IACZ,MAAOC,EAAMd,GAzBI,EAACa,EAAME,EAASC,IAAU,CAC3CH,EAEGjB,QACC,+BACAK,GAAS,KAAKc,EAAQJ,KAAKV,EAAMC,MAAM,GAAG,IAAO,OAGlDN,QACC,0CACAK,GAAS,KAAKe,EAAML,KAAK,IAAIM,KAAKhB,IAAU,OAG7CL,QAAQ,eAAgB,MACxBA,QAAQ,gBAAiB,KACzBA,QAAQ,eAAgB,KAC3B,CAACD,EAAGoB,EAASG,EAAGF,IASQG,CAAWN,EAAM,GAAI,IACvCO,EAAO,CAAE,EACf,IAAIf,EAAQe,EACZ,IAAK,IAAIC,KAAQP,EAAKQ,MAAM,WAC1B,IAAKD,EAAOA,EAAKE,UAAYF,EAAKG,WAAW,KAC3C,GAAI,iBAAiBC,KAAKJ,GACxBhB,EAAQF,EAAQuB,OAAOC,GAAGJ,OAAOD,MAAM,KAAMtB,EAASoB,EAAoB,MAAdM,OAAO5B,SAChE,GAAI,qBAAqB2B,KAAKJ,GAAO,CACxC,MAAOvB,GAAIY,EAAKiB,GAAI1B,GAASyB,OAC7BrB,EAAMZ,EAAOiB,EAAKV,IAAYD,EAASE,EAAMsB,OAAQvB,EAC7D,CAGE,OAAOoB"} \ No newline at end of file diff --git a/docs/zip-CAMAhqMX.js b/docs/zip-CAMAhqMX.js new file mode 100644 index 00000000..ca04eeda --- /dev/null +++ b/docs/zip-CAMAhqMX.js @@ -0,0 +1,12 @@ +/* c8 ignore start */ +/** + * Bundled by jsDelivr using Rollup v2.79.2 and Terser v5.39.0. + * Original file: /npm/@zip.js/zip.js@2.7.62/index.js + * + * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files + */ +const e=256,t=256,n=-2,r=-5;function i(e){return s(e.map((([e,t])=>new Array(e).fill(t,0,e))))}function s(e){return e.reduce(((e,t)=>e.concat(Array.isArray(t)?s(t):t)),[])}const a=[0,1,2,3].concat(...i([[2,4],[2,5],[4,6],[4,7],[8,8],[8,9],[16,10],[16,11],[32,12],[32,13],[64,14],[64,15],[2,0],[1,16],[1,17],[2,18],[2,19],[4,20],[4,21],[8,22],[8,23],[16,24],[16,25],[32,26],[32,27],[64,28],[64,29]]));function o(){const e=this;function t(e,t){let n=0;do{n|=1&e,e>>>=1,n<<=1;}while(--t>0);return n>>>1}e.build_tree=function(n){const r=e.dyn_tree,i=e.stat_desc.static_tree,s=e.stat_desc.elems;let a,o,c,l=-1;for(n.heap_len=0,n.heap_max=573,a=0;a<s;a++)0!==r[2*a]?(n.heap[++n.heap_len]=l=a,n.depth[a]=0):r[2*a+1]=0;for(;n.heap_len<2;)c=n.heap[++n.heap_len]=l<2?++l:0,r[2*c]=1,n.depth[c]=0,n.opt_len--,i&&(n.static_len-=i[2*c+1]);for(e.max_code=l,a=Math.floor(n.heap_len/2);a>=1;a--)n.pqdownheap(r,a);c=s;do{a=n.heap[1],n.heap[1]=n.heap[n.heap_len--],n.pqdownheap(r,1),o=n.heap[1],n.heap[--n.heap_max]=a,n.heap[--n.heap_max]=o,r[2*c]=r[2*a]+r[2*o],n.depth[c]=Math.max(n.depth[a],n.depth[o])+1,r[2*a+1]=r[2*o+1]=c,n.heap[1]=c++,n.pqdownheap(r,1);}while(n.heap_len>=2);n.heap[--n.heap_max]=n.heap[1],function(t){const n=e.dyn_tree,r=e.stat_desc.static_tree,i=e.stat_desc.extra_bits,s=e.stat_desc.extra_base,a=e.stat_desc.max_length;let o,c,l,d,f,u,p=0;for(d=0;d<=15;d++)t.bl_count[d]=0;for(n[2*t.heap[t.heap_max]+1]=0,o=t.heap_max+1;o<573;o++)c=t.heap[o],d=n[2*n[2*c+1]+1]+1,d>a&&(d=a,p++),n[2*c+1]=d,c>e.max_code||(t.bl_count[d]++,f=0,c>=s&&(f=i[c-s]),u=n[2*c],t.opt_len+=u*(d+f),r&&(t.static_len+=u*(r[2*c+1]+f)));if(0!==p){do{for(d=a-1;0===t.bl_count[d];)d--;t.bl_count[d]--,t.bl_count[d+1]+=2,t.bl_count[a]--,p-=2;}while(p>0);for(d=a;0!==d;d--)for(c=t.bl_count[d];0!==c;)l=t.heap[--o],l>e.max_code||(n[2*l+1]!=d&&(t.opt_len+=(d-n[2*l+1])*n[2*l],n[2*l+1]=d),c--);}}(n),function(e,n,r){const i=[];let s,a,o,c=0;for(s=1;s<=15;s++)i[s]=c=c+r[s-1]<<1;for(a=0;a<=n;a++)o=e[2*a+1],0!==o&&(e[2*a]=t(i[o]++,o));}(r,e.max_code,n.bl_count);};}function c(e,t,n,r,i){const s=this;s.static_tree=e,s.extra_bits=t,s.extra_base=n,s.elems=r,s.max_length=i;}o._length_code=[0,1,2,3,4,5,6,7].concat(...i([[2,8],[2,9],[2,10],[2,11],[4,12],[4,13],[4,14],[4,15],[8,16],[8,17],[8,18],[8,19],[16,20],[16,21],[16,22],[16,23],[32,24],[32,25],[32,26],[31,27],[1,28]])),o.base_length=[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0],o.base_dist=[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576],o.d_code=function(e){return e<256?a[e]:a[256+(e>>>7)]},o.extra_lbits=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],o.extra_dbits=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],o.extra_blbits=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],o.bl_order=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];const l=i([[144,8],[112,9],[24,7],[8,8]]);c.static_ltree=s([12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,19,275,147,403,83,339,211,467,51,307,179,435,115,371,243,499,11,267,139,395,75,331,203,459,43,299,171,427,107,363,235,491,27,283,155,411,91,347,219,475,59,315,187,443,123,379,251,507,7,263,135,391,71,327,199,455,39,295,167,423,103,359,231,487,23,279,151,407,87,343,215,471,55,311,183,439,119,375,247,503,15,271,143,399,79,335,207,463,47,303,175,431,111,367,239,495,31,287,159,415,95,351,223,479,63,319,191,447,127,383,255,511,0,64,32,96,16,80,48,112,8,72,40,104,24,88,56,120,4,68,36,100,20,84,52,116,3,131,67,195,35,163,99,227].map(((e,t)=>[e,l[t]])));const d=i([[30,5]]);c.static_dtree=s([0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30,1,17,9,25,5,21,13,29,3,19,11,27,7,23].map(((e,t)=>[e,d[t]]))),c.static_l_desc=new c(c.static_ltree,o.extra_lbits,257,286,15),c.static_d_desc=new c(c.static_dtree,o.extra_dbits,0,30,15),c.static_bl_desc=new c(null,o.extra_blbits,0,19,7);function f(e,t,n,r,i){const s=this;s.good_length=e,s.max_lazy=t,s.nice_length=n,s.max_chain=r,s.func=i;}const u=[new f(0,0,0,0,0),new f(4,4,8,4,1),new f(4,5,16,8,1),new f(4,6,32,32,1),new f(4,4,16,16,2),new f(8,16,32,32,2),new f(8,16,128,128,2),new f(8,32,128,256,2),new f(32,128,258,1024,2),new f(32,258,258,4096,2)],p=["need dictionary","stream end","","","stream error","data error","","buffer error","",""],m=113,h=666,w=258,g=262;function x(e,t,n,r){const i=e[2*t],s=e[2*n];return i<s||i==s&&r[t]<=r[n]}function b(){const i=this;let s,a,l,d,f,b,v,y,_,k,S,z,A,C,D,U,E,W,F,j,q,T,O,R,L,I,M,P,B,H,N,V,Z;const K=new o,G=new o,X=new o;let J,Y,Q,$,ee,te;function ne(){let e;for(e=0;e<286;e++)N[2*e]=0;for(e=0;e<30;e++)V[2*e]=0;for(e=0;e<19;e++)Z[2*e]=0;N[512]=1,i.opt_len=i.static_len=0,Y=Q=0;}function re(e,t){let n,r=-1,i=e[1],s=0,a=7,o=4;0===i&&(a=138,o=3),e[2*(t+1)+1]=65535;for(let c=0;c<=t;c++)n=i,i=e[2*(c+1)+1],++s<a&&n==i||(s<o?Z[2*n]+=s:0!==n?(n!=r&&Z[2*n]++,Z[32]++):s<=10?Z[34]++:Z[36]++,s=0,r=n,0===i?(a=138,o=3):n==i?(a=6,o=3):(a=7,o=4));}function ie(e){i.pending_buf[i.pending++]=e;}function se(e){ie(255&e),ie(e>>>8&255);}function ae(e,t){let n;const r=t;te>16-r?(n=e,ee|=n<<te&65535,se(ee),ee=n>>>16-te,te+=r-16):(ee|=e<<te&65535,te+=r);}function oe(e,t){const n=2*e;ae(65535&t[n],65535&t[n+1]);}function ce(e,t){let n,r,i=-1,s=e[1],a=0,o=7,c=4;for(0===s&&(o=138,c=3),n=0;n<=t;n++)if(r=s,s=e[2*(n+1)+1],!(++a<o&&r==s)){if(a<c)do{oe(r,Z);}while(0!=--a);else 0!==r?(r!=i&&(oe(r,Z),a--),oe(16,Z),ae(a-3,2)):a<=10?(oe(17,Z),ae(a-3,3)):(oe(18,Z),ae(a-11,7));a=0,i=r,0===s?(o=138,c=3):r==s?(o=6,c=3):(o=7,c=4);}}function le(){16==te?(se(ee),ee=0,te=0):te>=8&&(ie(255&ee),ee>>>=8,te-=8);}function de(t,n){let r,s,a;if(i.dist_buf[Y]=t,i.lc_buf[Y]=255&n,Y++,0===t?N[2*n]++:(Q++,t--,N[2*(o._length_code[n]+e+1)]++,V[2*o.d_code(t)]++),!(8191&Y)&&M>2){for(r=8*Y,s=q-E,a=0;a<30;a++)r+=V[2*a]*(5+o.extra_dbits[a]);if(r>>>=3,Q<Math.floor(Y/2)&&r<Math.floor(s/2))return true}return Y==J-1}function fe(n,r){let s,a,c,l,d=0;if(0!==Y)do{s=i.dist_buf[d],a=i.lc_buf[d],d++,0===s?oe(a,n):(c=o._length_code[a],oe(c+e+1,n),l=o.extra_lbits[c],0!==l&&(a-=o.base_length[c],ae(a,l)),s--,c=o.d_code(s),oe(c,r),l=o.extra_dbits[c],0!==l&&(s-=o.base_dist[c],ae(s,l)));}while(d<Y);oe(t,n),$=n[513];}function ue(){te>8?se(ee):te>0&&ie(255&ee),ee=0,te=0;}function pe(e,t,n){ae(0+(n?1:0),3),function(e,t,n){ue(),$=8,(se(t),se(~t)),i.pending_buf.set(y.subarray(e,e+t),i.pending),i.pending+=t;}(e,t);}function me(e,t,n){let r,s,a=0;M>0?(K.build_tree(i),G.build_tree(i),a=function(){let e;for(re(N,K.max_code),re(V,G.max_code),X.build_tree(i),e=18;e>=3&&0===Z[2*o.bl_order[e]+1];e--);return i.opt_len+=3*(e+1)+5+5+4,e}(),r=i.opt_len+3+7>>>3,s=i.static_len+3+7>>>3,s<=r&&(r=s)):r=s=t+5,t+4<=r&&-1!=e?pe(e,t,n):s==r?(ae(2+(n?1:0),3),fe(c.static_ltree,c.static_dtree)):(ae(4+(n?1:0),3),function(e,t,n){let r;for(ae(e-257,5),ae(t-1,5),ae(n-4,4),r=0;r<n;r++)ae(Z[2*o.bl_order[r]+1],3);ce(N,e-1),ce(V,t-1);}(K.max_code+1,G.max_code+1,a+1),fe(N,V)),ne(),n&&ue();}function he(e){me(E>=0?E:-1,q-E,e),E=q,s.flush_pending();}function we(){let e,t,n,r;do{if(r=_-O-q,0===r&&0===q&&0===O)r=f;else if(-1==r)r--;else if(q>=f+f-g){y.set(y.subarray(f,f+f),0),T-=f,q-=f,E-=f,e=A,n=e;do{t=65535&S[--n],S[n]=t>=f?t-f:0;}while(0!=--e);e=f,n=e;do{t=65535&k[--n],k[n]=t>=f?t-f:0;}while(0!=--e);r+=f;}if(0===s.avail_in)return;e=s.read_buf(y,q+O,r),O+=e,O>=3&&(z=255&y[q],z=(z<<U^255&y[q+1])&D);}while(O<g&&0!==s.avail_in)}function ge(e){let t,n,r=L,i=q,s=R;const a=q>f-g?q-(f-g):0;let o=H;const c=v,l=q+w;let d=y[i+s-1],u=y[i+s];R>=B&&(r>>=2),o>O&&(o=O);do{if(t=e,y[t+s]==u&&y[t+s-1]==d&&y[t]==y[i]&&y[++t]==y[i+1]){i+=2,t++;do{}while(y[++i]==y[++t]&&y[++i]==y[++t]&&y[++i]==y[++t]&&y[++i]==y[++t]&&y[++i]==y[++t]&&y[++i]==y[++t]&&y[++i]==y[++t]&&y[++i]==y[++t]&&i<l);if(n=w-(l-i),i=l-w,n>s){if(T=e,s=n,n>=o)break;d=y[i+s-1],u=y[i+s];}}}while((e=65535&k[e&c])>a&&0!=--r);return s<=O?s:O}function xe(e){return e.total_in=e.total_out=0,e.msg=null,i.pending=0,i.pending_out=0,a=m,d=0,K.dyn_tree=N,K.stat_desc=c.static_l_desc,G.dyn_tree=V,G.stat_desc=c.static_d_desc,X.dyn_tree=Z,X.stat_desc=c.static_bl_desc,ee=0,te=0,$=8,ne(),function(){_=2*f,S[A-1]=0;for(let e=0;e<A-1;e++)S[e]=0;I=u[M].max_lazy,B=u[M].good_length,H=u[M].nice_length,L=u[M].max_chain,q=0,E=0,O=0,W=R=2,j=0,z=0;}(),0}i.depth=[],i.bl_count=[],i.heap=[],N=[],V=[],Z=[],i.pqdownheap=function(e,t){const n=i.heap,r=n[t];let s=t<<1;for(;s<=i.heap_len&&(s<i.heap_len&&x(e,n[s+1],n[s],i.depth)&&s++,!x(e,r,n[s],i.depth));)n[t]=n[s],t=s,s<<=1;n[t]=r;},i.deflateInit=function(e,t,r,s,a,o){return s||(s=8),a||(a=8),o||(o=0),e.msg=null,-1==t&&(t=6),a<1||a>9||8!=s||r<9||r>15||t<0||t>9||o<0||o>2?n:(e.dstate=i,b=r,f=1<<b,v=f-1,C=a+7,A=1<<C,D=A-1,U=Math.floor((C+3-1)/3),y=new Uint8Array(2*f),k=[],S=[],J=1<<a+6,i.pending_buf=new Uint8Array(4*J),l=4*J,i.dist_buf=new Uint16Array(J),i.lc_buf=new Uint8Array(J),M=t,P=o,xe(e))},i.deflateEnd=function(){return 42!=a&&a!=m&&a!=h?n:(i.lc_buf=null,i.dist_buf=null,i.pending_buf=null,S=null,k=null,y=null,i.dstate=null,a==m?-3:0)},i.deflateParams=function(e,t,r){let i=0;return -1==t&&(t=6),t<0||t>9||r<0||r>2?n:(u[M].func!=u[t].func&&0!==e.total_in&&(i=e.deflate(1)),M!=t&&(M=t,I=u[M].max_lazy,B=u[M].good_length,H=u[M].nice_length,L=u[M].max_chain),P=r,i)},i.deflateSetDictionary=function(e,t,r){let i,s=r,o=0;if(!t||42!=a)return n;if(s<3)return 0;for(s>f-g&&(s=f-g,o=r-s),y.set(t.subarray(o,o+s),0),q=s,E=s,z=255&y[0],z=(z<<U^255&y[1])&D,i=0;i<=s-3;i++)z=(z<<U^255&y[i+2])&D,k[i&v]=S[z],S[z]=i;return 0},i.deflate=function(e,o){let w,x,_,C,L;if(o>4||o<0)return n;if(!e.next_out||!e.next_in&&0!==e.avail_in||a==h&&4!=o)return e.msg=p[4],n;if(0===e.avail_out)return e.msg=p[7],r;var B;if(s=e,C=d,d=o,42==a&&(x=8+(b-8<<4)<<8,_=(M-1&255)>>1,_>3&&(_=3),x|=_<<6,0!==q&&(x|=32),x+=31-x%31,a=m,ie((B=x)>>8&255),ie(255&B)),0!==i.pending){if(s.flush_pending(),0===s.avail_out)return d=-1,0}else if(0===s.avail_in&&o<=C&&4!=o)return s.msg=p[7],r;if(a==h&&0!==s.avail_in)return e.msg=p[7],r;if(0!==s.avail_in||0!==O||0!=o&&a!=h){switch(L=-1,u[M].func){case 0:L=function(e){let t,n=65535;for(n>l-5&&(n=l-5);;){if(O<=1){if(we(),0===O&&0==e)return 0;if(0===O)break}if(q+=O,O=0,t=E+n,(0===q||q>=t)&&(O=q-t,q=t,he(false),0===s.avail_out))return 0;if(q-E>=f-g&&(he(false),0===s.avail_out))return 0}return he(4==e),0===s.avail_out?4==e?2:0:4==e?3:1}(o);break;case 1:L=function(e){let t,n=0;for(;;){if(O<g){if(we(),O<g&&0==e)return 0;if(0===O)break}if(O>=3&&(z=(z<<U^255&y[q+2])&D,n=65535&S[z],k[q&v]=S[z],S[z]=q),0!==n&&(q-n&65535)<=f-g&&2!=P&&(W=ge(n)),W>=3)if(t=de(q-T,W-3),O-=W,W<=I&&O>=3){W--;do{q++,z=(z<<U^255&y[q+2])&D,n=65535&S[z],k[q&v]=S[z],S[z]=q;}while(0!=--W);q++;}else q+=W,W=0,z=255&y[q],z=(z<<U^255&y[q+1])&D;else t=de(0,255&y[q]),O--,q++;if(t&&(he(false),0===s.avail_out))return 0}return he(4==e),0===s.avail_out?4==e?2:0:4==e?3:1}(o);break;case 2:L=function(e){let t,n,r=0;for(;;){if(O<g){if(we(),O<g&&0==e)return 0;if(0===O)break}if(O>=3&&(z=(z<<U^255&y[q+2])&D,r=65535&S[z],k[q&v]=S[z],S[z]=q),R=W,F=T,W=2,0!==r&&R<I&&(q-r&65535)<=f-g&&(2!=P&&(W=ge(r)),W<=5&&(1==P||3==W&&q-T>4096)&&(W=2)),R>=3&&W<=R){n=q+O-3,t=de(q-1-F,R-3),O-=R-1,R-=2;do{++q<=n&&(z=(z<<U^255&y[q+2])&D,r=65535&S[z],k[q&v]=S[z],S[z]=q);}while(0!=--R);if(j=0,W=2,q++,t&&(he(false),0===s.avail_out))return 0}else if(0!==j){if(t=de(0,255&y[q-1]),t&&he(false),q++,O--,0===s.avail_out)return 0}else j=1,q++,O--;}return 0!==j&&(t=de(0,255&y[q-1]),j=0),he(4==e),0===s.avail_out?4==e?2:0:4==e?3:1}(o);}if(2!=L&&3!=L||(a=h),0==L||2==L)return 0===s.avail_out&&(d=-1),0;if(1==L){if(1==o)ae(2,3),oe(t,c.static_ltree),le(),1+$+10-te<9&&(ae(2,3),oe(t,c.static_ltree),le()),$=7;else if(pe(0,0,false),3==o)for(w=0;w<A;w++)S[w]=0;if(s.flush_pending(),0===s.avail_out)return d=-1,0}}return 4!=o?0:1};}function v(){const e=this;e.next_in_index=0,e.next_out_index=0,e.avail_in=0,e.total_in=0,e.avail_out=0,e.total_out=0;}v.prototype={deflateInit(e,t){const n=this;return n.dstate=new b,t||(t=15),n.dstate.deflateInit(n,e,t)},deflate(e){const t=this;return t.dstate?t.dstate.deflate(t,e):n},deflateEnd(){const e=this;if(!e.dstate)return n;const t=e.dstate.deflateEnd();return e.dstate=null,t},deflateParams(e,t){const r=this;return r.dstate?r.dstate.deflateParams(r,e,t):n},deflateSetDictionary(e,t){const r=this;return r.dstate?r.dstate.deflateSetDictionary(r,e,t):n},read_buf(e,t,n){const r=this;let i=r.avail_in;return i>n&&(i=n),0===i?0:(r.avail_in-=i,e.set(r.next_in.subarray(r.next_in_index,r.next_in_index+i),t),r.next_in_index+=i,r.total_in+=i,i)},flush_pending(){const e=this;let t=e.dstate.pending;t>e.avail_out&&(t=e.avail_out),0!==t&&(e.next_out.set(e.dstate.pending_buf.subarray(e.dstate.pending_out,e.dstate.pending_out+t),e.next_out_index),e.next_out_index+=t,e.dstate.pending_out+=t,e.total_out+=t,e.avail_out-=t,e.dstate.pending-=t,0===e.dstate.pending&&(e.dstate.pending_out=0));}};const y=-2,_=-3,k=-5,S=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],z=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],A=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],C=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],D=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,112,112],U=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],E=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],W=15;function F(){let e,t,n,r,i,s;function a(e,t,a,o,c,l,d,f,u,p,m){let h,w,g,x,b,v,y,S,z,A,C,D,U,E,F;A=0,b=a;do{n[e[t+A]]++,A++,b--;}while(0!==b);if(n[0]==a)return d[0]=-1,f[0]=0,0;for(S=f[0],v=1;v<=W&&0===n[v];v++);for(y=v,S<v&&(S=v),b=W;0!==b&&0===n[b];b--);for(g=b,S>b&&(S=b),f[0]=S,E=1<<v;v<b;v++,E<<=1)if((E-=n[v])<0)return _;if((E-=n[b])<0)return _;for(n[b]+=E,s[1]=v=0,A=1,U=2;0!=--b;)s[U]=v+=n[A],U++,A++;b=0,A=0;do{0!==(v=e[t+A])&&(m[s[v]++]=b),A++;}while(++b<a);for(a=s[g],s[0]=b=0,A=0,x=-1,D=-S,i[0]=0,C=0,F=0;y<=g;y++)for(h=n[y];0!=h--;){for(;y>D+S;){if(x++,D+=S,F=g-D,F=F>S?S:F,(w=1<<(v=y-D))>h+1&&(w-=h+1,U=y,v<F))for(;++v<F&&!((w<<=1)<=n[++U]);)w-=n[U];if(F=1<<v,p[0]+F>1440)return _;i[x]=C=p[0],p[0]+=F,0!==x?(s[x]=b,r[0]=v,r[1]=S,v=b>>>D-S,r[2]=C-i[x-1]-v,u.set(r,3*(i[x-1]+v))):d[0]=C;}for(r[1]=y-D,A>=a?r[0]=192:m[A]<o?(r[0]=m[A]<256?0:96,r[2]=m[A++]):(r[0]=l[m[A]-o]+16+64,r[2]=c[m[A++]-o]),w=1<<y-D,v=b>>>D;v<F;v+=w)u.set(r,3*(C+v));for(v=1<<y-1;b&v;v>>>=1)b^=v;for(b^=v,z=(1<<D)-1;(b&z)!=s[x];)x--,D-=S,z=(1<<D)-1;}return 0!==E&&1!=g?k:0}function o(a){let o;for(e||(e=[],t=[],n=new Int32Array(16),r=[],i=new Int32Array(W),s=new Int32Array(16)),t.length<a&&(t=[]),o=0;o<a;o++)t[o]=0;for(o=0;o<16;o++)n[o]=0;for(o=0;o<3;o++)r[o]=0;i.set(n.subarray(0,W),0),s.set(n.subarray(0,16),0);}this.inflate_trees_bits=function(n,r,i,s,c){let l;return o(19),e[0]=0,l=a(n,0,19,19,null,null,i,r,s,e,t),l==_?c.msg="oversubscribed dynamic bit lengths tree":l!=k&&0!==r[0]||(c.msg="incomplete dynamic bit lengths tree",l=_),l},this.inflate_trees_dynamic=function(n,r,i,s,c,l,d,f,u){let p;return o(288),e[0]=0,p=a(i,0,n,257,C,D,l,s,f,e,t),0!=p||0===s[0]?(p==_?u.msg="oversubscribed literal/length tree":-4!=p&&(u.msg="incomplete literal/length tree",p=_),p):(o(288),p=a(i,n,r,0,U,E,d,c,f,e,t),0!=p||0===c[0]&&n>257?(p==_?u.msg="oversubscribed distance tree":p==k?(u.msg="incomplete distance tree",p=_):-4!=p&&(u.msg="empty distance tree with lengths",p=_),p):0)};}F.inflate_trees_fixed=function(e,t,n,r){return e[0]=9,t[0]=5,n[0]=z,r[0]=A,0};function j(){const e=this;let t,n,r,i,s=0,a=0,o=0,c=0,l=0,d=0,f=0,u=0,p=0,m=0;function h(e,t,n,r,i,s,a,o){let c,l,d,f,u,p,m,h,w,g,x,b,v,y,k,z;m=o.next_in_index,h=o.avail_in,u=a.bitb,p=a.bitk,w=a.write,g=w<a.read?a.read-w-1:a.end-w,x=S[e],b=S[t];do{for(;p<20;)h--,u|=(255&o.read_byte(m++))<<p,p+=8;if(c=u&x,l=n,d=r,z=3*(d+c),0!==(f=l[z]))for(;;){if(u>>=l[z+1],p-=l[z+1],16&f){for(f&=15,v=l[z+2]+(u&S[f]),u>>=f,p-=f;p<15;)h--,u|=(255&o.read_byte(m++))<<p,p+=8;for(c=u&b,l=i,d=s,z=3*(d+c),f=l[z];;){if(u>>=l[z+1],p-=l[z+1],16&f){for(f&=15;p<f;)h--,u|=(255&o.read_byte(m++))<<p,p+=8;if(y=l[z+2]+(u&S[f]),u>>=f,p-=f,g-=v,w>=y)k=w-y,w-k>0&&2>w-k?(a.win[w++]=a.win[k++],a.win[w++]=a.win[k++],v-=2):(a.win.set(a.win.subarray(k,k+2),w),w+=2,k+=2,v-=2);else {k=w-y;do{k+=a.end;}while(k<0);if(f=a.end-k,v>f){if(v-=f,w-k>0&&f>w-k)do{a.win[w++]=a.win[k++];}while(0!=--f);else a.win.set(a.win.subarray(k,k+f),w),w+=f,k+=f,f=0;k=0;}}if(w-k>0&&v>w-k)do{a.win[w++]=a.win[k++];}while(0!=--v);else a.win.set(a.win.subarray(k,k+v),w),w+=v,k+=v,v=0;break}if(64&f)return o.msg="invalid distance code",v=o.avail_in-h,v=p>>3<v?p>>3:v,h+=v,m-=v,p-=v<<3,a.bitb=u,a.bitk=p,o.avail_in=h,o.total_in+=m-o.next_in_index,o.next_in_index=m,a.write=w,_;c+=l[z+2],c+=u&S[f],z=3*(d+c),f=l[z];}break}if(64&f)return 32&f?(v=o.avail_in-h,v=p>>3<v?p>>3:v,h+=v,m-=v,p-=v<<3,a.bitb=u,a.bitk=p,o.avail_in=h,o.total_in+=m-o.next_in_index,o.next_in_index=m,a.write=w,1):(o.msg="invalid literal/length code",v=o.avail_in-h,v=p>>3<v?p>>3:v,h+=v,m-=v,p-=v<<3,a.bitb=u,a.bitk=p,o.avail_in=h,o.total_in+=m-o.next_in_index,o.next_in_index=m,a.write=w,_);if(c+=l[z+2],c+=u&S[f],z=3*(d+c),0===(f=l[z])){u>>=l[z+1],p-=l[z+1],a.win[w++]=l[z+2],g--;break}}else u>>=l[z+1],p-=l[z+1],a.win[w++]=l[z+2],g--;}while(g>=258&&h>=10);return v=o.avail_in-h,v=p>>3<v?p>>3:v,h+=v,m-=v,p-=v<<3,a.bitb=u,a.bitk=p,o.avail_in=h,o.total_in+=m-o.next_in_index,o.next_in_index=m,a.write=w,0}e.init=function(e,s,a,o,c,l){t=0,f=e,u=s,r=a,p=o,i=c,m=l,n=null;},e.proc=function(e,w,g){let x,b,v,k,z,A,C,D=0,U=0,E=0;for(E=w.next_in_index,k=w.avail_in,D=e.bitb,U=e.bitk,z=e.write,A=z<e.read?e.read-z-1:e.end-z;;)switch(t){case 0:if(A>=258&&k>=10&&(e.bitb=D,e.bitk=U,w.avail_in=k,w.total_in+=E-w.next_in_index,w.next_in_index=E,e.write=z,g=h(f,u,r,p,i,m,e,w),E=w.next_in_index,k=w.avail_in,D=e.bitb,U=e.bitk,z=e.write,A=z<e.read?e.read-z-1:e.end-z,0!=g)){t=1==g?7:9;break}o=f,n=r,a=p,t=1;case 1:for(x=o;U<x;){if(0===k)return e.bitb=D,e.bitk=U,w.avail_in=k,w.total_in+=E-w.next_in_index,w.next_in_index=E,e.write=z,e.inflate_flush(w,g);g=0,k--,D|=(255&w.read_byte(E++))<<U,U+=8;}if(b=3*(a+(D&S[x])),D>>>=n[b+1],U-=n[b+1],v=n[b],0===v){c=n[b+2],t=6;break}if(16&v){l=15&v,s=n[b+2],t=2;break}if(!(64&v)){o=v,a=b/3+n[b+2];break}if(32&v){t=7;break}return t=9,w.msg="invalid literal/length code",g=_,e.bitb=D,e.bitk=U,w.avail_in=k,w.total_in+=E-w.next_in_index,w.next_in_index=E,e.write=z,e.inflate_flush(w,g);case 2:for(x=l;U<x;){if(0===k)return e.bitb=D,e.bitk=U,w.avail_in=k,w.total_in+=E-w.next_in_index,w.next_in_index=E,e.write=z,e.inflate_flush(w,g);g=0,k--,D|=(255&w.read_byte(E++))<<U,U+=8;}s+=D&S[x],D>>=x,U-=x,o=u,n=i,a=m,t=3;case 3:for(x=o;U<x;){if(0===k)return e.bitb=D,e.bitk=U,w.avail_in=k,w.total_in+=E-w.next_in_index,w.next_in_index=E,e.write=z,e.inflate_flush(w,g);g=0,k--,D|=(255&w.read_byte(E++))<<U,U+=8;}if(b=3*(a+(D&S[x])),D>>=n[b+1],U-=n[b+1],v=n[b],16&v){l=15&v,d=n[b+2],t=4;break}if(!(64&v)){o=v,a=b/3+n[b+2];break}return t=9,w.msg="invalid distance code",g=_,e.bitb=D,e.bitk=U,w.avail_in=k,w.total_in+=E-w.next_in_index,w.next_in_index=E,e.write=z,e.inflate_flush(w,g);case 4:for(x=l;U<x;){if(0===k)return e.bitb=D,e.bitk=U,w.avail_in=k,w.total_in+=E-w.next_in_index,w.next_in_index=E,e.write=z,e.inflate_flush(w,g);g=0,k--,D|=(255&w.read_byte(E++))<<U,U+=8;}d+=D&S[x],D>>=x,U-=x,t=5;case 5:for(C=z-d;C<0;)C+=e.end;for(;0!==s;){if(0===A&&(z==e.end&&0!==e.read&&(z=0,A=z<e.read?e.read-z-1:e.end-z),0===A&&(e.write=z,g=e.inflate_flush(w,g),z=e.write,A=z<e.read?e.read-z-1:e.end-z,z==e.end&&0!==e.read&&(z=0,A=z<e.read?e.read-z-1:e.end-z),0===A)))return e.bitb=D,e.bitk=U,w.avail_in=k,w.total_in+=E-w.next_in_index,w.next_in_index=E,e.write=z,e.inflate_flush(w,g);e.win[z++]=e.win[C++],A--,C==e.end&&(C=0),s--;}t=0;break;case 6:if(0===A&&(z==e.end&&0!==e.read&&(z=0,A=z<e.read?e.read-z-1:e.end-z),0===A&&(e.write=z,g=e.inflate_flush(w,g),z=e.write,A=z<e.read?e.read-z-1:e.end-z,z==e.end&&0!==e.read&&(z=0,A=z<e.read?e.read-z-1:e.end-z),0===A)))return e.bitb=D,e.bitk=U,w.avail_in=k,w.total_in+=E-w.next_in_index,w.next_in_index=E,e.write=z,e.inflate_flush(w,g);g=0,e.win[z++]=c,A--,t=0;break;case 7:if(U>7&&(U-=8,k++,E--),e.write=z,g=e.inflate_flush(w,g),z=e.write,A=z<e.read?e.read-z-1:e.end-z,e.read!=e.write)return e.bitb=D,e.bitk=U,w.avail_in=k,w.total_in+=E-w.next_in_index,w.next_in_index=E,e.write=z,e.inflate_flush(w,g);t=8;case 8:return g=1,e.bitb=D,e.bitk=U,w.avail_in=k,w.total_in+=E-w.next_in_index,w.next_in_index=E,e.write=z,e.inflate_flush(w,g);case 9:return g=_,e.bitb=D,e.bitk=U,w.avail_in=k,w.total_in+=E-w.next_in_index,w.next_in_index=E,e.write=z,e.inflate_flush(w,g);default:return g=y,e.bitb=D,e.bitk=U,w.avail_in=k,w.total_in+=E-w.next_in_index,w.next_in_index=E,e.write=z,e.inflate_flush(w,g)}},e.free=function(){};}const q=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];function T(e,t){const n=this;let r,i=0,s=0,a=0,o=0;const c=[0],l=[0],d=new j;let f=0,u=new Int32Array(4320);const p=new F;n.bitk=0,n.bitb=0,n.win=new Uint8Array(t),n.end=t,n.read=0,n.write=0,n.reset=function(e,t){t&&(t[0]=0),6==i&&d.free(e),i=0,n.bitk=0,n.bitb=0,n.read=n.write=0;},n.reset(e,null),n.inflate_flush=function(e,t){let r,i,s;return i=e.next_out_index,s=n.read,r=(s<=n.write?n.write:n.end)-s,r>e.avail_out&&(r=e.avail_out),0!==r&&t==k&&(t=0),e.avail_out-=r,e.total_out+=r,e.next_out.set(n.win.subarray(s,s+r),i),i+=r,s+=r,s==n.end&&(s=0,n.write==n.end&&(n.write=0),r=n.write-s,r>e.avail_out&&(r=e.avail_out),0!==r&&t==k&&(t=0),e.avail_out-=r,e.total_out+=r,e.next_out.set(n.win.subarray(s,s+r),i),i+=r,s+=r),e.next_out_index=i,n.read=s,t},n.proc=function(e,t){let m,h,w,g,x,b,v,k;for(g=e.next_in_index,x=e.avail_in,h=n.bitb,w=n.bitk,b=n.write,v=b<n.read?n.read-b-1:n.end-b;;){let z,A,C,D,U,E,W,j;switch(i){case 0:for(;w<3;){if(0===x)return n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);t=0,x--,h|=(255&e.read_byte(g++))<<w,w+=8;}switch(m=7&h,f=1&m,m>>>1){case 0:h>>>=3,w-=3,m=7&w,h>>>=m,w-=m,i=1;break;case 1:z=[],A=[],C=[[]],D=[[]],F.inflate_trees_fixed(z,A,C,D),d.init(z[0],A[0],C[0],0,D[0],0),h>>>=3,w-=3,i=6;break;case 2:h>>>=3,w-=3,i=3;break;case 3:return h>>>=3,w-=3,i=9,e.msg="invalid block type",t=_,n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t)}break;case 1:for(;w<32;){if(0===x)return n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);t=0,x--,h|=(255&e.read_byte(g++))<<w,w+=8;}if((~h>>>16&65535)!=(65535&h))return i=9,e.msg="invalid stored block lengths",t=_,n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);s=65535&h,h=w=0,i=0!==s?2:0!==f?7:0;break;case 2:if(0===x)return n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);if(0===v&&(b==n.end&&0!==n.read&&(b=0,v=b<n.read?n.read-b-1:n.end-b),0===v&&(n.write=b,t=n.inflate_flush(e,t),b=n.write,v=b<n.read?n.read-b-1:n.end-b,b==n.end&&0!==n.read&&(b=0,v=b<n.read?n.read-b-1:n.end-b),0===v)))return n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);if(t=0,m=s,m>x&&(m=x),m>v&&(m=v),n.win.set(e.read_buf(g,m),b),g+=m,x-=m,b+=m,v-=m,0!=(s-=m))break;i=0!==f?7:0;break;case 3:for(;w<14;){if(0===x)return n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);t=0,x--,h|=(255&e.read_byte(g++))<<w,w+=8;}if(a=m=16383&h,(31&m)>29||(m>>5&31)>29)return i=9,e.msg="too many length or distance symbols",t=_,n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);if(m=258+(31&m)+(m>>5&31),!r||r.length<m)r=[];else for(k=0;k<m;k++)r[k]=0;h>>>=14,w-=14,o=0,i=4;case 4:for(;o<4+(a>>>10);){for(;w<3;){if(0===x)return n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);t=0,x--,h|=(255&e.read_byte(g++))<<w,w+=8;}r[q[o++]]=7&h,h>>>=3,w-=3;}for(;o<19;)r[q[o++]]=0;if(c[0]=7,m=p.inflate_trees_bits(r,c,l,u,e),0!=m)return (t=m)==_&&(r=null,i=9),n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);o=0,i=5;case 5:for(;m=a,!(o>=258+(31&m)+(m>>5&31));){let s,d;for(m=c[0];w<m;){if(0===x)return n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);t=0,x--,h|=(255&e.read_byte(g++))<<w,w+=8;}if(m=u[3*(l[0]+(h&S[m]))+1],d=u[3*(l[0]+(h&S[m]))+2],d<16)h>>>=m,w-=m,r[o++]=d;else {for(k=18==d?7:d-14,s=18==d?11:3;w<m+k;){if(0===x)return n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);t=0,x--,h|=(255&e.read_byte(g++))<<w,w+=8;}if(h>>>=m,w-=m,s+=h&S[k],h>>>=k,w-=k,k=o,m=a,k+s>258+(31&m)+(m>>5&31)||16==d&&k<1)return r=null,i=9,e.msg="invalid bit length repeat",t=_,n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);d=16==d?r[k-1]:0;do{r[k++]=d;}while(0!=--s);o=k;}}if(l[0]=-1,U=[],E=[],W=[],j=[],U[0]=9,E[0]=6,m=a,m=p.inflate_trees_dynamic(257+(31&m),1+(m>>5&31),r,U,E,W,j,u,e),0!=m)return m==_&&(r=null,i=9),t=m,n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);d.init(U[0],E[0],u,W[0],u,j[0]),i=6;case 6:if(n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,1!=(t=d.proc(n,e,t)))return n.inflate_flush(e,t);if(t=0,d.free(e),g=e.next_in_index,x=e.avail_in,h=n.bitb,w=n.bitk,b=n.write,v=b<n.read?n.read-b-1:n.end-b,0===f){i=0;break}i=7;case 7:if(n.write=b,t=n.inflate_flush(e,t),b=n.write,v=b<n.read?n.read-b-1:n.end-b,n.read!=n.write)return n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);i=8;case 8:return t=1,n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);case 9:return t=_,n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);default:return t=y,n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t)}}},n.free=function(e){n.reset(e,null),n.win=null,u=null;},n.set_dictionary=function(e,t,r){n.win.set(e.subarray(t,t+r),0),n.read=n.write=r;},n.sync_point=function(){return 1==i?1:0};}const O=13,R=[0,0,255,255];function L(){const e=this;function t(e){return e&&e.istate?(e.total_in=e.total_out=0,e.msg=null,e.istate.mode=7,e.istate.blocks.reset(e,null),0):y}e.mode=0,e.method=0,e.was=[0],e.need=0,e.marker=0,e.wbits=0,e.inflateEnd=function(t){return e.blocks&&e.blocks.free(t),e.blocks=null,0},e.inflateInit=function(n,r){return n.msg=null,e.blocks=null,r<8||r>15?(e.inflateEnd(n),y):(e.wbits=r,n.istate.blocks=new T(n,1<<r),t(n),0)},e.inflate=function(e,t){let n,r;if(!e||!e.istate||!e.next_in)return y;const i=e.istate;for(t=4==t?k:0,n=k;;)switch(i.mode){case 0:if(0===e.avail_in)return n;if(n=t,e.avail_in--,e.total_in++,8!=(15&(i.method=e.read_byte(e.next_in_index++)))){i.mode=O,e.msg="unknown compression method",i.marker=5;break}if(8+(i.method>>4)>i.wbits){i.mode=O,e.msg="invalid win size",i.marker=5;break}i.mode=1;case 1:if(0===e.avail_in)return n;if(n=t,e.avail_in--,e.total_in++,r=255&e.read_byte(e.next_in_index++),((i.method<<8)+r)%31!=0){i.mode=O,e.msg="incorrect header check",i.marker=5;break}if(!(32&r)){i.mode=7;break}i.mode=2;case 2:if(0===e.avail_in)return n;n=t,e.avail_in--,e.total_in++,i.need=(255&e.read_byte(e.next_in_index++))<<24&4278190080,i.mode=3;case 3:if(0===e.avail_in)return n;n=t,e.avail_in--,e.total_in++,i.need+=(255&e.read_byte(e.next_in_index++))<<16&16711680,i.mode=4;case 4:if(0===e.avail_in)return n;n=t,e.avail_in--,e.total_in++,i.need+=(255&e.read_byte(e.next_in_index++))<<8&65280,i.mode=5;case 5:return 0===e.avail_in?n:(n=t,e.avail_in--,e.total_in++,i.need+=255&e.read_byte(e.next_in_index++),i.mode=6,2);case 6:return i.mode=O,e.msg="need dictionary",i.marker=0,y;case 7:if(n=i.blocks.proc(e,n),n==_){i.mode=O,i.marker=0;break}if(0==n&&(n=t),1!=n)return n;n=t,i.blocks.reset(e,i.was),i.mode=12;case 12:return e.avail_in=0,1;case O:return _;default:return y}},e.inflateSetDictionary=function(e,t,n){let r=0,i=n;if(!e||!e.istate||6!=e.istate.mode)return y;const s=e.istate;return i>=1<<s.wbits&&(i=(1<<s.wbits)-1,r=n-i),s.blocks.set_dictionary(t,r,i),s.mode=7,0},e.inflateSync=function(e){let n,r,i,s,a;if(!e||!e.istate)return y;const o=e.istate;if(o.mode!=O&&(o.mode=O,o.marker=0),0===(n=e.avail_in))return k;for(r=e.next_in_index,i=o.marker;0!==n&&i<4;)e.read_byte(r)==R[i]?i++:i=0!==e.read_byte(r)?0:4-i,r++,n--;return e.total_in+=r-e.next_in_index,e.next_in_index=r,e.avail_in=n,o.marker=i,4!=i?_:(s=e.total_in,a=e.total_out,t(e),e.total_in=s,e.total_out=a,o.mode=7,0)},e.inflateSyncPoint=function(e){return e&&e.istate&&e.istate.blocks?e.istate.blocks.sync_point():y};}function I(){}I.prototype={inflateInit(e){const t=this;return t.istate=new L,e||(e=15),t.istate.inflateInit(t,e)},inflate(e){const t=this;return t.istate?t.istate.inflate(t,e):y},inflateEnd(){const e=this;if(!e.istate)return y;const t=e.istate.inflateEnd(e);return e.istate=null,t},inflateSync(){const e=this;return e.istate?e.istate.inflateSync(e):y},inflateSetDictionary(e,t){const n=this;return n.istate?n.istate.inflateSetDictionary(n,e,t):y},read_byte(e){return this.next_in[e]},read_buf(e,t){return this.next_in.subarray(e,e+t)}};const M=4294967295,P=65535,B=67324752,H=134695760,N=H,V=33639248,Z=101010256,K=101075792,G=117853008,X=22,J=39169,Y=21589,Q=6534,$=2048,ee="/",te=new Date(2107,11,31),ne=new Date(1980,0,1),re=void 0,ie="undefined",se="function";class ae{constructor(e){return class extends TransformStream{constructor(t,n){const r=new e(n);super({transform(e,t){t.enqueue(r.append(e));},flush(e){const t=r.flush();t&&e.enqueue(t);}});}}}}let oe=2;try{typeof navigator!=ie&&navigator.hardwareConcurrency&&(oe=navigator.hardwareConcurrency);}catch(e){}const ce={chunkSize:524288,maxWorkers:oe,terminateWorkerTimeout:5e3,useWebWorkers:true,useCompressionStream:true,workerScripts:re,CompressionStreamNative:typeof CompressionStream!=ie&&CompressionStream,DecompressionStreamNative:typeof DecompressionStream!=ie&&DecompressionStream},le=Object.assign({},ce);function de(){return le}function fe(e){return Math.max(e.chunkSize,64)}function ue(e){const{baseURL:t,chunkSize:n,maxWorkers:r,terminateWorkerTimeout:i,useCompressionStream:s,useWebWorkers:a,Deflate:o,Inflate:c,CompressionStream:l,DecompressionStream:d,workerScripts:f}=e;if(pe("baseURL",t),pe("chunkSize",n),pe("maxWorkers",r),pe("terminateWorkerTimeout",i),pe("useCompressionStream",s),pe("useWebWorkers",a),o&&(le.CompressionStream=new ae(o)),c&&(le.DecompressionStream=new ae(c)),pe("CompressionStream",l),pe("DecompressionStream",d),f!==re){const{deflate:e,inflate:t}=f;if((e||t)&&(le.workerScripts||(le.workerScripts={})),e){if(!Array.isArray(e))throw new Error("workerScripts.deflate must be an array");le.workerScripts.deflate=e;}if(t){if(!Array.isArray(t))throw new Error("workerScripts.inflate must be an array");le.workerScripts.inflate=t;}}}function pe(e,t){t!==re&&(le[e]=t);}const me={application:{"andrew-inset":"ez",annodex:"anx","atom+xml":"atom","atomcat+xml":"atomcat","atomserv+xml":"atomsrv",bbolin:"lin","cu-seeme":"cu","davmount+xml":"davmount",dsptype:"tsp",ecmascript:["es","ecma"],futuresplash:"spl",hta:"hta","java-archive":"jar","java-serialized-object":"ser","java-vm":"class",m3g:"m3g","mac-binhex40":"hqx",mathematica:["nb","ma","mb"],msaccess:"mdb",msword:["doc","dot","wiz"],mxf:"mxf",oda:"oda",ogg:"ogx",pdf:"pdf","pgp-keys":"key","pgp-signature":["asc","sig"],"pics-rules":"prf",postscript:["ps","ai","eps","epsi","epsf","eps2","eps3"],rar:"rar","rdf+xml":"rdf","rss+xml":"rss",rtf:"rtf","xhtml+xml":["xhtml","xht"],xml:["xml","xsl","xsd","xpdl"],"xspf+xml":"xspf",zip:"zip","vnd.android.package-archive":"apk","vnd.cinderella":"cdy","vnd.google-earth.kml+xml":"kml","vnd.google-earth.kmz":"kmz","vnd.mozilla.xul+xml":"xul","vnd.ms-excel":["xls","xlb","xlt","xlm","xla","xlc","xlw"],"vnd.ms-pki.seccat":"cat","vnd.ms-pki.stl":"stl","vnd.ms-powerpoint":["ppt","pps","pot","ppa","pwz"],"vnd.oasis.opendocument.chart":"odc","vnd.oasis.opendocument.database":"odb","vnd.oasis.opendocument.formula":"odf","vnd.oasis.opendocument.graphics":"odg","vnd.oasis.opendocument.graphics-template":"otg","vnd.oasis.opendocument.image":"odi","vnd.oasis.opendocument.presentation":"odp","vnd.oasis.opendocument.presentation-template":"otp","vnd.oasis.opendocument.spreadsheet":"ods","vnd.oasis.opendocument.spreadsheet-template":"ots","vnd.oasis.opendocument.text":"odt","vnd.oasis.opendocument.text-master":["odm","otm"],"vnd.oasis.opendocument.text-template":"ott","vnd.oasis.opendocument.text-web":"oth","vnd.openxmlformats-officedocument.spreadsheetml.sheet":"xlsx","vnd.openxmlformats-officedocument.spreadsheetml.template":"xltx","vnd.openxmlformats-officedocument.presentationml.presentation":"pptx","vnd.openxmlformats-officedocument.presentationml.slideshow":"ppsx","vnd.openxmlformats-officedocument.presentationml.template":"potx","vnd.openxmlformats-officedocument.wordprocessingml.document":"docx","vnd.openxmlformats-officedocument.wordprocessingml.template":"dotx","vnd.smaf":"mmf","vnd.stardivision.calc":"sdc","vnd.stardivision.chart":"sds","vnd.stardivision.draw":"sda","vnd.stardivision.impress":"sdd","vnd.stardivision.math":["sdf","smf"],"vnd.stardivision.writer":["sdw","vor"],"vnd.stardivision.writer-global":"sgl","vnd.sun.xml.calc":"sxc","vnd.sun.xml.calc.template":"stc","vnd.sun.xml.draw":"sxd","vnd.sun.xml.draw.template":"std","vnd.sun.xml.impress":"sxi","vnd.sun.xml.impress.template":"sti","vnd.sun.xml.math":"sxm","vnd.sun.xml.writer":"sxw","vnd.sun.xml.writer.global":"sxg","vnd.sun.xml.writer.template":"stw","vnd.symbian.install":["sis","sisx"],"vnd.visio":["vsd","vst","vss","vsw","vsdx","vssx","vstx","vssm","vstm"],"vnd.wap.wbxml":"wbxml","vnd.wap.wmlc":"wmlc","vnd.wap.wmlscriptc":"wmlsc","vnd.wordperfect":"wpd","vnd.wordperfect5.1":"wp5","x-123":"wk","x-7z-compressed":"7z","x-abiword":"abw","x-apple-diskimage":"dmg","x-bcpio":"bcpio","x-bittorrent":"torrent","x-cbr":["cbr","cba","cbt","cb7"],"x-cbz":"cbz","x-cdf":["cdf","cda"],"x-cdlink":"vcd","x-chess-pgn":"pgn","x-cpio":"cpio","x-csh":"csh","x-director":["dir","dxr","cst","cct","cxt","w3d","fgd","swa"],"x-dms":"dms","x-doom":"wad","x-dvi":"dvi","x-httpd-eruby":"rhtml","x-font":"pcf.Z","x-freemind":"mm","x-gnumeric":"gnumeric","x-go-sgf":"sgf","x-graphing-calculator":"gcf","x-gtar":["gtar","taz"],"x-hdf":"hdf","x-httpd-php":["phtml","pht","php"],"x-httpd-php-source":"phps","x-httpd-php3":"php3","x-httpd-php3-preprocessed":"php3p","x-httpd-php4":"php4","x-httpd-php5":"php5","x-ica":"ica","x-info":"info","x-internet-signup":["ins","isp"],"x-iphone":"iii","x-iso9660-image":"iso","x-java-jnlp-file":"jnlp","x-jmol":"jmz","x-killustrator":"kil","x-latex":"latex","x-lyx":"lyx","x-lzx":"lzx","x-maker":["frm","fb","fbdoc"],"x-ms-wmd":"wmd","x-msdos-program":["com","exe","bat","dll"],"x-netcdf":["nc"],"x-ns-proxy-autoconfig":["pac","dat"],"x-nwc":"nwc","x-object":"o","x-oz-application":"oza","x-pkcs7-certreqresp":"p7r","x-python-code":["pyc","pyo"],"x-qgis":["qgs","shp","shx"],"x-quicktimeplayer":"qtl","x-redhat-package-manager":["rpm","rpa"],"x-ruby":"rb","x-sh":"sh","x-shar":"shar","x-shockwave-flash":["swf","swfl"],"x-silverlight":"scr","x-stuffit":"sit","x-sv4cpio":"sv4cpio","x-sv4crc":"sv4crc","x-tar":"tar","x-tex-gf":"gf","x-tex-pk":"pk","x-texinfo":["texinfo","texi"],"x-trash":["~","%","bak","old","sik"],"x-ustar":"ustar","x-wais-source":"src","x-wingz":"wz","x-x509-ca-cert":["crt","der","cer"],"x-xcf":"xcf","x-xfig":"fig","x-xpinstall":"xpi",applixware:"aw","atomsvc+xml":"atomsvc","ccxml+xml":"ccxml","cdmi-capability":"cdmia","cdmi-container":"cdmic","cdmi-domain":"cdmid","cdmi-object":"cdmio","cdmi-queue":"cdmiq","docbook+xml":"dbk","dssc+der":"dssc","dssc+xml":"xdssc","emma+xml":"emma","epub+zip":"epub",exi:"exi","font-tdpfr":"pfr","gml+xml":"gml","gpx+xml":"gpx",gxf:"gxf",hyperstudio:"stk","inkml+xml":["ink","inkml"],ipfix:"ipfix","jsonml+json":"jsonml","lost+xml":"lostxml","mads+xml":"mads",marc:"mrc","marcxml+xml":"mrcx","mathml+xml":["mathml","mml"],mbox:"mbox","mediaservercontrol+xml":"mscml","metalink+xml":"metalink","metalink4+xml":"meta4","mets+xml":"mets","mods+xml":"mods",mp21:["m21","mp21"],mp4:"mp4s","oebps-package+xml":"opf","omdoc+xml":"omdoc",onenote:["onetoc","onetoc2","onetmp","onepkg"],oxps:"oxps","patch-ops-error+xml":"xer","pgp-encrypted":"pgp",pkcs10:"p10","pkcs7-mime":["p7m","p7c"],"pkcs7-signature":"p7s",pkcs8:"p8","pkix-attr-cert":"ac","pkix-crl":"crl","pkix-pkipath":"pkipath",pkixcmp:"pki","pls+xml":"pls","prs.cww":"cww","pskc+xml":"pskcxml","reginfo+xml":"rif","relax-ng-compact-syntax":"rnc","resource-lists+xml":"rl","resource-lists-diff+xml":"rld","rls-services+xml":"rs","rpki-ghostbusters":"gbr","rpki-manifest":"mft","rpki-roa":"roa","rsd+xml":"rsd","sbml+xml":"sbml","scvp-cv-request":"scq","scvp-cv-response":"scs","scvp-vp-request":"spq","scvp-vp-response":"spp",sdp:"sdp","set-payment-initiation":"setpay","set-registration-initiation":"setreg","shf+xml":"shf","sparql-query":"rq","sparql-results+xml":"srx",srgs:"gram","srgs+xml":"grxml","sru+xml":"sru","ssdl+xml":"ssdl","ssml+xml":"ssml","tei+xml":["tei","teicorpus"],"thraud+xml":"tfi","timestamped-data":"tsd","vnd.3gpp.pic-bw-large":"plb","vnd.3gpp.pic-bw-small":"psb","vnd.3gpp.pic-bw-var":"pvb","vnd.3gpp2.tcap":"tcap","vnd.3m.post-it-notes":"pwn","vnd.accpac.simply.aso":"aso","vnd.accpac.simply.imp":"imp","vnd.acucobol":"acu","vnd.acucorp":["atc","acutc"],"vnd.adobe.air-application-installer-package+zip":"air","vnd.adobe.formscentral.fcdt":"fcdt","vnd.adobe.fxp":["fxp","fxpl"],"vnd.adobe.xdp+xml":"xdp","vnd.adobe.xfdf":"xfdf","vnd.ahead.space":"ahead","vnd.airzip.filesecure.azf":"azf","vnd.airzip.filesecure.azs":"azs","vnd.amazon.ebook":"azw","vnd.americandynamics.acc":"acc","vnd.amiga.ami":"ami","vnd.anser-web-certificate-issue-initiation":"cii","vnd.anser-web-funds-transfer-initiation":"fti","vnd.antix.game-component":"atx","vnd.apple.installer+xml":"mpkg","vnd.apple.mpegurl":"m3u8","vnd.aristanetworks.swi":"swi","vnd.astraea-software.iota":"iota","vnd.audiograph":"aep","vnd.blueice.multipass":"mpm","vnd.bmi":"bmi","vnd.businessobjects":"rep","vnd.chemdraw+xml":"cdxml","vnd.chipnuts.karaoke-mmd":"mmd","vnd.claymore":"cla","vnd.cloanto.rp9":"rp9","vnd.clonk.c4group":["c4g","c4d","c4f","c4p","c4u"],"vnd.cluetrust.cartomobile-config":"c11amc","vnd.cluetrust.cartomobile-config-pkg":"c11amz","vnd.commonspace":"csp","vnd.contact.cmsg":"cdbcmsg","vnd.cosmocaller":"cmc","vnd.crick.clicker":"clkx","vnd.crick.clicker.keyboard":"clkk","vnd.crick.clicker.palette":"clkp","vnd.crick.clicker.template":"clkt","vnd.crick.clicker.wordbank":"clkw","vnd.criticaltools.wbs+xml":"wbs","vnd.ctc-posml":"pml","vnd.cups-ppd":"ppd","vnd.curl.car":"car","vnd.curl.pcurl":"pcurl","vnd.dart":"dart","vnd.data-vision.rdz":"rdz","vnd.dece.data":["uvf","uvvf","uvd","uvvd"],"vnd.dece.ttml+xml":["uvt","uvvt"],"vnd.dece.unspecified":["uvx","uvvx"],"vnd.dece.zip":["uvz","uvvz"],"vnd.denovo.fcselayout-link":"fe_launch","vnd.dna":"dna","vnd.dolby.mlp":"mlp","vnd.dpgraph":"dpg","vnd.dreamfactory":"dfac","vnd.ds-keypoint":"kpxx","vnd.dvb.ait":"ait","vnd.dvb.service":"svc","vnd.dynageo":"geo","vnd.ecowin.chart":"mag","vnd.enliven":"nml","vnd.epson.esf":"esf","vnd.epson.msf":"msf","vnd.epson.quickanime":"qam","vnd.epson.salt":"slt","vnd.epson.ssf":"ssf","vnd.eszigno3+xml":["es3","et3"],"vnd.ezpix-album":"ez2","vnd.ezpix-package":"ez3","vnd.fdf":"fdf","vnd.fdsn.mseed":"mseed","vnd.fdsn.seed":["seed","dataless"],"vnd.flographit":"gph","vnd.fluxtime.clip":"ftc","vnd.framemaker":["fm","frame","maker","book"],"vnd.frogans.fnc":"fnc","vnd.frogans.ltf":"ltf","vnd.fsc.weblaunch":"fsc","vnd.fujitsu.oasys":"oas","vnd.fujitsu.oasys2":"oa2","vnd.fujitsu.oasys3":"oa3","vnd.fujitsu.oasysgp":"fg5","vnd.fujitsu.oasysprs":"bh2","vnd.fujixerox.ddd":"ddd","vnd.fujixerox.docuworks":"xdw","vnd.fujixerox.docuworks.binder":"xbd","vnd.fuzzysheet":"fzs","vnd.genomatix.tuxedo":"txd","vnd.geogebra.file":"ggb","vnd.geogebra.tool":"ggt","vnd.geometry-explorer":["gex","gre"],"vnd.geonext":"gxt","vnd.geoplan":"g2w","vnd.geospace":"g3w","vnd.gmx":"gmx","vnd.grafeq":["gqf","gqs"],"vnd.groove-account":"gac","vnd.groove-help":"ghf","vnd.groove-identity-message":"gim","vnd.groove-injector":"grv","vnd.groove-tool-message":"gtm","vnd.groove-tool-template":"tpl","vnd.groove-vcard":"vcg","vnd.hal+xml":"hal","vnd.handheld-entertainment+xml":"zmm","vnd.hbci":"hbci","vnd.hhe.lesson-player":"les","vnd.hp-hpgl":"hpgl","vnd.hp-hpid":"hpid","vnd.hp-hps":"hps","vnd.hp-jlyt":"jlt","vnd.hp-pcl":"pcl","vnd.hp-pclxl":"pclxl","vnd.hydrostatix.sof-data":"sfd-hdstx","vnd.ibm.minipay":"mpy","vnd.ibm.modcap":["afp","listafp","list3820"],"vnd.ibm.rights-management":"irm","vnd.ibm.secure-container":"sc","vnd.iccprofile":["icc","icm"],"vnd.igloader":"igl","vnd.immervision-ivp":"ivp","vnd.immervision-ivu":"ivu","vnd.insors.igm":"igm","vnd.intercon.formnet":["xpw","xpx"],"vnd.intergeo":"i2g","vnd.intu.qbo":"qbo","vnd.intu.qfx":"qfx","vnd.ipunplugged.rcprofile":"rcprofile","vnd.irepository.package+xml":"irp","vnd.is-xpr":"xpr","vnd.isac.fcs":"fcs","vnd.jam":"jam","vnd.jcp.javame.midlet-rms":"rms","vnd.jisp":"jisp","vnd.joost.joda-archive":"joda","vnd.kahootz":["ktz","ktr"],"vnd.kde.karbon":"karbon","vnd.kde.kchart":"chrt","vnd.kde.kformula":"kfo","vnd.kde.kivio":"flw","vnd.kde.kontour":"kon","vnd.kde.kpresenter":["kpr","kpt"],"vnd.kde.kspread":"ksp","vnd.kde.kword":["kwd","kwt"],"vnd.kenameaapp":"htke","vnd.kidspiration":"kia","vnd.kinar":["kne","knp"],"vnd.koan":["skp","skd","skt","skm"],"vnd.kodak-descriptor":"sse","vnd.las.las+xml":"lasxml","vnd.llamagraphics.life-balance.desktop":"lbd","vnd.llamagraphics.life-balance.exchange+xml":"lbe","vnd.lotus-1-2-3":"123","vnd.lotus-approach":"apr","vnd.lotus-freelance":"pre","vnd.lotus-notes":"nsf","vnd.lotus-organizer":"org","vnd.lotus-screencam":"scm","vnd.lotus-wordpro":"lwp","vnd.macports.portpkg":"portpkg","vnd.mcd":"mcd","vnd.medcalcdata":"mc1","vnd.mediastation.cdkey":"cdkey","vnd.mfer":"mwf","vnd.mfmp":"mfm","vnd.micrografx.flo":"flo","vnd.micrografx.igx":"igx","vnd.mif":"mif","vnd.mobius.daf":"daf","vnd.mobius.dis":"dis","vnd.mobius.mbk":"mbk","vnd.mobius.mqy":"mqy","vnd.mobius.msl":"msl","vnd.mobius.plc":"plc","vnd.mobius.txf":"txf","vnd.mophun.application":"mpn","vnd.mophun.certificate":"mpc","vnd.ms-artgalry":"cil","vnd.ms-cab-compressed":"cab","vnd.ms-excel.addin.macroenabled.12":"xlam","vnd.ms-excel.sheet.binary.macroenabled.12":"xlsb","vnd.ms-excel.sheet.macroenabled.12":"xlsm","vnd.ms-excel.template.macroenabled.12":"xltm","vnd.ms-fontobject":"eot","vnd.ms-htmlhelp":"chm","vnd.ms-ims":"ims","vnd.ms-lrm":"lrm","vnd.ms-officetheme":"thmx","vnd.ms-powerpoint.addin.macroenabled.12":"ppam","vnd.ms-powerpoint.presentation.macroenabled.12":"pptm","vnd.ms-powerpoint.slide.macroenabled.12":"sldm","vnd.ms-powerpoint.slideshow.macroenabled.12":"ppsm","vnd.ms-powerpoint.template.macroenabled.12":"potm","vnd.ms-project":["mpp","mpt"],"vnd.ms-word.document.macroenabled.12":"docm","vnd.ms-word.template.macroenabled.12":"dotm","vnd.ms-works":["wps","wks","wcm","wdb"],"vnd.ms-wpl":"wpl","vnd.ms-xpsdocument":"xps","vnd.mseq":"mseq","vnd.musician":"mus","vnd.muvee.style":"msty","vnd.mynfc":"taglet","vnd.neurolanguage.nlu":"nlu","vnd.nitf":["ntf","nitf"],"vnd.noblenet-directory":"nnd","vnd.noblenet-sealer":"nns","vnd.noblenet-web":"nnw","vnd.nokia.n-gage.data":"ngdat","vnd.nokia.n-gage.symbian.install":"n-gage","vnd.nokia.radio-preset":"rpst","vnd.nokia.radio-presets":"rpss","vnd.novadigm.edm":"edm","vnd.novadigm.edx":"edx","vnd.novadigm.ext":"ext","vnd.oasis.opendocument.chart-template":"otc","vnd.oasis.opendocument.formula-template":"odft","vnd.oasis.opendocument.image-template":"oti","vnd.olpc-sugar":"xo","vnd.oma.dd2+xml":"dd2","vnd.openofficeorg.extension":"oxt","vnd.openxmlformats-officedocument.presentationml.slide":"sldx","vnd.osgeo.mapguide.package":"mgp","vnd.osgi.dp":"dp","vnd.osgi.subsystem":"esa","vnd.palm":["pdb","pqa","oprc"],"vnd.pawaafile":"paw","vnd.pg.format":"str","vnd.pg.osasli":"ei6","vnd.picsel":"efif","vnd.pmi.widget":"wg","vnd.pocketlearn":"plf","vnd.powerbuilder6":"pbd","vnd.previewsystems.box":"box","vnd.proteus.magazine":"mgz","vnd.publishare-delta-tree":"qps","vnd.pvi.ptid1":"ptid","vnd.quark.quarkxpress":["qxd","qxt","qwd","qwt","qxl","qxb"],"vnd.realvnc.bed":"bed","vnd.recordare.musicxml":"mxl","vnd.recordare.musicxml+xml":"musicxml","vnd.rig.cryptonote":"cryptonote","vnd.rn-realmedia":"rm","vnd.rn-realmedia-vbr":"rmvb","vnd.route66.link66+xml":"link66","vnd.sailingtracker.track":"st","vnd.seemail":"see","vnd.sema":"sema","vnd.semd":"semd","vnd.semf":"semf","vnd.shana.informed.formdata":"ifm","vnd.shana.informed.formtemplate":"itp","vnd.shana.informed.interchange":"iif","vnd.shana.informed.package":"ipk","vnd.simtech-mindmapper":["twd","twds"],"vnd.smart.teacher":"teacher","vnd.solent.sdkm+xml":["sdkm","sdkd"],"vnd.spotfire.dxp":"dxp","vnd.spotfire.sfs":"sfs","vnd.stepmania.package":"smzip","vnd.stepmania.stepchart":"sm","vnd.sus-calendar":["sus","susp"],"vnd.svd":"svd","vnd.syncml+xml":"xsm","vnd.syncml.dm+wbxml":"bdm","vnd.syncml.dm+xml":"xdm","vnd.tao.intent-module-archive":"tao","vnd.tcpdump.pcap":["pcap","cap","dmp"],"vnd.tmobile-livetv":"tmo","vnd.trid.tpt":"tpt","vnd.triscape.mxs":"mxs","vnd.trueapp":"tra","vnd.ufdl":["ufd","ufdl"],"vnd.uiq.theme":"utz","vnd.umajin":"umj","vnd.unity":"unityweb","vnd.uoml+xml":"uoml","vnd.vcx":"vcx","vnd.visionary":"vis","vnd.vsf":"vsf","vnd.webturbo":"wtb","vnd.wolfram.player":"nbp","vnd.wqd":"wqd","vnd.wt.stf":"stf","vnd.xara":"xar","vnd.xfdl":"xfdl","vnd.yamaha.hv-dic":"hvd","vnd.yamaha.hv-script":"hvs","vnd.yamaha.hv-voice":"hvp","vnd.yamaha.openscoreformat":"osf","vnd.yamaha.openscoreformat.osfpvg+xml":"osfpvg","vnd.yamaha.smaf-audio":"saf","vnd.yamaha.smaf-phrase":"spf","vnd.yellowriver-custom-menu":"cmp","vnd.zul":["zir","zirz"],"vnd.zzazz.deck+xml":"zaz","voicexml+xml":"vxml",widget:"wgt",winhlp:"hlp","wsdl+xml":"wsdl","wspolicy+xml":"wspolicy","x-ace-compressed":"ace","x-authorware-bin":["aab","x32","u32","vox"],"x-authorware-map":"aam","x-authorware-seg":"aas","x-blorb":["blb","blorb"],"x-bzip":"bz","x-bzip2":["bz2","boz"],"x-cfs-compressed":"cfs","x-chat":"chat","x-conference":"nsc","x-dgc-compressed":"dgc","x-dtbncx+xml":"ncx","x-dtbook+xml":"dtb","x-dtbresource+xml":"res","x-eva":"eva","x-font-bdf":"bdf","x-font-ghostscript":"gsf","x-font-linux-psf":"psf","x-font-pcf":"pcf","x-font-snf":"snf","x-font-ttf":["ttf","ttc"],"x-font-type1":["pfa","pfb","pfm","afm"],"x-freearc":"arc","x-gca-compressed":"gca","x-glulx":"ulx","x-gramps-xml":"gramps","x-install-instructions":"install","x-lzh-compressed":["lzh","lha"],"x-mie":"mie","x-mobipocket-ebook":["prc","mobi"],"x-ms-application":"application","x-ms-shortcut":"lnk","x-ms-xbap":"xbap","x-msbinder":"obd","x-mscardfile":"crd","x-msclip":"clp","application/x-ms-installer":"msi","x-msmediaview":["mvb","m13","m14"],"x-msmetafile":["wmf","wmz","emf","emz"],"x-msmoney":"mny","x-mspublisher":"pub","x-msschedule":"scd","x-msterminal":"trm","x-mswrite":"wri","x-nzb":"nzb","x-pkcs12":["p12","pfx"],"x-pkcs7-certificates":["p7b","spc"],"x-research-info-systems":"ris","x-silverlight-app":"xap","x-sql":"sql","x-stuffitx":"sitx","x-subrip":"srt","x-t3vm-image":"t3","x-tex-tfm":"tfm","x-tgif":"obj","x-xliff+xml":"xlf","x-xz":"xz","x-zmachine":["z1","z2","z3","z4","z5","z6","z7","z8"],"xaml+xml":"xaml","xcap-diff+xml":"xdf","xenc+xml":"xenc","xml-dtd":"dtd","xop+xml":"xop","xproc+xml":"xpl","xslt+xml":"xslt","xv+xml":["mxml","xhvml","xvml","xvm"],yang:"yang","yin+xml":"yin",envoy:"evy",fractals:"fif","internet-property-stream":"acx",olescript:"axs","vnd.ms-outlook":"msg","vnd.ms-pkicertstore":"sst","x-compress":"z","x-perfmon":["pma","pmc","pmr","pmw"],"ynd.ms-pkipko":"pko",gzip:["gz","tgz"],"smil+xml":["smi","smil"],"vnd.debian.binary-package":["deb","udeb"],"vnd.hzn-3d-crossword":"x3d","vnd.sqlite3":["db","sqlite","sqlite3","db-wal","sqlite-wal","db-shm","sqlite-shm"],"vnd.wap.sic":"sic","vnd.wap.slc":"slc","x-krita":["kra","krz"],"x-perl":["pm","pl"],yaml:["yaml","yml"]},audio:{amr:"amr","amr-wb":"awb",annodex:"axa",basic:["au","snd"],flac:"flac",midi:["mid","midi","kar","rmi"],mpeg:["mpga","mpega","mp3","m4a","mp2a","m2a","m3a"],mpegurl:"m3u",ogg:["oga","ogg","spx"],"prs.sid":"sid","x-aiff":"aifc","x-gsm":"gsm","x-ms-wma":"wma","x-ms-wax":"wax","x-pn-realaudio":"ram","x-realaudio":"ra","x-sd2":"sd2",adpcm:"adp",mp4:"mp4a",s3m:"s3m",silk:"sil","vnd.dece.audio":["uva","uvva"],"vnd.digital-winds":"eol","vnd.dra":"dra","vnd.dts":"dts","vnd.dts.hd":"dtshd","vnd.lucent.voice":"lvp","vnd.ms-playready.media.pya":"pya","vnd.nuera.ecelp4800":"ecelp4800","vnd.nuera.ecelp7470":"ecelp7470","vnd.nuera.ecelp9600":"ecelp9600","vnd.rip":"rip",webm:"weba","x-caf":"caf","x-matroska":"mka","x-pn-realaudio-plugin":"rmp",xm:"xm",aac:"aac",aiff:["aiff","aif","aff"],opus:"opus",wav:"wav"},chemical:{"x-alchemy":"alc","x-cache":["cac","cache"],"x-cache-csf":"csf","x-cactvs-binary":["cbin","cascii","ctab"],"x-cdx":"cdx","x-chem3d":"c3d","x-cif":"cif","x-cmdf":"cmdf","x-cml":"cml","x-compass":"cpa","x-crossfire":"bsd","x-csml":["csml","csm"],"x-ctx":"ctx","x-cxf":["cxf","cef"],"x-embl-dl-nucleotide":["emb","embl"],"x-gamess-input":["inp","gam","gamin"],"x-gaussian-checkpoint":["fch","fchk"],"x-gaussian-cube":"cub","x-gaussian-input":["gau","gjc","gjf"],"x-gaussian-log":"gal","x-gcg8-sequence":"gcg","x-genbank":"gen","x-hin":"hin","x-isostar":["istr","ist"],"x-jcamp-dx":["jdx","dx"],"x-kinemage":"kin","x-macmolecule":"mcm","x-macromodel-input":"mmod","x-mdl-molfile":"mol","x-mdl-rdfile":"rd","x-mdl-rxnfile":"rxn","x-mdl-sdfile":"sd","x-mdl-tgf":"tgf","x-mmcif":"mcif","x-mol2":"mol2","x-molconn-Z":"b","x-mopac-graph":"gpt","x-mopac-input":["mop","mopcrt","zmt"],"x-mopac-out":"moo","x-ncbi-asn1":"asn","x-ncbi-asn1-ascii":["prt","ent"],"x-ncbi-asn1-binary":"val","x-rosdal":"ros","x-swissprot":"sw","x-vamas-iso14976":"vms","x-vmd":"vmd","x-xtel":"xtel","x-xyz":"xyz"},font:{otf:"otf",woff:"woff",woff2:"woff2"},image:{gif:"gif",ief:"ief",jpeg:["jpeg","jpg","jpe","jfif","jfif-tbnl","jif"],pcx:"pcx",png:"png","svg+xml":["svg","svgz"],tiff:["tiff","tif"],"vnd.djvu":["djvu","djv"],"vnd.wap.wbmp":"wbmp","x-canon-cr2":"cr2","x-canon-crw":"crw","x-cmu-raster":"ras","x-coreldraw":"cdr","x-coreldrawpattern":"pat","x-coreldrawtemplate":"cdt","x-corelphotopaint":"cpt","x-epson-erf":"erf","x-icon":"ico","x-jg":"art","x-jng":"jng","x-nikon-nef":"nef","x-olympus-orf":"orf","x-portable-anymap":"pnm","x-portable-bitmap":"pbm","x-portable-graymap":"pgm","x-portable-pixmap":"ppm","x-rgb":"rgb","x-xbitmap":"xbm","x-xpixmap":"xpm","x-xwindowdump":"xwd",bmp:"bmp",cgm:"cgm",g3fax:"g3",ktx:"ktx","prs.btif":"btif",sgi:"sgi","vnd.dece.graphic":["uvi","uvvi","uvg","uvvg"],"vnd.dwg":"dwg","vnd.dxf":"dxf","vnd.fastbidsheet":"fbs","vnd.fpx":"fpx","vnd.fst":"fst","vnd.fujixerox.edmics-mmr":"mmr","vnd.fujixerox.edmics-rlc":"rlc","vnd.ms-modi":"mdi","vnd.ms-photo":"wdp","vnd.net-fpx":"npx","vnd.xiff":"xif",webp:"webp","x-3ds":"3ds","x-cmx":"cmx","x-freehand":["fh","fhc","fh4","fh5","fh7"],"x-pict":["pic","pct"],"x-tga":"tga","cis-cod":"cod",avif:"avifs",heic:["heif","heic"],pjpeg:["pjpg"],"vnd.adobe.photoshop":"psd","x-adobe-dng":"dng","x-fuji-raf":"raf","x-icns":"icns","x-kodak-dcr":"dcr","x-kodak-k25":"k25","x-kodak-kdc":"kdc","x-minolta-mrw":"mrw","x-panasonic-raw":["raw","rw2","rwl"],"x-pentax-pef":["pef","ptx"],"x-sigma-x3f":"x3f","x-sony-arw":"arw","x-sony-sr2":"sr2","x-sony-srf":"srf"},message:{rfc822:["eml","mime","mht","mhtml","nws"]},model:{iges:["igs","iges"],mesh:["msh","mesh","silo"],vrml:["wrl","vrml"],"x3d+vrml":["x3dv","x3dvz"],"x3d+xml":"x3dz","x3d+binary":["x3db","x3dbz"],"vnd.collada+xml":"dae","vnd.dwf":"dwf","vnd.gdl":"gdl","vnd.gtw":"gtw","vnd.mts":"mts","vnd.usdz+zip":"usdz","vnd.vtu":"vtu"},text:{"cache-manifest":["manifest","appcache"],calendar:["ics","icz","ifb"],css:"css",csv:"csv",h323:"323",html:["html","htm","shtml","stm"],iuls:"uls",plain:["txt","text","brf","conf","def","list","log","in","bas","diff","ksh"],richtext:"rtx",scriptlet:["sct","wsc"],texmacs:"tm","tab-separated-values":"tsv","vnd.sun.j2me.app-descriptor":"jad","vnd.wap.wml":"wml","vnd.wap.wmlscript":"wmls","x-bibtex":"bib","x-boo":"boo","x-c++hdr":["h++","hpp","hxx","hh"],"x-c++src":["c++","cpp","cxx","cc"],"x-component":"htc","x-dsrc":"d","x-diff":"patch","x-haskell":"hs","x-java":"java","x-literate-haskell":"lhs","x-moc":"moc","x-pascal":["p","pas","pp","inc"],"x-pcs-gcd":"gcd","x-python":"py","x-scala":"scala","x-setext":"etx","x-tcl":["tcl","tk"],"x-tex":["tex","ltx","sty","cls"],"x-vcalendar":"vcs","x-vcard":"vcf",n3:"n3","prs.lines.tag":"dsc",sgml:["sgml","sgm"],troff:["t","tr","roff","man","me","ms"],turtle:"ttl","uri-list":["uri","uris","urls"],vcard:"vcard","vnd.curl":"curl","vnd.curl.dcurl":"dcurl","vnd.curl.scurl":"scurl","vnd.curl.mcurl":"mcurl","vnd.dvb.subtitle":"sub","vnd.fly":"fly","vnd.fmi.flexstor":"flx","vnd.graphviz":"gv","vnd.in3d.3dml":"3dml","vnd.in3d.spot":"spot","x-asm":["s","asm"],"x-c":["c","h","dic"],"x-fortran":["f","for","f77","f90"],"x-opml":"opml","x-nfo":"nfo","x-sfv":"sfv","x-uuencode":"uu",webviewhtml:"htt",javascript:"js",json:"json",markdown:["md","markdown","mdown","markdn"],"vnd.wap.si":"si","vnd.wap.sl":"sl"},video:{avif:"avif","3gpp":"3gp",annodex:"axv",dl:"dl",dv:["dif","dv"],fli:"fli",gl:"gl",mpeg:["mpeg","mpg","mpe","m1v","m2v","mp2","mpa","mpv2"],mp4:["mp4","mp4v","mpg4"],quicktime:["qt","mov"],ogg:"ogv","vnd.mpegurl":["mxu","m4u"],"x-flv":"flv","x-la-asf":["lsf","lsx"],"x-mng":"mng","x-ms-asf":["asf","asx","asr"],"x-ms-wm":"wm","x-ms-wmv":"wmv","x-ms-wmx":"wmx","x-ms-wvx":"wvx","x-msvideo":"avi","x-sgi-movie":"movie","x-matroska":["mpv","mkv","mk3d","mks"],"3gpp2":"3g2",h261:"h261",h263:"h263",h264:"h264",jpeg:"jpgv",jpm:["jpm","jpgm"],mj2:["mj2","mjp2"],"vnd.dece.hd":["uvh","uvvh"],"vnd.dece.mobile":["uvm","uvvm"],"vnd.dece.pd":["uvp","uvvp"],"vnd.dece.sd":["uvs","uvvs"],"vnd.dece.video":["uvv","uvvv"],"vnd.dvb.file":"dvb","vnd.fvt":"fvt","vnd.ms-playready.media.pyv":"pyv","vnd.uvvu.mp4":["uvu","uvvu"],"vnd.vivo":"viv",webm:"webm","x-f4v":"f4v","x-m4v":"m4v","x-ms-vob":"vob","x-smv":"smv",mp2t:"ts"},"x-conference":{"x-cooltalk":"ice"},"x-world":{"x-vrml":["vrm","flr","wrz","xaf","xof"]}},he=(()=>{const e={};for(const t of Object.keys(me))for(const n of Object.keys(me[t])){const r=me[t][n];if("string"==typeof r)e[r]=t+"/"+n;else for(let i=0;i<r.length;i++)e[r[i]]=t+"/"+n;}return e})();function we(e){return e&&he[e.split(".").pop().toLowerCase()]||"application/octet-stream"}const ge=[];for(let e=0;e<256;e++){let t=e;for(let e=0;e<8;e++)1&t?t=t>>>1^3988292384:t>>>=1;ge[e]=t;}class xe{constructor(e){this.crc=e||-1;}append(e){let t=0|this.crc;for(let n=0,r=0|e.length;n<r;n++)t=t>>>8^ge[255&(t^e[n])];this.crc=t;}get(){return ~this.crc}}class be extends TransformStream{constructor(){let e;const t=new xe;super({transform(e,n){t.append(e),n.enqueue(e);},flush(){const n=new Uint8Array(4);new DataView(n.buffer).setUint32(0,t.get()),e.value=n;}}),e=this;}}function ve(e){if(typeof TextEncoder==ie){e=unescape(encodeURIComponent(e));const t=new Uint8Array(e.length);for(let n=0;n<t.length;n++)t[n]=e.charCodeAt(n);return t}return (new TextEncoder).encode(e)}const ye={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const n=e[e.length-1],r=ye.getPartial(n);return 32===r?e.concat(t):ye._shiftRight(t,r,0|n,e.slice(0,e.length-1))},bitLength(e){const t=e.length;if(0===t)return 0;const n=e[t-1];return 32*(t-1)+ye.getPartial(n)},clamp(e,t){if(32*e.length<t)return e;const n=(e=e.slice(0,Math.ceil(t/32))).length;return t&=31,n>0&&t&&(e[n-1]=ye.partial(t,e[n-1]&2147483648>>t-1,1)),e},partial:(e,t,n)=>32===e?t:(n?0|t:t<<32-e)+1099511627776*e,getPartial:e=>Math.round(e/1099511627776)||32,_shiftRight(e,t,n,r){for(void 0===r&&(r=[]);t>=32;t-=32)r.push(n),n=0;if(0===t)return r.concat(e);for(let i=0;i<e.length;i++)r.push(n|e[i]>>>t),n=e[i]<<32-t;const i=e.length?e[e.length-1]:0,s=ye.getPartial(i);return r.push(ye.partial(t+s&31,t+s>32?n:r.pop(),1)),r}},_e={bytes:{fromBits(e){const t=ye.bitLength(e)/8,n=new Uint8Array(t);let r;for(let i=0;i<t;i++)3&i||(r=e[i/4]),n[i]=r>>>24,r<<=8;return n},toBits(e){const t=[];let n,r=0;for(n=0;n<e.length;n++)r=r<<8|e[n],3&~n||(t.push(r),r=0);return 3&n&&t.push(ye.partial(8*(3&n),r)),t}}},ke={sha1:class{constructor(e){const t=this;t.blockSize=512,t._init=[1732584193,4023233417,2562383102,271733878,3285377520],t._key=[1518500249,1859775393,2400959708,3395469782],e?(t._h=e._h.slice(0),t._buffer=e._buffer.slice(0),t._length=e._length):t.reset();}reset(){const e=this;return e._h=e._init.slice(0),e._buffer=[],e._length=0,e}update(e){const t=this;"string"==typeof e&&(e=_e.utf8String.toBits(e));const n=t._buffer=ye.concat(t._buffer,e),r=t._length,i=t._length=r+ye.bitLength(e);if(i>9007199254740991)throw new Error("Cannot hash more than 2^53 - 1 bits");const s=new Uint32Array(n);let a=0;for(let e=t.blockSize+r-(t.blockSize+r&t.blockSize-1);e<=i;e+=t.blockSize)t._block(s.subarray(16*a,16*(a+1))),a+=1;return n.splice(0,16*a),t}finalize(){const e=this;let t=e._buffer;const n=e._h;t=ye.concat(t,[ye.partial(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(Math.floor(e._length/4294967296)),t.push(0|e._length);t.length;)e._block(t.splice(0,16));return e.reset(),n}_f(e,t,n,r){return e<=19?t&n|~t&r:e<=39?t^n^r:e<=59?t&n|t&r|n&r:e<=79?t^n^r:void 0}_S(e,t){return t<<e|t>>>32-e}_block(e){const t=this,n=t._h,r=Array(80);for(let t=0;t<16;t++)r[t]=e[t];let i=n[0],s=n[1],a=n[2],o=n[3],c=n[4];for(let e=0;e<=79;e++){e>=16&&(r[e]=t._S(1,r[e-3]^r[e-8]^r[e-14]^r[e-16]));const n=t._S(5,i)+t._f(e,s,a,o)+c+r[e]+t._key[Math.floor(e/20)]|0;c=o,o=a,a=t._S(30,s),s=i,i=n;}n[0]=n[0]+i|0,n[1]=n[1]+s|0,n[2]=n[2]+a|0,n[3]=n[3]+o|0,n[4]=n[4]+c|0;}}},Se={aes:class{constructor(e){const t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();const n=t._tables[0][4],r=t._tables[1],i=e.length;let s,a,o,c=1;if(4!==i&&6!==i&&8!==i)throw new Error("invalid aes key size");for(t._key=[a=e.slice(0),o=[]],s=i;s<4*i+28;s++){let e=a[s-1];(s%i==0||8===i&&s%i==4)&&(e=n[e>>>24]<<24^n[e>>16&255]<<16^n[e>>8&255]<<8^n[255&e],s%i==0&&(e=e<<8^e>>>24^c<<24,c=c<<1^283*(c>>7))),a[s]=a[s-i]^e;}for(let e=0;s;e++,s--){const t=a[3&e?s:s-4];o[e]=s<=4||e<4?t:r[0][n[t>>>24]]^r[1][n[t>>16&255]]^r[2][n[t>>8&255]]^r[3][n[255&t]];}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){const e=this._tables[0],t=this._tables[1],n=e[4],r=t[4],i=[],s=[];let a,o,c,l;for(let e=0;e<256;e++)s[(i[e]=e<<1^283*(e>>7))^e]=e;for(let d=a=0;!n[d];d^=o||1,a=s[a]||1){let s=a^a<<1^a<<2^a<<3^a<<4;s=s>>8^255&s^99,n[d]=s,r[s]=d,l=i[c=i[o=i[d]]];let f=16843009*l^65537*c^257*o^16843008*d,u=257*i[s]^16843008*s;for(let n=0;n<4;n++)e[n][d]=u=u<<24^u>>>8,t[n][s]=f=f<<24^f>>>8;}for(let n=0;n<5;n++)e[n]=e[n].slice(0),t[n]=t[n].slice(0);}_crypt(e,t){if(4!==e.length)throw new Error("invalid aes block size");const n=this._key[t],r=n.length/4-2,i=[0,0,0,0],s=this._tables[t],a=s[0],o=s[1],c=s[2],l=s[3],d=s[4];let f,u,p,m=e[0]^n[0],h=e[t?3:1]^n[1],w=e[2]^n[2],g=e[t?1:3]^n[3],x=4;for(let e=0;e<r;e++)f=a[m>>>24]^o[h>>16&255]^c[w>>8&255]^l[255&g]^n[x],u=a[h>>>24]^o[w>>16&255]^c[g>>8&255]^l[255&m]^n[x+1],p=a[w>>>24]^o[g>>16&255]^c[m>>8&255]^l[255&h]^n[x+2],g=a[g>>>24]^o[m>>16&255]^c[h>>8&255]^l[255&w]^n[x+3],x+=4,m=f,h=u,w=p;for(let e=0;e<4;e++)i[t?3&-e:e]=d[m>>>24]<<24^d[h>>16&255]<<16^d[w>>8&255]<<8^d[255&g]^n[x++],f=m,m=h,h=w,w=g,g=f;return i}}},ze={getRandomValues(e){const t=new Uint32Array(e.buffer),n=e=>{let t=987654321;const n=4294967295;return function(){t=36969*(65535&t)+(t>>16)&n;return (((t<<16)+(e=18e3*(65535&e)+(e>>16)&n)&n)/4294967296+.5)*(Math.random()>.5?1:-1)}};for(let r,i=0;i<e.length;i+=4){const e=n(4294967296*(r||Math.random()));r=987654071*e(),t[i/4]=4294967296*e()|0;}return e}},Ae={ctrGladman:class{constructor(e,t){this._prf=e,this._initIv=t,this._iv=t;}reset(){this._iv=this._initIv;}update(e){return this.calculate(this._prf,e,this._iv)}incWord(e){if(255&~(e>>24))e+=1<<24;else {let t=e>>16&255,n=e>>8&255,r=255&e;255===t?(t=0,255===n?(n=0,255===r?r=0:++r):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=r;}return e}incCounter(e){0===(e[0]=this.incWord(e[0]))&&(e[1]=this.incWord(e[1]));}calculate(e,t,n){let r;if(!(r=t.length))return [];const i=ye.bitLength(t);for(let i=0;i<r;i+=4){this.incCounter(n);const r=e.encrypt(n);t[i]^=r[0],t[i+1]^=r[1],t[i+2]^=r[2],t[i+3]^=r[3];}return ye.clamp(t,i)}}},Ce={importKey:e=>new Ce.hmacSha1(_e.bytes.toBits(e)),pbkdf2(e,t,n,r){if(n=n||1e4,r<0||n<0)throw new Error("invalid params to pbkdf2");const i=1+(r>>5)<<2;let s,a,o,c,l;const d=new ArrayBuffer(i),f=new DataView(d);let u=0;const p=ye;for(t=_e.bytes.toBits(t),l=1;u<(i||1);l++){for(s=a=e.encrypt(p.concat(t,[l])),o=1;o<n;o++)for(a=e.encrypt(a),c=0;c<a.length;c++)s[c]^=a[c];for(o=0;u<(i||1)&&o<s.length;o++)f.setInt32(u,s[o]),u+=4;}return d.slice(0,r/8)},hmacSha1:class{constructor(e){const t=this,n=t._hash=ke.sha1,r=[[],[]];t._baseHash=[new n,new n];const i=t._baseHash[0].blockSize/32;e.length>i&&(e=(new n).update(e).finalize());for(let t=0;t<i;t++)r[0][t]=909522486^e[t],r[1][t]=1549556828^e[t];t._baseHash[0].update(r[0]),t._baseHash[1].update(r[1]),t._resultHash=new n(t._baseHash[0]);}reset(){const e=this;e._resultHash=new e._hash(e._baseHash[0]),e._updated=false;}update(e){this._updated=true,this._resultHash.update(e);}digest(){const e=this,t=e._resultHash.finalize(),n=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),n}encrypt(e){if(this._updated)throw new Error("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},De=typeof crypto!=ie&&typeof crypto.getRandomValues==se,Ue="Invalid password",Ee="Invalid signature",We="zipjs-abort-check-password";function Fe(e){return De?crypto.getRandomValues(e):ze.getRandomValues(e)}const je=16,qe={name:"PBKDF2"},Te=Object.assign({hash:{name:"HMAC"}},qe),Oe=Object.assign({iterations:1e3,hash:{name:"SHA-1"}},qe),Re=["deriveBits"],Le=[8,12,16],Ie=[16,24,32],Me=10,Pe=[0,0,0,0],Be=typeof crypto!=ie,He=Be&&crypto.subtle,Ne=Be&&typeof He!=ie,Ve=_e.bytes,Ze=Se.aes,Ke=Ae.ctrGladman,Ge=Ce.hmacSha1;let Xe=Be&&Ne&&typeof He.importKey==se,Je=Be&&Ne&&typeof He.deriveBits==se;class Ye extends TransformStream{constructor({password:e,rawPassword:t,signed:n,encryptionStrength:r,checkPasswordOnly:i}){super({start(){Object.assign(this,{ready:new Promise((e=>this.resolveReady=e)),password:tt(e,t),signed:n,strength:r-1,pending:new Uint8Array});},async transform(e,t){const n=this,{password:r,strength:s,resolveReady:a,ready:o}=n;r?(await async function(e,t,n,r){const i=await et(e,t,n,rt(r,0,Le[t])),s=rt(r,Le[t]);if(i[0]!=s[0]||i[1]!=s[1])throw new Error(Ue)}(n,s,r,rt(e,0,Le[s]+2)),e=rt(e,Le[s]+2),i?t.error(new Error(We)):a()):await o;const c=new Uint8Array(e.length-Me-(e.length-Me)%je);t.enqueue($e(n,e,c,0,Me,true));},async flush(e){const{signed:t,ctr:n,hmac:r,pending:i,ready:s}=this;if(r&&n){await s;const a=rt(i,0,i.length-Me),o=rt(i,i.length-Me);let c=new Uint8Array;if(a.length){const e=st(Ve,a);r.update(e);const t=n.update(e);c=it(Ve,t);}if(t){const e=rt(it(Ve,r.digest()),0,Me);for(let t=0;t<Me;t++)if(e[t]!=o[t])throw new Error(Ee)}e.enqueue(c);}}});}}class Qe extends TransformStream{constructor({password:e,rawPassword:t,encryptionStrength:n}){let r;super({start(){Object.assign(this,{ready:new Promise((e=>this.resolveReady=e)),password:tt(e,t),strength:n-1,pending:new Uint8Array});},async transform(e,t){const n=this,{password:r,strength:i,resolveReady:s,ready:a}=n;let o=new Uint8Array;r?(o=await async function(e,t,n){const r=Fe(new Uint8Array(Le[t])),i=await et(e,t,n,r);return nt(r,i)}(n,i,r),s()):await a;const c=new Uint8Array(o.length+e.length-e.length%je);c.set(o,0),t.enqueue($e(n,e,c,o.length,0));},async flush(e){const{ctr:t,hmac:n,pending:i,ready:s}=this;if(n&&t){await s;let a=new Uint8Array;if(i.length){const e=t.update(st(Ve,i));n.update(e),a=it(Ve,e);}r.signature=it(Ve,n.digest()).slice(0,Me),e.enqueue(nt(a,r.signature));}}}),r=this;}}function $e(e,t,n,r,i,s){const{ctr:a,hmac:o,pending:c}=e,l=t.length-i;let d;for(c.length&&(t=nt(c,t),n=function(e,t){if(t&&t>e.length){const n=e;(e=new Uint8Array(t)).set(n,0);}return e}(n,l-l%je)),d=0;d<=l-je;d+=je){const e=st(Ve,rt(t,d,d+je));s&&o.update(e);const i=a.update(e);s||o.update(i),n.set(it(Ve,i),d+r);}return e.pending=rt(t,d),n}async function et(e,t,n,r){e.password=null;const i=await async function(e,t,n,r,i){if(!Xe)return Ce.importKey(t);try{return await He.importKey(e,t,n,r,i)}catch(e){return Xe=false,Ce.importKey(t)}}("raw",n,Te,false,Re),s=await async function(e,t,n){if(!Je)return Ce.pbkdf2(t,e.salt,Oe.iterations,n);try{return await He.deriveBits(e,t,n)}catch(r){return Je=false,Ce.pbkdf2(t,e.salt,Oe.iterations,n)}}(Object.assign({salt:r},Oe),i,8*(2*Ie[t]+2)),a=new Uint8Array(s),o=st(Ve,rt(a,0,Ie[t])),c=st(Ve,rt(a,Ie[t],2*Ie[t])),l=rt(a,2*Ie[t]);return Object.assign(e,{keys:{key:o,authentication:c,passwordVerification:l},ctr:new Ke(new Ze(o),Array.from(Pe)),hmac:new Ge(c)}),l}function tt(e,t){return t===re?ve(e):t}function nt(e,t){let n=e;return e.length+t.length&&(n=new Uint8Array(e.length+t.length),n.set(e,0),n.set(t,e.length)),n}function rt(e,t,n){return e.subarray(t,n)}function it(e,t){return e.fromBits(t)}function st(e,t){return e.toBits(t)}const at=12;class ot extends TransformStream{constructor({password:e,passwordVerification:t,checkPasswordOnly:n}){super({start(){Object.assign(this,{password:e,passwordVerification:t}),ft(this,e);},transform(e,t){const r=this;if(r.password){const t=lt(r,e.subarray(0,at));if(r.password=null,t[11]!=r.passwordVerification)throw new Error(Ue);e=e.subarray(at);}n?t.error(new Error(We)):t.enqueue(lt(r,e));}});}}class ct extends TransformStream{constructor({password:e,passwordVerification:t}){super({start(){Object.assign(this,{password:e,passwordVerification:t}),ft(this,e);},transform(e,t){const n=this;let r,i;if(n.password){n.password=null;const t=Fe(new Uint8Array(at));t[11]=n.passwordVerification,r=new Uint8Array(e.length+t.length),r.set(dt(n,t),0),i=at;}else r=new Uint8Array(e.length),i=0;r.set(dt(n,e),i),t.enqueue(r);}});}}function lt(e,t){const n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=pt(e)^t[r],ut(e,n[r]);return n}function dt(e,t){const n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=pt(e)^t[r],ut(e,t[r]);return n}function ft(e,t){const n=[305419896,591751049,878082192];Object.assign(e,{keys:n,crcKey0:new xe(n[0]),crcKey2:new xe(n[2])});for(let n=0;n<t.length;n++)ut(e,t.charCodeAt(n));}function ut(e,t){let[n,r,i]=e.keys;e.crcKey0.append([t]),n=~e.crcKey0.get(),r=ht(Math.imul(ht(r+mt(n)),134775813)+1),e.crcKey2.append([r>>>24]),i=~e.crcKey2.get(),e.keys=[n,r,i];}function pt(e){const t=2|e.keys[2];return mt(Math.imul(t,1^t)>>>8)}function mt(e){return 255&e}function ht(e){return 4294967295&e}const wt="deflate-raw";class gt extends TransformStream{constructor(e,{chunkSize:t,CompressionStream:n,CompressionStreamNative:r}){super({});const{compressed:i,encrypted:s,useCompressionStream:a,zipCrypto:o,signed:c,level:l}=e,d=this;let f,u,p=bt(super.readable);s&&!o||!c||(f=new be,p=_t(p,f)),i&&(p=yt(p,a,{level:l,chunkSize:t},r,n)),s&&(o?p=_t(p,new ct(e)):(u=new Qe(e),p=_t(p,u))),vt(d,p,(()=>{let e;s&&!o&&(e=u.signature),s&&!o||!c||(e=new DataView(f.value.buffer).getUint32(0)),d.signature=e;}));}}class xt extends TransformStream{constructor(e,{chunkSize:t,DecompressionStream:n,DecompressionStreamNative:r}){super({});const{zipCrypto:i,encrypted:s,signed:a,signature:o,compressed:c,useCompressionStream:l}=e;let d,f,u=bt(super.readable);s&&(i?u=_t(u,new ot(e)):(f=new Ye(e),u=_t(u,f))),c&&(u=yt(u,l,{chunkSize:t},r,n)),s&&!i||!a||(d=new be,u=_t(u,d)),vt(this,u,(()=>{if((!s||i)&&a){const e=new DataView(d.value.buffer);if(o!=e.getUint32(0,false))throw new Error(Ee)}}));}}function bt(e){return _t(e,new TransformStream({transform(e,t){e&&e.length&&t.enqueue(e);}}))}function vt(e,t,n){t=_t(t,new TransformStream({flush:n})),Object.defineProperty(e,"readable",{get:()=>t});}function yt(e,t,n,r,i){try{e=_t(e,new(t&&r?r:i)(wt,n));}catch(r){if(!t)return e;try{e=_t(e,new i(wt,n));}catch(t){return e}}return e}function _t(e,t){return e.pipeThrough(t)}const kt="message",St="start",zt="pull",At="data",Ct="close",Dt="deflate",Ut="inflate";class Et extends TransformStream{constructor(e,t){super({});const n=this,{codecType:r}=e;let i;r.startsWith(Dt)?i=gt:r.startsWith(Ut)&&(i=xt);let s=0,a=0;const o=new i(e,t),c=super.readable,l=new TransformStream({transform(e,t){e&&e.length&&(a+=e.length,t.enqueue(e));},flush(){Object.assign(n,{inputSize:a});}}),d=new TransformStream({transform(e,t){e&&e.length&&(s+=e.length,t.enqueue(e));},flush(){const{signature:e}=o;Object.assign(n,{signature:e,outputSize:s,inputSize:a});}});Object.defineProperty(n,"readable",{get:()=>c.pipeThrough(l).pipeThrough(o).pipeThrough(d)});}}class Wt extends TransformStream{constructor(e){let t;super({transform:function n(r,i){if(t){const e=new Uint8Array(t.length+r.length);e.set(t),e.set(r,t.length),r=e,t=null;}r.length>e?(i.enqueue(r.slice(0,e)),n(r.slice(e),i)):t=r;},flush(e){t&&t.length&&e.enqueue(t);}});}}let Ft=typeof Worker!=ie;class jt{constructor(e,{readable:t,writable:n},{options:r,config:i,streamOptions:s,useWebWorkers:a,transferStreams:o,scripts:c},l){const{signal:d}=s;return Object.assign(e,{busy:true,readable:t.pipeThrough(new Wt(i.chunkSize)).pipeThrough(new qt(t,s),{signal:d}),writable:n,options:Object.assign({},r),scripts:c,transferStreams:o,terminate:()=>new Promise((t=>{const{worker:n,busy:r}=e;n?(r?e.resolveTerminated=t:(n.terminate(),t()),e.interface=null):t();})),onTaskFinished(){const{resolveTerminated:t}=e;t&&(e.resolveTerminated=null,e.terminated=true,e.worker.terminate(),t()),e.busy=false,l(e);}}),(a&&Ft?Rt:Ot)(e,i)}}class qt extends TransformStream{constructor(e,{onstart:t,onprogress:n,size:r,onend:i}){let s=0;super({async start(){t&&await Tt(t,r);},async transform(e,t){s+=e.length,n&&await Tt(n,s,r),t.enqueue(e);},async flush(){e.size=s,i&&await Tt(i,s);}});}}async function Tt(e,...t){try{await e(...t);}catch(e){}}function Ot(e,t){return {run:()=>async function({options:e,readable:t,writable:n,onTaskFinished:r},i){try{const r=new Et(e,i);await t.pipeThrough(r).pipeTo(n,{preventClose:!0,preventAbort:!0});const{signature:s,inputSize:a,outputSize:o}=r;return {signature:s,inputSize:a,outputSize:o}}finally{r();}}(e,t)}}function Rt(e,t){const{baseURL:n,chunkSize:r}=t;if(!e.interface){let i;try{i=function(e,t,n){const r={type:"module"};let i,s;typeof e==se&&(e=e());try{i=new URL(e,t);}catch(t){i=e;}if(Lt)try{s=new Worker(i);}catch(e){Lt=!1,s=new Worker(i,r);}else s=new Worker(i,r);return s.addEventListener(kt,(e=>async function({data:e},t){const{type:n,value:r,messageId:i,result:s,error:a}=e,{reader:o,writer:c,resolveResult:l,rejectResult:d,onTaskFinished:f}=t;try{if(a){const{message:e,stack:t,code:n,name:r}=a,i=new Error(e);Object.assign(i,{stack:t,code:n,name:r}),u(i);}else {if(n==zt){const{value:e,done:n}=await o.read();Mt({type:At,value:e,done:n,messageId:i},t);}n==At&&(await c.ready,await c.write(new Uint8Array(r)),Mt({type:"ack",messageId:i},t)),n==Ct&&u(null,s);}}catch(a){Mt({type:Ct,messageId:i},t),u(a);}function u(e,t){e?d(e):l(t),c&&c.releaseLock(),f();}}(e,n))),s}(e.scripts[0],n,e);}catch(n){return Ft=false,Ot(e,t)}Object.assign(e,{worker:i,interface:{run:()=>async function(e,t){let n,r;const i=new Promise(((e,t)=>{n=e,r=t;}));Object.assign(e,{reader:null,writer:null,resolveResult:n,rejectResult:r,result:i});const{readable:s,options:a,scripts:o}=e,{writable:c,closed:l}=function(e){let t;const n=new Promise((e=>t=e)),r=new WritableStream({async write(t){const n=e.getWriter();await n.ready,await n.write(t),n.releaseLock();},close(){t();},abort:t=>e.getWriter().abort(t)});return {writable:r,closed:n}}(e.writable),d=Mt({type:St,scripts:o.slice(1),options:a,config:t,readable:s,writable:c},e);d||Object.assign(e,{reader:s.getReader(),writer:c.getWriter()});const f=await i;d||await c.getWriter().close();return await l,f}(e,{chunkSize:r})}});}return e.interface}let Lt=true,It=true;function Mt(e,{worker:t,writer:n,onTaskFinished:r,transferStreams:i}){try{const{value:n,readable:r,writable:s}=e,a=[];if(n&&(n.byteLength<n.buffer.byteLength?e.value=n.buffer.slice(0,n.byteLength):e.value=n.buffer,a.push(e.value)),i&&It?(r&&a.push(r),s&&a.push(s)):e.readable=e.writable=null,a.length)try{return t.postMessage(e,a),!0}catch(n){It=!1,e.readable=e.writable=null,t.postMessage(e);}else t.postMessage(e);}catch(e){throw n&&n.releaseLock(),r(),e}}let Pt=[];const Bt=[];let Ht=0;async function Nt(e,t){const{options:n,config:r}=t,{transferStreams:i,useWebWorkers:s,useCompressionStream:a,codecType:o,compressed:c,signed:l,encrypted:d}=n,{workerScripts:f,maxWorkers:u}=r;t.transferStreams=i||i===re;const p=!(c||l||d||t.transferStreams);return t.useWebWorkers=!p&&(s||s===re&&r.useWebWorkers),t.scripts=t.useWebWorkers&&f?f[o]:[],n.useCompressionStream=a||a===re&&r.useCompressionStream,(await async function(){const n=Pt.find((e=>!e.busy));if(n)return Vt(n),new jt(n,e,t,m);if(Pt.length<u){const n={indexWorker:Ht};return Ht++,Pt.push(n),new jt(n,e,t,m)}return new Promise((n=>Bt.push({resolve:n,stream:e,workerOptions:t})))}()).run();function m(e){if(Bt.length){const[{resolve:t,stream:n,workerOptions:r}]=Bt.splice(0,1);t(new jt(e,n,r,m));}else e.worker?(Vt(e),function(e,t){const{config:n}=t,{terminateWorkerTimeout:r}=n;Number.isFinite(r)&&r>=0&&(e.terminated?e.terminated=false:e.terminateTimeout=setTimeout((async()=>{Pt=Pt.filter((t=>t!=e));try{await e.terminate();}catch(e){}}),r));}(e,t)):Pt=Pt.filter((t=>t!=e));}}function Vt(e){const{terminateTimeout:t}=e;t&&(clearTimeout(t),e.terminateTimeout=null);}async function Zt(){await Promise.allSettled(Pt.map((e=>(Vt(e),e.terminate()))));}function Kt(e,t={},n){return {Deflate:Gt(e.Deflate,t.deflate,n),Inflate:Gt(e.Inflate,t.inflate,n)}}function Gt(e,t,n){return class{constructor(r){const i=this;var s,a;s=r,a="level",(typeof Object.hasOwn===se?Object.hasOwn(s,a):s.hasOwnProperty(a))&&r.level===re&&delete r.level,i.codec=new e(Object.assign({},t,r)),n(i.codec,(e=>{if(i.pendingData){const t=i.pendingData;i.pendingData=new Uint8Array(t.length+e.length);const{pendingData:n}=i;n.set(t,0),n.set(e,t.length);}else i.pendingData=new Uint8Array(e);}));}append(e){return this.codec.push(e),r(this)}flush(){return this.codec.push(new Uint8Array,true),r(this)}};function r(e){if(e.pendingData){const t=e.pendingData;return e.pendingData=null,t}return new Uint8Array}}const Xt="HTTP error ",Jt="HTTP Range not supported",Yt="Writer iterator completed too soon",Qt="Writer not initialized",$t="Range",en="GET",tn="bytes",nn=65536,rn="writable";class sn{constructor(){this.size=0;}init(){this.initialized=true;}}class an extends sn{get readable(){const e=this,{chunkSize:t=nn}=e,n=new ReadableStream({start(){this.chunkOffset=0;},async pull(r){const{offset:i=0,size:s,diskNumberStart:a}=n,{chunkOffset:o}=this,c=s===re?t:Math.min(t,s-o),l=await On(e,i+o,c,a);r.enqueue(l),o+t>s||s===re&&!l.length&&c?r.close():this.chunkOffset+=t;}});return n}}class on extends sn{constructor(){super();const e=this,t=new WritableStream({write(t){if(!e.initialized)throw new Error(Qt);return e.writeUint8Array(t)}});Object.defineProperty(e,rn,{get:()=>t});}writeUint8Array(){}}class cn extends an{constructor(e){super();let t=e.length;for(;"="==e.charAt(t-1);)t--;const n=e.indexOf(",")+1;Object.assign(this,{dataURI:e,dataStart:n,size:Math.floor(.75*(t-n))});}readUint8Array(e,t){const{dataStart:n,dataURI:r}=this,i=new Uint8Array(t),s=4*Math.floor(e/3),a=atob(r.substring(s+n,4*Math.ceil((e+t)/3)+n)),o=e-3*Math.floor(s/4);for(let e=o;e<o+t;e++)i[e-o]=a.charCodeAt(e);return i}}class ln extends on{constructor(e){super(),Object.assign(this,{data:"data:"+(e||"")+";base64,",pending:[]});}writeUint8Array(e){const t=this;let n=0,r=t.pending;const i=t.pending.length;for(t.pending="",n=0;n<3*Math.floor((i+e.length)/3)-i;n++)r+=String.fromCharCode(e[n]);for(;n<e.length;n++)t.pending+=String.fromCharCode(e[n]);r.length>2?t.data+=btoa(r):t.pending=r;}getData(){return this.data+btoa(this.pending)}}class dn extends an{constructor(e){super(),Object.assign(this,{blob:e,size:e.size});}async readUint8Array(e,t){const n=this,r=e+t,i=e||r<n.size?n.blob.slice(e,r):n.blob;let s=await i.arrayBuffer();return s.byteLength>t&&(s=s.slice(e,r)),new Uint8Array(s)}}class fn extends sn{constructor(e){super();const t=new TransformStream,n=[];e&&n.push(["Content-Type",e]),Object.defineProperty(this,rn,{get:()=>t.writable}),this.blob=new Response(t.readable,{headers:n}).blob();}getData(){return this.blob}}class un extends dn{constructor(e){super(new Blob([e],{type:"text/plain"}));}}class pn extends fn{constructor(e){super(e),Object.assign(this,{encoding:e,utf8:!e||"utf-8"==e.toLowerCase()});}async getData(){const{encoding:e,utf8:t}=this,n=await super.getData();if(n.text&&t)return n.text();{const t=new FileReader;return new Promise(((r,i)=>{Object.assign(t,{onload:({target:e})=>r(e.result),onerror:()=>i(t.error)}),t.readAsText(n,e);}))}}}class mn extends an{constructor(e,t){super(),wn(this,e,t);}async init(){await gn(this,zn,yn),super.init();}readUint8Array(e,t){return xn(this,e,t,zn,yn)}}class hn extends an{constructor(e,t){super(),wn(this,e,t);}async init(){await gn(this,An,_n),super.init();}readUint8Array(e,t){return xn(this,e,t,An,_n)}}function wn(e,t,n){const{preventHeadRequest:r,useRangeHeader:i,forceRangeRequests:s,combineSizeEocd:a}=n;delete(n=Object.assign({},n)).preventHeadRequest,delete n.useRangeHeader,delete n.forceRangeRequests,delete n.combineSizeEocd,delete n.useXHR,Object.assign(e,{url:t,options:n,preventHeadRequest:r,useRangeHeader:i,forceRangeRequests:s,combineSizeEocd:a});}async function gn(e,t,n){const{url:r,preventHeadRequest:i,useRangeHeader:s,forceRangeRequests:a,combineSizeEocd:o}=e;if(function(e){const{baseURL:t}=de(),{protocol:n}=new URL(e,t);return "http:"==n||"https:"==n}(r)&&(s||a)&&(void 0===i||i)){const r=await t(en,e,bn(e,o?-22:void 0));if(!a&&r.headers.get("Accept-Ranges")!=tn)throw new Error(Jt);{let i;o&&(e.eocdCache=new Uint8Array(await r.arrayBuffer()));const s=r.headers.get("Content-Range");if(s){const e=s.trim().split(/\s*\/\s*/);if(e.length){const t=e[1];t&&"*"!=t&&(i=Number(t));}}i===re?await Sn(e,t,n):e.size=i;}}else await Sn(e,t,n);}async function xn(e,t,n,r,i){const{useRangeHeader:s,forceRangeRequests:a,eocdCache:o,size:c,options:l}=e;if(s||a){if(o&&t==c-X&&n==X)return o;const i=await r(en,e,bn(e,t,n));if(206!=i.status)throw new Error(Jt);return new Uint8Array(await i.arrayBuffer())}{const{data:r}=e;return r||await i(e,l),new Uint8Array(e.data.subarray(t,t+n))}}function bn(e,t=0,n=1){return Object.assign({},vn(e),{[$t]:tn+"="+(t<0?t:t+"-"+(t+n-1))})}function vn({options:e}){const{headers:t}=e;if(t)return Symbol.iterator in t?Object.fromEntries(t):t}async function yn(e){await kn(e,zn);}async function _n(e){await kn(e,An);}async function kn(e,t){const n=await t(en,e,vn(e));e.data=new Uint8Array(await n.arrayBuffer()),e.size||(e.size=e.data.length);}async function Sn(e,t,n){if(e.preventHeadRequest)await n(e,e.options);else {const r=(await t("HEAD",e,vn(e))).headers.get("Content-Length");r?e.size=Number(r):await n(e,e.options);}}async function zn(e,{options:t,url:n},r){const i=await fetch(n,Object.assign({},t,{method:e,headers:r}));if(i.status<400)return i;throw 416==i.status?new Error(Jt):new Error(Xt+(i.statusText||i.status))}function An(e,{url:t},n){return new Promise(((r,i)=>{const s=new XMLHttpRequest;if(s.addEventListener("load",(()=>{if(s.status<400){const e=[];s.getAllResponseHeaders().trim().split(/[\r\n]+/).forEach((t=>{const n=t.trim().split(/\s*:\s*/);n[0]=n[0].trim().replace(/^[a-z]|-[a-z]/g,(e=>e.toUpperCase())),e.push(n);})),r({status:s.status,arrayBuffer:()=>s.response,headers:new Map(e)});}else i(416==s.status?new Error(Jt):new Error(Xt+(s.statusText||s.status)));}),false),s.addEventListener("error",(e=>i(e.detail?e.detail.error:new Error("Network error"))),false),s.open(e,t),n)for(const e of Object.entries(n))s.setRequestHeader(e[0],e[1]);s.responseType="arraybuffer",s.send();}))}class Cn extends an{constructor(e,t={}){super(),Object.assign(this,{url:e,reader:t.useXHR?new hn(e,t):new mn(e,t)});}set size(e){}get size(){return this.reader.size}async init(){await this.reader.init(),super.init();}readUint8Array(e,t){return this.reader.readUint8Array(e,t)}}class Dn extends Cn{constructor(e,t={}){t.useRangeHeader=true,super(e,t);}}class Un extends an{constructor(e){super(),Object.assign(this,{array:e,size:e.length});}readUint8Array(e,t){return this.array.slice(e,e+t)}}class En extends on{init(e=0){Object.assign(this,{offset:0,array:new Uint8Array(e)}),super.init();}writeUint8Array(e){const t=this;if(t.offset+e.length>t.array.length){const n=t.array;t.array=new Uint8Array(n.length+e.length),t.array.set(n);}t.array.set(e,t.offset),t.offset+=e.length;}getData(){return this.array}}class Wn extends an{constructor(e){super(),this.readers=e;}async init(){const e=this,{readers:t}=e;e.lastDiskNumber=0,e.lastDiskOffset=0,await Promise.all(t.map((async(n,r)=>{await n.init(),r!=t.length-1&&(e.lastDiskOffset+=n.size),e.size+=n.size;}))),super.init();}async readUint8Array(e,t,n=0){const r=this,{readers:i}=this;let s,a=n;-1==a&&(a=i.length-1);let o=e;for(;o>=i[a].size;)o-=i[a].size,a++;const c=i[a],l=c.size;if(o+t<=l)s=await On(c,o,t);else {const i=l-o;s=new Uint8Array(t),s.set(await On(c,o,i)),s.set(await r.readUint8Array(e+i,t-i,n),i);}return r.lastDiskNumber=Math.max(a,r.lastDiskNumber),s}}class Fn extends sn{constructor(e,t=4294967295){super();const n=this;let r,i,s;Object.assign(n,{diskNumber:0,diskOffset:0,size:0,maxSize:t,availableSize:t});const a=new WritableStream({async write(t){const{availableSize:a}=n;if(s)t.length>=a?(await o(t.slice(0,a)),await c(),n.diskOffset+=r.size,n.diskNumber++,s=null,await this.write(t.slice(a))):await o(t);else {const{value:a,done:o}=await e.next();if(o&&!a)throw new Error(Yt);r=a,r.size=0,r.maxSize&&(n.maxSize=r.maxSize),n.availableSize=n.maxSize,await jn(r),i=a.writable,s=i.getWriter(),await this.write(t);}},async close(){await s.ready,await c();}});async function o(e){const t=e.length;t&&(await s.ready,await s.write(e),r.size+=t,n.size+=t,n.availableSize-=t);}async function c(){i.size=r.size,await s.close();}Object.defineProperty(n,rn,{get:()=>a});}}async function jn(e,t){if(!e.init||e.initialized)return Promise.resolve();await e.init(t);}function qn(e){return Array.isArray(e)&&(e=new Wn(e)),e instanceof ReadableStream&&(e={readable:e}),e}function Tn(e){e.writable===re&&typeof e.next==se&&(e=new Fn(e)),e instanceof WritableStream&&(e={writable:e});const{writable:t}=e;return t.size===re&&(t.size=0),e instanceof Fn||Object.assign(e,{diskNumber:0,diskOffset:0,availableSize:1/0,maxSize:1/0}),e}function On(e,t,n,r){return e.readUint8Array(t,n,r)}const Rn=Wn,Ln=Fn,In="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split(""),Mn=256==In.length;function Pn(e,t){return t&&"cp437"==t.trim().toLowerCase()?function(e){if(Mn){let t="";for(let n=0;n<e.length;n++)t+=In[e[n]];return t}return (new TextDecoder).decode(e)}(e):new TextDecoder(t).decode(e)}const Bn="filename",Hn="rawFilename",Nn="comment",Vn="rawComment",Zn="uncompressedSize",Kn="compressedSize",Gn="offset",Xn="diskNumberStart",Jn="lastModDate",Yn="rawLastModDate",Qn="lastAccessDate",$n="rawLastAccessDate",er="creationDate",tr="rawCreationDate",nr="internalFileAttribute",rr="internalFileAttributes",ir="externalFileAttribute",sr="externalFileAttributes",ar="msDosCompatible",or="zip64",cr="encrypted",lr="version",dr="versionMadeBy",fr="zipCrypto",ur="directory",pr="executable",mr=[Bn,Hn,Kn,Zn,Jn,Yn,Nn,Vn,Qn,er,Gn,Xn,Xn,nr,rr,ir,sr,ar,or,cr,lr,dr,fr,ur,pr,"bitFlag","signature","filenameUTF8","commentUTF8","compressionMethod","extraField","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"];class hr{constructor(e){mr.forEach((t=>this[t]=e[t]));}}const wr="File format is not recognized",gr="End of central directory not found",xr="End of Zip64 central directory locator not found",br="Central directory header not found",vr="Local file header not found",yr="Zip64 extra field not found",_r="File contains encrypted entry",kr="Encryption method not supported",Sr="Compression method not supported",zr="Split zip file",Ar="utf-8",Cr="cp437",Dr=[[Zn,M],[Kn,M],[Gn,M],[Xn,P]],Ur={[P]:{getValue:Pr,bytes:4},[M]:{getValue:Br,bytes:8}};class Er{constructor(e,t={}){Object.assign(this,{reader:qn(e),options:t,config:de()});}async*getEntriesGenerator(e={}){const t=this;let{reader:n}=t;const{config:r}=t;if(await jn(n),n.size!==re&&n.readUint8Array||(n=new dn(await new Response(n.readable).blob()),await jn(n)),n.size<X)throw new Error(wr);n.chunkSize=fe(r);const i=await async function(e,t,n,r,i){const s=new Uint8Array(4);!function(e,t,n){e.setUint32(t,n,true);}(Hr(s),0,t);const a=r+i;return await o(r)||await o(Math.min(a,n));async function o(t){const i=n-t,a=await On(e,i,t);for(let e=a.length-r;e>=0;e--)if(a[e]==s[0]&&a[e+1]==s[1]&&a[e+2]==s[2]&&a[e+3]==s[3])return {offset:i+e,buffer:a.slice(e,e+r).buffer}}}(n,Z,n.size,X,1048560);if(!i){throw Pr(Hr(await On(n,0,4)))==H?new Error(zr):new Error(gr)}const s=Hr(i);let a=Pr(s,12),o=Pr(s,16);const c=i.offset,l=Mr(s,20),d=c+X+l;let f=Mr(s,4);const u=n.lastDiskNumber||0;let p=Mr(s,6),m=Mr(s,8),h=0,w=0;if(o==M||a==M||m==P||p==P){const e=Hr(await On(n,i.offset-20,20));if(Pr(e,0)==G){o=Br(e,8);let t=await On(n,o,56,-1),r=Hr(t);const s=i.offset-20-56;if(Pr(r,0)!=K&&o!=s){const e=o;o=s,h=o-e,t=await On(n,o,56,-1),r=Hr(t);}if(Pr(r,0)!=K)throw new Error(xr);f==P&&(f=Pr(r,16)),p==P&&(p=Pr(r,20)),m==P&&(m=Br(r,32)),a==M&&(a=Br(r,40)),o-=a;}}if(o>=n.size&&(h=n.size-o-a-X,o=n.size-a-X),u!=f)throw new Error(zr);if(o<0)throw new Error(wr);let g=0,x=await On(n,o,a,p),b=Hr(x);if(a){const e=i.offset-a;if(Pr(b,g)!=V&&o!=e){const t=o;o=e,h+=o-t,x=await On(n,o,a,p),b=Hr(x);}}const v=i.offset-o-(n.lastDiskOffset||0);if(a!=v&&v>=0&&(a=v,x=await On(n,o,a,p),b=Hr(x)),o<0||o>=n.size)throw new Error(wr);const y=Or(t,e,"filenameEncoding"),_=Or(t,e,"commentEncoding");for(let i=0;i<m;i++){const s=new Fr(n,r,t.options);if(Pr(b,g)!=V)throw new Error(br);jr(s,b,g+6);const a=Boolean(s.bitFlag.languageEncodingFlag),o=g+46,c=o+s.filenameLength,l=c+s.extraFieldLength,d=Mr(b,g+4),f=!(d>>8),u=d>>8==3,p=x.subarray(o,c),v=Mr(b,g+32),k=l+v,S=x.subarray(l,k),z=a,A=a,C=Pr(b,g+38),D=f&&!(16&~Ir(b,g+38))||u&&16384==(C>>16&61440)||p.length&&p[p.length-1]==ee.charCodeAt(0),U=u&&!!(C>>16&73),E=Pr(b,g+42)+h;Object.assign(s,{versionMadeBy:d,msDosCompatible:f,compressedSize:0,uncompressedSize:0,commentLength:v,directory:D,offset:E,diskNumberStart:Mr(b,g+34),internalFileAttributes:Mr(b,g+36),externalFileAttributes:C,rawFilename:p,filenameUTF8:z,commentUTF8:A,rawExtraField:x.subarray(c,l),executable:U}),s.internalFileAttribute=s.internalFileAttributes,s.externalFileAttribute=s.externalFileAttributes;const W=Or(t,e,"decodeText")||Pn,F=z?Ar:y||Cr,j=A?Ar:_||Cr;let q=W(p,F);q===re&&(q=Pn(p,F));let T=W(S,j);T===re&&(T=Pn(S,j)),Object.assign(s,{rawComment:S,filename:q,comment:T,directory:D||q.endsWith(ee)}),w=Math.max(E,w),qr(s,s,b,g+6),s.zipCrypto=s.encrypted&&!s.extraFieldAES;const O=new hr(s);O.getData=(e,t)=>s.getData(e,O,t),g=k;const{onprogress:R}=e;if(R)try{await R(i+1,m,new hr(s));}catch(e){}yield O;}const k=Or(t,e,"extractPrependedData"),S=Or(t,e,"extractAppendedData");return k&&(t.prependedData=w>0?await On(n,0,w):new Uint8Array),t.comment=l?await On(n,c+X,l):new Uint8Array,S&&(t.appendedData=d<n.size?await On(n,d,n.size-d):new Uint8Array),true}async getEntries(e={}){const t=[];for await(const n of this.getEntriesGenerator(e))t.push(n);return t}async close(){}}class Wr{constructor(e={}){const{readable:t,writable:n}=new TransformStream,r=new Er(t,e).getEntriesGenerator();this.readable=new ReadableStream({async pull(e){const{done:t,value:n}=await r.next();if(t)return e.close();const i={...n,readable:function(){const{readable:e,writable:t}=new TransformStream;if(n.getData)return n.getData(t),e}()};delete i.getData,e.enqueue(i);}}),this.writable=n;}}class Fr{constructor(e,t,n){Object.assign(this,{reader:e,config:t,options:n});}async getData(e,t,n={}){const r=this,{reader:i,offset:s,diskNumberStart:a,extraFieldAES:o,compressionMethod:c,config:l,bitFlag:d,signature:f,rawLastModDate:u,uncompressedSize:p,compressedSize:m}=r,h=t.localDirectory={},w=Hr(await On(i,s,30,a));let g=Or(r,n,"password"),x=Or(r,n,"rawPassword");const b=Or(r,n,"passThrough");if(g=g&&g.length&&g,x=x&&x.length&&x,o&&99!=o.originalCompressionMethod)throw new Error(Sr);if(0!=c&&8!=c&&!b)throw new Error(Sr);if(Pr(w,0)!=B)throw new Error(vr);jr(h,w,4),h.rawExtraField=h.extraFieldLength?await On(i,s+30+h.filenameLength,h.extraFieldLength,a):new Uint8Array,qr(r,h,w,4,true),Object.assign(t,{lastAccessDate:h.lastAccessDate,creationDate:h.creationDate});const v=r.encrypted&&h.encrypted&&!b,y=v&&!o;if(b||(t.zipCrypto=y),v){if(!y&&o.strength===re)throw new Error(kr);if(!g&&!x)throw new Error(_r)}const _=s+30+h.filenameLength+h.extraFieldLength,k=m,S=i.readable;Object.assign(S,{diskNumberStart:a,offset:_,size:k});const z=Or(r,n,"signal"),A=Or(r,n,"checkPasswordOnly");A&&(e=new WritableStream),e=Tn(e),await jn(e,b?m:p);const{writable:C}=e,{onstart:D,onprogress:U,onend:E}=n,W={options:{codecType:Ut,password:g,rawPassword:x,zipCrypto:y,encryptionStrength:o&&o.strength,signed:Or(r,n,"checkSignature")&&!b,passwordVerification:y&&(d.dataDescriptor?u>>>8&255:f>>>24&255),signature:f,compressed:0!=c&&!b,encrypted:r.encrypted&&!b,useWebWorkers:Or(r,n,"useWebWorkers"),useCompressionStream:Or(r,n,"useCompressionStream"),transferStreams:Or(r,n,"transferStreams"),checkPasswordOnly:A},config:l,streamOptions:{signal:z,size:k,onstart:D,onprogress:U,onend:E}};let F=0;try{({outputSize:F}=await Nt({readable:S,writable:C},W));}catch(e){if(!A||e.message!=We)throw e}finally{const e=Or(r,n,"preventClose");C.size+=F,e||C.locked||await C.getWriter().close();}return A?re:e.getData?e.getData():C}}function jr(e,t,n){const r=e.rawBitFlag=Mr(t,n+2),i=!(1&~r),s=Pr(t,n+6);Object.assign(e,{encrypted:i,version:Mr(t,n),bitFlag:{level:(6&r)>>1,dataDescriptor:!(8&~r),languageEncodingFlag:(r&$)==$},rawLastModDate:s,lastModDate:Rr(s),filenameLength:Mr(t,n+22),extraFieldLength:Mr(t,n+24)});}function qr(e,t,n,r,i){const{rawExtraField:s}=t,a=t.extraField=new Map,o=Hr(new Uint8Array(s));let c=0;try{for(;c<s.length;){const e=Mr(o,c),t=Mr(o,c+2);a.set(e,{type:e,data:s.slice(c+4,c+4+t)}),c+=4+t;}}catch(e){}const l=Mr(n,r+4);Object.assign(t,{signature:Pr(n,r+10),uncompressedSize:Pr(n,r+18),compressedSize:Pr(n,r+14)});const d=a.get(1);d&&(!function(e,t){t.zip64=true;const n=Hr(e.data),r=Dr.filter((([e,n])=>t[e]==n));for(let i=0,s=0;i<r.length;i++){const[a,o]=r[i];if(t[a]==o){const r=Ur[o];t[a]=e[a]=r.getValue(n,s),s+=r.bytes;}else if(e[a])throw new Error(yr)}}(d,t),t.extraFieldZip64=d);const f=a.get(28789);f&&(Tr(f,Bn,Hn,t,e),t.extraFieldUnicodePath=f);const u=a.get(25461);u&&(Tr(u,Nn,Vn,t,e),t.extraFieldUnicodeComment=u);const p=a.get(39169);p?(!function(e,t,n){const r=Hr(e.data),i=Ir(r,4);Object.assign(e,{vendorVersion:Ir(r,0),vendorId:Ir(r,2),strength:i,originalCompressionMethod:n,compressionMethod:Mr(r,5)}),t.compressionMethod=e.compressionMethod;}(p,t,l),t.extraFieldAES=p):t.compressionMethod=l;const m=a.get(10);m&&(!function(e,t){const n=Hr(e.data);let r,i=4;try{for(;i<e.data.length&&!r;){const t=Mr(n,i),s=Mr(n,i+2);1==t&&(r=e.data.slice(i+4,i+4+s)),i+=4+s;}}catch(e){}try{if(r&&24==r.length){const n=Hr(r),i=n.getBigUint64(0,!0),s=n.getBigUint64(8,!0),a=n.getBigUint64(16,!0);Object.assign(e,{rawLastModDate:i,rawLastAccessDate:s,rawCreationDate:a});const o=Lr(i),c=Lr(s),l={lastModDate:o,lastAccessDate:c,creationDate:Lr(a)};Object.assign(e,l),Object.assign(t,l);}}catch(e){}}(m,t),t.extraFieldNTFS=m);const h=a.get(Y);h&&(!function(e,t,n){const r=Hr(e.data),i=Ir(r,0),s=[],a=[];n?(1&~i||(s.push(Jn),a.push(Yn)),2&~i||(s.push(Qn),a.push($n)),4&~i||(s.push(er),a.push(tr))):e.data.length>=5&&(s.push(Jn),a.push(Yn));let o=1;s.forEach(((n,i)=>{if(e.data.length>=o+4){const s=Pr(r,o);t[n]=e[n]=new Date(1e3*s);const c=a[i];e[c]=s;}o+=4;}));}(h,t,i),t.extraFieldExtendedTimestamp=h);const w=a.get(6534);w&&(t.extraFieldUSDZ=w);}function Tr(e,t,n,r,i){const s=Hr(e.data),a=new xe;a.append(i[n]);const o=Hr(new Uint8Array(4));o.setUint32(0,a.get(),true);const c=Pr(s,1);Object.assign(e,{version:Ir(s,0),[t]:Pn(e.data.subarray(5)),valid:!i.bitFlag.languageEncodingFlag&&c==Pr(o,0)}),e.valid&&(r[t]=e[t],r[t+"UTF8"]=true);}function Or(e,t,n){return t[n]===re?e.options[n]:t[n]}function Rr(e){const t=(4294901760&e)>>16,n=65535&e;try{return new Date(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&n)>>11,(2016&n)>>5,2*(31&n),0)}catch(e){}}function Lr(e){return new Date(Number(e/BigInt(1e4)-BigInt(116444736e5)))}function Ir(e,t){return e.getUint8(t)}function Mr(e,t){return e.getUint16(t,true)}function Pr(e,t){return e.getUint32(t,true)}function Br(e,t){return Number(e.getBigUint64(t,true))}function Hr(e){return new DataView(e.buffer)}const Nr="File already exists",Vr="Zip file comment exceeds 64KB",Zr="File entry comment exceeds 64KB",Kr="File entry name exceeds 64KB",Gr="Version exceeds 65535",Xr="The strength must equal 1, 2, or 3",Jr="Extra field type exceeds 65535",Yr="Extra field data exceeds 64KB",Qr="Zip64 is not supported (make sure 'keepOrder' is set to 'true')",$r="Undefined uncompressed size",ei=new Uint8Array([7,0,2,0,65,69,3,0,0]);let ti=0;const ni=[];class ri{constructor(e,t={}){const n=(e=Tn(e)).availableSize!==re&&e.availableSize>0&&e.availableSize!==1/0&&e.maxSize!==re&&e.maxSize>0&&e.maxSize!==1/0;Object.assign(this,{writer:e,addSplitZipSignature:n,options:t,config:de(),files:new Map,filenames:new Set,offset:t.offset===re?e.writable.size:t.offset,pendingEntriesSize:0,pendingAddFileCalls:new Set,bufferedWrites:0});}async add(e="",t,n={}){const r=this,{pendingAddFileCalls:i,config:s}=r;let a;ti<s.maxWorkers?ti++:await new Promise((e=>ni.push(e)));try{if(e=e.trim(),r.filenames.has(e))throw new Error(Nr);return r.filenames.add(e),a=async function(e,t,n,r){t=t.trim();const i=oi(e,r,ar),s=oi(e,r,dr,i?20:768),a=oi(e,r,pr);if(s>P)throw new Error(Gr);let o=oi(e,r,sr,0);0===o&&(o=oi(e,r,ir,0));!r.directory&&t.endsWith(ee)&&(r.directory=!0);const c=oi(e,r,ur);c?(t.endsWith(ee)||(t+=ee),0===o&&(o=16,i||(o|=16877<<16))):i||0!==o||(o=a?493<<16:27525120);const l=oi(e,r,"encodeText",ve);let d=l(t);d===re&&(d=ve(t));if(hi(d)>P)throw new Error(Kr);const f=r.comment||"";let u=l(f);u===re&&(u=ve(f));if(hi(u)>P)throw new Error(Zr);const p=oi(e,r,lr,20);if(p>P)throw new Error(Gr);const m=oi(e,r,Jn,new Date),h=oi(e,r,Qn),w=oi(e,r,er);let g=oi(e,r,rr,0);0===g&&(g=oi(e,r,nr,0));const x=oi(e,r,"passThrough");let b,v;x||(b=oi(e,r,"password"),v=oi(e,r,"rawPassword"));const y=oi(e,r,"encryptionStrength",3),_=oi(e,r,fr),k=oi(e,r,"extendedTimestamp",!0),S=oi(e,r,"keepOrder",!0),z=oi(e,r,"level"),A=oi(e,r,"useWebWorkers"),C=oi(e,r,"bufferedWrite"),D=oi(e,r,"dataDescriptorSignature",!1),U=oi(e,r,"signal"),E=oi(e,r,"useUnicodeFileNames",!0),W=oi(e,r,"useCompressionStream"),F=oi(e,r,"compressionMethod");let j=oi(e,r,"dataDescriptor",!0),q=oi(e,r,or);if(!(_||b===re&&v===re||y>=1&&y<=3))throw new Error(Xr);let T=new Uint8Array;const{extraField:O}=r;if(O){let e=0,t=0;O.forEach((t=>e+=4+hi(t))),T=new Uint8Array(e),O.forEach(((e,n)=>{if(n>P)throw new Error(Jr);if(hi(e)>P)throw new Error(Yr);pi(T,new Uint16Array([n]),t),pi(T,new Uint16Array([hi(e)]),t+2),pi(T,e,t+4),t+=4+hi(e);}));}let R=0,L=0,I=0;if(x&&(({uncompressedSize:I}=r),I===re))throw new Error($r);const V=!0===q;n&&(n=qn(n),await jn(n),x?R=ci(I):n.size===re?(j=!0,(q||q===re)&&(q=!0,I=R=4294967296)):(I=n.size,R=ci(I)));const{diskOffset:Z,diskNumber:K,maxSize:G}=e.writer,X=V||I>M,ie=V||R>M,se=V||e.offset+e.pendingEntriesSize-Z>M,ae=oi(e,r,"supportZip64SplitFile",!0),oe=ae&&V||K+Math.ceil(e.pendingEntriesSize/G)>P;if(se||X||ie||oe){if(!1===q||!S)throw new Error(Qr);q=!0;}q=q||!1;const ce=oi(e,r,cr),{signature:le}=r;r=Object.assign({},r,{rawFilename:d,rawComment:u,version:p,versionMadeBy:s,lastModDate:m,lastAccessDate:h,creationDate:w,rawExtraField:T,zip64:q,zip64UncompressedSize:X,zip64CompressedSize:ie,zip64Offset:se,zip64DiskNumberStart:oe,password:b,rawPassword:v,level:W||e.config.CompressionStream!==re||e.config.CompressionStreamNative!==re?z:0,useWebWorkers:A,encryptionStrength:y,extendedTimestamp:k,zipCrypto:_,bufferedWrite:C,keepOrder:S,useUnicodeFileNames:E,dataDescriptor:j,dataDescriptorSignature:D,signal:U,msDosCompatible:i,internalFileAttribute:g,internalFileAttributes:g,externalFileAttribute:o,externalFileAttributes:o,useCompressionStream:W,passThrough:x,encrypted:Boolean(b&&hi(b)||v&&hi(v))||x&&ce,signature:le,compressionMethod:F});const de=function(e){const{rawFilename:t,lastModDate:n,lastAccessDate:r,creationDate:i,level:s,zip64:a,zipCrypto:o,useUnicodeFileNames:c,dataDescriptor:l,directory:d,rawExtraField:f,encryptionStrength:u,extendedTimestamp:p,encrypted:m}=e;let{version:h,compressionMethod:w}=e;const g=!d&&(s>0||s===re&&0!==w);let x,b,v,y;if(m&&!o){x=new Uint8Array(hi(ei)+2);const e=mi(x);di(e,0,J),pi(x,ei,2),li(e,8,u);}else x=new Uint8Array;if(p){v=new Uint8Array(9+(r?4:0)+(i?4:0));const e=mi(v);di(e,0,Y),di(e,2,hi(v)-4),y=1+(r?2:0)+(i?4:0),li(e,4,y);let t=5;fi(e,t,Math.floor(n.getTime()/1e3)),t+=4,r&&(fi(e,t,Math.floor(r.getTime()/1e3)),t+=4),i&&fi(e,t,Math.floor(i.getTime()/1e3));try{b=new Uint8Array(36);const e=mi(b),t=ai(n);di(e,0,10),di(e,2,32),di(e,8,1),di(e,10,24),ui(e,12,t),ui(e,20,ai(r)||t),ui(e,28,ai(i)||t);}catch(e){b=new Uint8Array;}}else b=v=new Uint8Array;let _=0;c&&(_|=$);l&&(_|=8);w===re&&(w=g?8:0);8==w&&(s>=1&&s<3&&(_|=6),s>=3&&s<5&&(_|=1),9===s&&(_|=2));a&&(h=h>45?h:45);m&&(_|=1,o||(h=h>51?h:51,x[9]=w,w=99));const k=new Uint8Array(26),S=mi(k);di(S,0,h),di(S,2,_),di(S,4,w);const z=new Uint32Array(1),A=mi(z);let C;C=n<ne?ne:n>te?te:n;di(A,0,(C.getHours()<<6|C.getMinutes())<<5|C.getSeconds()/2),di(A,2,(C.getFullYear()-1980<<4|C.getMonth()+1)<<5|C.getDate());const D=z[0];fi(S,6,D),di(S,22,hi(t));const U=hi(x,v,b,f);di(S,24,U);const E=new Uint8Array(30+hi(t)+U);return fi(mi(E),0,B),pi(E,k,4),pi(E,t,30),pi(E,x,30+hi(t)),pi(E,v,30+hi(t,x)),pi(E,b,30+hi(t,x,v)),pi(E,f,30+hi(t,x,v,b)),{localHeaderArray:E,headerArray:k,headerView:S,lastModDate:n,rawLastModDate:D,encrypted:m,compressed:g,version:h,compressionMethod:w,extraFieldExtendedTimestampFlag:y,rawExtraFieldExtendedTimestamp:v,rawExtraFieldNTFS:b,rawExtraFieldAES:x,extraFieldLength:U}}(r),ue=function(e){const{zip64:t,dataDescriptor:n,dataDescriptorSignature:r}=e;let i,s=new Uint8Array,a=0;n&&(s=new Uint8Array(t?r?24:20:r?16:12),i=mi(s),r&&(a=4,fi(i,0,N)));return {dataDescriptorArray:s,dataDescriptorView:i,dataDescriptorOffset:a}}(r),pe=hi(de.localHeaderArray,ue.dataDescriptorArray);L=pe+R,e.options.usdz&&(L+=L+64);let me;e.pendingEntriesSize+=L;try{me=await async function(e,t,n,r,i){const{files:s,writer:a}=e,{keepOrder:o,dataDescriptor:c,signal:l}=i,{headerInfo:d}=r,{usdz:f}=e.options,u=Array.from(s.values()).pop();let p,m,h,w,g,x,b,v={};s.set(t,v);try{let d;o&&(d=u&&u.lock,y()),!(i.bufferedWrite||e.writerLocked||e.bufferedWrites&&o)&&c||f?(x=a,await _()):(x=new TransformStream,b=new Response(x.readable).blob(),x.writable.size=0,p=!0,e.bufferedWrites++,await jn(a)),await jn(x);const{writable:m}=a;let{diskOffset:h}=a;if(e.addSplitZipSignature){delete e.addSplitZipSignature;const t=new Uint8Array(4);fi(mi(t),0,H),await si(m,t),e.offset+=4;}f&&function(e,t){const{headerInfo:n}=e;let{localHeaderArray:r,extraFieldLength:i}=n,s=mi(r),a=64-(t+hi(r))%64;a<4&&(a+=64);const o=new Uint8Array(a),c=mi(o);di(c,0,Q),di(c,2,a-2);const l=r;n.localHeaderArray=r=new Uint8Array(hi(l)+a),pi(r,l),pi(r,o,hi(l)),s=mi(r),di(s,28,i+a),e.metadataSize+=a;}(r,e.offset-h),p||(await d,await k(m));const{diskNumber:S}=a;if(g=!0,v.diskNumberStart=S,v=await async function(e,t,{diskNumberStart:n,lock:r},i,s,a){const{headerInfo:o,dataDescriptorInfo:c,metadataSize:l}=i,{localHeaderArray:d,headerArray:f,lastModDate:u,rawLastModDate:p,encrypted:m,compressed:h,version:w,compressionMethod:g,rawExtraFieldExtendedTimestamp:x,extraFieldExtendedTimestampFlag:b,rawExtraFieldNTFS:v,rawExtraFieldAES:y}=o,{dataDescriptorArray:_}=c,{rawFilename:k,lastAccessDate:S,creationDate:z,password:A,rawPassword:C,level:D,zip64:U,zip64UncompressedSize:E,zip64CompressedSize:W,zip64Offset:F,zip64DiskNumberStart:j,zipCrypto:q,dataDescriptor:T,directory:O,executable:R,versionMadeBy:L,rawComment:I,rawExtraField:P,useWebWorkers:B,onstart:H,onprogress:N,onend:V,signal:Z,encryptionStrength:K,extendedTimestamp:G,msDosCompatible:X,internalFileAttributes:J,externalFileAttributes:Y,useCompressionStream:Q,passThrough:$}=a,ee={lock:r,versionMadeBy:L,zip64:U,directory:Boolean(O),executable:Boolean(R),filenameUTF8:!0,rawFilename:k,commentUTF8:!0,rawComment:I,rawExtraFieldExtendedTimestamp:x,rawExtraFieldNTFS:v,rawExtraFieldAES:y,rawExtraField:P,extendedTimestamp:G,msDosCompatible:X,internalFileAttributes:J,externalFileAttributes:Y,diskNumberStart:n};let{signature:te,uncompressedSize:ne}=a,ie=0;$||(ne=0);const{writable:se}=t;if(e){e.chunkSize=fe(s),await si(se,d);const t=e.readable,n=t.size=e.size,r={options:{codecType:Dt,level:D,rawPassword:C,password:A,encryptionStrength:K,zipCrypto:m&&q,passwordVerification:m&&q&&p>>8&255,signed:!$,compressed:h&&!$,encrypted:m&&!$,useWebWorkers:B,useCompressionStream:Q,transferStreams:!1},config:s,streamOptions:{signal:Z,size:n,onstart:H,onprogress:N,onend:V}},i=await Nt({readable:t,writable:se},r);ie=i.outputSize,$||(ne=i.inputSize,te=i.signature),se.size+=ne;}else await si(se,d);let ae;if(U){let e=4;E&&(e+=8),W&&(e+=8),F&&(e+=8),j&&(e+=4),ae=new Uint8Array(e);}else ae=new Uint8Array;((function(e,t){const{signature:n,rawExtraFieldZip64:r,compressedSize:i,uncompressedSize:s,headerInfo:a,dataDescriptorInfo:o}=e,{headerView:c,encrypted:l}=a,{dataDescriptorView:d,dataDescriptorOffset:f}=o,{zip64:u,zip64UncompressedSize:p,zip64CompressedSize:m,zipCrypto:h,dataDescriptor:w}=t;l&&!h||n===re||(fi(c,10,n),w&&fi(d,f,n));if(u){const e=mi(r);di(e,0,1),di(e,2,hi(r)-4);let t=4;p&&(fi(c,18,M),ui(e,t,BigInt(s)),t+=8),m&&(fi(c,14,M),ui(e,t,BigInt(i))),w&&(ui(d,f+4,BigInt(i)),ui(d,f+12,BigInt(s)));}else fi(c,14,i),fi(c,18,s),w&&(fi(d,f+4,i),fi(d,f+8,s));}))({signature:te,rawExtraFieldZip64:ae,compressedSize:ie,uncompressedSize:ne,headerInfo:o,dataDescriptorInfo:c},a),T&&await si(se,_);return Object.assign(ee,{uncompressedSize:ne,compressedSize:ie,lastModDate:u,rawLastModDate:p,creationDate:z,lastAccessDate:S,encrypted:m,zipCrypto:q,size:l+ie,compressionMethod:g,version:w,headerArray:f,signature:te,rawExtraFieldZip64:ae,extraFieldExtendedTimestampFlag:b,zip64UncompressedSize:E,zip64CompressedSize:W,zip64Offset:F,zip64DiskNumberStart:j}),ee}(n,x,v,r,e.config,i),g=!1,s.set(t,v),v.filename=t,p){await x.writable.getWriter().close();let e=await b;await d,await _(),w=!0,c||(e=await async function(e,t,n,{zipCrypto:r}){let i;i=await t.slice(0,26).arrayBuffer(),26!=i.byteLength&&(i=i.slice(0,26));const s=new DataView(i);e.encrypted&&!r||fi(s,14,e.signature);e.zip64?(fi(s,18,M),fi(s,22,M)):(fi(s,18,e.compressedSize),fi(s,22,e.uncompressedSize));return await si(n,new Uint8Array(i)),t.slice(i.byteLength)}(v,e,m,i)),await k(m),v.diskNumberStart=a.diskNumber,h=a.diskOffset,await e.stream().pipeTo(m,{preventClose:!0,preventAbort:!0,signal:l}),m.size+=e.size,w=!1;}if(v.offset=e.offset-h,v.zip64)!function(e,t){const{rawExtraFieldZip64:n,offset:r,diskNumberStart:i}=e,{zip64UncompressedSize:s,zip64CompressedSize:a,zip64Offset:o,zip64DiskNumberStart:c}=t,l=mi(n);let d=4;s&&(d+=8);a&&(d+=8);o&&(ui(l,d,BigInt(r)),d+=8);c&&fi(l,d,i);}(v,i);else if(v.offset>M)throw new Error(Qr);return e.offset+=v.size,v}catch(n){if(p&&w||!p&&g){if(e.hasCorruptedEntries=!0,n)try{n.corruptedEntry=!0;}catch(e){}p?e.offset+=x.writable.size:e.offset=x.writable.size;}throw s.delete(t),n}finally{p&&e.bufferedWrites--,h&&h(),m&&m();}function y(){v.lock=new Promise((e=>h=e));}async function _(){e.writerLocked=!0;const{lockWriter:t}=e;e.lockWriter=new Promise((t=>m=()=>{e.writerLocked=!1,t();})),await t;}async function k(e){hi(d.localHeaderArray)>a.availableSize&&(a.availableSize=0,await si(e,new Uint8Array));}}(e,t,n,{headerInfo:de,dataDescriptorInfo:ue,metadataSize:pe},r);}finally{e.pendingEntriesSize-=L;}return Object.assign(me,{name:t,comment:f,extraField:O}),new hr(me)}(r,e,t,n),i.add(a),await a}catch(t){throw r.filenames.delete(e),t}finally{i.delete(a);const e=ni.shift();e?e():ti--;}}async close(e=new Uint8Array,t={}){const{pendingAddFileCalls:n,writer:r}=this,{writable:i}=r;for(;n.size;)await Promise.allSettled(Array.from(n));await async function(e,t,n){const{files:r,writer:i}=e,{diskOffset:s,writable:a}=i;let{diskNumber:o}=i,c=0,l=0,d=e.offset-s,f=r.size;for(const[,e]of r){const{rawFilename:t,rawExtraFieldZip64:n,rawExtraFieldAES:r,rawComment:i,rawExtraFieldNTFS:s,rawExtraField:a,extendedTimestamp:o,extraFieldExtendedTimestampFlag:c,lastModDate:d}=e;let f;if(o){f=new Uint8Array(9);const e=mi(f);di(e,0,Y),di(e,2,5),li(e,4,c),fi(e,5,Math.floor(d.getTime()/1e3));}else f=new Uint8Array;e.rawExtraFieldCDExtendedTimestamp=f,l+=46+hi(t,i,n,r,s,f,a);}const u=new Uint8Array(l),p=mi(u);await jn(i);let m=0;for(const[e,t]of Array.from(r.values()).entries()){const{offset:s,rawFilename:o,rawExtraFieldZip64:l,rawExtraFieldAES:d,rawExtraFieldCDExtendedTimestamp:f,rawExtraFieldNTFS:h,rawExtraField:w,rawComment:g,versionMadeBy:x,headerArray:b,zip64:v,zip64UncompressedSize:y,zip64CompressedSize:_,zip64DiskNumberStart:k,zip64Offset:S,internalFileAttributes:z,externalFileAttributes:A,diskNumberStart:C,uncompressedSize:D,compressedSize:U}=t,E=hi(l,d,f,h,w);fi(p,c,V),di(p,c+4,x);const W=mi(b);y||fi(W,18,D),_||fi(W,14,U),pi(u,b,c+6),di(p,c+30,E),di(p,c+32,hi(g)),di(p,c+34,v&&k?P:C),di(p,c+36,z),A&&fi(p,c+38,A),fi(p,c+42,v&&S?M:s),pi(u,o,c+46),pi(u,l,c+46+hi(o)),pi(u,d,c+46+hi(o,l)),pi(u,f,c+46+hi(o,l,d)),pi(u,h,c+46+hi(o,l,d,f)),pi(u,w,c+46+hi(o,l,d,f,h)),pi(u,g,c+46+hi(o)+E);const F=46+hi(o,g)+E;if(c-m>i.availableSize&&(i.availableSize=0,await si(a,u.slice(m,c)),m=c),c+=F,n.onprogress)try{await n.onprogress(e+1,r.size,new hr(t));}catch(e){}}await si(a,m?u.slice(m):u);let h=i.diskNumber;const{availableSize:w}=i;w<X&&h++;let g=oi(e,n,or);if(d>M||l>M||f>P||h>P){if(false===g)throw new Error(Qr);g=true;}const x=new Uint8Array(g?98:X),b=mi(x);if(c=0,g){fi(b,0,K),ui(b,4,BigInt(44)),di(b,12,45),di(b,14,45),fi(b,16,h),fi(b,20,o),ui(b,24,BigInt(f)),ui(b,32,BigInt(f)),ui(b,40,BigInt(l)),ui(b,48,BigInt(d)),fi(b,56,G),ui(b,64,BigInt(d)+BigInt(l)),fi(b,72,h+1);oi(e,n,"supportZip64SplitFile",true)&&(h=P,o=P),f=P,d=M,l=M,c+=76;}fi(b,c,Z),di(b,c+4,h),di(b,c+6,o),di(b,c+8,f),di(b,c+10,f),fi(b,c+12,l),fi(b,c+16,d);const v=hi(t);if(v){if(!(v<=P))throw new Error(Vr);di(b,c+20,v);}await si(a,x),v&&await si(a,t);}(this,e,t);return oi(this,t,"preventClose")||await i.getWriter().close(),r.getData?r.getData():i}}class ii{constructor(e={}){const{readable:t,writable:n}=new TransformStream;this.readable=t,this.zipWriter=new ri(n,e);}transform(e){const{readable:t,writable:n}=new TransformStream({flush:()=>{this.zipWriter.close();}});return this.zipWriter.add(e,t),{readable:this.readable,writable:n}}writable(e){const{readable:t,writable:n}=new TransformStream;return this.zipWriter.add(e,t),n}close(e=void 0,t={}){return this.zipWriter.close(e,t)}}async function si(e,t){const n=e.getWriter();try{await n.ready,e.size+=hi(t),await n.write(t);}finally{n.releaseLock();}}function ai(e){if(e)return (BigInt(e.getTime())+BigInt(116444736e5))*BigInt(1e4)}function oi(e,t,n,r){const i=t[n]===re?e.options[n]:t[n];return i===re?r:i}function ci(e){return e+5*(Math.floor(e/16383)+1)}function li(e,t,n){e.setUint8(t,n);}function di(e,t,n){e.setUint16(t,n,true);}function fi(e,t,n){e.setUint32(t,n,true);}function ui(e,t,n){e.setBigUint64(t,n,true);}function pi(e,t,n){e.set(t,n);}function mi(e){return new DataView(e.buffer)}function hi(...e){let t=0;return e.forEach((e=>e&&(t+=e.length))),t}class wi{constructor(e,t,n,r){const i=this;if(e.root&&r&&r.getChildByName(t))throw new Error("Entry filename already exists");n||(n={}),Object.assign(i,{fs:e,name:t,data:n.data,options:n.options,id:e.entries.length,parent:r,children:[],uncompressedSize:n.uncompressedSize||0,passThrough:n.passThrough}),e.entries.push(i),r&&i.parent.children.push(i);}moveTo(e){this.fs.move(this,e);}getFullname(){return this.getRelativeName()}getRelativeName(e=this.fs.root){let t=this.name,n=this.parent;for(;n&&n!=e;)t=(n.name?n.name+"/":"")+t,n=n.parent;return t}isDescendantOf(e){let t=this.parent;for(;t&&t.id!=e.id;)t=t.parent;return Boolean(t)}rename(e){const t=this.parent;if(t&&t.getChildByName(e))throw new Error("Entry filename already exists");this.name=e;}}class gi extends wi{constructor(e,t,n,r){super(e,t,n,r);const i=this;i.Reader=n.Reader,i.Writer=n.Writer,n.getData&&(i.getData=n.getData);}clone(){return new gi(this.fs,this.name,this)}async getData(e,t={}){const n=this;if(!e||e.constructor==n.Writer&&n.data)return n.data;{const r=n.reader=new n.Reader(n.data,t),i=n.data?n.data.uncompressedSize:r.size;await Promise.all([jn(r),jn(e,i)]);const s=r.readable;return s.size=n.uncompressedSize=r.size,await s.pipeTo(e.writable),e.getData?e.getData():e.writable}}isPasswordProtected(){return this.data.encrypted}async checkPassword(e,t={}){const n=this;if(!n.isPasswordProtected())return true;t.password=e,t.checkPasswordOnly=true;try{return await n.data.getData(null,t),!0}catch(e){if(e.message==Ue)return false;throw e}}getText(e,t){return this.getData(new pn(e),t)}getBlob(e,t){return this.getData(new fn(e),t)}getData64URI(e,t){return this.getData(new ln(e),t)}getUint8Array(e){return this.getData(new En,e)}getWritable(e=new WritableStream,t){return this.getData({writable:e},t)}replaceBlob(e){Object.assign(this,{data:e,Reader:dn,Writer:fn,reader:null});}replaceText(e){Object.assign(this,{data:e,Reader:un,Writer:pn,reader:null});}replaceData64URI(e){Object.assign(this,{data:e,Reader:cn,Writer:ln,reader:null});}replaceUint8Array(e){Object.assign(this,{data:e,Reader:Un,Writer:En,reader:null});}replaceReadable(e){Object.assign(this,{data:null,Reader:function(){return {readable:e}},Writer:null,reader:null});}}class xi extends wi{constructor(e,t,n,r){super(e,t,n,r),this.directory=true;}clone(e){const t=this,n=new xi(t.fs,t.name);return e&&(n.children=t.children.map((t=>{const r=t.clone(e);return r.parent=n,r}))),n}addDirectory(e,t){return Ai(this,e,{options:t},true)}addText(e,t,n={}){return Ai(this,e,{data:t,Reader:un,Writer:pn,options:n,uncompressedSize:t.length})}addBlob(e,t,n={}){return Ai(this,e,{data:t,Reader:dn,Writer:fn,options:n,uncompressedSize:t.size})}addData64URI(e,t,n={}){let r=t.length;for(;"="==t.charAt(r-1);)r--;const i=t.indexOf(",")+1;return Ai(this,e,{data:t,Reader:cn,Writer:ln,options:n,uncompressedSize:Math.floor(.75*(r-i))})}addUint8Array(e,t,n={}){return Ai(this,e,{data:t,Reader:Un,Writer:En,options:n,uncompressedSize:t.length})}addHttpContent(e,t,n={}){return Ai(this,e,{data:t,Reader:class extends Cn{constructor(e){super(e,n);}},options:n})}addReadable(e,t,n={}){return Ai(this,e,{Reader:function(){return {readable:t}},options:n})}addFileSystemEntry(e,t={}){return ki(this,e,t)}addFileSystemHandle(e,t={}){return ki(this,e,t)}addFile(e,t={}){return t.lastModDate||(t.lastModDate=new Date(e.lastModified)),Ai(this,e.name,{data:e,Reader:function(){return {readable:e.stream(),size:e.size}},options:t,uncompressedSize:e.size})}addData(e,t){return Ai(this,e,t)}importBlob(e,t){return this.importZip(new dn(e),t)}importData64URI(e,t){return this.importZip(new cn(e),t)}importUint8Array(e,t){return this.importZip(new Un(e),t)}importHttpContent(e,t){return this.importZip(new Cn(e,t),t)}importReadable(e,t){return this.importZip({readable:e},t)}exportBlob(e={}){return this.exportZip(new fn(e.mimeType||"application/zip"),e)}exportData64URI(e={}){return this.exportZip(new ln(e.mimeType||"application/zip"),e)}exportUint8Array(e={}){return this.exportZip(new En,e)}async exportWritable(e=new WritableStream,t={}){return await this.exportZip({writable:e},t),e}async importZip(e,t={}){await jn(e);const n=new Er(e,t),r=[],i=await n.getEntries();for(const e of i){let n=this;try{const i=e.filename.split("/"),s=i.pop();i.forEach(((t,s)=>{const a=n;n=n.getChildByName(t),n||(n=new xi(this.fs,t,{data:s==i.length-1?e:null},a),r.push(n));})),e.directory||r.push(Ai(n,s,{data:e,Reader:vi(Object.assign({},t)),uncompressedSize:e.uncompressedSize,passThrough:t.passThrough}));}catch(t){try{t.cause={entry:e};}catch(e){}throw t}}return r}async exportZip(e,t){const n=this;t.bufferedWrite===re&&(t.bufferedWrite=true),await Promise.all([yi(n,t.readerOptions),jn(e)]);const r=new ri(e,t);return await async function(e,t,n,r){const i=t,s=new Map;async function a(e,t){async function o(){if(r.bufferedWrite)await Promise.allSettled(t.children.map(c));else for(const e of t.children)await c(e);}async function c(t){const o=r.relativePath?t.getRelativeName(i):t.getFullname(),c=t.options||{};let l={};if(t.data instanceof hr){const{externalFileAttributes:e,versionMadeBy:n,comment:r,lastModDate:i,creationDate:s,lastAccessDate:a,uncompressedSize:o,encrypted:c,zipCrypto:d,signature:f,compressionMethod:u,extraFieldAES:p}=t.data;if(l={externalFileAttributes:e,versionMadeBy:n,comment:r,lastModDate:i,creationDate:s,lastAccessDate:a},t.passThrough){let e,t;0===u&&(e=0),p&&(t=p.strength),l=Object.assign(l,{passThrough:true,encrypted:c,zipCrypto:d,signature:f,uncompressedSize:o,level:e,encryptionStrength:t,compressionMethod:u});}}await e.add(o,t.reader,Object.assign({directory:t.directory},Object.assign({},r,l,c,{onprogress:async e=>{if(r.onprogress){s.set(o,e);try{await r.onprogress(Array.from(s.values()).reduce(((e,t)=>e+t)),n);}catch(e){}}}}))),await a(e,t);}await o();}await a(e,t);}(r,n,function(e,t){let n=0;return e.forEach(r),n;function r(e){n+=e[t],e.children&&e.children.forEach(r);}}([n],"uncompressedSize"),t),await r.close(),e.getData?e.getData():e.writable}getChildByName(e){const t=this.children;for(let n=0;n<t.length;n++){const r=t[n];if(r.name==e)return r}}isPasswordProtected(){const e=this.children;for(let t=0;t<e.length;t++){if(e[t].isPasswordProtected())return true}return false}async checkPassword(e,t={}){const n=this.children;return !(await Promise.all(n.map((n=>n.checkPassword(e,t))))).includes(false)}}const bi={FS:class{constructor(){zi(this);}get children(){return this.root.children}remove(e){_i(e),this.entries[e.id]=null;}move(e,t){if(e==this.root)throw new Error("Root directory cannot be moved");if(!t.directory)throw new Error("Target entry is not a directory");if(t.isDescendantOf(e))throw new Error("Entry is a ancestor of target entry");if(e!=t){if(t.getChildByName(e.name))throw new Error("Entry filename already exists");_i(e),e.parent=t,t.children.push(e);}}find(e){const t=e.split("/");let n=this.root;for(let e=0;n&&e<t.length;e++)n=n.getChildByName(t[e]);return n}getById(e){return this.entries[e]}getChildByName(e){return this.root.getChildByName(e)}addDirectory(e,t){return this.root.addDirectory(e,t)}addText(e,t,n){return this.root.addText(e,t,n)}addBlob(e,t,n){return this.root.addBlob(e,t,n)}addData64URI(e,t,n){return this.root.addData64URI(e,t,n)}addUint8Array(e,t,n){return this.root.addUint8Array(e,t,n)}addHttpContent(e,t,n){return this.root.addHttpContent(e,t,n)}addReadable(e,t,n){return this.root.addReadable(e,t,n)}addFileSystemEntry(e,t){return this.root.addFileSystemEntry(e,t)}addFileSystemHandle(e,t){return this.root.addFileSystemHandle(e,t)}addFile(e,t){return this.root.addFile(e,t)}addData(e,t){return this.root.addData(e,t)}importBlob(e,t){return zi(this),this.root.importBlob(e,t)}importData64URI(e,t){return zi(this),this.root.importData64URI(e,t)}importUint8Array(e,t){return zi(this),this.root.importUint8Array(e,t)}importHttpContent(e,t){return zi(this),this.root.importHttpContent(e,t)}importReadable(e,t){return zi(this),this.root.importReadable(e,t)}importZip(e,t){return this.root.importZip(e,t)}exportBlob(e){return this.root.exportBlob(e)}exportData64URI(e){return this.root.exportData64URI(e)}exportUint8Array(e){return this.root.exportUint8Array(e)}exportWritable(e,t){return this.root.exportWritable(e,t)}isPasswordProtected(){return this.root.isPasswordProtected()}checkPassword(e,t){return this.root.checkPassword(e,t)}},ZipDirectoryEntry:xi,ZipFileEntry:gi};function vi(e){return class extends an{constructor(e,t={}){super(),this.entry=e,this.options=t;}async init(){const t=this;t.size=t.entry.uncompressedSize;const n=await t.entry.getData(new fn,Object.assign({},t.options,e));t.data=n,t.blobReader=new dn(n),super.init();}readUint8Array(e,t){return this.blobReader.readUint8Array(e,t)}}}async function yi(e,t){e.children.length&&await Promise.all(e.children.map((async e=>{if(e.directory)await yi(e,t);else {const n=e.reader=new e.Reader(e.data,t);try{await jn(n);}catch(t){try{t.entryId=e.id,t.cause={entry:e};}catch(e){}throw t}e.uncompressedSize=n.size;}})));}function _i(e){if(e.parent){const t=e.parent.children;t.forEach(((n,r)=>{n.id==e.id&&t.splice(r,1);}));}}function ki(e,t,n){return async function e(t,r,i){if(r)try{if((r.isFile||r.isDirectory)&&(r=await Si(r)),"file"==r.kind){const e=await r.getFile();i.push(t.addData(e.name,{Reader:function(){return {readable:e.stream(),size:e.size}},options:Object.assign({},{lastModDate:new Date(e.lastModified)},n),uncompressedSize:e.size}));}else if("directory"==r.kind){const n=t.addDirectory(r.name);i.push(n);for await(const t of r.values())await e(n,t,i);}}catch(e){const t=e.message+(r?" ("+r.name+")":"");throw new Error(t)}return i}(e,t,[])}async function Si(e){const t={name:e.name};if(e.isFile&&(t.kind="file",t.getFile=()=>new Promise(((t,n)=>e.file(t,n)))),e.isDirectory){t.kind="directory";const n=await async function(e){const t=[];function n(e,r,i){e.readEntries((async s=>{if(s.length){for(const e of s)t.push(await Si(e));n(e,r,i);}else r(t);}),i);}return await new Promise(((t,r)=>n(e.createReader(),t,r))),{[Symbol.iterator](){let e=0;return {next(){const n={value:t[e],done:e===t.length};return e++,n}}}}}(e);t.values=()=>n;}return t}function zi(e){e.entries=[],e.root=new xi(e);}function Ai(e,t,n,r){if(e.directory)return r?new xi(e.fs,t,n,e):new gi(e.fs,t,n,e);throw new Error("Parent entry is not a directory")}let Ci;try{Ci=import.meta.url;}catch(e){}ue({baseURL:Ci}),function(e,t={}){const n='const{Array:e,Object:t,Number:n,Math:r,Error:s,Uint8Array:i,Uint16Array:o,Uint32Array:c,Int32Array:f,Map:a,DataView:l,Promise:u,TextEncoder:w,crypto:h,postMessage:d,TransformStream:p,ReadableStream:y,WritableStream:m,CompressionStream:b,DecompressionStream:g}=self,k=void 0,v="undefined",S="function";class z{constructor(e){return class extends p{constructor(t,n){const r=new e(n);super({transform(e,t){t.enqueue(r.append(e))},flush(e){const t=r.flush();t&&e.enqueue(t)}})}}}}const C=[];for(let e=0;256>e;e++){let t=e;for(let e=0;8>e;e++)1&t?t=t>>>1^3988292384:t>>>=1;C[e]=t}class x{constructor(e){this.t=e||-1}append(e){let t=0|this.t;for(let n=0,r=0|e.length;r>n;n++)t=t>>>8^C[255&(t^e[n])];this.t=t}get(){return~this.t}}class A extends p{constructor(){let e;const t=new x;super({transform(e,n){t.append(e),n.enqueue(e)},flush(){const n=new i(4);new l(n.buffer).setUint32(0,t.get()),e.value=n}}),e=this}}const _={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const n=e[e.length-1],r=_.i(n);return 32===r?e.concat(t):_.o(t,r,0|n,e.slice(0,e.length-1))},l(e){const t=e.length;if(0===t)return 0;const n=e[t-1];return 32*(t-1)+_.i(n)},u(e,t){if(32*e.length<t)return e;const n=(e=e.slice(0,r.ceil(t/32))).length;return t&=31,n>0&&t&&(e[n-1]=_.h(t,e[n-1]&2147483648>>t-1,1)),e},h:(e,t,n)=>32===e?t:(n?0|t:t<<32-e)+1099511627776*e,i:e=>r.round(e/1099511627776)||32,o(e,t,n,r){for(void 0===r&&(r=[]);t>=32;t-=32)r.push(n),n=0;if(0===t)return r.concat(e);for(let s=0;s<e.length;s++)r.push(n|e[s]>>>t),n=e[s]<<32-t;const s=e.length?e[e.length-1]:0,i=_.i(s);return r.push(_.h(t+i&31,t+i>32?n:r.pop(),1)),r}},I={bytes:{p(e){const t=_.l(e)/8,n=new i(t);let r;for(let s=0;t>s;s++)3&s||(r=e[s/4]),n[s]=r>>>24,r<<=8;return n},m(e){const t=[];let n,r=0;for(n=0;n<e.length;n++)r=r<<8|e[n],3&~n||(t.push(r),r=0);return 3&n&&t.push(_.h(8*(3&n),r)),t}}},P=class{constructor(e){const t=this;t.blockSize=512,t.k=[1732584193,4023233417,2562383102,271733878,3285377520],t.v=[1518500249,1859775393,2400959708,3395469782],e?(t.S=e.S.slice(0),t.C=e.C.slice(0),t.A=e.A):t.reset()}reset(){const e=this;return e.S=e.k.slice(0),e.C=[],e.A=0,e}update(e){const t=this;"string"==typeof e&&(e=I._.m(e));const n=t.C=_.concat(t.C,e),r=t.A,i=t.A=r+_.l(e);if(i>9007199254740991)throw new s("Cannot hash more than 2^53 - 1 bits");const o=new c(n);let f=0;for(let e=t.blockSize+r-(t.blockSize+r&t.blockSize-1);i>=e;e+=t.blockSize)t.I(o.subarray(16*f,16*(f+1))),f+=1;return n.splice(0,16*f),t}P(){const e=this;let t=e.C;const n=e.S;t=_.concat(t,[_.h(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(r.floor(e.A/4294967296)),t.push(0|e.A);t.length;)e.I(t.splice(0,16));return e.reset(),n}D(e,t,n,r){return e>19?e>39?e>59?e>79?void 0:t^n^r:t&n|t&r|n&r:t^n^r:t&n|~t&r}V(e,t){return t<<e|t>>>32-e}I(t){const n=this,s=n.S,i=e(80);for(let e=0;16>e;e++)i[e]=t[e];let o=s[0],c=s[1],f=s[2],a=s[3],l=s[4];for(let e=0;79>=e;e++){16>e||(i[e]=n.V(1,i[e-3]^i[e-8]^i[e-14]^i[e-16]));const t=n.V(5,o)+n.D(e,c,f,a)+l+i[e]+n.v[r.floor(e/20)]|0;l=a,a=f,f=n.V(30,c),c=o,o=t}s[0]=s[0]+o|0,s[1]=s[1]+c|0,s[2]=s[2]+f|0,s[3]=s[3]+a|0,s[4]=s[4]+l|0}},D={getRandomValues(e){const t=new c(e.buffer),n=e=>{let t=987654321;const n=4294967295;return()=>(t=36969*(65535&t)+(t>>16)&n,(((t<<16)+(e=18e3*(65535&e)+(e>>16)&n)&n)/4294967296+.5)*(r.random()>.5?1:-1))};for(let s,i=0;i<e.length;i+=4){const e=n(4294967296*(s||r.random()));s=987654071*e(),t[i/4]=4294967296*e()|0}return e}},V={importKey:e=>new V.R(I.bytes.m(e)),B(e,t,n,r){if(n=n||1e4,0>r||0>n)throw new s("invalid params to pbkdf2");const i=1+(r>>5)<<2;let o,c,f,a,u;const w=new ArrayBuffer(i),h=new l(w);let d=0;const p=_;for(t=I.bytes.m(t),u=1;(i||1)>d;u++){for(o=c=e.encrypt(p.concat(t,[u])),f=1;n>f;f++)for(c=e.encrypt(c),a=0;a<c.length;a++)o[a]^=c[a];for(f=0;(i||1)>d&&f<o.length;f++)h.setInt32(d,o[f]),d+=4}return w.slice(0,r/8)},R:class{constructor(e){const t=this,n=t.M=P,r=[[],[]];t.U=[new n,new n];const s=t.U[0].blockSize/32;e.length>s&&(e=(new n).update(e).P());for(let t=0;s>t;t++)r[0][t]=909522486^e[t],r[1][t]=1549556828^e[t];t.U[0].update(r[0]),t.U[1].update(r[1]),t.K=new n(t.U[0])}reset(){const e=this;e.K=new e.M(e.U[0]),e.N=!1}update(e){this.N=!0,this.K.update(e)}digest(){const e=this,t=e.K.P(),n=new e.M(e.U[1]).update(t).P();return e.reset(),n}encrypt(e){if(this.N)throw new s("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},R=typeof h!=v&&typeof h.getRandomValues==S,B="Invalid password",E="Invalid signature",M="zipjs-abort-check-password";function U(e){return R?h.getRandomValues(e):D.getRandomValues(e)}const K=16,N={name:"PBKDF2"},O=t.assign({hash:{name:"HMAC"}},N),T=t.assign({iterations:1e3,hash:{name:"SHA-1"}},N),W=["deriveBits"],j=[8,12,16],H=[16,24,32],L=10,F=[0,0,0,0],q=typeof h!=v,G=q&&h.subtle,J=q&&typeof G!=v,Q=I.bytes,X=class{constructor(e){const t=this;t.O=[[[],[],[],[],[]],[[],[],[],[],[]]],t.O[0][0][0]||t.T();const n=t.O[0][4],r=t.O[1],i=e.length;let o,c,f,a=1;if(4!==i&&6!==i&&8!==i)throw new s("invalid aes key size");for(t.v=[c=e.slice(0),f=[]],o=i;4*i+28>o;o++){let e=c[o-1];(o%i===0||8===i&&o%i===4)&&(e=n[e>>>24]<<24^n[e>>16&255]<<16^n[e>>8&255]<<8^n[255&e],o%i===0&&(e=e<<8^e>>>24^a<<24,a=a<<1^283*(a>>7))),c[o]=c[o-i]^e}for(let e=0;o;e++,o--){const t=c[3&e?o:o-4];f[e]=4>=o||4>e?t:r[0][n[t>>>24]]^r[1][n[t>>16&255]]^r[2][n[t>>8&255]]^r[3][n[255&t]]}}encrypt(e){return this.W(e,0)}decrypt(e){return this.W(e,1)}T(){const e=this.O[0],t=this.O[1],n=e[4],r=t[4],s=[],i=[];let o,c,f,a;for(let e=0;256>e;e++)i[(s[e]=e<<1^283*(e>>7))^e]=e;for(let l=o=0;!n[l];l^=c||1,o=i[o]||1){let i=o^o<<1^o<<2^o<<3^o<<4;i=i>>8^255&i^99,n[l]=i,r[i]=l,a=s[f=s[c=s[l]]];let u=16843009*a^65537*f^257*c^16843008*l,w=257*s[i]^16843008*i;for(let n=0;4>n;n++)e[n][l]=w=w<<24^w>>>8,t[n][i]=u=u<<24^u>>>8}for(let n=0;5>n;n++)e[n]=e[n].slice(0),t[n]=t[n].slice(0)}W(e,t){if(4!==e.length)throw new s("invalid aes block size");const n=this.v[t],r=n.length/4-2,i=[0,0,0,0],o=this.O[t],c=o[0],f=o[1],a=o[2],l=o[3],u=o[4];let w,h,d,p=e[0]^n[0],y=e[t?3:1]^n[1],m=e[2]^n[2],b=e[t?1:3]^n[3],g=4;for(let e=0;r>e;e++)w=c[p>>>24]^f[y>>16&255]^a[m>>8&255]^l[255&b]^n[g],h=c[y>>>24]^f[m>>16&255]^a[b>>8&255]^l[255&p]^n[g+1],d=c[m>>>24]^f[b>>16&255]^a[p>>8&255]^l[255&y]^n[g+2],b=c[b>>>24]^f[p>>16&255]^a[y>>8&255]^l[255&m]^n[g+3],g+=4,p=w,y=h,m=d;for(let e=0;4>e;e++)i[t?3&-e:e]=u[p>>>24]<<24^u[y>>16&255]<<16^u[m>>8&255]<<8^u[255&b]^n[g++],w=p,p=y,y=m,m=b,b=w;return i}},Y=class{constructor(e,t){this.j=e,this.H=t,this.L=t}reset(){this.L=this.H}update(e){return this.F(this.j,e,this.L)}q(e){if(255&~(e>>24))e+=1<<24;else{let t=e>>16&255,n=e>>8&255,r=255&e;255===t?(t=0,255===n?(n=0,255===r?r=0:++r):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=r}return e}G(e){0===(e[0]=this.q(e[0]))&&(e[1]=this.q(e[1]))}F(e,t,n){let r;if(!(r=t.length))return[];const s=_.l(t);for(let s=0;r>s;s+=4){this.G(n);const r=e.encrypt(n);t[s]^=r[0],t[s+1]^=r[1],t[s+2]^=r[2],t[s+3]^=r[3]}return _.u(t,s)}},Z=V.R;let $=q&&J&&typeof G.importKey==S,ee=q&&J&&typeof G.deriveBits==S;class te extends p{constructor({password:e,rawPassword:n,signed:r,encryptionStrength:o,checkPasswordOnly:c}){super({start(){t.assign(this,{ready:new u((e=>this.J=e)),password:ie(e,n),signed:r,X:o-1,pending:new i})},async transform(e,t){const n=this,{password:r,X:o,J:f,ready:a}=n;r?(await(async(e,t,n,r)=>{const i=await se(e,t,n,ce(r,0,j[t])),o=ce(r,j[t]);if(i[0]!=o[0]||i[1]!=o[1])throw new s(B)})(n,o,r,ce(e,0,j[o]+2)),e=ce(e,j[o]+2),c?t.error(new s(M)):f()):await a;const l=new i(e.length-L-(e.length-L)%K);t.enqueue(re(n,e,l,0,L,!0))},async flush(e){const{signed:t,Y:n,Z:r,pending:o,ready:c}=this;if(r&&n){await c;const f=ce(o,0,o.length-L),a=ce(o,o.length-L);let l=new i;if(f.length){const e=ae(Q,f);r.update(e);const t=n.update(e);l=fe(Q,t)}if(t){const e=ce(fe(Q,r.digest()),0,L);for(let t=0;L>t;t++)if(e[t]!=a[t])throw new s(E)}e.enqueue(l)}}})}}class ne extends p{constructor({password:e,rawPassword:n,encryptionStrength:r}){let s;super({start(){t.assign(this,{ready:new u((e=>this.J=e)),password:ie(e,n),X:r-1,pending:new i})},async transform(e,t){const n=this,{password:r,X:s,J:o,ready:c}=n;let f=new i;r?(f=await(async(e,t,n)=>{const r=U(new i(j[t]));return oe(r,await se(e,t,n,r))})(n,s,r),o()):await c;const a=new i(f.length+e.length-e.length%K);a.set(f,0),t.enqueue(re(n,e,a,f.length,0))},async flush(e){const{Y:t,Z:n,pending:r,ready:o}=this;if(n&&t){await o;let c=new i;if(r.length){const e=t.update(ae(Q,r));n.update(e),c=fe(Q,e)}s.signature=fe(Q,n.digest()).slice(0,L),e.enqueue(oe(c,s.signature))}}}),s=this}}function re(e,t,n,r,s,o){const{Y:c,Z:f,pending:a}=e,l=t.length-s;let u;for(a.length&&(t=oe(a,t),n=((e,t)=>{if(t&&t>e.length){const n=e;(e=new i(t)).set(n,0)}return e})(n,l-l%K)),u=0;l-K>=u;u+=K){const e=ae(Q,ce(t,u,u+K));o&&f.update(e);const s=c.update(e);o||f.update(s),n.set(fe(Q,s),u+r)}return e.pending=ce(t,u),n}async function se(n,r,s,o){n.password=null;const c=await(async(e,t,n,r,s)=>{if(!$)return V.importKey(t);try{return await G.importKey("raw",t,n,!1,s)}catch(e){return $=!1,V.importKey(t)}})(0,s,O,0,W),f=await(async(e,t,n)=>{if(!ee)return V.B(t,e.salt,T.iterations,n);try{return await G.deriveBits(e,t,n)}catch(r){return ee=!1,V.B(t,e.salt,T.iterations,n)}})(t.assign({salt:o},T),c,8*(2*H[r]+2)),a=new i(f),l=ae(Q,ce(a,0,H[r])),u=ae(Q,ce(a,H[r],2*H[r])),w=ce(a,2*H[r]);return t.assign(n,{keys:{key:l,$:u,passwordVerification:w},Y:new Y(new X(l),e.from(F)),Z:new Z(u)}),w}function ie(e,t){return t===k?(e=>{if(typeof w==v){const t=new i((e=unescape(encodeURIComponent(e))).length);for(let n=0;n<t.length;n++)t[n]=e.charCodeAt(n);return t}return(new w).encode(e)})(e):t}function oe(e,t){let n=e;return e.length+t.length&&(n=new i(e.length+t.length),n.set(e,0),n.set(t,e.length)),n}function ce(e,t,n){return e.subarray(t,n)}function fe(e,t){return e.p(t)}function ae(e,t){return e.m(t)}class le extends p{constructor({password:e,passwordVerification:n,checkPasswordOnly:r}){super({start(){t.assign(this,{password:e,passwordVerification:n}),de(this,e)},transform(e,t){const n=this;if(n.password){const t=we(n,e.subarray(0,12));if(n.password=null,t[11]!=n.passwordVerification)throw new s(B);e=e.subarray(12)}r?t.error(new s(M)):t.enqueue(we(n,e))}})}}class ue extends p{constructor({password:e,passwordVerification:n}){super({start(){t.assign(this,{password:e,passwordVerification:n}),de(this,e)},transform(e,t){const n=this;let r,s;if(n.password){n.password=null;const t=U(new i(12));t[11]=n.passwordVerification,r=new i(e.length+t.length),r.set(he(n,t),0),s=12}else r=new i(e.length),s=0;r.set(he(n,e),s),t.enqueue(r)}})}}function we(e,t){const n=new i(t.length);for(let r=0;r<t.length;r++)n[r]=ye(e)^t[r],pe(e,n[r]);return n}function he(e,t){const n=new i(t.length);for(let r=0;r<t.length;r++)n[r]=ye(e)^t[r],pe(e,t[r]);return n}function de(e,n){const r=[305419896,591751049,878082192];t.assign(e,{keys:r,ee:new x(r[0]),te:new x(r[2])});for(let t=0;t<n.length;t++)pe(e,n.charCodeAt(t))}function pe(e,t){let[n,s,i]=e.keys;e.ee.append([t]),n=~e.ee.get(),s=be(r.imul(be(s+me(n)),134775813)+1),e.te.append([s>>>24]),i=~e.te.get(),e.keys=[n,s,i]}function ye(e){const t=2|e.keys[2];return me(r.imul(t,1^t)>>>8)}function me(e){return 255&e}function be(e){return 4294967295&e}const ge="deflate-raw";class ke extends p{constructor(e,{chunkSize:t,CompressionStream:n,CompressionStreamNative:r}){super({});const{compressed:s,encrypted:i,useCompressionStream:o,zipCrypto:c,signed:f,level:a}=e,u=this;let w,h,d=Se(super.readable);i&&!c||!f||(w=new A,d=xe(d,w)),s&&(d=Ce(d,o,{level:a,chunkSize:t},r,n)),i&&(c?d=xe(d,new ue(e)):(h=new ne(e),d=xe(d,h))),ze(u,d,(()=>{let e;i&&!c&&(e=h.signature),i&&!c||!f||(e=new l(w.value.buffer).getUint32(0)),u.signature=e}))}}class ve extends p{constructor(e,{chunkSize:t,DecompressionStream:n,DecompressionStreamNative:r}){super({});const{zipCrypto:i,encrypted:o,signed:c,signature:f,compressed:a,useCompressionStream:u}=e;let w,h,d=Se(super.readable);o&&(i?d=xe(d,new le(e)):(h=new te(e),d=xe(d,h))),a&&(d=Ce(d,u,{chunkSize:t},r,n)),o&&!i||!c||(w=new A,d=xe(d,w)),ze(this,d,(()=>{if((!o||i)&&c){const e=new l(w.value.buffer);if(f!=e.getUint32(0,!1))throw new s(E)}}))}}function Se(e){return xe(e,new p({transform(e,t){e&&e.length&&t.enqueue(e)}}))}function ze(e,n,r){n=xe(n,new p({flush:r})),t.defineProperty(e,"readable",{get:()=>n})}function Ce(e,t,n,r,s){try{e=xe(e,new(t&&r?r:s)(ge,n))}catch(r){if(!t)return e;try{e=xe(e,new s(ge,n))}catch(t){return e}}return e}function xe(e,t){return e.pipeThrough(t)}const Ae="data",_e="close";class Ie extends p{constructor(e,n){super({});const r=this,{codecType:s}=e;let i;s.startsWith("deflate")?i=ke:s.startsWith("inflate")&&(i=ve);let o=0,c=0;const f=new i(e,n),a=super.readable,l=new p({transform(e,t){e&&e.length&&(c+=e.length,t.enqueue(e))},flush(){t.assign(r,{inputSize:c})}}),u=new p({transform(e,t){e&&e.length&&(o+=e.length,t.enqueue(e))},flush(){const{signature:e}=f;t.assign(r,{signature:e,outputSize:o,inputSize:c})}});t.defineProperty(r,"readable",{get:()=>a.pipeThrough(l).pipeThrough(f).pipeThrough(u)})}}class Pe extends p{constructor(e){let t;super({transform:function n(r,s){if(t){const e=new i(t.length+r.length);e.set(t),e.set(r,t.length),r=e,t=null}r.length>e?(s.enqueue(r.slice(0,e)),n(r.slice(e),s)):t=r},flush(e){t&&t.length&&e.enqueue(t)}})}}const De=new a,Ve=new a;let Re,Be=0,Ee=!0;async function Me(e){try{const{options:t,scripts:r,config:s}=e;if(r&&r.length)try{Ee?importScripts.apply(k,r):await Ue(r)}catch(e){Ee=!1,await Ue(r)}self.initCodec&&self.initCodec(),s.CompressionStreamNative=self.CompressionStream,s.DecompressionStreamNative=self.DecompressionStream,self.Deflate&&(s.CompressionStream=new z(self.Deflate)),self.Inflate&&(s.DecompressionStream=new z(self.Inflate));const i={highWaterMark:1},o=e.readable||new y({async pull(e){const t=new u((e=>De.set(Be,e)));Ke({type:"pull",messageId:Be}),Be=(Be+1)%n.MAX_SAFE_INTEGER;const{value:r,done:s}=await t;e.enqueue(r),s&&e.close()}},i),c=e.writable||new m({async write(e){let t;const r=new u((e=>t=e));Ve.set(Be,t),Ke({type:Ae,value:e,messageId:Be}),Be=(Be+1)%n.MAX_SAFE_INTEGER,await r}},i),f=new Ie(t,s);Re=new AbortController;const{signal:a}=Re;await o.pipeThrough(f).pipeThrough(new Pe(s.chunkSize)).pipeTo(c,{signal:a,preventClose:!0,preventAbort:!0}),await c.getWriter().close();const{signature:l,inputSize:w,outputSize:h}=f;Ke({type:_e,result:{signature:l,inputSize:w,outputSize:h}})}catch(e){Ne(e)}}async function Ue(e){for(const t of e)await import(t)}function Ke(e){let{value:t}=e;if(t)if(t.length)try{t=new i(t),e.value=t.buffer,d(e,[e.value])}catch(t){d(e)}else d(e);else d(e)}function Ne(e=new s("Unknown error")){const{message:t,stack:n,code:r,name:i}=e;d({error:{message:t,stack:n,code:r,name:i}})}addEventListener("message",(({data:e})=>{const{type:t,messageId:n,value:r,done:s}=e;try{if("start"==t&&Me(e),t==Ae){const e=De.get(n);De.delete(n),e({value:new i(r),done:s})}if("ack"==t){const e=Ve.get(n);Ve.delete(n),e()}t==_e&&Re.abort()}catch(e){Ne(e)}}));const Oe=-2;function Te(t){return We(t.map((([t,n])=>new e(t).fill(n,0,t))))}function We(t){return t.reduce(((t,n)=>t.concat(e.isArray(n)?We(n):n)),[])}const je=[0,1,2,3].concat(...Te([[2,4],[2,5],[4,6],[4,7],[8,8],[8,9],[16,10],[16,11],[32,12],[32,13],[64,14],[64,15],[2,0],[1,16],[1,17],[2,18],[2,19],[4,20],[4,21],[8,22],[8,23],[16,24],[16,25],[32,26],[32,27],[64,28],[64,29]]));function He(){const e=this;function t(e,t){let n=0;do{n|=1&e,e>>>=1,n<<=1}while(--t>0);return n>>>1}e.ne=n=>{const s=e.re,i=e.ie.se,o=e.ie.oe;let c,f,a,l=-1;for(n.ce=0,n.fe=573,c=0;o>c;c++)0!==s[2*c]?(n.ae[++n.ce]=l=c,n.le[c]=0):s[2*c+1]=0;for(;2>n.ce;)a=n.ae[++n.ce]=2>l?++l:0,s[2*a]=1,n.le[a]=0,n.ue--,i&&(n.we-=i[2*a+1]);for(e.he=l,c=r.floor(n.ce/2);c>=1;c--)n.de(s,c);a=o;do{c=n.ae[1],n.ae[1]=n.ae[n.ce--],n.de(s,1),f=n.ae[1],n.ae[--n.fe]=c,n.ae[--n.fe]=f,s[2*a]=s[2*c]+s[2*f],n.le[a]=r.max(n.le[c],n.le[f])+1,s[2*c+1]=s[2*f+1]=a,n.ae[1]=a++,n.de(s,1)}while(n.ce>=2);n.ae[--n.fe]=n.ae[1],(t=>{const n=e.re,r=e.ie.se,s=e.ie.pe,i=e.ie.ye,o=e.ie.me;let c,f,a,l,u,w,h=0;for(l=0;15>=l;l++)t.be[l]=0;for(n[2*t.ae[t.fe]+1]=0,c=t.fe+1;573>c;c++)f=t.ae[c],l=n[2*n[2*f+1]+1]+1,l>o&&(l=o,h++),n[2*f+1]=l,f>e.he||(t.be[l]++,u=0,i>f||(u=s[f-i]),w=n[2*f],t.ue+=w*(l+u),r&&(t.we+=w*(r[2*f+1]+u)));if(0!==h){do{for(l=o-1;0===t.be[l];)l--;t.be[l]--,t.be[l+1]+=2,t.be[o]--,h-=2}while(h>0);for(l=o;0!==l;l--)for(f=t.be[l];0!==f;)a=t.ae[--c],a>e.he||(n[2*a+1]!=l&&(t.ue+=(l-n[2*a+1])*n[2*a],n[2*a+1]=l),f--)}})(n),((e,n,r)=>{const s=[];let i,o,c,f=0;for(i=1;15>=i;i++)s[i]=f=f+r[i-1]<<1;for(o=0;n>=o;o++)c=e[2*o+1],0!==c&&(e[2*o]=t(s[c]++,c))})(s,e.he,n.be)}}function Le(e,t,n,r,s){const i=this;i.se=e,i.pe=t,i.ye=n,i.oe=r,i.me=s}He.ge=[0,1,2,3,4,5,6,7].concat(...Te([[2,8],[2,9],[2,10],[2,11],[4,12],[4,13],[4,14],[4,15],[8,16],[8,17],[8,18],[8,19],[16,20],[16,21],[16,22],[16,23],[32,24],[32,25],[32,26],[31,27],[1,28]])),He.ke=[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0],He.ve=[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576],He.Se=e=>256>e?je[e]:je[256+(e>>>7)],He.ze=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],He.Ce=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],He.xe=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],He.Ae=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];const Fe=Te([[144,8],[112,9],[24,7],[8,8]]);Le._e=We([12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,19,275,147,403,83,339,211,467,51,307,179,435,115,371,243,499,11,267,139,395,75,331,203,459,43,299,171,427,107,363,235,491,27,283,155,411,91,347,219,475,59,315,187,443,123,379,251,507,7,263,135,391,71,327,199,455,39,295,167,423,103,359,231,487,23,279,151,407,87,343,215,471,55,311,183,439,119,375,247,503,15,271,143,399,79,335,207,463,47,303,175,431,111,367,239,495,31,287,159,415,95,351,223,479,63,319,191,447,127,383,255,511,0,64,32,96,16,80,48,112,8,72,40,104,24,88,56,120,4,68,36,100,20,84,52,116,3,131,67,195,35,163,99,227].map(((e,t)=>[e,Fe[t]])));const qe=Te([[30,5]]);function Ge(e,t,n,r,s){const i=this;i.Ie=e,i.Pe=t,i.De=n,i.Ve=r,i.Re=s}Le.Be=We([0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30,1,17,9,25,5,21,13,29,3,19,11,27,7,23].map(((e,t)=>[e,qe[t]]))),Le.Ee=new Le(Le._e,He.ze,257,286,15),Le.Me=new Le(Le.Be,He.Ce,0,30,15),Le.Ue=new Le(null,He.xe,0,19,7);const Je=[new Ge(0,0,0,0,0),new Ge(4,4,8,4,1),new Ge(4,5,16,8,1),new Ge(4,6,32,32,1),new Ge(4,4,16,16,2),new Ge(8,16,32,32,2),new Ge(8,16,128,128,2),new Ge(8,32,128,256,2),new Ge(32,128,258,1024,2),new Ge(32,258,258,4096,2)],Qe=["need dictionary","stream end","","","stream error","data error","","buffer error","",""],Xe=113,Ye=666,Ze=262;function $e(e,t,n,r){const s=e[2*t],i=e[2*n];return i>s||s==i&&r[t]<=r[n]}function et(){const e=this;let t,n,s,c,f,a,l,u,w,h,d,p,y,m,b,g,k,v,S,z,C,x,A,_,I,P,D,V,R,B,E,M,U;const K=new He,N=new He,O=new He;let T,W,j,H,L,F;function q(){let t;for(t=0;286>t;t++)E[2*t]=0;for(t=0;30>t;t++)M[2*t]=0;for(t=0;19>t;t++)U[2*t]=0;E[512]=1,e.ue=e.we=0,W=j=0}function G(e,t){let n,r=-1,s=e[1],i=0,o=7,c=4;0===s&&(o=138,c=3),e[2*(t+1)+1]=65535;for(let f=0;t>=f;f++)n=s,s=e[2*(f+1)+1],++i<o&&n==s||(c>i?U[2*n]+=i:0!==n?(n!=r&&U[2*n]++,U[32]++):i>10?U[36]++:U[34]++,i=0,r=n,0===s?(o=138,c=3):n==s?(o=6,c=3):(o=7,c=4))}function J(t){e.Ke[e.pending++]=t}function Q(e){J(255&e),J(e>>>8&255)}function X(e,t){let n;const r=t;F>16-r?(n=e,L|=n<<F&65535,Q(L),L=n>>>16-F,F+=r-16):(L|=e<<F&65535,F+=r)}function Y(e,t){const n=2*e;X(65535&t[n],65535&t[n+1])}function Z(e,t){let n,r,s=-1,i=e[1],o=0,c=7,f=4;for(0===i&&(c=138,f=3),n=0;t>=n;n++)if(r=i,i=e[2*(n+1)+1],++o>=c||r!=i){if(f>o)do{Y(r,U)}while(0!==--o);else 0!==r?(r!=s&&(Y(r,U),o--),Y(16,U),X(o-3,2)):o>10?(Y(18,U),X(o-11,7)):(Y(17,U),X(o-3,3));o=0,s=r,0===i?(c=138,f=3):r==i?(c=6,f=3):(c=7,f=4)}}function $(){16==F?(Q(L),L=0,F=0):8>F||(J(255&L),L>>>=8,F-=8)}function ee(t,n){let s,i,o;if(e.Ne[W]=t,e.Oe[W]=255&n,W++,0===t?E[2*n]++:(j++,t--,E[2*(He.ge[n]+256+1)]++,M[2*He.Se(t)]++),!(8191&W)&&D>2){for(s=8*W,i=C-k,o=0;30>o;o++)s+=M[2*o]*(5+He.Ce[o]);if(s>>>=3,j<r.floor(W/2)&&s<r.floor(i/2))return!0}return W==T-1}function te(t,n){let r,s,i,o,c=0;if(0!==W)do{r=e.Ne[c],s=e.Oe[c],c++,0===r?Y(s,t):(i=He.ge[s],Y(i+256+1,t),o=He.ze[i],0!==o&&(s-=He.ke[i],X(s,o)),r--,i=He.Se(r),Y(i,n),o=He.Ce[i],0!==o&&(r-=He.ve[i],X(r,o)))}while(W>c);Y(256,t),H=t[513]}function ne(){F>8?Q(L):F>0&&J(255&L),L=0,F=0}function re(t,n,r){X(0+(r?1:0),3),((t,n)=>{ne(),H=8,Q(n),Q(~n),e.Ke.set(u.subarray(t,t+n),e.pending),e.pending+=n})(t,n)}function se(n){((t,n,r)=>{let s,i,o=0;D>0?(K.ne(e),N.ne(e),o=(()=>{let t;for(G(E,K.he),G(M,N.he),O.ne(e),t=18;t>=3&&0===U[2*He.Ae[t]+1];t--);return e.ue+=14+3*(t+1),t})(),s=e.ue+3+7>>>3,i=e.we+3+7>>>3,i>s||(s=i)):s=i=n+5,n+4>s||-1==t?i==s?(X(2+(r?1:0),3),te(Le._e,Le.Be)):(X(4+(r?1:0),3),((e,t,n)=>{let r;for(X(e-257,5),X(t-1,5),X(n-4,4),r=0;n>r;r++)X(U[2*He.Ae[r]+1],3);Z(E,e-1),Z(M,t-1)})(K.he+1,N.he+1,o+1),te(E,M)):re(t,n,r),q(),r&&ne()})(0>k?-1:k,C-k,n),k=C,t.Te()}function ie(){let e,n,r,s;do{if(s=w-A-C,0===s&&0===C&&0===A)s=f;else if(-1==s)s--;else if(C>=f+f-Ze){u.set(u.subarray(f,f+f),0),x-=f,C-=f,k-=f,e=y,r=e;do{n=65535&d[--r],d[r]=f>n?0:n-f}while(0!==--e);e=f,r=e;do{n=65535&h[--r],h[r]=f>n?0:n-f}while(0!==--e);s+=f}if(0===t.We)return;e=t.je(u,C+A,s),A+=e,3>A||(p=255&u[C],p=(p<<g^255&u[C+1])&b)}while(Ze>A&&0!==t.We)}function oe(e){let t,n,r=I,s=C,i=_;const o=C>f-Ze?C-(f-Ze):0;let c=B;const a=l,w=C+258;let d=u[s+i-1],p=u[s+i];R>_||(r>>=2),c>A&&(c=A);do{if(t=e,u[t+i]==p&&u[t+i-1]==d&&u[t]==u[s]&&u[++t]==u[s+1]){s+=2,t++;do{}while(u[++s]==u[++t]&&u[++s]==u[++t]&&u[++s]==u[++t]&&u[++s]==u[++t]&&u[++s]==u[++t]&&u[++s]==u[++t]&&u[++s]==u[++t]&&u[++s]==u[++t]&&w>s);if(n=258-(w-s),s=w-258,n>i){if(x=e,i=n,n>=c)break;d=u[s+i-1],p=u[s+i]}}}while((e=65535&h[e&a])>o&&0!==--r);return i>A?A:i}e.le=[],e.be=[],e.ae=[],E=[],M=[],U=[],e.de=(t,n)=>{const r=e.ae,s=r[n];let i=n<<1;for(;i<=e.ce&&(i<e.ce&&$e(t,r[i+1],r[i],e.le)&&i++,!$e(t,s,r[i],e.le));)r[n]=r[i],n=i,i<<=1;r[n]=s},e.He=(t,S,x,W,j,G)=>(W||(W=8),j||(j=8),G||(G=0),t.Le=null,-1==S&&(S=6),1>j||j>9||8!=W||9>x||x>15||0>S||S>9||0>G||G>2?Oe:(t.Fe=e,a=x,f=1<<a,l=f-1,m=j+7,y=1<<m,b=y-1,g=r.floor((m+3-1)/3),u=new i(2*f),h=[],d=[],T=1<<j+6,e.Ke=new i(4*T),s=4*T,e.Ne=new o(T),e.Oe=new i(T),D=S,V=G,(t=>(t.qe=t.Ge=0,t.Le=null,e.pending=0,e.Je=0,n=Xe,c=0,K.re=E,K.ie=Le.Ee,N.re=M,N.ie=Le.Me,O.re=U,O.ie=Le.Ue,L=0,F=0,H=8,q(),(()=>{w=2*f,d[y-1]=0;for(let e=0;y-1>e;e++)d[e]=0;P=Je[D].Pe,R=Je[D].Ie,B=Je[D].De,I=Je[D].Ve,C=0,k=0,A=0,v=_=2,z=0,p=0})(),0))(t))),e.Qe=()=>42!=n&&n!=Xe&&n!=Ye?Oe:(e.Oe=null,e.Ne=null,e.Ke=null,d=null,h=null,u=null,e.Fe=null,n==Xe?-3:0),e.Xe=(e,t,n)=>{let r=0;return-1==t&&(t=6),0>t||t>9||0>n||n>2?Oe:(Je[D].Re!=Je[t].Re&&0!==e.qe&&(r=e.Ye(1)),D!=t&&(D=t,P=Je[D].Pe,R=Je[D].Ie,B=Je[D].De,I=Je[D].Ve),V=n,r)},e.Ze=(e,t,r)=>{let s,i=r,o=0;if(!t||42!=n)return Oe;if(3>i)return 0;for(i>f-Ze&&(i=f-Ze,o=r-i),u.set(t.subarray(o,o+i),0),C=i,k=i,p=255&u[0],p=(p<<g^255&u[1])&b,s=0;i-3>=s;s++)p=(p<<g^255&u[s+2])&b,h[s&l]=d[p],d[p]=s;return 0},e.Ye=(r,i)=>{let o,w,m,I,R;if(i>4||0>i)return Oe;if(!r.$e||!r.et&&0!==r.We||n==Ye&&4!=i)return r.Le=Qe[4],Oe;if(0===r.tt)return r.Le=Qe[7],-5;var B;if(t=r,I=c,c=i,42==n&&(w=8+(a-8<<4)<<8,m=(D-1&255)>>1,m>3&&(m=3),w|=m<<6,0!==C&&(w|=32),w+=31-w%31,n=Xe,J((B=w)>>8&255),J(255&B)),0!==e.pending){if(t.Te(),0===t.tt)return c=-1,0}else if(0===t.We&&I>=i&&4!=i)return t.Le=Qe[7],-5;if(n==Ye&&0!==t.We)return r.Le=Qe[7],-5;if(0!==t.We||0!==A||0!=i&&n!=Ye){switch(R=-1,Je[D].Re){case 0:R=(e=>{let n,r=65535;for(r>s-5&&(r=s-5);;){if(1>=A){if(ie(),0===A&&0==e)return 0;if(0===A)break}if(C+=A,A=0,n=k+r,(0===C||C>=n)&&(A=C-n,C=n,se(!1),0===t.tt))return 0;if(C-k>=f-Ze&&(se(!1),0===t.tt))return 0}return se(4==e),0===t.tt?4==e?2:0:4==e?3:1})(i);break;case 1:R=(e=>{let n,r=0;for(;;){if(Ze>A){if(ie(),Ze>A&&0==e)return 0;if(0===A)break}if(3>A||(p=(p<<g^255&u[C+2])&b,r=65535&d[p],h[C&l]=d[p],d[p]=C),0===r||(C-r&65535)>f-Ze||2!=V&&(v=oe(r)),3>v)n=ee(0,255&u[C]),A--,C++;else if(n=ee(C-x,v-3),A-=v,v>P||3>A)C+=v,v=0,p=255&u[C],p=(p<<g^255&u[C+1])&b;else{v--;do{C++,p=(p<<g^255&u[C+2])&b,r=65535&d[p],h[C&l]=d[p],d[p]=C}while(0!==--v);C++}if(n&&(se(!1),0===t.tt))return 0}return se(4==e),0===t.tt?4==e?2:0:4==e?3:1})(i);break;case 2:R=(e=>{let n,r,s=0;for(;;){if(Ze>A){if(ie(),Ze>A&&0==e)return 0;if(0===A)break}if(3>A||(p=(p<<g^255&u[C+2])&b,s=65535&d[p],h[C&l]=d[p],d[p]=C),_=v,S=x,v=2,0!==s&&P>_&&f-Ze>=(C-s&65535)&&(2!=V&&(v=oe(s)),5>=v&&(1==V||3==v&&C-x>4096)&&(v=2)),3>_||v>_)if(0!==z){if(n=ee(0,255&u[C-1]),n&&se(!1),C++,A--,0===t.tt)return 0}else z=1,C++,A--;else{r=C+A-3,n=ee(C-1-S,_-3),A-=_-1,_-=2;do{++C>r||(p=(p<<g^255&u[C+2])&b,s=65535&d[p],h[C&l]=d[p],d[p]=C)}while(0!==--_);if(z=0,v=2,C++,n&&(se(!1),0===t.tt))return 0}}return 0!==z&&(n=ee(0,255&u[C-1]),z=0),se(4==e),0===t.tt?4==e?2:0:4==e?3:1})(i)}if(2!=R&&3!=R||(n=Ye),0==R||2==R)return 0===t.tt&&(c=-1),0;if(1==R){if(1==i)X(2,3),Y(256,Le._e),$(),9>1+H+10-F&&(X(2,3),Y(256,Le._e),$()),H=7;else if(re(0,0,!1),3==i)for(o=0;y>o;o++)d[o]=0;if(t.Te(),0===t.tt)return c=-1,0}}return 4!=i?0:1}}function tt(){const e=this;e.nt=0,e.rt=0,e.We=0,e.qe=0,e.tt=0,e.Ge=0}function nt(e){const t=new tt,n=(o=e&&e.chunkSize?e.chunkSize:65536)+5*(r.floor(o/16383)+1);var o;const c=new i(n);let f=e?e.level:-1;void 0===f&&(f=-1),t.He(f),t.$e=c,this.append=(e,r)=>{let o,f,a=0,l=0,u=0;const w=[];if(e.length){t.nt=0,t.et=e,t.We=e.length;do{if(t.rt=0,t.tt=n,o=t.Ye(0),0!=o)throw new s("deflating: "+t.Le);t.rt&&(t.rt==n?w.push(new i(c)):w.push(c.subarray(0,t.rt))),u+=t.rt,r&&t.nt>0&&t.nt!=a&&(r(t.nt),a=t.nt)}while(t.We>0||0===t.tt);return w.length>1?(f=new i(u),w.forEach((e=>{f.set(e,l),l+=e.length}))):f=w[0]?new i(w[0]):new i,f}},this.flush=()=>{let e,r,o=0,f=0;const a=[];do{if(t.rt=0,t.tt=n,e=t.Ye(4),1!=e&&0!=e)throw new s("deflating: "+t.Le);n-t.tt>0&&a.push(c.slice(0,t.rt)),f+=t.rt}while(t.We>0||0===t.tt);return t.Qe(),r=new i(f),a.forEach((e=>{r.set(e,o),o+=e.length})),r}}tt.prototype={He(e,t){const n=this;return n.Fe=new et,t||(t=15),n.Fe.He(n,e,t)},Ye(e){const t=this;return t.Fe?t.Fe.Ye(t,e):Oe},Qe(){const e=this;if(!e.Fe)return Oe;const t=e.Fe.Qe();return e.Fe=null,t},Xe(e,t){const n=this;return n.Fe?n.Fe.Xe(n,e,t):Oe},Ze(e,t){const n=this;return n.Fe?n.Fe.Ze(n,e,t):Oe},je(e,t,n){const r=this;let s=r.We;return s>n&&(s=n),0===s?0:(r.We-=s,e.set(r.et.subarray(r.nt,r.nt+s),t),r.nt+=s,r.qe+=s,s)},Te(){const e=this;let t=e.Fe.pending;t>e.tt&&(t=e.tt),0!==t&&(e.$e.set(e.Fe.Ke.subarray(e.Fe.Je,e.Fe.Je+t),e.rt),e.rt+=t,e.Fe.Je+=t,e.Ge+=t,e.tt-=t,e.Fe.pending-=t,0===e.Fe.pending&&(e.Fe.Je=0))}};const rt=-2,st=-3,it=-5,ot=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],ct=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],ft=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],at=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],lt=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,112,112],ut=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],wt=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];function ht(){let e,t,n,r,s,i;function o(e,t,o,c,f,a,l,u,w,h,d){let p,y,m,b,g,k,v,S,z,C,x,A,_,I,P;C=0,g=o;do{n[e[t+C]]++,C++,g--}while(0!==g);if(n[0]==o)return l[0]=-1,u[0]=0,0;for(S=u[0],k=1;15>=k&&0===n[k];k++);for(v=k,k>S&&(S=k),g=15;0!==g&&0===n[g];g--);for(m=g,S>g&&(S=g),u[0]=S,I=1<<k;g>k;k++,I<<=1)if(0>(I-=n[k]))return st;if(0>(I-=n[g]))return st;for(n[g]+=I,i[1]=k=0,C=1,_=2;0!==--g;)i[_]=k+=n[C],_++,C++;g=0,C=0;do{0!==(k=e[t+C])&&(d[i[k]++]=g),C++}while(++g<o);for(o=i[m],i[0]=g=0,C=0,b=-1,A=-S,s[0]=0,x=0,P=0;m>=v;v++)for(p=n[v];0!==p--;){for(;v>A+S;){if(b++,A+=S,P=m-A,P=P>S?S:P,(y=1<<(k=v-A))>p+1&&(y-=p+1,_=v,P>k))for(;++k<P&&(y<<=1)>n[++_];)y-=n[_];if(P=1<<k,h[0]+P>1440)return st;s[b]=x=h[0],h[0]+=P,0!==b?(i[b]=g,r[0]=k,r[1]=S,k=g>>>A-S,r[2]=x-s[b-1]-k,w.set(r,3*(s[b-1]+k))):l[0]=x}for(r[1]=v-A,o>C?d[C]<c?(r[0]=256>d[C]?0:96,r[2]=d[C++]):(r[0]=a[d[C]-c]+16+64,r[2]=f[d[C++]-c]):r[0]=192,y=1<<v-A,k=g>>>A;P>k;k+=y)w.set(r,3*(x+k));for(k=1<<v-1;0!==(g&k);k>>>=1)g^=k;for(g^=k,z=(1<<A)-1;(g&z)!=i[b];)b--,A-=S,z=(1<<A)-1}return 0!==I&&1!=m?it:0}function c(o){let c;for(e||(e=[],t=[],n=new f(16),r=[],s=new f(15),i=new f(16)),t.length<o&&(t=[]),c=0;o>c;c++)t[c]=0;for(c=0;16>c;c++)n[c]=0;for(c=0;3>c;c++)r[c]=0;s.set(n.subarray(0,15),0),i.set(n.subarray(0,16),0)}this.st=(n,r,s,i,f)=>{let a;return c(19),e[0]=0,a=o(n,0,19,19,null,null,s,r,i,e,t),a==st?f.Le="oversubscribed dynamic bit lengths tree":a!=it&&0!==r[0]||(f.Le="incomplete dynamic bit lengths tree",a=st),a},this.it=(n,r,s,i,f,a,l,u,w)=>{let h;return c(288),e[0]=0,h=o(s,0,n,257,at,lt,a,i,u,e,t),0!=h||0===i[0]?(h==st?w.Le="oversubscribed literal/length tree":-4!=h&&(w.Le="incomplete literal/length tree",h=st),h):(c(288),h=o(s,n,r,0,ut,wt,l,f,u,e,t),0!=h||0===f[0]&&n>257?(h==st?w.Le="oversubscribed distance tree":h==it?(w.Le="incomplete distance tree",h=st):-4!=h&&(w.Le="empty distance tree with lengths",h=st),h):0)}}function dt(){const e=this;let t,n,r,s,i=0,o=0,c=0,f=0,a=0,l=0,u=0,w=0,h=0,d=0;function p(e,t,n,r,s,i,o,c){let f,a,l,u,w,h,d,p,y,m,b,g,k,v,S,z;d=c.nt,p=c.We,w=o.ot,h=o.ct,y=o.write,m=y<o.read?o.read-y-1:o.end-y,b=ot[e],g=ot[t];do{for(;20>h;)p--,w|=(255&c.ft(d++))<<h,h+=8;if(f=w&b,a=n,l=r,z=3*(l+f),0!==(u=a[z]))for(;;){if(w>>=a[z+1],h-=a[z+1],16&u){for(u&=15,k=a[z+2]+(w&ot[u]),w>>=u,h-=u;15>h;)p--,w|=(255&c.ft(d++))<<h,h+=8;for(f=w&g,a=s,l=i,z=3*(l+f),u=a[z];;){if(w>>=a[z+1],h-=a[z+1],16&u){for(u&=15;u>h;)p--,w|=(255&c.ft(d++))<<h,h+=8;if(v=a[z+2]+(w&ot[u]),w>>=u,h-=u,m-=k,v>y){S=y-v;do{S+=o.end}while(0>S);if(u=o.end-S,k>u){if(k-=u,y-S>0&&u>y-S)do{o.lt[y++]=o.lt[S++]}while(0!==--u);else o.lt.set(o.lt.subarray(S,S+u),y),y+=u,S+=u,u=0;S=0}}else S=y-v,y-S>0&&2>y-S?(o.lt[y++]=o.lt[S++],o.lt[y++]=o.lt[S++],k-=2):(o.lt.set(o.lt.subarray(S,S+2),y),y+=2,S+=2,k-=2);if(y-S>0&&k>y-S)do{o.lt[y++]=o.lt[S++]}while(0!==--k);else o.lt.set(o.lt.subarray(S,S+k),y),y+=k,S+=k,k=0;break}if(64&u)return c.Le="invalid distance code",k=c.We-p,k=k>h>>3?h>>3:k,p+=k,d-=k,h-=k<<3,o.ot=w,o.ct=h,c.We=p,c.qe+=d-c.nt,c.nt=d,o.write=y,st;f+=a[z+2],f+=w&ot[u],z=3*(l+f),u=a[z]}break}if(64&u)return 32&u?(k=c.We-p,k=k>h>>3?h>>3:k,p+=k,d-=k,h-=k<<3,o.ot=w,o.ct=h,c.We=p,c.qe+=d-c.nt,c.nt=d,o.write=y,1):(c.Le="invalid literal/length code",k=c.We-p,k=k>h>>3?h>>3:k,p+=k,d-=k,h-=k<<3,o.ot=w,o.ct=h,c.We=p,c.qe+=d-c.nt,c.nt=d,o.write=y,st);if(f+=a[z+2],f+=w&ot[u],z=3*(l+f),0===(u=a[z])){w>>=a[z+1],h-=a[z+1],o.lt[y++]=a[z+2],m--;break}}else w>>=a[z+1],h-=a[z+1],o.lt[y++]=a[z+2],m--}while(m>=258&&p>=10);return k=c.We-p,k=k>h>>3?h>>3:k,p+=k,d-=k,h-=k<<3,o.ot=w,o.ct=h,c.We=p,c.qe+=d-c.nt,c.nt=d,o.write=y,0}e.init=(e,i,o,c,f,a)=>{t=0,u=e,w=i,r=o,h=c,s=f,d=a,n=null},e.ut=(e,y,m)=>{let b,g,k,v,S,z,C,x=0,A=0,_=0;for(_=y.nt,v=y.We,x=e.ot,A=e.ct,S=e.write,z=S<e.read?e.read-S-1:e.end-S;;)switch(t){case 0:if(z>=258&&v>=10&&(e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,m=p(u,w,r,h,s,d,e,y),_=y.nt,v=y.We,x=e.ot,A=e.ct,S=e.write,z=S<e.read?e.read-S-1:e.end-S,0!=m)){t=1==m?7:9;break}c=u,n=r,o=h,t=1;case 1:for(b=c;b>A;){if(0===v)return e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);m=0,v--,x|=(255&y.ft(_++))<<A,A+=8}if(g=3*(o+(x&ot[b])),x>>>=n[g+1],A-=n[g+1],k=n[g],0===k){f=n[g+2],t=6;break}if(16&k){a=15&k,i=n[g+2],t=2;break}if(!(64&k)){c=k,o=g/3+n[g+2];break}if(32&k){t=7;break}return t=9,y.Le="invalid literal/length code",m=st,e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);case 2:for(b=a;b>A;){if(0===v)return e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);m=0,v--,x|=(255&y.ft(_++))<<A,A+=8}i+=x&ot[b],x>>=b,A-=b,c=w,n=s,o=d,t=3;case 3:for(b=c;b>A;){if(0===v)return e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);m=0,v--,x|=(255&y.ft(_++))<<A,A+=8}if(g=3*(o+(x&ot[b])),x>>=n[g+1],A-=n[g+1],k=n[g],16&k){a=15&k,l=n[g+2],t=4;break}if(!(64&k)){c=k,o=g/3+n[g+2];break}return t=9,y.Le="invalid distance code",m=st,e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);case 4:for(b=a;b>A;){if(0===v)return e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);m=0,v--,x|=(255&y.ft(_++))<<A,A+=8}l+=x&ot[b],x>>=b,A-=b,t=5;case 5:for(C=S-l;0>C;)C+=e.end;for(;0!==i;){if(0===z&&(S==e.end&&0!==e.read&&(S=0,z=S<e.read?e.read-S-1:e.end-S),0===z&&(e.write=S,m=e.wt(y,m),S=e.write,z=S<e.read?e.read-S-1:e.end-S,S==e.end&&0!==e.read&&(S=0,z=S<e.read?e.read-S-1:e.end-S),0===z)))return e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);e.lt[S++]=e.lt[C++],z--,C==e.end&&(C=0),i--}t=0;break;case 6:if(0===z&&(S==e.end&&0!==e.read&&(S=0,z=S<e.read?e.read-S-1:e.end-S),0===z&&(e.write=S,m=e.wt(y,m),S=e.write,z=S<e.read?e.read-S-1:e.end-S,S==e.end&&0!==e.read&&(S=0,z=S<e.read?e.read-S-1:e.end-S),0===z)))return e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);m=0,e.lt[S++]=f,z--,t=0;break;case 7:if(A>7&&(A-=8,v++,_--),e.write=S,m=e.wt(y,m),S=e.write,z=S<e.read?e.read-S-1:e.end-S,e.read!=e.write)return e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);t=8;case 8:return m=1,e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);case 9:return m=st,e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);default:return m=rt,e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m)}},e.ht=()=>{}}ht.dt=(e,t,n,r)=>(e[0]=9,t[0]=5,n[0]=ct,r[0]=ft,0);const pt=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];function yt(e,t){const n=this;let r,s=0,o=0,c=0,a=0;const l=[0],u=[0],w=new dt;let h=0,d=new f(4320);const p=new ht;n.ct=0,n.ot=0,n.lt=new i(t),n.end=t,n.read=0,n.write=0,n.reset=(e,t)=>{t&&(t[0]=0),6==s&&w.ht(e),s=0,n.ct=0,n.ot=0,n.read=n.write=0},n.reset(e,null),n.wt=(e,t)=>{let r,s,i;return s=e.rt,i=n.read,r=(i>n.write?n.end:n.write)-i,r>e.tt&&(r=e.tt),0!==r&&t==it&&(t=0),e.tt-=r,e.Ge+=r,e.$e.set(n.lt.subarray(i,i+r),s),s+=r,i+=r,i==n.end&&(i=0,n.write==n.end&&(n.write=0),r=n.write-i,r>e.tt&&(r=e.tt),0!==r&&t==it&&(t=0),e.tt-=r,e.Ge+=r,e.$e.set(n.lt.subarray(i,i+r),s),s+=r,i+=r),e.rt=s,n.read=i,t},n.ut=(e,t)=>{let i,f,y,m,b,g,k,v;for(m=e.nt,b=e.We,f=n.ot,y=n.ct,g=n.write,k=g<n.read?n.read-g-1:n.end-g;;){let S,z,C,x,A,_,I,P;switch(s){case 0:for(;3>y;){if(0===b)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);t=0,b--,f|=(255&e.ft(m++))<<y,y+=8}switch(i=7&f,h=1&i,i>>>1){case 0:f>>>=3,y-=3,i=7&y,f>>>=i,y-=i,s=1;break;case 1:S=[],z=[],C=[[]],x=[[]],ht.dt(S,z,C,x),w.init(S[0],z[0],C[0],0,x[0],0),f>>>=3,y-=3,s=6;break;case 2:f>>>=3,y-=3,s=3;break;case 3:return f>>>=3,y-=3,s=9,e.Le="invalid block type",t=st,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t)}break;case 1:for(;32>y;){if(0===b)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);t=0,b--,f|=(255&e.ft(m++))<<y,y+=8}if((~f>>>16&65535)!=(65535&f))return s=9,e.Le="invalid stored block lengths",t=st,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);o=65535&f,f=y=0,s=0!==o?2:0!==h?7:0;break;case 2:if(0===b)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);if(0===k&&(g==n.end&&0!==n.read&&(g=0,k=g<n.read?n.read-g-1:n.end-g),0===k&&(n.write=g,t=n.wt(e,t),g=n.write,k=g<n.read?n.read-g-1:n.end-g,g==n.end&&0!==n.read&&(g=0,k=g<n.read?n.read-g-1:n.end-g),0===k)))return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);if(t=0,i=o,i>b&&(i=b),i>k&&(i=k),n.lt.set(e.je(m,i),g),m+=i,b-=i,g+=i,k-=i,0!==(o-=i))break;s=0!==h?7:0;break;case 3:for(;14>y;){if(0===b)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);t=0,b--,f|=(255&e.ft(m++))<<y,y+=8}if(c=i=16383&f,(31&i)>29||(i>>5&31)>29)return s=9,e.Le="too many length or distance symbols",t=st,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);if(i=258+(31&i)+(i>>5&31),!r||r.length<i)r=[];else for(v=0;i>v;v++)r[v]=0;f>>>=14,y-=14,a=0,s=4;case 4:for(;4+(c>>>10)>a;){for(;3>y;){if(0===b)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);t=0,b--,f|=(255&e.ft(m++))<<y,y+=8}r[pt[a++]]=7&f,f>>>=3,y-=3}for(;19>a;)r[pt[a++]]=0;if(l[0]=7,i=p.st(r,l,u,d,e),0!=i)return(t=i)==st&&(r=null,s=9),n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);a=0,s=5;case 5:for(;i=c,258+(31&i)+(i>>5&31)>a;){let o,w;for(i=l[0];i>y;){if(0===b)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);t=0,b--,f|=(255&e.ft(m++))<<y,y+=8}if(i=d[3*(u[0]+(f&ot[i]))+1],w=d[3*(u[0]+(f&ot[i]))+2],16>w)f>>>=i,y-=i,r[a++]=w;else{for(v=18==w?7:w-14,o=18==w?11:3;i+v>y;){if(0===b)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);t=0,b--,f|=(255&e.ft(m++))<<y,y+=8}if(f>>>=i,y-=i,o+=f&ot[v],f>>>=v,y-=v,v=a,i=c,v+o>258+(31&i)+(i>>5&31)||16==w&&1>v)return r=null,s=9,e.Le="invalid bit length repeat",t=st,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);w=16==w?r[v-1]:0;do{r[v++]=w}while(0!==--o);a=v}}if(u[0]=-1,A=[],_=[],I=[],P=[],A[0]=9,_[0]=6,i=c,i=p.it(257+(31&i),1+(i>>5&31),r,A,_,I,P,d,e),0!=i)return i==st&&(r=null,s=9),t=i,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);w.init(A[0],_[0],d,I[0],d,P[0]),s=6;case 6:if(n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,1!=(t=w.ut(n,e,t)))return n.wt(e,t);if(t=0,w.ht(e),m=e.nt,b=e.We,f=n.ot,y=n.ct,g=n.write,k=g<n.read?n.read-g-1:n.end-g,0===h){s=0;break}s=7;case 7:if(n.write=g,t=n.wt(e,t),g=n.write,k=g<n.read?n.read-g-1:n.end-g,n.read!=n.write)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);s=8;case 8:return t=1,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);case 9:return t=st,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);default:return t=rt,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t)}}},n.ht=e=>{n.reset(e,null),n.lt=null,d=null},n.yt=(e,t,r)=>{n.lt.set(e.subarray(t,t+r),0),n.read=n.write=r},n.bt=()=>1==s?1:0}const mt=13,bt=[0,0,255,255];function gt(){const e=this;function t(e){return e&&e.gt?(e.qe=e.Ge=0,e.Le=null,e.gt.mode=7,e.gt.kt.reset(e,null),0):rt}e.mode=0,e.method=0,e.vt=[0],e.St=0,e.marker=0,e.zt=0,e.Ct=t=>(e.kt&&e.kt.ht(t),e.kt=null,0),e.xt=(n,r)=>(n.Le=null,e.kt=null,8>r||r>15?(e.Ct(n),rt):(e.zt=r,n.gt.kt=new yt(n,1<<r),t(n),0)),e.At=(e,t)=>{let n,r;if(!e||!e.gt||!e.et)return rt;const s=e.gt;for(t=4==t?it:0,n=it;;)switch(s.mode){case 0:if(0===e.We)return n;if(n=t,e.We--,e.qe++,8!=(15&(s.method=e.ft(e.nt++)))){s.mode=mt,e.Le="unknown compression method",s.marker=5;break}if(8+(s.method>>4)>s.zt){s.mode=mt,e.Le="invalid win size",s.marker=5;break}s.mode=1;case 1:if(0===e.We)return n;if(n=t,e.We--,e.qe++,r=255&e.ft(e.nt++),((s.method<<8)+r)%31!=0){s.mode=mt,e.Le="incorrect header check",s.marker=5;break}if(!(32&r)){s.mode=7;break}s.mode=2;case 2:if(0===e.We)return n;n=t,e.We--,e.qe++,s.St=(255&e.ft(e.nt++))<<24&4278190080,s.mode=3;case 3:if(0===e.We)return n;n=t,e.We--,e.qe++,s.St+=(255&e.ft(e.nt++))<<16&16711680,s.mode=4;case 4:if(0===e.We)return n;n=t,e.We--,e.qe++,s.St+=(255&e.ft(e.nt++))<<8&65280,s.mode=5;case 5:return 0===e.We?n:(n=t,e.We--,e.qe++,s.St+=255&e.ft(e.nt++),s.mode=6,2);case 6:return s.mode=mt,e.Le="need dictionary",s.marker=0,rt;case 7:if(n=s.kt.ut(e,n),n==st){s.mode=mt,s.marker=0;break}if(0==n&&(n=t),1!=n)return n;n=t,s.kt.reset(e,s.vt),s.mode=12;case 12:return e.We=0,1;case mt:return st;default:return rt}},e._t=(e,t,n)=>{let r=0,s=n;if(!e||!e.gt||6!=e.gt.mode)return rt;const i=e.gt;return s<1<<i.zt||(s=(1<<i.zt)-1,r=n-s),i.kt.yt(t,r,s),i.mode=7,0},e.It=e=>{let n,r,s,i,o;if(!e||!e.gt)return rt;const c=e.gt;if(c.mode!=mt&&(c.mode=mt,c.marker=0),0===(n=e.We))return it;for(r=e.nt,s=c.marker;0!==n&&4>s;)e.ft(r)==bt[s]?s++:s=0!==e.ft(r)?0:4-s,r++,n--;return e.qe+=r-e.nt,e.nt=r,e.We=n,c.marker=s,4!=s?st:(i=e.qe,o=e.Ge,t(e),e.qe=i,e.Ge=o,c.mode=7,0)},e.Pt=e=>e&&e.gt&&e.gt.kt?e.gt.kt.bt():rt}function kt(){}function vt(e){const t=new kt,n=e&&e.chunkSize?r.floor(2*e.chunkSize):131072,o=new i(n);let c=!1;t.xt(),t.$e=o,this.append=(e,r)=>{const f=[];let a,l,u=0,w=0,h=0;if(0!==e.length){t.nt=0,t.et=e,t.We=e.length;do{if(t.rt=0,t.tt=n,0!==t.We||c||(t.nt=0,c=!0),a=t.At(0),c&&a===it){if(0!==t.We)throw new s("inflating: bad input")}else if(0!==a&&1!==a)throw new s("inflating: "+t.Le);if((c||1===a)&&t.We===e.length)throw new s("inflating: bad input");t.rt&&(t.rt===n?f.push(new i(o)):f.push(o.subarray(0,t.rt))),h+=t.rt,r&&t.nt>0&&t.nt!=u&&(r(t.nt),u=t.nt)}while(t.We>0||0===t.tt);return f.length>1?(l=new i(h),f.forEach((e=>{l.set(e,w),w+=e.length}))):l=f[0]?new i(f[0]):new i,l}},this.flush=()=>{t.Ct()}}kt.prototype={xt(e){const t=this;return t.gt=new gt,e||(e=15),t.gt.xt(t,e)},At(e){const t=this;return t.gt?t.gt.At(t,e):rt},Ct(){const e=this;if(!e.gt)return rt;const t=e.gt.Ct(e);return e.gt=null,t},It(){const e=this;return e.gt?e.gt.It(e):rt},_t(e,t){const n=this;return n.gt?n.gt._t(n,e,t):rt},ft(e){return this.et[e]},je(e,t){return this.et.subarray(e,e+t)}},self.initCodec=()=>{self.Deflate=nt,self.Inflate=vt};\n',r=()=>t.useDataURI?"data:text/javascript,"+encodeURIComponent(n):URL.createObjectURL(new Blob([n],{type:"text/javascript"}));e({workerScripts:{inflate:[r],deflate:[r]}});}(ue),ue({Deflate:function(e){const t=new v,n=(r=e&&e.chunkSize?e.chunkSize:65536)+5*(Math.floor(r/16383)+1);var r;const i=new Uint8Array(n);let s=e?e.level:-1;void 0===s&&(s=-1),t.deflateInit(s),t.next_out=i,this.append=function(e,r){let s,a,o=0,c=0,l=0;const d=[];if(e.length){t.next_in_index=0,t.next_in=e,t.avail_in=e.length;do{if(t.next_out_index=0,t.avail_out=n,s=t.deflate(0),0!=s)throw new Error("deflating: "+t.msg);t.next_out_index&&(t.next_out_index==n?d.push(new Uint8Array(i)):d.push(i.subarray(0,t.next_out_index))),l+=t.next_out_index,r&&t.next_in_index>0&&t.next_in_index!=o&&(r(t.next_in_index),o=t.next_in_index);}while(t.avail_in>0||0===t.avail_out);return d.length>1?(a=new Uint8Array(l),d.forEach((function(e){a.set(e,c),c+=e.length;}))):a=d[0]?new Uint8Array(d[0]):new Uint8Array,a}},this.flush=function(){let e,r,s=0,a=0;const o=[];do{if(t.next_out_index=0,t.avail_out=n,e=t.deflate(4),1!=e&&0!=e)throw new Error("deflating: "+t.msg);n-t.avail_out>0&&o.push(i.slice(0,t.next_out_index)),a+=t.next_out_index;}while(t.avail_in>0||0===t.avail_out);return t.deflateEnd(),r=new Uint8Array(a),o.forEach((function(e){r.set(e,s),s+=e.length;})),r};},Inflate:function(e){const t=new I,n=e&&e.chunkSize?Math.floor(2*e.chunkSize):131072,r=new Uint8Array(n);let i=false;t.inflateInit(),t.next_out=r,this.append=function(e,s){const a=[];let o,c,l=0,d=0,f=0;if(0!==e.length){t.next_in_index=0,t.next_in=e,t.avail_in=e.length;do{if(t.next_out_index=0,t.avail_out=n,0!==t.avail_in||i||(t.next_in_index=0,i=true),o=t.inflate(0),i&&o===k){if(0!==t.avail_in)throw new Error("inflating: bad input")}else if(0!==o&&1!==o)throw new Error("inflating: "+t.msg);if((i||1===o)&&t.avail_in===e.length)throw new Error("inflating: bad input");t.next_out_index&&(t.next_out_index===n?a.push(new Uint8Array(r)):a.push(r.subarray(0,t.next_out_index))),f+=t.next_out_index,s&&t.next_in_index>0&&t.next_in_index!=l&&(s(t.next_in_index),l=t.next_in_index);}while(t.avail_in>0||0===t.avail_out);return a.length>1?(c=new Uint8Array(f),a.forEach((function(e){c.set(e,d),d+=e.length;}))):c=a[0]?new Uint8Array(a[0]):new Uint8Array,c}},this.flush=function(){t.inflateEnd();};}});var zip = null; + +/* c8 ignore stop */ + +export { dn as BlobReader, fn as BlobWriter, cn as Data64URIReader, ln as Data64URIWriter, wr as ERR_BAD_FORMAT, br as ERR_CENTRAL_DIRECTORY_NOT_FOUND, Nr as ERR_DUPLICATED_NAME, _r as ERR_ENCRYPTED, xr as ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND, gr as ERR_EOCDR_NOT_FOUND, yr as ERR_EXTRAFIELD_ZIP64_NOT_FOUND, Jt as ERR_HTTP_RANGE, Vr as ERR_INVALID_COMMENT, Xr as ERR_INVALID_ENCRYPTION_STRENGTH, Zr as ERR_INVALID_ENTRY_COMMENT, Kr as ERR_INVALID_ENTRY_NAME, Yr as ERR_INVALID_EXTRAFIELD_DATA, Jr as ERR_INVALID_EXTRAFIELD_TYPE, Ue as ERR_INVALID_PASSWORD, Ee as ERR_INVALID_SIGNATURE, Gr as ERR_INVALID_VERSION, Yt as ERR_ITERATOR_COMPLETED_TOO_SOON, vr as ERR_LOCAL_FILE_HEADER_NOT_FOUND, zr as ERR_SPLIT_ZIP_FILE, $r as ERR_UNDEFINED_UNCOMPRESSED_SIZE, Sr as ERR_UNSUPPORTED_COMPRESSION, kr as ERR_UNSUPPORTED_ENCRYPTION, Qr as ERR_UNSUPPORTED_FORMAT, Qt as ERR_WRITER_NOT_INITIALIZED, Dn as HttpRangeReader, Cn as HttpReader, an as Reader, Wn as SplitDataReader, Fn as SplitDataWriter, Rn as SplitZipReader, Ln as SplitZipWriter, un as TextReader, pn as TextWriter, Un as Uint8ArrayReader, En as Uint8ArrayWriter, on as Writer, Er as ZipReader, Wr as ZipReaderStream, ri as ZipWriter, ii as ZipWriterStream, ue as configure, zip as default, bi as fs, we as getMimeType, Kt as initShimAsyncCodec, Zt as terminateWorkers }; diff --git a/docs/zip-CAMAhqMX.js.map b/docs/zip-CAMAhqMX.js.map new file mode 100644 index 00000000..dec4d976 --- /dev/null +++ b/docs/zip-CAMAhqMX.js.map @@ -0,0 +1 @@ +{"version":3,"file":"zip-CAMAhqMX.js","sources":["../esm/3rd-party/zip.js"],"sourcesContent":["/* c8 ignore start */\n/**\n * Bundled by jsDelivr using Rollup v2.79.2 and Terser v5.39.0.\n * Original file: /npm/@zip.js/zip.js@2.7.62/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\nconst e=256,t=256,n=-2,r=-5;function i(e){return s(e.map((([e,t])=>new Array(e).fill(t,0,e))))}function s(e){return e.reduce(((e,t)=>e.concat(Array.isArray(t)?s(t):t)),[])}const a=[0,1,2,3].concat(...i([[2,4],[2,5],[4,6],[4,7],[8,8],[8,9],[16,10],[16,11],[32,12],[32,13],[64,14],[64,15],[2,0],[1,16],[1,17],[2,18],[2,19],[4,20],[4,21],[8,22],[8,23],[16,24],[16,25],[32,26],[32,27],[64,28],[64,29]]));function o(){const e=this;function t(e,t){let n=0;do{n|=1&e,e>>>=1,n<<=1}while(--t>0);return n>>>1}e.build_tree=function(n){const r=e.dyn_tree,i=e.stat_desc.static_tree,s=e.stat_desc.elems;let a,o,c,l=-1;for(n.heap_len=0,n.heap_max=573,a=0;a<s;a++)0!==r[2*a]?(n.heap[++n.heap_len]=l=a,n.depth[a]=0):r[2*a+1]=0;for(;n.heap_len<2;)c=n.heap[++n.heap_len]=l<2?++l:0,r[2*c]=1,n.depth[c]=0,n.opt_len--,i&&(n.static_len-=i[2*c+1]);for(e.max_code=l,a=Math.floor(n.heap_len/2);a>=1;a--)n.pqdownheap(r,a);c=s;do{a=n.heap[1],n.heap[1]=n.heap[n.heap_len--],n.pqdownheap(r,1),o=n.heap[1],n.heap[--n.heap_max]=a,n.heap[--n.heap_max]=o,r[2*c]=r[2*a]+r[2*o],n.depth[c]=Math.max(n.depth[a],n.depth[o])+1,r[2*a+1]=r[2*o+1]=c,n.heap[1]=c++,n.pqdownheap(r,1)}while(n.heap_len>=2);n.heap[--n.heap_max]=n.heap[1],function(t){const n=e.dyn_tree,r=e.stat_desc.static_tree,i=e.stat_desc.extra_bits,s=e.stat_desc.extra_base,a=e.stat_desc.max_length;let o,c,l,d,f,u,p=0;for(d=0;d<=15;d++)t.bl_count[d]=0;for(n[2*t.heap[t.heap_max]+1]=0,o=t.heap_max+1;o<573;o++)c=t.heap[o],d=n[2*n[2*c+1]+1]+1,d>a&&(d=a,p++),n[2*c+1]=d,c>e.max_code||(t.bl_count[d]++,f=0,c>=s&&(f=i[c-s]),u=n[2*c],t.opt_len+=u*(d+f),r&&(t.static_len+=u*(r[2*c+1]+f)));if(0!==p){do{for(d=a-1;0===t.bl_count[d];)d--;t.bl_count[d]--,t.bl_count[d+1]+=2,t.bl_count[a]--,p-=2}while(p>0);for(d=a;0!==d;d--)for(c=t.bl_count[d];0!==c;)l=t.heap[--o],l>e.max_code||(n[2*l+1]!=d&&(t.opt_len+=(d-n[2*l+1])*n[2*l],n[2*l+1]=d),c--)}}(n),function(e,n,r){const i=[];let s,a,o,c=0;for(s=1;s<=15;s++)i[s]=c=c+r[s-1]<<1;for(a=0;a<=n;a++)o=e[2*a+1],0!==o&&(e[2*a]=t(i[o]++,o))}(r,e.max_code,n.bl_count)}}function c(e,t,n,r,i){const s=this;s.static_tree=e,s.extra_bits=t,s.extra_base=n,s.elems=r,s.max_length=i}o._length_code=[0,1,2,3,4,5,6,7].concat(...i([[2,8],[2,9],[2,10],[2,11],[4,12],[4,13],[4,14],[4,15],[8,16],[8,17],[8,18],[8,19],[16,20],[16,21],[16,22],[16,23],[32,24],[32,25],[32,26],[31,27],[1,28]])),o.base_length=[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0],o.base_dist=[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576],o.d_code=function(e){return e<256?a[e]:a[256+(e>>>7)]},o.extra_lbits=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],o.extra_dbits=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],o.extra_blbits=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],o.bl_order=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];const l=i([[144,8],[112,9],[24,7],[8,8]]);c.static_ltree=s([12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,19,275,147,403,83,339,211,467,51,307,179,435,115,371,243,499,11,267,139,395,75,331,203,459,43,299,171,427,107,363,235,491,27,283,155,411,91,347,219,475,59,315,187,443,123,379,251,507,7,263,135,391,71,327,199,455,39,295,167,423,103,359,231,487,23,279,151,407,87,343,215,471,55,311,183,439,119,375,247,503,15,271,143,399,79,335,207,463,47,303,175,431,111,367,239,495,31,287,159,415,95,351,223,479,63,319,191,447,127,383,255,511,0,64,32,96,16,80,48,112,8,72,40,104,24,88,56,120,4,68,36,100,20,84,52,116,3,131,67,195,35,163,99,227].map(((e,t)=>[e,l[t]])));const d=i([[30,5]]);c.static_dtree=s([0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30,1,17,9,25,5,21,13,29,3,19,11,27,7,23].map(((e,t)=>[e,d[t]]))),c.static_l_desc=new c(c.static_ltree,o.extra_lbits,257,286,15),c.static_d_desc=new c(c.static_dtree,o.extra_dbits,0,30,15),c.static_bl_desc=new c(null,o.extra_blbits,0,19,7);function f(e,t,n,r,i){const s=this;s.good_length=e,s.max_lazy=t,s.nice_length=n,s.max_chain=r,s.func=i}const u=[new f(0,0,0,0,0),new f(4,4,8,4,1),new f(4,5,16,8,1),new f(4,6,32,32,1),new f(4,4,16,16,2),new f(8,16,32,32,2),new f(8,16,128,128,2),new f(8,32,128,256,2),new f(32,128,258,1024,2),new f(32,258,258,4096,2)],p=[\"need dictionary\",\"stream end\",\"\",\"\",\"stream error\",\"data error\",\"\",\"buffer error\",\"\",\"\"],m=113,h=666,w=258,g=262;function x(e,t,n,r){const i=e[2*t],s=e[2*n];return i<s||i==s&&r[t]<=r[n]}function b(){const i=this;let s,a,l,d,f,b,v,y,_,k,S,z,A,C,D,U,E,W,F,j,q,T,O,R,L,I,M,P,B,H,N,V,Z;const K=new o,G=new o,X=new o;let J,Y,Q,$,ee,te;function ne(){let e;for(e=0;e<286;e++)N[2*e]=0;for(e=0;e<30;e++)V[2*e]=0;for(e=0;e<19;e++)Z[2*e]=0;N[512]=1,i.opt_len=i.static_len=0,Y=Q=0}function re(e,t){let n,r=-1,i=e[1],s=0,a=7,o=4;0===i&&(a=138,o=3),e[2*(t+1)+1]=65535;for(let c=0;c<=t;c++)n=i,i=e[2*(c+1)+1],++s<a&&n==i||(s<o?Z[2*n]+=s:0!==n?(n!=r&&Z[2*n]++,Z[32]++):s<=10?Z[34]++:Z[36]++,s=0,r=n,0===i?(a=138,o=3):n==i?(a=6,o=3):(a=7,o=4))}function ie(e){i.pending_buf[i.pending++]=e}function se(e){ie(255&e),ie(e>>>8&255)}function ae(e,t){let n;const r=t;te>16-r?(n=e,ee|=n<<te&65535,se(ee),ee=n>>>16-te,te+=r-16):(ee|=e<<te&65535,te+=r)}function oe(e,t){const n=2*e;ae(65535&t[n],65535&t[n+1])}function ce(e,t){let n,r,i=-1,s=e[1],a=0,o=7,c=4;for(0===s&&(o=138,c=3),n=0;n<=t;n++)if(r=s,s=e[2*(n+1)+1],!(++a<o&&r==s)){if(a<c)do{oe(r,Z)}while(0!=--a);else 0!==r?(r!=i&&(oe(r,Z),a--),oe(16,Z),ae(a-3,2)):a<=10?(oe(17,Z),ae(a-3,3)):(oe(18,Z),ae(a-11,7));a=0,i=r,0===s?(o=138,c=3):r==s?(o=6,c=3):(o=7,c=4)}}function le(){16==te?(se(ee),ee=0,te=0):te>=8&&(ie(255&ee),ee>>>=8,te-=8)}function de(t,n){let r,s,a;if(i.dist_buf[Y]=t,i.lc_buf[Y]=255&n,Y++,0===t?N[2*n]++:(Q++,t--,N[2*(o._length_code[n]+e+1)]++,V[2*o.d_code(t)]++),!(8191&Y)&&M>2){for(r=8*Y,s=q-E,a=0;a<30;a++)r+=V[2*a]*(5+o.extra_dbits[a]);if(r>>>=3,Q<Math.floor(Y/2)&&r<Math.floor(s/2))return!0}return Y==J-1}function fe(n,r){let s,a,c,l,d=0;if(0!==Y)do{s=i.dist_buf[d],a=i.lc_buf[d],d++,0===s?oe(a,n):(c=o._length_code[a],oe(c+e+1,n),l=o.extra_lbits[c],0!==l&&(a-=o.base_length[c],ae(a,l)),s--,c=o.d_code(s),oe(c,r),l=o.extra_dbits[c],0!==l&&(s-=o.base_dist[c],ae(s,l)))}while(d<Y);oe(t,n),$=n[513]}function ue(){te>8?se(ee):te>0&&ie(255&ee),ee=0,te=0}function pe(e,t,n){ae(0+(n?1:0),3),function(e,t,n){ue(),$=8,n&&(se(t),se(~t)),i.pending_buf.set(y.subarray(e,e+t),i.pending),i.pending+=t}(e,t,!0)}function me(e,t,n){let r,s,a=0;M>0?(K.build_tree(i),G.build_tree(i),a=function(){let e;for(re(N,K.max_code),re(V,G.max_code),X.build_tree(i),e=18;e>=3&&0===Z[2*o.bl_order[e]+1];e--);return i.opt_len+=3*(e+1)+5+5+4,e}(),r=i.opt_len+3+7>>>3,s=i.static_len+3+7>>>3,s<=r&&(r=s)):r=s=t+5,t+4<=r&&-1!=e?pe(e,t,n):s==r?(ae(2+(n?1:0),3),fe(c.static_ltree,c.static_dtree)):(ae(4+(n?1:0),3),function(e,t,n){let r;for(ae(e-257,5),ae(t-1,5),ae(n-4,4),r=0;r<n;r++)ae(Z[2*o.bl_order[r]+1],3);ce(N,e-1),ce(V,t-1)}(K.max_code+1,G.max_code+1,a+1),fe(N,V)),ne(),n&&ue()}function he(e){me(E>=0?E:-1,q-E,e),E=q,s.flush_pending()}function we(){let e,t,n,r;do{if(r=_-O-q,0===r&&0===q&&0===O)r=f;else if(-1==r)r--;else if(q>=f+f-g){y.set(y.subarray(f,f+f),0),T-=f,q-=f,E-=f,e=A,n=e;do{t=65535&S[--n],S[n]=t>=f?t-f:0}while(0!=--e);e=f,n=e;do{t=65535&k[--n],k[n]=t>=f?t-f:0}while(0!=--e);r+=f}if(0===s.avail_in)return;e=s.read_buf(y,q+O,r),O+=e,O>=3&&(z=255&y[q],z=(z<<U^255&y[q+1])&D)}while(O<g&&0!==s.avail_in)}function ge(e){let t,n,r=L,i=q,s=R;const a=q>f-g?q-(f-g):0;let o=H;const c=v,l=q+w;let d=y[i+s-1],u=y[i+s];R>=B&&(r>>=2),o>O&&(o=O);do{if(t=e,y[t+s]==u&&y[t+s-1]==d&&y[t]==y[i]&&y[++t]==y[i+1]){i+=2,t++;do{}while(y[++i]==y[++t]&&y[++i]==y[++t]&&y[++i]==y[++t]&&y[++i]==y[++t]&&y[++i]==y[++t]&&y[++i]==y[++t]&&y[++i]==y[++t]&&y[++i]==y[++t]&&i<l);if(n=w-(l-i),i=l-w,n>s){if(T=e,s=n,n>=o)break;d=y[i+s-1],u=y[i+s]}}}while((e=65535&k[e&c])>a&&0!=--r);return s<=O?s:O}function xe(e){return e.total_in=e.total_out=0,e.msg=null,i.pending=0,i.pending_out=0,a=m,d=0,K.dyn_tree=N,K.stat_desc=c.static_l_desc,G.dyn_tree=V,G.stat_desc=c.static_d_desc,X.dyn_tree=Z,X.stat_desc=c.static_bl_desc,ee=0,te=0,$=8,ne(),function(){_=2*f,S[A-1]=0;for(let e=0;e<A-1;e++)S[e]=0;I=u[M].max_lazy,B=u[M].good_length,H=u[M].nice_length,L=u[M].max_chain,q=0,E=0,O=0,W=R=2,j=0,z=0}(),0}i.depth=[],i.bl_count=[],i.heap=[],N=[],V=[],Z=[],i.pqdownheap=function(e,t){const n=i.heap,r=n[t];let s=t<<1;for(;s<=i.heap_len&&(s<i.heap_len&&x(e,n[s+1],n[s],i.depth)&&s++,!x(e,r,n[s],i.depth));)n[t]=n[s],t=s,s<<=1;n[t]=r},i.deflateInit=function(e,t,r,s,a,o){return s||(s=8),a||(a=8),o||(o=0),e.msg=null,-1==t&&(t=6),a<1||a>9||8!=s||r<9||r>15||t<0||t>9||o<0||o>2?n:(e.dstate=i,b=r,f=1<<b,v=f-1,C=a+7,A=1<<C,D=A-1,U=Math.floor((C+3-1)/3),y=new Uint8Array(2*f),k=[],S=[],J=1<<a+6,i.pending_buf=new Uint8Array(4*J),l=4*J,i.dist_buf=new Uint16Array(J),i.lc_buf=new Uint8Array(J),M=t,P=o,xe(e))},i.deflateEnd=function(){return 42!=a&&a!=m&&a!=h?n:(i.lc_buf=null,i.dist_buf=null,i.pending_buf=null,S=null,k=null,y=null,i.dstate=null,a==m?-3:0)},i.deflateParams=function(e,t,r){let i=0;return-1==t&&(t=6),t<0||t>9||r<0||r>2?n:(u[M].func!=u[t].func&&0!==e.total_in&&(i=e.deflate(1)),M!=t&&(M=t,I=u[M].max_lazy,B=u[M].good_length,H=u[M].nice_length,L=u[M].max_chain),P=r,i)},i.deflateSetDictionary=function(e,t,r){let i,s=r,o=0;if(!t||42!=a)return n;if(s<3)return 0;for(s>f-g&&(s=f-g,o=r-s),y.set(t.subarray(o,o+s),0),q=s,E=s,z=255&y[0],z=(z<<U^255&y[1])&D,i=0;i<=s-3;i++)z=(z<<U^255&y[i+2])&D,k[i&v]=S[z],S[z]=i;return 0},i.deflate=function(e,o){let w,x,_,C,L;if(o>4||o<0)return n;if(!e.next_out||!e.next_in&&0!==e.avail_in||a==h&&4!=o)return e.msg=p[4],n;if(0===e.avail_out)return e.msg=p[7],r;var B;if(s=e,C=d,d=o,42==a&&(x=8+(b-8<<4)<<8,_=(M-1&255)>>1,_>3&&(_=3),x|=_<<6,0!==q&&(x|=32),x+=31-x%31,a=m,ie((B=x)>>8&255),ie(255&B)),0!==i.pending){if(s.flush_pending(),0===s.avail_out)return d=-1,0}else if(0===s.avail_in&&o<=C&&4!=o)return s.msg=p[7],r;if(a==h&&0!==s.avail_in)return e.msg=p[7],r;if(0!==s.avail_in||0!==O||0!=o&&a!=h){switch(L=-1,u[M].func){case 0:L=function(e){let t,n=65535;for(n>l-5&&(n=l-5);;){if(O<=1){if(we(),0===O&&0==e)return 0;if(0===O)break}if(q+=O,O=0,t=E+n,(0===q||q>=t)&&(O=q-t,q=t,he(!1),0===s.avail_out))return 0;if(q-E>=f-g&&(he(!1),0===s.avail_out))return 0}return he(4==e),0===s.avail_out?4==e?2:0:4==e?3:1}(o);break;case 1:L=function(e){let t,n=0;for(;;){if(O<g){if(we(),O<g&&0==e)return 0;if(0===O)break}if(O>=3&&(z=(z<<U^255&y[q+2])&D,n=65535&S[z],k[q&v]=S[z],S[z]=q),0!==n&&(q-n&65535)<=f-g&&2!=P&&(W=ge(n)),W>=3)if(t=de(q-T,W-3),O-=W,W<=I&&O>=3){W--;do{q++,z=(z<<U^255&y[q+2])&D,n=65535&S[z],k[q&v]=S[z],S[z]=q}while(0!=--W);q++}else q+=W,W=0,z=255&y[q],z=(z<<U^255&y[q+1])&D;else t=de(0,255&y[q]),O--,q++;if(t&&(he(!1),0===s.avail_out))return 0}return he(4==e),0===s.avail_out?4==e?2:0:4==e?3:1}(o);break;case 2:L=function(e){let t,n,r=0;for(;;){if(O<g){if(we(),O<g&&0==e)return 0;if(0===O)break}if(O>=3&&(z=(z<<U^255&y[q+2])&D,r=65535&S[z],k[q&v]=S[z],S[z]=q),R=W,F=T,W=2,0!==r&&R<I&&(q-r&65535)<=f-g&&(2!=P&&(W=ge(r)),W<=5&&(1==P||3==W&&q-T>4096)&&(W=2)),R>=3&&W<=R){n=q+O-3,t=de(q-1-F,R-3),O-=R-1,R-=2;do{++q<=n&&(z=(z<<U^255&y[q+2])&D,r=65535&S[z],k[q&v]=S[z],S[z]=q)}while(0!=--R);if(j=0,W=2,q++,t&&(he(!1),0===s.avail_out))return 0}else if(0!==j){if(t=de(0,255&y[q-1]),t&&he(!1),q++,O--,0===s.avail_out)return 0}else j=1,q++,O--}return 0!==j&&(t=de(0,255&y[q-1]),j=0),he(4==e),0===s.avail_out?4==e?2:0:4==e?3:1}(o)}if(2!=L&&3!=L||(a=h),0==L||2==L)return 0===s.avail_out&&(d=-1),0;if(1==L){if(1==o)ae(2,3),oe(t,c.static_ltree),le(),1+$+10-te<9&&(ae(2,3),oe(t,c.static_ltree),le()),$=7;else if(pe(0,0,!1),3==o)for(w=0;w<A;w++)S[w]=0;if(s.flush_pending(),0===s.avail_out)return d=-1,0}}return 4!=o?0:1}}function v(){const e=this;e.next_in_index=0,e.next_out_index=0,e.avail_in=0,e.total_in=0,e.avail_out=0,e.total_out=0}v.prototype={deflateInit(e,t){const n=this;return n.dstate=new b,t||(t=15),n.dstate.deflateInit(n,e,t)},deflate(e){const t=this;return t.dstate?t.dstate.deflate(t,e):n},deflateEnd(){const e=this;if(!e.dstate)return n;const t=e.dstate.deflateEnd();return e.dstate=null,t},deflateParams(e,t){const r=this;return r.dstate?r.dstate.deflateParams(r,e,t):n},deflateSetDictionary(e,t){const r=this;return r.dstate?r.dstate.deflateSetDictionary(r,e,t):n},read_buf(e,t,n){const r=this;let i=r.avail_in;return i>n&&(i=n),0===i?0:(r.avail_in-=i,e.set(r.next_in.subarray(r.next_in_index,r.next_in_index+i),t),r.next_in_index+=i,r.total_in+=i,i)},flush_pending(){const e=this;let t=e.dstate.pending;t>e.avail_out&&(t=e.avail_out),0!==t&&(e.next_out.set(e.dstate.pending_buf.subarray(e.dstate.pending_out,e.dstate.pending_out+t),e.next_out_index),e.next_out_index+=t,e.dstate.pending_out+=t,e.total_out+=t,e.avail_out-=t,e.dstate.pending-=t,0===e.dstate.pending&&(e.dstate.pending_out=0))}};const y=-2,_=-3,k=-5,S=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],z=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],A=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],C=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],D=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,112,112],U=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],E=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],W=15;function F(){let e,t,n,r,i,s;function a(e,t,a,o,c,l,d,f,u,p,m){let h,w,g,x,b,v,y,S,z,A,C,D,U,E,F;A=0,b=a;do{n[e[t+A]]++,A++,b--}while(0!==b);if(n[0]==a)return d[0]=-1,f[0]=0,0;for(S=f[0],v=1;v<=W&&0===n[v];v++);for(y=v,S<v&&(S=v),b=W;0!==b&&0===n[b];b--);for(g=b,S>b&&(S=b),f[0]=S,E=1<<v;v<b;v++,E<<=1)if((E-=n[v])<0)return _;if((E-=n[b])<0)return _;for(n[b]+=E,s[1]=v=0,A=1,U=2;0!=--b;)s[U]=v+=n[A],U++,A++;b=0,A=0;do{0!==(v=e[t+A])&&(m[s[v]++]=b),A++}while(++b<a);for(a=s[g],s[0]=b=0,A=0,x=-1,D=-S,i[0]=0,C=0,F=0;y<=g;y++)for(h=n[y];0!=h--;){for(;y>D+S;){if(x++,D+=S,F=g-D,F=F>S?S:F,(w=1<<(v=y-D))>h+1&&(w-=h+1,U=y,v<F))for(;++v<F&&!((w<<=1)<=n[++U]);)w-=n[U];if(F=1<<v,p[0]+F>1440)return _;i[x]=C=p[0],p[0]+=F,0!==x?(s[x]=b,r[0]=v,r[1]=S,v=b>>>D-S,r[2]=C-i[x-1]-v,u.set(r,3*(i[x-1]+v))):d[0]=C}for(r[1]=y-D,A>=a?r[0]=192:m[A]<o?(r[0]=m[A]<256?0:96,r[2]=m[A++]):(r[0]=l[m[A]-o]+16+64,r[2]=c[m[A++]-o]),w=1<<y-D,v=b>>>D;v<F;v+=w)u.set(r,3*(C+v));for(v=1<<y-1;b&v;v>>>=1)b^=v;for(b^=v,z=(1<<D)-1;(b&z)!=s[x];)x--,D-=S,z=(1<<D)-1}return 0!==E&&1!=g?k:0}function o(a){let o;for(e||(e=[],t=[],n=new Int32Array(16),r=[],i=new Int32Array(W),s=new Int32Array(16)),t.length<a&&(t=[]),o=0;o<a;o++)t[o]=0;for(o=0;o<16;o++)n[o]=0;for(o=0;o<3;o++)r[o]=0;i.set(n.subarray(0,W),0),s.set(n.subarray(0,16),0)}this.inflate_trees_bits=function(n,r,i,s,c){let l;return o(19),e[0]=0,l=a(n,0,19,19,null,null,i,r,s,e,t),l==_?c.msg=\"oversubscribed dynamic bit lengths tree\":l!=k&&0!==r[0]||(c.msg=\"incomplete dynamic bit lengths tree\",l=_),l},this.inflate_trees_dynamic=function(n,r,i,s,c,l,d,f,u){let p;return o(288),e[0]=0,p=a(i,0,n,257,C,D,l,s,f,e,t),0!=p||0===s[0]?(p==_?u.msg=\"oversubscribed literal/length tree\":-4!=p&&(u.msg=\"incomplete literal/length tree\",p=_),p):(o(288),p=a(i,n,r,0,U,E,d,c,f,e,t),0!=p||0===c[0]&&n>257?(p==_?u.msg=\"oversubscribed distance tree\":p==k?(u.msg=\"incomplete distance tree\",p=_):-4!=p&&(u.msg=\"empty distance tree with lengths\",p=_),p):0)}}F.inflate_trees_fixed=function(e,t,n,r){return e[0]=9,t[0]=5,n[0]=z,r[0]=A,0};function j(){const e=this;let t,n,r,i,s=0,a=0,o=0,c=0,l=0,d=0,f=0,u=0,p=0,m=0;function h(e,t,n,r,i,s,a,o){let c,l,d,f,u,p,m,h,w,g,x,b,v,y,k,z;m=o.next_in_index,h=o.avail_in,u=a.bitb,p=a.bitk,w=a.write,g=w<a.read?a.read-w-1:a.end-w,x=S[e],b=S[t];do{for(;p<20;)h--,u|=(255&o.read_byte(m++))<<p,p+=8;if(c=u&x,l=n,d=r,z=3*(d+c),0!==(f=l[z]))for(;;){if(u>>=l[z+1],p-=l[z+1],16&f){for(f&=15,v=l[z+2]+(u&S[f]),u>>=f,p-=f;p<15;)h--,u|=(255&o.read_byte(m++))<<p,p+=8;for(c=u&b,l=i,d=s,z=3*(d+c),f=l[z];;){if(u>>=l[z+1],p-=l[z+1],16&f){for(f&=15;p<f;)h--,u|=(255&o.read_byte(m++))<<p,p+=8;if(y=l[z+2]+(u&S[f]),u>>=f,p-=f,g-=v,w>=y)k=w-y,w-k>0&&2>w-k?(a.win[w++]=a.win[k++],a.win[w++]=a.win[k++],v-=2):(a.win.set(a.win.subarray(k,k+2),w),w+=2,k+=2,v-=2);else{k=w-y;do{k+=a.end}while(k<0);if(f=a.end-k,v>f){if(v-=f,w-k>0&&f>w-k)do{a.win[w++]=a.win[k++]}while(0!=--f);else a.win.set(a.win.subarray(k,k+f),w),w+=f,k+=f,f=0;k=0}}if(w-k>0&&v>w-k)do{a.win[w++]=a.win[k++]}while(0!=--v);else a.win.set(a.win.subarray(k,k+v),w),w+=v,k+=v,v=0;break}if(64&f)return o.msg=\"invalid distance code\",v=o.avail_in-h,v=p>>3<v?p>>3:v,h+=v,m-=v,p-=v<<3,a.bitb=u,a.bitk=p,o.avail_in=h,o.total_in+=m-o.next_in_index,o.next_in_index=m,a.write=w,_;c+=l[z+2],c+=u&S[f],z=3*(d+c),f=l[z]}break}if(64&f)return 32&f?(v=o.avail_in-h,v=p>>3<v?p>>3:v,h+=v,m-=v,p-=v<<3,a.bitb=u,a.bitk=p,o.avail_in=h,o.total_in+=m-o.next_in_index,o.next_in_index=m,a.write=w,1):(o.msg=\"invalid literal/length code\",v=o.avail_in-h,v=p>>3<v?p>>3:v,h+=v,m-=v,p-=v<<3,a.bitb=u,a.bitk=p,o.avail_in=h,o.total_in+=m-o.next_in_index,o.next_in_index=m,a.write=w,_);if(c+=l[z+2],c+=u&S[f],z=3*(d+c),0===(f=l[z])){u>>=l[z+1],p-=l[z+1],a.win[w++]=l[z+2],g--;break}}else u>>=l[z+1],p-=l[z+1],a.win[w++]=l[z+2],g--}while(g>=258&&h>=10);return v=o.avail_in-h,v=p>>3<v?p>>3:v,h+=v,m-=v,p-=v<<3,a.bitb=u,a.bitk=p,o.avail_in=h,o.total_in+=m-o.next_in_index,o.next_in_index=m,a.write=w,0}e.init=function(e,s,a,o,c,l){t=0,f=e,u=s,r=a,p=o,i=c,m=l,n=null},e.proc=function(e,w,g){let x,b,v,k,z,A,C,D=0,U=0,E=0;for(E=w.next_in_index,k=w.avail_in,D=e.bitb,U=e.bitk,z=e.write,A=z<e.read?e.read-z-1:e.end-z;;)switch(t){case 0:if(A>=258&&k>=10&&(e.bitb=D,e.bitk=U,w.avail_in=k,w.total_in+=E-w.next_in_index,w.next_in_index=E,e.write=z,g=h(f,u,r,p,i,m,e,w),E=w.next_in_index,k=w.avail_in,D=e.bitb,U=e.bitk,z=e.write,A=z<e.read?e.read-z-1:e.end-z,0!=g)){t=1==g?7:9;break}o=f,n=r,a=p,t=1;case 1:for(x=o;U<x;){if(0===k)return e.bitb=D,e.bitk=U,w.avail_in=k,w.total_in+=E-w.next_in_index,w.next_in_index=E,e.write=z,e.inflate_flush(w,g);g=0,k--,D|=(255&w.read_byte(E++))<<U,U+=8}if(b=3*(a+(D&S[x])),D>>>=n[b+1],U-=n[b+1],v=n[b],0===v){c=n[b+2],t=6;break}if(16&v){l=15&v,s=n[b+2],t=2;break}if(!(64&v)){o=v,a=b/3+n[b+2];break}if(32&v){t=7;break}return t=9,w.msg=\"invalid literal/length code\",g=_,e.bitb=D,e.bitk=U,w.avail_in=k,w.total_in+=E-w.next_in_index,w.next_in_index=E,e.write=z,e.inflate_flush(w,g);case 2:for(x=l;U<x;){if(0===k)return e.bitb=D,e.bitk=U,w.avail_in=k,w.total_in+=E-w.next_in_index,w.next_in_index=E,e.write=z,e.inflate_flush(w,g);g=0,k--,D|=(255&w.read_byte(E++))<<U,U+=8}s+=D&S[x],D>>=x,U-=x,o=u,n=i,a=m,t=3;case 3:for(x=o;U<x;){if(0===k)return e.bitb=D,e.bitk=U,w.avail_in=k,w.total_in+=E-w.next_in_index,w.next_in_index=E,e.write=z,e.inflate_flush(w,g);g=0,k--,D|=(255&w.read_byte(E++))<<U,U+=8}if(b=3*(a+(D&S[x])),D>>=n[b+1],U-=n[b+1],v=n[b],16&v){l=15&v,d=n[b+2],t=4;break}if(!(64&v)){o=v,a=b/3+n[b+2];break}return t=9,w.msg=\"invalid distance code\",g=_,e.bitb=D,e.bitk=U,w.avail_in=k,w.total_in+=E-w.next_in_index,w.next_in_index=E,e.write=z,e.inflate_flush(w,g);case 4:for(x=l;U<x;){if(0===k)return e.bitb=D,e.bitk=U,w.avail_in=k,w.total_in+=E-w.next_in_index,w.next_in_index=E,e.write=z,e.inflate_flush(w,g);g=0,k--,D|=(255&w.read_byte(E++))<<U,U+=8}d+=D&S[x],D>>=x,U-=x,t=5;case 5:for(C=z-d;C<0;)C+=e.end;for(;0!==s;){if(0===A&&(z==e.end&&0!==e.read&&(z=0,A=z<e.read?e.read-z-1:e.end-z),0===A&&(e.write=z,g=e.inflate_flush(w,g),z=e.write,A=z<e.read?e.read-z-1:e.end-z,z==e.end&&0!==e.read&&(z=0,A=z<e.read?e.read-z-1:e.end-z),0===A)))return e.bitb=D,e.bitk=U,w.avail_in=k,w.total_in+=E-w.next_in_index,w.next_in_index=E,e.write=z,e.inflate_flush(w,g);e.win[z++]=e.win[C++],A--,C==e.end&&(C=0),s--}t=0;break;case 6:if(0===A&&(z==e.end&&0!==e.read&&(z=0,A=z<e.read?e.read-z-1:e.end-z),0===A&&(e.write=z,g=e.inflate_flush(w,g),z=e.write,A=z<e.read?e.read-z-1:e.end-z,z==e.end&&0!==e.read&&(z=0,A=z<e.read?e.read-z-1:e.end-z),0===A)))return e.bitb=D,e.bitk=U,w.avail_in=k,w.total_in+=E-w.next_in_index,w.next_in_index=E,e.write=z,e.inflate_flush(w,g);g=0,e.win[z++]=c,A--,t=0;break;case 7:if(U>7&&(U-=8,k++,E--),e.write=z,g=e.inflate_flush(w,g),z=e.write,A=z<e.read?e.read-z-1:e.end-z,e.read!=e.write)return e.bitb=D,e.bitk=U,w.avail_in=k,w.total_in+=E-w.next_in_index,w.next_in_index=E,e.write=z,e.inflate_flush(w,g);t=8;case 8:return g=1,e.bitb=D,e.bitk=U,w.avail_in=k,w.total_in+=E-w.next_in_index,w.next_in_index=E,e.write=z,e.inflate_flush(w,g);case 9:return g=_,e.bitb=D,e.bitk=U,w.avail_in=k,w.total_in+=E-w.next_in_index,w.next_in_index=E,e.write=z,e.inflate_flush(w,g);default:return g=y,e.bitb=D,e.bitk=U,w.avail_in=k,w.total_in+=E-w.next_in_index,w.next_in_index=E,e.write=z,e.inflate_flush(w,g)}},e.free=function(){}}const q=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];function T(e,t){const n=this;let r,i=0,s=0,a=0,o=0;const c=[0],l=[0],d=new j;let f=0,u=new Int32Array(4320);const p=new F;n.bitk=0,n.bitb=0,n.win=new Uint8Array(t),n.end=t,n.read=0,n.write=0,n.reset=function(e,t){t&&(t[0]=0),6==i&&d.free(e),i=0,n.bitk=0,n.bitb=0,n.read=n.write=0},n.reset(e,null),n.inflate_flush=function(e,t){let r,i,s;return i=e.next_out_index,s=n.read,r=(s<=n.write?n.write:n.end)-s,r>e.avail_out&&(r=e.avail_out),0!==r&&t==k&&(t=0),e.avail_out-=r,e.total_out+=r,e.next_out.set(n.win.subarray(s,s+r),i),i+=r,s+=r,s==n.end&&(s=0,n.write==n.end&&(n.write=0),r=n.write-s,r>e.avail_out&&(r=e.avail_out),0!==r&&t==k&&(t=0),e.avail_out-=r,e.total_out+=r,e.next_out.set(n.win.subarray(s,s+r),i),i+=r,s+=r),e.next_out_index=i,n.read=s,t},n.proc=function(e,t){let m,h,w,g,x,b,v,k;for(g=e.next_in_index,x=e.avail_in,h=n.bitb,w=n.bitk,b=n.write,v=b<n.read?n.read-b-1:n.end-b;;){let z,A,C,D,U,E,W,j;switch(i){case 0:for(;w<3;){if(0===x)return n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);t=0,x--,h|=(255&e.read_byte(g++))<<w,w+=8}switch(m=7&h,f=1&m,m>>>1){case 0:h>>>=3,w-=3,m=7&w,h>>>=m,w-=m,i=1;break;case 1:z=[],A=[],C=[[]],D=[[]],F.inflate_trees_fixed(z,A,C,D),d.init(z[0],A[0],C[0],0,D[0],0),h>>>=3,w-=3,i=6;break;case 2:h>>>=3,w-=3,i=3;break;case 3:return h>>>=3,w-=3,i=9,e.msg=\"invalid block type\",t=_,n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t)}break;case 1:for(;w<32;){if(0===x)return n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);t=0,x--,h|=(255&e.read_byte(g++))<<w,w+=8}if((~h>>>16&65535)!=(65535&h))return i=9,e.msg=\"invalid stored block lengths\",t=_,n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);s=65535&h,h=w=0,i=0!==s?2:0!==f?7:0;break;case 2:if(0===x)return n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);if(0===v&&(b==n.end&&0!==n.read&&(b=0,v=b<n.read?n.read-b-1:n.end-b),0===v&&(n.write=b,t=n.inflate_flush(e,t),b=n.write,v=b<n.read?n.read-b-1:n.end-b,b==n.end&&0!==n.read&&(b=0,v=b<n.read?n.read-b-1:n.end-b),0===v)))return n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);if(t=0,m=s,m>x&&(m=x),m>v&&(m=v),n.win.set(e.read_buf(g,m),b),g+=m,x-=m,b+=m,v-=m,0!=(s-=m))break;i=0!==f?7:0;break;case 3:for(;w<14;){if(0===x)return n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);t=0,x--,h|=(255&e.read_byte(g++))<<w,w+=8}if(a=m=16383&h,(31&m)>29||(m>>5&31)>29)return i=9,e.msg=\"too many length or distance symbols\",t=_,n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);if(m=258+(31&m)+(m>>5&31),!r||r.length<m)r=[];else for(k=0;k<m;k++)r[k]=0;h>>>=14,w-=14,o=0,i=4;case 4:for(;o<4+(a>>>10);){for(;w<3;){if(0===x)return n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);t=0,x--,h|=(255&e.read_byte(g++))<<w,w+=8}r[q[o++]]=7&h,h>>>=3,w-=3}for(;o<19;)r[q[o++]]=0;if(c[0]=7,m=p.inflate_trees_bits(r,c,l,u,e),0!=m)return(t=m)==_&&(r=null,i=9),n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);o=0,i=5;case 5:for(;m=a,!(o>=258+(31&m)+(m>>5&31));){let s,d;for(m=c[0];w<m;){if(0===x)return n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);t=0,x--,h|=(255&e.read_byte(g++))<<w,w+=8}if(m=u[3*(l[0]+(h&S[m]))+1],d=u[3*(l[0]+(h&S[m]))+2],d<16)h>>>=m,w-=m,r[o++]=d;else{for(k=18==d?7:d-14,s=18==d?11:3;w<m+k;){if(0===x)return n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);t=0,x--,h|=(255&e.read_byte(g++))<<w,w+=8}if(h>>>=m,w-=m,s+=h&S[k],h>>>=k,w-=k,k=o,m=a,k+s>258+(31&m)+(m>>5&31)||16==d&&k<1)return r=null,i=9,e.msg=\"invalid bit length repeat\",t=_,n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);d=16==d?r[k-1]:0;do{r[k++]=d}while(0!=--s);o=k}}if(l[0]=-1,U=[],E=[],W=[],j=[],U[0]=9,E[0]=6,m=a,m=p.inflate_trees_dynamic(257+(31&m),1+(m>>5&31),r,U,E,W,j,u,e),0!=m)return m==_&&(r=null,i=9),t=m,n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);d.init(U[0],E[0],u,W[0],u,j[0]),i=6;case 6:if(n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,1!=(t=d.proc(n,e,t)))return n.inflate_flush(e,t);if(t=0,d.free(e),g=e.next_in_index,x=e.avail_in,h=n.bitb,w=n.bitk,b=n.write,v=b<n.read?n.read-b-1:n.end-b,0===f){i=0;break}i=7;case 7:if(n.write=b,t=n.inflate_flush(e,t),b=n.write,v=b<n.read?n.read-b-1:n.end-b,n.read!=n.write)return n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);i=8;case 8:return t=1,n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);case 9:return t=_,n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t);default:return t=y,n.bitb=h,n.bitk=w,e.avail_in=x,e.total_in+=g-e.next_in_index,e.next_in_index=g,n.write=b,n.inflate_flush(e,t)}}},n.free=function(e){n.reset(e,null),n.win=null,u=null},n.set_dictionary=function(e,t,r){n.win.set(e.subarray(t,t+r),0),n.read=n.write=r},n.sync_point=function(){return 1==i?1:0}}const O=13,R=[0,0,255,255];function L(){const e=this;function t(e){return e&&e.istate?(e.total_in=e.total_out=0,e.msg=null,e.istate.mode=7,e.istate.blocks.reset(e,null),0):y}e.mode=0,e.method=0,e.was=[0],e.need=0,e.marker=0,e.wbits=0,e.inflateEnd=function(t){return e.blocks&&e.blocks.free(t),e.blocks=null,0},e.inflateInit=function(n,r){return n.msg=null,e.blocks=null,r<8||r>15?(e.inflateEnd(n),y):(e.wbits=r,n.istate.blocks=new T(n,1<<r),t(n),0)},e.inflate=function(e,t){let n,r;if(!e||!e.istate||!e.next_in)return y;const i=e.istate;for(t=4==t?k:0,n=k;;)switch(i.mode){case 0:if(0===e.avail_in)return n;if(n=t,e.avail_in--,e.total_in++,8!=(15&(i.method=e.read_byte(e.next_in_index++)))){i.mode=O,e.msg=\"unknown compression method\",i.marker=5;break}if(8+(i.method>>4)>i.wbits){i.mode=O,e.msg=\"invalid win size\",i.marker=5;break}i.mode=1;case 1:if(0===e.avail_in)return n;if(n=t,e.avail_in--,e.total_in++,r=255&e.read_byte(e.next_in_index++),((i.method<<8)+r)%31!=0){i.mode=O,e.msg=\"incorrect header check\",i.marker=5;break}if(!(32&r)){i.mode=7;break}i.mode=2;case 2:if(0===e.avail_in)return n;n=t,e.avail_in--,e.total_in++,i.need=(255&e.read_byte(e.next_in_index++))<<24&4278190080,i.mode=3;case 3:if(0===e.avail_in)return n;n=t,e.avail_in--,e.total_in++,i.need+=(255&e.read_byte(e.next_in_index++))<<16&16711680,i.mode=4;case 4:if(0===e.avail_in)return n;n=t,e.avail_in--,e.total_in++,i.need+=(255&e.read_byte(e.next_in_index++))<<8&65280,i.mode=5;case 5:return 0===e.avail_in?n:(n=t,e.avail_in--,e.total_in++,i.need+=255&e.read_byte(e.next_in_index++),i.mode=6,2);case 6:return i.mode=O,e.msg=\"need dictionary\",i.marker=0,y;case 7:if(n=i.blocks.proc(e,n),n==_){i.mode=O,i.marker=0;break}if(0==n&&(n=t),1!=n)return n;n=t,i.blocks.reset(e,i.was),i.mode=12;case 12:return e.avail_in=0,1;case O:return _;default:return y}},e.inflateSetDictionary=function(e,t,n){let r=0,i=n;if(!e||!e.istate||6!=e.istate.mode)return y;const s=e.istate;return i>=1<<s.wbits&&(i=(1<<s.wbits)-1,r=n-i),s.blocks.set_dictionary(t,r,i),s.mode=7,0},e.inflateSync=function(e){let n,r,i,s,a;if(!e||!e.istate)return y;const o=e.istate;if(o.mode!=O&&(o.mode=O,o.marker=0),0===(n=e.avail_in))return k;for(r=e.next_in_index,i=o.marker;0!==n&&i<4;)e.read_byte(r)==R[i]?i++:i=0!==e.read_byte(r)?0:4-i,r++,n--;return e.total_in+=r-e.next_in_index,e.next_in_index=r,e.avail_in=n,o.marker=i,4!=i?_:(s=e.total_in,a=e.total_out,t(e),e.total_in=s,e.total_out=a,o.mode=7,0)},e.inflateSyncPoint=function(e){return e&&e.istate&&e.istate.blocks?e.istate.blocks.sync_point():y}}function I(){}I.prototype={inflateInit(e){const t=this;return t.istate=new L,e||(e=15),t.istate.inflateInit(t,e)},inflate(e){const t=this;return t.istate?t.istate.inflate(t,e):y},inflateEnd(){const e=this;if(!e.istate)return y;const t=e.istate.inflateEnd(e);return e.istate=null,t},inflateSync(){const e=this;return e.istate?e.istate.inflateSync(e):y},inflateSetDictionary(e,t){const n=this;return n.istate?n.istate.inflateSetDictionary(n,e,t):y},read_byte(e){return this.next_in[e]},read_buf(e,t){return this.next_in.subarray(e,e+t)}};const M=4294967295,P=65535,B=67324752,H=134695760,N=H,V=33639248,Z=101010256,K=101075792,G=117853008,X=22,J=39169,Y=21589,Q=6534,$=2048,ee=\"/\",te=new Date(2107,11,31),ne=new Date(1980,0,1),re=void 0,ie=\"undefined\",se=\"function\";class ae{constructor(e){return class extends TransformStream{constructor(t,n){const r=new e(n);super({transform(e,t){t.enqueue(r.append(e))},flush(e){const t=r.flush();t&&e.enqueue(t)}})}}}}let oe=2;try{typeof navigator!=ie&&navigator.hardwareConcurrency&&(oe=navigator.hardwareConcurrency)}catch(e){}const ce={chunkSize:524288,maxWorkers:oe,terminateWorkerTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,workerScripts:re,CompressionStreamNative:typeof CompressionStream!=ie&&CompressionStream,DecompressionStreamNative:typeof DecompressionStream!=ie&&DecompressionStream},le=Object.assign({},ce);function de(){return le}function fe(e){return Math.max(e.chunkSize,64)}function ue(e){const{baseURL:t,chunkSize:n,maxWorkers:r,terminateWorkerTimeout:i,useCompressionStream:s,useWebWorkers:a,Deflate:o,Inflate:c,CompressionStream:l,DecompressionStream:d,workerScripts:f}=e;if(pe(\"baseURL\",t),pe(\"chunkSize\",n),pe(\"maxWorkers\",r),pe(\"terminateWorkerTimeout\",i),pe(\"useCompressionStream\",s),pe(\"useWebWorkers\",a),o&&(le.CompressionStream=new ae(o)),c&&(le.DecompressionStream=new ae(c)),pe(\"CompressionStream\",l),pe(\"DecompressionStream\",d),f!==re){const{deflate:e,inflate:t}=f;if((e||t)&&(le.workerScripts||(le.workerScripts={})),e){if(!Array.isArray(e))throw new Error(\"workerScripts.deflate must be an array\");le.workerScripts.deflate=e}if(t){if(!Array.isArray(t))throw new Error(\"workerScripts.inflate must be an array\");le.workerScripts.inflate=t}}}function pe(e,t){t!==re&&(le[e]=t)}const me={application:{\"andrew-inset\":\"ez\",annodex:\"anx\",\"atom+xml\":\"atom\",\"atomcat+xml\":\"atomcat\",\"atomserv+xml\":\"atomsrv\",bbolin:\"lin\",\"cu-seeme\":\"cu\",\"davmount+xml\":\"davmount\",dsptype:\"tsp\",ecmascript:[\"es\",\"ecma\"],futuresplash:\"spl\",hta:\"hta\",\"java-archive\":\"jar\",\"java-serialized-object\":\"ser\",\"java-vm\":\"class\",m3g:\"m3g\",\"mac-binhex40\":\"hqx\",mathematica:[\"nb\",\"ma\",\"mb\"],msaccess:\"mdb\",msword:[\"doc\",\"dot\",\"wiz\"],mxf:\"mxf\",oda:\"oda\",ogg:\"ogx\",pdf:\"pdf\",\"pgp-keys\":\"key\",\"pgp-signature\":[\"asc\",\"sig\"],\"pics-rules\":\"prf\",postscript:[\"ps\",\"ai\",\"eps\",\"epsi\",\"epsf\",\"eps2\",\"eps3\"],rar:\"rar\",\"rdf+xml\":\"rdf\",\"rss+xml\":\"rss\",rtf:\"rtf\",\"xhtml+xml\":[\"xhtml\",\"xht\"],xml:[\"xml\",\"xsl\",\"xsd\",\"xpdl\"],\"xspf+xml\":\"xspf\",zip:\"zip\",\"vnd.android.package-archive\":\"apk\",\"vnd.cinderella\":\"cdy\",\"vnd.google-earth.kml+xml\":\"kml\",\"vnd.google-earth.kmz\":\"kmz\",\"vnd.mozilla.xul+xml\":\"xul\",\"vnd.ms-excel\":[\"xls\",\"xlb\",\"xlt\",\"xlm\",\"xla\",\"xlc\",\"xlw\"],\"vnd.ms-pki.seccat\":\"cat\",\"vnd.ms-pki.stl\":\"stl\",\"vnd.ms-powerpoint\":[\"ppt\",\"pps\",\"pot\",\"ppa\",\"pwz\"],\"vnd.oasis.opendocument.chart\":\"odc\",\"vnd.oasis.opendocument.database\":\"odb\",\"vnd.oasis.opendocument.formula\":\"odf\",\"vnd.oasis.opendocument.graphics\":\"odg\",\"vnd.oasis.opendocument.graphics-template\":\"otg\",\"vnd.oasis.opendocument.image\":\"odi\",\"vnd.oasis.opendocument.presentation\":\"odp\",\"vnd.oasis.opendocument.presentation-template\":\"otp\",\"vnd.oasis.opendocument.spreadsheet\":\"ods\",\"vnd.oasis.opendocument.spreadsheet-template\":\"ots\",\"vnd.oasis.opendocument.text\":\"odt\",\"vnd.oasis.opendocument.text-master\":[\"odm\",\"otm\"],\"vnd.oasis.opendocument.text-template\":\"ott\",\"vnd.oasis.opendocument.text-web\":\"oth\",\"vnd.openxmlformats-officedocument.spreadsheetml.sheet\":\"xlsx\",\"vnd.openxmlformats-officedocument.spreadsheetml.template\":\"xltx\",\"vnd.openxmlformats-officedocument.presentationml.presentation\":\"pptx\",\"vnd.openxmlformats-officedocument.presentationml.slideshow\":\"ppsx\",\"vnd.openxmlformats-officedocument.presentationml.template\":\"potx\",\"vnd.openxmlformats-officedocument.wordprocessingml.document\":\"docx\",\"vnd.openxmlformats-officedocument.wordprocessingml.template\":\"dotx\",\"vnd.smaf\":\"mmf\",\"vnd.stardivision.calc\":\"sdc\",\"vnd.stardivision.chart\":\"sds\",\"vnd.stardivision.draw\":\"sda\",\"vnd.stardivision.impress\":\"sdd\",\"vnd.stardivision.math\":[\"sdf\",\"smf\"],\"vnd.stardivision.writer\":[\"sdw\",\"vor\"],\"vnd.stardivision.writer-global\":\"sgl\",\"vnd.sun.xml.calc\":\"sxc\",\"vnd.sun.xml.calc.template\":\"stc\",\"vnd.sun.xml.draw\":\"sxd\",\"vnd.sun.xml.draw.template\":\"std\",\"vnd.sun.xml.impress\":\"sxi\",\"vnd.sun.xml.impress.template\":\"sti\",\"vnd.sun.xml.math\":\"sxm\",\"vnd.sun.xml.writer\":\"sxw\",\"vnd.sun.xml.writer.global\":\"sxg\",\"vnd.sun.xml.writer.template\":\"stw\",\"vnd.symbian.install\":[\"sis\",\"sisx\"],\"vnd.visio\":[\"vsd\",\"vst\",\"vss\",\"vsw\",\"vsdx\",\"vssx\",\"vstx\",\"vssm\",\"vstm\"],\"vnd.wap.wbxml\":\"wbxml\",\"vnd.wap.wmlc\":\"wmlc\",\"vnd.wap.wmlscriptc\":\"wmlsc\",\"vnd.wordperfect\":\"wpd\",\"vnd.wordperfect5.1\":\"wp5\",\"x-123\":\"wk\",\"x-7z-compressed\":\"7z\",\"x-abiword\":\"abw\",\"x-apple-diskimage\":\"dmg\",\"x-bcpio\":\"bcpio\",\"x-bittorrent\":\"torrent\",\"x-cbr\":[\"cbr\",\"cba\",\"cbt\",\"cb7\"],\"x-cbz\":\"cbz\",\"x-cdf\":[\"cdf\",\"cda\"],\"x-cdlink\":\"vcd\",\"x-chess-pgn\":\"pgn\",\"x-cpio\":\"cpio\",\"x-csh\":\"csh\",\"x-director\":[\"dir\",\"dxr\",\"cst\",\"cct\",\"cxt\",\"w3d\",\"fgd\",\"swa\"],\"x-dms\":\"dms\",\"x-doom\":\"wad\",\"x-dvi\":\"dvi\",\"x-httpd-eruby\":\"rhtml\",\"x-font\":\"pcf.Z\",\"x-freemind\":\"mm\",\"x-gnumeric\":\"gnumeric\",\"x-go-sgf\":\"sgf\",\"x-graphing-calculator\":\"gcf\",\"x-gtar\":[\"gtar\",\"taz\"],\"x-hdf\":\"hdf\",\"x-httpd-php\":[\"phtml\",\"pht\",\"php\"],\"x-httpd-php-source\":\"phps\",\"x-httpd-php3\":\"php3\",\"x-httpd-php3-preprocessed\":\"php3p\",\"x-httpd-php4\":\"php4\",\"x-httpd-php5\":\"php5\",\"x-ica\":\"ica\",\"x-info\":\"info\",\"x-internet-signup\":[\"ins\",\"isp\"],\"x-iphone\":\"iii\",\"x-iso9660-image\":\"iso\",\"x-java-jnlp-file\":\"jnlp\",\"x-jmol\":\"jmz\",\"x-killustrator\":\"kil\",\"x-latex\":\"latex\",\"x-lyx\":\"lyx\",\"x-lzx\":\"lzx\",\"x-maker\":[\"frm\",\"fb\",\"fbdoc\"],\"x-ms-wmd\":\"wmd\",\"x-msdos-program\":[\"com\",\"exe\",\"bat\",\"dll\"],\"x-netcdf\":[\"nc\"],\"x-ns-proxy-autoconfig\":[\"pac\",\"dat\"],\"x-nwc\":\"nwc\",\"x-object\":\"o\",\"x-oz-application\":\"oza\",\"x-pkcs7-certreqresp\":\"p7r\",\"x-python-code\":[\"pyc\",\"pyo\"],\"x-qgis\":[\"qgs\",\"shp\",\"shx\"],\"x-quicktimeplayer\":\"qtl\",\"x-redhat-package-manager\":[\"rpm\",\"rpa\"],\"x-ruby\":\"rb\",\"x-sh\":\"sh\",\"x-shar\":\"shar\",\"x-shockwave-flash\":[\"swf\",\"swfl\"],\"x-silverlight\":\"scr\",\"x-stuffit\":\"sit\",\"x-sv4cpio\":\"sv4cpio\",\"x-sv4crc\":\"sv4crc\",\"x-tar\":\"tar\",\"x-tex-gf\":\"gf\",\"x-tex-pk\":\"pk\",\"x-texinfo\":[\"texinfo\",\"texi\"],\"x-trash\":[\"~\",\"%\",\"bak\",\"old\",\"sik\"],\"x-ustar\":\"ustar\",\"x-wais-source\":\"src\",\"x-wingz\":\"wz\",\"x-x509-ca-cert\":[\"crt\",\"der\",\"cer\"],\"x-xcf\":\"xcf\",\"x-xfig\":\"fig\",\"x-xpinstall\":\"xpi\",applixware:\"aw\",\"atomsvc+xml\":\"atomsvc\",\"ccxml+xml\":\"ccxml\",\"cdmi-capability\":\"cdmia\",\"cdmi-container\":\"cdmic\",\"cdmi-domain\":\"cdmid\",\"cdmi-object\":\"cdmio\",\"cdmi-queue\":\"cdmiq\",\"docbook+xml\":\"dbk\",\"dssc+der\":\"dssc\",\"dssc+xml\":\"xdssc\",\"emma+xml\":\"emma\",\"epub+zip\":\"epub\",exi:\"exi\",\"font-tdpfr\":\"pfr\",\"gml+xml\":\"gml\",\"gpx+xml\":\"gpx\",gxf:\"gxf\",hyperstudio:\"stk\",\"inkml+xml\":[\"ink\",\"inkml\"],ipfix:\"ipfix\",\"jsonml+json\":\"jsonml\",\"lost+xml\":\"lostxml\",\"mads+xml\":\"mads\",marc:\"mrc\",\"marcxml+xml\":\"mrcx\",\"mathml+xml\":[\"mathml\",\"mml\"],mbox:\"mbox\",\"mediaservercontrol+xml\":\"mscml\",\"metalink+xml\":\"metalink\",\"metalink4+xml\":\"meta4\",\"mets+xml\":\"mets\",\"mods+xml\":\"mods\",mp21:[\"m21\",\"mp21\"],mp4:\"mp4s\",\"oebps-package+xml\":\"opf\",\"omdoc+xml\":\"omdoc\",onenote:[\"onetoc\",\"onetoc2\",\"onetmp\",\"onepkg\"],oxps:\"oxps\",\"patch-ops-error+xml\":\"xer\",\"pgp-encrypted\":\"pgp\",pkcs10:\"p10\",\"pkcs7-mime\":[\"p7m\",\"p7c\"],\"pkcs7-signature\":\"p7s\",pkcs8:\"p8\",\"pkix-attr-cert\":\"ac\",\"pkix-crl\":\"crl\",\"pkix-pkipath\":\"pkipath\",pkixcmp:\"pki\",\"pls+xml\":\"pls\",\"prs.cww\":\"cww\",\"pskc+xml\":\"pskcxml\",\"reginfo+xml\":\"rif\",\"relax-ng-compact-syntax\":\"rnc\",\"resource-lists+xml\":\"rl\",\"resource-lists-diff+xml\":\"rld\",\"rls-services+xml\":\"rs\",\"rpki-ghostbusters\":\"gbr\",\"rpki-manifest\":\"mft\",\"rpki-roa\":\"roa\",\"rsd+xml\":\"rsd\",\"sbml+xml\":\"sbml\",\"scvp-cv-request\":\"scq\",\"scvp-cv-response\":\"scs\",\"scvp-vp-request\":\"spq\",\"scvp-vp-response\":\"spp\",sdp:\"sdp\",\"set-payment-initiation\":\"setpay\",\"set-registration-initiation\":\"setreg\",\"shf+xml\":\"shf\",\"sparql-query\":\"rq\",\"sparql-results+xml\":\"srx\",srgs:\"gram\",\"srgs+xml\":\"grxml\",\"sru+xml\":\"sru\",\"ssdl+xml\":\"ssdl\",\"ssml+xml\":\"ssml\",\"tei+xml\":[\"tei\",\"teicorpus\"],\"thraud+xml\":\"tfi\",\"timestamped-data\":\"tsd\",\"vnd.3gpp.pic-bw-large\":\"plb\",\"vnd.3gpp.pic-bw-small\":\"psb\",\"vnd.3gpp.pic-bw-var\":\"pvb\",\"vnd.3gpp2.tcap\":\"tcap\",\"vnd.3m.post-it-notes\":\"pwn\",\"vnd.accpac.simply.aso\":\"aso\",\"vnd.accpac.simply.imp\":\"imp\",\"vnd.acucobol\":\"acu\",\"vnd.acucorp\":[\"atc\",\"acutc\"],\"vnd.adobe.air-application-installer-package+zip\":\"air\",\"vnd.adobe.formscentral.fcdt\":\"fcdt\",\"vnd.adobe.fxp\":[\"fxp\",\"fxpl\"],\"vnd.adobe.xdp+xml\":\"xdp\",\"vnd.adobe.xfdf\":\"xfdf\",\"vnd.ahead.space\":\"ahead\",\"vnd.airzip.filesecure.azf\":\"azf\",\"vnd.airzip.filesecure.azs\":\"azs\",\"vnd.amazon.ebook\":\"azw\",\"vnd.americandynamics.acc\":\"acc\",\"vnd.amiga.ami\":\"ami\",\"vnd.anser-web-certificate-issue-initiation\":\"cii\",\"vnd.anser-web-funds-transfer-initiation\":\"fti\",\"vnd.antix.game-component\":\"atx\",\"vnd.apple.installer+xml\":\"mpkg\",\"vnd.apple.mpegurl\":\"m3u8\",\"vnd.aristanetworks.swi\":\"swi\",\"vnd.astraea-software.iota\":\"iota\",\"vnd.audiograph\":\"aep\",\"vnd.blueice.multipass\":\"mpm\",\"vnd.bmi\":\"bmi\",\"vnd.businessobjects\":\"rep\",\"vnd.chemdraw+xml\":\"cdxml\",\"vnd.chipnuts.karaoke-mmd\":\"mmd\",\"vnd.claymore\":\"cla\",\"vnd.cloanto.rp9\":\"rp9\",\"vnd.clonk.c4group\":[\"c4g\",\"c4d\",\"c4f\",\"c4p\",\"c4u\"],\"vnd.cluetrust.cartomobile-config\":\"c11amc\",\"vnd.cluetrust.cartomobile-config-pkg\":\"c11amz\",\"vnd.commonspace\":\"csp\",\"vnd.contact.cmsg\":\"cdbcmsg\",\"vnd.cosmocaller\":\"cmc\",\"vnd.crick.clicker\":\"clkx\",\"vnd.crick.clicker.keyboard\":\"clkk\",\"vnd.crick.clicker.palette\":\"clkp\",\"vnd.crick.clicker.template\":\"clkt\",\"vnd.crick.clicker.wordbank\":\"clkw\",\"vnd.criticaltools.wbs+xml\":\"wbs\",\"vnd.ctc-posml\":\"pml\",\"vnd.cups-ppd\":\"ppd\",\"vnd.curl.car\":\"car\",\"vnd.curl.pcurl\":\"pcurl\",\"vnd.dart\":\"dart\",\"vnd.data-vision.rdz\":\"rdz\",\"vnd.dece.data\":[\"uvf\",\"uvvf\",\"uvd\",\"uvvd\"],\"vnd.dece.ttml+xml\":[\"uvt\",\"uvvt\"],\"vnd.dece.unspecified\":[\"uvx\",\"uvvx\"],\"vnd.dece.zip\":[\"uvz\",\"uvvz\"],\"vnd.denovo.fcselayout-link\":\"fe_launch\",\"vnd.dna\":\"dna\",\"vnd.dolby.mlp\":\"mlp\",\"vnd.dpgraph\":\"dpg\",\"vnd.dreamfactory\":\"dfac\",\"vnd.ds-keypoint\":\"kpxx\",\"vnd.dvb.ait\":\"ait\",\"vnd.dvb.service\":\"svc\",\"vnd.dynageo\":\"geo\",\"vnd.ecowin.chart\":\"mag\",\"vnd.enliven\":\"nml\",\"vnd.epson.esf\":\"esf\",\"vnd.epson.msf\":\"msf\",\"vnd.epson.quickanime\":\"qam\",\"vnd.epson.salt\":\"slt\",\"vnd.epson.ssf\":\"ssf\",\"vnd.eszigno3+xml\":[\"es3\",\"et3\"],\"vnd.ezpix-album\":\"ez2\",\"vnd.ezpix-package\":\"ez3\",\"vnd.fdf\":\"fdf\",\"vnd.fdsn.mseed\":\"mseed\",\"vnd.fdsn.seed\":[\"seed\",\"dataless\"],\"vnd.flographit\":\"gph\",\"vnd.fluxtime.clip\":\"ftc\",\"vnd.framemaker\":[\"fm\",\"frame\",\"maker\",\"book\"],\"vnd.frogans.fnc\":\"fnc\",\"vnd.frogans.ltf\":\"ltf\",\"vnd.fsc.weblaunch\":\"fsc\",\"vnd.fujitsu.oasys\":\"oas\",\"vnd.fujitsu.oasys2\":\"oa2\",\"vnd.fujitsu.oasys3\":\"oa3\",\"vnd.fujitsu.oasysgp\":\"fg5\",\"vnd.fujitsu.oasysprs\":\"bh2\",\"vnd.fujixerox.ddd\":\"ddd\",\"vnd.fujixerox.docuworks\":\"xdw\",\"vnd.fujixerox.docuworks.binder\":\"xbd\",\"vnd.fuzzysheet\":\"fzs\",\"vnd.genomatix.tuxedo\":\"txd\",\"vnd.geogebra.file\":\"ggb\",\"vnd.geogebra.tool\":\"ggt\",\"vnd.geometry-explorer\":[\"gex\",\"gre\"],\"vnd.geonext\":\"gxt\",\"vnd.geoplan\":\"g2w\",\"vnd.geospace\":\"g3w\",\"vnd.gmx\":\"gmx\",\"vnd.grafeq\":[\"gqf\",\"gqs\"],\"vnd.groove-account\":\"gac\",\"vnd.groove-help\":\"ghf\",\"vnd.groove-identity-message\":\"gim\",\"vnd.groove-injector\":\"grv\",\"vnd.groove-tool-message\":\"gtm\",\"vnd.groove-tool-template\":\"tpl\",\"vnd.groove-vcard\":\"vcg\",\"vnd.hal+xml\":\"hal\",\"vnd.handheld-entertainment+xml\":\"zmm\",\"vnd.hbci\":\"hbci\",\"vnd.hhe.lesson-player\":\"les\",\"vnd.hp-hpgl\":\"hpgl\",\"vnd.hp-hpid\":\"hpid\",\"vnd.hp-hps\":\"hps\",\"vnd.hp-jlyt\":\"jlt\",\"vnd.hp-pcl\":\"pcl\",\"vnd.hp-pclxl\":\"pclxl\",\"vnd.hydrostatix.sof-data\":\"sfd-hdstx\",\"vnd.ibm.minipay\":\"mpy\",\"vnd.ibm.modcap\":[\"afp\",\"listafp\",\"list3820\"],\"vnd.ibm.rights-management\":\"irm\",\"vnd.ibm.secure-container\":\"sc\",\"vnd.iccprofile\":[\"icc\",\"icm\"],\"vnd.igloader\":\"igl\",\"vnd.immervision-ivp\":\"ivp\",\"vnd.immervision-ivu\":\"ivu\",\"vnd.insors.igm\":\"igm\",\"vnd.intercon.formnet\":[\"xpw\",\"xpx\"],\"vnd.intergeo\":\"i2g\",\"vnd.intu.qbo\":\"qbo\",\"vnd.intu.qfx\":\"qfx\",\"vnd.ipunplugged.rcprofile\":\"rcprofile\",\"vnd.irepository.package+xml\":\"irp\",\"vnd.is-xpr\":\"xpr\",\"vnd.isac.fcs\":\"fcs\",\"vnd.jam\":\"jam\",\"vnd.jcp.javame.midlet-rms\":\"rms\",\"vnd.jisp\":\"jisp\",\"vnd.joost.joda-archive\":\"joda\",\"vnd.kahootz\":[\"ktz\",\"ktr\"],\"vnd.kde.karbon\":\"karbon\",\"vnd.kde.kchart\":\"chrt\",\"vnd.kde.kformula\":\"kfo\",\"vnd.kde.kivio\":\"flw\",\"vnd.kde.kontour\":\"kon\",\"vnd.kde.kpresenter\":[\"kpr\",\"kpt\"],\"vnd.kde.kspread\":\"ksp\",\"vnd.kde.kword\":[\"kwd\",\"kwt\"],\"vnd.kenameaapp\":\"htke\",\"vnd.kidspiration\":\"kia\",\"vnd.kinar\":[\"kne\",\"knp\"],\"vnd.koan\":[\"skp\",\"skd\",\"skt\",\"skm\"],\"vnd.kodak-descriptor\":\"sse\",\"vnd.las.las+xml\":\"lasxml\",\"vnd.llamagraphics.life-balance.desktop\":\"lbd\",\"vnd.llamagraphics.life-balance.exchange+xml\":\"lbe\",\"vnd.lotus-1-2-3\":\"123\",\"vnd.lotus-approach\":\"apr\",\"vnd.lotus-freelance\":\"pre\",\"vnd.lotus-notes\":\"nsf\",\"vnd.lotus-organizer\":\"org\",\"vnd.lotus-screencam\":\"scm\",\"vnd.lotus-wordpro\":\"lwp\",\"vnd.macports.portpkg\":\"portpkg\",\"vnd.mcd\":\"mcd\",\"vnd.medcalcdata\":\"mc1\",\"vnd.mediastation.cdkey\":\"cdkey\",\"vnd.mfer\":\"mwf\",\"vnd.mfmp\":\"mfm\",\"vnd.micrografx.flo\":\"flo\",\"vnd.micrografx.igx\":\"igx\",\"vnd.mif\":\"mif\",\"vnd.mobius.daf\":\"daf\",\"vnd.mobius.dis\":\"dis\",\"vnd.mobius.mbk\":\"mbk\",\"vnd.mobius.mqy\":\"mqy\",\"vnd.mobius.msl\":\"msl\",\"vnd.mobius.plc\":\"plc\",\"vnd.mobius.txf\":\"txf\",\"vnd.mophun.application\":\"mpn\",\"vnd.mophun.certificate\":\"mpc\",\"vnd.ms-artgalry\":\"cil\",\"vnd.ms-cab-compressed\":\"cab\",\"vnd.ms-excel.addin.macroenabled.12\":\"xlam\",\"vnd.ms-excel.sheet.binary.macroenabled.12\":\"xlsb\",\"vnd.ms-excel.sheet.macroenabled.12\":\"xlsm\",\"vnd.ms-excel.template.macroenabled.12\":\"xltm\",\"vnd.ms-fontobject\":\"eot\",\"vnd.ms-htmlhelp\":\"chm\",\"vnd.ms-ims\":\"ims\",\"vnd.ms-lrm\":\"lrm\",\"vnd.ms-officetheme\":\"thmx\",\"vnd.ms-powerpoint.addin.macroenabled.12\":\"ppam\",\"vnd.ms-powerpoint.presentation.macroenabled.12\":\"pptm\",\"vnd.ms-powerpoint.slide.macroenabled.12\":\"sldm\",\"vnd.ms-powerpoint.slideshow.macroenabled.12\":\"ppsm\",\"vnd.ms-powerpoint.template.macroenabled.12\":\"potm\",\"vnd.ms-project\":[\"mpp\",\"mpt\"],\"vnd.ms-word.document.macroenabled.12\":\"docm\",\"vnd.ms-word.template.macroenabled.12\":\"dotm\",\"vnd.ms-works\":[\"wps\",\"wks\",\"wcm\",\"wdb\"],\"vnd.ms-wpl\":\"wpl\",\"vnd.ms-xpsdocument\":\"xps\",\"vnd.mseq\":\"mseq\",\"vnd.musician\":\"mus\",\"vnd.muvee.style\":\"msty\",\"vnd.mynfc\":\"taglet\",\"vnd.neurolanguage.nlu\":\"nlu\",\"vnd.nitf\":[\"ntf\",\"nitf\"],\"vnd.noblenet-directory\":\"nnd\",\"vnd.noblenet-sealer\":\"nns\",\"vnd.noblenet-web\":\"nnw\",\"vnd.nokia.n-gage.data\":\"ngdat\",\"vnd.nokia.n-gage.symbian.install\":\"n-gage\",\"vnd.nokia.radio-preset\":\"rpst\",\"vnd.nokia.radio-presets\":\"rpss\",\"vnd.novadigm.edm\":\"edm\",\"vnd.novadigm.edx\":\"edx\",\"vnd.novadigm.ext\":\"ext\",\"vnd.oasis.opendocument.chart-template\":\"otc\",\"vnd.oasis.opendocument.formula-template\":\"odft\",\"vnd.oasis.opendocument.image-template\":\"oti\",\"vnd.olpc-sugar\":\"xo\",\"vnd.oma.dd2+xml\":\"dd2\",\"vnd.openofficeorg.extension\":\"oxt\",\"vnd.openxmlformats-officedocument.presentationml.slide\":\"sldx\",\"vnd.osgeo.mapguide.package\":\"mgp\",\"vnd.osgi.dp\":\"dp\",\"vnd.osgi.subsystem\":\"esa\",\"vnd.palm\":[\"pdb\",\"pqa\",\"oprc\"],\"vnd.pawaafile\":\"paw\",\"vnd.pg.format\":\"str\",\"vnd.pg.osasli\":\"ei6\",\"vnd.picsel\":\"efif\",\"vnd.pmi.widget\":\"wg\",\"vnd.pocketlearn\":\"plf\",\"vnd.powerbuilder6\":\"pbd\",\"vnd.previewsystems.box\":\"box\",\"vnd.proteus.magazine\":\"mgz\",\"vnd.publishare-delta-tree\":\"qps\",\"vnd.pvi.ptid1\":\"ptid\",\"vnd.quark.quarkxpress\":[\"qxd\",\"qxt\",\"qwd\",\"qwt\",\"qxl\",\"qxb\"],\"vnd.realvnc.bed\":\"bed\",\"vnd.recordare.musicxml\":\"mxl\",\"vnd.recordare.musicxml+xml\":\"musicxml\",\"vnd.rig.cryptonote\":\"cryptonote\",\"vnd.rn-realmedia\":\"rm\",\"vnd.rn-realmedia-vbr\":\"rmvb\",\"vnd.route66.link66+xml\":\"link66\",\"vnd.sailingtracker.track\":\"st\",\"vnd.seemail\":\"see\",\"vnd.sema\":\"sema\",\"vnd.semd\":\"semd\",\"vnd.semf\":\"semf\",\"vnd.shana.informed.formdata\":\"ifm\",\"vnd.shana.informed.formtemplate\":\"itp\",\"vnd.shana.informed.interchange\":\"iif\",\"vnd.shana.informed.package\":\"ipk\",\"vnd.simtech-mindmapper\":[\"twd\",\"twds\"],\"vnd.smart.teacher\":\"teacher\",\"vnd.solent.sdkm+xml\":[\"sdkm\",\"sdkd\"],\"vnd.spotfire.dxp\":\"dxp\",\"vnd.spotfire.sfs\":\"sfs\",\"vnd.stepmania.package\":\"smzip\",\"vnd.stepmania.stepchart\":\"sm\",\"vnd.sus-calendar\":[\"sus\",\"susp\"],\"vnd.svd\":\"svd\",\"vnd.syncml+xml\":\"xsm\",\"vnd.syncml.dm+wbxml\":\"bdm\",\"vnd.syncml.dm+xml\":\"xdm\",\"vnd.tao.intent-module-archive\":\"tao\",\"vnd.tcpdump.pcap\":[\"pcap\",\"cap\",\"dmp\"],\"vnd.tmobile-livetv\":\"tmo\",\"vnd.trid.tpt\":\"tpt\",\"vnd.triscape.mxs\":\"mxs\",\"vnd.trueapp\":\"tra\",\"vnd.ufdl\":[\"ufd\",\"ufdl\"],\"vnd.uiq.theme\":\"utz\",\"vnd.umajin\":\"umj\",\"vnd.unity\":\"unityweb\",\"vnd.uoml+xml\":\"uoml\",\"vnd.vcx\":\"vcx\",\"vnd.visionary\":\"vis\",\"vnd.vsf\":\"vsf\",\"vnd.webturbo\":\"wtb\",\"vnd.wolfram.player\":\"nbp\",\"vnd.wqd\":\"wqd\",\"vnd.wt.stf\":\"stf\",\"vnd.xara\":\"xar\",\"vnd.xfdl\":\"xfdl\",\"vnd.yamaha.hv-dic\":\"hvd\",\"vnd.yamaha.hv-script\":\"hvs\",\"vnd.yamaha.hv-voice\":\"hvp\",\"vnd.yamaha.openscoreformat\":\"osf\",\"vnd.yamaha.openscoreformat.osfpvg+xml\":\"osfpvg\",\"vnd.yamaha.smaf-audio\":\"saf\",\"vnd.yamaha.smaf-phrase\":\"spf\",\"vnd.yellowriver-custom-menu\":\"cmp\",\"vnd.zul\":[\"zir\",\"zirz\"],\"vnd.zzazz.deck+xml\":\"zaz\",\"voicexml+xml\":\"vxml\",widget:\"wgt\",winhlp:\"hlp\",\"wsdl+xml\":\"wsdl\",\"wspolicy+xml\":\"wspolicy\",\"x-ace-compressed\":\"ace\",\"x-authorware-bin\":[\"aab\",\"x32\",\"u32\",\"vox\"],\"x-authorware-map\":\"aam\",\"x-authorware-seg\":\"aas\",\"x-blorb\":[\"blb\",\"blorb\"],\"x-bzip\":\"bz\",\"x-bzip2\":[\"bz2\",\"boz\"],\"x-cfs-compressed\":\"cfs\",\"x-chat\":\"chat\",\"x-conference\":\"nsc\",\"x-dgc-compressed\":\"dgc\",\"x-dtbncx+xml\":\"ncx\",\"x-dtbook+xml\":\"dtb\",\"x-dtbresource+xml\":\"res\",\"x-eva\":\"eva\",\"x-font-bdf\":\"bdf\",\"x-font-ghostscript\":\"gsf\",\"x-font-linux-psf\":\"psf\",\"x-font-pcf\":\"pcf\",\"x-font-snf\":\"snf\",\"x-font-ttf\":[\"ttf\",\"ttc\"],\"x-font-type1\":[\"pfa\",\"pfb\",\"pfm\",\"afm\"],\"x-freearc\":\"arc\",\"x-gca-compressed\":\"gca\",\"x-glulx\":\"ulx\",\"x-gramps-xml\":\"gramps\",\"x-install-instructions\":\"install\",\"x-lzh-compressed\":[\"lzh\",\"lha\"],\"x-mie\":\"mie\",\"x-mobipocket-ebook\":[\"prc\",\"mobi\"],\"x-ms-application\":\"application\",\"x-ms-shortcut\":\"lnk\",\"x-ms-xbap\":\"xbap\",\"x-msbinder\":\"obd\",\"x-mscardfile\":\"crd\",\"x-msclip\":\"clp\",\"application/x-ms-installer\":\"msi\",\"x-msmediaview\":[\"mvb\",\"m13\",\"m14\"],\"x-msmetafile\":[\"wmf\",\"wmz\",\"emf\",\"emz\"],\"x-msmoney\":\"mny\",\"x-mspublisher\":\"pub\",\"x-msschedule\":\"scd\",\"x-msterminal\":\"trm\",\"x-mswrite\":\"wri\",\"x-nzb\":\"nzb\",\"x-pkcs12\":[\"p12\",\"pfx\"],\"x-pkcs7-certificates\":[\"p7b\",\"spc\"],\"x-research-info-systems\":\"ris\",\"x-silverlight-app\":\"xap\",\"x-sql\":\"sql\",\"x-stuffitx\":\"sitx\",\"x-subrip\":\"srt\",\"x-t3vm-image\":\"t3\",\"x-tex-tfm\":\"tfm\",\"x-tgif\":\"obj\",\"x-xliff+xml\":\"xlf\",\"x-xz\":\"xz\",\"x-zmachine\":[\"z1\",\"z2\",\"z3\",\"z4\",\"z5\",\"z6\",\"z7\",\"z8\"],\"xaml+xml\":\"xaml\",\"xcap-diff+xml\":\"xdf\",\"xenc+xml\":\"xenc\",\"xml-dtd\":\"dtd\",\"xop+xml\":\"xop\",\"xproc+xml\":\"xpl\",\"xslt+xml\":\"xslt\",\"xv+xml\":[\"mxml\",\"xhvml\",\"xvml\",\"xvm\"],yang:\"yang\",\"yin+xml\":\"yin\",envoy:\"evy\",fractals:\"fif\",\"internet-property-stream\":\"acx\",olescript:\"axs\",\"vnd.ms-outlook\":\"msg\",\"vnd.ms-pkicertstore\":\"sst\",\"x-compress\":\"z\",\"x-perfmon\":[\"pma\",\"pmc\",\"pmr\",\"pmw\"],\"ynd.ms-pkipko\":\"pko\",gzip:[\"gz\",\"tgz\"],\"smil+xml\":[\"smi\",\"smil\"],\"vnd.debian.binary-package\":[\"deb\",\"udeb\"],\"vnd.hzn-3d-crossword\":\"x3d\",\"vnd.sqlite3\":[\"db\",\"sqlite\",\"sqlite3\",\"db-wal\",\"sqlite-wal\",\"db-shm\",\"sqlite-shm\"],\"vnd.wap.sic\":\"sic\",\"vnd.wap.slc\":\"slc\",\"x-krita\":[\"kra\",\"krz\"],\"x-perl\":[\"pm\",\"pl\"],yaml:[\"yaml\",\"yml\"]},audio:{amr:\"amr\",\"amr-wb\":\"awb\",annodex:\"axa\",basic:[\"au\",\"snd\"],flac:\"flac\",midi:[\"mid\",\"midi\",\"kar\",\"rmi\"],mpeg:[\"mpga\",\"mpega\",\"mp3\",\"m4a\",\"mp2a\",\"m2a\",\"m3a\"],mpegurl:\"m3u\",ogg:[\"oga\",\"ogg\",\"spx\"],\"prs.sid\":\"sid\",\"x-aiff\":\"aifc\",\"x-gsm\":\"gsm\",\"x-ms-wma\":\"wma\",\"x-ms-wax\":\"wax\",\"x-pn-realaudio\":\"ram\",\"x-realaudio\":\"ra\",\"x-sd2\":\"sd2\",adpcm:\"adp\",mp4:\"mp4a\",s3m:\"s3m\",silk:\"sil\",\"vnd.dece.audio\":[\"uva\",\"uvva\"],\"vnd.digital-winds\":\"eol\",\"vnd.dra\":\"dra\",\"vnd.dts\":\"dts\",\"vnd.dts.hd\":\"dtshd\",\"vnd.lucent.voice\":\"lvp\",\"vnd.ms-playready.media.pya\":\"pya\",\"vnd.nuera.ecelp4800\":\"ecelp4800\",\"vnd.nuera.ecelp7470\":\"ecelp7470\",\"vnd.nuera.ecelp9600\":\"ecelp9600\",\"vnd.rip\":\"rip\",webm:\"weba\",\"x-caf\":\"caf\",\"x-matroska\":\"mka\",\"x-pn-realaudio-plugin\":\"rmp\",xm:\"xm\",aac:\"aac\",aiff:[\"aiff\",\"aif\",\"aff\"],opus:\"opus\",wav:\"wav\"},chemical:{\"x-alchemy\":\"alc\",\"x-cache\":[\"cac\",\"cache\"],\"x-cache-csf\":\"csf\",\"x-cactvs-binary\":[\"cbin\",\"cascii\",\"ctab\"],\"x-cdx\":\"cdx\",\"x-chem3d\":\"c3d\",\"x-cif\":\"cif\",\"x-cmdf\":\"cmdf\",\"x-cml\":\"cml\",\"x-compass\":\"cpa\",\"x-crossfire\":\"bsd\",\"x-csml\":[\"csml\",\"csm\"],\"x-ctx\":\"ctx\",\"x-cxf\":[\"cxf\",\"cef\"],\"x-embl-dl-nucleotide\":[\"emb\",\"embl\"],\"x-gamess-input\":[\"inp\",\"gam\",\"gamin\"],\"x-gaussian-checkpoint\":[\"fch\",\"fchk\"],\"x-gaussian-cube\":\"cub\",\"x-gaussian-input\":[\"gau\",\"gjc\",\"gjf\"],\"x-gaussian-log\":\"gal\",\"x-gcg8-sequence\":\"gcg\",\"x-genbank\":\"gen\",\"x-hin\":\"hin\",\"x-isostar\":[\"istr\",\"ist\"],\"x-jcamp-dx\":[\"jdx\",\"dx\"],\"x-kinemage\":\"kin\",\"x-macmolecule\":\"mcm\",\"x-macromodel-input\":\"mmod\",\"x-mdl-molfile\":\"mol\",\"x-mdl-rdfile\":\"rd\",\"x-mdl-rxnfile\":\"rxn\",\"x-mdl-sdfile\":\"sd\",\"x-mdl-tgf\":\"tgf\",\"x-mmcif\":\"mcif\",\"x-mol2\":\"mol2\",\"x-molconn-Z\":\"b\",\"x-mopac-graph\":\"gpt\",\"x-mopac-input\":[\"mop\",\"mopcrt\",\"zmt\"],\"x-mopac-out\":\"moo\",\"x-ncbi-asn1\":\"asn\",\"x-ncbi-asn1-ascii\":[\"prt\",\"ent\"],\"x-ncbi-asn1-binary\":\"val\",\"x-rosdal\":\"ros\",\"x-swissprot\":\"sw\",\"x-vamas-iso14976\":\"vms\",\"x-vmd\":\"vmd\",\"x-xtel\":\"xtel\",\"x-xyz\":\"xyz\"},font:{otf:\"otf\",woff:\"woff\",woff2:\"woff2\"},image:{gif:\"gif\",ief:\"ief\",jpeg:[\"jpeg\",\"jpg\",\"jpe\",\"jfif\",\"jfif-tbnl\",\"jif\"],pcx:\"pcx\",png:\"png\",\"svg+xml\":[\"svg\",\"svgz\"],tiff:[\"tiff\",\"tif\"],\"vnd.djvu\":[\"djvu\",\"djv\"],\"vnd.wap.wbmp\":\"wbmp\",\"x-canon-cr2\":\"cr2\",\"x-canon-crw\":\"crw\",\"x-cmu-raster\":\"ras\",\"x-coreldraw\":\"cdr\",\"x-coreldrawpattern\":\"pat\",\"x-coreldrawtemplate\":\"cdt\",\"x-corelphotopaint\":\"cpt\",\"x-epson-erf\":\"erf\",\"x-icon\":\"ico\",\"x-jg\":\"art\",\"x-jng\":\"jng\",\"x-nikon-nef\":\"nef\",\"x-olympus-orf\":\"orf\",\"x-portable-anymap\":\"pnm\",\"x-portable-bitmap\":\"pbm\",\"x-portable-graymap\":\"pgm\",\"x-portable-pixmap\":\"ppm\",\"x-rgb\":\"rgb\",\"x-xbitmap\":\"xbm\",\"x-xpixmap\":\"xpm\",\"x-xwindowdump\":\"xwd\",bmp:\"bmp\",cgm:\"cgm\",g3fax:\"g3\",ktx:\"ktx\",\"prs.btif\":\"btif\",sgi:\"sgi\",\"vnd.dece.graphic\":[\"uvi\",\"uvvi\",\"uvg\",\"uvvg\"],\"vnd.dwg\":\"dwg\",\"vnd.dxf\":\"dxf\",\"vnd.fastbidsheet\":\"fbs\",\"vnd.fpx\":\"fpx\",\"vnd.fst\":\"fst\",\"vnd.fujixerox.edmics-mmr\":\"mmr\",\"vnd.fujixerox.edmics-rlc\":\"rlc\",\"vnd.ms-modi\":\"mdi\",\"vnd.ms-photo\":\"wdp\",\"vnd.net-fpx\":\"npx\",\"vnd.xiff\":\"xif\",webp:\"webp\",\"x-3ds\":\"3ds\",\"x-cmx\":\"cmx\",\"x-freehand\":[\"fh\",\"fhc\",\"fh4\",\"fh5\",\"fh7\"],\"x-pict\":[\"pic\",\"pct\"],\"x-tga\":\"tga\",\"cis-cod\":\"cod\",avif:\"avifs\",heic:[\"heif\",\"heic\"],pjpeg:[\"pjpg\"],\"vnd.adobe.photoshop\":\"psd\",\"x-adobe-dng\":\"dng\",\"x-fuji-raf\":\"raf\",\"x-icns\":\"icns\",\"x-kodak-dcr\":\"dcr\",\"x-kodak-k25\":\"k25\",\"x-kodak-kdc\":\"kdc\",\"x-minolta-mrw\":\"mrw\",\"x-panasonic-raw\":[\"raw\",\"rw2\",\"rwl\"],\"x-pentax-pef\":[\"pef\",\"ptx\"],\"x-sigma-x3f\":\"x3f\",\"x-sony-arw\":\"arw\",\"x-sony-sr2\":\"sr2\",\"x-sony-srf\":\"srf\"},message:{rfc822:[\"eml\",\"mime\",\"mht\",\"mhtml\",\"nws\"]},model:{iges:[\"igs\",\"iges\"],mesh:[\"msh\",\"mesh\",\"silo\"],vrml:[\"wrl\",\"vrml\"],\"x3d+vrml\":[\"x3dv\",\"x3dvz\"],\"x3d+xml\":\"x3dz\",\"x3d+binary\":[\"x3db\",\"x3dbz\"],\"vnd.collada+xml\":\"dae\",\"vnd.dwf\":\"dwf\",\"vnd.gdl\":\"gdl\",\"vnd.gtw\":\"gtw\",\"vnd.mts\":\"mts\",\"vnd.usdz+zip\":\"usdz\",\"vnd.vtu\":\"vtu\"},text:{\"cache-manifest\":[\"manifest\",\"appcache\"],calendar:[\"ics\",\"icz\",\"ifb\"],css:\"css\",csv:\"csv\",h323:\"323\",html:[\"html\",\"htm\",\"shtml\",\"stm\"],iuls:\"uls\",plain:[\"txt\",\"text\",\"brf\",\"conf\",\"def\",\"list\",\"log\",\"in\",\"bas\",\"diff\",\"ksh\"],richtext:\"rtx\",scriptlet:[\"sct\",\"wsc\"],texmacs:\"tm\",\"tab-separated-values\":\"tsv\",\"vnd.sun.j2me.app-descriptor\":\"jad\",\"vnd.wap.wml\":\"wml\",\"vnd.wap.wmlscript\":\"wmls\",\"x-bibtex\":\"bib\",\"x-boo\":\"boo\",\"x-c++hdr\":[\"h++\",\"hpp\",\"hxx\",\"hh\"],\"x-c++src\":[\"c++\",\"cpp\",\"cxx\",\"cc\"],\"x-component\":\"htc\",\"x-dsrc\":\"d\",\"x-diff\":\"patch\",\"x-haskell\":\"hs\",\"x-java\":\"java\",\"x-literate-haskell\":\"lhs\",\"x-moc\":\"moc\",\"x-pascal\":[\"p\",\"pas\",\"pp\",\"inc\"],\"x-pcs-gcd\":\"gcd\",\"x-python\":\"py\",\"x-scala\":\"scala\",\"x-setext\":\"etx\",\"x-tcl\":[\"tcl\",\"tk\"],\"x-tex\":[\"tex\",\"ltx\",\"sty\",\"cls\"],\"x-vcalendar\":\"vcs\",\"x-vcard\":\"vcf\",n3:\"n3\",\"prs.lines.tag\":\"dsc\",sgml:[\"sgml\",\"sgm\"],troff:[\"t\",\"tr\",\"roff\",\"man\",\"me\",\"ms\"],turtle:\"ttl\",\"uri-list\":[\"uri\",\"uris\",\"urls\"],vcard:\"vcard\",\"vnd.curl\":\"curl\",\"vnd.curl.dcurl\":\"dcurl\",\"vnd.curl.scurl\":\"scurl\",\"vnd.curl.mcurl\":\"mcurl\",\"vnd.dvb.subtitle\":\"sub\",\"vnd.fly\":\"fly\",\"vnd.fmi.flexstor\":\"flx\",\"vnd.graphviz\":\"gv\",\"vnd.in3d.3dml\":\"3dml\",\"vnd.in3d.spot\":\"spot\",\"x-asm\":[\"s\",\"asm\"],\"x-c\":[\"c\",\"h\",\"dic\"],\"x-fortran\":[\"f\",\"for\",\"f77\",\"f90\"],\"x-opml\":\"opml\",\"x-nfo\":\"nfo\",\"x-sfv\":\"sfv\",\"x-uuencode\":\"uu\",webviewhtml:\"htt\",javascript:\"js\",json:\"json\",markdown:[\"md\",\"markdown\",\"mdown\",\"markdn\"],\"vnd.wap.si\":\"si\",\"vnd.wap.sl\":\"sl\"},video:{avif:\"avif\",\"3gpp\":\"3gp\",annodex:\"axv\",dl:\"dl\",dv:[\"dif\",\"dv\"],fli:\"fli\",gl:\"gl\",mpeg:[\"mpeg\",\"mpg\",\"mpe\",\"m1v\",\"m2v\",\"mp2\",\"mpa\",\"mpv2\"],mp4:[\"mp4\",\"mp4v\",\"mpg4\"],quicktime:[\"qt\",\"mov\"],ogg:\"ogv\",\"vnd.mpegurl\":[\"mxu\",\"m4u\"],\"x-flv\":\"flv\",\"x-la-asf\":[\"lsf\",\"lsx\"],\"x-mng\":\"mng\",\"x-ms-asf\":[\"asf\",\"asx\",\"asr\"],\"x-ms-wm\":\"wm\",\"x-ms-wmv\":\"wmv\",\"x-ms-wmx\":\"wmx\",\"x-ms-wvx\":\"wvx\",\"x-msvideo\":\"avi\",\"x-sgi-movie\":\"movie\",\"x-matroska\":[\"mpv\",\"mkv\",\"mk3d\",\"mks\"],\"3gpp2\":\"3g2\",h261:\"h261\",h263:\"h263\",h264:\"h264\",jpeg:\"jpgv\",jpm:[\"jpm\",\"jpgm\"],mj2:[\"mj2\",\"mjp2\"],\"vnd.dece.hd\":[\"uvh\",\"uvvh\"],\"vnd.dece.mobile\":[\"uvm\",\"uvvm\"],\"vnd.dece.pd\":[\"uvp\",\"uvvp\"],\"vnd.dece.sd\":[\"uvs\",\"uvvs\"],\"vnd.dece.video\":[\"uvv\",\"uvvv\"],\"vnd.dvb.file\":\"dvb\",\"vnd.fvt\":\"fvt\",\"vnd.ms-playready.media.pyv\":\"pyv\",\"vnd.uvvu.mp4\":[\"uvu\",\"uvvu\"],\"vnd.vivo\":\"viv\",webm:\"webm\",\"x-f4v\":\"f4v\",\"x-m4v\":\"m4v\",\"x-ms-vob\":\"vob\",\"x-smv\":\"smv\",mp2t:\"ts\"},\"x-conference\":{\"x-cooltalk\":\"ice\"},\"x-world\":{\"x-vrml\":[\"vrm\",\"flr\",\"wrz\",\"xaf\",\"xof\"]}},he=(()=>{const e={};for(const t of Object.keys(me))for(const n of Object.keys(me[t])){const r=me[t][n];if(\"string\"==typeof r)e[r]=t+\"/\"+n;else for(let i=0;i<r.length;i++)e[r[i]]=t+\"/\"+n}return e})();function we(e){return e&&he[e.split(\".\").pop().toLowerCase()]||\"application/octet-stream\"}const ge=[];for(let e=0;e<256;e++){let t=e;for(let e=0;e<8;e++)1&t?t=t>>>1^3988292384:t>>>=1;ge[e]=t}class xe{constructor(e){this.crc=e||-1}append(e){let t=0|this.crc;for(let n=0,r=0|e.length;n<r;n++)t=t>>>8^ge[255&(t^e[n])];this.crc=t}get(){return~this.crc}}class be extends TransformStream{constructor(){let e;const t=new xe;super({transform(e,n){t.append(e),n.enqueue(e)},flush(){const n=new Uint8Array(4);new DataView(n.buffer).setUint32(0,t.get()),e.value=n}}),e=this}}function ve(e){if(typeof TextEncoder==ie){e=unescape(encodeURIComponent(e));const t=new Uint8Array(e.length);for(let n=0;n<t.length;n++)t[n]=e.charCodeAt(n);return t}return(new TextEncoder).encode(e)}const ye={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const n=e[e.length-1],r=ye.getPartial(n);return 32===r?e.concat(t):ye._shiftRight(t,r,0|n,e.slice(0,e.length-1))},bitLength(e){const t=e.length;if(0===t)return 0;const n=e[t-1];return 32*(t-1)+ye.getPartial(n)},clamp(e,t){if(32*e.length<t)return e;const n=(e=e.slice(0,Math.ceil(t/32))).length;return t&=31,n>0&&t&&(e[n-1]=ye.partial(t,e[n-1]&2147483648>>t-1,1)),e},partial:(e,t,n)=>32===e?t:(n?0|t:t<<32-e)+1099511627776*e,getPartial:e=>Math.round(e/1099511627776)||32,_shiftRight(e,t,n,r){for(void 0===r&&(r=[]);t>=32;t-=32)r.push(n),n=0;if(0===t)return r.concat(e);for(let i=0;i<e.length;i++)r.push(n|e[i]>>>t),n=e[i]<<32-t;const i=e.length?e[e.length-1]:0,s=ye.getPartial(i);return r.push(ye.partial(t+s&31,t+s>32?n:r.pop(),1)),r}},_e={bytes:{fromBits(e){const t=ye.bitLength(e)/8,n=new Uint8Array(t);let r;for(let i=0;i<t;i++)3&i||(r=e[i/4]),n[i]=r>>>24,r<<=8;return n},toBits(e){const t=[];let n,r=0;for(n=0;n<e.length;n++)r=r<<8|e[n],3&~n||(t.push(r),r=0);return 3&n&&t.push(ye.partial(8*(3&n),r)),t}}},ke={sha1:class{constructor(e){const t=this;t.blockSize=512,t._init=[1732584193,4023233417,2562383102,271733878,3285377520],t._key=[1518500249,1859775393,2400959708,3395469782],e?(t._h=e._h.slice(0),t._buffer=e._buffer.slice(0),t._length=e._length):t.reset()}reset(){const e=this;return e._h=e._init.slice(0),e._buffer=[],e._length=0,e}update(e){const t=this;\"string\"==typeof e&&(e=_e.utf8String.toBits(e));const n=t._buffer=ye.concat(t._buffer,e),r=t._length,i=t._length=r+ye.bitLength(e);if(i>9007199254740991)throw new Error(\"Cannot hash more than 2^53 - 1 bits\");const s=new Uint32Array(n);let a=0;for(let e=t.blockSize+r-(t.blockSize+r&t.blockSize-1);e<=i;e+=t.blockSize)t._block(s.subarray(16*a,16*(a+1))),a+=1;return n.splice(0,16*a),t}finalize(){const e=this;let t=e._buffer;const n=e._h;t=ye.concat(t,[ye.partial(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(Math.floor(e._length/4294967296)),t.push(0|e._length);t.length;)e._block(t.splice(0,16));return e.reset(),n}_f(e,t,n,r){return e<=19?t&n|~t&r:e<=39?t^n^r:e<=59?t&n|t&r|n&r:e<=79?t^n^r:void 0}_S(e,t){return t<<e|t>>>32-e}_block(e){const t=this,n=t._h,r=Array(80);for(let t=0;t<16;t++)r[t]=e[t];let i=n[0],s=n[1],a=n[2],o=n[3],c=n[4];for(let e=0;e<=79;e++){e>=16&&(r[e]=t._S(1,r[e-3]^r[e-8]^r[e-14]^r[e-16]));const n=t._S(5,i)+t._f(e,s,a,o)+c+r[e]+t._key[Math.floor(e/20)]|0;c=o,o=a,a=t._S(30,s),s=i,i=n}n[0]=n[0]+i|0,n[1]=n[1]+s|0,n[2]=n[2]+a|0,n[3]=n[3]+o|0,n[4]=n[4]+c|0}}},Se={aes:class{constructor(e){const t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();const n=t._tables[0][4],r=t._tables[1],i=e.length;let s,a,o,c=1;if(4!==i&&6!==i&&8!==i)throw new Error(\"invalid aes key size\");for(t._key=[a=e.slice(0),o=[]],s=i;s<4*i+28;s++){let e=a[s-1];(s%i==0||8===i&&s%i==4)&&(e=n[e>>>24]<<24^n[e>>16&255]<<16^n[e>>8&255]<<8^n[255&e],s%i==0&&(e=e<<8^e>>>24^c<<24,c=c<<1^283*(c>>7))),a[s]=a[s-i]^e}for(let e=0;s;e++,s--){const t=a[3&e?s:s-4];o[e]=s<=4||e<4?t:r[0][n[t>>>24]]^r[1][n[t>>16&255]]^r[2][n[t>>8&255]]^r[3][n[255&t]]}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){const e=this._tables[0],t=this._tables[1],n=e[4],r=t[4],i=[],s=[];let a,o,c,l;for(let e=0;e<256;e++)s[(i[e]=e<<1^283*(e>>7))^e]=e;for(let d=a=0;!n[d];d^=o||1,a=s[a]||1){let s=a^a<<1^a<<2^a<<3^a<<4;s=s>>8^255&s^99,n[d]=s,r[s]=d,l=i[c=i[o=i[d]]];let f=16843009*l^65537*c^257*o^16843008*d,u=257*i[s]^16843008*s;for(let n=0;n<4;n++)e[n][d]=u=u<<24^u>>>8,t[n][s]=f=f<<24^f>>>8}for(let n=0;n<5;n++)e[n]=e[n].slice(0),t[n]=t[n].slice(0)}_crypt(e,t){if(4!==e.length)throw new Error(\"invalid aes block size\");const n=this._key[t],r=n.length/4-2,i=[0,0,0,0],s=this._tables[t],a=s[0],o=s[1],c=s[2],l=s[3],d=s[4];let f,u,p,m=e[0]^n[0],h=e[t?3:1]^n[1],w=e[2]^n[2],g=e[t?1:3]^n[3],x=4;for(let e=0;e<r;e++)f=a[m>>>24]^o[h>>16&255]^c[w>>8&255]^l[255&g]^n[x],u=a[h>>>24]^o[w>>16&255]^c[g>>8&255]^l[255&m]^n[x+1],p=a[w>>>24]^o[g>>16&255]^c[m>>8&255]^l[255&h]^n[x+2],g=a[g>>>24]^o[m>>16&255]^c[h>>8&255]^l[255&w]^n[x+3],x+=4,m=f,h=u,w=p;for(let e=0;e<4;e++)i[t?3&-e:e]=d[m>>>24]<<24^d[h>>16&255]<<16^d[w>>8&255]<<8^d[255&g]^n[x++],f=m,m=h,h=w,w=g,g=f;return i}}},ze={getRandomValues(e){const t=new Uint32Array(e.buffer),n=e=>{let t=987654321;const n=4294967295;return function(){t=36969*(65535&t)+(t>>16)&n;return(((t<<16)+(e=18e3*(65535&e)+(e>>16)&n)&n)/4294967296+.5)*(Math.random()>.5?1:-1)}};for(let r,i=0;i<e.length;i+=4){const e=n(4294967296*(r||Math.random()));r=987654071*e(),t[i/4]=4294967296*e()|0}return e}},Ae={ctrGladman:class{constructor(e,t){this._prf=e,this._initIv=t,this._iv=t}reset(){this._iv=this._initIv}update(e){return this.calculate(this._prf,e,this._iv)}incWord(e){if(255&~(e>>24))e+=1<<24;else{let t=e>>16&255,n=e>>8&255,r=255&e;255===t?(t=0,255===n?(n=0,255===r?r=0:++r):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=r}return e}incCounter(e){0===(e[0]=this.incWord(e[0]))&&(e[1]=this.incWord(e[1]))}calculate(e,t,n){let r;if(!(r=t.length))return[];const i=ye.bitLength(t);for(let i=0;i<r;i+=4){this.incCounter(n);const r=e.encrypt(n);t[i]^=r[0],t[i+1]^=r[1],t[i+2]^=r[2],t[i+3]^=r[3]}return ye.clamp(t,i)}}},Ce={importKey:e=>new Ce.hmacSha1(_e.bytes.toBits(e)),pbkdf2(e,t,n,r){if(n=n||1e4,r<0||n<0)throw new Error(\"invalid params to pbkdf2\");const i=1+(r>>5)<<2;let s,a,o,c,l;const d=new ArrayBuffer(i),f=new DataView(d);let u=0;const p=ye;for(t=_e.bytes.toBits(t),l=1;u<(i||1);l++){for(s=a=e.encrypt(p.concat(t,[l])),o=1;o<n;o++)for(a=e.encrypt(a),c=0;c<a.length;c++)s[c]^=a[c];for(o=0;u<(i||1)&&o<s.length;o++)f.setInt32(u,s[o]),u+=4}return d.slice(0,r/8)},hmacSha1:class{constructor(e){const t=this,n=t._hash=ke.sha1,r=[[],[]];t._baseHash=[new n,new n];const i=t._baseHash[0].blockSize/32;e.length>i&&(e=(new n).update(e).finalize());for(let t=0;t<i;t++)r[0][t]=909522486^e[t],r[1][t]=1549556828^e[t];t._baseHash[0].update(r[0]),t._baseHash[1].update(r[1]),t._resultHash=new n(t._baseHash[0])}reset(){const e=this;e._resultHash=new e._hash(e._baseHash[0]),e._updated=!1}update(e){this._updated=!0,this._resultHash.update(e)}digest(){const e=this,t=e._resultHash.finalize(),n=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),n}encrypt(e){if(this._updated)throw new Error(\"encrypt on already updated hmac called!\");return this.update(e),this.digest(e)}}},De=typeof crypto!=ie&&typeof crypto.getRandomValues==se,Ue=\"Invalid password\",Ee=\"Invalid signature\",We=\"zipjs-abort-check-password\";function Fe(e){return De?crypto.getRandomValues(e):ze.getRandomValues(e)}const je=16,qe={name:\"PBKDF2\"},Te=Object.assign({hash:{name:\"HMAC\"}},qe),Oe=Object.assign({iterations:1e3,hash:{name:\"SHA-1\"}},qe),Re=[\"deriveBits\"],Le=[8,12,16],Ie=[16,24,32],Me=10,Pe=[0,0,0,0],Be=typeof crypto!=ie,He=Be&&crypto.subtle,Ne=Be&&typeof He!=ie,Ve=_e.bytes,Ze=Se.aes,Ke=Ae.ctrGladman,Ge=Ce.hmacSha1;let Xe=Be&&Ne&&typeof He.importKey==se,Je=Be&&Ne&&typeof He.deriveBits==se;class Ye extends TransformStream{constructor({password:e,rawPassword:t,signed:n,encryptionStrength:r,checkPasswordOnly:i}){super({start(){Object.assign(this,{ready:new Promise((e=>this.resolveReady=e)),password:tt(e,t),signed:n,strength:r-1,pending:new Uint8Array})},async transform(e,t){const n=this,{password:r,strength:s,resolveReady:a,ready:o}=n;r?(await async function(e,t,n,r){const i=await et(e,t,n,rt(r,0,Le[t])),s=rt(r,Le[t]);if(i[0]!=s[0]||i[1]!=s[1])throw new Error(Ue)}(n,s,r,rt(e,0,Le[s]+2)),e=rt(e,Le[s]+2),i?t.error(new Error(We)):a()):await o;const c=new Uint8Array(e.length-Me-(e.length-Me)%je);t.enqueue($e(n,e,c,0,Me,!0))},async flush(e){const{signed:t,ctr:n,hmac:r,pending:i,ready:s}=this;if(r&&n){await s;const a=rt(i,0,i.length-Me),o=rt(i,i.length-Me);let c=new Uint8Array;if(a.length){const e=st(Ve,a);r.update(e);const t=n.update(e);c=it(Ve,t)}if(t){const e=rt(it(Ve,r.digest()),0,Me);for(let t=0;t<Me;t++)if(e[t]!=o[t])throw new Error(Ee)}e.enqueue(c)}}})}}class Qe extends TransformStream{constructor({password:e,rawPassword:t,encryptionStrength:n}){let r;super({start(){Object.assign(this,{ready:new Promise((e=>this.resolveReady=e)),password:tt(e,t),strength:n-1,pending:new Uint8Array})},async transform(e,t){const n=this,{password:r,strength:i,resolveReady:s,ready:a}=n;let o=new Uint8Array;r?(o=await async function(e,t,n){const r=Fe(new Uint8Array(Le[t])),i=await et(e,t,n,r);return nt(r,i)}(n,i,r),s()):await a;const c=new Uint8Array(o.length+e.length-e.length%je);c.set(o,0),t.enqueue($e(n,e,c,o.length,0))},async flush(e){const{ctr:t,hmac:n,pending:i,ready:s}=this;if(n&&t){await s;let a=new Uint8Array;if(i.length){const e=t.update(st(Ve,i));n.update(e),a=it(Ve,e)}r.signature=it(Ve,n.digest()).slice(0,Me),e.enqueue(nt(a,r.signature))}}}),r=this}}function $e(e,t,n,r,i,s){const{ctr:a,hmac:o,pending:c}=e,l=t.length-i;let d;for(c.length&&(t=nt(c,t),n=function(e,t){if(t&&t>e.length){const n=e;(e=new Uint8Array(t)).set(n,0)}return e}(n,l-l%je)),d=0;d<=l-je;d+=je){const e=st(Ve,rt(t,d,d+je));s&&o.update(e);const i=a.update(e);s||o.update(i),n.set(it(Ve,i),d+r)}return e.pending=rt(t,d),n}async function et(e,t,n,r){e.password=null;const i=await async function(e,t,n,r,i){if(!Xe)return Ce.importKey(t);try{return await He.importKey(e,t,n,r,i)}catch(e){return Xe=!1,Ce.importKey(t)}}(\"raw\",n,Te,!1,Re),s=await async function(e,t,n){if(!Je)return Ce.pbkdf2(t,e.salt,Oe.iterations,n);try{return await He.deriveBits(e,t,n)}catch(r){return Je=!1,Ce.pbkdf2(t,e.salt,Oe.iterations,n)}}(Object.assign({salt:r},Oe),i,8*(2*Ie[t]+2)),a=new Uint8Array(s),o=st(Ve,rt(a,0,Ie[t])),c=st(Ve,rt(a,Ie[t],2*Ie[t])),l=rt(a,2*Ie[t]);return Object.assign(e,{keys:{key:o,authentication:c,passwordVerification:l},ctr:new Ke(new Ze(o),Array.from(Pe)),hmac:new Ge(c)}),l}function tt(e,t){return t===re?ve(e):t}function nt(e,t){let n=e;return e.length+t.length&&(n=new Uint8Array(e.length+t.length),n.set(e,0),n.set(t,e.length)),n}function rt(e,t,n){return e.subarray(t,n)}function it(e,t){return e.fromBits(t)}function st(e,t){return e.toBits(t)}const at=12;class ot extends TransformStream{constructor({password:e,passwordVerification:t,checkPasswordOnly:n}){super({start(){Object.assign(this,{password:e,passwordVerification:t}),ft(this,e)},transform(e,t){const r=this;if(r.password){const t=lt(r,e.subarray(0,at));if(r.password=null,t[11]!=r.passwordVerification)throw new Error(Ue);e=e.subarray(at)}n?t.error(new Error(We)):t.enqueue(lt(r,e))}})}}class ct extends TransformStream{constructor({password:e,passwordVerification:t}){super({start(){Object.assign(this,{password:e,passwordVerification:t}),ft(this,e)},transform(e,t){const n=this;let r,i;if(n.password){n.password=null;const t=Fe(new Uint8Array(at));t[11]=n.passwordVerification,r=new Uint8Array(e.length+t.length),r.set(dt(n,t),0),i=at}else r=new Uint8Array(e.length),i=0;r.set(dt(n,e),i),t.enqueue(r)}})}}function lt(e,t){const n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=pt(e)^t[r],ut(e,n[r]);return n}function dt(e,t){const n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=pt(e)^t[r],ut(e,t[r]);return n}function ft(e,t){const n=[305419896,591751049,878082192];Object.assign(e,{keys:n,crcKey0:new xe(n[0]),crcKey2:new xe(n[2])});for(let n=0;n<t.length;n++)ut(e,t.charCodeAt(n))}function ut(e,t){let[n,r,i]=e.keys;e.crcKey0.append([t]),n=~e.crcKey0.get(),r=ht(Math.imul(ht(r+mt(n)),134775813)+1),e.crcKey2.append([r>>>24]),i=~e.crcKey2.get(),e.keys=[n,r,i]}function pt(e){const t=2|e.keys[2];return mt(Math.imul(t,1^t)>>>8)}function mt(e){return 255&e}function ht(e){return 4294967295&e}const wt=\"deflate-raw\";class gt extends TransformStream{constructor(e,{chunkSize:t,CompressionStream:n,CompressionStreamNative:r}){super({});const{compressed:i,encrypted:s,useCompressionStream:a,zipCrypto:o,signed:c,level:l}=e,d=this;let f,u,p=bt(super.readable);s&&!o||!c||(f=new be,p=_t(p,f)),i&&(p=yt(p,a,{level:l,chunkSize:t},r,n)),s&&(o?p=_t(p,new ct(e)):(u=new Qe(e),p=_t(p,u))),vt(d,p,(()=>{let e;s&&!o&&(e=u.signature),s&&!o||!c||(e=new DataView(f.value.buffer).getUint32(0)),d.signature=e}))}}class xt extends TransformStream{constructor(e,{chunkSize:t,DecompressionStream:n,DecompressionStreamNative:r}){super({});const{zipCrypto:i,encrypted:s,signed:a,signature:o,compressed:c,useCompressionStream:l}=e;let d,f,u=bt(super.readable);s&&(i?u=_t(u,new ot(e)):(f=new Ye(e),u=_t(u,f))),c&&(u=yt(u,l,{chunkSize:t},r,n)),s&&!i||!a||(d=new be,u=_t(u,d)),vt(this,u,(()=>{if((!s||i)&&a){const e=new DataView(d.value.buffer);if(o!=e.getUint32(0,!1))throw new Error(Ee)}}))}}function bt(e){return _t(e,new TransformStream({transform(e,t){e&&e.length&&t.enqueue(e)}}))}function vt(e,t,n){t=_t(t,new TransformStream({flush:n})),Object.defineProperty(e,\"readable\",{get:()=>t})}function yt(e,t,n,r,i){try{e=_t(e,new(t&&r?r:i)(wt,n))}catch(r){if(!t)return e;try{e=_t(e,new i(wt,n))}catch(t){return e}}return e}function _t(e,t){return e.pipeThrough(t)}const kt=\"message\",St=\"start\",zt=\"pull\",At=\"data\",Ct=\"close\",Dt=\"deflate\",Ut=\"inflate\";class Et extends TransformStream{constructor(e,t){super({});const n=this,{codecType:r}=e;let i;r.startsWith(Dt)?i=gt:r.startsWith(Ut)&&(i=xt);let s=0,a=0;const o=new i(e,t),c=super.readable,l=new TransformStream({transform(e,t){e&&e.length&&(a+=e.length,t.enqueue(e))},flush(){Object.assign(n,{inputSize:a})}}),d=new TransformStream({transform(e,t){e&&e.length&&(s+=e.length,t.enqueue(e))},flush(){const{signature:e}=o;Object.assign(n,{signature:e,outputSize:s,inputSize:a})}});Object.defineProperty(n,\"readable\",{get:()=>c.pipeThrough(l).pipeThrough(o).pipeThrough(d)})}}class Wt extends TransformStream{constructor(e){let t;super({transform:function n(r,i){if(t){const e=new Uint8Array(t.length+r.length);e.set(t),e.set(r,t.length),r=e,t=null}r.length>e?(i.enqueue(r.slice(0,e)),n(r.slice(e),i)):t=r},flush(e){t&&t.length&&e.enqueue(t)}})}}let Ft=typeof Worker!=ie;class jt{constructor(e,{readable:t,writable:n},{options:r,config:i,streamOptions:s,useWebWorkers:a,transferStreams:o,scripts:c},l){const{signal:d}=s;return Object.assign(e,{busy:!0,readable:t.pipeThrough(new Wt(i.chunkSize)).pipeThrough(new qt(t,s),{signal:d}),writable:n,options:Object.assign({},r),scripts:c,transferStreams:o,terminate:()=>new Promise((t=>{const{worker:n,busy:r}=e;n?(r?e.resolveTerminated=t:(n.terminate(),t()),e.interface=null):t()})),onTaskFinished(){const{resolveTerminated:t}=e;t&&(e.resolveTerminated=null,e.terminated=!0,e.worker.terminate(),t()),e.busy=!1,l(e)}}),(a&&Ft?Rt:Ot)(e,i)}}class qt extends TransformStream{constructor(e,{onstart:t,onprogress:n,size:r,onend:i}){let s=0;super({async start(){t&&await Tt(t,r)},async transform(e,t){s+=e.length,n&&await Tt(n,s,r),t.enqueue(e)},async flush(){e.size=s,i&&await Tt(i,s)}})}}async function Tt(e,...t){try{await e(...t)}catch(e){}}function Ot(e,t){return{run:()=>async function({options:e,readable:t,writable:n,onTaskFinished:r},i){try{const r=new Et(e,i);await t.pipeThrough(r).pipeTo(n,{preventClose:!0,preventAbort:!0});const{signature:s,inputSize:a,outputSize:o}=r;return{signature:s,inputSize:a,outputSize:o}}finally{r()}}(e,t)}}function Rt(e,t){const{baseURL:n,chunkSize:r}=t;if(!e.interface){let i;try{i=function(e,t,n){const r={type:\"module\"};let i,s;typeof e==se&&(e=e());try{i=new URL(e,t)}catch(t){i=e}if(Lt)try{s=new Worker(i)}catch(e){Lt=!1,s=new Worker(i,r)}else s=new Worker(i,r);return s.addEventListener(kt,(e=>async function({data:e},t){const{type:n,value:r,messageId:i,result:s,error:a}=e,{reader:o,writer:c,resolveResult:l,rejectResult:d,onTaskFinished:f}=t;try{if(a){const{message:e,stack:t,code:n,name:r}=a,i=new Error(e);Object.assign(i,{stack:t,code:n,name:r}),u(i)}else{if(n==zt){const{value:e,done:n}=await o.read();Mt({type:At,value:e,done:n,messageId:i},t)}n==At&&(await c.ready,await c.write(new Uint8Array(r)),Mt({type:\"ack\",messageId:i},t)),n==Ct&&u(null,s)}}catch(a){Mt({type:Ct,messageId:i},t),u(a)}function u(e,t){e?d(e):l(t),c&&c.releaseLock(),f()}}(e,n))),s}(e.scripts[0],n,e)}catch(n){return Ft=!1,Ot(e,t)}Object.assign(e,{worker:i,interface:{run:()=>async function(e,t){let n,r;const i=new Promise(((e,t)=>{n=e,r=t}));Object.assign(e,{reader:null,writer:null,resolveResult:n,rejectResult:r,result:i});const{readable:s,options:a,scripts:o}=e,{writable:c,closed:l}=function(e){let t;const n=new Promise((e=>t=e)),r=new WritableStream({async write(t){const n=e.getWriter();await n.ready,await n.write(t),n.releaseLock()},close(){t()},abort:t=>e.getWriter().abort(t)});return{writable:r,closed:n}}(e.writable),d=Mt({type:St,scripts:o.slice(1),options:a,config:t,readable:s,writable:c},e);d||Object.assign(e,{reader:s.getReader(),writer:c.getWriter()});const f=await i;d||await c.getWriter().close();return await l,f}(e,{chunkSize:r})}})}return e.interface}let Lt=!0,It=!0;function Mt(e,{worker:t,writer:n,onTaskFinished:r,transferStreams:i}){try{const{value:n,readable:r,writable:s}=e,a=[];if(n&&(n.byteLength<n.buffer.byteLength?e.value=n.buffer.slice(0,n.byteLength):e.value=n.buffer,a.push(e.value)),i&&It?(r&&a.push(r),s&&a.push(s)):e.readable=e.writable=null,a.length)try{return t.postMessage(e,a),!0}catch(n){It=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(e){throw n&&n.releaseLock(),r(),e}}let Pt=[];const Bt=[];let Ht=0;async function Nt(e,t){const{options:n,config:r}=t,{transferStreams:i,useWebWorkers:s,useCompressionStream:a,codecType:o,compressed:c,signed:l,encrypted:d}=n,{workerScripts:f,maxWorkers:u}=r;t.transferStreams=i||i===re;const p=!(c||l||d||t.transferStreams);return t.useWebWorkers=!p&&(s||s===re&&r.useWebWorkers),t.scripts=t.useWebWorkers&&f?f[o]:[],n.useCompressionStream=a||a===re&&r.useCompressionStream,(await async function(){const n=Pt.find((e=>!e.busy));if(n)return Vt(n),new jt(n,e,t,m);if(Pt.length<u){const n={indexWorker:Ht};return Ht++,Pt.push(n),new jt(n,e,t,m)}return new Promise((n=>Bt.push({resolve:n,stream:e,workerOptions:t})))}()).run();function m(e){if(Bt.length){const[{resolve:t,stream:n,workerOptions:r}]=Bt.splice(0,1);t(new jt(e,n,r,m))}else e.worker?(Vt(e),function(e,t){const{config:n}=t,{terminateWorkerTimeout:r}=n;Number.isFinite(r)&&r>=0&&(e.terminated?e.terminated=!1:e.terminateTimeout=setTimeout((async()=>{Pt=Pt.filter((t=>t!=e));try{await e.terminate()}catch(e){}}),r))}(e,t)):Pt=Pt.filter((t=>t!=e))}}function Vt(e){const{terminateTimeout:t}=e;t&&(clearTimeout(t),e.terminateTimeout=null)}async function Zt(){await Promise.allSettled(Pt.map((e=>(Vt(e),e.terminate()))))}function Kt(e,t={},n){return{Deflate:Gt(e.Deflate,t.deflate,n),Inflate:Gt(e.Inflate,t.inflate,n)}}function Gt(e,t,n){return class{constructor(r){const i=this;var s,a;s=r,a=\"level\",(typeof Object.hasOwn===se?Object.hasOwn(s,a):s.hasOwnProperty(a))&&r.level===re&&delete r.level,i.codec=new e(Object.assign({},t,r)),n(i.codec,(e=>{if(i.pendingData){const t=i.pendingData;i.pendingData=new Uint8Array(t.length+e.length);const{pendingData:n}=i;n.set(t,0),n.set(e,t.length)}else i.pendingData=new Uint8Array(e)}))}append(e){return this.codec.push(e),r(this)}flush(){return this.codec.push(new Uint8Array,!0),r(this)}};function r(e){if(e.pendingData){const t=e.pendingData;return e.pendingData=null,t}return new Uint8Array}}const Xt=\"HTTP error \",Jt=\"HTTP Range not supported\",Yt=\"Writer iterator completed too soon\",Qt=\"Writer not initialized\",$t=\"Range\",en=\"GET\",tn=\"bytes\",nn=65536,rn=\"writable\";class sn{constructor(){this.size=0}init(){this.initialized=!0}}class an extends sn{get readable(){const e=this,{chunkSize:t=nn}=e,n=new ReadableStream({start(){this.chunkOffset=0},async pull(r){const{offset:i=0,size:s,diskNumberStart:a}=n,{chunkOffset:o}=this,c=s===re?t:Math.min(t,s-o),l=await On(e,i+o,c,a);r.enqueue(l),o+t>s||s===re&&!l.length&&c?r.close():this.chunkOffset+=t}});return n}}class on extends sn{constructor(){super();const e=this,t=new WritableStream({write(t){if(!e.initialized)throw new Error(Qt);return e.writeUint8Array(t)}});Object.defineProperty(e,rn,{get:()=>t})}writeUint8Array(){}}class cn extends an{constructor(e){super();let t=e.length;for(;\"=\"==e.charAt(t-1);)t--;const n=e.indexOf(\",\")+1;Object.assign(this,{dataURI:e,dataStart:n,size:Math.floor(.75*(t-n))})}readUint8Array(e,t){const{dataStart:n,dataURI:r}=this,i=new Uint8Array(t),s=4*Math.floor(e/3),a=atob(r.substring(s+n,4*Math.ceil((e+t)/3)+n)),o=e-3*Math.floor(s/4);for(let e=o;e<o+t;e++)i[e-o]=a.charCodeAt(e);return i}}class ln extends on{constructor(e){super(),Object.assign(this,{data:\"data:\"+(e||\"\")+\";base64,\",pending:[]})}writeUint8Array(e){const t=this;let n=0,r=t.pending;const i=t.pending.length;for(t.pending=\"\",n=0;n<3*Math.floor((i+e.length)/3)-i;n++)r+=String.fromCharCode(e[n]);for(;n<e.length;n++)t.pending+=String.fromCharCode(e[n]);r.length>2?t.data+=btoa(r):t.pending=r}getData(){return this.data+btoa(this.pending)}}class dn extends an{constructor(e){super(),Object.assign(this,{blob:e,size:e.size})}async readUint8Array(e,t){const n=this,r=e+t,i=e||r<n.size?n.blob.slice(e,r):n.blob;let s=await i.arrayBuffer();return s.byteLength>t&&(s=s.slice(e,r)),new Uint8Array(s)}}class fn extends sn{constructor(e){super();const t=new TransformStream,n=[];e&&n.push([\"Content-Type\",e]),Object.defineProperty(this,rn,{get:()=>t.writable}),this.blob=new Response(t.readable,{headers:n}).blob()}getData(){return this.blob}}class un extends dn{constructor(e){super(new Blob([e],{type:\"text/plain\"}))}}class pn extends fn{constructor(e){super(e),Object.assign(this,{encoding:e,utf8:!e||\"utf-8\"==e.toLowerCase()})}async getData(){const{encoding:e,utf8:t}=this,n=await super.getData();if(n.text&&t)return n.text();{const t=new FileReader;return new Promise(((r,i)=>{Object.assign(t,{onload:({target:e})=>r(e.result),onerror:()=>i(t.error)}),t.readAsText(n,e)}))}}}class mn extends an{constructor(e,t){super(),wn(this,e,t)}async init(){await gn(this,zn,yn),super.init()}readUint8Array(e,t){return xn(this,e,t,zn,yn)}}class hn extends an{constructor(e,t){super(),wn(this,e,t)}async init(){await gn(this,An,_n),super.init()}readUint8Array(e,t){return xn(this,e,t,An,_n)}}function wn(e,t,n){const{preventHeadRequest:r,useRangeHeader:i,forceRangeRequests:s,combineSizeEocd:a}=n;delete(n=Object.assign({},n)).preventHeadRequest,delete n.useRangeHeader,delete n.forceRangeRequests,delete n.combineSizeEocd,delete n.useXHR,Object.assign(e,{url:t,options:n,preventHeadRequest:r,useRangeHeader:i,forceRangeRequests:s,combineSizeEocd:a})}async function gn(e,t,n){const{url:r,preventHeadRequest:i,useRangeHeader:s,forceRangeRequests:a,combineSizeEocd:o}=e;if(function(e){const{baseURL:t}=de(),{protocol:n}=new URL(e,t);return\"http:\"==n||\"https:\"==n}(r)&&(s||a)&&(void 0===i||i)){const r=await t(en,e,bn(e,o?-22:void 0));if(!a&&r.headers.get(\"Accept-Ranges\")!=tn)throw new Error(Jt);{let i;o&&(e.eocdCache=new Uint8Array(await r.arrayBuffer()));const s=r.headers.get(\"Content-Range\");if(s){const e=s.trim().split(/\\s*\\/\\s*/);if(e.length){const t=e[1];t&&\"*\"!=t&&(i=Number(t))}}i===re?await Sn(e,t,n):e.size=i}}else await Sn(e,t,n)}async function xn(e,t,n,r,i){const{useRangeHeader:s,forceRangeRequests:a,eocdCache:o,size:c,options:l}=e;if(s||a){if(o&&t==c-X&&n==X)return o;const i=await r(en,e,bn(e,t,n));if(206!=i.status)throw new Error(Jt);return new Uint8Array(await i.arrayBuffer())}{const{data:r}=e;return r||await i(e,l),new Uint8Array(e.data.subarray(t,t+n))}}function bn(e,t=0,n=1){return Object.assign({},vn(e),{[$t]:tn+\"=\"+(t<0?t:t+\"-\"+(t+n-1))})}function vn({options:e}){const{headers:t}=e;if(t)return Symbol.iterator in t?Object.fromEntries(t):t}async function yn(e){await kn(e,zn)}async function _n(e){await kn(e,An)}async function kn(e,t){const n=await t(en,e,vn(e));e.data=new Uint8Array(await n.arrayBuffer()),e.size||(e.size=e.data.length)}async function Sn(e,t,n){if(e.preventHeadRequest)await n(e,e.options);else{const r=(await t(\"HEAD\",e,vn(e))).headers.get(\"Content-Length\");r?e.size=Number(r):await n(e,e.options)}}async function zn(e,{options:t,url:n},r){const i=await fetch(n,Object.assign({},t,{method:e,headers:r}));if(i.status<400)return i;throw 416==i.status?new Error(Jt):new Error(Xt+(i.statusText||i.status))}function An(e,{url:t},n){return new Promise(((r,i)=>{const s=new XMLHttpRequest;if(s.addEventListener(\"load\",(()=>{if(s.status<400){const e=[];s.getAllResponseHeaders().trim().split(/[\\r\\n]+/).forEach((t=>{const n=t.trim().split(/\\s*:\\s*/);n[0]=n[0].trim().replace(/^[a-z]|-[a-z]/g,(e=>e.toUpperCase())),e.push(n)})),r({status:s.status,arrayBuffer:()=>s.response,headers:new Map(e)})}else i(416==s.status?new Error(Jt):new Error(Xt+(s.statusText||s.status)))}),!1),s.addEventListener(\"error\",(e=>i(e.detail?e.detail.error:new Error(\"Network error\"))),!1),s.open(e,t),n)for(const e of Object.entries(n))s.setRequestHeader(e[0],e[1]);s.responseType=\"arraybuffer\",s.send()}))}class Cn extends an{constructor(e,t={}){super(),Object.assign(this,{url:e,reader:t.useXHR?new hn(e,t):new mn(e,t)})}set size(e){}get size(){return this.reader.size}async init(){await this.reader.init(),super.init()}readUint8Array(e,t){return this.reader.readUint8Array(e,t)}}class Dn extends Cn{constructor(e,t={}){t.useRangeHeader=!0,super(e,t)}}class Un extends an{constructor(e){super(),Object.assign(this,{array:e,size:e.length})}readUint8Array(e,t){return this.array.slice(e,e+t)}}class En extends on{init(e=0){Object.assign(this,{offset:0,array:new Uint8Array(e)}),super.init()}writeUint8Array(e){const t=this;if(t.offset+e.length>t.array.length){const n=t.array;t.array=new Uint8Array(n.length+e.length),t.array.set(n)}t.array.set(e,t.offset),t.offset+=e.length}getData(){return this.array}}class Wn extends an{constructor(e){super(),this.readers=e}async init(){const e=this,{readers:t}=e;e.lastDiskNumber=0,e.lastDiskOffset=0,await Promise.all(t.map((async(n,r)=>{await n.init(),r!=t.length-1&&(e.lastDiskOffset+=n.size),e.size+=n.size}))),super.init()}async readUint8Array(e,t,n=0){const r=this,{readers:i}=this;let s,a=n;-1==a&&(a=i.length-1);let o=e;for(;o>=i[a].size;)o-=i[a].size,a++;const c=i[a],l=c.size;if(o+t<=l)s=await On(c,o,t);else{const i=l-o;s=new Uint8Array(t),s.set(await On(c,o,i)),s.set(await r.readUint8Array(e+i,t-i,n),i)}return r.lastDiskNumber=Math.max(a,r.lastDiskNumber),s}}class Fn extends sn{constructor(e,t=4294967295){super();const n=this;let r,i,s;Object.assign(n,{diskNumber:0,diskOffset:0,size:0,maxSize:t,availableSize:t});const a=new WritableStream({async write(t){const{availableSize:a}=n;if(s)t.length>=a?(await o(t.slice(0,a)),await c(),n.diskOffset+=r.size,n.diskNumber++,s=null,await this.write(t.slice(a))):await o(t);else{const{value:a,done:o}=await e.next();if(o&&!a)throw new Error(Yt);r=a,r.size=0,r.maxSize&&(n.maxSize=r.maxSize),n.availableSize=n.maxSize,await jn(r),i=a.writable,s=i.getWriter(),await this.write(t)}},async close(){await s.ready,await c()}});async function o(e){const t=e.length;t&&(await s.ready,await s.write(e),r.size+=t,n.size+=t,n.availableSize-=t)}async function c(){i.size=r.size,await s.close()}Object.defineProperty(n,rn,{get:()=>a})}}async function jn(e,t){if(!e.init||e.initialized)return Promise.resolve();await e.init(t)}function qn(e){return Array.isArray(e)&&(e=new Wn(e)),e instanceof ReadableStream&&(e={readable:e}),e}function Tn(e){e.writable===re&&typeof e.next==se&&(e=new Fn(e)),e instanceof WritableStream&&(e={writable:e});const{writable:t}=e;return t.size===re&&(t.size=0),e instanceof Fn||Object.assign(e,{diskNumber:0,diskOffset:0,availableSize:1/0,maxSize:1/0}),e}function On(e,t,n,r){return e.readUint8Array(t,n,r)}const Rn=Wn,Ln=Fn,In=\"\\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \".split(\"\"),Mn=256==In.length;function Pn(e,t){return t&&\"cp437\"==t.trim().toLowerCase()?function(e){if(Mn){let t=\"\";for(let n=0;n<e.length;n++)t+=In[e[n]];return t}return(new TextDecoder).decode(e)}(e):new TextDecoder(t).decode(e)}const Bn=\"filename\",Hn=\"rawFilename\",Nn=\"comment\",Vn=\"rawComment\",Zn=\"uncompressedSize\",Kn=\"compressedSize\",Gn=\"offset\",Xn=\"diskNumberStart\",Jn=\"lastModDate\",Yn=\"rawLastModDate\",Qn=\"lastAccessDate\",$n=\"rawLastAccessDate\",er=\"creationDate\",tr=\"rawCreationDate\",nr=\"internalFileAttribute\",rr=\"internalFileAttributes\",ir=\"externalFileAttribute\",sr=\"externalFileAttributes\",ar=\"msDosCompatible\",or=\"zip64\",cr=\"encrypted\",lr=\"version\",dr=\"versionMadeBy\",fr=\"zipCrypto\",ur=\"directory\",pr=\"executable\",mr=[Bn,Hn,Kn,Zn,Jn,Yn,Nn,Vn,Qn,er,Gn,Xn,Xn,nr,rr,ir,sr,ar,or,cr,lr,dr,fr,ur,pr,\"bitFlag\",\"signature\",\"filenameUTF8\",\"commentUTF8\",\"compressionMethod\",\"extraField\",\"rawExtraField\",\"extraFieldZip64\",\"extraFieldUnicodePath\",\"extraFieldUnicodeComment\",\"extraFieldAES\",\"extraFieldNTFS\",\"extraFieldExtendedTimestamp\"];class hr{constructor(e){mr.forEach((t=>this[t]=e[t]))}}const wr=\"File format is not recognized\",gr=\"End of central directory not found\",xr=\"End of Zip64 central directory locator not found\",br=\"Central directory header not found\",vr=\"Local file header not found\",yr=\"Zip64 extra field not found\",_r=\"File contains encrypted entry\",kr=\"Encryption method not supported\",Sr=\"Compression method not supported\",zr=\"Split zip file\",Ar=\"utf-8\",Cr=\"cp437\",Dr=[[Zn,M],[Kn,M],[Gn,M],[Xn,P]],Ur={[P]:{getValue:Pr,bytes:4},[M]:{getValue:Br,bytes:8}};class Er{constructor(e,t={}){Object.assign(this,{reader:qn(e),options:t,config:de()})}async*getEntriesGenerator(e={}){const t=this;let{reader:n}=t;const{config:r}=t;if(await jn(n),n.size!==re&&n.readUint8Array||(n=new dn(await new Response(n.readable).blob()),await jn(n)),n.size<X)throw new Error(wr);n.chunkSize=fe(r);const i=await async function(e,t,n,r,i){const s=new Uint8Array(4);!function(e,t,n){e.setUint32(t,n,!0)}(Hr(s),0,t);const a=r+i;return await o(r)||await o(Math.min(a,n));async function o(t){const i=n-t,a=await On(e,i,t);for(let e=a.length-r;e>=0;e--)if(a[e]==s[0]&&a[e+1]==s[1]&&a[e+2]==s[2]&&a[e+3]==s[3])return{offset:i+e,buffer:a.slice(e,e+r).buffer}}}(n,Z,n.size,X,1048560);if(!i){throw Pr(Hr(await On(n,0,4)))==H?new Error(zr):new Error(gr)}const s=Hr(i);let a=Pr(s,12),o=Pr(s,16);const c=i.offset,l=Mr(s,20),d=c+X+l;let f=Mr(s,4);const u=n.lastDiskNumber||0;let p=Mr(s,6),m=Mr(s,8),h=0,w=0;if(o==M||a==M||m==P||p==P){const e=Hr(await On(n,i.offset-20,20));if(Pr(e,0)==G){o=Br(e,8);let t=await On(n,o,56,-1),r=Hr(t);const s=i.offset-20-56;if(Pr(r,0)!=K&&o!=s){const e=o;o=s,h=o-e,t=await On(n,o,56,-1),r=Hr(t)}if(Pr(r,0)!=K)throw new Error(xr);f==P&&(f=Pr(r,16)),p==P&&(p=Pr(r,20)),m==P&&(m=Br(r,32)),a==M&&(a=Br(r,40)),o-=a}}if(o>=n.size&&(h=n.size-o-a-X,o=n.size-a-X),u!=f)throw new Error(zr);if(o<0)throw new Error(wr);let g=0,x=await On(n,o,a,p),b=Hr(x);if(a){const e=i.offset-a;if(Pr(b,g)!=V&&o!=e){const t=o;o=e,h+=o-t,x=await On(n,o,a,p),b=Hr(x)}}const v=i.offset-o-(n.lastDiskOffset||0);if(a!=v&&v>=0&&(a=v,x=await On(n,o,a,p),b=Hr(x)),o<0||o>=n.size)throw new Error(wr);const y=Or(t,e,\"filenameEncoding\"),_=Or(t,e,\"commentEncoding\");for(let i=0;i<m;i++){const s=new Fr(n,r,t.options);if(Pr(b,g)!=V)throw new Error(br);jr(s,b,g+6);const a=Boolean(s.bitFlag.languageEncodingFlag),o=g+46,c=o+s.filenameLength,l=c+s.extraFieldLength,d=Mr(b,g+4),f=!(d>>8),u=d>>8==3,p=x.subarray(o,c),v=Mr(b,g+32),k=l+v,S=x.subarray(l,k),z=a,A=a,C=Pr(b,g+38),D=f&&!(16&~Ir(b,g+38))||u&&16384==(C>>16&61440)||p.length&&p[p.length-1]==ee.charCodeAt(0),U=u&&!!(C>>16&73),E=Pr(b,g+42)+h;Object.assign(s,{versionMadeBy:d,msDosCompatible:f,compressedSize:0,uncompressedSize:0,commentLength:v,directory:D,offset:E,diskNumberStart:Mr(b,g+34),internalFileAttributes:Mr(b,g+36),externalFileAttributes:C,rawFilename:p,filenameUTF8:z,commentUTF8:A,rawExtraField:x.subarray(c,l),executable:U}),s.internalFileAttribute=s.internalFileAttributes,s.externalFileAttribute=s.externalFileAttributes;const W=Or(t,e,\"decodeText\")||Pn,F=z?Ar:y||Cr,j=A?Ar:_||Cr;let q=W(p,F);q===re&&(q=Pn(p,F));let T=W(S,j);T===re&&(T=Pn(S,j)),Object.assign(s,{rawComment:S,filename:q,comment:T,directory:D||q.endsWith(ee)}),w=Math.max(E,w),qr(s,s,b,g+6),s.zipCrypto=s.encrypted&&!s.extraFieldAES;const O=new hr(s);O.getData=(e,t)=>s.getData(e,O,t),g=k;const{onprogress:R}=e;if(R)try{await R(i+1,m,new hr(s))}catch(e){}yield O}const k=Or(t,e,\"extractPrependedData\"),S=Or(t,e,\"extractAppendedData\");return k&&(t.prependedData=w>0?await On(n,0,w):new Uint8Array),t.comment=l?await On(n,c+X,l):new Uint8Array,S&&(t.appendedData=d<n.size?await On(n,d,n.size-d):new Uint8Array),!0}async getEntries(e={}){const t=[];for await(const n of this.getEntriesGenerator(e))t.push(n);return t}async close(){}}class Wr{constructor(e={}){const{readable:t,writable:n}=new TransformStream,r=new Er(t,e).getEntriesGenerator();this.readable=new ReadableStream({async pull(e){const{done:t,value:n}=await r.next();if(t)return e.close();const i={...n,readable:function(){const{readable:e,writable:t}=new TransformStream;if(n.getData)return n.getData(t),e}()};delete i.getData,e.enqueue(i)}}),this.writable=n}}class Fr{constructor(e,t,n){Object.assign(this,{reader:e,config:t,options:n})}async getData(e,t,n={}){const r=this,{reader:i,offset:s,diskNumberStart:a,extraFieldAES:o,compressionMethod:c,config:l,bitFlag:d,signature:f,rawLastModDate:u,uncompressedSize:p,compressedSize:m}=r,h=t.localDirectory={},w=Hr(await On(i,s,30,a));let g=Or(r,n,\"password\"),x=Or(r,n,\"rawPassword\");const b=Or(r,n,\"passThrough\");if(g=g&&g.length&&g,x=x&&x.length&&x,o&&99!=o.originalCompressionMethod)throw new Error(Sr);if(0!=c&&8!=c&&!b)throw new Error(Sr);if(Pr(w,0)!=B)throw new Error(vr);jr(h,w,4),h.rawExtraField=h.extraFieldLength?await On(i,s+30+h.filenameLength,h.extraFieldLength,a):new Uint8Array,qr(r,h,w,4,!0),Object.assign(t,{lastAccessDate:h.lastAccessDate,creationDate:h.creationDate});const v=r.encrypted&&h.encrypted&&!b,y=v&&!o;if(b||(t.zipCrypto=y),v){if(!y&&o.strength===re)throw new Error(kr);if(!g&&!x)throw new Error(_r)}const _=s+30+h.filenameLength+h.extraFieldLength,k=m,S=i.readable;Object.assign(S,{diskNumberStart:a,offset:_,size:k});const z=Or(r,n,\"signal\"),A=Or(r,n,\"checkPasswordOnly\");A&&(e=new WritableStream),e=Tn(e),await jn(e,b?m:p);const{writable:C}=e,{onstart:D,onprogress:U,onend:E}=n,W={options:{codecType:Ut,password:g,rawPassword:x,zipCrypto:y,encryptionStrength:o&&o.strength,signed:Or(r,n,\"checkSignature\")&&!b,passwordVerification:y&&(d.dataDescriptor?u>>>8&255:f>>>24&255),signature:f,compressed:0!=c&&!b,encrypted:r.encrypted&&!b,useWebWorkers:Or(r,n,\"useWebWorkers\"),useCompressionStream:Or(r,n,\"useCompressionStream\"),transferStreams:Or(r,n,\"transferStreams\"),checkPasswordOnly:A},config:l,streamOptions:{signal:z,size:k,onstart:D,onprogress:U,onend:E}};let F=0;try{({outputSize:F}=await Nt({readable:S,writable:C},W))}catch(e){if(!A||e.message!=We)throw e}finally{const e=Or(r,n,\"preventClose\");C.size+=F,e||C.locked||await C.getWriter().close()}return A?re:e.getData?e.getData():C}}function jr(e,t,n){const r=e.rawBitFlag=Mr(t,n+2),i=!(1&~r),s=Pr(t,n+6);Object.assign(e,{encrypted:i,version:Mr(t,n),bitFlag:{level:(6&r)>>1,dataDescriptor:!(8&~r),languageEncodingFlag:(r&$)==$},rawLastModDate:s,lastModDate:Rr(s),filenameLength:Mr(t,n+22),extraFieldLength:Mr(t,n+24)})}function qr(e,t,n,r,i){const{rawExtraField:s}=t,a=t.extraField=new Map,o=Hr(new Uint8Array(s));let c=0;try{for(;c<s.length;){const e=Mr(o,c),t=Mr(o,c+2);a.set(e,{type:e,data:s.slice(c+4,c+4+t)}),c+=4+t}}catch(e){}const l=Mr(n,r+4);Object.assign(t,{signature:Pr(n,r+10),uncompressedSize:Pr(n,r+18),compressedSize:Pr(n,r+14)});const d=a.get(1);d&&(!function(e,t){t.zip64=!0;const n=Hr(e.data),r=Dr.filter((([e,n])=>t[e]==n));for(let i=0,s=0;i<r.length;i++){const[a,o]=r[i];if(t[a]==o){const r=Ur[o];t[a]=e[a]=r.getValue(n,s),s+=r.bytes}else if(e[a])throw new Error(yr)}}(d,t),t.extraFieldZip64=d);const f=a.get(28789);f&&(Tr(f,Bn,Hn,t,e),t.extraFieldUnicodePath=f);const u=a.get(25461);u&&(Tr(u,Nn,Vn,t,e),t.extraFieldUnicodeComment=u);const p=a.get(39169);p?(!function(e,t,n){const r=Hr(e.data),i=Ir(r,4);Object.assign(e,{vendorVersion:Ir(r,0),vendorId:Ir(r,2),strength:i,originalCompressionMethod:n,compressionMethod:Mr(r,5)}),t.compressionMethod=e.compressionMethod}(p,t,l),t.extraFieldAES=p):t.compressionMethod=l;const m=a.get(10);m&&(!function(e,t){const n=Hr(e.data);let r,i=4;try{for(;i<e.data.length&&!r;){const t=Mr(n,i),s=Mr(n,i+2);1==t&&(r=e.data.slice(i+4,i+4+s)),i+=4+s}}catch(e){}try{if(r&&24==r.length){const n=Hr(r),i=n.getBigUint64(0,!0),s=n.getBigUint64(8,!0),a=n.getBigUint64(16,!0);Object.assign(e,{rawLastModDate:i,rawLastAccessDate:s,rawCreationDate:a});const o=Lr(i),c=Lr(s),l={lastModDate:o,lastAccessDate:c,creationDate:Lr(a)};Object.assign(e,l),Object.assign(t,l)}}catch(e){}}(m,t),t.extraFieldNTFS=m);const h=a.get(Y);h&&(!function(e,t,n){const r=Hr(e.data),i=Ir(r,0),s=[],a=[];n?(1&~i||(s.push(Jn),a.push(Yn)),2&~i||(s.push(Qn),a.push($n)),4&~i||(s.push(er),a.push(tr))):e.data.length>=5&&(s.push(Jn),a.push(Yn));let o=1;s.forEach(((n,i)=>{if(e.data.length>=o+4){const s=Pr(r,o);t[n]=e[n]=new Date(1e3*s);const c=a[i];e[c]=s}o+=4}))}(h,t,i),t.extraFieldExtendedTimestamp=h);const w=a.get(6534);w&&(t.extraFieldUSDZ=w)}function Tr(e,t,n,r,i){const s=Hr(e.data),a=new xe;a.append(i[n]);const o=Hr(new Uint8Array(4));o.setUint32(0,a.get(),!0);const c=Pr(s,1);Object.assign(e,{version:Ir(s,0),[t]:Pn(e.data.subarray(5)),valid:!i.bitFlag.languageEncodingFlag&&c==Pr(o,0)}),e.valid&&(r[t]=e[t],r[t+\"UTF8\"]=!0)}function Or(e,t,n){return t[n]===re?e.options[n]:t[n]}function Rr(e){const t=(4294901760&e)>>16,n=65535&e;try{return new Date(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&n)>>11,(2016&n)>>5,2*(31&n),0)}catch(e){}}function Lr(e){return new Date(Number(e/BigInt(1e4)-BigInt(116444736e5)))}function Ir(e,t){return e.getUint8(t)}function Mr(e,t){return e.getUint16(t,!0)}function Pr(e,t){return e.getUint32(t,!0)}function Br(e,t){return Number(e.getBigUint64(t,!0))}function Hr(e){return new DataView(e.buffer)}const Nr=\"File already exists\",Vr=\"Zip file comment exceeds 64KB\",Zr=\"File entry comment exceeds 64KB\",Kr=\"File entry name exceeds 64KB\",Gr=\"Version exceeds 65535\",Xr=\"The strength must equal 1, 2, or 3\",Jr=\"Extra field type exceeds 65535\",Yr=\"Extra field data exceeds 64KB\",Qr=\"Zip64 is not supported (make sure 'keepOrder' is set to 'true')\",$r=\"Undefined uncompressed size\",ei=new Uint8Array([7,0,2,0,65,69,3,0,0]);let ti=0;const ni=[];class ri{constructor(e,t={}){const n=(e=Tn(e)).availableSize!==re&&e.availableSize>0&&e.availableSize!==1/0&&e.maxSize!==re&&e.maxSize>0&&e.maxSize!==1/0;Object.assign(this,{writer:e,addSplitZipSignature:n,options:t,config:de(),files:new Map,filenames:new Set,offset:t.offset===re?e.writable.size:t.offset,pendingEntriesSize:0,pendingAddFileCalls:new Set,bufferedWrites:0})}async add(e=\"\",t,n={}){const r=this,{pendingAddFileCalls:i,config:s}=r;let a;ti<s.maxWorkers?ti++:await new Promise((e=>ni.push(e)));try{if(e=e.trim(),r.filenames.has(e))throw new Error(Nr);return r.filenames.add(e),a=async function(e,t,n,r){t=t.trim();const i=oi(e,r,ar),s=oi(e,r,dr,i?20:768),a=oi(e,r,pr);if(s>P)throw new Error(Gr);let o=oi(e,r,sr,0);0===o&&(o=oi(e,r,ir,0));!r.directory&&t.endsWith(ee)&&(r.directory=!0);const c=oi(e,r,ur);c?(t.endsWith(ee)||(t+=ee),0===o&&(o=16,i||(o|=16877<<16))):i||0!==o||(o=a?493<<16:27525120);const l=oi(e,r,\"encodeText\",ve);let d=l(t);d===re&&(d=ve(t));if(hi(d)>P)throw new Error(Kr);const f=r.comment||\"\";let u=l(f);u===re&&(u=ve(f));if(hi(u)>P)throw new Error(Zr);const p=oi(e,r,lr,20);if(p>P)throw new Error(Gr);const m=oi(e,r,Jn,new Date),h=oi(e,r,Qn),w=oi(e,r,er);let g=oi(e,r,rr,0);0===g&&(g=oi(e,r,nr,0));const x=oi(e,r,\"passThrough\");let b,v;x||(b=oi(e,r,\"password\"),v=oi(e,r,\"rawPassword\"));const y=oi(e,r,\"encryptionStrength\",3),_=oi(e,r,fr),k=oi(e,r,\"extendedTimestamp\",!0),S=oi(e,r,\"keepOrder\",!0),z=oi(e,r,\"level\"),A=oi(e,r,\"useWebWorkers\"),C=oi(e,r,\"bufferedWrite\"),D=oi(e,r,\"dataDescriptorSignature\",!1),U=oi(e,r,\"signal\"),E=oi(e,r,\"useUnicodeFileNames\",!0),W=oi(e,r,\"useCompressionStream\"),F=oi(e,r,\"compressionMethod\");let j=oi(e,r,\"dataDescriptor\",!0),q=oi(e,r,or);if(!(_||b===re&&v===re||y>=1&&y<=3))throw new Error(Xr);let T=new Uint8Array;const{extraField:O}=r;if(O){let e=0,t=0;O.forEach((t=>e+=4+hi(t))),T=new Uint8Array(e),O.forEach(((e,n)=>{if(n>P)throw new Error(Jr);if(hi(e)>P)throw new Error(Yr);pi(T,new Uint16Array([n]),t),pi(T,new Uint16Array([hi(e)]),t+2),pi(T,e,t+4),t+=4+hi(e)}))}let R=0,L=0,I=0;if(x&&(({uncompressedSize:I}=r),I===re))throw new Error($r);const V=!0===q;n&&(n=qn(n),await jn(n),x?R=ci(I):n.size===re?(j=!0,(q||q===re)&&(q=!0,I=R=4294967296)):(I=n.size,R=ci(I)));const{diskOffset:Z,diskNumber:K,maxSize:G}=e.writer,X=V||I>M,ie=V||R>M,se=V||e.offset+e.pendingEntriesSize-Z>M,ae=oi(e,r,\"supportZip64SplitFile\",!0),oe=ae&&V||K+Math.ceil(e.pendingEntriesSize/G)>P;if(se||X||ie||oe){if(!1===q||!S)throw new Error(Qr);q=!0}q=q||!1;const ce=oi(e,r,cr),{signature:le}=r;r=Object.assign({},r,{rawFilename:d,rawComment:u,version:p,versionMadeBy:s,lastModDate:m,lastAccessDate:h,creationDate:w,rawExtraField:T,zip64:q,zip64UncompressedSize:X,zip64CompressedSize:ie,zip64Offset:se,zip64DiskNumberStart:oe,password:b,rawPassword:v,level:W||e.config.CompressionStream!==re||e.config.CompressionStreamNative!==re?z:0,useWebWorkers:A,encryptionStrength:y,extendedTimestamp:k,zipCrypto:_,bufferedWrite:C,keepOrder:S,useUnicodeFileNames:E,dataDescriptor:j,dataDescriptorSignature:D,signal:U,msDosCompatible:i,internalFileAttribute:g,internalFileAttributes:g,externalFileAttribute:o,externalFileAttributes:o,useCompressionStream:W,passThrough:x,encrypted:Boolean(b&&hi(b)||v&&hi(v))||x&&ce,signature:le,compressionMethod:F});const de=function(e){const{rawFilename:t,lastModDate:n,lastAccessDate:r,creationDate:i,level:s,zip64:a,zipCrypto:o,useUnicodeFileNames:c,dataDescriptor:l,directory:d,rawExtraField:f,encryptionStrength:u,extendedTimestamp:p,encrypted:m}=e;let{version:h,compressionMethod:w}=e;const g=!d&&(s>0||s===re&&0!==w);let x,b,v,y;if(m&&!o){x=new Uint8Array(hi(ei)+2);const e=mi(x);di(e,0,J),pi(x,ei,2),li(e,8,u)}else x=new Uint8Array;if(p){v=new Uint8Array(9+(r?4:0)+(i?4:0));const e=mi(v);di(e,0,Y),di(e,2,hi(v)-4),y=1+(r?2:0)+(i?4:0),li(e,4,y);let t=5;fi(e,t,Math.floor(n.getTime()/1e3)),t+=4,r&&(fi(e,t,Math.floor(r.getTime()/1e3)),t+=4),i&&fi(e,t,Math.floor(i.getTime()/1e3));try{b=new Uint8Array(36);const e=mi(b),t=ai(n);di(e,0,10),di(e,2,32),di(e,8,1),di(e,10,24),ui(e,12,t),ui(e,20,ai(r)||t),ui(e,28,ai(i)||t)}catch(e){b=new Uint8Array}}else b=v=new Uint8Array;let _=0;c&&(_|=$);l&&(_|=8);w===re&&(w=g?8:0);8==w&&(s>=1&&s<3&&(_|=6),s>=3&&s<5&&(_|=1),9===s&&(_|=2));a&&(h=h>45?h:45);m&&(_|=1,o||(h=h>51?h:51,x[9]=w,w=99));const k=new Uint8Array(26),S=mi(k);di(S,0,h),di(S,2,_),di(S,4,w);const z=new Uint32Array(1),A=mi(z);let C;C=n<ne?ne:n>te?te:n;di(A,0,(C.getHours()<<6|C.getMinutes())<<5|C.getSeconds()/2),di(A,2,(C.getFullYear()-1980<<4|C.getMonth()+1)<<5|C.getDate());const D=z[0];fi(S,6,D),di(S,22,hi(t));const U=hi(x,v,b,f);di(S,24,U);const E=new Uint8Array(30+hi(t)+U);return fi(mi(E),0,B),pi(E,k,4),pi(E,t,30),pi(E,x,30+hi(t)),pi(E,v,30+hi(t,x)),pi(E,b,30+hi(t,x,v)),pi(E,f,30+hi(t,x,v,b)),{localHeaderArray:E,headerArray:k,headerView:S,lastModDate:n,rawLastModDate:D,encrypted:m,compressed:g,version:h,compressionMethod:w,extraFieldExtendedTimestampFlag:y,rawExtraFieldExtendedTimestamp:v,rawExtraFieldNTFS:b,rawExtraFieldAES:x,extraFieldLength:U}}(r),ue=function(e){const{zip64:t,dataDescriptor:n,dataDescriptorSignature:r}=e;let i,s=new Uint8Array,a=0;n&&(s=new Uint8Array(t?r?24:20:r?16:12),i=mi(s),r&&(a=4,fi(i,0,N)));return{dataDescriptorArray:s,dataDescriptorView:i,dataDescriptorOffset:a}}(r),pe=hi(de.localHeaderArray,ue.dataDescriptorArray);L=pe+R,e.options.usdz&&(L+=L+64);let me;e.pendingEntriesSize+=L;try{me=await async function(e,t,n,r,i){const{files:s,writer:a}=e,{keepOrder:o,dataDescriptor:c,signal:l}=i,{headerInfo:d}=r,{usdz:f}=e.options,u=Array.from(s.values()).pop();let p,m,h,w,g,x,b,v={};s.set(t,v);try{let d;o&&(d=u&&u.lock,y()),!(i.bufferedWrite||e.writerLocked||e.bufferedWrites&&o)&&c||f?(x=a,await _()):(x=new TransformStream,b=new Response(x.readable).blob(),x.writable.size=0,p=!0,e.bufferedWrites++,await jn(a)),await jn(x);const{writable:m}=a;let{diskOffset:h}=a;if(e.addSplitZipSignature){delete e.addSplitZipSignature;const t=new Uint8Array(4);fi(mi(t),0,H),await si(m,t),e.offset+=4}f&&function(e,t){const{headerInfo:n}=e;let{localHeaderArray:r,extraFieldLength:i}=n,s=mi(r),a=64-(t+hi(r))%64;a<4&&(a+=64);const o=new Uint8Array(a),c=mi(o);di(c,0,Q),di(c,2,a-2);const l=r;n.localHeaderArray=r=new Uint8Array(hi(l)+a),pi(r,l),pi(r,o,hi(l)),s=mi(r),di(s,28,i+a),e.metadataSize+=a}(r,e.offset-h),p||(await d,await k(m));const{diskNumber:S}=a;if(g=!0,v.diskNumberStart=S,v=await async function(e,t,{diskNumberStart:n,lock:r},i,s,a){const{headerInfo:o,dataDescriptorInfo:c,metadataSize:l}=i,{localHeaderArray:d,headerArray:f,lastModDate:u,rawLastModDate:p,encrypted:m,compressed:h,version:w,compressionMethod:g,rawExtraFieldExtendedTimestamp:x,extraFieldExtendedTimestampFlag:b,rawExtraFieldNTFS:v,rawExtraFieldAES:y}=o,{dataDescriptorArray:_}=c,{rawFilename:k,lastAccessDate:S,creationDate:z,password:A,rawPassword:C,level:D,zip64:U,zip64UncompressedSize:E,zip64CompressedSize:W,zip64Offset:F,zip64DiskNumberStart:j,zipCrypto:q,dataDescriptor:T,directory:O,executable:R,versionMadeBy:L,rawComment:I,rawExtraField:P,useWebWorkers:B,onstart:H,onprogress:N,onend:V,signal:Z,encryptionStrength:K,extendedTimestamp:G,msDosCompatible:X,internalFileAttributes:J,externalFileAttributes:Y,useCompressionStream:Q,passThrough:$}=a,ee={lock:r,versionMadeBy:L,zip64:U,directory:Boolean(O),executable:Boolean(R),filenameUTF8:!0,rawFilename:k,commentUTF8:!0,rawComment:I,rawExtraFieldExtendedTimestamp:x,rawExtraFieldNTFS:v,rawExtraFieldAES:y,rawExtraField:P,extendedTimestamp:G,msDosCompatible:X,internalFileAttributes:J,externalFileAttributes:Y,diskNumberStart:n};let{signature:te,uncompressedSize:ne}=a,ie=0;$||(ne=0);const{writable:se}=t;if(e){e.chunkSize=fe(s),await si(se,d);const t=e.readable,n=t.size=e.size,r={options:{codecType:Dt,level:D,rawPassword:C,password:A,encryptionStrength:K,zipCrypto:m&&q,passwordVerification:m&&q&&p>>8&255,signed:!$,compressed:h&&!$,encrypted:m&&!$,useWebWorkers:B,useCompressionStream:Q,transferStreams:!1},config:s,streamOptions:{signal:Z,size:n,onstart:H,onprogress:N,onend:V}},i=await Nt({readable:t,writable:se},r);ie=i.outputSize,$||(ne=i.inputSize,te=i.signature),se.size+=ne}else await si(se,d);let ae;if(U){let e=4;E&&(e+=8),W&&(e+=8),F&&(e+=8),j&&(e+=4),ae=new Uint8Array(e)}else ae=new Uint8Array;(function(e,t){const{signature:n,rawExtraFieldZip64:r,compressedSize:i,uncompressedSize:s,headerInfo:a,dataDescriptorInfo:o}=e,{headerView:c,encrypted:l}=a,{dataDescriptorView:d,dataDescriptorOffset:f}=o,{zip64:u,zip64UncompressedSize:p,zip64CompressedSize:m,zipCrypto:h,dataDescriptor:w}=t;l&&!h||n===re||(fi(c,10,n),w&&fi(d,f,n));if(u){const e=mi(r);di(e,0,1),di(e,2,hi(r)-4);let t=4;p&&(fi(c,18,M),ui(e,t,BigInt(s)),t+=8),m&&(fi(c,14,M),ui(e,t,BigInt(i))),w&&(ui(d,f+4,BigInt(i)),ui(d,f+12,BigInt(s)))}else fi(c,14,i),fi(c,18,s),w&&(fi(d,f+4,i),fi(d,f+8,s))})({signature:te,rawExtraFieldZip64:ae,compressedSize:ie,uncompressedSize:ne,headerInfo:o,dataDescriptorInfo:c},a),T&&await si(se,_);return Object.assign(ee,{uncompressedSize:ne,compressedSize:ie,lastModDate:u,rawLastModDate:p,creationDate:z,lastAccessDate:S,encrypted:m,zipCrypto:q,size:l+ie,compressionMethod:g,version:w,headerArray:f,signature:te,rawExtraFieldZip64:ae,extraFieldExtendedTimestampFlag:b,zip64UncompressedSize:E,zip64CompressedSize:W,zip64Offset:F,zip64DiskNumberStart:j}),ee}(n,x,v,r,e.config,i),g=!1,s.set(t,v),v.filename=t,p){await x.writable.getWriter().close();let e=await b;await d,await _(),w=!0,c||(e=await async function(e,t,n,{zipCrypto:r}){let i;i=await t.slice(0,26).arrayBuffer(),26!=i.byteLength&&(i=i.slice(0,26));const s=new DataView(i);e.encrypted&&!r||fi(s,14,e.signature);e.zip64?(fi(s,18,M),fi(s,22,M)):(fi(s,18,e.compressedSize),fi(s,22,e.uncompressedSize));return await si(n,new Uint8Array(i)),t.slice(i.byteLength)}(v,e,m,i)),await k(m),v.diskNumberStart=a.diskNumber,h=a.diskOffset,await e.stream().pipeTo(m,{preventClose:!0,preventAbort:!0,signal:l}),m.size+=e.size,w=!1}if(v.offset=e.offset-h,v.zip64)!function(e,t){const{rawExtraFieldZip64:n,offset:r,diskNumberStart:i}=e,{zip64UncompressedSize:s,zip64CompressedSize:a,zip64Offset:o,zip64DiskNumberStart:c}=t,l=mi(n);let d=4;s&&(d+=8);a&&(d+=8);o&&(ui(l,d,BigInt(r)),d+=8);c&&fi(l,d,i)}(v,i);else if(v.offset>M)throw new Error(Qr);return e.offset+=v.size,v}catch(n){if(p&&w||!p&&g){if(e.hasCorruptedEntries=!0,n)try{n.corruptedEntry=!0}catch(e){}p?e.offset+=x.writable.size:e.offset=x.writable.size}throw s.delete(t),n}finally{p&&e.bufferedWrites--,h&&h(),m&&m()}function y(){v.lock=new Promise((e=>h=e))}async function _(){e.writerLocked=!0;const{lockWriter:t}=e;e.lockWriter=new Promise((t=>m=()=>{e.writerLocked=!1,t()})),await t}async function k(e){hi(d.localHeaderArray)>a.availableSize&&(a.availableSize=0,await si(e,new Uint8Array))}}(e,t,n,{headerInfo:de,dataDescriptorInfo:ue,metadataSize:pe},r)}finally{e.pendingEntriesSize-=L}return Object.assign(me,{name:t,comment:f,extraField:O}),new hr(me)}(r,e,t,n),i.add(a),await a}catch(t){throw r.filenames.delete(e),t}finally{i.delete(a);const e=ni.shift();e?e():ti--}}async close(e=new Uint8Array,t={}){const{pendingAddFileCalls:n,writer:r}=this,{writable:i}=r;for(;n.size;)await Promise.allSettled(Array.from(n));await async function(e,t,n){const{files:r,writer:i}=e,{diskOffset:s,writable:a}=i;let{diskNumber:o}=i,c=0,l=0,d=e.offset-s,f=r.size;for(const[,e]of r){const{rawFilename:t,rawExtraFieldZip64:n,rawExtraFieldAES:r,rawComment:i,rawExtraFieldNTFS:s,rawExtraField:a,extendedTimestamp:o,extraFieldExtendedTimestampFlag:c,lastModDate:d}=e;let f;if(o){f=new Uint8Array(9);const e=mi(f);di(e,0,Y),di(e,2,5),li(e,4,c),fi(e,5,Math.floor(d.getTime()/1e3))}else f=new Uint8Array;e.rawExtraFieldCDExtendedTimestamp=f,l+=46+hi(t,i,n,r,s,f,a)}const u=new Uint8Array(l),p=mi(u);await jn(i);let m=0;for(const[e,t]of Array.from(r.values()).entries()){const{offset:s,rawFilename:o,rawExtraFieldZip64:l,rawExtraFieldAES:d,rawExtraFieldCDExtendedTimestamp:f,rawExtraFieldNTFS:h,rawExtraField:w,rawComment:g,versionMadeBy:x,headerArray:b,zip64:v,zip64UncompressedSize:y,zip64CompressedSize:_,zip64DiskNumberStart:k,zip64Offset:S,internalFileAttributes:z,externalFileAttributes:A,diskNumberStart:C,uncompressedSize:D,compressedSize:U}=t,E=hi(l,d,f,h,w);fi(p,c,V),di(p,c+4,x);const W=mi(b);y||fi(W,18,D),_||fi(W,14,U),pi(u,b,c+6),di(p,c+30,E),di(p,c+32,hi(g)),di(p,c+34,v&&k?P:C),di(p,c+36,z),A&&fi(p,c+38,A),fi(p,c+42,v&&S?M:s),pi(u,o,c+46),pi(u,l,c+46+hi(o)),pi(u,d,c+46+hi(o,l)),pi(u,f,c+46+hi(o,l,d)),pi(u,h,c+46+hi(o,l,d,f)),pi(u,w,c+46+hi(o,l,d,f,h)),pi(u,g,c+46+hi(o)+E);const F=46+hi(o,g)+E;if(c-m>i.availableSize&&(i.availableSize=0,await si(a,u.slice(m,c)),m=c),c+=F,n.onprogress)try{await n.onprogress(e+1,r.size,new hr(t))}catch(e){}}await si(a,m?u.slice(m):u);let h=i.diskNumber;const{availableSize:w}=i;w<X&&h++;let g=oi(e,n,or);if(d>M||l>M||f>P||h>P){if(!1===g)throw new Error(Qr);g=!0}const x=new Uint8Array(g?98:X),b=mi(x);if(c=0,g){fi(b,0,K),ui(b,4,BigInt(44)),di(b,12,45),di(b,14,45),fi(b,16,h),fi(b,20,o),ui(b,24,BigInt(f)),ui(b,32,BigInt(f)),ui(b,40,BigInt(l)),ui(b,48,BigInt(d)),fi(b,56,G),ui(b,64,BigInt(d)+BigInt(l)),fi(b,72,h+1);oi(e,n,\"supportZip64SplitFile\",!0)&&(h=P,o=P),f=P,d=M,l=M,c+=76}fi(b,c,Z),di(b,c+4,h),di(b,c+6,o),di(b,c+8,f),di(b,c+10,f),fi(b,c+12,l),fi(b,c+16,d);const v=hi(t);if(v){if(!(v<=P))throw new Error(Vr);di(b,c+20,v)}await si(a,x),v&&await si(a,t)}(this,e,t);return oi(this,t,\"preventClose\")||await i.getWriter().close(),r.getData?r.getData():i}}class ii{constructor(e={}){const{readable:t,writable:n}=new TransformStream;this.readable=t,this.zipWriter=new ri(n,e)}transform(e){const{readable:t,writable:n}=new TransformStream({flush:()=>{this.zipWriter.close()}});return this.zipWriter.add(e,t),{readable:this.readable,writable:n}}writable(e){const{readable:t,writable:n}=new TransformStream;return this.zipWriter.add(e,t),n}close(e=void 0,t={}){return this.zipWriter.close(e,t)}}async function si(e,t){const n=e.getWriter();try{await n.ready,e.size+=hi(t),await n.write(t)}finally{n.releaseLock()}}function ai(e){if(e)return(BigInt(e.getTime())+BigInt(116444736e5))*BigInt(1e4)}function oi(e,t,n,r){const i=t[n]===re?e.options[n]:t[n];return i===re?r:i}function ci(e){return e+5*(Math.floor(e/16383)+1)}function li(e,t,n){e.setUint8(t,n)}function di(e,t,n){e.setUint16(t,n,!0)}function fi(e,t,n){e.setUint32(t,n,!0)}function ui(e,t,n){e.setBigUint64(t,n,!0)}function pi(e,t,n){e.set(t,n)}function mi(e){return new DataView(e.buffer)}function hi(...e){let t=0;return e.forEach((e=>e&&(t+=e.length))),t}class wi{constructor(e,t,n,r){const i=this;if(e.root&&r&&r.getChildByName(t))throw new Error(\"Entry filename already exists\");n||(n={}),Object.assign(i,{fs:e,name:t,data:n.data,options:n.options,id:e.entries.length,parent:r,children:[],uncompressedSize:n.uncompressedSize||0,passThrough:n.passThrough}),e.entries.push(i),r&&i.parent.children.push(i)}moveTo(e){this.fs.move(this,e)}getFullname(){return this.getRelativeName()}getRelativeName(e=this.fs.root){let t=this.name,n=this.parent;for(;n&&n!=e;)t=(n.name?n.name+\"/\":\"\")+t,n=n.parent;return t}isDescendantOf(e){let t=this.parent;for(;t&&t.id!=e.id;)t=t.parent;return Boolean(t)}rename(e){const t=this.parent;if(t&&t.getChildByName(e))throw new Error(\"Entry filename already exists\");this.name=e}}class gi extends wi{constructor(e,t,n,r){super(e,t,n,r);const i=this;i.Reader=n.Reader,i.Writer=n.Writer,n.getData&&(i.getData=n.getData)}clone(){return new gi(this.fs,this.name,this)}async getData(e,t={}){const n=this;if(!e||e.constructor==n.Writer&&n.data)return n.data;{const r=n.reader=new n.Reader(n.data,t),i=n.data?n.data.uncompressedSize:r.size;await Promise.all([jn(r),jn(e,i)]);const s=r.readable;return s.size=n.uncompressedSize=r.size,await s.pipeTo(e.writable),e.getData?e.getData():e.writable}}isPasswordProtected(){return this.data.encrypted}async checkPassword(e,t={}){const n=this;if(!n.isPasswordProtected())return!0;t.password=e,t.checkPasswordOnly=!0;try{return await n.data.getData(null,t),!0}catch(e){if(e.message==Ue)return!1;throw e}}getText(e,t){return this.getData(new pn(e),t)}getBlob(e,t){return this.getData(new fn(e),t)}getData64URI(e,t){return this.getData(new ln(e),t)}getUint8Array(e){return this.getData(new En,e)}getWritable(e=new WritableStream,t){return this.getData({writable:e},t)}replaceBlob(e){Object.assign(this,{data:e,Reader:dn,Writer:fn,reader:null})}replaceText(e){Object.assign(this,{data:e,Reader:un,Writer:pn,reader:null})}replaceData64URI(e){Object.assign(this,{data:e,Reader:cn,Writer:ln,reader:null})}replaceUint8Array(e){Object.assign(this,{data:e,Reader:Un,Writer:En,reader:null})}replaceReadable(e){Object.assign(this,{data:null,Reader:function(){return{readable:e}},Writer:null,reader:null})}}class xi extends wi{constructor(e,t,n,r){super(e,t,n,r),this.directory=!0}clone(e){const t=this,n=new xi(t.fs,t.name);return e&&(n.children=t.children.map((t=>{const r=t.clone(e);return r.parent=n,r}))),n}addDirectory(e,t){return Ai(this,e,{options:t},!0)}addText(e,t,n={}){return Ai(this,e,{data:t,Reader:un,Writer:pn,options:n,uncompressedSize:t.length})}addBlob(e,t,n={}){return Ai(this,e,{data:t,Reader:dn,Writer:fn,options:n,uncompressedSize:t.size})}addData64URI(e,t,n={}){let r=t.length;for(;\"=\"==t.charAt(r-1);)r--;const i=t.indexOf(\",\")+1;return Ai(this,e,{data:t,Reader:cn,Writer:ln,options:n,uncompressedSize:Math.floor(.75*(r-i))})}addUint8Array(e,t,n={}){return Ai(this,e,{data:t,Reader:Un,Writer:En,options:n,uncompressedSize:t.length})}addHttpContent(e,t,n={}){return Ai(this,e,{data:t,Reader:class extends Cn{constructor(e){super(e,n)}},options:n})}addReadable(e,t,n={}){return Ai(this,e,{Reader:function(){return{readable:t}},options:n})}addFileSystemEntry(e,t={}){return ki(this,e,t)}addFileSystemHandle(e,t={}){return ki(this,e,t)}addFile(e,t={}){return t.lastModDate||(t.lastModDate=new Date(e.lastModified)),Ai(this,e.name,{data:e,Reader:function(){return{readable:e.stream(),size:e.size}},options:t,uncompressedSize:e.size})}addData(e,t){return Ai(this,e,t)}importBlob(e,t){return this.importZip(new dn(e),t)}importData64URI(e,t){return this.importZip(new cn(e),t)}importUint8Array(e,t){return this.importZip(new Un(e),t)}importHttpContent(e,t){return this.importZip(new Cn(e,t),t)}importReadable(e,t){return this.importZip({readable:e},t)}exportBlob(e={}){return this.exportZip(new fn(e.mimeType||\"application/zip\"),e)}exportData64URI(e={}){return this.exportZip(new ln(e.mimeType||\"application/zip\"),e)}exportUint8Array(e={}){return this.exportZip(new En,e)}async exportWritable(e=new WritableStream,t={}){return await this.exportZip({writable:e},t),e}async importZip(e,t={}){await jn(e);const n=new Er(e,t),r=[],i=await n.getEntries();for(const e of i){let n=this;try{const i=e.filename.split(\"/\"),s=i.pop();i.forEach(((t,s)=>{const a=n;n=n.getChildByName(t),n||(n=new xi(this.fs,t,{data:s==i.length-1?e:null},a),r.push(n))})),e.directory||r.push(Ai(n,s,{data:e,Reader:vi(Object.assign({},t)),uncompressedSize:e.uncompressedSize,passThrough:t.passThrough}))}catch(t){try{t.cause={entry:e}}catch(e){}throw t}}return r}async exportZip(e,t){const n=this;t.bufferedWrite===re&&(t.bufferedWrite=!0),await Promise.all([yi(n,t.readerOptions),jn(e)]);const r=new ri(e,t);return await async function(e,t,n,r){const i=t,s=new Map;async function a(e,t){async function o(){if(r.bufferedWrite)await Promise.allSettled(t.children.map(c));else for(const e of t.children)await c(e)}async function c(t){const o=r.relativePath?t.getRelativeName(i):t.getFullname(),c=t.options||{};let l={};if(t.data instanceof hr){const{externalFileAttributes:e,versionMadeBy:n,comment:r,lastModDate:i,creationDate:s,lastAccessDate:a,uncompressedSize:o,encrypted:c,zipCrypto:d,signature:f,compressionMethod:u,extraFieldAES:p}=t.data;if(l={externalFileAttributes:e,versionMadeBy:n,comment:r,lastModDate:i,creationDate:s,lastAccessDate:a},t.passThrough){let e,t;0===u&&(e=0),p&&(t=p.strength),l=Object.assign(l,{passThrough:!0,encrypted:c,zipCrypto:d,signature:f,uncompressedSize:o,level:e,encryptionStrength:t,compressionMethod:u})}}await e.add(o,t.reader,Object.assign({directory:t.directory},Object.assign({},r,l,c,{onprogress:async e=>{if(r.onprogress){s.set(o,e);try{await r.onprogress(Array.from(s.values()).reduce(((e,t)=>e+t)),n)}catch(e){}}}}))),await a(e,t)}await o()}await a(e,t)}(r,n,function(e,t){let n=0;return e.forEach(r),n;function r(e){n+=e[t],e.children&&e.children.forEach(r)}}([n],\"uncompressedSize\"),t),await r.close(),e.getData?e.getData():e.writable}getChildByName(e){const t=this.children;for(let n=0;n<t.length;n++){const r=t[n];if(r.name==e)return r}}isPasswordProtected(){const e=this.children;for(let t=0;t<e.length;t++){if(e[t].isPasswordProtected())return!0}return!1}async checkPassword(e,t={}){const n=this.children;return!(await Promise.all(n.map((n=>n.checkPassword(e,t))))).includes(!1)}}const bi={FS:class{constructor(){zi(this)}get children(){return this.root.children}remove(e){_i(e),this.entries[e.id]=null}move(e,t){if(e==this.root)throw new Error(\"Root directory cannot be moved\");if(!t.directory)throw new Error(\"Target entry is not a directory\");if(t.isDescendantOf(e))throw new Error(\"Entry is a ancestor of target entry\");if(e!=t){if(t.getChildByName(e.name))throw new Error(\"Entry filename already exists\");_i(e),e.parent=t,t.children.push(e)}}find(e){const t=e.split(\"/\");let n=this.root;for(let e=0;n&&e<t.length;e++)n=n.getChildByName(t[e]);return n}getById(e){return this.entries[e]}getChildByName(e){return this.root.getChildByName(e)}addDirectory(e,t){return this.root.addDirectory(e,t)}addText(e,t,n){return this.root.addText(e,t,n)}addBlob(e,t,n){return this.root.addBlob(e,t,n)}addData64URI(e,t,n){return this.root.addData64URI(e,t,n)}addUint8Array(e,t,n){return this.root.addUint8Array(e,t,n)}addHttpContent(e,t,n){return this.root.addHttpContent(e,t,n)}addReadable(e,t,n){return this.root.addReadable(e,t,n)}addFileSystemEntry(e,t){return this.root.addFileSystemEntry(e,t)}addFileSystemHandle(e,t){return this.root.addFileSystemHandle(e,t)}addFile(e,t){return this.root.addFile(e,t)}addData(e,t){return this.root.addData(e,t)}importBlob(e,t){return zi(this),this.root.importBlob(e,t)}importData64URI(e,t){return zi(this),this.root.importData64URI(e,t)}importUint8Array(e,t){return zi(this),this.root.importUint8Array(e,t)}importHttpContent(e,t){return zi(this),this.root.importHttpContent(e,t)}importReadable(e,t){return zi(this),this.root.importReadable(e,t)}importZip(e,t){return this.root.importZip(e,t)}exportBlob(e){return this.root.exportBlob(e)}exportData64URI(e){return this.root.exportData64URI(e)}exportUint8Array(e){return this.root.exportUint8Array(e)}exportWritable(e,t){return this.root.exportWritable(e,t)}isPasswordProtected(){return this.root.isPasswordProtected()}checkPassword(e,t){return this.root.checkPassword(e,t)}},ZipDirectoryEntry:xi,ZipFileEntry:gi};function vi(e){return class extends an{constructor(e,t={}){super(),this.entry=e,this.options=t}async init(){const t=this;t.size=t.entry.uncompressedSize;const n=await t.entry.getData(new fn,Object.assign({},t.options,e));t.data=n,t.blobReader=new dn(n),super.init()}readUint8Array(e,t){return this.blobReader.readUint8Array(e,t)}}}async function yi(e,t){e.children.length&&await Promise.all(e.children.map((async e=>{if(e.directory)await yi(e,t);else{const n=e.reader=new e.Reader(e.data,t);try{await jn(n)}catch(t){try{t.entryId=e.id,t.cause={entry:e}}catch(e){}throw t}e.uncompressedSize=n.size}})))}function _i(e){if(e.parent){const t=e.parent.children;t.forEach(((n,r)=>{n.id==e.id&&t.splice(r,1)}))}}function ki(e,t,n){return async function e(t,r,i){if(r)try{if((r.isFile||r.isDirectory)&&(r=await Si(r)),\"file\"==r.kind){const e=await r.getFile();i.push(t.addData(e.name,{Reader:function(){return{readable:e.stream(),size:e.size}},options:Object.assign({},{lastModDate:new Date(e.lastModified)},n),uncompressedSize:e.size}))}else if(\"directory\"==r.kind){const n=t.addDirectory(r.name);i.push(n);for await(const t of r.values())await e(n,t,i)}}catch(e){const t=e.message+(r?\" (\"+r.name+\")\":\"\");throw new Error(t)}return i}(e,t,[])}async function Si(e){const t={name:e.name};if(e.isFile&&(t.kind=\"file\",t.getFile=()=>new Promise(((t,n)=>e.file(t,n)))),e.isDirectory){t.kind=\"directory\";const n=await async function(e){const t=[];function n(e,r,i){e.readEntries((async s=>{if(s.length){for(const e of s)t.push(await Si(e));n(e,r,i)}else r(t)}),i)}return await new Promise(((t,r)=>n(e.createReader(),t,r))),{[Symbol.iterator](){let e=0;return{next(){const n={value:t[e],done:e===t.length};return e++,n}}}}}(e);t.values=()=>n}return t}function zi(e){e.entries=[],e.root=new xi(e)}function Ai(e,t,n,r){if(e.directory)return r?new xi(e.fs,t,n,e):new gi(e.fs,t,n,e);throw new Error(\"Parent entry is not a directory\")}let Ci;try{Ci=import.meta.url}catch(e){}ue({baseURL:Ci}),function(e,t={}){const n='const{Array:e,Object:t,Number:n,Math:r,Error:s,Uint8Array:i,Uint16Array:o,Uint32Array:c,Int32Array:f,Map:a,DataView:l,Promise:u,TextEncoder:w,crypto:h,postMessage:d,TransformStream:p,ReadableStream:y,WritableStream:m,CompressionStream:b,DecompressionStream:g}=self,k=void 0,v=\"undefined\",S=\"function\";class z{constructor(e){return class extends p{constructor(t,n){const r=new e(n);super({transform(e,t){t.enqueue(r.append(e))},flush(e){const t=r.flush();t&&e.enqueue(t)}})}}}}const C=[];for(let e=0;256>e;e++){let t=e;for(let e=0;8>e;e++)1&t?t=t>>>1^3988292384:t>>>=1;C[e]=t}class x{constructor(e){this.t=e||-1}append(e){let t=0|this.t;for(let n=0,r=0|e.length;r>n;n++)t=t>>>8^C[255&(t^e[n])];this.t=t}get(){return~this.t}}class A extends p{constructor(){let e;const t=new x;super({transform(e,n){t.append(e),n.enqueue(e)},flush(){const n=new i(4);new l(n.buffer).setUint32(0,t.get()),e.value=n}}),e=this}}const _={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const n=e[e.length-1],r=_.i(n);return 32===r?e.concat(t):_.o(t,r,0|n,e.slice(0,e.length-1))},l(e){const t=e.length;if(0===t)return 0;const n=e[t-1];return 32*(t-1)+_.i(n)},u(e,t){if(32*e.length<t)return e;const n=(e=e.slice(0,r.ceil(t/32))).length;return t&=31,n>0&&t&&(e[n-1]=_.h(t,e[n-1]&2147483648>>t-1,1)),e},h:(e,t,n)=>32===e?t:(n?0|t:t<<32-e)+1099511627776*e,i:e=>r.round(e/1099511627776)||32,o(e,t,n,r){for(void 0===r&&(r=[]);t>=32;t-=32)r.push(n),n=0;if(0===t)return r.concat(e);for(let s=0;s<e.length;s++)r.push(n|e[s]>>>t),n=e[s]<<32-t;const s=e.length?e[e.length-1]:0,i=_.i(s);return r.push(_.h(t+i&31,t+i>32?n:r.pop(),1)),r}},I={bytes:{p(e){const t=_.l(e)/8,n=new i(t);let r;for(let s=0;t>s;s++)3&s||(r=e[s/4]),n[s]=r>>>24,r<<=8;return n},m(e){const t=[];let n,r=0;for(n=0;n<e.length;n++)r=r<<8|e[n],3&~n||(t.push(r),r=0);return 3&n&&t.push(_.h(8*(3&n),r)),t}}},P=class{constructor(e){const t=this;t.blockSize=512,t.k=[1732584193,4023233417,2562383102,271733878,3285377520],t.v=[1518500249,1859775393,2400959708,3395469782],e?(t.S=e.S.slice(0),t.C=e.C.slice(0),t.A=e.A):t.reset()}reset(){const e=this;return e.S=e.k.slice(0),e.C=[],e.A=0,e}update(e){const t=this;\"string\"==typeof e&&(e=I._.m(e));const n=t.C=_.concat(t.C,e),r=t.A,i=t.A=r+_.l(e);if(i>9007199254740991)throw new s(\"Cannot hash more than 2^53 - 1 bits\");const o=new c(n);let f=0;for(let e=t.blockSize+r-(t.blockSize+r&t.blockSize-1);i>=e;e+=t.blockSize)t.I(o.subarray(16*f,16*(f+1))),f+=1;return n.splice(0,16*f),t}P(){const e=this;let t=e.C;const n=e.S;t=_.concat(t,[_.h(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(r.floor(e.A/4294967296)),t.push(0|e.A);t.length;)e.I(t.splice(0,16));return e.reset(),n}D(e,t,n,r){return e>19?e>39?e>59?e>79?void 0:t^n^r:t&n|t&r|n&r:t^n^r:t&n|~t&r}V(e,t){return t<<e|t>>>32-e}I(t){const n=this,s=n.S,i=e(80);for(let e=0;16>e;e++)i[e]=t[e];let o=s[0],c=s[1],f=s[2],a=s[3],l=s[4];for(let e=0;79>=e;e++){16>e||(i[e]=n.V(1,i[e-3]^i[e-8]^i[e-14]^i[e-16]));const t=n.V(5,o)+n.D(e,c,f,a)+l+i[e]+n.v[r.floor(e/20)]|0;l=a,a=f,f=n.V(30,c),c=o,o=t}s[0]=s[0]+o|0,s[1]=s[1]+c|0,s[2]=s[2]+f|0,s[3]=s[3]+a|0,s[4]=s[4]+l|0}},D={getRandomValues(e){const t=new c(e.buffer),n=e=>{let t=987654321;const n=4294967295;return()=>(t=36969*(65535&t)+(t>>16)&n,(((t<<16)+(e=18e3*(65535&e)+(e>>16)&n)&n)/4294967296+.5)*(r.random()>.5?1:-1))};for(let s,i=0;i<e.length;i+=4){const e=n(4294967296*(s||r.random()));s=987654071*e(),t[i/4]=4294967296*e()|0}return e}},V={importKey:e=>new V.R(I.bytes.m(e)),B(e,t,n,r){if(n=n||1e4,0>r||0>n)throw new s(\"invalid params to pbkdf2\");const i=1+(r>>5)<<2;let o,c,f,a,u;const w=new ArrayBuffer(i),h=new l(w);let d=0;const p=_;for(t=I.bytes.m(t),u=1;(i||1)>d;u++){for(o=c=e.encrypt(p.concat(t,[u])),f=1;n>f;f++)for(c=e.encrypt(c),a=0;a<c.length;a++)o[a]^=c[a];for(f=0;(i||1)>d&&f<o.length;f++)h.setInt32(d,o[f]),d+=4}return w.slice(0,r/8)},R:class{constructor(e){const t=this,n=t.M=P,r=[[],[]];t.U=[new n,new n];const s=t.U[0].blockSize/32;e.length>s&&(e=(new n).update(e).P());for(let t=0;s>t;t++)r[0][t]=909522486^e[t],r[1][t]=1549556828^e[t];t.U[0].update(r[0]),t.U[1].update(r[1]),t.K=new n(t.U[0])}reset(){const e=this;e.K=new e.M(e.U[0]),e.N=!1}update(e){this.N=!0,this.K.update(e)}digest(){const e=this,t=e.K.P(),n=new e.M(e.U[1]).update(t).P();return e.reset(),n}encrypt(e){if(this.N)throw new s(\"encrypt on already updated hmac called!\");return this.update(e),this.digest(e)}}},R=typeof h!=v&&typeof h.getRandomValues==S,B=\"Invalid password\",E=\"Invalid signature\",M=\"zipjs-abort-check-password\";function U(e){return R?h.getRandomValues(e):D.getRandomValues(e)}const K=16,N={name:\"PBKDF2\"},O=t.assign({hash:{name:\"HMAC\"}},N),T=t.assign({iterations:1e3,hash:{name:\"SHA-1\"}},N),W=[\"deriveBits\"],j=[8,12,16],H=[16,24,32],L=10,F=[0,0,0,0],q=typeof h!=v,G=q&&h.subtle,J=q&&typeof G!=v,Q=I.bytes,X=class{constructor(e){const t=this;t.O=[[[],[],[],[],[]],[[],[],[],[],[]]],t.O[0][0][0]||t.T();const n=t.O[0][4],r=t.O[1],i=e.length;let o,c,f,a=1;if(4!==i&&6!==i&&8!==i)throw new s(\"invalid aes key size\");for(t.v=[c=e.slice(0),f=[]],o=i;4*i+28>o;o++){let e=c[o-1];(o%i===0||8===i&&o%i===4)&&(e=n[e>>>24]<<24^n[e>>16&255]<<16^n[e>>8&255]<<8^n[255&e],o%i===0&&(e=e<<8^e>>>24^a<<24,a=a<<1^283*(a>>7))),c[o]=c[o-i]^e}for(let e=0;o;e++,o--){const t=c[3&e?o:o-4];f[e]=4>=o||4>e?t:r[0][n[t>>>24]]^r[1][n[t>>16&255]]^r[2][n[t>>8&255]]^r[3][n[255&t]]}}encrypt(e){return this.W(e,0)}decrypt(e){return this.W(e,1)}T(){const e=this.O[0],t=this.O[1],n=e[4],r=t[4],s=[],i=[];let o,c,f,a;for(let e=0;256>e;e++)i[(s[e]=e<<1^283*(e>>7))^e]=e;for(let l=o=0;!n[l];l^=c||1,o=i[o]||1){let i=o^o<<1^o<<2^o<<3^o<<4;i=i>>8^255&i^99,n[l]=i,r[i]=l,a=s[f=s[c=s[l]]];let u=16843009*a^65537*f^257*c^16843008*l,w=257*s[i]^16843008*i;for(let n=0;4>n;n++)e[n][l]=w=w<<24^w>>>8,t[n][i]=u=u<<24^u>>>8}for(let n=0;5>n;n++)e[n]=e[n].slice(0),t[n]=t[n].slice(0)}W(e,t){if(4!==e.length)throw new s(\"invalid aes block size\");const n=this.v[t],r=n.length/4-2,i=[0,0,0,0],o=this.O[t],c=o[0],f=o[1],a=o[2],l=o[3],u=o[4];let w,h,d,p=e[0]^n[0],y=e[t?3:1]^n[1],m=e[2]^n[2],b=e[t?1:3]^n[3],g=4;for(let e=0;r>e;e++)w=c[p>>>24]^f[y>>16&255]^a[m>>8&255]^l[255&b]^n[g],h=c[y>>>24]^f[m>>16&255]^a[b>>8&255]^l[255&p]^n[g+1],d=c[m>>>24]^f[b>>16&255]^a[p>>8&255]^l[255&y]^n[g+2],b=c[b>>>24]^f[p>>16&255]^a[y>>8&255]^l[255&m]^n[g+3],g+=4,p=w,y=h,m=d;for(let e=0;4>e;e++)i[t?3&-e:e]=u[p>>>24]<<24^u[y>>16&255]<<16^u[m>>8&255]<<8^u[255&b]^n[g++],w=p,p=y,y=m,m=b,b=w;return i}},Y=class{constructor(e,t){this.j=e,this.H=t,this.L=t}reset(){this.L=this.H}update(e){return this.F(this.j,e,this.L)}q(e){if(255&~(e>>24))e+=1<<24;else{let t=e>>16&255,n=e>>8&255,r=255&e;255===t?(t=0,255===n?(n=0,255===r?r=0:++r):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=r}return e}G(e){0===(e[0]=this.q(e[0]))&&(e[1]=this.q(e[1]))}F(e,t,n){let r;if(!(r=t.length))return[];const s=_.l(t);for(let s=0;r>s;s+=4){this.G(n);const r=e.encrypt(n);t[s]^=r[0],t[s+1]^=r[1],t[s+2]^=r[2],t[s+3]^=r[3]}return _.u(t,s)}},Z=V.R;let $=q&&J&&typeof G.importKey==S,ee=q&&J&&typeof G.deriveBits==S;class te extends p{constructor({password:e,rawPassword:n,signed:r,encryptionStrength:o,checkPasswordOnly:c}){super({start(){t.assign(this,{ready:new u((e=>this.J=e)),password:ie(e,n),signed:r,X:o-1,pending:new i})},async transform(e,t){const n=this,{password:r,X:o,J:f,ready:a}=n;r?(await(async(e,t,n,r)=>{const i=await se(e,t,n,ce(r,0,j[t])),o=ce(r,j[t]);if(i[0]!=o[0]||i[1]!=o[1])throw new s(B)})(n,o,r,ce(e,0,j[o]+2)),e=ce(e,j[o]+2),c?t.error(new s(M)):f()):await a;const l=new i(e.length-L-(e.length-L)%K);t.enqueue(re(n,e,l,0,L,!0))},async flush(e){const{signed:t,Y:n,Z:r,pending:o,ready:c}=this;if(r&&n){await c;const f=ce(o,0,o.length-L),a=ce(o,o.length-L);let l=new i;if(f.length){const e=ae(Q,f);r.update(e);const t=n.update(e);l=fe(Q,t)}if(t){const e=ce(fe(Q,r.digest()),0,L);for(let t=0;L>t;t++)if(e[t]!=a[t])throw new s(E)}e.enqueue(l)}}})}}class ne extends p{constructor({password:e,rawPassword:n,encryptionStrength:r}){let s;super({start(){t.assign(this,{ready:new u((e=>this.J=e)),password:ie(e,n),X:r-1,pending:new i})},async transform(e,t){const n=this,{password:r,X:s,J:o,ready:c}=n;let f=new i;r?(f=await(async(e,t,n)=>{const r=U(new i(j[t]));return oe(r,await se(e,t,n,r))})(n,s,r),o()):await c;const a=new i(f.length+e.length-e.length%K);a.set(f,0),t.enqueue(re(n,e,a,f.length,0))},async flush(e){const{Y:t,Z:n,pending:r,ready:o}=this;if(n&&t){await o;let c=new i;if(r.length){const e=t.update(ae(Q,r));n.update(e),c=fe(Q,e)}s.signature=fe(Q,n.digest()).slice(0,L),e.enqueue(oe(c,s.signature))}}}),s=this}}function re(e,t,n,r,s,o){const{Y:c,Z:f,pending:a}=e,l=t.length-s;let u;for(a.length&&(t=oe(a,t),n=((e,t)=>{if(t&&t>e.length){const n=e;(e=new i(t)).set(n,0)}return e})(n,l-l%K)),u=0;l-K>=u;u+=K){const e=ae(Q,ce(t,u,u+K));o&&f.update(e);const s=c.update(e);o||f.update(s),n.set(fe(Q,s),u+r)}return e.pending=ce(t,u),n}async function se(n,r,s,o){n.password=null;const c=await(async(e,t,n,r,s)=>{if(!$)return V.importKey(t);try{return await G.importKey(\"raw\",t,n,!1,s)}catch(e){return $=!1,V.importKey(t)}})(0,s,O,0,W),f=await(async(e,t,n)=>{if(!ee)return V.B(t,e.salt,T.iterations,n);try{return await G.deriveBits(e,t,n)}catch(r){return ee=!1,V.B(t,e.salt,T.iterations,n)}})(t.assign({salt:o},T),c,8*(2*H[r]+2)),a=new i(f),l=ae(Q,ce(a,0,H[r])),u=ae(Q,ce(a,H[r],2*H[r])),w=ce(a,2*H[r]);return t.assign(n,{keys:{key:l,$:u,passwordVerification:w},Y:new Y(new X(l),e.from(F)),Z:new Z(u)}),w}function ie(e,t){return t===k?(e=>{if(typeof w==v){const t=new i((e=unescape(encodeURIComponent(e))).length);for(let n=0;n<t.length;n++)t[n]=e.charCodeAt(n);return t}return(new w).encode(e)})(e):t}function oe(e,t){let n=e;return e.length+t.length&&(n=new i(e.length+t.length),n.set(e,0),n.set(t,e.length)),n}function ce(e,t,n){return e.subarray(t,n)}function fe(e,t){return e.p(t)}function ae(e,t){return e.m(t)}class le extends p{constructor({password:e,passwordVerification:n,checkPasswordOnly:r}){super({start(){t.assign(this,{password:e,passwordVerification:n}),de(this,e)},transform(e,t){const n=this;if(n.password){const t=we(n,e.subarray(0,12));if(n.password=null,t[11]!=n.passwordVerification)throw new s(B);e=e.subarray(12)}r?t.error(new s(M)):t.enqueue(we(n,e))}})}}class ue extends p{constructor({password:e,passwordVerification:n}){super({start(){t.assign(this,{password:e,passwordVerification:n}),de(this,e)},transform(e,t){const n=this;let r,s;if(n.password){n.password=null;const t=U(new i(12));t[11]=n.passwordVerification,r=new i(e.length+t.length),r.set(he(n,t),0),s=12}else r=new i(e.length),s=0;r.set(he(n,e),s),t.enqueue(r)}})}}function we(e,t){const n=new i(t.length);for(let r=0;r<t.length;r++)n[r]=ye(e)^t[r],pe(e,n[r]);return n}function he(e,t){const n=new i(t.length);for(let r=0;r<t.length;r++)n[r]=ye(e)^t[r],pe(e,t[r]);return n}function de(e,n){const r=[305419896,591751049,878082192];t.assign(e,{keys:r,ee:new x(r[0]),te:new x(r[2])});for(let t=0;t<n.length;t++)pe(e,n.charCodeAt(t))}function pe(e,t){let[n,s,i]=e.keys;e.ee.append([t]),n=~e.ee.get(),s=be(r.imul(be(s+me(n)),134775813)+1),e.te.append([s>>>24]),i=~e.te.get(),e.keys=[n,s,i]}function ye(e){const t=2|e.keys[2];return me(r.imul(t,1^t)>>>8)}function me(e){return 255&e}function be(e){return 4294967295&e}const ge=\"deflate-raw\";class ke extends p{constructor(e,{chunkSize:t,CompressionStream:n,CompressionStreamNative:r}){super({});const{compressed:s,encrypted:i,useCompressionStream:o,zipCrypto:c,signed:f,level:a}=e,u=this;let w,h,d=Se(super.readable);i&&!c||!f||(w=new A,d=xe(d,w)),s&&(d=Ce(d,o,{level:a,chunkSize:t},r,n)),i&&(c?d=xe(d,new ue(e)):(h=new ne(e),d=xe(d,h))),ze(u,d,(()=>{let e;i&&!c&&(e=h.signature),i&&!c||!f||(e=new l(w.value.buffer).getUint32(0)),u.signature=e}))}}class ve extends p{constructor(e,{chunkSize:t,DecompressionStream:n,DecompressionStreamNative:r}){super({});const{zipCrypto:i,encrypted:o,signed:c,signature:f,compressed:a,useCompressionStream:u}=e;let w,h,d=Se(super.readable);o&&(i?d=xe(d,new le(e)):(h=new te(e),d=xe(d,h))),a&&(d=Ce(d,u,{chunkSize:t},r,n)),o&&!i||!c||(w=new A,d=xe(d,w)),ze(this,d,(()=>{if((!o||i)&&c){const e=new l(w.value.buffer);if(f!=e.getUint32(0,!1))throw new s(E)}}))}}function Se(e){return xe(e,new p({transform(e,t){e&&e.length&&t.enqueue(e)}}))}function ze(e,n,r){n=xe(n,new p({flush:r})),t.defineProperty(e,\"readable\",{get:()=>n})}function Ce(e,t,n,r,s){try{e=xe(e,new(t&&r?r:s)(ge,n))}catch(r){if(!t)return e;try{e=xe(e,new s(ge,n))}catch(t){return e}}return e}function xe(e,t){return e.pipeThrough(t)}const Ae=\"data\",_e=\"close\";class Ie extends p{constructor(e,n){super({});const r=this,{codecType:s}=e;let i;s.startsWith(\"deflate\")?i=ke:s.startsWith(\"inflate\")&&(i=ve);let o=0,c=0;const f=new i(e,n),a=super.readable,l=new p({transform(e,t){e&&e.length&&(c+=e.length,t.enqueue(e))},flush(){t.assign(r,{inputSize:c})}}),u=new p({transform(e,t){e&&e.length&&(o+=e.length,t.enqueue(e))},flush(){const{signature:e}=f;t.assign(r,{signature:e,outputSize:o,inputSize:c})}});t.defineProperty(r,\"readable\",{get:()=>a.pipeThrough(l).pipeThrough(f).pipeThrough(u)})}}class Pe extends p{constructor(e){let t;super({transform:function n(r,s){if(t){const e=new i(t.length+r.length);e.set(t),e.set(r,t.length),r=e,t=null}r.length>e?(s.enqueue(r.slice(0,e)),n(r.slice(e),s)):t=r},flush(e){t&&t.length&&e.enqueue(t)}})}}const De=new a,Ve=new a;let Re,Be=0,Ee=!0;async function Me(e){try{const{options:t,scripts:r,config:s}=e;if(r&&r.length)try{Ee?importScripts.apply(k,r):await Ue(r)}catch(e){Ee=!1,await Ue(r)}self.initCodec&&self.initCodec(),s.CompressionStreamNative=self.CompressionStream,s.DecompressionStreamNative=self.DecompressionStream,self.Deflate&&(s.CompressionStream=new z(self.Deflate)),self.Inflate&&(s.DecompressionStream=new z(self.Inflate));const i={highWaterMark:1},o=e.readable||new y({async pull(e){const t=new u((e=>De.set(Be,e)));Ke({type:\"pull\",messageId:Be}),Be=(Be+1)%n.MAX_SAFE_INTEGER;const{value:r,done:s}=await t;e.enqueue(r),s&&e.close()}},i),c=e.writable||new m({async write(e){let t;const r=new u((e=>t=e));Ve.set(Be,t),Ke({type:Ae,value:e,messageId:Be}),Be=(Be+1)%n.MAX_SAFE_INTEGER,await r}},i),f=new Ie(t,s);Re=new AbortController;const{signal:a}=Re;await o.pipeThrough(f).pipeThrough(new Pe(s.chunkSize)).pipeTo(c,{signal:a,preventClose:!0,preventAbort:!0}),await c.getWriter().close();const{signature:l,inputSize:w,outputSize:h}=f;Ke({type:_e,result:{signature:l,inputSize:w,outputSize:h}})}catch(e){Ne(e)}}async function Ue(e){for(const t of e)await import(t)}function Ke(e){let{value:t}=e;if(t)if(t.length)try{t=new i(t),e.value=t.buffer,d(e,[e.value])}catch(t){d(e)}else d(e);else d(e)}function Ne(e=new s(\"Unknown error\")){const{message:t,stack:n,code:r,name:i}=e;d({error:{message:t,stack:n,code:r,name:i}})}addEventListener(\"message\",(({data:e})=>{const{type:t,messageId:n,value:r,done:s}=e;try{if(\"start\"==t&&Me(e),t==Ae){const e=De.get(n);De.delete(n),e({value:new i(r),done:s})}if(\"ack\"==t){const e=Ve.get(n);Ve.delete(n),e()}t==_e&&Re.abort()}catch(e){Ne(e)}}));const Oe=-2;function Te(t){return We(t.map((([t,n])=>new e(t).fill(n,0,t))))}function We(t){return t.reduce(((t,n)=>t.concat(e.isArray(n)?We(n):n)),[])}const je=[0,1,2,3].concat(...Te([[2,4],[2,5],[4,6],[4,7],[8,8],[8,9],[16,10],[16,11],[32,12],[32,13],[64,14],[64,15],[2,0],[1,16],[1,17],[2,18],[2,19],[4,20],[4,21],[8,22],[8,23],[16,24],[16,25],[32,26],[32,27],[64,28],[64,29]]));function He(){const e=this;function t(e,t){let n=0;do{n|=1&e,e>>>=1,n<<=1}while(--t>0);return n>>>1}e.ne=n=>{const s=e.re,i=e.ie.se,o=e.ie.oe;let c,f,a,l=-1;for(n.ce=0,n.fe=573,c=0;o>c;c++)0!==s[2*c]?(n.ae[++n.ce]=l=c,n.le[c]=0):s[2*c+1]=0;for(;2>n.ce;)a=n.ae[++n.ce]=2>l?++l:0,s[2*a]=1,n.le[a]=0,n.ue--,i&&(n.we-=i[2*a+1]);for(e.he=l,c=r.floor(n.ce/2);c>=1;c--)n.de(s,c);a=o;do{c=n.ae[1],n.ae[1]=n.ae[n.ce--],n.de(s,1),f=n.ae[1],n.ae[--n.fe]=c,n.ae[--n.fe]=f,s[2*a]=s[2*c]+s[2*f],n.le[a]=r.max(n.le[c],n.le[f])+1,s[2*c+1]=s[2*f+1]=a,n.ae[1]=a++,n.de(s,1)}while(n.ce>=2);n.ae[--n.fe]=n.ae[1],(t=>{const n=e.re,r=e.ie.se,s=e.ie.pe,i=e.ie.ye,o=e.ie.me;let c,f,a,l,u,w,h=0;for(l=0;15>=l;l++)t.be[l]=0;for(n[2*t.ae[t.fe]+1]=0,c=t.fe+1;573>c;c++)f=t.ae[c],l=n[2*n[2*f+1]+1]+1,l>o&&(l=o,h++),n[2*f+1]=l,f>e.he||(t.be[l]++,u=0,i>f||(u=s[f-i]),w=n[2*f],t.ue+=w*(l+u),r&&(t.we+=w*(r[2*f+1]+u)));if(0!==h){do{for(l=o-1;0===t.be[l];)l--;t.be[l]--,t.be[l+1]+=2,t.be[o]--,h-=2}while(h>0);for(l=o;0!==l;l--)for(f=t.be[l];0!==f;)a=t.ae[--c],a>e.he||(n[2*a+1]!=l&&(t.ue+=(l-n[2*a+1])*n[2*a],n[2*a+1]=l),f--)}})(n),((e,n,r)=>{const s=[];let i,o,c,f=0;for(i=1;15>=i;i++)s[i]=f=f+r[i-1]<<1;for(o=0;n>=o;o++)c=e[2*o+1],0!==c&&(e[2*o]=t(s[c]++,c))})(s,e.he,n.be)}}function Le(e,t,n,r,s){const i=this;i.se=e,i.pe=t,i.ye=n,i.oe=r,i.me=s}He.ge=[0,1,2,3,4,5,6,7].concat(...Te([[2,8],[2,9],[2,10],[2,11],[4,12],[4,13],[4,14],[4,15],[8,16],[8,17],[8,18],[8,19],[16,20],[16,21],[16,22],[16,23],[32,24],[32,25],[32,26],[31,27],[1,28]])),He.ke=[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0],He.ve=[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576],He.Se=e=>256>e?je[e]:je[256+(e>>>7)],He.ze=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],He.Ce=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],He.xe=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],He.Ae=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];const Fe=Te([[144,8],[112,9],[24,7],[8,8]]);Le._e=We([12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,19,275,147,403,83,339,211,467,51,307,179,435,115,371,243,499,11,267,139,395,75,331,203,459,43,299,171,427,107,363,235,491,27,283,155,411,91,347,219,475,59,315,187,443,123,379,251,507,7,263,135,391,71,327,199,455,39,295,167,423,103,359,231,487,23,279,151,407,87,343,215,471,55,311,183,439,119,375,247,503,15,271,143,399,79,335,207,463,47,303,175,431,111,367,239,495,31,287,159,415,95,351,223,479,63,319,191,447,127,383,255,511,0,64,32,96,16,80,48,112,8,72,40,104,24,88,56,120,4,68,36,100,20,84,52,116,3,131,67,195,35,163,99,227].map(((e,t)=>[e,Fe[t]])));const qe=Te([[30,5]]);function Ge(e,t,n,r,s){const i=this;i.Ie=e,i.Pe=t,i.De=n,i.Ve=r,i.Re=s}Le.Be=We([0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30,1,17,9,25,5,21,13,29,3,19,11,27,7,23].map(((e,t)=>[e,qe[t]]))),Le.Ee=new Le(Le._e,He.ze,257,286,15),Le.Me=new Le(Le.Be,He.Ce,0,30,15),Le.Ue=new Le(null,He.xe,0,19,7);const Je=[new Ge(0,0,0,0,0),new Ge(4,4,8,4,1),new Ge(4,5,16,8,1),new Ge(4,6,32,32,1),new Ge(4,4,16,16,2),new Ge(8,16,32,32,2),new Ge(8,16,128,128,2),new Ge(8,32,128,256,2),new Ge(32,128,258,1024,2),new Ge(32,258,258,4096,2)],Qe=[\"need dictionary\",\"stream end\",\"\",\"\",\"stream error\",\"data error\",\"\",\"buffer error\",\"\",\"\"],Xe=113,Ye=666,Ze=262;function $e(e,t,n,r){const s=e[2*t],i=e[2*n];return i>s||s==i&&r[t]<=r[n]}function et(){const e=this;let t,n,s,c,f,a,l,u,w,h,d,p,y,m,b,g,k,v,S,z,C,x,A,_,I,P,D,V,R,B,E,M,U;const K=new He,N=new He,O=new He;let T,W,j,H,L,F;function q(){let t;for(t=0;286>t;t++)E[2*t]=0;for(t=0;30>t;t++)M[2*t]=0;for(t=0;19>t;t++)U[2*t]=0;E[512]=1,e.ue=e.we=0,W=j=0}function G(e,t){let n,r=-1,s=e[1],i=0,o=7,c=4;0===s&&(o=138,c=3),e[2*(t+1)+1]=65535;for(let f=0;t>=f;f++)n=s,s=e[2*(f+1)+1],++i<o&&n==s||(c>i?U[2*n]+=i:0!==n?(n!=r&&U[2*n]++,U[32]++):i>10?U[36]++:U[34]++,i=0,r=n,0===s?(o=138,c=3):n==s?(o=6,c=3):(o=7,c=4))}function J(t){e.Ke[e.pending++]=t}function Q(e){J(255&e),J(e>>>8&255)}function X(e,t){let n;const r=t;F>16-r?(n=e,L|=n<<F&65535,Q(L),L=n>>>16-F,F+=r-16):(L|=e<<F&65535,F+=r)}function Y(e,t){const n=2*e;X(65535&t[n],65535&t[n+1])}function Z(e,t){let n,r,s=-1,i=e[1],o=0,c=7,f=4;for(0===i&&(c=138,f=3),n=0;t>=n;n++)if(r=i,i=e[2*(n+1)+1],++o>=c||r!=i){if(f>o)do{Y(r,U)}while(0!==--o);else 0!==r?(r!=s&&(Y(r,U),o--),Y(16,U),X(o-3,2)):o>10?(Y(18,U),X(o-11,7)):(Y(17,U),X(o-3,3));o=0,s=r,0===i?(c=138,f=3):r==i?(c=6,f=3):(c=7,f=4)}}function $(){16==F?(Q(L),L=0,F=0):8>F||(J(255&L),L>>>=8,F-=8)}function ee(t,n){let s,i,o;if(e.Ne[W]=t,e.Oe[W]=255&n,W++,0===t?E[2*n]++:(j++,t--,E[2*(He.ge[n]+256+1)]++,M[2*He.Se(t)]++),!(8191&W)&&D>2){for(s=8*W,i=C-k,o=0;30>o;o++)s+=M[2*o]*(5+He.Ce[o]);if(s>>>=3,j<r.floor(W/2)&&s<r.floor(i/2))return!0}return W==T-1}function te(t,n){let r,s,i,o,c=0;if(0!==W)do{r=e.Ne[c],s=e.Oe[c],c++,0===r?Y(s,t):(i=He.ge[s],Y(i+256+1,t),o=He.ze[i],0!==o&&(s-=He.ke[i],X(s,o)),r--,i=He.Se(r),Y(i,n),o=He.Ce[i],0!==o&&(r-=He.ve[i],X(r,o)))}while(W>c);Y(256,t),H=t[513]}function ne(){F>8?Q(L):F>0&&J(255&L),L=0,F=0}function re(t,n,r){X(0+(r?1:0),3),((t,n)=>{ne(),H=8,Q(n),Q(~n),e.Ke.set(u.subarray(t,t+n),e.pending),e.pending+=n})(t,n)}function se(n){((t,n,r)=>{let s,i,o=0;D>0?(K.ne(e),N.ne(e),o=(()=>{let t;for(G(E,K.he),G(M,N.he),O.ne(e),t=18;t>=3&&0===U[2*He.Ae[t]+1];t--);return e.ue+=14+3*(t+1),t})(),s=e.ue+3+7>>>3,i=e.we+3+7>>>3,i>s||(s=i)):s=i=n+5,n+4>s||-1==t?i==s?(X(2+(r?1:0),3),te(Le._e,Le.Be)):(X(4+(r?1:0),3),((e,t,n)=>{let r;for(X(e-257,5),X(t-1,5),X(n-4,4),r=0;n>r;r++)X(U[2*He.Ae[r]+1],3);Z(E,e-1),Z(M,t-1)})(K.he+1,N.he+1,o+1),te(E,M)):re(t,n,r),q(),r&&ne()})(0>k?-1:k,C-k,n),k=C,t.Te()}function ie(){let e,n,r,s;do{if(s=w-A-C,0===s&&0===C&&0===A)s=f;else if(-1==s)s--;else if(C>=f+f-Ze){u.set(u.subarray(f,f+f),0),x-=f,C-=f,k-=f,e=y,r=e;do{n=65535&d[--r],d[r]=f>n?0:n-f}while(0!==--e);e=f,r=e;do{n=65535&h[--r],h[r]=f>n?0:n-f}while(0!==--e);s+=f}if(0===t.We)return;e=t.je(u,C+A,s),A+=e,3>A||(p=255&u[C],p=(p<<g^255&u[C+1])&b)}while(Ze>A&&0!==t.We)}function oe(e){let t,n,r=I,s=C,i=_;const o=C>f-Ze?C-(f-Ze):0;let c=B;const a=l,w=C+258;let d=u[s+i-1],p=u[s+i];R>_||(r>>=2),c>A&&(c=A);do{if(t=e,u[t+i]==p&&u[t+i-1]==d&&u[t]==u[s]&&u[++t]==u[s+1]){s+=2,t++;do{}while(u[++s]==u[++t]&&u[++s]==u[++t]&&u[++s]==u[++t]&&u[++s]==u[++t]&&u[++s]==u[++t]&&u[++s]==u[++t]&&u[++s]==u[++t]&&u[++s]==u[++t]&&w>s);if(n=258-(w-s),s=w-258,n>i){if(x=e,i=n,n>=c)break;d=u[s+i-1],p=u[s+i]}}}while((e=65535&h[e&a])>o&&0!==--r);return i>A?A:i}e.le=[],e.be=[],e.ae=[],E=[],M=[],U=[],e.de=(t,n)=>{const r=e.ae,s=r[n];let i=n<<1;for(;i<=e.ce&&(i<e.ce&&$e(t,r[i+1],r[i],e.le)&&i++,!$e(t,s,r[i],e.le));)r[n]=r[i],n=i,i<<=1;r[n]=s},e.He=(t,S,x,W,j,G)=>(W||(W=8),j||(j=8),G||(G=0),t.Le=null,-1==S&&(S=6),1>j||j>9||8!=W||9>x||x>15||0>S||S>9||0>G||G>2?Oe:(t.Fe=e,a=x,f=1<<a,l=f-1,m=j+7,y=1<<m,b=y-1,g=r.floor((m+3-1)/3),u=new i(2*f),h=[],d=[],T=1<<j+6,e.Ke=new i(4*T),s=4*T,e.Ne=new o(T),e.Oe=new i(T),D=S,V=G,(t=>(t.qe=t.Ge=0,t.Le=null,e.pending=0,e.Je=0,n=Xe,c=0,K.re=E,K.ie=Le.Ee,N.re=M,N.ie=Le.Me,O.re=U,O.ie=Le.Ue,L=0,F=0,H=8,q(),(()=>{w=2*f,d[y-1]=0;for(let e=0;y-1>e;e++)d[e]=0;P=Je[D].Pe,R=Je[D].Ie,B=Je[D].De,I=Je[D].Ve,C=0,k=0,A=0,v=_=2,z=0,p=0})(),0))(t))),e.Qe=()=>42!=n&&n!=Xe&&n!=Ye?Oe:(e.Oe=null,e.Ne=null,e.Ke=null,d=null,h=null,u=null,e.Fe=null,n==Xe?-3:0),e.Xe=(e,t,n)=>{let r=0;return-1==t&&(t=6),0>t||t>9||0>n||n>2?Oe:(Je[D].Re!=Je[t].Re&&0!==e.qe&&(r=e.Ye(1)),D!=t&&(D=t,P=Je[D].Pe,R=Je[D].Ie,B=Je[D].De,I=Je[D].Ve),V=n,r)},e.Ze=(e,t,r)=>{let s,i=r,o=0;if(!t||42!=n)return Oe;if(3>i)return 0;for(i>f-Ze&&(i=f-Ze,o=r-i),u.set(t.subarray(o,o+i),0),C=i,k=i,p=255&u[0],p=(p<<g^255&u[1])&b,s=0;i-3>=s;s++)p=(p<<g^255&u[s+2])&b,h[s&l]=d[p],d[p]=s;return 0},e.Ye=(r,i)=>{let o,w,m,I,R;if(i>4||0>i)return Oe;if(!r.$e||!r.et&&0!==r.We||n==Ye&&4!=i)return r.Le=Qe[4],Oe;if(0===r.tt)return r.Le=Qe[7],-5;var B;if(t=r,I=c,c=i,42==n&&(w=8+(a-8<<4)<<8,m=(D-1&255)>>1,m>3&&(m=3),w|=m<<6,0!==C&&(w|=32),w+=31-w%31,n=Xe,J((B=w)>>8&255),J(255&B)),0!==e.pending){if(t.Te(),0===t.tt)return c=-1,0}else if(0===t.We&&I>=i&&4!=i)return t.Le=Qe[7],-5;if(n==Ye&&0!==t.We)return r.Le=Qe[7],-5;if(0!==t.We||0!==A||0!=i&&n!=Ye){switch(R=-1,Je[D].Re){case 0:R=(e=>{let n,r=65535;for(r>s-5&&(r=s-5);;){if(1>=A){if(ie(),0===A&&0==e)return 0;if(0===A)break}if(C+=A,A=0,n=k+r,(0===C||C>=n)&&(A=C-n,C=n,se(!1),0===t.tt))return 0;if(C-k>=f-Ze&&(se(!1),0===t.tt))return 0}return se(4==e),0===t.tt?4==e?2:0:4==e?3:1})(i);break;case 1:R=(e=>{let n,r=0;for(;;){if(Ze>A){if(ie(),Ze>A&&0==e)return 0;if(0===A)break}if(3>A||(p=(p<<g^255&u[C+2])&b,r=65535&d[p],h[C&l]=d[p],d[p]=C),0===r||(C-r&65535)>f-Ze||2!=V&&(v=oe(r)),3>v)n=ee(0,255&u[C]),A--,C++;else if(n=ee(C-x,v-3),A-=v,v>P||3>A)C+=v,v=0,p=255&u[C],p=(p<<g^255&u[C+1])&b;else{v--;do{C++,p=(p<<g^255&u[C+2])&b,r=65535&d[p],h[C&l]=d[p],d[p]=C}while(0!==--v);C++}if(n&&(se(!1),0===t.tt))return 0}return se(4==e),0===t.tt?4==e?2:0:4==e?3:1})(i);break;case 2:R=(e=>{let n,r,s=0;for(;;){if(Ze>A){if(ie(),Ze>A&&0==e)return 0;if(0===A)break}if(3>A||(p=(p<<g^255&u[C+2])&b,s=65535&d[p],h[C&l]=d[p],d[p]=C),_=v,S=x,v=2,0!==s&&P>_&&f-Ze>=(C-s&65535)&&(2!=V&&(v=oe(s)),5>=v&&(1==V||3==v&&C-x>4096)&&(v=2)),3>_||v>_)if(0!==z){if(n=ee(0,255&u[C-1]),n&&se(!1),C++,A--,0===t.tt)return 0}else z=1,C++,A--;else{r=C+A-3,n=ee(C-1-S,_-3),A-=_-1,_-=2;do{++C>r||(p=(p<<g^255&u[C+2])&b,s=65535&d[p],h[C&l]=d[p],d[p]=C)}while(0!==--_);if(z=0,v=2,C++,n&&(se(!1),0===t.tt))return 0}}return 0!==z&&(n=ee(0,255&u[C-1]),z=0),se(4==e),0===t.tt?4==e?2:0:4==e?3:1})(i)}if(2!=R&&3!=R||(n=Ye),0==R||2==R)return 0===t.tt&&(c=-1),0;if(1==R){if(1==i)X(2,3),Y(256,Le._e),$(),9>1+H+10-F&&(X(2,3),Y(256,Le._e),$()),H=7;else if(re(0,0,!1),3==i)for(o=0;y>o;o++)d[o]=0;if(t.Te(),0===t.tt)return c=-1,0}}return 4!=i?0:1}}function tt(){const e=this;e.nt=0,e.rt=0,e.We=0,e.qe=0,e.tt=0,e.Ge=0}function nt(e){const t=new tt,n=(o=e&&e.chunkSize?e.chunkSize:65536)+5*(r.floor(o/16383)+1);var o;const c=new i(n);let f=e?e.level:-1;void 0===f&&(f=-1),t.He(f),t.$e=c,this.append=(e,r)=>{let o,f,a=0,l=0,u=0;const w=[];if(e.length){t.nt=0,t.et=e,t.We=e.length;do{if(t.rt=0,t.tt=n,o=t.Ye(0),0!=o)throw new s(\"deflating: \"+t.Le);t.rt&&(t.rt==n?w.push(new i(c)):w.push(c.subarray(0,t.rt))),u+=t.rt,r&&t.nt>0&&t.nt!=a&&(r(t.nt),a=t.nt)}while(t.We>0||0===t.tt);return w.length>1?(f=new i(u),w.forEach((e=>{f.set(e,l),l+=e.length}))):f=w[0]?new i(w[0]):new i,f}},this.flush=()=>{let e,r,o=0,f=0;const a=[];do{if(t.rt=0,t.tt=n,e=t.Ye(4),1!=e&&0!=e)throw new s(\"deflating: \"+t.Le);n-t.tt>0&&a.push(c.slice(0,t.rt)),f+=t.rt}while(t.We>0||0===t.tt);return t.Qe(),r=new i(f),a.forEach((e=>{r.set(e,o),o+=e.length})),r}}tt.prototype={He(e,t){const n=this;return n.Fe=new et,t||(t=15),n.Fe.He(n,e,t)},Ye(e){const t=this;return t.Fe?t.Fe.Ye(t,e):Oe},Qe(){const e=this;if(!e.Fe)return Oe;const t=e.Fe.Qe();return e.Fe=null,t},Xe(e,t){const n=this;return n.Fe?n.Fe.Xe(n,e,t):Oe},Ze(e,t){const n=this;return n.Fe?n.Fe.Ze(n,e,t):Oe},je(e,t,n){const r=this;let s=r.We;return s>n&&(s=n),0===s?0:(r.We-=s,e.set(r.et.subarray(r.nt,r.nt+s),t),r.nt+=s,r.qe+=s,s)},Te(){const e=this;let t=e.Fe.pending;t>e.tt&&(t=e.tt),0!==t&&(e.$e.set(e.Fe.Ke.subarray(e.Fe.Je,e.Fe.Je+t),e.rt),e.rt+=t,e.Fe.Je+=t,e.Ge+=t,e.tt-=t,e.Fe.pending-=t,0===e.Fe.pending&&(e.Fe.Je=0))}};const rt=-2,st=-3,it=-5,ot=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],ct=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],ft=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],at=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],lt=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,112,112],ut=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],wt=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];function ht(){let e,t,n,r,s,i;function o(e,t,o,c,f,a,l,u,w,h,d){let p,y,m,b,g,k,v,S,z,C,x,A,_,I,P;C=0,g=o;do{n[e[t+C]]++,C++,g--}while(0!==g);if(n[0]==o)return l[0]=-1,u[0]=0,0;for(S=u[0],k=1;15>=k&&0===n[k];k++);for(v=k,k>S&&(S=k),g=15;0!==g&&0===n[g];g--);for(m=g,S>g&&(S=g),u[0]=S,I=1<<k;g>k;k++,I<<=1)if(0>(I-=n[k]))return st;if(0>(I-=n[g]))return st;for(n[g]+=I,i[1]=k=0,C=1,_=2;0!==--g;)i[_]=k+=n[C],_++,C++;g=0,C=0;do{0!==(k=e[t+C])&&(d[i[k]++]=g),C++}while(++g<o);for(o=i[m],i[0]=g=0,C=0,b=-1,A=-S,s[0]=0,x=0,P=0;m>=v;v++)for(p=n[v];0!==p--;){for(;v>A+S;){if(b++,A+=S,P=m-A,P=P>S?S:P,(y=1<<(k=v-A))>p+1&&(y-=p+1,_=v,P>k))for(;++k<P&&(y<<=1)>n[++_];)y-=n[_];if(P=1<<k,h[0]+P>1440)return st;s[b]=x=h[0],h[0]+=P,0!==b?(i[b]=g,r[0]=k,r[1]=S,k=g>>>A-S,r[2]=x-s[b-1]-k,w.set(r,3*(s[b-1]+k))):l[0]=x}for(r[1]=v-A,o>C?d[C]<c?(r[0]=256>d[C]?0:96,r[2]=d[C++]):(r[0]=a[d[C]-c]+16+64,r[2]=f[d[C++]-c]):r[0]=192,y=1<<v-A,k=g>>>A;P>k;k+=y)w.set(r,3*(x+k));for(k=1<<v-1;0!==(g&k);k>>>=1)g^=k;for(g^=k,z=(1<<A)-1;(g&z)!=i[b];)b--,A-=S,z=(1<<A)-1}return 0!==I&&1!=m?it:0}function c(o){let c;for(e||(e=[],t=[],n=new f(16),r=[],s=new f(15),i=new f(16)),t.length<o&&(t=[]),c=0;o>c;c++)t[c]=0;for(c=0;16>c;c++)n[c]=0;for(c=0;3>c;c++)r[c]=0;s.set(n.subarray(0,15),0),i.set(n.subarray(0,16),0)}this.st=(n,r,s,i,f)=>{let a;return c(19),e[0]=0,a=o(n,0,19,19,null,null,s,r,i,e,t),a==st?f.Le=\"oversubscribed dynamic bit lengths tree\":a!=it&&0!==r[0]||(f.Le=\"incomplete dynamic bit lengths tree\",a=st),a},this.it=(n,r,s,i,f,a,l,u,w)=>{let h;return c(288),e[0]=0,h=o(s,0,n,257,at,lt,a,i,u,e,t),0!=h||0===i[0]?(h==st?w.Le=\"oversubscribed literal/length tree\":-4!=h&&(w.Le=\"incomplete literal/length tree\",h=st),h):(c(288),h=o(s,n,r,0,ut,wt,l,f,u,e,t),0!=h||0===f[0]&&n>257?(h==st?w.Le=\"oversubscribed distance tree\":h==it?(w.Le=\"incomplete distance tree\",h=st):-4!=h&&(w.Le=\"empty distance tree with lengths\",h=st),h):0)}}function dt(){const e=this;let t,n,r,s,i=0,o=0,c=0,f=0,a=0,l=0,u=0,w=0,h=0,d=0;function p(e,t,n,r,s,i,o,c){let f,a,l,u,w,h,d,p,y,m,b,g,k,v,S,z;d=c.nt,p=c.We,w=o.ot,h=o.ct,y=o.write,m=y<o.read?o.read-y-1:o.end-y,b=ot[e],g=ot[t];do{for(;20>h;)p--,w|=(255&c.ft(d++))<<h,h+=8;if(f=w&b,a=n,l=r,z=3*(l+f),0!==(u=a[z]))for(;;){if(w>>=a[z+1],h-=a[z+1],16&u){for(u&=15,k=a[z+2]+(w&ot[u]),w>>=u,h-=u;15>h;)p--,w|=(255&c.ft(d++))<<h,h+=8;for(f=w&g,a=s,l=i,z=3*(l+f),u=a[z];;){if(w>>=a[z+1],h-=a[z+1],16&u){for(u&=15;u>h;)p--,w|=(255&c.ft(d++))<<h,h+=8;if(v=a[z+2]+(w&ot[u]),w>>=u,h-=u,m-=k,v>y){S=y-v;do{S+=o.end}while(0>S);if(u=o.end-S,k>u){if(k-=u,y-S>0&&u>y-S)do{o.lt[y++]=o.lt[S++]}while(0!==--u);else o.lt.set(o.lt.subarray(S,S+u),y),y+=u,S+=u,u=0;S=0}}else S=y-v,y-S>0&&2>y-S?(o.lt[y++]=o.lt[S++],o.lt[y++]=o.lt[S++],k-=2):(o.lt.set(o.lt.subarray(S,S+2),y),y+=2,S+=2,k-=2);if(y-S>0&&k>y-S)do{o.lt[y++]=o.lt[S++]}while(0!==--k);else o.lt.set(o.lt.subarray(S,S+k),y),y+=k,S+=k,k=0;break}if(64&u)return c.Le=\"invalid distance code\",k=c.We-p,k=k>h>>3?h>>3:k,p+=k,d-=k,h-=k<<3,o.ot=w,o.ct=h,c.We=p,c.qe+=d-c.nt,c.nt=d,o.write=y,st;f+=a[z+2],f+=w&ot[u],z=3*(l+f),u=a[z]}break}if(64&u)return 32&u?(k=c.We-p,k=k>h>>3?h>>3:k,p+=k,d-=k,h-=k<<3,o.ot=w,o.ct=h,c.We=p,c.qe+=d-c.nt,c.nt=d,o.write=y,1):(c.Le=\"invalid literal/length code\",k=c.We-p,k=k>h>>3?h>>3:k,p+=k,d-=k,h-=k<<3,o.ot=w,o.ct=h,c.We=p,c.qe+=d-c.nt,c.nt=d,o.write=y,st);if(f+=a[z+2],f+=w&ot[u],z=3*(l+f),0===(u=a[z])){w>>=a[z+1],h-=a[z+1],o.lt[y++]=a[z+2],m--;break}}else w>>=a[z+1],h-=a[z+1],o.lt[y++]=a[z+2],m--}while(m>=258&&p>=10);return k=c.We-p,k=k>h>>3?h>>3:k,p+=k,d-=k,h-=k<<3,o.ot=w,o.ct=h,c.We=p,c.qe+=d-c.nt,c.nt=d,o.write=y,0}e.init=(e,i,o,c,f,a)=>{t=0,u=e,w=i,r=o,h=c,s=f,d=a,n=null},e.ut=(e,y,m)=>{let b,g,k,v,S,z,C,x=0,A=0,_=0;for(_=y.nt,v=y.We,x=e.ot,A=e.ct,S=e.write,z=S<e.read?e.read-S-1:e.end-S;;)switch(t){case 0:if(z>=258&&v>=10&&(e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,m=p(u,w,r,h,s,d,e,y),_=y.nt,v=y.We,x=e.ot,A=e.ct,S=e.write,z=S<e.read?e.read-S-1:e.end-S,0!=m)){t=1==m?7:9;break}c=u,n=r,o=h,t=1;case 1:for(b=c;b>A;){if(0===v)return e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);m=0,v--,x|=(255&y.ft(_++))<<A,A+=8}if(g=3*(o+(x&ot[b])),x>>>=n[g+1],A-=n[g+1],k=n[g],0===k){f=n[g+2],t=6;break}if(16&k){a=15&k,i=n[g+2],t=2;break}if(!(64&k)){c=k,o=g/3+n[g+2];break}if(32&k){t=7;break}return t=9,y.Le=\"invalid literal/length code\",m=st,e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);case 2:for(b=a;b>A;){if(0===v)return e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);m=0,v--,x|=(255&y.ft(_++))<<A,A+=8}i+=x&ot[b],x>>=b,A-=b,c=w,n=s,o=d,t=3;case 3:for(b=c;b>A;){if(0===v)return e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);m=0,v--,x|=(255&y.ft(_++))<<A,A+=8}if(g=3*(o+(x&ot[b])),x>>=n[g+1],A-=n[g+1],k=n[g],16&k){a=15&k,l=n[g+2],t=4;break}if(!(64&k)){c=k,o=g/3+n[g+2];break}return t=9,y.Le=\"invalid distance code\",m=st,e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);case 4:for(b=a;b>A;){if(0===v)return e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);m=0,v--,x|=(255&y.ft(_++))<<A,A+=8}l+=x&ot[b],x>>=b,A-=b,t=5;case 5:for(C=S-l;0>C;)C+=e.end;for(;0!==i;){if(0===z&&(S==e.end&&0!==e.read&&(S=0,z=S<e.read?e.read-S-1:e.end-S),0===z&&(e.write=S,m=e.wt(y,m),S=e.write,z=S<e.read?e.read-S-1:e.end-S,S==e.end&&0!==e.read&&(S=0,z=S<e.read?e.read-S-1:e.end-S),0===z)))return e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);e.lt[S++]=e.lt[C++],z--,C==e.end&&(C=0),i--}t=0;break;case 6:if(0===z&&(S==e.end&&0!==e.read&&(S=0,z=S<e.read?e.read-S-1:e.end-S),0===z&&(e.write=S,m=e.wt(y,m),S=e.write,z=S<e.read?e.read-S-1:e.end-S,S==e.end&&0!==e.read&&(S=0,z=S<e.read?e.read-S-1:e.end-S),0===z)))return e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);m=0,e.lt[S++]=f,z--,t=0;break;case 7:if(A>7&&(A-=8,v++,_--),e.write=S,m=e.wt(y,m),S=e.write,z=S<e.read?e.read-S-1:e.end-S,e.read!=e.write)return e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);t=8;case 8:return m=1,e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);case 9:return m=st,e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);default:return m=rt,e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m)}},e.ht=()=>{}}ht.dt=(e,t,n,r)=>(e[0]=9,t[0]=5,n[0]=ct,r[0]=ft,0);const pt=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];function yt(e,t){const n=this;let r,s=0,o=0,c=0,a=0;const l=[0],u=[0],w=new dt;let h=0,d=new f(4320);const p=new ht;n.ct=0,n.ot=0,n.lt=new i(t),n.end=t,n.read=0,n.write=0,n.reset=(e,t)=>{t&&(t[0]=0),6==s&&w.ht(e),s=0,n.ct=0,n.ot=0,n.read=n.write=0},n.reset(e,null),n.wt=(e,t)=>{let r,s,i;return s=e.rt,i=n.read,r=(i>n.write?n.end:n.write)-i,r>e.tt&&(r=e.tt),0!==r&&t==it&&(t=0),e.tt-=r,e.Ge+=r,e.$e.set(n.lt.subarray(i,i+r),s),s+=r,i+=r,i==n.end&&(i=0,n.write==n.end&&(n.write=0),r=n.write-i,r>e.tt&&(r=e.tt),0!==r&&t==it&&(t=0),e.tt-=r,e.Ge+=r,e.$e.set(n.lt.subarray(i,i+r),s),s+=r,i+=r),e.rt=s,n.read=i,t},n.ut=(e,t)=>{let i,f,y,m,b,g,k,v;for(m=e.nt,b=e.We,f=n.ot,y=n.ct,g=n.write,k=g<n.read?n.read-g-1:n.end-g;;){let S,z,C,x,A,_,I,P;switch(s){case 0:for(;3>y;){if(0===b)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);t=0,b--,f|=(255&e.ft(m++))<<y,y+=8}switch(i=7&f,h=1&i,i>>>1){case 0:f>>>=3,y-=3,i=7&y,f>>>=i,y-=i,s=1;break;case 1:S=[],z=[],C=[[]],x=[[]],ht.dt(S,z,C,x),w.init(S[0],z[0],C[0],0,x[0],0),f>>>=3,y-=3,s=6;break;case 2:f>>>=3,y-=3,s=3;break;case 3:return f>>>=3,y-=3,s=9,e.Le=\"invalid block type\",t=st,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t)}break;case 1:for(;32>y;){if(0===b)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);t=0,b--,f|=(255&e.ft(m++))<<y,y+=8}if((~f>>>16&65535)!=(65535&f))return s=9,e.Le=\"invalid stored block lengths\",t=st,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);o=65535&f,f=y=0,s=0!==o?2:0!==h?7:0;break;case 2:if(0===b)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);if(0===k&&(g==n.end&&0!==n.read&&(g=0,k=g<n.read?n.read-g-1:n.end-g),0===k&&(n.write=g,t=n.wt(e,t),g=n.write,k=g<n.read?n.read-g-1:n.end-g,g==n.end&&0!==n.read&&(g=0,k=g<n.read?n.read-g-1:n.end-g),0===k)))return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);if(t=0,i=o,i>b&&(i=b),i>k&&(i=k),n.lt.set(e.je(m,i),g),m+=i,b-=i,g+=i,k-=i,0!==(o-=i))break;s=0!==h?7:0;break;case 3:for(;14>y;){if(0===b)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);t=0,b--,f|=(255&e.ft(m++))<<y,y+=8}if(c=i=16383&f,(31&i)>29||(i>>5&31)>29)return s=9,e.Le=\"too many length or distance symbols\",t=st,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);if(i=258+(31&i)+(i>>5&31),!r||r.length<i)r=[];else for(v=0;i>v;v++)r[v]=0;f>>>=14,y-=14,a=0,s=4;case 4:for(;4+(c>>>10)>a;){for(;3>y;){if(0===b)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);t=0,b--,f|=(255&e.ft(m++))<<y,y+=8}r[pt[a++]]=7&f,f>>>=3,y-=3}for(;19>a;)r[pt[a++]]=0;if(l[0]=7,i=p.st(r,l,u,d,e),0!=i)return(t=i)==st&&(r=null,s=9),n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);a=0,s=5;case 5:for(;i=c,258+(31&i)+(i>>5&31)>a;){let o,w;for(i=l[0];i>y;){if(0===b)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);t=0,b--,f|=(255&e.ft(m++))<<y,y+=8}if(i=d[3*(u[0]+(f&ot[i]))+1],w=d[3*(u[0]+(f&ot[i]))+2],16>w)f>>>=i,y-=i,r[a++]=w;else{for(v=18==w?7:w-14,o=18==w?11:3;i+v>y;){if(0===b)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);t=0,b--,f|=(255&e.ft(m++))<<y,y+=8}if(f>>>=i,y-=i,o+=f&ot[v],f>>>=v,y-=v,v=a,i=c,v+o>258+(31&i)+(i>>5&31)||16==w&&1>v)return r=null,s=9,e.Le=\"invalid bit length repeat\",t=st,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);w=16==w?r[v-1]:0;do{r[v++]=w}while(0!==--o);a=v}}if(u[0]=-1,A=[],_=[],I=[],P=[],A[0]=9,_[0]=6,i=c,i=p.it(257+(31&i),1+(i>>5&31),r,A,_,I,P,d,e),0!=i)return i==st&&(r=null,s=9),t=i,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);w.init(A[0],_[0],d,I[0],d,P[0]),s=6;case 6:if(n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,1!=(t=w.ut(n,e,t)))return n.wt(e,t);if(t=0,w.ht(e),m=e.nt,b=e.We,f=n.ot,y=n.ct,g=n.write,k=g<n.read?n.read-g-1:n.end-g,0===h){s=0;break}s=7;case 7:if(n.write=g,t=n.wt(e,t),g=n.write,k=g<n.read?n.read-g-1:n.end-g,n.read!=n.write)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);s=8;case 8:return t=1,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);case 9:return t=st,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);default:return t=rt,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t)}}},n.ht=e=>{n.reset(e,null),n.lt=null,d=null},n.yt=(e,t,r)=>{n.lt.set(e.subarray(t,t+r),0),n.read=n.write=r},n.bt=()=>1==s?1:0}const mt=13,bt=[0,0,255,255];function gt(){const e=this;function t(e){return e&&e.gt?(e.qe=e.Ge=0,e.Le=null,e.gt.mode=7,e.gt.kt.reset(e,null),0):rt}e.mode=0,e.method=0,e.vt=[0],e.St=0,e.marker=0,e.zt=0,e.Ct=t=>(e.kt&&e.kt.ht(t),e.kt=null,0),e.xt=(n,r)=>(n.Le=null,e.kt=null,8>r||r>15?(e.Ct(n),rt):(e.zt=r,n.gt.kt=new yt(n,1<<r),t(n),0)),e.At=(e,t)=>{let n,r;if(!e||!e.gt||!e.et)return rt;const s=e.gt;for(t=4==t?it:0,n=it;;)switch(s.mode){case 0:if(0===e.We)return n;if(n=t,e.We--,e.qe++,8!=(15&(s.method=e.ft(e.nt++)))){s.mode=mt,e.Le=\"unknown compression method\",s.marker=5;break}if(8+(s.method>>4)>s.zt){s.mode=mt,e.Le=\"invalid win size\",s.marker=5;break}s.mode=1;case 1:if(0===e.We)return n;if(n=t,e.We--,e.qe++,r=255&e.ft(e.nt++),((s.method<<8)+r)%31!=0){s.mode=mt,e.Le=\"incorrect header check\",s.marker=5;break}if(!(32&r)){s.mode=7;break}s.mode=2;case 2:if(0===e.We)return n;n=t,e.We--,e.qe++,s.St=(255&e.ft(e.nt++))<<24&4278190080,s.mode=3;case 3:if(0===e.We)return n;n=t,e.We--,e.qe++,s.St+=(255&e.ft(e.nt++))<<16&16711680,s.mode=4;case 4:if(0===e.We)return n;n=t,e.We--,e.qe++,s.St+=(255&e.ft(e.nt++))<<8&65280,s.mode=5;case 5:return 0===e.We?n:(n=t,e.We--,e.qe++,s.St+=255&e.ft(e.nt++),s.mode=6,2);case 6:return s.mode=mt,e.Le=\"need dictionary\",s.marker=0,rt;case 7:if(n=s.kt.ut(e,n),n==st){s.mode=mt,s.marker=0;break}if(0==n&&(n=t),1!=n)return n;n=t,s.kt.reset(e,s.vt),s.mode=12;case 12:return e.We=0,1;case mt:return st;default:return rt}},e._t=(e,t,n)=>{let r=0,s=n;if(!e||!e.gt||6!=e.gt.mode)return rt;const i=e.gt;return s<1<<i.zt||(s=(1<<i.zt)-1,r=n-s),i.kt.yt(t,r,s),i.mode=7,0},e.It=e=>{let n,r,s,i,o;if(!e||!e.gt)return rt;const c=e.gt;if(c.mode!=mt&&(c.mode=mt,c.marker=0),0===(n=e.We))return it;for(r=e.nt,s=c.marker;0!==n&&4>s;)e.ft(r)==bt[s]?s++:s=0!==e.ft(r)?0:4-s,r++,n--;return e.qe+=r-e.nt,e.nt=r,e.We=n,c.marker=s,4!=s?st:(i=e.qe,o=e.Ge,t(e),e.qe=i,e.Ge=o,c.mode=7,0)},e.Pt=e=>e&&e.gt&&e.gt.kt?e.gt.kt.bt():rt}function kt(){}function vt(e){const t=new kt,n=e&&e.chunkSize?r.floor(2*e.chunkSize):131072,o=new i(n);let c=!1;t.xt(),t.$e=o,this.append=(e,r)=>{const f=[];let a,l,u=0,w=0,h=0;if(0!==e.length){t.nt=0,t.et=e,t.We=e.length;do{if(t.rt=0,t.tt=n,0!==t.We||c||(t.nt=0,c=!0),a=t.At(0),c&&a===it){if(0!==t.We)throw new s(\"inflating: bad input\")}else if(0!==a&&1!==a)throw new s(\"inflating: \"+t.Le);if((c||1===a)&&t.We===e.length)throw new s(\"inflating: bad input\");t.rt&&(t.rt===n?f.push(new i(o)):f.push(o.subarray(0,t.rt))),h+=t.rt,r&&t.nt>0&&t.nt!=u&&(r(t.nt),u=t.nt)}while(t.We>0||0===t.tt);return f.length>1?(l=new i(h),f.forEach((e=>{l.set(e,w),w+=e.length}))):l=f[0]?new i(f[0]):new i,l}},this.flush=()=>{t.Ct()}}kt.prototype={xt(e){const t=this;return t.gt=new gt,e||(e=15),t.gt.xt(t,e)},At(e){const t=this;return t.gt?t.gt.At(t,e):rt},Ct(){const e=this;if(!e.gt)return rt;const t=e.gt.Ct(e);return e.gt=null,t},It(){const e=this;return e.gt?e.gt.It(e):rt},_t(e,t){const n=this;return n.gt?n.gt._t(n,e,t):rt},ft(e){return this.et[e]},je(e,t){return this.et.subarray(e,e+t)}},self.initCodec=()=>{self.Deflate=nt,self.Inflate=vt};\\n',r=()=>t.useDataURI?\"data:text/javascript,\"+encodeURIComponent(n):URL.createObjectURL(new Blob([n],{type:\"text/javascript\"}));e({workerScripts:{inflate:[r],deflate:[r]}})}(ue),ue({Deflate:function(e){const t=new v,n=(r=e&&e.chunkSize?e.chunkSize:65536)+5*(Math.floor(r/16383)+1);var r;const i=new Uint8Array(n);let s=e?e.level:-1;void 0===s&&(s=-1),t.deflateInit(s),t.next_out=i,this.append=function(e,r){let s,a,o=0,c=0,l=0;const d=[];if(e.length){t.next_in_index=0,t.next_in=e,t.avail_in=e.length;do{if(t.next_out_index=0,t.avail_out=n,s=t.deflate(0),0!=s)throw new Error(\"deflating: \"+t.msg);t.next_out_index&&(t.next_out_index==n?d.push(new Uint8Array(i)):d.push(i.subarray(0,t.next_out_index))),l+=t.next_out_index,r&&t.next_in_index>0&&t.next_in_index!=o&&(r(t.next_in_index),o=t.next_in_index)}while(t.avail_in>0||0===t.avail_out);return d.length>1?(a=new Uint8Array(l),d.forEach((function(e){a.set(e,c),c+=e.length}))):a=d[0]?new Uint8Array(d[0]):new Uint8Array,a}},this.flush=function(){let e,r,s=0,a=0;const o=[];do{if(t.next_out_index=0,t.avail_out=n,e=t.deflate(4),1!=e&&0!=e)throw new Error(\"deflating: \"+t.msg);n-t.avail_out>0&&o.push(i.slice(0,t.next_out_index)),a+=t.next_out_index}while(t.avail_in>0||0===t.avail_out);return t.deflateEnd(),r=new Uint8Array(a),o.forEach((function(e){r.set(e,s),s+=e.length})),r}},Inflate:function(e){const t=new I,n=e&&e.chunkSize?Math.floor(2*e.chunkSize):131072,r=new Uint8Array(n);let i=!1;t.inflateInit(),t.next_out=r,this.append=function(e,s){const a=[];let o,c,l=0,d=0,f=0;if(0!==e.length){t.next_in_index=0,t.next_in=e,t.avail_in=e.length;do{if(t.next_out_index=0,t.avail_out=n,0!==t.avail_in||i||(t.next_in_index=0,i=!0),o=t.inflate(0),i&&o===k){if(0!==t.avail_in)throw new Error(\"inflating: bad input\")}else if(0!==o&&1!==o)throw new Error(\"inflating: \"+t.msg);if((i||1===o)&&t.avail_in===e.length)throw new Error(\"inflating: bad input\");t.next_out_index&&(t.next_out_index===n?a.push(new Uint8Array(r)):a.push(r.subarray(0,t.next_out_index))),f+=t.next_out_index,s&&t.next_in_index>0&&t.next_in_index!=l&&(s(t.next_in_index),l=t.next_in_index)}while(t.avail_in>0||0===t.avail_out);return a.length>1?(c=new Uint8Array(f),a.forEach((function(e){c.set(e,d),d+=e.length}))):c=a[0]?new Uint8Array(a[0]):new Uint8Array,c}},this.flush=function(){t.inflateEnd()}}});export{dn as BlobReader,fn as BlobWriter,cn as Data64URIReader,ln as Data64URIWriter,wr as ERR_BAD_FORMAT,br as ERR_CENTRAL_DIRECTORY_NOT_FOUND,Nr as ERR_DUPLICATED_NAME,_r as ERR_ENCRYPTED,xr as ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND,gr as ERR_EOCDR_NOT_FOUND,yr as ERR_EXTRAFIELD_ZIP64_NOT_FOUND,Jt as ERR_HTTP_RANGE,Vr as ERR_INVALID_COMMENT,Xr as ERR_INVALID_ENCRYPTION_STRENGTH,Zr as ERR_INVALID_ENTRY_COMMENT,Kr as ERR_INVALID_ENTRY_NAME,Yr as ERR_INVALID_EXTRAFIELD_DATA,Jr as ERR_INVALID_EXTRAFIELD_TYPE,Ue as ERR_INVALID_PASSWORD,Ee as ERR_INVALID_SIGNATURE,Gr as ERR_INVALID_VERSION,Yt as ERR_ITERATOR_COMPLETED_TOO_SOON,vr as ERR_LOCAL_FILE_HEADER_NOT_FOUND,zr as ERR_SPLIT_ZIP_FILE,$r as ERR_UNDEFINED_UNCOMPRESSED_SIZE,Sr as ERR_UNSUPPORTED_COMPRESSION,kr as ERR_UNSUPPORTED_ENCRYPTION,Qr as ERR_UNSUPPORTED_FORMAT,Qt as ERR_WRITER_NOT_INITIALIZED,Dn as HttpRangeReader,Cn as HttpReader,an as Reader,Wn as SplitDataReader,Fn as SplitDataWriter,Rn as SplitZipReader,Ln as SplitZipWriter,un as TextReader,pn as TextWriter,Un as Uint8ArrayReader,En as Uint8ArrayWriter,on as Writer,Er as ZipReader,Wr as ZipReaderStream,ri as ZipWriter,ii as ZipWriterStream,ue as configure,bi as fs,we as getMimeType,Kt as initShimAsyncCodec,Zt as terminateWorkers};export default null;\n\n/* c8 ignore stop */\n"],"names":[],"mappings":"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CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,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C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,EAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAA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C,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAM,GAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,C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AC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CA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AC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAA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,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC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a,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAA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AC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,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AAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAM,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,MAAM,EAAE,EAAE,EAAE,OAAO,MAAM,CAAC,eAAe,EAAE,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC,6BAA6B,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,MAAM,EAAE,SAAS,eAAe,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,EAAC,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAE,CAAC,EAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,MAAM,EAAE,SAAS,eAAe,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,EAAC,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,KAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,MAAM,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,KAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,eAAe,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,oBAAoB,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,MAAM,EAAE,SAAS,eAAe,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,KAAK,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAC,CAAC,GAAE,CAAC,CAAC,MAAM,EAAE,SAAS,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAE,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,MAAM,EAAE,SAAS,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,GAAE,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAE,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAC,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,KAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,IAAE,CAAC,EAAE,CAAC,IAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,KAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,GAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAC,CAAC,eAAe,EAAE,EAAE,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,EAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,CAAC,EAAC,CAAC,GAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC,CAAM,MAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,0BAA0B,CAAC,EAAE,CAAC,oCAAoC,CAAC,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAE,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,eAAe,EAAE,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,EAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,CAAC,OAAO,EAAE,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAC,CAAC,MAAM,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAE,CAAC,OAAO,EAAE,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAC,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,EAAC,CAAC,MAAM,OAAO,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,UAAU,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,GAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,GAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,EAAE,KAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,EAAE,KAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,GAAE,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,GAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAM,CAAC,OAAO,EAAE,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAC,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,GAAE,CAAC,MAAM,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,EAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,GAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,cAAc,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,cAAc,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAM,MAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,qQAAqQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAM,CAAC,IAAI,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,uBAAuB,CAAC,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC,uBAAuB,CAAC,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,cAAc,CAAC,aAAa,CAAC,mBAAmB,CAAC,YAAY,CAAC,eAAe,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,0BAA0B,CAAC,eAAe,CAAC,gBAAgB,CAAC,6BAA6B,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,CAAM,MAAC,EAAE,CAAC,+BAA+B,CAAC,EAAE,CAAC,oCAAoC,CAAC,EAAE,CAAC,kDAAkD,CAAC,EAAE,CAAC,oCAAoC,CAAC,EAAE,CAAC,6BAA6B,CAAC,EAAE,CAAC,6BAA6B,CAAC,EAAE,CAAC,+BAA+B,CAAC,EAAE,CAAC,iCAAiC,CAAC,EAAE,CAAC,kCAAkC,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAC,CAAC,MAAM,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,C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,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,WAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,GAAE,CAAC,KAAK,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC,CAAC,EAAC,CAAC,KAAK,EAAE,CAAC,IAAI,UAAU,CAAC,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,EAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,+BAA+B,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAE,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,EAAE,CAAC,MAAM,EAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,EAAE,EAAC,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAE,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAE,GAAG,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAE,CAAC,MAAM,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,IAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,C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"} \ No newline at end of file diff --git a/esm/interpreter/_python.js b/esm/interpreter/_python.js index 4ad72772..a93a6c8f 100644 --- a/esm/interpreter/_python.js +++ b/esm/interpreter/_python.js @@ -1,5 +1,5 @@ -import * as FLATTED from 'coincident/flatted'; -const JSON = { parse: FLATTED.decode, stringify: FLATTED.encode }; +import * as DIRECT from 'reflected-ffi/direct'; +const JSON = { parse: DIRECT.decode, stringify: DIRECT.encode }; import { fetchFiles, fetchJSModules, fetchPaths } from './_utils.js'; import { IDBMapSync, dedent } from '../utils.js'; diff --git a/esm/interpreter/webr.js b/esm/interpreter/webr.js index 3afbd402..3d0a9e04 100644 --- a/esm/interpreter/webr.js +++ b/esm/interpreter/webr.js @@ -1,10 +1,10 @@ -import { create } from 'gc-hook'; import { dedent } from '../utils.js'; import { fetchFiles, fetchJSModules, fetchPaths } from './_utils.js'; import { io, stdio } from './_io.js'; const type = 'webr'; const r = new WeakMap(); +const fr = new FinalizationRegistry(fn => fn()); // REQUIRES INTEGRATION TEST /* c8 ignore start */ @@ -12,10 +12,8 @@ const run = async (interpreter, code) => { const { shelter, destroy, io } = r.get(interpreter); const { output, result } = await shelter.captureR(dedent(code)); for (const { type, data } of output) io[type](data); - // this is a double proxy but it's OK as the consumer - // of the result here needs to invoke explicitly a conversion - // or trust the `(await p.toJs()).values` returns what's expected. - return create(result, destroy, { token: false }); + fr.register(result, destroy); + return result; }; export default { diff --git a/esm/service-worker.js b/esm/service-worker.js index aee09814..5a32e0f1 100644 --- a/esm/service-worker.js +++ b/esm/service-worker.js @@ -1,36 +1,38 @@ -import sabayon from 'https://cdn.jsdelivr.net/npm/sabayon/dist/polyfill.js'; +// Let's avoid 404s *but* this should not be needed anymore* -// ignore browsers that already support SharedArrayBuffer -if (!globalThis.crossOriginIsolated) { - const { isArray } = Array; - const isOptions = args => args.length && typeof args[0] === 'object' && args[0] !== null; +// import sabayon from 'https://cdn.jsdelivr.net/npm/sabayon/dist/polyfill.js'; - // early patch Blob to inject sabayon polyfill for service-worker - globalThis.Blob = class extends Blob { - constructor(blobParts, ...args) { - if ( - isOptions(args) && - args[0].type === 'text/javascript' && - isArray(blobParts) && - typeof blobParts.at(0) === 'string' - ) { - blobParts[0] = blobParts[0].replace( - /^\/\*@\*\//, - 'import "https://cdn.jsdelivr.net/npm/sabayon/dist/polyfill.js";' - ); - } - super(blobParts, ...args); - } - }; +// // ignore browsers that already support SharedArrayBuffer +// if (!globalThis.crossOriginIsolated) { +// const { isArray } = Array; +// const isOptions = args => args.length && typeof args[0] === 'object' && args[0] !== null; - // early patch Worker to bootstrap sabayon for service-worker - globalThis.Worker = class extends Worker { - constructor(url, ...args) { - if (isOptions(args)) { - const sw = args[0].serviceWorker || args[0].service_worker; - if (sw) sabayon(sw); - } - super(url, ...args); - } - }; -} +// // early patch Blob to inject sabayon polyfill for service-worker +// globalThis.Blob = class extends Blob { +// constructor(blobParts, ...args) { +// if ( +// isOptions(args) && +// args[0].type === 'text/javascript' && +// isArray(blobParts) && +// typeof blobParts.at(0) === 'string' +// ) { +// blobParts[0] = blobParts[0].replace( +// /^\/\*@\*\//, +// 'import "https://cdn.jsdelivr.net/npm/sabayon/dist/polyfill.js";' +// ); +// } +// super(blobParts, ...args); +// } +// }; + +// // early patch Worker to bootstrap sabayon for service-worker +// globalThis.Worker = class extends Worker { +// constructor(url, ...args) { +// if (isOptions(args)) { +// const sw = args[0].serviceWorker || args[0].service_worker; +// if (sw) sabayon(sw); +// } +// super(url, ...args); +// } +// }; +// } diff --git a/esm/worker/_template.js b/esm/worker/_template.js index c0543109..b48d417d 100644 --- a/esm/worker/_template.js +++ b/esm/worker/_template.js @@ -7,7 +7,6 @@ import IDBMap from '@webreflection/idb-map'; import IDBMapSync from '@webreflection/idb-map/sync'; -import { decoder } from 'coincident/flatted/decoder'; import coincident from 'coincident/window/worker'; import { assign, create, createFunction, createOverload, createResolved, dispatch, registerJSModules } from '../utils.js'; @@ -35,22 +34,23 @@ const add = (type, fn) => { const { proxy: sync, + sync: polyfill, native, window, - isWindowProxy + isWindowProxy, + ffi, } = await coincident({ - decoder, transfer: false, transform: value => transform ? transform(value) : value }); const xworker = { // propagate the fact SharedArrayBuffer is polyfilled - polyfill: !native, + polyfill, // allows synchronous utilities between this worker and the main thread sync, // allow access to the main thread world whenever it's possible - window: native ? window : null, + window: (native || polyfill) ? window : null, // allow introspection for foreign (main thread) refrences isWindowProxy, // standard worker related events / features @@ -129,7 +129,7 @@ add('message', ({ data: { options, config: baseURL, configURL, code, hooks } }) // there's no way to query the DOM, use foreign CustomEvent and so on // in case there's no SharedArrayBuffer around. let CustomEvent, document, notify, currentScript = null, target = ''; - if (native) { + if (native || polyfill) { ({ CustomEvent, document } = window); currentScript = id && document.getElementById(id) || null; notify = kind => dispatch(currentScript, custom || type, kind, true, CustomEvent); @@ -147,6 +147,7 @@ add('message', ({ data: { options, config: baseURL, configURL, code, hooks } }) currentScript, config: resolved.config, js_modules: JSModules, + ffi, get target() { if (!target && currentScript) { if (tag === 'SCRIPT') { @@ -219,7 +220,7 @@ add('message', ({ data: { options, config: baseURL, configURL, code, hooks } }) add('error'); add('message'); add('messageerror'); - if (native) { + if (native || polyfill) { addEventListener('py:progress', ({ type, detail }) => { window.dispatchEvent(new window.CustomEvent(type, { detail })); }); diff --git a/esm/worker/class.js b/esm/worker/class.js index 83056456..2e072791 100644 --- a/esm/worker/class.js +++ b/esm/worker/class.js @@ -37,7 +37,10 @@ export default (...args) => const [ config ] = getConfigURLAndType(options.config, options.configURL); const serviceWorker = options?.serviceWorker || options?.service_worker; - const worker = xworker({ serviceWorker }); + const worker = xworker({ + serviceWorker, + reflected_ffi_timeout: globalThis.reflected_ffi_timeout ?? -1, + }); const { postMessage } = worker; const isHook = this instanceof Hook; @@ -62,6 +65,9 @@ export default (...args) => defineProperties(worker, { sync: { value: sync }, ready: { value: resolver.promise }, + ffi: { + direct: worker.direct, + }, postMessage: { value: (data, ...rest) => bootstrap.then( () => postMessage.call(worker, data, ...rest), diff --git a/esm/worker/hook.js b/esm/worker/hook.js index a302338d..8ff05114 100644 --- a/esm/worker/hook.js +++ b/esm/worker/hook.js @@ -1,4 +1,4 @@ -import toJSONCallback from 'to-json-callback'; +import toJSONCallback from 'reflected-ffi/to-json-callback'; import { dedent } from '../utils.js'; import { js as jsHooks, code as codeHooks } from '../hooks.js'; diff --git a/package-lock.json b/package-lock.json index b7f96263..e78738d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,37 +1,36 @@ { "name": "polyscript", - "version": "0.17.30", + "version": "0.17.32", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "polyscript", - "version": "0.17.30", + "version": "0.17.32", "license": "APACHE-2.0", "dependencies": { "@webreflection/fetch": "^0.1.5", "@webreflection/idb-map": "^0.3.2", - "@webreflection/utils": "^0.1.0", + "@webreflection/utils": "^0.1.1", "basic-devtools": "^0.1.6", "codedent": "^0.1.2", - "coincident": "^3.0.5", - "gc-hook": "^0.4.1", + "coincident": "^4.0.18", "html-escaper": "^3.0.3", - "proxy-target": "^3.0.2", + "reflected-ffi": "^0.5.6", "sticky-module": "^0.1.1", "to-json-callback": "^0.1.1" }, "devDependencies": { "@node-loader/import-maps": "^1.1.0", - "@playwright/test": "^1.53.0", + "@playwright/test": "^1.53.1", "@rollup/plugin-node-resolve": "^16.0.1", "@rollup/plugin-terser": "^0.4.4", "@zip.js/zip.js": "^2.7.62", "c8": "^10.1.3", "chokidar": "^4.0.3", - "eslint": "^9.28.0", + "eslint": "^9.30.0", "linkedom": "^0.18.11", - "rollup": "^4.43.0", + "rollup": "^4.44.1", "static-handler": "^0.5.3", "typescript": "^5.8.3" } @@ -89,9 +88,9 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.1.tgz", - "integrity": "sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==", + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -104,9 +103,9 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.3.tgz", - "integrity": "sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.0.tgz", + "integrity": "sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==", "dev": true, "license": "Apache-2.0", "engines": { @@ -151,9 +150,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.29.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.29.0.tgz", - "integrity": "sha512-3PIF4cBw/y+1u2EazflInpV+lYsSG0aByVIQzAgb1m1MhHFSbqTyNqtBKHgWf/9Ykud+DhILS9EGkmekVhbKoQ==", + "version": "9.30.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.30.0.tgz", + "integrity": "sha512-Wzw3wQwPvc9sHM+NjakWTcPx11mbZyiYHuwWa/QfZ7cIRX7WK54PSk7bdyXDaoaopUcMatv1zaQvOAAO8hCdww==", "dev": true, "license": "MIT", "engines": { @@ -1083,14 +1082,17 @@ } }, "node_modules/coincident": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/coincident/-/coincident-3.0.5.tgz", - "integrity": "sha512-caQv9P+P1keF6QGmVn82StddFu3hnpm/Tox1NxbFJe26m4ad0bSKmnAcQNoVnZNVtnLF5xUv2h1jgsXqoetaiA==", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/coincident/-/coincident-4.0.18.tgz", + "integrity": "sha512-gmelUd8ykdhWx4aOgevEDLJotoWN7SqANZaIhXIYEsvhQ1llwvDDXO5P7ommZ7k7AI5m1pIJ8DmHK1yphnkrjw==", "license": "MIT", "dependencies": { - "gc-hook": "^0.4.1", - "js-proxy": "^0.5.2", - "next-resolver": "^0.1.2" + "@webreflection/utils": "^0.1.1", + "next-resolver": "^0.1.4", + "reflected-ffi": "^0.5.6" + }, + "bin": { + "coincident": "cli.cjs" } }, "node_modules/color-convert": { @@ -1150,26 +1152,26 @@ } }, "node_modules/css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.1.tgz", + "integrity": "sha512-O5tBe98mNUxm2ovZAqJ6uZqo1qVWrKAMQMf9uTK+M321MKKYX+cOORH3xvu17tYRuRM3mjJclcp/y4PNoI3U/A==", "dev": true, "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "nth-check": "^2.1.1" }, "funding": { "url": "https://github.com/sponsors/fb55" } }, "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.1.tgz", + "integrity": "sha512-efV3anJ1n8GGohPAXF3IVg0wu0AUyBN9px4Giwy7DeQVzzMmNTdo9TtOCJlyoprjNb6Szb/M1kxP86DNFimPIQ==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -1331,19 +1333,19 @@ } }, "node_modules/eslint": { - "version": "9.29.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.29.0.tgz", - "integrity": "sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ==", + "version": "9.30.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.30.0.tgz", + "integrity": "sha512-iN/SiPxmQu6EVkf+m1qpBxzUhE12YqFLOSySuOyVLJLEF9nzTf+h/1AJYc1JWzCnktggeNrjvQGLngDzXirU6g==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.20.1", - "@eslint/config-helpers": "^0.2.1", + "@eslint/config-array": "^0.21.0", + "@eslint/config-helpers": "^0.3.0", "@eslint/core": "^0.14.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.29.0", + "@eslint/js": "9.30.0", "@eslint/plugin-kit": "^0.3.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -1606,12 +1608,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gc-hook": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/gc-hook/-/gc-hook-0.4.1.tgz", - "integrity": "sha512-uiF+uUftDVLr+VRdudsdsT3/LQYnv2ntwhRH964O7xXDI57Smrek5olv75Wb8Nnz6U+7iVTRXsBlxKcsaDTJTQ==", - "license": "ISC" - }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -1919,16 +1915,6 @@ "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/js-proxy": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/js-proxy/-/js-proxy-0.5.2.tgz", - "integrity": "sha512-gywYozJo2nfzlnYtBZXZCzbcMX8TfEJJtuUcj/uIE6xwqx9UoiOUeZcBb1Gy1IFxs3Tf+1kos8Aiv45P9HAkyQ==", - "license": "MIT", - "dependencies": { - "gc-hook": "^0.4.1", - "proxy-target": "^3.0.2" - } - }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -2085,12 +2071,12 @@ "license": "MIT" }, "node_modules/next-resolver": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/next-resolver/-/next-resolver-0.1.3.tgz", - "integrity": "sha512-z5KPZ7LERFcc3GZuMlDzTmjfFLM5SeMZFY4kUEuI1oJp9uB+9RtIA6fI8REXcqJ6mid97zR+fMX0jf4YdFihKA==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/next-resolver/-/next-resolver-0.1.4.tgz", + "integrity": "sha512-SXgeXScGO2apBZjvn3F3/TXHNqAoL09efcEX/40LhTOaZ7HlVzU2Vu8lmksLwtHHM12oLhePstLw56gjRzIHrQ==", "license": "MIT", "dependencies": { - "@webreflection/utils": "^0.1.0" + "@webreflection/utils": "^0.1.1" } }, "node_modules/nth-check": { @@ -2281,12 +2267,6 @@ "node": ">= 0.8.0" } }, - "node_modules/proxy-target": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/proxy-target/-/proxy-target-3.0.2.tgz", - "integrity": "sha512-FFE1XNwXX/FNC3/P8HiKaJSy/Qk68RitG/QEcLy/bVnTAPlgTAWPZKh0pARLAnpfXQPKyalBhk009NRTgsk8vQ==", - "license": "MIT" - }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -2321,6 +2301,12 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/reflected-ffi": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/reflected-ffi/-/reflected-ffi-0.5.6.tgz", + "integrity": "sha512-ReurFLaEeMYvD6PkWxH5gAx90UdCVI1H36kE0agFWCouGZ+ezSfDxbsLGnFs+zPJvaVjlzMCwMHyNhBBQfQTGg==", + "license": "MIT" + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", diff --git a/package.json b/package.json index ce76800c..9ace6bb2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "polyscript", - "version": "0.17.30", + "version": "0.17.32", "description": "PyScript single core to rule them all", "main": "./esm/index.js", "types": "./types/polyscript/esm/index.d.ts", @@ -47,15 +47,15 @@ "license": "APACHE-2.0", "devDependencies": { "@node-loader/import-maps": "^1.1.0", - "@playwright/test": "^1.53.0", + "@playwright/test": "^1.53.1", "@rollup/plugin-node-resolve": "^16.0.1", "@rollup/plugin-terser": "^0.4.4", "@zip.js/zip.js": "^2.7.62", "c8": "^10.1.3", "chokidar": "^4.0.3", - "eslint": "^9.28.0", + "eslint": "^9.30.0", "linkedom": "^0.18.11", - "rollup": "^4.43.0", + "rollup": "^4.44.1", "static-handler": "^0.5.3", "typescript": "^5.8.3" }, @@ -85,17 +85,16 @@ "dependencies": { "@webreflection/fetch": "^0.1.5", "@webreflection/idb-map": "^0.3.2", - "@webreflection/utils": "^0.1.0", + "@webreflection/utils": "^0.1.1", "basic-devtools": "^0.1.6", "codedent": "^0.1.2", - "coincident": "^3.0.5", - "gc-hook": "^0.4.1", + "coincident": "^4.0.18", "html-escaper": "^3.0.3", - "proxy-target": "^3.0.2", + "reflected-ffi": "^0.5.6", "sticky-module": "^0.1.1", "to-json-callback": "^0.1.1" }, "worker": { - "blob": "sha256-7Vekg72V1f88zbmKk3QIOtZBpAaNhuN6u0Y3dowIGYw=" + "blob": "sha256-0iNYLCULhuZ1/9hfRtU2P1sy8ROVPHtopwnp0+qn/a4=" } } diff --git a/rollup/build_xworker.cjs b/rollup/build_xworker.cjs index 8c5065d2..c74aa230 100644 --- a/rollup/build_xworker.cjs +++ b/rollup/build_xworker.cjs @@ -13,9 +13,8 @@ const WORKERS_DIR = resolve(join(__dirname, "..", "esm", "worker")); const PACKAGE_JSON = resolve(join(__dirname, "..", "package.json")); const coincident = [ - "import { encoder } from 'coincident/flatted/encoder';", "import coincident from 'coincident/window/main';", - 'const { Worker } = coincident({ encoder, transfer: false });', + 'const { Worker } = coincident({ transfer: false });', ]; for (const file of readdirSync(DIST_DIR)) {